我安装并配置了emboss,可以运行简单的命令行参数,以获得一个先前对齐的multifasta文件的一致性:
%缺点
从多重比对中创建共识序列
输入(对齐)序列集: dna.msf
输出序列[dna.fasta]: aligned.cons
这非常适合一次处理一个文件,但我有数百个要处理。 我已经开始用foreach循环编写一个perl脚本来尝试为每个文件处理它,但我想我需要在脚本之外运行这些命令。有关如何运行命令行友好程序以获取来自先前对齐的multifasta文件的fasta格式的单一共识序列的任何线索,对于许多文件连续?我不必使用浮雕 - 我可以使用其他程序。 到目前为止,这是我的代码:
func rotN(unicodeScalar: UnicodeScalar, intervals:[ClosedInterval<UnicodeScalar>]) -> UnicodeScalar {
var result = unicodeScalar.value
for interval in intervals {
let start = interval.start.value
let length = interval.end.value - start + 1
if interval ~= unicodeScalar {
result = (result + length/2 - start) % length + start
}
}
return UnicodeScalar(result)
}
func rotN(input: String, intervals:[ClosedInterval<UnicodeScalar>]) -> String {
return String(input.unicodeScalars.map {Character(rotN($0, intervals:intervals))})
}
答案 0 :(得分:1)
EMBOSS cons有两个强制性限定符:
- 序列(提供输入序列)
- outseq (输出)。
因此您需要在字段中提供上述内容。
现在改变你的代码以运行多个程序:
my $count=1;
foreach my $file (@ArrayofFiles){
$output_path= "/Users/roblogan/Documents/Clustered_Barcodes_Aligned/";
my $output_file = $output_path. "out$count";# please change here to get your desired output filename
my $command = "cons -sequence '$file' -outseq '$output_file' ";
system($command);
$count ++;
}
希望上面的代码适合你。