新手求助:用perl处理fasta文件

我刚刚学习perl语言,之前是生物背景对编程不是很熟悉。现在要处理一上万条肽段的fasta格式的文件,需要统计每个肽段的长度。我希望写成一个脚本程序,但是读入不是很会写,希望高手指点一二,小妹不胜感激

不需要你自己重新来写,单枪匹马,刀耕火种,不是一个好的办法。
正好我也在做bioinformatics这块儿,学了点bioperl,我帮你写了个小脚本,用这个工具能很快捷的搞定你的序列!!
我大致给你说下,具体自己上bioperl网站看How To。
现在假定你的序列都为fasta格式,先用
cat *.fasta > single_all_fasta.fasta
将所有fasta序列整合到一个fasta格式中。
然后编写bioperl脚本(你要事先安装bioperl,在debian和ubuntu下很简单,自带源里就有,直接sudo apt-get install bioperl即可,很方便),你参考下:
脚本使用方法为:
perl get_fasta_length.pl single_all_fasta.fasta length.result
脚本我没有测试,一些小错误你可以修改下:

#!/usr/bin/perl -w
use strict;
use Bio::SeqIO;
my $in = shift; #读取文件名称
my $out = shift; #读取输出文件名称
my $flag = 0; #计数
open WH,">> $out";
$seqio_obj= Bio::SeqIO->new (-file =>'$in',
-f =>'fasta');
while($seq_obj = $seqio_obj->next_seq() ) {
print WH "$seq_obj->desc \t $seq_obj->length\n" ;
print "正在处理第$flag条序列...\n";
$flag++;
}
print "完毕,共处理$flag条序列!结果保存至$out文件\n";
close WH;

建议:
学好bioinfo,不会perl不行,不会bioperl更不行,它不仅可以轻松批量处理序列格式,解析blast结果,甚至在脚本里做blast,而且还可以操作biosql数据库。呵呵 建议深入学习下。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-09-10
本来perl就小众,还要有生物背景就更难了,不知道你的数据格式是什么样的,怎么指点。还有肽段是怎么确认的,有什么特征,你的问题太专业了最好还是去专业的生物论坛问吧。
第2个回答  2010-09-11
很容易了。

请到yunbio.com提问就行咯。