免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5516 | 回复: 18
打印 上一主题 下一主题

重排fasta文档求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-21 10:34 |只看该作者 |倒序浏览
本帖最后由 萌情公方 于 2014-07-21 17:03 编辑

现在我想从fasta序列中,每一百个字母作为一行输出,但是我的代码运行的结果总是不对,请大神帮忙看看吧:
源文件
>1 dna:chromosome chromosome:Zv9:1:1:60348388:1 REF
TTCTTCTGGGGAAAGTCTGATTTGATTTATTTCCCTTTTAAGATCAATATTATTAGCCCC
ATGTGTTGAAGAACAAATCTCTCTGTTAAACAGAAATTGGGGGGGAAAATAAACAGGGGG
......
我的结果
1
AAAACTGGGGAAAGTCTGATTTGATTTATTTCCCTTTTAAGATCAATATTATTAGCCCC
ATGTGTTGAAGAACAAATAAAACTGTTAAACAGAAATTGG
GGGGGAAAATAAACAGGGGG
GCAAATAATTCTGACTACAATTAAAAAAAAGATATATTATACTATGCATATCTCCTCTG
TTGTGTTGTAGATAGACG
AGCTGAAAAACTGTGGTCGTTTGATTTTTTCTTTGCATTATT
AAACGCAAATGTAATAAAAATATTAAATTTTGCATTCATATTCATTATAGATGTTGT
TAT
以上只是示例
  1. #!/usr/bin/perl -w
  2. use strict;

  3. my $input = shift;
  4. open (FA,"$input")||die"$!\n";
  5. $/=">";<FA>;$/="\n";
  6. while(<FA>){
  7.         chomp;
  8.         my $id=$1 if(/(\w+)\s+(\S+\s)+\w+/);
  9.         $/=">";
  10.         print "$id\n";
  11.         my $seq=<FA>;
  12.         chomp $seq;
  13.         for(my $i=1;$i<=length($seq);$i+=100) {
  14.         my $display .=substr($seq,$i,100)."\n";
  15.         print "$display";}
  16. }close FA;
复制代码

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
2 [报告]
发表于 2014-07-21 10:58 |只看该作者
本帖最后由 huang6894 于 2014-07-21 11:00 编辑
  1. #!/usr/bin/perl -w
  2. use strict;
  3. my $seq;
  4. my $genome=shift;
  5. open (IN,$genome) or die $!;
  6. while (<IN>) {
  7. if (/^>/) {
  8. print "$_";
  9. next;
  10.         }
  11. chomp;
  12. $seq .=$_;
  13. }
  14. my $length=length $seq;
  15. for (my $i=0; $i<$length; $i+=100) {
  16. my $part=substr($seq,$i,100);
  17. print "$part\n";
  18. }
  19. close IN;
  20. ~
复制代码

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
3 [报告]
发表于 2014-07-21 11:16 |只看该作者
给楼主个建议, 最好不要使用 $_ 这个变量, 这对你没有任何好处. 还会降低 程序的可读性.

很多时候, 也是产生错误的根源.

论坛徽章:
0
4 [报告]
发表于 2014-07-21 16:18 |只看该作者
谢谢,不过你的代码在我这里运行出来就没有下面的碱基序列了。。。回复 2# huang6894


   

论坛徽章:
0
5 [报告]
发表于 2014-07-21 16:18 |只看该作者
恩,话说大神能看出我的代码哪里有问题吗?多谢回复 3# q1208c


   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
6 [报告]
发表于 2014-07-21 16:46 |只看该作者
回复 5# 萌情公方


你给的文件里根本没有 ">", 所以, 第一个<FA>就把整个文件给pass了, 所以, 后面就啥也没有了.     

论坛徽章:
0
7 [报告]
发表于 2014-07-21 17:01 |只看该作者
我表述的有问题,我给的文本时我运行出来的结果,源文件是有>的,我的问题就是为什么我的脚本输出的结果不能按照一百个字符排列?
源文件是这样的:
>1 dna:chromosome chromosome:Zv9:1:1:60348388:1 REF
TTCTTCTGGGGAAAGTCTGATTTGATTTATTTCCCTTTTAAGATCAATATTATTAGCCCC
ATGTGTTGAAGAACAAATCTCTCTGTTAAACAGAAATTGGGGGGGAAAATAAACAGGGGG
......


回复 6# q1208c


   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
8 [报告]
发表于 2014-07-21 17:08 |只看该作者
回复 7# 萌情公方

你原意是啥?

一行 100个字符 ?
   

论坛徽章:
0
9 [报告]
发表于 2014-07-21 17:22 |只看该作者
对,将每段序列重新整理成100个一行的形式。回复 8# q1208c


   

论坛徽章:
0
10 [报告]
发表于 2014-07-21 17:27 |只看该作者
你原本的結果怪怪的

"TTCTTCTGGGG"這個部分被截掉了

如果這個部分沒有問題(因為你說這是示例)

那請你先確定你是不是在windows底下用cmd執行

cmd要重新設定寬度(>100)

不然請寫到檔案裡面
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP