我有不同長度的每個文件中具有1000個seq的多個fasta文件。我想只保留每個序列的前200(n)個鹼基。我如何在Perl中做到這一點?fasta:在n長度後刪除序列
1
A
回答
0
很難準確地理解你的意思,沒有看到一個例子,但如果你只需要每行的前200個字符只使用cut
:
cut -c1-200 file
1
如果序列太長,只保留最有趣的部分:
$/ = '>';
<>;
while (my $seq = <>) {
$seq =~ s/>$//;
$seq =~ s/^(.*)//;
my $id = $1;
$seq =~ s/\n//g;
$seq = substr $seq, 0, 200;
print ">$id\n$seq\n";
}
2
如果序列打印在幾個物理線路,只能通過第200個字符打印了。以楔形開始的行是標題行,表示新序列的開始。
awk '/^>/{ seqlen=0; print; next; }
seqlen < 200 { if (seqlen + length($0) > 200)
$0 = substr($0, 1, 200-seqlen);
seqlen += length($0); print }' file.fasta >newfile.fasta
呵呵,在Perl中?
perl -nle 'if (/^>/) { $seqlen = 0; print; next }
next if ($seqlen >= 200);
$_ = substr($_, 0, 200-$seqlen) if ($seqlen + length($_) > 200);
$seqlen += length($_);
print;' file.fasta >newfile.fasta
+0
感謝Tripleee爲您的答案。我試過你的Perl腳本,它的工作。 – Ronn 2013-05-02 11:14:34
1
我建議你考慮使用的BioPerl此排序的事情,因爲它很容易完成這些任務,你不必擔心格式化等事情。在下面的代碼中,腳本的第一個參數是你的fasta,第二個參數是一個僅保存每個序列的前200個基地的文件。
#!/usr/bin/env perl
use strict;
use warnings;
use Bio::Seq;
use Bio::SeqIO;
my $usage = "$0 infile outfile\n";
my $infile = shift or die $usage;
my $outfile = shift or die $usage;
my $seqin = Bio::SeqIO->new(-file => $infile, -format => 'fasta');
my $seqout = Bio::SeqIO->new(-file => ">$outfile", -format => 'fasta');
while (my $seq = $seqin->next_seq) {
my $first200 = $seq->subseq(1,200); # 1-based
my $subseq = Bio::Seq->new(-seq => $first200, -id => $seq->id);
$seqout->write_seq($subseq);
}
0
下面是我如何解決這個問題,如果有興趣的人嘗試了另一種方式來做到這一點 我用包含在biolinux稱爲Fasta_formatter把實際的序列中的一個線(-w 0)的工具,然後修剪爲@sudo_O說,然後最後回到80個字母的寬度。
fasta_formatter -w 0 < FILE | cut -c1-LENGTH | fasta_formatter -w 80 > TRIMMED_FILE
相關問題
- 1. 從fasta文件中的fasta序列末端刪除空間(*)
- 2. 聯合長度Y的n個列表爲長度爲n
- 3. Python:從fasta格式的序列起始處刪除字符
- 4. 從基於ID的fasta文件中刪除重複的序列
- 5. 在添加前面序列的長度後計算序列的長度
- 6. 檢查序列長度> = N的重複子序列
- 7. Python:如何從FASTA文件中的滑動窗口打印出長度爲n的序列?
- 8. 刪除每n個文件,然後重命名序列
- 9. 刪除所有行字符串的長度爲n多
- 10. 「\ n」和'\ n'的長度爲
- 11. 如何在JSON.stringfy後刪除\ n?
- 12. 在n天后刪除MongoDB文檔
- 13. 在Python中計算長度爲M的第N個序列
- 14. jQuery插件支持拖放n排序列表刪除和限制列表長度?
- 15. 從程序中刪除 '\ N'
- 16. 刪除 '\ n \ n。' C++
- 17. 在Collatz序列長度
- 18. 熊貓將df n x m除以系列長度g索引
- 19. nginx在proxy_pass後刪除內容長度http頭
- 20. 無法從Emsembl FASTA刪除換行符
- 21. Bash:從fasta文件中刪除行
- 22. 從列表中列表中刪除列表中,如果長度
- 23. Elm:匹配長度列表!= n
- 24. 刪除\ n
- 25. 刪除\ N「lines.replace」
- 26. MySql在列後刪除;
- 27. 在Python中,如何從列表(列刪除)刪除第N個列表項?
- 28. 使用tr/sed等在linux上刪除字符序列\ r \ n
- 29. 如何在android中序列化base64字符串時刪除\ n?
- 30. 刪除\ r \ n \ r \ n
只爲我打印標題行。我在http://pastebin.com/51nVG5nD創建了一個示例輸入文件 – tripleee 2013-05-02 11:06:34
我無法運行這個腳本,而是使用了下面的腳本,它運行流暢:cut -c -200文件。感謝您的幫助 – Ronn 2013-05-02 11:15:12
@Ronn您是否在說我的原創答案'cut -c1-200'解決了您的問題? – 2013-05-02 11:56:57