bio-velvet_underground 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (286) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.gitmodules +3 -0
  4. data/.travis.yml +13 -0
  5. data/Gemfile +19 -0
  6. data/LICENSE.txt +20 -0
  7. data/README.md +53 -0
  8. data/Rakefile +51 -0
  9. data/VERSION +1 -0
  10. data/ext/bioruby.patch +60 -0
  11. data/ext/mkrf_conf.rb +50 -0
  12. data/ext/src/Makefile +125 -0
  13. data/ext/src/src/allocArray.c +305 -0
  14. data/ext/src/src/allocArray.h +86 -0
  15. data/ext/src/src/autoOpen.c +107 -0
  16. data/ext/src/src/autoOpen.h +18 -0
  17. data/ext/src/src/binarySequences.c +813 -0
  18. data/ext/src/src/binarySequences.h +125 -0
  19. data/ext/src/src/concatenatedGraph.c +233 -0
  20. data/ext/src/src/concatenatedGraph.h +30 -0
  21. data/ext/src/src/concatenatedPreGraph.c +262 -0
  22. data/ext/src/src/concatenatedPreGraph.h +29 -0
  23. data/ext/src/src/correctedGraph.c +2642 -0
  24. data/ext/src/src/correctedGraph.h +32 -0
  25. data/ext/src/src/dfib.c +509 -0
  26. data/ext/src/src/dfib.h +69 -0
  27. data/ext/src/src/dfibHeap.c +89 -0
  28. data/ext/src/src/dfibHeap.h +39 -0
  29. data/ext/src/src/dfibpriv.h +105 -0
  30. data/ext/src/src/fib.c +628 -0
  31. data/ext/src/src/fib.h +78 -0
  32. data/ext/src/src/fibHeap.c +79 -0
  33. data/ext/src/src/fibHeap.h +41 -0
  34. data/ext/src/src/fibpriv.h +110 -0
  35. data/ext/src/src/globals.h +153 -0
  36. data/ext/src/src/graph.c +3983 -0
  37. data/ext/src/src/graph.h +233 -0
  38. data/ext/src/src/graphReConstruction.c +1472 -0
  39. data/ext/src/src/graphReConstruction.h +30 -0
  40. data/ext/src/src/graphStats.c +2167 -0
  41. data/ext/src/src/graphStats.h +72 -0
  42. data/ext/src/src/kmer.c +652 -0
  43. data/ext/src/src/kmer.h +73 -0
  44. data/ext/src/src/kmerOccurenceTable.c +236 -0
  45. data/ext/src/src/kmerOccurenceTable.h +44 -0
  46. data/ext/src/src/kseq.h +223 -0
  47. data/ext/src/src/locallyCorrectedGraph.c +557 -0
  48. data/ext/src/src/locallyCorrectedGraph.h +40 -0
  49. data/ext/src/src/passageMarker.c +677 -0
  50. data/ext/src/src/passageMarker.h +137 -0
  51. data/ext/src/src/preGraph.c +1717 -0
  52. data/ext/src/src/preGraph.h +106 -0
  53. data/ext/src/src/preGraphConstruction.c +990 -0
  54. data/ext/src/src/preGraphConstruction.h +26 -0
  55. data/ext/src/src/readCoherentGraph.c +557 -0
  56. data/ext/src/src/readCoherentGraph.h +30 -0
  57. data/ext/src/src/readSet.c +1734 -0
  58. data/ext/src/src/readSet.h +67 -0
  59. data/ext/src/src/recycleBin.c +199 -0
  60. data/ext/src/src/recycleBin.h +58 -0
  61. data/ext/src/src/roadMap.c +342 -0
  62. data/ext/src/src/roadMap.h +65 -0
  63. data/ext/src/src/run.c +318 -0
  64. data/ext/src/src/run.h +52 -0
  65. data/ext/src/src/run2.c +712 -0
  66. data/ext/src/src/scaffold.c +1876 -0
  67. data/ext/src/src/scaffold.h +64 -0
  68. data/ext/src/src/shortReadPairs.c +1243 -0
  69. data/ext/src/src/shortReadPairs.h +32 -0
  70. data/ext/src/src/splay.c +259 -0
  71. data/ext/src/src/splay.h +43 -0
  72. data/ext/src/src/splayTable.c +1315 -0
  73. data/ext/src/src/splayTable.h +31 -0
  74. data/ext/src/src/tightString.c +362 -0
  75. data/ext/src/src/tightString.h +82 -0
  76. data/ext/src/src/utility.c +199 -0
  77. data/ext/src/src/utility.h +98 -0
  78. data/ext/src/third-party/zlib-1.2.3/ChangeLog +855 -0
  79. data/ext/src/third-party/zlib-1.2.3/FAQ +339 -0
  80. data/ext/src/third-party/zlib-1.2.3/INDEX +51 -0
  81. data/ext/src/third-party/zlib-1.2.3/Makefile +154 -0
  82. data/ext/src/third-party/zlib-1.2.3/Makefile.in +154 -0
  83. data/ext/src/third-party/zlib-1.2.3/README +125 -0
  84. data/ext/src/third-party/zlib-1.2.3/adler32.c +149 -0
  85. data/ext/src/third-party/zlib-1.2.3/algorithm.txt +209 -0
  86. data/ext/src/third-party/zlib-1.2.3/amiga/Makefile.pup +66 -0
  87. data/ext/src/third-party/zlib-1.2.3/amiga/Makefile.sas +65 -0
  88. data/ext/src/third-party/zlib-1.2.3/as400/bndsrc +132 -0
  89. data/ext/src/third-party/zlib-1.2.3/as400/compile.clp +123 -0
  90. data/ext/src/third-party/zlib-1.2.3/as400/readme.txt +111 -0
  91. data/ext/src/third-party/zlib-1.2.3/as400/zlib.inc +331 -0
  92. data/ext/src/third-party/zlib-1.2.3/compress.c +79 -0
  93. data/ext/src/third-party/zlib-1.2.3/configure +459 -0
  94. data/ext/src/third-party/zlib-1.2.3/contrib/README.contrib +71 -0
  95. data/ext/src/third-party/zlib-1.2.3/contrib/ada/buffer_demo.adb +106 -0
  96. data/ext/src/third-party/zlib-1.2.3/contrib/ada/mtest.adb +156 -0
  97. data/ext/src/third-party/zlib-1.2.3/contrib/ada/read.adb +156 -0
  98. data/ext/src/third-party/zlib-1.2.3/contrib/ada/readme.txt +65 -0
  99. data/ext/src/third-party/zlib-1.2.3/contrib/ada/test.adb +463 -0
  100. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-streams.adb +225 -0
  101. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-streams.ads +114 -0
  102. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-thin.adb +141 -0
  103. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-thin.ads +450 -0
  104. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib.adb +701 -0
  105. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib.ads +328 -0
  106. data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib.gpr +20 -0
  107. data/ext/src/third-party/zlib-1.2.3/contrib/asm586/README.586 +43 -0
  108. data/ext/src/third-party/zlib-1.2.3/contrib/asm586/match.S +364 -0
  109. data/ext/src/third-party/zlib-1.2.3/contrib/asm686/README.686 +34 -0
  110. data/ext/src/third-party/zlib-1.2.3/contrib/asm686/match.S +329 -0
  111. data/ext/src/third-party/zlib-1.2.3/contrib/blast/Makefile +8 -0
  112. data/ext/src/third-party/zlib-1.2.3/contrib/blast/README +4 -0
  113. data/ext/src/third-party/zlib-1.2.3/contrib/blast/blast.c +444 -0
  114. data/ext/src/third-party/zlib-1.2.3/contrib/blast/blast.h +71 -0
  115. data/ext/src/third-party/zlib-1.2.3/contrib/blast/test.pk +0 -0
  116. data/ext/src/third-party/zlib-1.2.3/contrib/blast/test.txt +1 -0
  117. data/ext/src/third-party/zlib-1.2.3/contrib/delphi/ZLib.pas +557 -0
  118. data/ext/src/third-party/zlib-1.2.3/contrib/delphi/ZLibConst.pas +11 -0
  119. data/ext/src/third-party/zlib-1.2.3/contrib/delphi/readme.txt +76 -0
  120. data/ext/src/third-party/zlib-1.2.3/contrib/delphi/zlibd32.mak +93 -0
  121. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib.build +33 -0
  122. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib.chm +0 -0
  123. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib.sln +21 -0
  124. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/AssemblyInfo.cs +58 -0
  125. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/ChecksumImpl.cs +202 -0
  126. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/CircularBuffer.cs +83 -0
  127. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/CodecBase.cs +198 -0
  128. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/Deflater.cs +106 -0
  129. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/DotZLib.cs +288 -0
  130. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/DotZLib.csproj +141 -0
  131. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/GZipStream.cs +301 -0
  132. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/Inflater.cs +105 -0
  133. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/UnitTests.cs +274 -0
  134. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/LICENSE_1_0.txt +23 -0
  135. data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/readme.txt +58 -0
  136. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/README +1 -0
  137. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/infback9.c +608 -0
  138. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/infback9.h +37 -0
  139. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inffix9.h +107 -0
  140. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inflate9.h +47 -0
  141. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inftree9.c +323 -0
  142. data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inftree9.h +55 -0
  143. data/ext/src/third-party/zlib-1.2.3/contrib/inflate86/inffas86.c +1157 -0
  144. data/ext/src/third-party/zlib-1.2.3/contrib/inflate86/inffast.S +1368 -0
  145. data/ext/src/third-party/zlib-1.2.3/contrib/iostream/test.cpp +24 -0
  146. data/ext/src/third-party/zlib-1.2.3/contrib/iostream/zfstream.cpp +329 -0
  147. data/ext/src/third-party/zlib-1.2.3/contrib/iostream/zfstream.h +128 -0
  148. data/ext/src/third-party/zlib-1.2.3/contrib/iostream2/zstream.h +307 -0
  149. data/ext/src/third-party/zlib-1.2.3/contrib/iostream2/zstream_test.cpp +25 -0
  150. data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/README +35 -0
  151. data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/TODO +17 -0
  152. data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/test.cc +50 -0
  153. data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/zfstream.cc +479 -0
  154. data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/zfstream.h +466 -0
  155. data/ext/src/third-party/zlib-1.2.3/contrib/masm686/match.asm +413 -0
  156. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/bld_ml64.bat +2 -0
  157. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/gvmat64.asm +513 -0
  158. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/gvmat64.obj +0 -0
  159. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/inffas8664.c +186 -0
  160. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/inffasx64.asm +392 -0
  161. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/inffasx64.obj +0 -0
  162. data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/readme.txt +28 -0
  163. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/bld_ml32.bat +2 -0
  164. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/gvmat32.asm +972 -0
  165. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/gvmat32.obj +0 -0
  166. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/gvmat32c.c +62 -0
  167. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/inffas32.asm +1083 -0
  168. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/inffas32.obj +0 -0
  169. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/mkasm.bat +3 -0
  170. data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/readme.txt +21 -0
  171. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/ChangeLogUnzip +67 -0
  172. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/Makefile +25 -0
  173. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/crypt.h +132 -0
  174. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/ioapi.c +177 -0
  175. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/ioapi.h +75 -0
  176. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/iowin32.c +270 -0
  177. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/iowin32.h +21 -0
  178. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/miniunz.c +585 -0
  179. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/minizip.c +420 -0
  180. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/mztools.c +281 -0
  181. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/mztools.h +31 -0
  182. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/unzip.c +1598 -0
  183. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/unzip.h +354 -0
  184. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/zip.c +1219 -0
  185. data/ext/src/third-party/zlib-1.2.3/contrib/minizip/zip.h +235 -0
  186. data/ext/src/third-party/zlib-1.2.3/contrib/pascal/example.pas +599 -0
  187. data/ext/src/third-party/zlib-1.2.3/contrib/pascal/readme.txt +76 -0
  188. data/ext/src/third-party/zlib-1.2.3/contrib/pascal/zlibd32.mak +93 -0
  189. data/ext/src/third-party/zlib-1.2.3/contrib/pascal/zlibpas.pas +236 -0
  190. data/ext/src/third-party/zlib-1.2.3/contrib/puff/Makefile +8 -0
  191. data/ext/src/third-party/zlib-1.2.3/contrib/puff/README +63 -0
  192. data/ext/src/third-party/zlib-1.2.3/contrib/puff/puff.c +837 -0
  193. data/ext/src/third-party/zlib-1.2.3/contrib/puff/puff.h +31 -0
  194. data/ext/src/third-party/zlib-1.2.3/contrib/puff/zeros.raw +0 -0
  195. data/ext/src/third-party/zlib-1.2.3/contrib/testzlib/testzlib.c +275 -0
  196. data/ext/src/third-party/zlib-1.2.3/contrib/testzlib/testzlib.txt +10 -0
  197. data/ext/src/third-party/zlib-1.2.3/contrib/untgz/Makefile +14 -0
  198. data/ext/src/third-party/zlib-1.2.3/contrib/untgz/Makefile.msc +17 -0
  199. data/ext/src/third-party/zlib-1.2.3/contrib/untgz/untgz.c +674 -0
  200. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/readme.txt +73 -0
  201. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/miniunz.vcproj +126 -0
  202. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/minizip.vcproj +126 -0
  203. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/testzlib.vcproj +126 -0
  204. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlib.rc +32 -0
  205. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibstat.vcproj +246 -0
  206. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibvc.def +92 -0
  207. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibvc.sln +78 -0
  208. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibvc.vcproj +445 -0
  209. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/miniunz.vcproj +566 -0
  210. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/minizip.vcproj +563 -0
  211. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/testzlib.vcproj +948 -0
  212. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/testzlibdll.vcproj +567 -0
  213. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlib.rc +32 -0
  214. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibstat.vcproj +870 -0
  215. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibvc.def +92 -0
  216. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibvc.sln +144 -0
  217. data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibvc.vcproj +1219 -0
  218. data/ext/src/third-party/zlib-1.2.3/crc32.c +423 -0
  219. data/ext/src/third-party/zlib-1.2.3/crc32.h +441 -0
  220. data/ext/src/third-party/zlib-1.2.3/deflate.c +1736 -0
  221. data/ext/src/third-party/zlib-1.2.3/deflate.h +331 -0
  222. data/ext/src/third-party/zlib-1.2.3/example.c +565 -0
  223. data/ext/src/third-party/zlib-1.2.3/examples/README.examples +42 -0
  224. data/ext/src/third-party/zlib-1.2.3/examples/fitblk.c +233 -0
  225. data/ext/src/third-party/zlib-1.2.3/examples/gun.c +693 -0
  226. data/ext/src/third-party/zlib-1.2.3/examples/gzappend.c +500 -0
  227. data/ext/src/third-party/zlib-1.2.3/examples/gzjoin.c +448 -0
  228. data/ext/src/third-party/zlib-1.2.3/examples/gzlog.c +413 -0
  229. data/ext/src/third-party/zlib-1.2.3/examples/gzlog.h +58 -0
  230. data/ext/src/third-party/zlib-1.2.3/examples/zlib_how.html +523 -0
  231. data/ext/src/third-party/zlib-1.2.3/examples/zpipe.c +191 -0
  232. data/ext/src/third-party/zlib-1.2.3/examples/zran.c +404 -0
  233. data/ext/src/third-party/zlib-1.2.3/gzio.c +1026 -0
  234. data/ext/src/third-party/zlib-1.2.3/infback.c +623 -0
  235. data/ext/src/third-party/zlib-1.2.3/inffast.c +318 -0
  236. data/ext/src/third-party/zlib-1.2.3/inffast.h +11 -0
  237. data/ext/src/third-party/zlib-1.2.3/inffixed.h +94 -0
  238. data/ext/src/third-party/zlib-1.2.3/inflate.c +1368 -0
  239. data/ext/src/third-party/zlib-1.2.3/inflate.h +115 -0
  240. data/ext/src/third-party/zlib-1.2.3/inftrees.c +329 -0
  241. data/ext/src/third-party/zlib-1.2.3/inftrees.h +55 -0
  242. data/ext/src/third-party/zlib-1.2.3/make_vms.com +461 -0
  243. data/ext/src/third-party/zlib-1.2.3/minigzip.c +322 -0
  244. data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.bor +109 -0
  245. data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.dj2 +104 -0
  246. data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.emx +69 -0
  247. data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.msc +106 -0
  248. data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.tc +94 -0
  249. data/ext/src/third-party/zlib-1.2.3/old/Makefile.riscos +151 -0
  250. data/ext/src/third-party/zlib-1.2.3/old/README +3 -0
  251. data/ext/src/third-party/zlib-1.2.3/old/descrip.mms +48 -0
  252. data/ext/src/third-party/zlib-1.2.3/old/os2/Makefile.os2 +136 -0
  253. data/ext/src/third-party/zlib-1.2.3/old/os2/zlib.def +51 -0
  254. data/ext/src/third-party/zlib-1.2.3/old/visual-basic.txt +160 -0
  255. data/ext/src/third-party/zlib-1.2.3/old/zlib.html +971 -0
  256. data/ext/src/third-party/zlib-1.2.3/projects/README.projects +41 -0
  257. data/ext/src/third-party/zlib-1.2.3/projects/visualc6/README.txt +73 -0
  258. data/ext/src/third-party/zlib-1.2.3/projects/visualc6/example.dsp +278 -0
  259. data/ext/src/third-party/zlib-1.2.3/projects/visualc6/minigzip.dsp +278 -0
  260. data/ext/src/third-party/zlib-1.2.3/projects/visualc6/zlib.dsp +609 -0
  261. data/ext/src/third-party/zlib-1.2.3/projects/visualc6/zlib.dsw +59 -0
  262. data/ext/src/third-party/zlib-1.2.3/qnx/package.qpg +141 -0
  263. data/ext/src/third-party/zlib-1.2.3/trees.c +1219 -0
  264. data/ext/src/third-party/zlib-1.2.3/trees.h +128 -0
  265. data/ext/src/third-party/zlib-1.2.3/uncompr.c +61 -0
  266. data/ext/src/third-party/zlib-1.2.3/win32/DLL_FAQ.txt +397 -0
  267. data/ext/src/third-party/zlib-1.2.3/win32/Makefile.bor +107 -0
  268. data/ext/src/third-party/zlib-1.2.3/win32/Makefile.emx +69 -0
  269. data/ext/src/third-party/zlib-1.2.3/win32/Makefile.gcc +141 -0
  270. data/ext/src/third-party/zlib-1.2.3/win32/Makefile.msc +126 -0
  271. data/ext/src/third-party/zlib-1.2.3/win32/VisualC.txt +3 -0
  272. data/ext/src/third-party/zlib-1.2.3/win32/zlib.def +60 -0
  273. data/ext/src/third-party/zlib-1.2.3/win32/zlib1.rc +39 -0
  274. data/ext/src/third-party/zlib-1.2.3/zconf.h +332 -0
  275. data/ext/src/third-party/zlib-1.2.3/zconf.in.h +332 -0
  276. data/ext/src/third-party/zlib-1.2.3/zlib.3 +159 -0
  277. data/ext/src/third-party/zlib-1.2.3/zlib.h +1357 -0
  278. data/ext/src/third-party/zlib-1.2.3/zutil.c +318 -0
  279. data/ext/src/third-party/zlib-1.2.3/zutil.h +269 -0
  280. data/lib/bio-velvet_underground.rb +12 -0
  281. data/lib/bio-velvet_underground/external/VERSION +1 -0
  282. data/lib/bio-velvet_underground/velvet_underground.rb +72 -0
  283. data/spec/binary_sequence_store_spec.rb +27 -0
  284. data/spec/data/1/CnyUnifiedSeq +0 -0
  285. data/spec/spec_helper.rb +31 -0
  286. metadata +456 -0
@@ -0,0 +1,26 @@
1
+ /*
2
+ Copyright 2007, 2008 Daniel Zerbino (zerbino@ebi.ac.uk)
3
+
4
+ This file is part of Velvet.
5
+
6
+ Velvet is free software; you can redistribute it and/or modify
7
+ it under the terms of the GNU General Public License as published by
8
+ the Free Software Foundation; either version 2 of the License, or
9
+ (at your option) any later version.
10
+
11
+ Velvet is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with Velvet; if not, write to the Free Software
18
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
+
20
+ */
21
+ #ifndef _PREGRAPHCONSTRUCTION_H_
22
+ #define _PREGRAPHCONSTRUCTION_H_
23
+
24
+ PreGraph *newPreGraph_pg(RoadMapArray * rdmaps, SequencesReader *seqReadInfo);
25
+
26
+ #endif
@@ -0,0 +1,557 @@
1
+ /*
2
+ Copyright 2007, 2008 Daniel Zerbino (zerbino@ebi.ac.uk)
3
+
4
+ This file is part of Velvet.
5
+
6
+ Velvet is free software; you can redistribute it and/or modify
7
+ it under the terms of the GNU General Public License as published by
8
+ the Free Software Foundation; either version 2 of the License, or
9
+ (at your option) any later version.
10
+
11
+ Velvet is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with Velvet; if not, write to the Free Software
18
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
+
20
+ */
21
+ #include <stdlib.h>
22
+ #include <stdio.h>
23
+
24
+ #include "globals.h"
25
+ #include "graph.h"
26
+ #include "recycleBin.h"
27
+ #include "passageMarker.h"
28
+ #include "graphStats.h"
29
+ #include "concatenatedGraph.h"
30
+ #include "readSet.h"
31
+ #include "utility.h"
32
+
33
+ #define LONG_NODE_CUTOFF 50
34
+ #define LN2 0.693147
35
+ #define PROBABILITY_CUTOFF 5
36
+ #define MAX_READ_COUNT 100
37
+ #define MAX_READ_LENGTH 2000
38
+
39
+ static Graph *graph = NULL;
40
+ static PassageMarkerI path = NULL_IDX;
41
+ static RecycleBin *listMemory = NULL;
42
+ static double expected_coverage = 1;
43
+ static TightString *sequences = NULL;
44
+ static int MULTIPLICITY_CUTOFF = 2;
45
+
46
+ static IDnum multCounter = 0;
47
+ static IDnum dbgCounter = 0;
48
+ static IDnum nullCounter = 0;
49
+
50
+ typedef struct rb_connection_st RBConnection;
51
+
52
+ struct rb_connection_st {
53
+ Node *node;
54
+ PassageMarkerI marker;
55
+ RBConnection *next;
56
+ IDnum multiplicity;
57
+ } ATTRIBUTE_PACKED;
58
+
59
+ static RecycleBin *nodeListMemory = NULL;
60
+
61
+ #define BLOCKSIZE 1000
62
+
63
+ static RBConnection *allocateRBConnection()
64
+ {
65
+ if (nodeListMemory == NULL)
66
+ nodeListMemory =
67
+ newRecycleBin(sizeof(RBConnection), BLOCKSIZE);
68
+
69
+ return allocatePointer(nodeListMemory);
70
+ }
71
+
72
+ static void deallocateRBConnection(RBConnection * nodeList)
73
+ {
74
+ deallocatePointer(nodeListMemory, nodeList);
75
+ }
76
+
77
+ boolean isUniqueSolexa(Node * node)
78
+ {
79
+
80
+ Coordinate nodeLength = getNodeLength(node);
81
+ Coordinate nodeCoverage;
82
+ double nodeDensity, probability;
83
+
84
+ nodeCoverage = getTotalCoverage(node);
85
+
86
+ if (nodeLength > LONG_NODE_CUTOFF) {
87
+ nodeDensity = nodeCoverage / (double) nodeLength;
88
+
89
+ probability =
90
+ LN2 / 2 +
91
+ nodeLength / (2 * expected_coverage) *
92
+ (expected_coverage * expected_coverage -
93
+ nodeDensity * nodeDensity / 2);
94
+ return probability > PROBABILITY_CUTOFF;
95
+ }
96
+ return false;
97
+ }
98
+
99
+ static void identifyUniqueNodes(boolean(*isUniqueFunction) (Node *))
100
+ {
101
+ IDnum index;
102
+ Node *node;
103
+ IDnum counter = 0;
104
+
105
+ velvetLog("Identifying unique nodes\n");
106
+
107
+ for (index = 1; index <= nodeCount(graph); index++) {
108
+ node = getNodeInGraph(graph, index);
109
+
110
+ if (node == NULL)
111
+ continue;
112
+
113
+ setUniqueness(node, isUniqueFunction(node));
114
+
115
+ if (getUniqueness(node))
116
+ counter++;
117
+ }
118
+
119
+ velvetLog("Done, %li unique nodes counted\n", (long) counter);
120
+ }
121
+
122
+ static boolean uniqueNodesConnect(Node * startingNode)
123
+ {
124
+ Node *destination = NULL;
125
+ PassageMarkerI startMarker, currentMarker;
126
+ RBConnection *newList;
127
+ RBConnection *list = NULL;
128
+ boolean multipleHits = false;
129
+
130
+ if (arcCount(startingNode) == 0)
131
+ return false;
132
+
133
+ if (getMarker(startingNode) == NULL_IDX)
134
+ return false;
135
+
136
+ dbgCounter++;
137
+
138
+ // Checking for multiple destinations
139
+ for (startMarker = getMarker(startingNode); startMarker != NULL_IDX;
140
+ startMarker = getNextInNode(startMarker)) {
141
+ if (getFinishOffset(startMarker) >
142
+ 2 * getWordLength(graph))
143
+ continue;
144
+
145
+ for (currentMarker = getNextInSequence(startMarker);
146
+ currentMarker != NULL_IDX;
147
+ currentMarker = getNextInSequence(currentMarker)) {
148
+ if (!getUniqueness(getNode(currentMarker))) {
149
+ continue;
150
+ } else if (getNodeStatus(getNode(currentMarker))) {
151
+ if (getStartOffset(currentMarker) >
152
+ 2 * getWordLength(graph))
153
+ break;
154
+ for (newList = list; newList != NULL;
155
+ newList = newList->next) {
156
+ if (newList->node ==
157
+ getNode(currentMarker)) {
158
+ newList->multiplicity++;
159
+ break;
160
+ }
161
+ }
162
+ if (newList == NULL)
163
+ abort();
164
+ break;
165
+ } else {
166
+ if (getStartOffset(currentMarker) >
167
+ 2 * getWordLength(graph))
168
+ break;
169
+ setSingleNodeStatus(getNode(currentMarker),
170
+ true);
171
+ newList = allocateRBConnection();
172
+ newList->node = getNode(currentMarker);
173
+ newList->multiplicity = 1;
174
+ newList->marker = startMarker;
175
+ newList->next = list;
176
+ list = newList;
177
+ break;
178
+ }
179
+ }
180
+ }
181
+
182
+ while (list != NULL) {
183
+ newList = list;
184
+ list = newList->next;
185
+ setSingleNodeStatus(newList->node, false);
186
+ if (newList->multiplicity >= MULTIPLICITY_CUTOFF) {
187
+ if (destination == NULL) {
188
+ destination = newList->node;
189
+ path = newList->marker;
190
+ } else if (destination != newList->node)
191
+ multipleHits = true;
192
+ }
193
+ deallocateRBConnection(newList);
194
+ }
195
+
196
+ if (multipleHits) {
197
+ multCounter++;
198
+ setUniqueness(startingNode, false);
199
+ return false;
200
+ }
201
+
202
+ if (destination == NULL || destination == startingNode
203
+ || destination == getTwinNode(startingNode)) {
204
+ nullCounter++;
205
+ return false;
206
+ }
207
+ // Check for reciprocity
208
+ for (startMarker = getMarker(getTwinNode(destination));
209
+ startMarker != NULL_IDX;
210
+ startMarker = getNextInNode(startMarker)) {
211
+ if (getFinishOffset(startMarker) >
212
+ 2 * getWordLength(graph))
213
+ continue;
214
+
215
+ for (currentMarker = getNextInSequence(startMarker);
216
+ currentMarker != NULL_IDX;
217
+ currentMarker = getNextInSequence(currentMarker)) {
218
+ if (!getUniqueness(getNode(currentMarker))) {
219
+ continue;
220
+ } else if (getNodeStatus(getNode(currentMarker))) {
221
+ if (getStartOffset(currentMarker) >
222
+ 2 * getWordLength(graph))
223
+ break;
224
+ for (newList = list; newList != NULL;
225
+ newList = newList->next) {
226
+ if (newList->node ==
227
+ getNode(currentMarker)) {
228
+ newList->multiplicity++;
229
+ break;
230
+ }
231
+ }
232
+ if (newList == NULL)
233
+ abort();
234
+ break;
235
+ } else {
236
+ if (getStartOffset(currentMarker) >
237
+ 2 * getWordLength(graph))
238
+ break;
239
+ setSingleNodeStatus(getNode(currentMarker),
240
+ true);
241
+ newList = allocateRBConnection();
242
+ newList->node = getNode(currentMarker);
243
+ newList->multiplicity = 1;
244
+ newList->next = list;
245
+ list = newList;
246
+ break;
247
+ }
248
+ }
249
+ }
250
+
251
+ while (list != NULL) {
252
+ newList = list;
253
+ list = newList->next;
254
+ setSingleNodeStatus(newList->node, false);
255
+ if (newList->multiplicity >= MULTIPLICITY_CUTOFF
256
+ && newList->node != getTwinNode(startingNode))
257
+ multipleHits = true;
258
+ deallocateRBConnection(newList);
259
+ }
260
+
261
+ if (multipleHits) {
262
+ multCounter++;
263
+ setUniqueness(destination, false);
264
+ return false;
265
+ }
266
+ // Aligning long reads to each other:
267
+ // TODO
268
+
269
+ // Merge pairwise alignments and produce consensus
270
+ // TODO
271
+
272
+ return true;
273
+ }
274
+
275
+ static boolean goesToNode(PassageMarkerI marker, Node * node)
276
+ {
277
+ PassageMarkerI current;
278
+ Node * start = getNode(marker);
279
+ Node * twinStart = getTwinNode(start);
280
+ Node * currentNode;
281
+
282
+ for (current = getNextInSequence(marker); current != NULL_IDX;
283
+ current = getNextInSequence(current)) {
284
+ currentNode = getNode(current);
285
+ if (currentNode == start || currentNode == twinStart)
286
+ return false;
287
+ else if (currentNode == node)
288
+ return true;
289
+ else if (getUniqueness(currentNode))
290
+ return false;
291
+ }
292
+
293
+ return false;
294
+ }
295
+
296
+ static void updateMembers(Node * bypass, Node * nextNode)
297
+ {
298
+ PassageMarkerI marker, next, tmp;
299
+ Coordinate nextLength = getNodeLength(nextNode);
300
+
301
+ // Update marker + arc info
302
+ for (marker = getMarker(bypass); marker != NULL_IDX; marker = tmp) {
303
+ tmp = getNextInNode(marker);
304
+
305
+ if (!isTerminal(marker)
306
+ && getNode(getNextInSequence(marker)) == nextNode) {
307
+ // Marker steps right into target
308
+ next = getNextInSequence(marker);
309
+ disconnectNextPassageMarker(marker, graph);
310
+ destroyPassageMarker(next);
311
+ } else if (getUniqueness(nextNode)
312
+ && goesToNode(marker, nextNode)) {
313
+ // Marker goes indirectly to target
314
+ while (getNode(getNextInSequence(marker)) !=
315
+ nextNode) {
316
+ next = getNextInSequence(marker);
317
+ disconnectNextPassageMarker(marker, graph);
318
+ destroyPassageMarker(next);
319
+ }
320
+
321
+ next = getNextInSequence(marker);
322
+ disconnectNextPassageMarker(marker, graph);
323
+ destroyPassageMarker(next);
324
+ } else if (!isTerminal(marker)
325
+ && getFinishOffset(marker) == 0) {
326
+ // Marker goes somewhere else than to target
327
+ next = getNextInSequence(marker);
328
+ incrementFinishOffset(marker, nextLength);
329
+ } else {
330
+ // Marker goes nowhere
331
+ incrementFinishOffset(marker, nextLength);
332
+ }
333
+ }
334
+ }
335
+
336
+ static void admitGroupies(Node * source, Node * bypass)
337
+ {
338
+ PassageMarkerI marker, tmpMarker;
339
+
340
+ for (marker = getMarker(source); marker != NULL_IDX;
341
+ marker = tmpMarker) {
342
+ tmpMarker = getNextInNode(marker);
343
+ extractPassageMarker(marker);
344
+ transposePassageMarker(marker, bypass);
345
+ incrementFinishOffset(getTwinMarker(marker),
346
+ getNodeLength(bypass));
347
+ }
348
+
349
+ }
350
+
351
+ static void adjustShortReads(Node * target, PassageMarkerI pathMarker)
352
+ {
353
+ ShortReadMarker *targetArray, *marker;
354
+ IDnum targetLength, index;
355
+ Coordinate position, nodeLength;
356
+
357
+ if (!readStartsAreActivated(graph))
358
+ return;
359
+
360
+ targetArray = getNodeReads(getTwinNode(target), graph);
361
+ targetLength = getNodeReadCount(getTwinNode(target), graph);
362
+
363
+ nodeLength = getPassageMarkerLength(pathMarker);
364
+
365
+ for (index = 0; index < targetLength; index++) {
366
+ marker = getShortReadMarkerAtIndex(targetArray, index);
367
+ position = getShortReadMarkerPosition(marker);
368
+ position += nodeLength;
369
+ setShortReadMarkerPosition(marker, position);
370
+ }
371
+ }
372
+
373
+ static Node *bypass()
374
+ {
375
+ Node *bypass = getNode(path);
376
+ Node *next = NULL;
377
+ Arc *arc;
378
+ PassageMarkerI nextMarker;
379
+
380
+ // Remove unwanted arcs
381
+ while (getArc(bypass) != NULL)
382
+ destroyArc(getArc(bypass), graph);
383
+
384
+ // Update extensive variables (length + descriptors + passage markers)
385
+ while (!isTerminal(path)) {
386
+ nextMarker = getNextInSequence(path);
387
+ next = getNode(nextMarker);
388
+ while (next == bypass) {
389
+ disconnectNextPassageMarker(path, graph);
390
+ destroyPassageMarker(nextMarker);
391
+ nextMarker = getNextInSequence(path);
392
+ next = getNode(nextMarker);
393
+ }
394
+
395
+ if (next == NULL)
396
+ return bypass;
397
+
398
+ // Overall node update
399
+ if (!getUniqueness(next)) {
400
+ adjustShortReads(bypass, getNextInSequence(path));
401
+ appendSequence(bypass, sequences,
402
+ getNextInSequence(path), graph);
403
+ } else {
404
+ concatenateReadStarts(bypass, next, graph);
405
+
406
+ #ifndef SINGLE_COV_CAT
407
+ Category cat;
408
+ for (cat = 0; cat < CATEGORIES; cat++) {
409
+ // Update virtual coverage
410
+ incrementVirtualCoverage(bypass, cat,
411
+ getVirtualCoverage(next, cat));
412
+ // Update original virtual coverage
413
+ incrementOriginalVirtualCoverage(bypass, cat,
414
+ getOriginalVirtualCoverage(next, cat));
415
+ }
416
+ #else
417
+ incrementVirtualCoverage(bypass, getVirtualCoverage(next));
418
+ #endif
419
+ appendDescriptors(bypass, next);
420
+ }
421
+
422
+ // Members
423
+ updateMembers(bypass, next);
424
+
425
+ // Termination
426
+ if (isTerminal(path) || getUniqueness(next))
427
+ break;
428
+ }
429
+
430
+ // Remove unique groupies from arrival
431
+ admitGroupies(next, bypass);
432
+
433
+ // Copy destination arcs
434
+ for (arc = getArc(next); arc != NULL; arc = getNextArc(arc)) {
435
+ if (getDestination(arc) == next)
436
+ continue;
437
+ else if (getDestination(arc) == getTwinNode(next))
438
+ createAnalogousArc(bypass, getTwinNode(bypass),
439
+ arc, graph);
440
+ else
441
+ createAnalogousArc(bypass, getDestination(arc),
442
+ arc, graph);
443
+ }
444
+
445
+ destroyNode(next, graph);
446
+
447
+ return bypass;
448
+ }
449
+
450
+ static void trimLongReadTips()
451
+ {
452
+ IDnum index;
453
+ Node *node;
454
+ PassageMarkerI marker, next;
455
+
456
+ velvetLog("Trimming read tips\n");
457
+
458
+ for (index = 1; index <= nodeCount(graph); index++) {
459
+ node = getNodeInGraph(graph, index);
460
+
461
+ if (getUniqueness(node))
462
+ continue;
463
+
464
+ for (marker = getMarker(node); marker != NULL_IDX;
465
+ marker = next) {
466
+ next = getNextInNode(marker);
467
+
468
+ if (!isInitial(marker) && !isTerminal(marker))
469
+ continue;
470
+
471
+ if (isTerminal(marker))
472
+ marker = getTwinMarker(marker);
473
+
474
+ while (!getUniqueness(getNode(marker))) {
475
+ if (next != NULL_IDX
476
+ && (marker == next
477
+ || marker == getTwinMarker(next)))
478
+ next = getNextInNode(next);
479
+ if (getNextInSequence(marker) != NULL_IDX) {
480
+ marker = getNextInSequence(marker);
481
+ destroyPassageMarker
482
+ (getPreviousInSequence
483
+ (marker));
484
+ } else {
485
+ destroyPassageMarker(marker);
486
+ break;
487
+ }
488
+ }
489
+ }
490
+ }
491
+ }
492
+
493
+ void readCoherentGraph(Graph * inGraph, boolean(*isUnique) (Node * node),
494
+ double coverage, ReadSet * reads)
495
+ {
496
+ IDnum nodeIndex;
497
+ Node *node;
498
+ IDnum previousNodeCount = 0;
499
+
500
+ graph = inGraph;
501
+ listMemory = newRecycleBin(sizeof(PassageMarkerList), 100000);
502
+ expected_coverage = coverage;
503
+ sequences = reads->tSequences;
504
+
505
+ velvetLog("Read coherency...\n");
506
+ resetNodeStatus(graph);
507
+ identifyUniqueNodes(isUnique);
508
+ trimLongReadTips();
509
+
510
+ previousNodeCount = 0;
511
+ while (previousNodeCount != nodeCount(graph)) {
512
+
513
+ previousNodeCount = nodeCount(graph);
514
+
515
+ for (nodeIndex = 1; nodeIndex <= nodeCount(graph);
516
+ nodeIndex++) {
517
+
518
+ node = getNodeInGraph(graph, nodeIndex);
519
+
520
+ if (node == NULL || !getUniqueness(node))
521
+ continue;
522
+
523
+ while (uniqueNodesConnect(node))
524
+ node = bypass();
525
+
526
+ node = getTwinNode(node);
527
+
528
+ while (uniqueNodesConnect(node))
529
+ node = bypass();
530
+
531
+ }
532
+
533
+ renumberNodes(graph);
534
+ }
535
+
536
+ destroyRecycleBin(listMemory);
537
+ destroyRecycleBin(nodeListMemory);
538
+
539
+ velvetLog("Confronted to %li multiple hits and %li null over %li\n",
540
+ (long) multCounter, (long) nullCounter, (long) dbgCounter);
541
+
542
+ velvetLog("Read coherency over!\n");
543
+ }
544
+
545
+ void setMultiplicityCutoff(int value)
546
+ {
547
+ if (value < 0) {
548
+ velvetLog("Negative long read multiplicity cutoff %i!\n",
549
+ value);
550
+ velvetLog("Exiting...\n");
551
+ #ifdef DEBUG
552
+ abort();
553
+ #endif
554
+ exit(1);
555
+ }
556
+ MULTIPLICITY_CUTOFF = value;
557
+ }