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,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 "tightString.h"
27
+ #include "dfibHeap.h"
28
+ #include "recycleBin.h"
29
+ #include "passageMarker.h"
30
+ #include "shortReadPairs.h"
31
+ #include "locallyCorrectedGraph.h"
32
+ #include "utility.h"
33
+
34
+ static const Time INDEL = 0;
35
+ static const Time SIM[4][4] = {
36
+ {1, 0, 0, 0},
37
+ {0, 1, 0, 0},
38
+ {0, 0, 1, 0},
39
+ {0, 0, 0, 1}
40
+ };
41
+
42
+ //Global variables used throughout this procedure(internal use only !)
43
+ static int MAXREADLENGTH = 100;
44
+ static int MAXNODELENGTH = 200;
45
+ static double MAXDIVERGENCE = 0.2;
46
+ static int MAXGAPS = 3;
47
+
48
+ static Time *times;
49
+ static Node **previous;
50
+
51
+ static DFibHeapNode **dheapNodes;
52
+ static DFibHeap *dheap;
53
+
54
+ static TightString *fastSequence;
55
+ static TightString *slowSequence;
56
+
57
+ static int WORDLENGTH;
58
+ static Graph *graph;
59
+ static Node *start;
60
+
61
+ static PassageMarkerI fastPath;
62
+ static PassageMarkerI slowPath;
63
+
64
+ static double **Fmatrix;
65
+ //End of global variables;
66
+
67
+ static void setNodeTime(Node * node, Time time)
68
+ {
69
+ times[getNodeID(node) + nodeCount(graph)] = time;
70
+ }
71
+
72
+ static Time getNodeTime(Node * node)
73
+ {
74
+ return times[getNodeID(node) + nodeCount(graph)];
75
+ }
76
+
77
+ static Node *getNodePrevious(Node * node)
78
+ {
79
+ return previous[getNodeID(node) + nodeCount(graph)];
80
+ }
81
+
82
+ static boolean isPreviousToNode(Node * previous, Node * target)
83
+ {
84
+ Node *currentNode = target;
85
+ Node *previousNode = NULL;
86
+ Time targetTime = getNodeTime(target);
87
+
88
+ //velvetLog("Testing if %li is previous to %li\n", getNodeID(previous), getNodeID(target));
89
+
90
+ while (true) {
91
+ //velvetLog("CCC %li %f\n", getNodeID(currentNode), getNodeTime(currentNode));
92
+
93
+ if (currentNode == previous)
94
+ return true;
95
+
96
+ if (currentNode == previousNode)
97
+ return false;
98
+
99
+ if (getNodeID(currentNode) > nodeCount(graph)
100
+ || getNodeID(currentNode) < -nodeCount(graph)) {
101
+ velvetLog("Node ID??? %li %li\n",
102
+ (long) getNodeID(currentNode),
103
+ (long) getNodeID(previousNode));
104
+ }
105
+
106
+ if (getNodeTime(currentNode) != targetTime)
107
+ return false;
108
+
109
+ previousNode = currentNode;
110
+ currentNode = getNodePrevious(currentNode);
111
+ }
112
+ }
113
+
114
+ static boolean
115
+ extractSequence(PassageMarkerI path, TightString * sequence)
116
+ {
117
+ PassageMarkerI marker;
118
+ Coordinate seqLength = 0;
119
+ Coordinate writeIndex = 0;
120
+
121
+ //velvetLog("Extracting sequence %li ... ", pathLength);
122
+
123
+ //Measure length
124
+ for (marker = getNextInSequence(path); !isTerminal(marker);
125
+ marker = getNextInSequence(marker))
126
+ seqLength += getNodeLength(getNode(marker));
127
+
128
+ if (seqLength > MAXREADLENGTH)
129
+ return false;
130
+ else
131
+ setTightStringLength(sequence, seqLength);
132
+
133
+ //Copy sequences
134
+ for (marker = getNextInSequence(path); !isTerminal(marker);
135
+ marker = getNextInSequence(marker)) {
136
+ appendNodeSequence(getNode(marker), sequence, writeIndex);
137
+ writeIndex += getNodeLength(getNode(marker));
138
+ }
139
+
140
+ return true;
141
+ }
142
+
143
+ static Time max(Time A, Time B, Time C)
144
+ {
145
+ if (A >= B && A >= C)
146
+ return A;
147
+ else if (B >= C)
148
+ return B;
149
+ else
150
+ return C;
151
+ }
152
+
153
+ static boolean
154
+ compareSequences(TightString * sequence1, TightString * sequence2)
155
+ {
156
+ Coordinate i, j;
157
+ Coordinate length1 = getLength(sequence1);
158
+ Coordinate length2 = getLength(sequence2);
159
+ Coordinate maxLength;
160
+ Time Choice1, Choice2, Choice3;
161
+ Time maxScore;
162
+
163
+ if (length1 == 0 || length2 == 0)
164
+ return false;
165
+
166
+ maxLength = (length1 > length2 ? length1 : length2);
167
+
168
+ if (length1 < WORDLENGTH || length2 < WORDLENGTH)
169
+ if (maxLength - length1 > MAXGAPS
170
+ || maxLength - length2 > MAXGAPS)
171
+ return false;
172
+
173
+ for (i = 0; i <= length1; i++)
174
+ Fmatrix[i][0] = 0;
175
+ for (j = 0; j <= length2; j++)
176
+ Fmatrix[0][j] = 0;
177
+
178
+ for (i = 1; i <= length1; i++) {
179
+ for (j = 1; j <= length2; j++) {
180
+ Choice1 =
181
+ Fmatrix[i - 1][j - 1] +
182
+ SIM[(int) getNucleotide(i - 1, sequence1)]
183
+ [(int) getNucleotide(j - 1, sequence2)];
184
+ Choice2 = Fmatrix[i - 1][j] + INDEL;
185
+ Choice3 = Fmatrix[i][j - 1] + INDEL;
186
+ Fmatrix[i][j] = max(Choice1, Choice2, Choice3);
187
+ }
188
+ }
189
+
190
+ maxScore = Fmatrix[length1][length2];
191
+
192
+ if (maxScore < maxLength - MAXGAPS)
193
+ return false;
194
+
195
+ if ((1 - maxScore / maxLength) > MAXDIVERGENCE)
196
+ return false;
197
+
198
+ return true;
199
+ }
200
+
201
+ static void destroyPaths()
202
+ {
203
+ PassageMarkerI marker;
204
+
205
+ while (slowPath != NULL_IDX) {
206
+ marker = slowPath;
207
+ slowPath = getNextInSequence(marker);
208
+ destroyPassageMarker(marker);
209
+ }
210
+
211
+ while (fastPath != NULL_IDX) {
212
+ marker = fastPath;
213
+ fastPath = getNextInSequence(marker);
214
+ destroyPassageMarker(marker);
215
+ }
216
+ }
217
+
218
+ static void cleanUpRedundancy_local()
219
+ {
220
+ PassageMarkerI current;
221
+
222
+ for (current = getNextInSequence(slowPath); !isTerminal(current);
223
+ current = getNextInSequence(current))
224
+ handicapNode(getNode(current));
225
+
226
+ destroyPaths();
227
+ }
228
+
229
+ static void comparePaths_local(Node * destination, Node * origin)
230
+ {
231
+ IDnum slowLength, fastLength;
232
+ Node *fastNode, *slowNode;
233
+ IDnum i;
234
+ PassageMarkerI marker;
235
+
236
+ //Measure lengths
237
+ slowLength = fastLength = 0;
238
+ fastNode = destination;
239
+ slowNode = origin;
240
+
241
+ //velvetLog("Looking into separate paths\n");
242
+
243
+ while (fastNode != slowNode) {
244
+ //velvetLog("Fast node %li Slow node %li\n", getNodeID(fastNode), getNodeID(slowNode));
245
+
246
+ if (getNodeTime(fastNode) > getNodeTime(slowNode)) {
247
+ fastLength++;
248
+ fastNode = getNodePrevious(fastNode);
249
+ } else if (getNodeTime(fastNode) < getNodeTime(slowNode)) {
250
+ slowLength++;
251
+ slowNode = getNodePrevious(slowNode);
252
+ } else if (isPreviousToNode(slowNode, fastNode)) {
253
+ while (fastNode != slowNode) {
254
+ fastLength++;
255
+ fastNode = getNodePrevious(fastNode);
256
+ }
257
+ } else if (isPreviousToNode(fastNode, slowNode)) {
258
+ while (slowNode != fastNode) {
259
+ slowLength++;
260
+ slowNode = getNodePrevious(slowNode);
261
+ }
262
+ } else {
263
+ fastLength++;
264
+ fastNode = getNodePrevious(fastNode);
265
+ slowLength++;
266
+ slowNode = getNodePrevious(slowNode);
267
+ }
268
+
269
+ if (slowLength > MAXNODELENGTH
270
+ || fastLength > MAXNODELENGTH) {
271
+ //velvetLog("Paths too fragmented %li %li\n", slowLength, fastLength);
272
+ return;
273
+ }
274
+ }
275
+
276
+ if (fastLength == 0)
277
+ return;
278
+
279
+ //Backtracking to record actual paths
280
+ fastPath = addUncertainPassageMarker(1, destination);
281
+ setPassageMarkerStatus(fastPath, true);
282
+
283
+ for (i = 0; i < fastLength; i++) {
284
+ marker =
285
+ addUncertainPassageMarker(1,
286
+ getNodePrevious(getNode
287
+ (fastPath)));
288
+ setPassageMarkerStatus(marker, true);
289
+ connectPassageMarkers(marker, fastPath, graph);
290
+ fastPath = marker;
291
+ }
292
+
293
+ slowPath = addUncertainPassageMarker(2, destination);
294
+ setPassageMarkerStatus(slowPath, true);
295
+
296
+ marker = addUncertainPassageMarker(2, origin);
297
+ setPassageMarkerStatus(marker, true);
298
+ connectPassageMarkers(marker, slowPath, graph);
299
+ slowPath = marker;
300
+
301
+ for (i = 0; i < slowLength; i++) {
302
+ marker =
303
+ addUncertainPassageMarker(2,
304
+ getNodePrevious(getNode
305
+ (slowPath)));
306
+ setPassageMarkerStatus(marker, true);
307
+ connectPassageMarkers(marker, slowPath, graph);
308
+ slowPath = marker;
309
+ }
310
+
311
+ //Extract sequences
312
+ if (!extractSequence(fastPath, fastSequence)
313
+ || !extractSequence(slowPath, slowSequence)) {
314
+ //velvetLog("Paths too long\n");
315
+ destroyPaths();
316
+ return;
317
+ }
318
+ //Compare sequences
319
+ if (compareSequences(fastSequence, slowSequence)) {
320
+ //velvetLog("Correcting discrepancy\n");
321
+ cleanUpRedundancy_local();
322
+ return;
323
+ }
324
+ //velvetLog("\tFinished comparing paths, changes made\n");
325
+ destroyPaths();
326
+ }
327
+
328
+ static void tourBusArc_local(Node * origin, Arc * arc, Time originTime)
329
+ {
330
+ Node *destination = getDestination(arc);
331
+ Time arcTime, totalTime, destinationTime;
332
+ IDnum nodeIndex = getNodeID(destination) + nodeCount(graph);
333
+ Node *oldPrevious = previous[nodeIndex];
334
+
335
+ //velvetLog("Trying arc from %li -> %li\n", getNodeID(origin), getNodeID(destination));
336
+
337
+ if (oldPrevious == origin)
338
+ return;
339
+
340
+ arcTime =
341
+ ((Time) getNodeLength(origin)) / ((Time) getMultiplicity(arc));
342
+ totalTime = originTime + arcTime;
343
+
344
+ destinationTime = times[nodeIndex];
345
+
346
+ if (destinationTime == -1) {
347
+ //velvetLog("New destination\n");
348
+ setNodeTime(destination, totalTime);
349
+ dheapNodes[nodeIndex] =
350
+ insertNodeIntoDHeap(dheap, totalTime, destination);
351
+ previous[nodeIndex] = origin;
352
+ return;
353
+ } else if (destinationTime > totalTime) {
354
+ //velvetLog("Previously visited from slower node %li\n", getNodeID(getNodePrevious(destination)));
355
+ if (dheapNodes[nodeIndex] == NULL) {
356
+ return;
357
+ }
358
+
359
+ setNodeTime(destination, totalTime);
360
+ replaceKeyInDHeap(dheap, dheapNodes[nodeIndex], totalTime);
361
+ previous[nodeIndex] = origin;
362
+
363
+ comparePaths_local(destination, oldPrevious);
364
+ return;
365
+ } else {
366
+ //velvetLog("Previously visited by faster node %li\n", getNodeID(getNodePrevious(destination)));
367
+ comparePaths_local(destination, origin);
368
+ }
369
+ }
370
+
371
+ static void tourBusNode_local(Node * node)
372
+ {
373
+ Arc *arc;
374
+ Time nodeTime = getNodeTime(node);
375
+
376
+ //velvetLog("Node %li %f %i %p\n", getNodeID(node),
377
+ // times[getNodeID(node) + nodeCount(graph)], simpleArcCount(node),
378
+ // node);
379
+
380
+ for (arc = getArc(node); arc != NULL; arc = getNextArc(arc)) {
381
+ // Node doesn't belong to the marked node area
382
+ if (getNodeStatus(getDestination(arc)) != 1)
383
+ continue;
384
+
385
+ tourBusArc_local(node, arc, nodeTime);
386
+
387
+ if (getNodeStatus(node) != 1)
388
+ break;
389
+ }
390
+ }
391
+
392
+ static boolean isLocalDeadEnd(Node * node)
393
+ {
394
+ Arc *arc;
395
+
396
+ for (arc = getArc(node); arc != NULL; arc = getNextArc(arc))
397
+ if (getNodeStatus(getDestination(arc)) == 1)
398
+ return false;
399
+
400
+ return true;
401
+ }
402
+
403
+ static boolean isLocalTwinDeadEnd(Node * node)
404
+ {
405
+ Arc *arc;
406
+
407
+ for (arc = getArc(getTwinNode(node)); arc != NULL;
408
+ arc = getNextArc(arc))
409
+ if (getNodeStatus(getTwinNode(getDestination(arc))) == 1)
410
+ return false;
411
+
412
+ return true;
413
+ }
414
+
415
+ static void clipTipsVeryHardLocally()
416
+ {
417
+ NodeList *nodeList, *next;
418
+ Node *current;
419
+ boolean modified = true;
420
+
421
+ //velvetLog("Clipping short tips off graph HARD\n");
422
+
423
+ while (modified) {
424
+ modified = false;
425
+
426
+ for (nodeList = getMarkedNodeList(); nodeList != NULL;
427
+ nodeList = next) {
428
+ next = nodeList->next;
429
+ current = nodeList->node;
430
+
431
+ if (current == NULL || getNodeStatus(current) != 1)
432
+ continue;
433
+
434
+ if (getUniqueness(current))
435
+ continue;
436
+
437
+ //velvetLog("Checking node HARD %li %i\n", getNodeID(current), simpleArcCount(current));
438
+
439
+ if (isLocalDeadEnd(current)
440
+ || isLocalTwinDeadEnd(current)) {
441
+ //velvetLog("Found tip at node %li\n", getNodeID(current));
442
+ handicapNode(current);
443
+ modified = true;
444
+ }
445
+ }
446
+ }
447
+ }
448
+
449
+ static void tourBus_local(Node * startingPoint)
450
+ {
451
+ Node *currentNode = startingPoint;
452
+ IDnum nodeID = getNodeID(startingPoint) + nodeCount(graph);
453
+
454
+ //velvetLog("Tour bus from node %li...\n", getNodeID(startingPoint));
455
+
456
+ times[nodeID] = 0;
457
+ previous[nodeID] = currentNode;
458
+
459
+ while (currentNode != NULL) {
460
+ dheapNodes[getNodeID(currentNode) + nodeCount(graph)] =
461
+ NULL;
462
+ tourBusNode_local(currentNode);
463
+ currentNode = removeNextNodeFromDHeap(dheap);
464
+ }
465
+ }
466
+
467
+ void prepareGraphForLocalCorrections(Graph * argGraph)
468
+ {
469
+ IDnum nodes = nodeCount(argGraph);
470
+ IDnum index;
471
+
472
+ //Setting global params
473
+ graph = argGraph;
474
+ WORDLENGTH = getWordLength(graph);;
475
+ // Done with global params
476
+
477
+ velvetLog("Preparing to correct graph with cutoff %f\n",
478
+ MAXDIVERGENCE);
479
+
480
+ // Allocating memory
481
+ times = mallocOrExit(2 * nodes + 1, Time);
482
+ previous = mallocOrExit(2 * nodes + 1, Node *);
483
+
484
+ dheapNodes = mallocOrExit(2 * nodes + 1, DFibHeapNode *);
485
+
486
+ dheap = newDFibHeap();
487
+
488
+ fastSequence = newTightString(MAXREADLENGTH);
489
+ slowSequence = newTightString(MAXREADLENGTH);
490
+
491
+ for (index = 0; index < (2 * nodeCount(graph) + 1); index++) {
492
+ times[index] = -1;
493
+ dheapNodes[index] = NULL;
494
+ previous[index] = NULL;
495
+ }
496
+
497
+ Fmatrix = callocOrExit(MAXREADLENGTH + 1, double *);
498
+ for (index = 0; index < MAXREADLENGTH + 1; index++)
499
+ Fmatrix[index] = callocOrExit(MAXREADLENGTH + 1, double);
500
+ //Done with memory
501
+ }
502
+
503
+ void correctGraphLocally(Node * argStart)
504
+ {
505
+ IDnum nodeIndex;
506
+ NodeList *nodeList;
507
+
508
+ start = argStart;
509
+ //velvetLog("Correcting graph from node %li\n", getNodeID(start));
510
+
511
+ clipTipsVeryHardLocally();
512
+
513
+ for (nodeList = getMarkedNodeList(); nodeList != NULL;
514
+ nodeList = nodeList->next) {
515
+ nodeIndex = getNodeID(nodeList->node) + nodeCount(graph);
516
+ times[nodeIndex] = -1;
517
+ dheapNodes[nodeIndex] = NULL;
518
+ previous[nodeIndex] = NULL;
519
+ }
520
+
521
+ tourBus_local(start);
522
+ }
523
+
524
+ void deactivateLocalCorrectionSettings()
525
+ {
526
+ velvetLog("Deactivating local correction settings\n");
527
+ IDnum index;
528
+
529
+ for (index = 0; index <= MAXREADLENGTH; index++) {
530
+ free(Fmatrix[index]);
531
+ }
532
+ free(Fmatrix);
533
+
534
+ free(times);
535
+ free(previous);
536
+ free(dheapNodes);
537
+ destroyDHeap(dheap);
538
+
539
+ destroyTightString(fastSequence);
540
+ destroyTightString(slowSequence);
541
+ }
542
+
543
+ void setLocalMaxReadLength(int value)
544
+ {
545
+ MAXREADLENGTH = value;
546
+ MAXNODELENGTH = 2 * value;
547
+ }
548
+
549
+ void setLocalMaxGaps(int value)
550
+ {
551
+ MAXGAPS = value;
552
+ }
553
+
554
+ void setLocalMaxDivergence(double value)
555
+ {
556
+ MAXDIVERGENCE = value;
557
+ }