【问题标题】:Export sequences to fasta wide format将序列导出为 fasta 宽格式
【发布时间】:2013-02-21 22:58:19
【问题描述】:

我正在尝试使用 Bio::SeqIO 将对齐的序列一一导出到 fasta 文件。 结果是序列每 60 列被一个新行打破。 如何避免这种情况?
我希望以“宽”格式导出序列,即序列中没有换行符。

我的代码大致是:

use Bio::SeqIO;
my $seqin = Bio::SeqIO->new(-file => "<$fastaFile", '-format' => 'Fasta');
my $outname = fileparse($fastaFile, qr/\.[^\.]*$/) . "_sub.fasta";
my $seqout = Bio::SeqIO->new(-file => ">$outname", '-format' => 'Fasta');

while(my $seq = $seqin->next_seq){
      # do something with $seq
      $seqout->write_seq($seq);
}

【问题讨论】:

  • 愚蠢的想法并没有真正回答这个问题。但是,如果这只是你计划做一次或几次的事情,你可能会拼凑一个单行来删除换行符。例如,从不以“>”开头的行中删除所有换行符。然后,您可以将“>”替换为“\n>”,以在每个标题之前获取换行符。
  • 是的,这就是我最终所做的。只是觉得可能有更优雅的方式。

标签: perl bioinformatics bioperl


【解决方案1】:

Bio::SeqIO::fasta 提供了一个width method 来指定应如何格式化写入的 FASTA 记录:

while (my $seq = $seqin->next_seq) {
    $seqout->width($seq->length);
    $seqout->write_seq($seq);
}

当然,如果你的序列有最大尺寸,你可以只放一个

$seqout->width(5000);

或者在循环之前。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2018-04-18
    • 2012-08-31
    • 2019-05-31
    • 2020-09-15
    • 2014-05-07
    • 2013-03-18
    相关资源
    最近更新 更多