bio-velvet_underground 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fb4a2dda523583497755b908d85e6b5688562582
4
+ data.tar.gz: 24da3eeb3f3f25818527db4ed3b2278d6c8e9bd8
5
+ SHA512:
6
+ metadata.gz: 306e0ee16f7bef2742c1b6717d342a84e8d603240c0b217c7fde8703be30e86526ded8e4d48e0284415eebea15b5500f90351ea0e7125f201aa8567b4300feee
7
+ data.tar.gz: 5333a971fd4b52803aabb3fefd49658807cd790858a524f245d87d51897274853d3880c1aa33597ee6c975bcf1755a23f457667d0a963c68a725e840dfe0e747
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.gitmodules ADDED
@@ -0,0 +1,3 @@
1
+ [submodule "ext/src"]
2
+ path = ext/src
3
+ url = https://github.com/wwood/velvet
data/.travis.yml ADDED
@@ -0,0 +1,13 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - jruby-19mode # JRuby in 1.9 mode
6
+
7
+ # - rbx-19mode
8
+ # - 1.8.7
9
+ # - jruby-18mode # JRuby in 1.8 mode
10
+ # - rbx-18mode
11
+
12
+ # uncomment this line if your project needs to run something other than `rake`:
13
+ # script: bundle exec rspec spec
data/Gemfile ADDED
@@ -0,0 +1,19 @@
1
+ source "http://rubygems.org"
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ # gem "activesupport", ">= 2.3.5"
5
+
6
+ gem 'ffi', '~> 1.9'
7
+
8
+ # Add dependencies to develop your gem here.
9
+ # Include everything needed to run rake, tests, features, etc.
10
+ group :development do
11
+ gem "pry", ">0"
12
+ gem "rspec", "~> 2.8"
13
+ gem "shoulda", ">= 0"
14
+ gem "yard", "~> 0.7"
15
+ gem "simplecov", ">= 0"
16
+ gem "jeweler", "~> 2.0"
17
+ gem "bundler", ">= 1.0.21"
18
+ gem "bio", ">= 1.4.2"
19
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2014 Ben Woodcroft
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,53 @@
1
+ # bio-velvet_underground
2
+
3
+ [![Build Status](https://secure.travis-ci.org/wwood/bioruby-velvet_underground.png)](http://travis-ci.org/wwood/bioruby-velvet_underground)
4
+
5
+ This biogem is aimed at providing Ruby bindings to the velvet assembler's source code.
6
+
7
+ Note: this software is under active development!
8
+
9
+ ## Installation
10
+
11
+ ```sh
12
+ gem install bio-velvet_underground
13
+ ```
14
+
15
+ ## Usage
16
+
17
+ The only thing implemented at this stage is access to the binary sequence file created when velveth is run with the `-create_binary` flag.
18
+
19
+ ```ruby
20
+ require 'bio-velvet_underground'
21
+
22
+ seqs = Bio::Velvet::Underground::BinarySequenceStore.new '/path/to/velvet/directory/CnyUnifiedSeq'
23
+ seqs[1] #=> 'CACTTATCTCTACCAAAGATCACGATTTAGAATCAAACTATAAAGTTTTAGAAGATAAAGTAACAACTTATACATGGGGA'
24
+ seqs.length #=> 77 (there is 77 sequences in the CnyUnifiedSeq)
25
+
26
+ ```
27
+
28
+ Patches to other parts of velvet welcome.
29
+
30
+ The API doc is online. For more code examples see the test files in
31
+ the source tree.
32
+
33
+ ## Project home page
34
+
35
+ Information on the source tree, documentation, examples, issues and
36
+ how to contribute, see
37
+
38
+ http://github.com/wwood/bioruby-velvet_underground
39
+
40
+ The BioRuby community is on IRC server: irc.freenode.org, channel: #bioruby.
41
+
42
+ ## Cite
43
+
44
+ This software is currently unpublished.
45
+
46
+ ## Biogems.info
47
+
48
+ This Biogem is published at (http://biogems.info/index.html#bio-velvet_underground)
49
+
50
+ ## Copyright
51
+
52
+ Copyright (c) 2014 Ben Woodcroft. See LICENSE.txt for further details.
53
+
data/Rakefile ADDED
@@ -0,0 +1,51 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
17
+ gem.name = "bio-velvet_underground"
18
+ gem.homepage = "http://github.com/wwood/bioruby-velvet_underground"
19
+ gem.license = "GPL"
20
+ gem.summary = %Q{Bindings to some internals of the velvet assembler}
21
+ gem.description = %Q{Bindings to some internals of the velvet assembler.}
22
+ gem.email = "donttrustben@gmail.com"
23
+ gem.authors = ["Ben Woodcroft"]
24
+ # dependencies defined in Gemfile
25
+ gem.extensions = "ext/mkrf_conf.rb"
26
+
27
+ # by default, velvet as a git submodule is not included when making the gem
28
+ # but we need it to be.
29
+ gem.files.include "ext/src/src/*"
30
+ gem.files.include "ext/src/Makefile"
31
+ gem.files.include "ext/src/License"
32
+ gem.files.include "ext/src/third-party/**/*"
33
+ end
34
+ Jeweler::RubygemsDotOrgTasks.new
35
+
36
+ require 'rspec/core'
37
+ require 'rspec/core/rake_task'
38
+ RSpec::Core::RakeTask.new(:spec) do |spec|
39
+ spec.pattern = FileList['spec/**/*_spec.rb']
40
+ end
41
+
42
+ desc "Code coverage detail"
43
+ task :simplecov do
44
+ ENV['COVERAGE'] = "true"
45
+ Rake::Task['test'].execute
46
+ end
47
+
48
+ task :default => :spec
49
+
50
+ require 'yard'
51
+ YARD::Rake::YardocTask.new
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
data/ext/bioruby.patch ADDED
@@ -0,0 +1,60 @@
1
+ diff --git a/Makefile b/Makefile
2
+ index 8239e72..e0308db 100644
3
+ --- a/Makefile
4
+ +++ b/Makefile
5
+ @@ -38,16 +38,17 @@ endif
6
+
7
+ OBJ = obj/tightString.o obj/run.o obj/splay.o obj/splayTable.o obj/graph.o obj/run2.o obj/fibHeap.o obj/fib.o obj/concatenatedGraph.o obj/passageMarker.o obj/graphStats.o obj/correctedGraph.o obj/dfib.o obj/dfibHeap.o obj/recycleBin.o obj/readSet.o obj/binarySequences.o obj/shortReadPairs.o obj/locallyCorrectedGraph.o obj/graphReConstruction.o obj/roadMap.o obj/preGraph.o obj/preGraphConstruction.o obj/concatenatedPreGraph.o obj/readCoherentGraph.o obj/utility.o obj/kmer.o obj/scaffold.o obj/kmerOccurenceTable.o obj/allocArray.o obj/autoOpen.o
8
+ OBJDBG = $(subst obj,obj/dbg,$(OBJ))
9
+ +OBJSHARED = $(subst obj,obj/shared,$(OBJ))
10
+
11
+ default : cleanobj zlib obj velveth velvetg doc
12
+
13
+ clean : clean-zlib
14
+ - -rm obj/*.o obj/dbg/*.o ./velvet*
15
+ + -rm obj/*.o obj/dbg/*.o obj/shared/*.o obj/shared/velvet.so.0.0.1 ./velvet*
16
+ -rm -f doc/manual_src/Manual.toc doc/manual_src/Manual.aux doc/manual_src/Manual.out doc/manual_src/Manual.log
17
+ -rm -f doc/manual_src/Columbus_manual.aux doc/manual_src/Columbus_manual.out doc/manual_src/Columbus_manual.log
18
+
19
+ cleanobj:
20
+ - -rm obj/*.o obj/dbg/*.o
21
+ + -rm obj/*.o obj/dbg/*.o obj/shared/*.o
22
+
23
+ ifdef BUNDLEDZLIB
24
+ Z_LIB_DIR=third-party/zlib-1.2.3
25
+ @@ -118,3 +119,15 @@ Manual.pdf: doc/manual_src/Manual.tex doc/manual_src/Columbus_manual.tex
26
+
27
+ test: velvetg velveth
28
+ cd tests && ./run-tests.sh
29
+ +
30
+ +sharedobjdir:
31
+ + mkdir -p obj/shared
32
+ +
33
+ +obj/shared: sharedobjdir $(OBJSHARED)
34
+ +
35
+ +obj/shared/%.o: src/%.c
36
+ + $(CC) -fPIC $(CFLAGS) $(DEBUG) $(DEF) -c $? -o $@
37
+ +
38
+ +shared: zlib obj/shared
39
+ + cd obj/shared && gcc -shared -Wl,-soname,libvelvet.so.1 -o libvelvet.so.1.0 allocArray.o autoOpen.o binarySequences.o concatenatedGraph.o concatenatedPreGraph.o correctedGraph.o dfibHeap.o dfib.o fibHeap.o fib.o graph.o graphReConstruction.o graphStats.o kmer.o kmerOccurenceTable.o locallyCorrectedGraph.o passageMarker.o preGraphConstruction.o preGraph.o readCoherentGraph.o readSet.o recycleBin.o roadMap.o scaffold.o shortReadPairs.o splay.o splayTable.o tightString.o utility.o
40
+ +
41
+ diff --git a/src/utility.c b/src/utility.c
42
+ index d402629..126b386 100644
43
+ --- a/src/utility.c
44
+ +++ b/src/utility.c
45
+ @@ -97,6 +97,7 @@ void exitErrorf(int exitStatus, boolean showErrno, const char *format, ...)
46
+
47
+ void velvetLog(const char *format, ...)
48
+ {
49
+ +/*
50
+ static boolean timeIsSet = false;
51
+ static struct timeval tvStart;
52
+ struct timeval tvNow;
53
+ @@ -120,6 +121,7 @@ void velvetLog(const char *format, ...)
54
+ #ifdef DEBUG
55
+ fflush(stdout);
56
+ #endif
57
+ +*/
58
+ }
59
+
60
+ void velvetFprintf(FILE * file, const char * format, ...)
data/ext/mkrf_conf.rb ADDED
@@ -0,0 +1,50 @@
1
+ #(c) Copyright 2011 Raoul Bonnal. All Rights Reserved. Modified by Ben Woodcroft, 2014
2
+
3
+ # create Rakefile for shared library compilation
4
+
5
+
6
+
7
+ path = File.expand_path(File.dirname(__FILE__))
8
+
9
+ path_external = File.join(path, "../lib/bio-velvet_underground/external")
10
+
11
+ version = File.open(File.join(path_external,"VERSION"),'r')
12
+ Version = version.read
13
+ version.close
14
+
15
+ File.open(File.join(path,"Rakefile"),"w") do |rakefile|
16
+ rakefile.write <<-RAKE
17
+ require 'rbconfig'
18
+ require 'fileutils'
19
+ include FileUtils::Verbose
20
+ require 'rake/clean'
21
+
22
+ path = File.expand_path(File.dirname(__FILE__))
23
+ path_external = File.join(File.dirname(__FILE__), "../lib/bio-velvet_underground/external")
24
+
25
+ task :compile do
26
+ cd(File.join(File.dirname(__FILE__),'src')) do
27
+ sh "patch -p1 < ../bioruby.patch"
28
+ case Config::CONFIG['host_os']
29
+ when /linux/
30
+ sh "make shared"
31
+ cp("obj/shared/libvelvet.so.1.0",path_external)
32
+ when /darwin/
33
+ raise NotImplementedError, "possibly will work, but bio-velvet_underground is not tested on OSX"
34
+ when /mswin|mingw/ then raise NotImplementedError, "bio-velvet_underground library is not available for Windows platform"
35
+ end #case
36
+ end #cd
37
+ end
38
+
39
+ task :clean do
40
+ cd(File.join(path,'src')) do
41
+ sh "make clean"
42
+ end
43
+ rm(File.join(path_external,"libvelvet.so.1.0"))
44
+ end
45
+
46
+ task :default => [:compile]
47
+
48
+ RAKE
49
+
50
+ end
data/ext/src/Makefile ADDED
@@ -0,0 +1,125 @@
1
+ CC = gcc
2
+ CFLAGS = -Wall
3
+ DEBUG = -g
4
+ LIBS = -lm
5
+ OPT = -O3
6
+ MAXKMERLENGTH=31
7
+ CATEGORIES=2
8
+ DEF = -D MAXKMERLENGTH=$(MAXKMERLENGTH) -D CATEGORIES=$(CATEGORIES)
9
+ PDFLATEX_VERSION := $(shell pdflatex --version 2> /dev/null)
10
+
11
+ # Mac OS users: uncomment the following lines
12
+ CFLAGS = -Wall -m64
13
+
14
+ # Sparc/Solaris users: uncomment the following line
15
+ # CFLAGS = -Wall -m64
16
+
17
+ ifdef BIGASSEMBLY
18
+ override DEF := $(DEF) -D BIGASSEMBLY
19
+ endif
20
+
21
+ ifdef VBIGASSEMBLY
22
+ override DEF := $(DEF) -D BIGASSEMBLY -D VBIGASSEMBLY
23
+ endif
24
+
25
+
26
+ ifdef LONGSEQUENCES
27
+ override DEF := $(DEF) -D LONGSEQUENCES
28
+ endif
29
+
30
+ # OpenMP
31
+ ifdef OPENMP
32
+ override CFLAGS := $(CFLAGS) -fopenmp
33
+ endif
34
+
35
+ # Per library coverage
36
+ ifdef SINGLE_COV_CAT
37
+ override DEF := $(DEF) -D SINGLE_COV_CAT
38
+ endif
39
+
40
+ OBJ = obj/tightString.o obj/run.o obj/splay.o obj/splayTable.o obj/graph.o obj/run2.o obj/fibHeap.o obj/fib.o obj/concatenatedGraph.o obj/passageMarker.o obj/graphStats.o obj/correctedGraph.o obj/dfib.o obj/dfibHeap.o obj/recycleBin.o obj/readSet.o obj/binarySequences.o obj/shortReadPairs.o obj/locallyCorrectedGraph.o obj/graphReConstruction.o obj/roadMap.o obj/preGraph.o obj/preGraphConstruction.o obj/concatenatedPreGraph.o obj/readCoherentGraph.o obj/utility.o obj/kmer.o obj/scaffold.o obj/kmerOccurenceTable.o obj/allocArray.o obj/autoOpen.o
41
+ OBJDBG = $(subst obj,obj/dbg,$(OBJ))
42
+
43
+ default : cleanobj zlib obj velveth velvetg doc
44
+
45
+ clean : clean-zlib
46
+ -rm obj/*.o obj/dbg/*.o ./velvet*
47
+ -rm -f doc/manual_src/Manual.toc doc/manual_src/Manual.aux doc/manual_src/Manual.out doc/manual_src/Manual.log
48
+ -rm -f doc/manual_src/Columbus_manual.aux doc/manual_src/Columbus_manual.out doc/manual_src/Columbus_manual.log
49
+
50
+ cleanobj:
51
+ -rm obj/*.o obj/dbg/*.o
52
+
53
+ ifdef BUNDLEDZLIB
54
+ Z_LIB_DIR=third-party/zlib-1.2.3
55
+ Z_LIB_FILES=$(Z_LIB_DIR)/*.o
56
+ override DEF := $(DEF) -D BUNDLEDZLIB
57
+
58
+ zlib:
59
+ cd $(Z_LIB_DIR); ./configure; make; rm minigzip.o; rm example.o
60
+
61
+ clean-zlib :
62
+ cd $(Z_LIB_DIR) && make clean
63
+ else
64
+ Z_LIB_FILES=-lz
65
+
66
+ zlib :
67
+ clean-zlib :
68
+ endif
69
+
70
+ velveth : obj
71
+ $(CC) $(CFLAGS) $(OPT) $(LDFLAGS) -o velveth obj/tightString.o obj/run.o obj/recycleBin.o obj/splay.o obj/splayTable.o obj/readSet.o obj/binarySequences.o obj/utility.o obj/kmer.o obj/kmerOccurenceTable.o obj/autoOpen.o $(Z_LIB_FILES) $(LIBS)
72
+
73
+
74
+ velvetg : obj
75
+ $(CC) $(CFLAGS) $(OPT) $(LDFLAGS) -o velvetg obj/tightString.o obj/graph.o obj/run2.o obj/fibHeap.o obj/fib.o obj/concatenatedGraph.o obj/passageMarker.o obj/graphStats.o obj/correctedGraph.o obj/dfib.o obj/dfibHeap.o obj/recycleBin.o obj/readSet.o obj/binarySequences.o obj/shortReadPairs.o obj/scaffold.o obj/locallyCorrectedGraph.o obj/graphReConstruction.o obj/roadMap.o obj/preGraph.o obj/preGraphConstruction.o obj/concatenatedPreGraph.o obj/readCoherentGraph.o obj/utility.o obj/kmer.o obj/kmerOccurenceTable.o obj/allocArray.o obj/autoOpen.o $(Z_LIB_FILES) $(LIBS)
76
+
77
+ debug : override DEF := $(DEF) -D DEBUG
78
+ debug : cleanobj obj/dbg
79
+ $(CC) $(CFLAGS) $(LDFLAGS) $(DEBUG) -o velveth obj/dbg/tightString.o obj/dbg/run.o obj/dbg/recycleBin.o obj/dbg/splay.o obj/dbg/splayTable.o obj/dbg/readSet.o obj/dbg/binarySequences.o obj/dbg/utility.o obj/dbg/kmer.o obj/dbg/kmerOccurenceTable.o obj/dbg/allocArray.o obj/dbg/autoOpen.o $(Z_LIB_FILES) $(LIBS)
80
+ $(CC) $(CFLAGS) $(LDFLAGS) $(DEBUG) -o velvetg obj/dbg/tightString.o obj/dbg/graph.o obj/dbg/run2.o obj/dbg/fibHeap.o obj/dbg/fib.o obj/dbg/concatenatedGraph.o obj/dbg/passageMarker.o obj/dbg/graphStats.o obj/dbg/correctedGraph.o obj/dbg/dfib.o obj/dbg/dfibHeap.o obj/dbg/recycleBin.o obj/dbg/readSet.o obj/dbg/binarySequences.o obj/dbg/shortReadPairs.o obj/dbg/scaffold.o obj/dbg/locallyCorrectedGraph.o obj/dbg/graphReConstruction.o obj/dbg/roadMap.o obj/dbg/preGraph.o obj/dbg/preGraphConstruction.o obj/dbg/concatenatedPreGraph.o obj/dbg/readCoherentGraph.o obj/dbg/utility.o obj/dbg/kmer.o obj/dbg/kmerOccurenceTable.o obj/dbg/allocArray.o obj/dbg/autoOpen.o $(Z_LIB_FILES) $(LIBS)
81
+
82
+ color : override DEF := $(DEF) -D COLOR
83
+ color : cleanobj obj_de
84
+ $(CC) $(CFLAGS) $(OPT) $(LDFLAGS) -o velveth_de obj/tightString.o obj/run.o obj/recycleBin.o obj/splay.o obj/splayTable.o obj/readSet.o obj/binarySequences.o obj/utility.o obj/kmer.o obj/kmerOccurenceTable.o obj/allocArray.o obj/autoOpen.o $(Z_LIB_FILES) $(LIBS)
85
+ $(CC) $(CFLAGS) $(OPT) $(LDFLAGS) -o velvetg_de obj/tightString.o obj/graph.o obj/run2.o obj/fibHeap.o obj/fib.o obj/concatenatedGraph.o obj/passageMarker.o obj/graphStats.o obj/correctedGraph.o obj/dfib.o obj/dfibHeap.o obj/recycleBin.o obj/readSet.o obj/binarySequences.o obj/shortReadPairs.o obj/scaffold.o obj/locallyCorrectedGraph.o obj/graphReConstruction.o obj/roadMap.o obj/preGraph.o obj/preGraphConstruction.o obj/concatenatedPreGraph.o obj/readCoherentGraph.o obj/utility.o obj/kmer.o obj/kmerOccurenceTable.o obj/allocArray.o obj/autoOpen.o $(Z_LIB_FILES) $(LIBS)
86
+
87
+ colordebug : override DEF := $(DEF) -D COLOR -D DEBUG
88
+ colordebug : cleanobj obj/dbg_de
89
+ $(CC) $(CFLAGS) $(LDFLAGS) $(DEBUG) -o velveth_de obj/dbg/tightString.o obj/dbg/run.o obj/dbg/recycleBin.o obj/dbg/splay.o obj/dbg/splayTable.o obj/dbg/readSet.o obj/dbg/binarySequences.o obj/dbg/utility.o obj/dbg/kmer.o obj/dbg/kmerOccurenceTable.o obj/dbg/allocArray.o obj/dbg/autoOpen.o $(Z_LIB_FILES) $(LIBS)
90
+ $(CC) $(CFLAGS) $(LDFLAGS) $(DEBUG) -o velvetg_de obj/dbg/tightString.o obj/dbg/graph.o obj/dbg/run2.o obj/dbg/fibHeap.o obj/dbg/fib.o obj/dbg/concatenatedGraph.o obj/dbg/passageMarker.o obj/dbg/graphStats.o obj/dbg/correctedGraph.o obj/dbg/dfib.o obj/dbg/dfibHeap.o obj/dbg/recycleBin.o obj/dbg/readSet.o obj/dbg/binarySequences.o obj/dbg/shortReadPairs.o obj/dbg/scaffold.o obj/dbg/locallyCorrectedGraph.o obj/dbg/graphReConstruction.o obj/dbg/roadMap.o obj/dbg/preGraph.o obj/dbg/preGraphConstruction.o obj/dbg/concatenatedPreGraph.o obj/dbg/readCoherentGraph.o obj/dbg/utility.o obj/dbg/kmer.o obj/dbg/kmerOccurenceTable.o obj/dbg/allocArray.o obj/dbg/autoOpen.o $(Z_LIB_FILES) $(LIBS)
91
+
92
+ objdir:
93
+ mkdir -p obj
94
+
95
+ obj: zlib cleanobj objdir $(OBJ)
96
+
97
+ obj_de: override DEF := $(DEF) -D COLOR
98
+ obj_de: zlib cleanobj objdir $(OBJ)
99
+
100
+ obj/dbgdir:
101
+ mkdir -p obj/dbg
102
+
103
+ obj/dbg: override DEF := $(DEF) -D DEBUG
104
+ obj/dbg: zlib cleanobj obj/dbgdir $(OBJDBG)
105
+
106
+ obj/dbg_de: override DEF := $(DEF) -D COLOR -D DEBUG
107
+ obj/dbg_de: zlib cleanobj obj/dbgdir $(OBJDBG)
108
+
109
+ obj/%.o: src/%.c
110
+ $(CC) $(CFLAGS) $(OPT) $(DEF) -c $? -o $@
111
+
112
+ obj/dbg/%.o: src/%.c
113
+ $(CC) $(CFLAGS) $(DEBUG) $(DEF) -c $? -o $@
114
+
115
+ doc: Manual.pdf
116
+
117
+ Manual.pdf: doc/manual_src/Manual.tex doc/manual_src/Columbus_manual.tex
118
+ ifdef PDFLATEX_VERSION
119
+ cd doc/manual_src; pdflatex Manual.tex; pdflatex Manual.tex; mv Manual.pdf ../..; pdflatex Columbus_manual.tex; mv Columbus_manual.pdf ../..
120
+ else
121
+ @echo pdflatex not found, cannot rebuild the manual.
122
+ endif
123
+
124
+ test: velvetg velveth
125
+ cd tests && ./run-tests.sh
@@ -0,0 +1,305 @@
1
+ /*
2
+ Copyright 2009 Sylvain Foret (sylvain.foret@anu.edu.au)
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
+
22
+ #include <stdlib.h>
23
+ #include <stdio.h>
24
+ #include <unistd.h>
25
+ #ifdef _OPENMP
26
+ #include <omp.h>
27
+ #endif
28
+
29
+ #include "allocArray.h"
30
+ #include "utility.h"
31
+
32
+ #ifdef DEBUG
33
+ #define NB_PAGES_ALLOC 1
34
+ #define BLOCKS_ALLOC_SIZE 1
35
+ #else
36
+ #define NB_PAGES_ALLOC 128
37
+ #define BLOCKS_ALLOC_SIZE 128
38
+ #endif
39
+
40
+ #ifndef VBIGASSEMBLY
41
+ #define INDEX_LENGTH 32
42
+ #else
43
+ #define INDEX_LENGTH 64
44
+ #endif
45
+
46
+ struct AllocArrayFreeElement_st
47
+ {
48
+ AllocArrayFreeElement *next;
49
+ ArrayIdx idx;
50
+ };
51
+
52
+ static void initAllocArray(AllocArray * array, size_t elementSize, char * name)
53
+ {
54
+ array->freeElements = NULL;
55
+ array->elementSize = elementSize;
56
+ array->blockSize = sysconf (_SC_PAGESIZE) * NB_PAGES_ALLOC;
57
+ array->maxElements = array->blockSize / array->elementSize;
58
+ array->maxBlocks = BLOCKS_ALLOC_SIZE;
59
+ array->blocks = mallocOrExit (array->maxBlocks, void*);
60
+ array->blocks[0] = mallocOrExit (array->blockSize, char);
61
+ array->currentBlocks = 1;
62
+ array->currentElements = 0;
63
+ #ifdef DEBUG
64
+ array->elementsRecycled = 0;
65
+ array->elementsAllocated = 0;
66
+ array->name = name;
67
+ #endif
68
+ #ifdef _OPENMP
69
+ array->nbThreads = 0;
70
+ #endif
71
+ }
72
+
73
+ AllocArray*
74
+ newAllocArray (size_t elementSize, char *name)
75
+ {
76
+ AllocArray *array;
77
+
78
+ if (elementSize < sizeof(AllocArrayFreeElement)) {
79
+ velvetLog("Elements too small to create an AllocArray!\n");
80
+ exit(-1);
81
+ }
82
+ array = mallocOrExit (1, AllocArray);
83
+ initAllocArray(array, elementSize, name);
84
+ return array;
85
+ }
86
+
87
+ void
88
+ destroyAllocArrayChunks (AllocArray *array)
89
+ {
90
+ size_t i;
91
+ for (i = 0; i < array->currentBlocks; i++)
92
+ free (array->blocks[i]);
93
+ free (array->blocks);
94
+ }
95
+
96
+ void
97
+ destroyAllocArray (AllocArray *array)
98
+ {
99
+ if (array)
100
+ {
101
+ destroyAllocArrayChunks(array);
102
+ #ifdef DEBUG
103
+ velvetLog(">>> Allocation summary for %s\n", array->name);
104
+ velvetLog(">>> Alloc'ed %ld bytes\n", array->blockSize * array->currentBlocks);
105
+ velvetLog(">>> Alloc'ed %ld elements\n", array->elementsAllocated);
106
+ velvetLog(">>> Recycled %ld elements\n", array->elementsRecycled);
107
+ #endif
108
+ free (array);
109
+ }
110
+ }
111
+
112
+ ArrayIdx
113
+ allocArrayAllocate (AllocArray *array)
114
+ {
115
+ if (array->freeElements != NULL)
116
+ {
117
+ AllocArrayFreeElement *element;
118
+
119
+ element = array->freeElements;
120
+ array->freeElements = element->next;
121
+ #ifdef DEBUG
122
+ array->elementsRecycled++;
123
+ #endif
124
+ return element->idx;
125
+ }
126
+ if (array->currentElements >= array->maxElements)
127
+ {
128
+ if (array->currentBlocks == array->maxBlocks)
129
+ {
130
+ array->maxBlocks += BLOCKS_ALLOC_SIZE;
131
+ array->blocks = reallocOrExit (array->blocks, array->maxBlocks, void*);
132
+ }
133
+ array->blocks[array->currentBlocks] = mallocOrExit (array->blockSize, char);
134
+ array->currentBlocks++;
135
+ array->currentElements = 0;
136
+ }
137
+ array->currentElements++;
138
+ #ifndef VBIGASSEMBLY
139
+ if (array->maxElements * (array->currentBlocks - 1) + array->currentElements == UINT32_MAX)
140
+ {
141
+ #ifdef DEBUG
142
+ velvetLog (">>> Reached maximum `%s' addressable with %i bits\n", array->name, INDEX_LENGTH);
143
+ #else
144
+ velvetLog (">>> Reached maximum elements addressable with %i bits\n", INDEX_LENGTH);
145
+ #endif
146
+ abort();
147
+ }
148
+ #endif
149
+
150
+ #ifdef DEBUG
151
+ array->elementsAllocated++;
152
+ #endif
153
+
154
+ return array->maxElements * (array->currentBlocks - 1) + array->currentElements;
155
+ }
156
+
157
+ static void*
158
+ allocArrayGetElement (AllocArray *array, ArrayIdx idx)
159
+ {
160
+ if (idx != NULL_IDX)
161
+ {
162
+ const ArrayIdx i = idx - 1;
163
+ const ArrayIdx blockIdx = i / array->maxElements;
164
+ const ArrayIdx elementIdx = i % array->maxElements;
165
+ return ((char*)(array->blocks[blockIdx])) + elementIdx * array->elementSize;
166
+ }
167
+ return NULL;
168
+ }
169
+
170
+ void
171
+ allocArrayFree (AllocArray *array, ArrayIdx idx)
172
+ {
173
+ if (idx != NULL_IDX)
174
+ {
175
+ AllocArrayFreeElement *freeElem;
176
+
177
+ freeElem = allocArrayGetElement (array, idx);
178
+ freeElem->idx = idx;
179
+ freeElem->next = array->freeElements;
180
+ array->freeElements = freeElem;
181
+ }
182
+ }
183
+
184
+ #ifdef _OPENMP
185
+
186
+ #define BLOCKS_ALLOC_SHIFT 16
187
+
188
+ static void initAllocArrayArray(AllocArray *array,
189
+ void *blocks,
190
+ size_t nbBlocks,
191
+ size_t elementSize,
192
+ char *name,
193
+ int nbThreads,
194
+ int thisThread)
195
+ {
196
+ array->freeElements = NULL;
197
+ array->elementSize = elementSize;
198
+ array->blockSize = (((size_t) 1) << BLOCKS_ALLOC_SHIFT) * elementSize;
199
+ array->maxElements = (((size_t) 1) << BLOCKS_ALLOC_SHIFT);
200
+ array->maxBlocks = nbBlocks;
201
+ array->blocks = blocks;
202
+ array->blocks[thisThread] = callocOrExit(array->blockSize, char);
203
+ array->currentBlocks = thisThread;
204
+ array->currentElements = 0;
205
+ array->nbThreads = nbThreads;
206
+ #ifdef DEBUG
207
+ array->elementsRecycled = 0;
208
+ array->elementsAllocated = 0;
209
+ array->name = name;
210
+ #endif
211
+ }
212
+
213
+ AllocArray *newAllocArrayArray(unsigned int n,
214
+ size_t elementSize,
215
+ char * name)
216
+ {
217
+ AllocArray *allocArray;
218
+ void **blocks;
219
+ size_t nbBlocks;
220
+ int i;
221
+
222
+ allocArray = callocOrExit (n + 1, AllocArray);
223
+ nbBlocks = (((size_t) 1) << (INDEX_LENGTH - BLOCKS_ALLOC_SHIFT));
224
+ blocks = callocOrExit(nbBlocks, void*);
225
+ for (i = 0; i < n; i++)
226
+ initAllocArrayArray(allocArray + i,
227
+ blocks,
228
+ nbBlocks,
229
+ elementSize,
230
+ name,
231
+ n, i);
232
+ /* Last element marker */
233
+ allocArray[n].currentBlocks = n;
234
+
235
+ return allocArray;
236
+ }
237
+
238
+ void destroyAllocArrayArray(AllocArray *allocArray)
239
+ {
240
+ int i;
241
+
242
+ for (i = 0; i < allocArray[0].maxBlocks; i++)
243
+ if (allocArray[0].blocks[i] != NULL)
244
+ free(allocArray[0].blocks[i]);
245
+
246
+ free(allocArray[0].blocks);
247
+ free(allocArray);
248
+ }
249
+
250
+ ArrayIdx allocArrayArrayAllocate(AllocArray *array)
251
+ {
252
+ int thread = omp_get_thread_num();
253
+
254
+ AllocArray * lastArray = array + array->nbThreads;
255
+ array += thread;
256
+ if (array->freeElements != NULL)
257
+ {
258
+ AllocArrayFreeElement *element;
259
+
260
+ element = array->freeElements;
261
+ array->freeElements = element->next;
262
+ #ifdef DEBUG
263
+ array->elementsRecycled++;
264
+ #endif
265
+ return element->idx;
266
+ }
267
+ if (array->currentElements >= array->maxElements)
268
+ {
269
+ #pragma omp critical
270
+ array->currentBlocks = lastArray->currentBlocks++;
271
+
272
+ if (array->currentBlocks >= array->maxBlocks)
273
+ {
274
+ #ifdef DEBUG
275
+ velvetLog(">>> Reached maximum `%s' addressable with %i bits\n",
276
+ array->name, INDEX_LENGTH);
277
+ #else
278
+ velvetLog(">>> Reached maximum elements addressable with %i bits\n", INDEX_LENGTH);
279
+ #endif
280
+ abort();
281
+ }
282
+ array->blocks[array->currentBlocks] = callocOrExit(array->blockSize, char);
283
+ array->currentElements = 0;
284
+ }
285
+ array->currentElements++;
286
+ #ifdef DEBUG
287
+ array->elementsAllocated++;
288
+ #endif
289
+ return array->maxElements * array->currentBlocks + array->currentElements;
290
+ }
291
+
292
+ void
293
+ allocArrayArrayFree(AllocArray *array, ArrayIdx idx)
294
+ {
295
+ if (idx != NULL_IDX)
296
+ {
297
+ AllocArrayFreeElement *freeElem;
298
+
299
+ freeElem = allocArrayGetElement(array, idx);
300
+ freeElem->idx = idx;
301
+ freeElem->next = array->freeElements;
302
+ array->freeElements = freeElem;
303
+ }
304
+ }
305
+ #endif