免费注册 查看新帖 |

Chinaunix

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

求助:关于核苷酸和氨基酸筛选的问题(已解决,感谢!) [复制链接]

论坛徽章:
0
1 [报告]
发表于 2016-03-28 19:27 |显示全部楼层
核苷酸序列文件中应该是三个字母算一个密码子?那么第二个文件中的点位是否是:
TTT-AGG-GTT-TCC-GGC-GCC-CCG-TCA-GGG-AAA-ACC-AAA-TTA-GGG-TTT-CGA-TTT-AAA-ATC-GCA-
AAA
如何与score.txt对应?

第一段中,氨基酸序列中如何算一个点位?又如何与score.txt对应?
FRVSGAPSGKTKLGFRFKIAK-----PHKRSRETLLKEAGAEARGEDKAQVGRMTTRLKK
NRKKRGHVSAGHGRIGKHRKHPGGRGNAGGMHHHRILFDKYHPGYFGKVGMRHFHKLRNH
YHCPIVNIEKLWSLIPEDVKAKAT----AESAPLVDVTQFGYFKVLGKGELP-KQPIVVK
AKLISKLAERKIKEAGGAVMLTA

论坛徽章:
0
2 [报告]
发表于 2016-03-28 20:32 |显示全部楼层
score.txt只有203个值,而上面每个片段有609个字母或-,看来氨基酸序列也是三个字母一个点位了。
那么2楼的代码应该也可以处理氨基酸序列,为何还要代码呢?

论坛徽章:
0
3 [报告]
发表于 2016-03-29 12:42 |显示全部楼层
回复 5# 56836430

你是生物专业的,在表达问题时要让非生物专业的人能理解。

我关心的问题:“氨基酸是一个位点一个值”,你这里“位点”是指一个字母吗?那么上面的氨基酸片段有609个字母,而score.txt只有203个值,两者之间是如何对应的?你要把这个问题解释清楚。

至于“核苷酸是三个字母一个值”,那么609个字母构成203个“位点”,刚好对应score.txt只有203个值,反而容易处理。


   

论坛徽章:
0
4 [报告]
发表于 2016-03-29 20:47 |显示全部楼层
本帖最后由 hztj2005 于 2016-04-03 10:57 编辑
  1. #!/usr/bin/perl

  2. open($score_f, "score.txt");#打开文件
  3. open($fasta_f, "Nucleotide.txt");#打开Nucleotide文件
  4. open(Out, ">Nucleotidenew.txt");#输出结果文件


  5. #读入score.txt
  6. @Scores={};
  7. while (<$score_f>){
  8.          chomp;
  9.          #print $_;
  10.          if($_){
  11.             $n++;
  12.             push  @Scores,$_;
  13.                
  14.          }
  15. }

  16. @Scorestemp = splice (@Scores,1,203); #删除第一个原因不明的非法元素。
  17. @Scores=@Scorestemp;

  18. $Scorenum=@Scores;
  19. print Out        ("$Scorenum\n");

  20. #print Out        ("@Scores\n");

  21. #读取Nucleotide.txt

  22. my $fastaall="";
  23. my $fastatemp="";
  24. while (<$fasta_f>){
  25.          chomp;
  26.          $fastatemp = $fastaall.$_;
  27.          $fastaall= $fastatemp ;         
  28.          #print Out        $fastaall."\n";   
  29.         
  30. }

  31. $fastaall =~ s/\s//g;#删除不当空白
  32. $fastaall =~ s/(([-A-Z]){3})/$1 /g;#给每个位点添加一个空白
  33. @Datafasta=split(/ /,$fastaall);#按空白切分

  34. #检查读入数据分组是否正确
  35. $Datafastanum=@Datafasta;
  36. print Out        "\r\n";
  37. print Out        ("Datafastanu:$Datafastanum\r\n");
  38. $n=1;
  39. foreach $item (@Datafasta) {
  40.      print Out ("$n:$item\r\n");
  41.      $n++;
  42. }


  43. #提取Score值大于5的位置对应的碱基
  44. @Datanew ={};
  45. for ($i = 0; $i <= @Datafasta; $i++) {

  46.     if($Scores[$i] >= 5)
  47.     {
  48.             #print $Datafasta[$i]."\n";
  49.             push  @Datanew, $Datafasta[$i];
  50.            
  51.     }
  52. }

  53. @Datanewtemp = splice (@Datanew,1,203); #删除第一个原因不明的非法元素。
  54. @Datanew=@Datanewtemp;

  55. #分组结果
  56. print Out        ("@Datanew\n");

  57. #最终结果
  58. $result=join("",@Datanew);
  59. print Out        "$result\n";

  60. exit;

  61. #打印最终结果个数:
  62. $Datanewnum=@Datanew;
  63. print Out        ("$Datanewnum\n");

  64. exit;

  65. ---------------------------------------------
  66. 对perl不熟悉,上面代码写得不好,改一改:
  67. #!/usr/bin/perl

  68. open($score_f, "score.txt");#打开文件
  69. open($fasta_f, "Nucleotide.txt");#打开Nucleotide文件
  70. open(Out, ">Nucleotidenew.txt");#输出结果文件

  71. #读入score.txt 并删除多余的空格
  72. my @Scores = map {chomp;s/^ +//;$_} <$score_f>;

  73. #读取Nucleotide.txt
  74. my $fastaall="";
  75. while (<$fasta_f>){
  76.      chomp;
  77.      $fastaall = $fastaall.$_;
  78. }

  79. $fastaall =~ s/\s//g;#删除不当空白
  80. @Datafasta = $fastaall =~ m/\G[-A-Z]{3}/g;#按点位分割

  81. #检查读入数据分组是否正确
  82. $Datafastanum=@Datafasta;
  83. print Out        ("Datafastanu:$Datafastanum\r\n");
  84. $n=1;
  85. foreach $item (@Datafasta) {
  86.      print Out ("$n:$item\r\n");
  87.      $n++;
  88. }

  89. #提取Score值大于5的位置对应的碱基
  90. $i = -1;
  91. @Datanew = grep {$i++;($Scores[$i] >= 5)}@Datafasta;

  92. #分组结果
  93. print Out        "@Datanew\n";
  94. #最终结果
  95. print Out        @Datanew;
  96. exit;
复制代码

论坛徽章:
0
5 [报告]
发表于 2016-03-30 18:39 |显示全部楼层
回复 12# sunzhiguolu

我多年用c++写代码,思路容易理顺。但对Perl并不熟悉,这段代码应该是很笨拙的,至少我自己是这样看。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP