clustal-omegaを用いてアライメントを実行

提供: MeryWiki
2021年9月26日 (日) 15:53時点における59.166.252.132 (トーク)による版
ナビゲーションに移動 検索に移動

開いているファイル内の配列データを、clustal-omegaを使ってアライメントにかけます。
clustal-omegaのサイトには、 "The last alignment program you'll ever need" とのことなので、いまなりにはclustal-omegaがいいようです。
さくっと、アライメントを確認したいときに使ってください。
ファイル名を引数にしてアプリ起動の応用例です。

要cllustal-omega
http://www.clustal.org/omega/

使用前に"CLUSTALO_DIR"を必ず設定して下さい。
ダウンロードしたclustal-omegaを解凍して出てきたフォルダの中に"tmp"という名前のフォルダを作ってください。

#title="clustal-omegaを用いてアライメントを実行"
#tooltip="clustal-omegaを用いてアライメントを実行します。*.alnファイルを作成しそれを開きます"
// -----------------------------------------------------------------------------
// clustal-omegaを用いてアライメントを実行
//
// suke
// 
// 要clustal-omega
// http://www.clustal.org/omega/
// info : https://www.ebi.ac.uk/Tools/msa/clustalo/
// -----------------------------------------------------------------------------
(function(){
const fso = new ActiveXObject('Scripting.FileSystemObject');
const sh = new ActiveXObject('WScript.Shell');

const MERY_DIR = fso.GetParentFolderName(window.Editor.FullName);
// clustal-omegaを導入したフォルダへ移動する
const CLUSTALO_DIR = fso.BuildPath('ここにClustal-omegaのフォルダのパスを指定してください');
// カレントディレクトリを移動する
sh.CurrentDirectory = CLUSTALO_DIR;
// 実行ファイル
const CLUSTALO = 'clustalo.exe';
// ファイルが保存されていない場合の保存先
const TMP_DIR = fso.BuildPath(CLUSTALO_DIR,'tmp');
//clustaloのパスが正しいか確かめる
if ( !(fso.FileExists(CLUSTALO)) ){
  alert('clustalo.exeへのパスが間違ってます。');
  return ;	
}
if ( !(sh.Exec(CLUSTALO + ' -h').StdOut.ReadAll().split('\n')[0].match(/^Clustal Omega.*/))){
  alert('clustalo.exeではなさそうです。');
  return ;	
}
//TMP_DIRにフォルダがあるか確かめ、なければ作る
if (!(fso.FolderExists(TMP_DIR))){
	alert(TMP_DIR + '\nが無いようなので作っときますね');
	fso.CreateFolder(TMP_DIR);
}
// 実行確認
const isExec = Confirm('ファイルを保存してアライメントを実行しますか?');
if(!isExec){return};

// 現在のファイル名を取得
// 取得できなければ、勝手に作って、書き込む
const inputFile = document.FullName || 
		fso.BuildPath(TMP_DIR, (new Date().getTime() + '.txt'));
document.Save(inputFile);
const alignmentFile = fso.BuildPath(
		fso.GetParentFolderName(inputFile), fso.GetBaseName(inputFile) + '.aln');

// コマンドラインで渡す文字列を指定
// see clustalo.exe -h
let cmdline = CLUSTALO;
cmdline = cmdline + ' -i "' + inputFile + '"';		// Multiple sequence input file
cmdline = cmdline + ' -o "' + alignmentFile +'"';	// Multiple sequence alignment output file
cmdline = cmdline + ' --outfmt=clustal';			// MSA output file format(clustal)
cmdline = cmdline + ' --force';						// Force file overwriting
cmdline = cmdline + ' -v';							// Verbose output
// 実行
const execResult = sh.Exec(cmdline);
while (execResult.Status !== 0){sh.Sleep(100)}
// 出力メッセージを表示
const err_msg = execResult.StdErr.ReadAll();
const std_msg = execResult.StdOut.ReadAll();
if (err_msg !== ''){
	alert('エラーが発生しました\n' + err_msg);
	return;
}
if (std_msg !== ''){
	alert('【実行結果】\n' + std_msg);
}

// アライメントの結果ファイルを開く
editor.OpenFile(alignmentFile, meEncodingNone, meOpenAllowNewWindow);

})();
スポンサーリンク