在云生物上曾经有一个人问了一个一模一样的问题,不知道是不是同一个人,还是同班同学。 我在上面用Bioperl给出了一种解决方案,但是不知道为什么好像那个帖子找不到了。
在 2011年6月23日 下午1:03,jie liu <liujie....@gmail.com>写道: > 写的很乱,请参考。附件有序列文件和程序文件 > > > ###///////////////////////////////////////////////////////////////////////### > ###//////////////程序名称:.. > ###//////////////作者:盛夏 > ###//////////////时间:2011/06/22 > ###//////////////备注:序列处理部分的代码来源于 柳城 > > ###///////////////////////////////////////////////////////////////////////### > > #!/usr/bin/perl -w > > $dirname = "D:/xProject/Perl/3"; #指定Random DNA sequences所在目录 > > opendir( DIR, $dirname ) || die "Error in opening dir $dirname\n"; > > while ( ( $filename = readdir(DIR) ) ) { > > #print("$filename\n"); #循环输出该目录下的文件。 > > $num = 0; > $/ = '>'; #输入记录分隔符,默认是/n > > open FASTA, "<$dirname/$filename"; > open disc, ">disc_$filename"; ## 生成一个文件保存描述信息 > open seq, ">seq_$filename"; ## 生成一个文件保存序列信息 > open all, ">all_$filename"; ## 生成一个文件记录完整的信息 > while (<FASTA>) { > > $seq_line = ''; > s/>//g; > @seq = split "\n"; > if (@seq) { > $desc = $seq[0]; ## 这是>后面的描述 > chomp($desc); > foreach $i ( 1 .. ( @seq - 1 ) ) {## '..'意思同'~' > chomp( $seq[$i] ); > $seq[$i] =~ s/\n//g; ## 把序列的换行符去掉 > $seq_line .= $seq[$i]; ##把多行的Fasta序列转为一行 > } > @seq2 = split(//,$seq_line); > foreach $i ( 1 .. ( @seq2 - 1 ) ) {## '..'意思同'~' > if(($i+3)%3 != 0) { > $seq_line2 .= $seq2[$i]; > }else{ > $seq_line2 .= $seq2[$i]." "; > } > } > print disc ">$desc\n"; > print seq ">\n$seq_line\n"; > print all ">$desc\n$seq_line2\n"; > } > } > close disc; ## 关闭文件 > close seq; ## 关闭文件 > close all; ## 关闭文件 > > } > closedir(DIR); ## 关闭目录 > > > 2011/6/23 xiumu <yangyang445...@126.com> > >> FASTA是生物信息数据库的常用存储方式,了解FASTA格式的含义,用perl编写程序分离注释行内容,分离蛋白质序列,并转变成氨基酸三字母表示 >> 方式。说明使用的perl数据结构和程序的变量转换过程,解释含义。 >> >> 承认这是个作业・・・・・ 谢谢各位老大了・・・时间比较紧急 明天就交了・・・・・・ 程序于简单越好 >> >> >1A23:A|PDBID|CHAIN|SEQUENCE >> >:注释行 >> >> AQYEDGKQYTTLEKPVAGAPQVLEFFSFFCPHCYQFEEVLHISDNVKKKLPEGVKMTKYHVNFMGGDLGKDLTQAWAVAM >> >> ALGVEDKVTVPLFEGVQKTQTIRSASDIRDVFINAGIKGEEYDAAWNSFVVKSLVAQQEKAAADVQLRGVPAMFVNGKYQ >> LNPQGMDTSNMDVFVQQYADTVKYLSEKK >> 数据内容 >> >1AAR:B|PDBID|CHAIN|SEQUENCE >> >> MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG >> >1AG2:A|PDBID|CHAIN|SEQUENCE >> >> GLGGYMLGSAMSRPMIHFGNDWEDRYYRENMYRYPNQVYYRPVDQYSNQNNFVHDCVNITIKQHTVTTTTKGENFTETDV >> KMMERVVEQMCVTQYQKESQAYY >> >1AJ3:A|PDBID|CHAIN|SEQUENCE >> >> AKLNESHRLHQFFRDMDDEESWIKEKKLLVSSEDYGRDLTGVQNLRKKHKRLEAELAAHEPAIQGVLDTGKKLSDDNTIG >> KEEIQQRLAQFVDHWKELKQLAAARGQRLE >> >1ARR:B|PDBID|CHAIN|SEQUENCE >> MKGMSKMPQFNLRWPREVLDLVRKVAEENGRSVNSEIYQRVMESFKKEGRIGA >> >> -- >> 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 >> 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。 >> 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscr...@googlegroups.com。 >> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 >> >> > > > -- > Best regards, > Liu Jie > > 020-32015312 > Guangzhou Institutes of Biomedicine and Health, Chinese Academy of > Sciences > http://www.gibh.cas.cn/ > > -- > 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 > 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。 > 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscr...@googlegroups.com。 > 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 > -- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscr...@googlegroups.com。 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。