鱼C论坛

 找回密码
 立即注册
查看: 804|回复: 1

判断一段范围是否包含某一点

[复制链接]
发表于 2018-12-6 13:38:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
数据test.txt格式如下:
E00500:309:HTTVJCCXY:8:1104:3579:37541|TTTTACCT        99        chr1        10001        30        1S105M1I34M        =        10106        143        CTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCCAACCCTAACCCTAACCCTAACCCCACCCCTAACCCCACCCCTAACCCTAACCCTA        JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJFJJJJJJJJJJFFJ7F<AFJF<A<FFFJFAJJAA<AJAFAA7A<FAA7F7F-7<J<J7--F<A-7<AA--77<<--A---7A--7-----777---A---7AJF--7        NM:i:5        MD:Z:84T24A9T1A17        AS:i:112        XS:i:111        RG:Z:L008

这是其中一行,需要用到的就第2列(99)、第3列(chr1)、第4列(10001)、第9列(143),现在要通过这几列来过滤test.txt,条件如下:
①第二列只能等于99或83
②在这一行中,chr=chr1,start=10001,end=start+143(第九列的值也有可能是负数,所以需要取绝对值),另外有一个位点数据,site.txt,格式如下:
chr1        13828906        13828907        rs7520386        0        +
chr1        88923260        88923261        rs7532151        0        +
chr2        107441475        107441476        rs776284        0        +

每一行是一个点,且彼此没有重叠的部分,在chr相同的情况下,我要统计每一行的点到底被多少test.txt中的范围所包含。最后的结果应该在site.txt的后面加一列,例如:
chr1        13828906        13828907        rs7520386        0        +    2
代表test.txt中的范围包含这一个点的有2行。

test.txt文本非常大,有几百万行,而site.txt就只有70几行,我自己想的办法如下:
  1. import pandas as pd
  2. f1 = open('test.txt','r')
  3. df = pd.read_table('site.txt',header=None)
  4. snp=[0] * 76
  5. flags = [99,83]

  6. # define a function to judge the aligned reads if belong to these target region
  7. def judge_range(line):
  8.     chr = line.split("\t")[2]
  9.     flag = line.split("\t")[1]
  10.     start = line.split("\t")[3]
  11.     insert = line.split("\t")[8]
  12.     end = int(start) + int(abs(insert))
  13.     f3 = open('site.txt','r')
  14.     for i, region in enumerate(f3):
  15.         S = region.split("\t")[1]
  16.         CHR = region.split("\t")[0]
  17.         if chr == CHR and S in range(start,end):
  18.             snp[i] = snp[i] + 1
  19.         else:
  20.             continue

  21. # define main function
  22. for line in f1:
  23.     flag = line.split("\t")[1]
  24.     if flag in flags:
  25.         judge_range(line)
  26.     else:
  27.         continue
  28. data = pd.DataFrame(snp)
  29. data.rename(columns={0:'align_number'},inplace=True)
  30. df1 = pd.concat([df,data],axis=1,ignore_index=True)
  31. df1.to_csv(sys.argv[3],header=False)
复制代码


不知道为什么,这个代码异常的缓慢,根本运行不出来,请问一下有没有其它什么有效的方法?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-12-6 13:40:47 | 显示全部楼层
贴几行数据:
E00500:309:HTTVJCCXY:8:2124:22577:62048|ATCTCGTG        99        chr1        10001        36        4S108M1I29M        =        10276        375        ACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTACCCCTAACCCTAACCTTAACCCTAACCCTAACCCTAACCCTAACCCAAACCCTAACCCTAACCCTAACCCTAACCC        JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJFJJFFJAFFA<JJFF<7-7A----FJ77A-7A-7F-AJ-A-AFA---7JF7-7-7FA<--<FA-FAF-77-FFFF7JJJFA7--77A-7-FAA        NM:i:3        MD:Z:62A14C59        AS:i:120        XS:i:117        RG:Z:L008
E00500:309:HTTVJCCXY:8:2215:28087:25921|TGATGGTG        99        chr1        10001        0        110M        =        10000        107        TAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCAA        JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ<AJFJ-7-A        NM:i:0        MD:Z:110        AS:i:110        XS:i:108        RG:Z:L008
E00500:309:HTTVJCCXY:8:1109:6867:14793|ATCTCGTG        147        chr1        10002        0        46S101M        =        10003        -100        CACCAACACCCTACACCACGCCCTCCCGCGCTATCGCGCCCACACCAACCCCAACCCGAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTATCCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCC        F-7--)777-7----7--7-7-7-A77---7--7--7-7--AA-A-JJF7-7--FF7---J<<7<7<7A-7JJ7<--AF<7--<JA<---JFFA<-F<<-<<FA7--AFAA-7FFFAFAAJJFFF<JFFJJJJ<FFF7JJFFFAFAA        NM:i:3        MD:Z:5T5T37A51        AS:i:86        XS:i:86        RG:Z:L008
E00500:309:HTTVJCCXY:8:1204:5122:54770|ATCTCGTG        147        chr1        10002        0        2S107M        =        10003        -106        CGAACCCTATCCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTATCCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCC        J-A-<7A---<FFA--AAF-JJF-AF7-7J<7-FJJJJF-FJFF7-JJJF<-JFJJAF<F<7--JFF-<-FFJF<-AJJJA-FJJJJFJJJJJFJJJFJJFJJJFFAAA        NM:i:2        MD:Z:7A41A57        AS:i:97        XS:i:97        RG:Z:L008
E00500:309:HTTVJCCXY:8:1109:6867:14793|ATCTCGTG        99        chr1        10003        0        108M34S        =        10002        100        ACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCCAACCCAAAACGGAAGAGCACACGTCTGAACTCCAGTCACTT        FJJJJAJJJJJJFFJJJFJJJJJJJFFJJJJJFFJJJJJJJ7<JJFAJJFFJ7JJJJFJJAF-F-<7A7AAJAJAJ-FA<FJAJF7AJJ--77F7A<JJJ-J-F<F--A7-7-<-7----7A7A777AF7FAF7----FF-7        NM:i:1        MD:Z:100T7        AS:i:103        XS:i:101        RG:Z:L008
E00500:309:HTTVJCCXY:8:1201:22546:48318|GCGTATTT        99        chr1        10003        0        82M        =        10106        147        ACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCC        JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJFJJFJJFJJFAJ-F<AJFJFJJA<7F<J<AJ-7FJ7<7FJJJ-F-<FA        NM:i:0        MD:Z:82        AS:i:82        XS:i:82        RG:Z:L008
E00500:309:HTTVJCCXY:8:1204:5122:54770|ATCTCGTG        99        chr1        10003        0        111M        =        10002        106        ACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCAAACC        JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJFJJJJJJJJJJJJJJJJJJJJJJJFJJJJAFJAJ-F-FFF--AAF        NM:i:1        MD:Z:108C2        AS:i:108        XS:i:106        RG:Z:L008
E00500:309:HTTVJCCXY:8:1213:9475:17342|ATCTCGTG        99        chr1        10003        0        105M1I36M        =        10088        117        ACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCTCAACCGTAACACTAACTCTAACTCTAGCCCTAACCC        JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJFJFJJFFFF7FF7A-FF-FJJJJ7-F-FF--AAAJ--7-----7-<A--A-----7-7--77<J---7--77-A-777        NM:i:6        MD:Z:110C4C5C5C3A9        AS:i:109        XS:i:108        RG:Z:L008
E00500:309:HTTVJCCXY:8:1221:13910:27345|GCGTATTT        99        chr1        10003        0        105M        =        10273        377        ACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACC        JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJFJJJJJJJJJJJJJ<JJJJFFFFFJJFFFFFAJ<AAFJF77AJJAJFFFFF<FFFJF-A<JJJ<FAJFJFJJ        NM:i:0        MD:Z:105        AS:i:105        XS:i:105        RG:Z:L008
E00500:309:HTTVJCCXY:8:2211:25256:68271|ATCTCGTG        99        chr1        10003        22        76M6I27M1I32M        =        10082        147        ACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTACCCCTAACCCCACCCGTCACCCTAACCCTAACCCTACCCCCAACCCCAACCCTAACCCTAACCCTAACCCTAACCC        JJJJJJJJJJJJJJJJJJJJJJJJJJJJFJJFJJJJJJJJJJJJJJJJJJJJ<FJFF-7FJ<<-7F--F-----7-7--7<-7-7A---7-A-<-777--7--A<--7-F---7-7-A-<F-<7-7F<F--AF<FF-7FFFJ        NM:i:11        MD:Z:66A10A18A3T34        AS:i:96        XS:i:95        RG:Z:L008
E00500:309:HTTVJCCXY:8:2107:5903:35590|CCCTATTT        99        chr1        10004        0        104M32S        =        10105        145        CCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCATAATCGTAACTCTAATCCTAAGCCCCAGCCT        JJJJAFFFJJFJJJJJJJJJJJJJJFJJFJJJFFJFFJJFFJJA7FJJJJF7AFAA7FJJJJ--<F<FFAJJ7A-<-77<AF-JJJFJ-<AJ-A---AJ-7--<----7-7-------<F-7<--A7A--7A-7A<        NM:i:0        MD:Z:104        AS:i:104        XS:i:106        RG:Z:L008
E00500:309:HTTVJCCXY:8:1102:25804:53574|ATCTCGTG        147        chr1        10004        0        30S80M13S        =        10009        -75        CCCTACCCGACACCCTTACGCTCATGCGGTCCCTAGCCCTAACCCTAACCCTTACCCTATCCCTAACCCTGACCCTATCCCTAACCCTAACCCTAACCCTAGCCCTAACCAGACTTCCAGATC        JFFA-7-77-7-F<A7--7-<A7---7--------7---A-A---77--7---<7--<----7JJF777--<-<----7<--7--<7--F-A<<--JJF7--7<-7--<A7-A7---<---AA        NM:i:6        MD:Z:5A16A6A10A6A23A8        AS:i:50        XS:i:50        RG:Z:L008
E00500:309:HTTVJCCXY:8:1206:14022:62804|TTCTATGC        147        chr1        10004        0        56S93M        =        10005        -92        CTCTCTCCCCCTACCCCTCTCTCTCCCTCTCACCCTATCCCTAACCCTCCCCCTCCCCCTACCCCTAACCCTACCCCTACCCCTCACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCC        --7)-))<7))--77-7-A-7-<-A-7-<7--7-7-------7--<7---FFF7--A-7---A7A7--J-7--AA77---F7777-A-<--<F-JFF<FA<<<-JJJJJFJJFJF<JJJJFFJJFJFJJJJJJJJJFJJJJJFJFFFAA        NM:i:4        MD:Z:5A11A5A4A64        AS:i:73        XS:i:78        RG:Z:L008
E00500:309:HTTVJCCXY:8:2222:24474:30140|GTTTCTTT        83        chr1        10004        0        45S96M        =        10011        -89        CGAGCTGACTAAGAAACTGGAGCTCAGACGTGTGCTCTACCCATCCCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAA        7<<7-77--7-77---77--7---7---A--7-7<<-<-77--7-FJJ<JJJJJFJFJFJAJFJJJFJFJJJFJJJJJFJJJJJFFFJJJJJFJJJFJJJJJJJJJJJJJJJJJJJFJJJJJJJJJJJJJJJJFJJJJJJJ        NM:i:0        MD:Z:96        AS:i:96        XS:i:97        RG:Z:L008
E00500:309:HTTVJCCXY:8:1123:2737:66953|ATCTTCTA        163        chr1        10005        0        26S86M        =        10026        120        ACGACGCTCTTCCGATCTTATTCCCGCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAAACCTAACCC        AAFFFFJFJJJJ-JFJJJJJJJJJJJJJJJJJJJJJFFFFJFJJFJFJJJJJJJJJJJJFJFJJJJ-7-<<FFJ-7FJJJFJJJF7FJJFAFJJJJFF<7-A--A-AA7A7F        NM:i:1        MD:Z:77C8        AS:i:81        XS:i:81        RG:Z:L008
E00500:309:HTTVJCCXY:8:1206:14022:62804|TTCTATGC        99        chr1        10005        0        103M1I37M        =        10004        92        CCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCGCAACCCTAACCCCAACCCTAACCCTAACCATAACCCT        JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJFJJJJJFFJJ<JFJJJFAF7<AJFFJF<JJJ7JFJJA<AFJJJJ-AJJAFJ-FF--77F<--AFJJA-7FF7-7<-AA7<-AA---7-7--A        NM:i:3        MD:Z:115T16C7        AS:i:123        XS:i:121        RG:Z:L008
E00500:309:HTTVJCCXY:8:2108:4371:36873|CAACGGTT        99        chr1        10031        0        78M        =        10293        316        TAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCC        JJJFJFJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJFJJJJFJFFJJJFJJJJJJJJFJJJJJAJJ7FFAJA-F        NM:i:0        MD:Z:78        AS:i:78        XS:i:78        RG:Z:L008
E00500:309:HTTVJCCXY:8:1223:16528:28224|ATCTCGTG        147        chr1        10032        0        77M        =        10033        -76        AACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCC        AFJA7--FFF<<--JJA-<<JFF<<FFAFF<<JFFFFAJJFJJFJJFFJAJJF<JJJJFFFFJJFJJFJJJJFFFAA        NM:i:0        MD:Z:77        AS:i:77        XS:i:77        RG:Z:L008
E00500:309:HTTVJCCXY:8:1223:16528:28224|ATCTCGTG        99        chr1        10033        0        77M1I8M24S        =        10032        76        ACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCAGACCCTAACACCACCCCTCACAACTCCCGTCAC        JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJFJJJJJFJJJ--77J--7F7---A7-77A--7----7A--A7FJ        NM:i:1        MD:Z:85        AS:i:78        XS:i:78        RG:Z:L008
E00500:309:HTTVJCCXY:8:2123:30675:62540|ATCTCGTG        99        chr1        10033        0        70M72S        =        10352        343        ACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCGGATCGGAATAACACACGTATGAACTCCAGTCACCTAGACAGCACGCATTCCAACTCCAGCCACAAACCATT        JFAFJJJJFJJAJAAJJJ<JFJJJJFFFFJFFJAAAFJ77FFFJFJJJ<JJJJJFFJFJJJJ<7---<AA--77--77--7-77-7<----7-A-7-7-F--<77-7--7A7J7F---7-----7F-A-A----F--7---7        NM:i:0        MD:Z:70        AS:i:70        XS:i:71        RG:Z:L008
E00500:309:HTTVJCCXY:8:2215:11475:51184|CTCATTTC        99        chr1        10034        7        75M1I66M        =        10317        352        CCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTCACCCTAACCCCAACCCCTAACCCCTACCCTAACCCTAACCC        JJJJJJJJJJJJJJJFJJ<JJFAFAAJ-AJA<JA<JFJJAAJ-FJ7AJ<JJ-FJ-JJ7FJ-FJA-F-AJ7FFFJJ<JJA7J-AA7JF<77-77---7-A--A<AA--77AA7---AA7---7AJ<7-77A<----7--FFFJ        NM:i:5        MD:Z:99A10T12T0A16        AS:i:114        XS:i:119        RG:Z:L008
E00500:309:HTTVJCCXY:8:1213:19471:67920|ATCTCGTG        147        chr1        10034        0        110M        =        10027        -117        CCCTATCCCTACCCCCAACCCTAACCCTACCCCTAACCCTACCCCTACCCCTAACCCTACCCCTAACCCTACCCCAACCCTAACCCTAACCCTAACCCTAACCCTAACCC        AF777-A7----<A7---JF7-77JFA-7-JJ77<-JJ7-A-JA7-7-FF<-A-JFA7A-JAF<F-JA7-7-FA7-F-JJJJFJJJJJJJJJJJFJJJJJFJJJJFFFAA        NM:i:8        MD:Z:5A5A3T13A11A5A11A11A38        AS:i:70        XS:i:66        RG:Z:L008
E00500:309:HTTVJCCXY:8:2114:4665:54401|GTTCTCTT        147        chr1        10034        0        28S65M        =        10039        -60        CCCTCCCCGACCCTCTCCCCATCCCTTCCCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTA        J77--A-7-AF7F-7--AA7<-F777---J<7A<JJF<AAJJF<FAJJJJJFJJJJJJJJJJJJJJJJJJJJJJJJJJJJFAJJJJFFFFFAA        NM:i:0        MD:Z:65        AS:i:65        XS:i:66        RG:Z:L008
E00500:309:HTTVJCCXY:8:2101:13991:49039|TTTTACCC        163        chr1        10035        0        8S69M5S        =        10337        434        CAGAGGTTCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCCAACCCTAACCCTAACCCTCACCC        AAFFFJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJFJJJ<<JFJJ<<JAJJ-7<-FF-77-AJ-<7-77-7AA<J        NM:i:1        MD:Z:50T18        AS:i:64        XS:i:69        RG:Z:L008
E00500:309:HTTVJCCXY:8:1104:21227:10908|ATCTCTAT        147        chr1        10035        0        76M11S        =        10036        -75        CCCAACCCTAACCCTAACCCTAACCCCAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCAAATAAGGAGATC        A7-7-F<7---7FF<7-<<<77-FAA-JFJF<-FJJFF-F-FF7<JFFJF<FJJFF-7AJJJJFAFJF7JAJJJFAAAJ<JJAAF<A        NM:i:2        MD:Z:2T23T49        AS:i:68        XS:i:66        RG:Z:L008
E00500:309:HTTVJCCXY:8:1104:21227:10908|ATCTCTAT        99        chr1        10036        0        75M67S        =        10035        75        CTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCAAACAAGAACACCAGATCAAACCAGAACCCGAATGATTACCAGAAACTTATCCATCTCGGATCCCGTCT        JFJJJFJJ<FAJJJFJJJFJJFJJJJFFJ<JFFJJJJJJFAFJJAAJAF<AAAJ<FAJJJJ<AJ7-AAFJ7<--<F---<AA-7-A7--7A-<F-----7--A-<--------7--7-A7-A<-7---7--7----7-77-7        NM:i:0        MD:Z:75        AS:i:75        XS:i:74        RG:Z:L008
E00500:309:HTTVJCCXY:8:1105:9597:20858|TTATTCCG        163        chr1        10037        0        2S61M        =        10123        124        TTTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAAACCT        AAFFFJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJFJJJJJFJJJ7<-FJ<7A7AF----FA<        NM:i:1        MD:Z:57C3        AS:i:57        XS:i:60        RG:Z:L008




chr1        10010        10011        rs7520386        0        +
chr1        10050        10051        rs7532151        0        +
chr1        107441475        107441476        rs776284        0        +
chr1        160816879        160816880        rs560681        0        +
chr1        233312666        233312667        rs1294331        0        +
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-11 21:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表