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

我刚刚学习perl语言,之前是生物背景对编程不是很熟悉。现在要处理一上万条肽段的fasta格式的文件,需要统计每个肽段的长度。我希望写成一个脚本程序,但是读入不是很会写,... 我刚刚学习perl语言,之前是生物背景对编程不是很熟悉。现在要处理一上万条肽段的fasta格式的文件,需要统计每个肽段的长度。我希望写成一个脚本程序,但是读入不是很会写,希望高手指点一二,小妹不胜感激 展开
 我来答
21002015110
2010-09-11 · TA获得超过3834个赞
知道大有可为答主
回答量:4720
采纳率:75%
帮助的人:1256万
展开全部
不需要你自己重新来写,单枪匹马,刀耕火种,不是一个好的办法。
正好我也在做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数据库。呵呵 建议深入学习下。
zhlong8
2010-09-10 · 超过14用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:0
展开全部
本来perl就小众,还要有生物背景就更难了,不知道你的数据格式是什么样的,怎么指点。还有肽段是怎么确认的,有什么特征,你的问题太专业了最好还是去专业的生物论坛问吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhengliucheng
2010-09-11 · TA获得超过446个赞
知道小有建树答主
回答量:356
采纳率:0%
帮助的人:269万
展开全部
很容易了。

请到yunbio.com提问就行咯。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式