免费注册 查看新帖 |

Chinaunix

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

生物信息-PERL编程求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-22 18:09 |只看该作者 |倒序浏览
本帖最后由 jingwu110 于 2013-01-22 21:40 编辑

小弟初学PERL没有基础,程序如下:
#!/usr/bin/perl -w
use strict;
use warnings;
use POSIX;

my %seq1=();
my %seq2=();
my $index;
my $seq_candidate;
my $seq_line;
my $seq_tmp;
my $seq;

open(IN1,"mine\\my_seq.txt");
while (<IN1>){
if (/>(.*?)\s.*/) {#fasta格式的title第一个空格前是基因名称ID
  $seq1{$1}=$_;
  $seq2{$1}="";
  }
  else {
  chomp;
  $seq2{$1}.=$_;
  }
  }
  close(IN1);

  open(OUT,">mine\\result_domain.txt");
  open(IN2,"mine\\position.txt");
  while (<IN2>) {
  if (/^(.*?)\s.*\s(\d+)\s+(\d+)$/) {
  chomp $seq1{$1};
  print OUT "$seq1{$1}\t$2\t$3";
  $seq_candidate=substr($seq2{$1},$2-1,$3-$2+1);
  $seq_line=POSIX::ceil(($3-$2+1)/60);
  for($index=1;$index<=$seq_line;$index++)
  {
   $seq_tmp=substr($seq_candidate,($index-1)*60,60);
   $seq.="\n".$seq_tmp;
  }
   print OUT "$seq\n";
  }
  }
  close(IN2);
  close(OUT);

主要目的是利用position.txt文件中的信息位点,在my_seq.txt文件中搜寻匹配的序列并截取相应的序列,最后输出result_domain.txt文件,程序是可以运行了,就是存在一个小问题,可能是循环内容出了一点小问题,导致输出的结果累加的,
运行结果片段:

红色标记是截取的每个ID对应的domain序列,问题就是它也会把之前的结果也加进去,然后把对应的新结果加在最后。

如何修改才能实现运行结果不累加!
还请高手指点一二!
程序中需要的文件: 需要的文件.rar (35.02 KB, 下载次数: 10)

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
2 [报告]
发表于 2013-01-22 19:33 |只看该作者
本帖最后由 mcshell 于 2013-01-22 19:38 编辑


  问问题 最好把文本贴上来,大家好做测试{:3_204:}
原文本是什么样的,要处理成什么样的。。

论坛徽章:
0
3 [报告]
发表于 2013-01-22 21:48 |只看该作者
哦哦!!不好意思啊 刚刚 已经附上了!!!谢谢提点!!!

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
4 [报告]
发表于 2013-01-22 22:42 |只看该作者

  1. .....
  2. print OUT "$seq\n";
  3. undef $seq;
复制代码
or
去掉前面的my $seq;
在下面的循环定义
  1. while (<IN2>) {
  2.     my $seq;
  3. ...........
复制代码
回复 3# jingwu110


   

论坛徽章:
0
5 [报告]
发表于 2013-01-22 23:11 |只看该作者
问题已经解决!谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP