Emboss Cons用于获取许多文件的共识序列,而不仅仅是一个

时间:2016-06-11 01:16:10

标签: perl bioinformatics fasta consensus emboss

我安装并配置了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))})
}

1 个答案:

答案 0 :(得分:1)

EMBOSS cons有两个强制性限定符:

  1. - 序列(提供输入序列)

  2. - outseq (输出)。

  3. 因此您需要在字段中提供上述内容。

    现在改变你的代码以运行多个程序:

    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 ++;
    } 
    

    希望上面的代码适合你。