Perl处理Fasta序列的又一实例
今天再来分享一小段Perl脚本,其实是比较简单的。主要是用来处理Fasta格式的序列。
网友niche Says:
你好,你有没有分割fasta文件的perl脚本,我需要把一个fasta文件按两条序列一组分成若干个fasta文件,谢谢!
如果不懂fasta文件,可以再看一下解释:
或是查看: Fasta格式的详细说明
>cel-miR-1 MIMAT0000003 Caenorhabditis elegans miR-1 UGGAAUGUAAAGAAGUAUGUA >cel-miR-2 MIMAT0000004 Caenorhabditis elegans miR-2 UAUCACAGCCAGCUUUGAUGUGCUAUCACAGCCAGCUUUG UAUCACAGCCAGCUUUGAUGUGC ……
其中标识符就是大于号’>’。按两个为一组分成若干个文件。大意上是这样。
分割fasta文件
#!/usr/bin/perl #fasta2.pl #Usage:perl fasta2.pl in_fasta out_file open(IN,"<$ARGV[0]"); $i = 0; $j = 1; while(<IN>){ if(/^>/){ $i++; } if($i == 3){ $j++; $i = 1; } open(OUT,">>$ARGV[1]_$j"); print OUT $_; }
注: in_fasta是指要处理的fasta文件。
out_file是指输出的文件。(如命名为out, 则生成的文件名为out_1, out_2, out_3等)
主要是利用循环嘛,第一步是按大于号’>’来统计个数。再用$j来循环输出文件名。
有点相关的文章
- 用Perl抓取网页和提交表格 (0.565)
- 用perl匹配字符串并返回该匹配的位置 (0.565)
- 用perl统计一个六种类型的数据 (0.565)
- Perl:FastQ与FastA格式的相互转换 (0.500)
- 两种办法批量去掉重复数据 (0.500)
- 用Perl下载NCBI的Blast库(Blastdb) (RANDOM - 0.065)
很好,支持一下。。。
LC,非常感谢,编的很简洁,我完全看懂了。用perl来处理fasta文档真的很方便
嘎嘎,老兄,那个,fasta是啥?
一种格式啊, 就是数据严格按照这种格式保存在文件里.以>开始. 其实上面有解释的. :)
额,不好意思,没说清楚 ~
其实小邪想问的是这个格式是拿来做什么的?
看了上面,难道这个格式只是DNA之类专用的?
的确是.. 自从DNA测序后, 规定了这种格式(其中一种,当然还有其它类型的格式)来存放的序列.. 是跟我打交道最多的一种格式啊. :)
基础太差,完全木有看懂。。。 [衰]
呵呵.. 好说.. perl的符号比较奇怪.. [呲牙]
为什么不能运行啊。那个输入的文件叫什么名字啊
就是我把你的程序拷贝到txt后,改名为fasta2.pl,然后用cmd里运行perl fasta2.pl,我安装activeperl了。我的序列文件名字叫in_fasta,需要后缀名吗。基础太差了。呵呵,谢谢
Usage:perl fasta2.pl in_fasta out_file
不用后缀。用cmd要注意路径。如c:/fasta2.pl
不用后缀,里面格式是fasta就行。
多谢啊,我知道我为什么不能运行了,我cmd输入的命令只是“perl fasta2.pl ”
我输入“perl fasta2.pl in_fasta out_file”,就运行的很好了,真的很神奇啊。
Usage是输入命令的意思吗?刚刚接触perl,十分感谢。你这个博客真是对搞生物信息学的雪中送炭啊!
usage是用法的意思.. 呵呵.. 输入命令也差不多了
以前听说Perl脚本是黑客必修的一门脚本,现在还是这么流行?
现在.. 没那么流行了. 前段时间看了排名, 应该是第六..
可能黑客还是会学这个的..
我把你的程序拷贝下来放在一个记事本中,然后保存为fasta2.pl格式,放在D盘其中一个文件中,我把高粱全基因序列sbi1.fasta改为in_fasta.fasta文件也放在这个文件中, 在cmd中找到这个文件的目录然后输入
perl fasta2.pl in_fasta out_file,怎么没有反应啊,不知道为什么,请您指教,第一次接触perl,不懂的太多,但是对我们实验帮助太大,不得不掌握啊。
要有完整的目录.那只是例子而已了.如c:/in_fasta.fasta
~ 有问题请到yunbio.com
很细。
什么东西,瞧瞧
很不错,正好用得我的文件中了。
不知道你还能不能收到。我想问问您当时是怎么解决的呀
不知道您还能不能收到。我想问问我按照您的运行,但是没有反应
那个,分解出来的文件太多了,而且时间也太长,请问怎样可以让Perl只将序列长的写出来保存?
perl的话就用bioperl了。 不难的。数据量大的话,时间长也算正常
文章很好~!赞 http://www.xevip.cn