亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問板塊 發(fā)新帖
查看: 4463 | 回復(fù): 13
打印 上一主題 下一主題

[C++] 求一個(gè)C++的程序 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-02-15 14:19 |只看該作者 |倒序?yàn)g覽
大家好,小弟想求一個(gè)C++的程序.
我有一個(gè)文件,文件個(gè)格式如下:
@SQ SN:nscaf2324    LN:4899
@SQ SN:nscaf2330    LN:4427964
@SQ SN:nscaf2334    LN:32794
@SQ SN:nscaf2342    LN:35814
@SQ SN:nscaf2359    LN:15702
@SQ SN:nscaf2360    LN:32575
@SQ SN:nscaf2366    LN:78871
@SQ SN:nscaf2371    LN:15464
@SQ SN:nscaf2378    LN:1353
@SQ SN:nscaf2385    LN:25118
@SQ SN:nscaf2398    LN:775432
@SQ SN:nscaf2403    LN:7386
@SQ SN:nscaf2408    LN:34506
@SQ SN:nscaf2421    LN:2483
HWI-ST507:18916A7ACXX:2:2105:18552:106051b    16  scaffold9999    293 255 36M *   0   0   CCTGCGTCGCCTGTACCTGCGTGCAAAGCTTCTACA    BB@;@;5><<,>>,(;2BBBCDCCCCAACEDB?BDA    NM:i:0  MD:Z:36
HWI-ST507:18916A7ACXX:2:2105:18552:106051b    17  scaffold9999    293 255 36M *   0   0   CCTGCGTCGCCTGTACCTGCGTGCAAAGCTTCTACA    BB@;@;5><<,>>,(;2BBBCDCCCCAACEDB?BDA    NM:i:0  MD:Z:36
HWI-ST507:18916A7ACXX:2:2105:18552:106051b    18  scaffold9999    293 255 36M *   0   0   CCTGCGTCGCCTGTACCTGCGTGCAAAGCTTCTACA    BB@;@;5><<,>>,(;2BBBCDCCCCAACEDB?BDA    NM:i:0  MD:Z:36
HWI-ST507:18916A7ACXX:2:2105:18552:106051b    19  scaffold9999    293 255 36M *   0   0   CCTGCGTCGCCTGTACCTGCGTGCAAAGCTTCTACA    BB@;@;5><<,>>,(;2BBBCDCCCCAACEDB?BDA    NM:i:0  MD:Z:36
HWI-ST507:18916A7ACXX:2:2105:18552:106051b    10  scaffold9999    293 255 36M *   0   0   CCTGCGTCGCCTGTACCTGCGTGCAAAGCTTCTACA    BB@;@;5><<,>>,(;2BBBCDCCCCAACEDB?BDA    NM:i:0  MD:Z:36
HWI-ST507:18916A7ACXX:2:2105:18552:106051b    11  scaffold9999    293 255 36M *   0   0   CCTGCGTCGCCTGTACCTGCGTGCAAAGCTTCTACA    BB@;@;5><<,>>,(;2BBBCDCCCCAACEDB?BDA    NM:i:0  MD:Z:36
HWI-ST507:18916A7ACXX:2:2105:18552:106051b    12  scaffold9999    293 255 36M *   0   0   CCTGCGTCGCCTGTACCTGCGTGCAAAGCTTCTACA    BB@;@;5><<,>>,(;2BBBCDCCCCAACEDB?BDA    NM:i:0  MD:Z:36
HWI-ST507:18916A7ACXX:2:2105:17454:113152a    0   scaffold9999    281 255 36M *   0   0   GTGCTCTCTGCTCCTGCGTCGCCTGTACCTGCGTGC    @BCFFFFFHHGHHJJJJJ@GDGGGHEGIIJIJBDHI    NM:i:2  MD:Z:1A4G29
HWI-ST507:18916A7ACXX:2:2105:4651:72095a  0   scaffold9999    293 255 36M *   0   0   CCTGCGTCGCCTGTACCTGCGTGCAGAGCTTCTGCA    @CCFFFFFHHHHHIIIIIIJGC@EGGHGIJIJGIIE    NM:i:2  MD:Z:25A7A2
HWI-ST507:18916A7ACXX:2:2105:5262:61025a  0   scaffold9999    308 255 36M *   0   0   CCTGCGTGCAAAGCTTCTGCATCGAGCACCGCAGCC    @@@FFDDDFHFHHFGGGGHECFHEHH>GGBHIGE<G    NM:i:1  MD:Z:18A17
HWI-ST507:189:D16A7ACXX:2:2105:7560:82822b  0   scaffold9999    302 255 36M *   0   0   CCTGTACCTGCGTGCAAAGCTTCTGCATCGAGCACC    IIGIHIJJJIHHDFFDECEDDDDDDDDDDDADDDDD    NM:i:1  MD:Z:24A11
HWI-ST507:189:D16A7ACXX:2:2105:1436:29632a  16  scaffold9999    33  255 36M *   0   0   CTTTTTCTTTGTCCTGTAGTAATCGCGCCGCATTGC    FCF8=C;FD?9FEFCFFEIFFFDF@?D;B?D@;?    NM:i:2  MD:Z:T32C2
HWI-ST507:189:D16A7ACXX:2:2105:2969:24612a  0   scaffold9999    514 255 36M *   0   0   GGACATGGAGGTCGACCTCGCCCCCGCCTCATCGAC    @@@DADDFDFF?DGI6?FEEDFHGD<?FFGHIHG7@    NM:i:1  MD:Z:3G32
HWI-ST507:189:D16A7ACXX:2:2105:14733:62299a 16  scaffold9999    514 255 36M *   0   0   GGACATGGAGGTCGACCTCGCCCCCGCCTCATCGAC    @>8DCCDDDD@BBC<BBBBCHGDDGHGHFFDDF@@<    NM:i:1  MD:Z:3G32
HWI-ST507:189:D16A7ACXX:2:2105:3364:73136b  16  scaffold9999    86  255 36M *   0   0   ACCGCTCAGGTCCGAGAAGTTGGGGCCTCGCCGCAA    ;BDD?ACC@DDDBCCCCCBB?B@88DDDBDDDDDDD    NM:i:1  MD:Z:9T26
HWI-ST507:189:D16A7ACXX:2:2105:3982:14275b  0   scaffold9999    86  255 36M *   0   0   ACCGCTCAGGTCCGAGAAGTTGGGGCCTCGCCGCAA    GGIIIEJIIIDCDA<<8<A>>>C@@?BBDDDDB@;;    NM:i:1  MD:Z:9T26
HWI-ST507:189:D16A7ACXX:2:2105:19999:75440a 16  scaffold9999    98  255 36M *   0   0   CGAGAAGTTGGGGCCTCGCCGCAAGGCGAGTGTTTT    GGHHHHCJJJHIHIIIJIJIIIJGHGHHFFFFF@@@    NM:i:0  MD:Z:36

前面14行,跟@SQ有關(guān)的行都不做處理。
對(duì)后面的跟HWI有關(guān)的行進(jìn)行處理。每一行的第一列是reads的名字。
reads的名字有可能在該文件中出現(xiàn)很多次。我想把出現(xiàn)了6次以上的reads所在的行都去除掉。
比如reads:HWI-ST507:189:D16A7ACXX:2:2105:18552:106051b
這條reads出現(xiàn)了7次,那么,所有含有該reads的行都刪除掉。
再次感謝

論壇徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉雞
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥豬
日期:2014-04-22 16:13:09獅子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53處女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
2 [報(bào)告]
發(fā)表于 2014-02-17 09:41 |只看該作者
本帖最后由 Herowinter 于 2014-02-17 09:44 編輯

回復(fù) 1# tanger_009
整個(gè)這一長(zhǎng)串
  1. HWI-ST507:189:D16A7ACXX:2:2105:18552:106051b
復(fù)制代碼
表示reads的名字?樓主好像少貼了文本?你給的文本里根本匹配不上后面的
18552:106051b。難道那個(gè)表情那里是
  1. :D
復(fù)制代碼
?

另外這種文本處理的問題C++不是太擅長(zhǎng),一般都是用Shell Perl Python
做的,你一定要用C++做?



   

論壇徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉雞
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥豬
日期:2014-04-22 16:13:09獅子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53處女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
3 [報(bào)告]
發(fā)表于 2014-02-17 09:55 |只看該作者
本帖最后由 Herowinter 于 2014-02-17 10:32 編輯

回復(fù) 1# tanger_009
給個(gè)awk的吧,要讀兩次源文件,第一次記錄reads出現(xiàn)的次數(shù),
第二次打印對(duì)應(yīng)的行,把i改為你待處理的文件名即可。
  1. awk 'NR==FNR{if($1!~/@SQ/)a[$1]++;next} {if($1~/@SQ/){print}else if(a[$1]<=6)print}' i i
復(fù)制代碼
結(jié)果
  1. @SQ SN:nscaf2324    LN:4899
  2. @SQ SN:nscaf2330    LN:4427964
  3. @SQ SN:nscaf2334    LN:32794
  4. @SQ SN:nscaf2342    LN:35814
  5. @SQ SN:nscaf2359    LN:15702
  6. @SQ SN:nscaf2360    LN:32575
  7. @SQ SN:nscaf2366    LN:78871
  8. @SQ SN:nscaf2371    LN:15464
  9. @SQ SN:nscaf2378    LN:1353
  10. @SQ SN:nscaf2385    LN:25118
  11. @SQ SN:nscaf2398    LN:775432
  12. @SQ SN:nscaf2403    LN:7386
  13. @SQ SN:nscaf2408    LN:34506
  14. @SQ SN:nscaf2421    LN:2483
  15. HWI-ST507:189:D16A7ACXX:2:2105:17454:113152a    0   scaffold9999    281 255 36M *   0   0   GTGCTCTCTGCTCCTGCGTCGCCTGTACCTGCGTGC    @BCFFFFFHHGHHJJJJJ@GDGGGHEGIIJIJBDHI    NM:i:2  MD:Z:1A4G29
  16. HWI-ST507:189:D16A7ACXX:2:2105:4651:72095a  0   scaffold9999    293 255 36M *   0   0   CCTGCGTCGCCTGTACCTGCGTGCAGAGCTTCTGCA    @CCFFFFFHHHHHIIIIIIJGC@EGGHGIJIJGIIE    NM:i:2  MD:Z:25A7A2
  17. HWI-ST507:189:D16A7ACXX:2:2105:5262:61025a  0   scaffold9999    308 255 36M *   0   0   CCTGCGTGCAAAGCTTCTGCATCGAGCACCGCAGCC    @@@FFDDDFHFHHFGGGGHECFHEHH>GGBHIGE<G    NM:i:1  MD:Z:18A17
  18. HWI-ST507:189:D16A7ACXX:2:2105:7560:82822b  0   scaffold9999    302 255 36M *   0   0   CCTGTACCTGCGTGCAAAGCTTCTGCATCGAGCACC    IIGIHIJJJIHHDFFDECEDDDDDDDDDDDADDDDD    NM:i:1  MD:Z:24A11
  19. HWI-ST507:189:D16A7ACXX:2:2105:1436:29632a  16  scaffold9999    33  255 36M *   0   0   CTTTTTCTTTGTCCTGTAGTAATCGCGCCGCATTGC    FCF8=C;FD?9FEFCFFEIFFFDF@?D;B?D@;?    NM:i:2  MD:Z:T32C2
  20. HWI-ST507:189:D16A7ACXX:2:2105:2969:24612a  0   scaffold9999    514 255 36M *   0   0   GGACATGGAGGTCGACCTCGCCCCCGCCTCATCGAC    @@@DADDFDFF?DGI6?FEEDFHGD<?FFGHIHG7@    NM:i:1  MD:Z:3G32
  21. HWI-ST507:189:D16A7ACXX:2:2105:14733:62299a 16  scaffold9999    514 255 36M *   0   0   GGACATGGAGGTCGACCTCGCCCCCGCCTCATCGAC    @>8DCCDDDD@BBC<BBBBCHGDDGHGHFFDDF@@<    NM:i:1  MD:Z:3G32
  22. HWI-ST507:189:D16A7ACXX:2:2105:3364:73136b  16  scaffold9999    86  255 36M *   0   0   ACCGCTCAGGTCCGAGAAGTTGGGGCCTCGCCGCAA    ;BDD?ACC@DDDBCCCCCBB?B@88DDDBDDDDDDD    NM:i:1  MD:Z:9T26
  23. HWI-ST507:189:D16A7ACXX:2:2105:3982:14275b  0   scaffold9999    86  255 36M *   0   0   ACCGCTCAGGTCCGAGAAGTTGGGGCCTCGCCGCAA    GGIIIEJIIIDCDA<<8<A>>>C@@?BBDDDDB@;;    NM:i:1  MD:Z:9T26
  24. HWI-ST507:189:D16A7ACXX:2:2105:19999:75440a 16  scaffold9999    98  255 36M *   0   0   CGAGAAGTTGGGGCCTCGCCGCAAGGCGAGTGTTTT    GGHHHHCJJJHIHIIIJIJIIIJGHGHHFFFFF@@@    NM:i:0  MD:Z:36
復(fù)制代碼

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2014-02-17 11:06 |只看該作者
謝謝大俠啊
我開始寫了個(gè)perl處理,但是由于文件太大(1T+),perl建哈希太耗內(nèi)存。
所以想C++
Thanks again

論壇徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉雞
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥豬
日期:2014-04-22 16:13:09獅子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53處女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
5 [報(bào)告]
發(fā)表于 2014-02-17 11:20 |只看該作者
本帖最后由 Herowinter 于 2014-02-17 11:23 編輯

回復(fù) 4# tanger_009

1T+ ,那我上面的代碼應(yīng)該也不行吧,
我用的awk也是哈希數(shù)組啊。

標(biāo)題上最好注明大文件(1T),要不常規(guī)方法
好像有問題。


   

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2014-02-17 11:32 |只看該作者

RE: 求一個(gè)C++的程序處理1T大的文件

回復(fù) 5# Herowinter

那該腫么辦呢?

   

論壇徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉雞
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥豬
日期:2014-04-22 16:13:09獅子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53處女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
7 [報(bào)告]
發(fā)表于 2014-02-17 11:36 |只看該作者
回復(fù) 6# tanger_009
1T,真心不會(huì)處理。要不你可以到Shell版本
發(fā)一個(gè)差不多的帖子問一下,那里擅長(zhǎng)文本
處理的高手比較多。


   

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2014-02-17 14:55 |只看該作者
不知道你這個(gè)重復(fù)率是怎么樣的,就是說大多數(shù)的reads都會(huì)出現(xiàn)6次以上,還是極少數(shù)出現(xiàn)6次以上,就是說目標(biāo)文件是和現(xiàn)有源文件會(huì)差不多大,還是會(huì)小很多。
我剛才用你的源文件復(fù)制了100多萬次,生成一個(gè)10G的文件,但這個(gè)重復(fù)比很高的,使用如下命令先一次找到所有出現(xiàn)6次以上的記錄下來(如果是源文件中出現(xiàn)6次以上的reads占多數(shù),這里就記錄6次以上的,如果情況相反就記錄6次以內(nèi)的)記到一個(gè)文件里。
最后再做一步grep得出結(jié)果,時(shí)間主要消耗在sort上,但是我在cygwin里做的,觀察CPU和內(nèi)存使用率都可以。1T的文件我這里沒有那么多空間,單位的服務(wù)器我能接觸的全是測(cè)試環(huán)境,文件使用率都是很緊迫的,所以也沒辦法,只能測(cè)10G了,你看看有效果么,我閑了會(huì)看看C怎么實(shí)現(xiàn),Sorry不會(huì)OO語言
  1. $ du -sh *
  2. 11G     test.txt

  3. $ wc -l test.txt
  4. 58412354 test.txt

  5. $ time cut -d' ' -f1 test.txt |sort -s|uniq -c|sort -nrk1|awk '$1!~/^[0-5]$/{print $2}'
  6. HWI-ST507:18916A7ACXX:2:2105:18552:106051b
  7. HWI-ST507:18916A7ACXX:2:2105:5262:61025a
  8. HWI-ST507:18916A7ACXX:2:2105:4651:72095a
  9. HWI-ST507:18916A7ACXX:2:2105:17454:113152a
  10. HWI-ST507:189:D16A7ACXX:2:2105:7560:82822b
  11. HWI-ST507:189:D16A7ACXX:2:2105:3982:14275b
  12. HWI-ST507:189:D16A7ACXX:2:2105:3364:73136b
  13. HWI-ST507:189:D16A7ACXX:2:2105:2969:24612a
  14. HWI-ST507:189:D16A7ACXX:2:2105:19999:75440a
  15. HWI-ST507:189:D16A7ACXX:2:2105:14733:62299a
  16. HWI-ST507:189:D16A7ACXX:2:2105:1436:29632a
  17. @SQ

  18. real    55m19.464s
  19. user    53m19.593s
  20. sys     0m31.883s

  21. $ cat delete.txt
  22. HWI-ST507:18916A7ACXX:2:2105:18552:106051b
  23. HWI-ST507:18916A7ACXX:2:2105:5262:61025a
  24. HWI-ST507:18916A7ACXX:2:2105:4651:72095a
  25. HWI-ST507:18916A7ACXX:2:2105:17454:113152a
  26. HWI-ST507:189:D16A7ACXX:2:2105:7560:82822b
  27. HWI-ST507:189:D16A7ACXX:2:2105:3982:14275b
  28. HWI-ST507:189:D16A7ACXX:2:2105:3364:73136b
  29. HWI-ST507:189:D16A7ACXX:2:2105:2969:24612a
  30. HWI-ST507:189:D16A7ACXX:2:2105:19999:75440a
  31. HWI-ST507:189:D16A7ACXX:2:2105:14733:62299a
  32. HWI-ST507:189:D16A7ACXX:2:2105:1436:29632a

  33. $ time grep -v -f delete.txt test.txt
  34. @SQ SN:nscaf2324    LN:4899
  35. @SQ SN:nscaf2330    LN:4427964
  36. @SQ SN:nscaf2334    LN:32794
  37. @SQ SN:nscaf2342    LN:35814
  38. @SQ SN:nscaf2359    LN:15702
  39. @SQ SN:nscaf2360    LN:32575
  40. @SQ SN:nscaf2366    LN:78871
  41. @SQ SN:nscaf2371    LN:15464
  42. @SQ SN:nscaf2378    LN:1353
  43. @SQ SN:nscaf2385    LN:25118
  44. @SQ SN:nscaf2398    LN:775432
  45. @SQ SN:nscaf2403    LN:7386
  46. @SQ SN:nscaf2408    LN:34506
  47. @SQ SN:nscaf2421    LN:2483

  48. real    2m40.786s
  49. user    1m30.121s
  50. sys     0m8.985s
復(fù)制代碼

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2014-02-18 03:41 |只看該作者
回復(fù) 8# runintostar


    謝謝您的幫助!我試試看~

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2014-02-18 16:27 |只看該作者
Hi,寫了個(gè)C的小程序,Sorry我沒做過專業(yè)C開發(fā),代碼糟爛請(qǐng)見諒,共讀兩次文件,處理昨天那個(gè)11G的文件,先找到不輸出的,最后輸出,加一起9mins.
不知道你輸出時(shí)可不可以亂序,亂序的話多線程可能更快點(diǎn)。
  1. $ time ./a.exe ../tmp/test/test.txt
  2. i=0;14: @SQ
  3. i=1;24052116:   HWI-ST507:18916A7ACXX:2:2105:18552:106051b
  4. i=2;3436017:    HWI-ST507:18916A7ACXX:2:2105:17454:113152a
  5. i=3;3436016:    HWI-ST507:18916A7ACXX:2:2105:4651:72095a
  6. i=4;3436017:    HWI-ST507:18916A7ACXX:2:2105:5262:61025a
  7. i=5;3436017:    HWI-ST507:189:D16A7ACXX:2:2105:7560:82822b
  8. i=6;3436016:    HWI-ST507:189:D16A7ACXX:2:2105:1436:29632a
  9. i=7;3436016:    HWI-ST507:189:D16A7ACXX:2:2105:2969:24612a
  10. i=8;3436017:    HWI-ST507:189:D16A7ACXX:2:2105:14733:62299a
  11. i=9;3436017:    HWI-ST507:189:D16A7ACXX:2:2105:3364:73136b
  12. i=10;3436016:   HWI-ST507:189:D16A7ACXX:2:2105:3982:14275b
  13. i=11;3436017:   HWI-ST507:189:D16A7ACXX:2:2105:19999:75440a
  14. i=12;1: HWI-ST507:189:D16A7ACXX:2:2105:14733:51733a
  15. @SQ
  16. @SQ
  17. @SQ
  18. @SQ
  19. @SQ
  20. @SQ
  21. @SQ
  22. @SQ
  23. @SQ
  24. @SQ
  25. @SQ
  26. @SQ
  27. @SQ
  28. @SQ
  29. HWI-ST507:189:D16A7ACXX:2:2105:14733:51733a

  30. real    9m59.714s
  31. user    5m48.443s
  32. sys     2m36.889s
復(fù)制代碼
  1. $ cat fileprocess.c
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <pthread.h>

  6. #define BASE 1000
  7. #define INC 1000
  8. #define LOADBUFFERSIZE 1000000

  9. typedef struct key
  10. {
  11.         char* reads;
  12.         int num;
  13.         pthread_mutex_t mutex;
  14. } key;

  15. int arraylength;
  16. pthread_mutex_t mutex_array;
  17. key** keyarray;
  18. char** loadbuffer;

  19. int arrayinc()
  20. {
  21.         int i;
  22.         pthread_mutex_lock(&(mutex_array));
  23.         keyarray=realloc(keyarray,(arraylength+INC)*sizeof(key*));
  24.         arraylength+=INC;
  25.         for(i=arraylength-INC;i<arraylength;i++)
  26.         {
  27.                 keyarray[i]=calloc(1,sizeof(key));
  28.                 keyarray[i]->reads=NULL;
  29.                 keyarray[i]->num=0;
  30.                 pthread_mutex_init(&(keyarray[i]->mutex), NULL);
  31.         }
  32.         pthread_mutex_unlock(&(mutex_array));
  33.         return 0;
  34. }

  35. int search_reads(char* str)
  36. {
  37.         int i=0;
  38.         while(keyarray[i]->reads!=NULL&&i<arraylength)
  39.         {
  40.                 if(strcmp(keyarray[i]->reads,str)==0)
  41.                 {
  42.                         pthread_mutex_lock(&(keyarray[i]->mutex));
  43.                         keyarray[i]->num+=1;
  44.                         pthread_mutex_unlock(&(keyarray[i]->mutex));
  45.                         return 0;
  46.                 }
  47.                 i++;
  48.         }
  49.         if(i==arraylength)
  50.                 arrayinc;
  51.         keyarray[i]->reads=calloc(1,sizeof(char)*strlen(str));
  52.         strcpy(keyarray[i]->reads,str);
  53.         keyarray[i]->num=+1;
  54.         return 0;
  55. }

  56. int just_search_reads(char* str)
  57. {
  58.         int i=0;
  59.         while(keyarray[i]->reads!=NULL&&i<arraylength)
  60.         {
  61.                 if(strcmp(keyarray[i]->reads,str)==0)
  62.                 {
  63.                         if(keyarray[i]->num>5)
  64.                         return 1;
  65.                 }
  66.                 i++;
  67.         }
  68.         return 0;
  69. }

  70. void* peer_process(void* inum)
  71. {
  72.         int i,num;
  73.         num=*((int*)inum);
  74.         char* token;
  75. //      printf("I am thread %d\n",num+1);
  76.         for(i=LOADBUFFERSIZE/8*num;i<LOADBUFFERSIZE/8*(num+1);i++)
  77.         {
  78.                 if(loadbuffer[i]==NULL)
  79.                         return;
  80.                 token=strtok(loadbuffer[i]," \t");
  81.                 if(token == NULL)
  82.                         continue;
  83.                 search_reads(token);
  84.         }
  85.         return;
  86. }

  87. int main(int argc, char** argv)
  88. {
  89.         pthread_t id1;
  90.         pthread_t id2;
  91.         pthread_t id3;
  92.         pthread_t id4;
  93.         pthread_t id5;
  94.         pthread_t id6;
  95.         pthread_t id7;
  96.         pthread_t id8;
  97.         int i,j,ret;
  98.         int* a[8];
  99.         char buffer[1024];
  100.         char* token;
  101.         for(i=0;i<8;i++)
  102.         {
  103.                 a[i]=calloc(1,sizeof(int));
  104.                 *(a[i])=i;
  105.         }
  106.         if(argc!=2)
  107.         {
  108.                 fprintf(stderr,"Usage:xxx filepath\n");
  109.                 return 1;
  110.         }
  111.         arraylength=BASE;
  112.         keyarray=calloc(BASE,sizeof(key*));
  113.         pthread_mutex_init(&(mutex_array), NULL);
  114.         for(i=0;i<arraylength;i++)
  115.         {
  116.                 keyarray[i]=calloc(1,sizeof(key));
  117.                 keyarray[i]->reads=NULL;
  118.                 keyarray[i]->num=0;
  119.                 pthread_mutex_init(&(keyarray[i]->mutex), NULL);
  120.         }
  121.         FILE* fp=fopen(argv[1],"r");
  122.         if(fp==NULL)
  123.                 exit(1);
  124.         while(!feof(fp))
  125.         {
  126.                 i=0;
  127.                 loadbuffer=calloc(LOADBUFFERSIZE,sizeof(char*));
  128.                 while(fgets(buffer,1000,fp)&&i<LOADBUFFERSIZE)
  129.                 {
  130.                         loadbuffer[i]=calloc(strlen(buffer),sizeof(char));
  131.                         strcpy(loadbuffer[i++],buffer);
  132.                         memset(buffer,0,1024);
  133.                 }
  134.                 ret=pthread_create(&id1,NULL, (void*)peer_process,(void*)a[0]);
  135.                 ret=pthread_create(&id2,NULL, (void*)peer_process,(void*)a[1]);
  136.                 ret=pthread_create(&id3,NULL, (void*)peer_process,(void*)a[2]);
  137.                 ret=pthread_create(&id4,NULL, (void*)peer_process,(void*)a[3]);
  138.                 ret=pthread_create(&id5,NULL, (void*)peer_process,(void*)a[4]);
  139.                 ret=pthread_create(&id6,NULL, (void*)peer_process,(void*)a[5]);
  140.                 ret=pthread_create(&id7,NULL, (void*)peer_process,(void*)a[6]);
  141.                 ret=pthread_create(&id8,NULL, (void*)peer_process,(void*)a[7]);
  142.                 if(ret!=0){
  143.                         printf ("Create pthread error!\n");
  144.                         return 1;
  145.                 }
  146.                 pthread_join(id1,NULL);
  147.                 pthread_join(id2,NULL);
  148.                 pthread_join(id3,NULL);
  149.                 pthread_join(id4,NULL);
  150.                 pthread_join(id5,NULL);
  151.                 pthread_join(id6,NULL);
  152.                 pthread_join(id7,NULL);
  153.                 pthread_join(id8,NULL);
  154.                 for(i=0;i<LOADBUFFERSIZE;i++)
  155.                         free(loadbuffer[i]);
  156.                 free(loadbuffer);
  157.         }
  158.         fclose(fp);
  159.         for(i=0;i<arraylength;i++)
  160.         {
  161.                 if(keyarray[i]->num==0)
  162.                 {
  163.                         break;
  164.                 }
  165.                 printf ("i=%d;%d:\t%s\n",i,keyarray[i]->num,keyarray[i]->reads);
  166.         }
  167.         fp=fopen(argv[1],"r");
  168.         if(fp==NULL)
  169.                 exit(1);
  170.         while(!feof(fp))
  171.         {
  172.                 if(fgets(buffer,1000,fp))
  173.                 {
  174.                         token=strtok(buffer," \t");
  175.                         if(just_search_reads(token)==0||strcmp(token,"@SQ")==0)
  176.                         puts(buffer);
  177.                         memset(buffer,0,1024);
  178.                 }
  179.         }
  180.         fclose(fp);
  181.         return 0;
  182. }
復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP