24小时热门版块排行榜    

查看: 1350  |  回复: 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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 投票:  有多少人是今天查系统知道结果的? +17 爱看书的可乐 2026-08-26 19/950 2026-08-31 21:30 by xiangy672
[基金申请] 基金未中,这种答复是模板吗? +6 zhaosm1982 2026-08-27 7/350 2026-08-31 21:18 by qdxxmc
[基金申请] 面上意见出来了 +12 黄鸟于飞Chao 2026-08-29 23/1150 2026-08-31 18:57 by 黄鸟于飞Chao
[文学芳草园] 梦想 +5 myrtle 2026-08-26 5/250 2026-08-31 14:40 by hahaboy
[基金申请] 中青基了要发朋友圈吗? +7 349506619 2026-08-28 7/350 2026-08-31 13:39 by 冼亮淀粉酶
[基金申请] 29号明天会评吗 +4 笨笨唐 2026-08-28 4/200 2026-08-31 09:30 by huixian257
[基金申请] 为什么到现在没收到通知? +5 tannykie 2026-08-29 5/250 2026-08-30 21:05 by purplejack
[基金申请] 有没有仍没收到信息的 +7 德尚中行 2026-08-27 8/400 2026-08-30 20:52 by purplejack
[考博] 找导师 +6 yuanjiabao 2026-08-29 7/350 2026-08-30 14:40 by 生科新手
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +6 gdd2018 2026-08-28 11/550 2026-08-30 08:58 by 超级无敌华子
[基金申请] 我就是申请一个面上项目而已,这评审意见是按照杰青的条件评的吧? +6 gouxfjh 2026-08-28 11/550 2026-08-30 07:57 by gouxfjh
[基金申请] 2026年叶企孙基金 +4 bud_bud 2026-08-27 7/350 2026-08-29 07:23 by foolishmani
[基金申请] 怎么查啊 +6 huang1991js 2026-08-26 6/300 2026-08-28 08:42 by winsaint
[基金申请] 怎么看青基中了没有啊 +5 叶九微 2026-08-26 5/250 2026-08-27 10:35 by l_zh2008
[基金申请] 我不理解! +15 Edward_pc 2026-08-26 23/1150 2026-08-26 20:34 by zzuzxg
[基金申请] 2026年8月25日国自然放榜前突然收到列入评审专家邮件,有关系吗? +25 木水思豆 2026-08-25 28/1400 2026-08-26 14:53 by draco1987
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 系统进不去 +4 yanglien 2026-08-26 5/250 2026-08-26 11:10 by wenfengw83
[基金申请] 项目信息和经费信息在系统里都可以看到了 +6 wittyboy 2026-08-26 14/700 2026-08-26 10:55 by wittyboy
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
信息提示
请填处理意见