24小时热门版块排行榜    

查看: 1347  |  回复: 8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

李靖

新虫 (初入文坛)

[求助] perl 大神求助 已有1人参与

亲们,我的两个文件是这样的
1文件chr1 - 9901.5                     
chr1 - 144612.5      
chr1 - 227317.5
chr1 - 227321.5
chr1 + 267647.5  
chr1 - 267648.5  
chr1 - 267649.5
chr2 + 267651.5
chr2 - 267652.5
chr3 - 521268.5
chr3 - 569831.5
chr1 + 713294.5  
chr1 - 713307.5  
chr1 - 753396.5
chr1 + 762732.5
chr3 - 801094.5  
chr1 + 808622.5
chr2 - 808633.5
chr1 - 819067.5
3文件
chr1 - 9802 144712   
chr1 - 227222 227421  
chr1 - 267552 267751
chr2 + 267552 267753
处理上边两个文件的预期目标是
chr1 - 9802 144712   3
chr1 - 227222 227421  2
chr1 - 267552 267751  2
chr2 + 267552 267753  0
我想在两个文件第一列和第二列相同的情况下,如果1文件的第三列有一个处于3文件的第三列和第四列之间的情况下,$n就加1。有两个就加2,以此类推,$n初始值为0.其中的3,2,2,0是$n.

my %hash;
my $n=0;
open OUTFILE,'>','result1';
open FILE,'<','1';
while (<FILE> {
  chomp;
  ($a,$b,$c)=(split)[0,1,2];
  $hash{$a}=1;
  $hash{$b}=2;
open FILE,'<','3';
while (<FILE>{
chomp;
  ($d,$e,$f,$g)=(split)[0,1,2,3];
  if(exists $hash{$d} && exists $hash{$e}){
          @array=sort{$a <=> $b}($f,$g);
          next if $c<$array[0] ;
          next if $c>$array[1];
          $n++;
}print OUTFILE"$d $e $f $g $n\n";
}
}

这是我编写的程序,大家能不能帮我看看是哪里出了问题啊或者帮我重新编写一个,甚是感谢各位大牛了。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

李靖

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by wizardfan at 2014-11-11 08:39:55
我自己写很简单,但是你学到的少。更倾向于你说下你的算法。
比如
读入文件1,每行分成3列,保存到hash变量里,key是***,value是***

如果你编程经验不丰富的话,做这么一步会很有帮助...

谢谢
9楼2014-11-25 09:44:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

wizardfan

至尊木虫 (著名写手)

优秀版主

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
李靖: 金币+15, 有帮助 2014-11-25 09:42:42
首先先让我理解你的算法:
根据你说的
chr1 - 9802 144712
第3,4列是9802和144712,那区间就是9802-144712
在1文件中,只有第二行chr1 - 144612.5      在这个区间,那你的结果为什么是3呢?

其次,请确定1文件和3文件的分割符是空格,还是tab

接着 看上去第二列的正反链信息好像没有用的

最后 请在你的程序上加上注释,我可以帮你看看,你到底错在哪里: 是算法错误,还是perl实现错误
2楼2014-11-10 17:36:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

李靖

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by wizardfan at 2014-11-10 17:36:47
首先先让我理解你的算法:
根据你说的
chr1 - 9802 144712
第3,4列是9802和144712,那区间就是9802-144712
在1文件中,只有第二行chr1 - 144612.5      在这个区间,那你的结果为什么是3呢?

其次,请确定1 ...

不好意思,昨天把1文件上传错了,如果按一文件的话,预期的目标是
chr1 - 9802 144712  2
chr1 - 227222 227421  2
chr1 - 267552 267751  2
chr2 + 267552 267753  1
我解释一下,我想干什么(上边文件1的最开头还有一行chr1 - 9901.5 ),我另$n的初始值为0,如果文件1的第三列有落在文件三的第三列和第四列之间,那么$n就加1,以此类推,
chr1 - 9901.5                     
chr1 - 144612.5  
如上边两行的第三列都在9802  144712 之间,所以$n就为2.同样下边也是这样的也就是生物中数read个数。可以帮我编写一个也是可以的,因为帮别人改程序确实很麻烦的,非常感谢
3楼2014-11-11 08:34:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wizardfan

至尊木虫 (著名写手)

优秀版主

引用回帖:
3楼: Originally posted by 李靖 at 2014-11-11 08:34:54
不好意思,昨天把1文件上传错了,如果按一文件的话,预期的目标是
chr1 - 9802 144712  2
chr1 - 227222 227421  2
chr1 - 267552 267751  2
chr2 + 267552 267753  1
我解释一下,我想干什么(上边文件1的最开 ...

我自己写很简单,但是你学到的少。更倾向于你说下你的算法。
比如
读入文件1,每行分成3列,保存到hash变量里,key是***,value是***

如果你编程经验不丰富的话,做这么一步会很有帮助
4楼2014-11-11 08:39:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[公派出国] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 4FFAWE8HcgUD 2026-08-29 4/200 2026-08-30 20:21 by hZiFeudZyoGR
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +4 jCd0dEvKHShX 2026-08-29 5/250 2026-08-30 19:46 by hZiFeudZyoGR
[考研] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 jCd0dEvKHShX 2026-08-29 5/250 2026-08-30 19:37 by hZiFeudZyoGR
[考研] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +5 G6APbkg8SA6w 2026-08-29 6/300 2026-08-30 19:02 by hZiFeudZyoGR
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 G6APbkg8SA6w 2026-08-29 5/250 2026-08-30 18:51 by hZiFeudZyoGR
[考博] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 G6APbkg8SA6w 2026-08-29 5/250 2026-08-30 18:50 by hZiFeudZyoGR
[考研] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 G6APbkg8SA6w 2026-08-29 5/250 2026-08-30 18:40 by hZiFeudZyoGR
[论文投稿] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +5 gy1nBQXYQJqL 2026-08-29 5/250 2026-08-30 18:29 by hZiFeudZyoGR
[博后之家] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 gy1nBQXYQJqL 2026-08-29 4/200 2026-08-30 18:28 by hZiFeudZyoGR
[考博] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +4 gy1nBQXYQJqL 2026-08-29 5/250 2026-08-30 17:56 by hZiFeudZyoGR
[考博] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +7 ASdOkHsho7FD 2026-08-28 11/550 2026-08-30 17:34 by hZiFeudZyoGR
[论文投稿] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +5 gy1nBQXYQJqL 2026-08-29 7/350 2026-08-30 11:51 by l0VvVHGBGRLv
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 ASdOkHsho7FD 2026-08-28 7/350 2026-08-30 06:10 by ZPa0EcMwuECS
[基金申请] 基金系统什么内容也没有 30+4 winsaint 2026-08-27 9/450 2026-08-28 11:06 by maolC
[基金申请] 申请删除本帖 +6 lyz123lyz 2026-08-27 7/350 2026-08-27 17:31 by 宁静致远sy
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 国际合作可查了,中了面上 (EPI+1)(金币+50) +18 Ldrop2023 2026-08-26 18/900 2026-08-26 11:15 by cmrandy
[基金申请] 系统进不去 +4 yanglien 2026-08-26 5/250 2026-08-26 11:10 by wenfengw83
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
[基金申请] 牛来!米来!面来! +8 beefly 2026-08-26 8/400 2026-08-26 08:37 by xuzhipiao
信息提示
请填处理意见