免费注册 查看新帖 |

Chinaunix

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

【求助】对fasta文件DNA进行排序以及排序后合并 [复制链接]

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-01-04 06:20:00程序设计版块每日发帖之星
日期:2016-01-04 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-12-10 20:30 |只看该作者 |倒序浏览
样本大概是这样的:
>chr01:696~715
CACTCCATTTATATACACTT
>chr01:929~948
ATCACTGTCGTAACACTCTT
>chr01:1414~1433
CTGCAATCTTGTTCTTAGAA
>chr01:1501~1520
TTATTTAAGGACAAAGGTTG
>chr01:1668~1687
CAAATAGGTCTATAATATTA
>chr01:1800~1819
TTTGTCTCTAGTTTGCGATA
>chr01:1967~1986
TCAGCAACTTCGACTGGGTA
>chr01:1990~2009
TTCAGTTGGGTGGGCGGCTT
>chr01:1096~1115
CGAAGGGACTATATCTAGTC
>chr01:2739~2758
CCTTGGTGCAATTACGTAAT
>chr01:3105~3124
CTCATTTATAATGATTGATA
>chr01:3682~3701
TTATGAGAAAAATACATGAA

我想先对样本进行排序,得到:

>chr01:696~715
CACTCCATTTATATACACTT
>chr01:929~948
ATCACTGTCGTAACACTCTT
>chr01:1096~1115
CGAAGGGACTATATCTAGTC
>chr01:1414~1433
CTGCAATCTTGTTCTTAGAA
>chr01:1501~1520
TTATTTAAGGACAAAGGTTG
>chr01:1668~1687
CAAATAGGTCTATAATATTA
>chr01:1800~1819
TTTGTCTCTAGTTTGCGATA
>chr01:1967~1986
TCAGCAACTTCGACTGGGTA
>chr01:1990~2009
TTCAGTTGGGTGGGCGGCTT
>chr01:2739~2758
CCTTGGTGCAATTACGTAAT
>chr01:3105~3124
CTCATTTATAATGATTGATA
>chr01:3682~3701
TTATGAGAAAAATACATGAA

再对样本进行合并,得到:
>chr01:696~3701
CACTCCATTTATATACACTTATCACTGTCGTAACACTCTTCGAAGGGACTATATCTAGTCCTGCAATCTTGTTCTTAGAATTATTTAAGGACAAAGGTTGCAAATAGGTCTATAATATTATTTGTCTCTAGTTTGCGATATCAGCAACTTCGACTGGGTATTCAGTTGGGTGGGCGGCTTCCTTGGTGCAATTACGTAATCTCATTTATAATGATTGATATTATGAGAAAAATACATGAA
的效果,求大神编写一段perl代码,拜谢!

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
2 [报告]
发表于 2015-12-11 14:07 |只看该作者
本帖最后由 sunzhiguolu 于 2015-12-11 21:09 编辑

回复 1# munaiyi1234
那些文本不是已经做过排序了吗? 还需要排序吗?

   

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-01-04 06:20:00程序设计版块每日发帖之星
日期:2016-01-04 06:20:00
3 [报告]
发表于 2015-12-11 15:45 |只看该作者
回复 2# sunzhiguolu


    是没排过序的呀

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-01-04 06:20:00程序设计版块每日发帖之星
日期:2016-01-04 06:20:00
4 [报告]
发表于 2015-12-11 15:45 |只看该作者
回复 2# sunzhiguolu


    而且您也没回答我的问题呀

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
5 [报告]
发表于 2015-12-11 16:19 |只看该作者
本帖最后由 sunzhiguolu 于 2015-12-11 21:10 编辑

回复 4# munaiyi1234
排序后与未排序之前的区别在哪里?上面这些文本排序前与排序后没啥区别呀!!!

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
6 [报告]
发表于 2015-12-11 16:27 |只看该作者
回复 3# munaiyi1234
如果没有排序是否是下面这样:
  1. >chr01:3682~3701
  2. TTATGAGAAAAATACATGAA
  3. >chr01:696~715
  4. CACTCCATTTATATACACTT
  5. >chr01:1668~1687
  6. CAAATAGGTCTATAATATTA
  7. >chr01:2739~2758
  8. CCTTGGTGCAATTACGTAAT
  9. >chr01:1501~1520
  10. TTATTTAAGGACAAAGGTTG
  11. >chr01:1967~1986
  12. TCAGCAACTTCGACTGGGTA
  13. >chr01:1800~1819
  14. TTTGTCTCTAGTTTGCGATA
  15. >chr01:1414~1433
  16. CTGCAATCTTGTTCTTAGAA
  17. >chr01:3105~3124
  18. CTCATTTATAATGATTGATA
  19. >chr01:1096~1115
  20. CGAAGGGACTATATCTAGTC
  21. >chr01:1990~2009
  22. TTCAGTTGGGTGGGCGGCTT
  23. >chr01:929~948
  24. ATCACTGTCGTAACACTCTT
复制代码

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
7 [报告]
发表于 2015-12-11 16:41 |只看该作者
本帖最后由 sunzhiguolu 于 2015-12-11 16:42 编辑

给您提供一个思路: (可能方法比较笨, 但是可行)
1.> 利用一个哈西变量以 ">chr01:[0-9]+~[0-9]+" 作为键, 将其下面的文本作为值收集起来;
2.> 通过 foreach 操作符对其哈西变量循环一下就可以了; #foreach (sort {code block} keys %hash)
3.> 对排序后的哈西的键存头去尾, 将其对应的那些值拼接一下即可;

论坛徽章:
2
程序设计版块每日发帖之星
日期:2016-01-04 06:20:00程序设计版块每日发帖之星
日期:2016-01-04 06:20:00
8 [报告]
发表于 2015-12-11 20:38 |只看该作者
回复 7# sunzhiguolu


    多谢!我先试试!继续求助!

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
9 [报告]
发表于 2015-12-11 21:08 |只看该作者
回复 8# munaiyi1234
试下:
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my ($sReg, %hData, $sKey, $sHead, $sRemain) = (qr /.*~/);
  5. while (<DATA>){
  6.     chomp;
  7.     if (m/\A>/){
  8.         $sKey = s/:/: /r;
  9.         $hData{$sKey} = '';
  10.         next;
  11.     }
  12.     $hData{$sKey} = $_;
  13. }

  14. foreach (sort { ($a =~ s/$sReg//r) <=> ($b =~ s/$sReg//r)} keys %hData){
  15.     $sHead = $_ unless (defined $sHead);
  16.     $sHead =~ s{[0-9]+\z}{$_=~s/$sReg//r}e;
  17.     $sRemain .= $hData{$_};
  18. }

  19. print "$sHead $sRemain\n";

  20. __DATA__
  21. >chr01:3682~3701
  22. TTATGAGAAAAATACATGAA
  23. >chr01:696~715
  24. CACTCCATTTATATACACTT
  25. >chr01:1668~1687
  26. CAAATAGGTCTATAATATTA
  27. >chr01:2739~2758
  28. CCTTGGTGCAATTACGTAAT
  29. >chr01:1501~1520
  30. TTATTTAAGGACAAAGGTTG
  31. >chr01:1967~1986
  32. TCAGCAACTTCGACTGGGTA
  33. >chr01:1800~1819
  34. TTTGTCTCTAGTTTGCGATA
  35. >chr01:1414~1433
  36. CTGCAATCTTGTTCTTAGAA
  37. >chr01:3105~3124
  38. CTCATTTATAATGATTGATA
  39. >chr01:1096~1115
  40. CGAAGGGACTATATCTAGTC
  41. >chr01:1990~2009
  42. TTCAGTTGGGTGGGCGGCTT
  43. >chr01:929~948
  44. ATCACTGTCGTAACACTCTT
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP