finishm 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.
- checksums.yaml +7 -0
- data/.document +5 -0
- data/.gitmodules +3 -0
- data/.rspec +1 -0
- data/Gemfile +31 -0
- data/LICENSE.txt +20 -0
- data/README.md +59 -0
- data/Rakefile +51 -0
- data/VERSION +1 -0
- data/bin/assembly_visualiser +106 -0
- data/bin/check_primer_combinations.rb +73 -0
- data/bin/contig_joiner.rb +244 -0
- data/bin/contigs_against_assembly.rb +153 -0
- data/bin/finishm +143 -0
- data/bin/finishm_assembler +55 -0
- data/bin/finishm_gap_closer.rb +241 -0
- data/bin/kmer_abundance_file_tool.rb +49 -0
- data/bin/kmer_pattern_to_assembly.rb +377 -0
- data/bin/kmer_profile_finder.rb +92 -0
- data/bin/kmers_count_parse.d +52 -0
- data/bin/kmers_count_tabulate.d +123 -0
- data/bin/kmers_count_tabulate.rb +84 -0
- data/bin/pcr_result_parser.rb +108 -0
- data/bin/primer_finder.rb +119 -0
- data/bin/read_selection_by_kmer.d +174 -0
- data/bin/scaffold_by_pattern.rb +119 -0
- data/bin/scaffold_connection_possibilities_to_knowns.rb +193 -0
- data/bin/scaffold_end_coverages.rb +69 -0
- data/bin/trail_validator.rb +84 -0
- data/ext/mkrf_conf.rb +56 -0
- data/ext/src/Makefile +140 -0
- data/ext/src/src/allocArray.c +305 -0
- data/ext/src/src/allocArray.h +86 -0
- data/ext/src/src/autoOpen.c +107 -0
- data/ext/src/src/autoOpen.h +18 -0
- data/ext/src/src/binarySequences.c +813 -0
- data/ext/src/src/binarySequences.h +125 -0
- data/ext/src/src/concatenatedGraph.c +233 -0
- data/ext/src/src/concatenatedGraph.h +30 -0
- data/ext/src/src/concatenatedPreGraph.c +262 -0
- data/ext/src/src/concatenatedPreGraph.h +29 -0
- data/ext/src/src/correctedGraph.c +2643 -0
- data/ext/src/src/correctedGraph.h +32 -0
- data/ext/src/src/dfib.c +509 -0
- data/ext/src/src/dfib.h +69 -0
- data/ext/src/src/dfibHeap.c +89 -0
- data/ext/src/src/dfibHeap.h +39 -0
- data/ext/src/src/dfibpriv.h +105 -0
- data/ext/src/src/fib.c +628 -0
- data/ext/src/src/fib.h +78 -0
- data/ext/src/src/fibHeap.c +79 -0
- data/ext/src/src/fibHeap.h +41 -0
- data/ext/src/src/fibpriv.h +110 -0
- data/ext/src/src/globals.h +154 -0
- data/ext/src/src/graph.c +3932 -0
- data/ext/src/src/graph.h +233 -0
- data/ext/src/src/graphReConstruction.c +1472 -0
- data/ext/src/src/graphReConstruction.h +30 -0
- data/ext/src/src/graphStats.c +2167 -0
- data/ext/src/src/graphStats.h +72 -0
- data/ext/src/src/graphStructures.h +52 -0
- data/ext/src/src/kmer.c +652 -0
- data/ext/src/src/kmer.h +73 -0
- data/ext/src/src/kmerOccurenceTable.c +236 -0
- data/ext/src/src/kmerOccurenceTable.h +44 -0
- data/ext/src/src/kseq.h +223 -0
- data/ext/src/src/locallyCorrectedGraph.c +557 -0
- data/ext/src/src/locallyCorrectedGraph.h +40 -0
- data/ext/src/src/passageMarker.c +677 -0
- data/ext/src/src/passageMarker.h +137 -0
- data/ext/src/src/preGraph.c +1717 -0
- data/ext/src/src/preGraph.h +106 -0
- data/ext/src/src/preGraphConstruction.c +990 -0
- data/ext/src/src/preGraphConstruction.h +26 -0
- data/ext/src/src/probe_node_finder.c +84 -0
- data/ext/src/src/probe_node_finder.h +6 -0
- data/ext/src/src/readCoherentGraph.c +557 -0
- data/ext/src/src/readCoherentGraph.h +30 -0
- data/ext/src/src/readSet.c +1734 -0
- data/ext/src/src/readSet.h +67 -0
- data/ext/src/src/readToNode.c +218 -0
- data/ext/src/src/readToNode.h +35 -0
- data/ext/src/src/recycleBin.c +199 -0
- data/ext/src/src/recycleBin.h +58 -0
- data/ext/src/src/roadMap.c +342 -0
- data/ext/src/src/roadMap.h +65 -0
- data/ext/src/src/run.c +318 -0
- data/ext/src/src/run.h +52 -0
- data/ext/src/src/run2.c +744 -0
- data/ext/src/src/runReadToNode.c +29 -0
- data/ext/src/src/scaffold.c +1876 -0
- data/ext/src/src/scaffold.h +64 -0
- data/ext/src/src/shortReadPairs.c +1243 -0
- data/ext/src/src/shortReadPairs.h +32 -0
- data/ext/src/src/splay.c +259 -0
- data/ext/src/src/splay.h +43 -0
- data/ext/src/src/splayTable.c +1315 -0
- data/ext/src/src/splayTable.h +31 -0
- data/ext/src/src/tightString.c +362 -0
- data/ext/src/src/tightString.h +82 -0
- data/ext/src/src/utility.c +199 -0
- data/ext/src/src/utility.h +98 -0
- data/ext/src/third-party/zlib-1.2.3/ChangeLog +855 -0
- data/ext/src/third-party/zlib-1.2.3/FAQ +339 -0
- data/ext/src/third-party/zlib-1.2.3/INDEX +51 -0
- data/ext/src/third-party/zlib-1.2.3/Makefile +154 -0
- data/ext/src/third-party/zlib-1.2.3/Makefile.in +154 -0
- data/ext/src/third-party/zlib-1.2.3/README +125 -0
- data/ext/src/third-party/zlib-1.2.3/adler32.c +149 -0
- data/ext/src/third-party/zlib-1.2.3/adler32.o +0 -0
- data/ext/src/third-party/zlib-1.2.3/algorithm.txt +209 -0
- data/ext/src/third-party/zlib-1.2.3/amiga/Makefile.pup +66 -0
- data/ext/src/third-party/zlib-1.2.3/amiga/Makefile.sas +65 -0
- data/ext/src/third-party/zlib-1.2.3/as400/bndsrc +132 -0
- data/ext/src/third-party/zlib-1.2.3/as400/compile.clp +123 -0
- data/ext/src/third-party/zlib-1.2.3/as400/readme.txt +111 -0
- data/ext/src/third-party/zlib-1.2.3/as400/zlib.inc +331 -0
- data/ext/src/third-party/zlib-1.2.3/compress.c +79 -0
- data/ext/src/third-party/zlib-1.2.3/compress.o +0 -0
- data/ext/src/third-party/zlib-1.2.3/configure +459 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/README.contrib +71 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/ada/buffer_demo.adb +106 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/ada/mtest.adb +156 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/ada/read.adb +156 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/ada/readme.txt +65 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/ada/test.adb +463 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-streams.adb +225 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-streams.ads +114 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-thin.adb +141 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib-thin.ads +450 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib.adb +701 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib.ads +328 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/ada/zlib.gpr +20 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/asm586/README.586 +43 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/asm586/match.S +364 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/asm686/README.686 +34 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/asm686/match.S +329 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/blast/Makefile +8 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/blast/README +4 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/blast/blast.c +444 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/blast/blast.h +71 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/blast/test.pk +0 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/blast/test.txt +1 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/delphi/ZLib.pas +557 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/delphi/ZLibConst.pas +11 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/delphi/readme.txt +76 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/delphi/zlibd32.mak +93 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib.build +33 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib.chm +0 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib.sln +21 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/AssemblyInfo.cs +58 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/ChecksumImpl.cs +202 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/CircularBuffer.cs +83 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/CodecBase.cs +198 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/Deflater.cs +106 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/DotZLib.cs +288 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/DotZLib.csproj +141 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/GZipStream.cs +301 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/Inflater.cs +105 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/DotZLib/UnitTests.cs +274 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/LICENSE_1_0.txt +23 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/dotzlib/readme.txt +58 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/infback9/README +1 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/infback9/infback9.c +608 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/infback9/infback9.h +37 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inffix9.h +107 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inflate9.h +47 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inftree9.c +323 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/infback9/inftree9.h +55 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/inflate86/inffas86.c +1157 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/inflate86/inffast.S +1368 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/iostream/test.cpp +24 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/iostream/zfstream.cpp +329 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/iostream/zfstream.h +128 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/iostream2/zstream.h +307 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/iostream2/zstream_test.cpp +25 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/README +35 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/TODO +17 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/test.cc +50 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/zfstream.cc +479 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/iostream3/zfstream.h +466 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masm686/match.asm +413 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/bld_ml64.bat +2 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/gvmat64.asm +513 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/gvmat64.obj +0 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/inffas8664.c +186 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/inffasx64.asm +392 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/inffasx64.obj +0 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masmx64/readme.txt +28 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/bld_ml32.bat +2 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/gvmat32.asm +972 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/gvmat32.obj +0 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/gvmat32c.c +62 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/inffas32.asm +1083 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/inffas32.obj +0 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/mkasm.bat +3 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/masmx86/readme.txt +21 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/minizip/ChangeLogUnzip +67 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/minizip/Makefile +25 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/minizip/crypt.h +132 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/minizip/ioapi.c +177 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/minizip/ioapi.h +75 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/minizip/iowin32.c +270 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/minizip/iowin32.h +21 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/minizip/miniunz.c +585 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/minizip/minizip.c +420 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/minizip/mztools.c +281 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/minizip/mztools.h +31 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/minizip/unzip.c +1598 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/minizip/unzip.h +354 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/minizip/zip.c +1219 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/minizip/zip.h +235 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/pascal/example.pas +599 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/pascal/readme.txt +76 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/pascal/zlibd32.mak +93 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/pascal/zlibpas.pas +236 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/puff/Makefile +8 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/puff/README +63 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/puff/puff.c +837 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/puff/puff.h +31 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/puff/zeros.raw +0 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/testzlib/testzlib.c +275 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/testzlib/testzlib.txt +10 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/untgz/Makefile +14 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/untgz/Makefile.msc +17 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/untgz/untgz.c +674 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/readme.txt +73 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/miniunz.vcproj +126 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/minizip.vcproj +126 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/testzlib.vcproj +126 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlib.rc +32 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibstat.vcproj +246 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibvc.def +92 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibvc.sln +78 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc7/zlibvc.vcproj +445 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/miniunz.vcproj +566 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/minizip.vcproj +563 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/testzlib.vcproj +948 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/testzlibdll.vcproj +567 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlib.rc +32 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibstat.vcproj +870 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibvc.def +92 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibvc.sln +144 -0
- data/ext/src/third-party/zlib-1.2.3/contrib/vstudio/vc8/zlibvc.vcproj +1219 -0
- data/ext/src/third-party/zlib-1.2.3/crc32.c +423 -0
- data/ext/src/third-party/zlib-1.2.3/crc32.h +441 -0
- data/ext/src/third-party/zlib-1.2.3/crc32.o +0 -0
- data/ext/src/third-party/zlib-1.2.3/deflate.c +1736 -0
- data/ext/src/third-party/zlib-1.2.3/deflate.h +331 -0
- data/ext/src/third-party/zlib-1.2.3/deflate.o +0 -0
- data/ext/src/third-party/zlib-1.2.3/example +0 -0
- data/ext/src/third-party/zlib-1.2.3/example.c +565 -0
- data/ext/src/third-party/zlib-1.2.3/examples/README.examples +42 -0
- data/ext/src/third-party/zlib-1.2.3/examples/fitblk.c +233 -0
- data/ext/src/third-party/zlib-1.2.3/examples/gun.c +693 -0
- data/ext/src/third-party/zlib-1.2.3/examples/gzappend.c +500 -0
- data/ext/src/third-party/zlib-1.2.3/examples/gzjoin.c +448 -0
- data/ext/src/third-party/zlib-1.2.3/examples/gzlog.c +413 -0
- data/ext/src/third-party/zlib-1.2.3/examples/gzlog.h +58 -0
- data/ext/src/third-party/zlib-1.2.3/examples/zlib_how.html +523 -0
- data/ext/src/third-party/zlib-1.2.3/examples/zpipe.c +191 -0
- data/ext/src/third-party/zlib-1.2.3/examples/zran.c +404 -0
- data/ext/src/third-party/zlib-1.2.3/gzio.c +1026 -0
- data/ext/src/third-party/zlib-1.2.3/gzio.o +0 -0
- data/ext/src/third-party/zlib-1.2.3/infback.c +623 -0
- data/ext/src/third-party/zlib-1.2.3/infback.o +0 -0
- data/ext/src/third-party/zlib-1.2.3/inffast.c +318 -0
- data/ext/src/third-party/zlib-1.2.3/inffast.h +11 -0
- data/ext/src/third-party/zlib-1.2.3/inffast.o +0 -0
- data/ext/src/third-party/zlib-1.2.3/inffixed.h +94 -0
- data/ext/src/third-party/zlib-1.2.3/inflate.c +1368 -0
- data/ext/src/third-party/zlib-1.2.3/inflate.h +115 -0
- data/ext/src/third-party/zlib-1.2.3/inflate.o +0 -0
- data/ext/src/third-party/zlib-1.2.3/inftrees.c +329 -0
- data/ext/src/third-party/zlib-1.2.3/inftrees.h +55 -0
- data/ext/src/third-party/zlib-1.2.3/inftrees.o +0 -0
- data/ext/src/third-party/zlib-1.2.3/libz.a +0 -0
- data/ext/src/third-party/zlib-1.2.3/make_vms.com +461 -0
- data/ext/src/third-party/zlib-1.2.3/minigzip +0 -0
- data/ext/src/third-party/zlib-1.2.3/minigzip.c +322 -0
- data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.bor +109 -0
- data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.dj2 +104 -0
- data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.emx +69 -0
- data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.msc +106 -0
- data/ext/src/third-party/zlib-1.2.3/msdos/Makefile.tc +94 -0
- data/ext/src/third-party/zlib-1.2.3/old/Makefile.riscos +151 -0
- data/ext/src/third-party/zlib-1.2.3/old/README +3 -0
- data/ext/src/third-party/zlib-1.2.3/old/descrip.mms +48 -0
- data/ext/src/third-party/zlib-1.2.3/old/os2/Makefile.os2 +136 -0
- data/ext/src/third-party/zlib-1.2.3/old/os2/zlib.def +51 -0
- data/ext/src/third-party/zlib-1.2.3/old/visual-basic.txt +160 -0
- data/ext/src/third-party/zlib-1.2.3/old/zlib.html +971 -0
- data/ext/src/third-party/zlib-1.2.3/projects/README.projects +41 -0
- data/ext/src/third-party/zlib-1.2.3/projects/visualc6/README.txt +73 -0
- data/ext/src/third-party/zlib-1.2.3/projects/visualc6/example.dsp +278 -0
- data/ext/src/third-party/zlib-1.2.3/projects/visualc6/minigzip.dsp +278 -0
- data/ext/src/third-party/zlib-1.2.3/projects/visualc6/zlib.dsp +609 -0
- data/ext/src/third-party/zlib-1.2.3/projects/visualc6/zlib.dsw +59 -0
- data/ext/src/third-party/zlib-1.2.3/qnx/package.qpg +141 -0
- data/ext/src/third-party/zlib-1.2.3/trees.c +1219 -0
- data/ext/src/third-party/zlib-1.2.3/trees.h +128 -0
- data/ext/src/third-party/zlib-1.2.3/trees.o +0 -0
- data/ext/src/third-party/zlib-1.2.3/uncompr.c +61 -0
- data/ext/src/third-party/zlib-1.2.3/uncompr.o +0 -0
- data/ext/src/third-party/zlib-1.2.3/win32/DLL_FAQ.txt +397 -0
- data/ext/src/third-party/zlib-1.2.3/win32/Makefile.bor +107 -0
- data/ext/src/third-party/zlib-1.2.3/win32/Makefile.emx +69 -0
- data/ext/src/third-party/zlib-1.2.3/win32/Makefile.gcc +141 -0
- data/ext/src/third-party/zlib-1.2.3/win32/Makefile.msc +126 -0
- data/ext/src/third-party/zlib-1.2.3/win32/VisualC.txt +3 -0
- data/ext/src/third-party/zlib-1.2.3/win32/zlib.def +60 -0
- data/ext/src/third-party/zlib-1.2.3/win32/zlib1.rc +39 -0
- data/ext/src/third-party/zlib-1.2.3/zconf.h +332 -0
- data/ext/src/third-party/zlib-1.2.3/zconf.in.h +332 -0
- data/ext/src/third-party/zlib-1.2.3/zlib.3 +159 -0
- data/ext/src/third-party/zlib-1.2.3/zlib.h +1357 -0
- data/ext/src/third-party/zlib-1.2.3/zutil.c +318 -0
- data/ext/src/third-party/zlib-1.2.3/zutil.h +269 -0
- data/ext/src/third-party/zlib-1.2.3/zutil.o +0 -0
- data/lib/assembly/a_b_visualiser.rb +169 -0
- data/lib/assembly/acyclic_connection_finder.rb +81 -0
- data/lib/assembly/all_orfs.rb +615 -0
- data/lib/assembly/bad_format_writer.rb +46 -0
- data/lib/assembly/bam_probe_read_selector.rb +48 -0
- data/lib/assembly/bubbly_assembler.rb +842 -0
- data/lib/assembly/c_probe_node_finder.rb +38 -0
- data/lib/assembly/connection_interpreter.rb +350 -0
- data/lib/assembly/contig_printer.rb +400 -0
- data/lib/assembly/coverage_based_graph_filter.rb +68 -0
- data/lib/assembly/depth_first_search.rb +63 -0
- data/lib/assembly/dijkstra.rb +216 -0
- data/lib/assembly/fluffer.rb +253 -0
- data/lib/assembly/graph_explorer.rb +85 -0
- data/lib/assembly/graph_generator.rb +315 -0
- data/lib/assembly/height_finder.rb +355 -0
- data/lib/assembly/hybrid_velvet_graph.rb +70 -0
- data/lib/assembly/input_genome.rb +182 -0
- data/lib/assembly/kmer_coverage_based_path_filter.rb +65 -0
- data/lib/assembly/node_finder.rb +171 -0
- data/lib/assembly/oriented_node_trail.rb +507 -0
- data/lib/assembly/paired_end_assembler.rb +53 -0
- data/lib/assembly/paired_end_neighbour_finder.rb +176 -0
- data/lib/assembly/probed_graph.rb +105 -0
- data/lib/assembly/read_input.rb +79 -0
- data/lib/assembly/read_to_node.rb +37 -0
- data/lib/assembly/scaffold_breaker.rb +126 -0
- data/lib/assembly/sequence_hasher.rb +71 -0
- data/lib/assembly/single_coherent_paths_between_nodes.rb +533 -0
- data/lib/assembly/single_coherent_wanderer.rb +261 -0
- data/lib/assembly/single_ended_assembler.rb +441 -0
- data/lib/assembly/velvet_c_binding.rb +54 -0
- data/lib/assembly/velvet_graph_sequence_extractor.rb +123 -0
- data/lib/external/VERSION +1 -0
- data/lib/finishm/assemble.rb +224 -0
- data/lib/finishm/explore.rb +217 -0
- data/lib/finishm/finisher.rb +303 -0
- data/lib/finishm/fluff.rb +122 -0
- data/lib/finishm/gapfiller.rb +325 -0
- data/lib/finishm/orfs_finder.rb +88 -0
- data/lib/finishm/path_counter.rb +90 -0
- data/lib/finishm/primers.rb +425 -0
- data/lib/finishm/primers_check.rb +176 -0
- data/lib/finishm/roundup.rb +344 -0
- data/lib/finishm/sequence.rb +142 -0
- data/lib/finishm/visualise.rb +430 -0
- data/lib/finishm/wander.rb +270 -0
- data/lib/kmer_abundance_pattern.rb +79 -0
- data/lib/kmer_multi_abundance_file.rb +48 -0
- data/lib/oligo_designer.rb +88 -0
- data/lib/priner.rb +66 -0
- data/spec/acyclic_connection_finder_spec.rb +551 -0
- data/spec/all_orfs_spec.rb +443 -0
- data/spec/assemble_spec.rb +186 -0
- data/spec/bubbly_assembler_spec.rb +707 -0
- data/spec/c_node_finder_spec.rb +58 -0
- data/spec/connection_interpreter_spec.rb +284 -0
- data/spec/contig_printer_spec.rb +291 -0
- data/spec/coverage_based_graph_filter_spec.rb +102 -0
- data/spec/data/6_3e4e5e6e.1vANME.bam +0 -0
- data/spec/data/6_3e4e5e6e.1vANME.bam.bai +0 -0
- data/spec/data/acyclic_connection_finder/1/probes.fa +5 -0
- data/spec/data/acyclic_connection_finder/1/random1.fa +2 -0
- data/spec/data/acyclic_connection_finder/1/random1.sammy.fa.gz +0 -0
- data/spec/data/acyclic_connection_finder/1/random2.fa +2 -0
- data/spec/data/acyclic_connection_finder/1/random2.sammy.fa.gz +0 -0
- data/spec/data/assembly/1_simple_bubble_uneven_coverage/random3000.fa +39 -0
- data/spec/data/assembly/1_simple_bubble_uneven_coverage/random3000.slightly_changed.fa +39 -0
- data/spec/data/assembly/1_simple_bubble_uneven_coverage/reads_combined.fa.gz +0 -0
- data/spec/data/assembly_visualiser/Contig_6_1_to_250.fa.kmers31 +220 -0
- data/spec/data/assembly_visualiser/Contig_7_1_to_250.fa.kmers31 +220 -0
- data/spec/data/assembly_visualiser/Graph +46 -0
- data/spec/data/assembly_visualiser/start_kmers1 +2 -0
- data/spec/data/bands.csv +1 -0
- data/spec/data/c_probe_node_finder/1/CnyUnifiedSeq +0 -0
- data/spec/data/c_probe_node_finder/1/CnyUnifiedSeq.names +544 -0
- data/spec/data/c_probe_node_finder/1/Graph2 +668 -0
- data/spec/data/c_probe_node_finder/1/LastGraph +668 -0
- data/spec/data/c_probe_node_finder/1/Log +756 -0
- data/spec/data/c_probe_node_finder/1/PreGraph +11 -0
- data/spec/data/c_probe_node_finder/1/Roadmaps +2009 -0
- data/spec/data/c_probe_node_finder/1/contigs.fa +29 -0
- data/spec/data/c_probe_node_finder/1/stats.txt +6 -0
- data/spec/data/contig_printer/1/HOWTO_RECREATE +17 -0
- data/spec/data/contig_printer/1/contigs.fa +4 -0
- data/spec/data/contig_printer/1/seq.fa +2408 -0
- data/spec/data/contig_printer/1/seq.fa.svg +153 -0
- data/spec/data/contig_printer/1/seq.fa.velvet/Graph2 +2953 -0
- data/spec/data/contig_printer/1/seq.fa.velvet/LastGraph +2953 -0
- data/spec/data/contig_printer/1/seq.fa.velvet/Log +21 -0
- data/spec/data/contig_printer/1/seq.fa.velvet/PreGraph +27 -0
- data/spec/data/contig_printer/1/seq.fa.velvet/Roadmaps +5182 -0
- data/spec/data/contig_printer/1/seq.fa.velvet/Sequences +3612 -0
- data/spec/data/contig_printer/1/seq.fa.velvet/contigs.fa +36 -0
- data/spec/data/contig_printer/1/seq.fa.velvet/stats.txt +14 -0
- data/spec/data/contig_printer/1/seq.faVseq2_1to550.fa.bam +0 -0
- data/spec/data/contig_printer/1/seq.faVseq2_1to550.fa.bam.bai +0 -0
- data/spec/data/contig_printer/1/seq.node12.fa +4 -0
- data/spec/data/contig_printer/1/seq1_1to550.fa +2 -0
- data/spec/data/contig_printer/1/seq2_1to550.fa +2 -0
- data/spec/data/contig_printer/1/seq2_1to550.fa.fai +1 -0
- data/spec/data/explore/1/2seqs.sammy.fa +12004 -0
- data/spec/data/explore/1/HOWTO_RECREATE.txt +6 -0
- data/spec/data/explore/1/a.fa +2 -0
- data/spec/data/explore/1/seq1_and_a.fa +3 -0
- data/spec/data/explore/1/seq2.fa +2 -0
- data/spec/data/fluff/1/2seqs.sammy.fa +12004 -0
- data/spec/data/fluff/1/HOWTO_RECREATE.txt +5 -0
- data/spec/data/fluff/1/seq1.fa +2 -0
- data/spec/data/fluff/1/seq2.fa +2 -0
- data/spec/data/gapfilling/1/reads.fa +171 -0
- data/spec/data/gapfilling/1/trail_with_Ns.fa +5 -0
- data/spec/data/gapfilling/1/velvetAssembly/Graph2 +130 -0
- data/spec/data/gapfilling/1/velvetAssembly/LastGraph +130 -0
- data/spec/data/gapfilling/1/velvetAssembly/Log +199 -0
- data/spec/data/gapfilling/1/velvetAssembly/PreGraph +7 -0
- data/spec/data/gapfilling/1/velvetAssembly/Roadmaps +239 -0
- data/spec/data/gapfilling/1/velvetAssembly/Sequences +281 -0
- data/spec/data/gapfilling/1/velvetAssembly/contigs.fa +12 -0
- data/spec/data/gapfilling/1/velvetAssembly/stats.txt +4 -0
- data/spec/data/gapfilling/2/HOWTO_recreate +17 -0
- data/spec/data/gapfilling/2/reference.fa +2 -0
- data/spec/data/gapfilling/2/reference_part1.fa +4 -0
- data/spec/data/gapfilling/2/reference_part2.fa +4 -0
- data/spec/data/gapfilling/2/sammy_reads.fa.gz +0 -0
- data/spec/data/gapfilling/2/with_gaps.fa +4 -0
- data/spec/data/gapfilling/3/HOWTO_recreate +4 -0
- data/spec/data/gapfilling/3/reads.fa.gz +0 -0
- data/spec/data/gapfilling/3/reference_part1.fa +4 -0
- data/spec/data/gapfilling/3/reference_part2.fa +4 -0
- data/spec/data/gapfilling/3/with_gaps.fa +4 -0
- data/spec/data/gapfilling/4/HOWTO_recreate +1 -0
- data/spec/data/gapfilling/4/reads.fa.gz +0 -0
- data/spec/data/gapfilling/5/HOWTO_RECREATE +7 -0
- data/spec/data/gapfilling/5/answer.fna +2 -0
- data/spec/data/gapfilling/5/gappy.fna +2 -0
- data/spec/data/gapfilling/5/reads.fa +17961 -0
- data/spec/data/gapfilling/5/velvet51_3.5/LastGraph +8337 -0
- data/spec/data/gapfilling/5/velvet51_3.5/Sequences +20921 -0
- data/spec/data/gapfilling/6/random1.fa +28 -0
- data/spec/data/gapfilling/6/random2.fa +28 -0
- data/spec/data/gapfilling/6/random_sequence_length_2000 +0 -0
- data/spec/data/gapfilling/6/reads.random1.fa.gz +0 -0
- data/spec/data/gapfilling/6/reads.random2.fa.gz +0 -0
- data/spec/data/gapfilling/6/to_gapfill.fa +22 -0
- data/spec/data/kmer_profile_to_assembly/multiple_abundance_file1.csv +2 -0
- data/spec/data/kmers_count1.csv +2 -0
- data/spec/data/kmers_count2.csv +3 -0
- data/spec/data/out +3 -0
- data/spec/data/positive_latching_pair.fa +2 -0
- data/spec/data/primers.csv +4 -0
- data/spec/data/read_selection_by_kmer/blacklist1.txt +1 -0
- data/spec/data/read_selection_by_kmer/input.fasta +6 -0
- data/spec/data/read_selection_by_kmer/whitelist1.txt +1 -0
- data/spec/data/read_selection_by_kmer/whitelist2.txt +2 -0
- data/spec/data/read_to_node/1_a_graph/HOWTO_RECREATE.txt +2 -0
- data/spec/data/read_to_node/1_a_graph/LastGraph +6695 -0
- data/spec/data/read_to_node/1_a_graph/ReadToNode.bin +0 -0
- data/spec/data/read_to_node/2_no_read256_or_259/HOWTO_RECREATE.txt +3 -0
- data/spec/data/read_to_node/2_no_read256_or_259/LastGraph +6693 -0
- data/spec/data/read_to_node/2_no_read256_or_259/ReadToNode.bin +0 -0
- data/spec/data/read_to_node/3_no_last_read/LastGraph +6694 -0
- data/spec/data/read_to_node/3_no_last_read/ReadToNode.bin +0 -0
- data/spec/data/t/details.txt +5 -0
- data/spec/data/t/details.txt.srt +5 -0
- data/spec/data/t/location.txt +3 -0
- data/spec/data/t/location.txt.srt +3 -0
- data/spec/data/tweak/1_gap_then_unscaffolded/answer.fa +2 -0
- data/spec/data/tweak/1_gap_then_unscaffolded/reads.fa.gz +0 -0
- data/spec/data/tweak/1_gap_then_unscaffolded/scaffolds.fa +6 -0
- data/spec/data/tweak/2_second_genome/answer2.fa +2 -0
- data/spec/data/tweak/2_second_genome/reads.fa.gz +0 -0
- data/spec/data/tweak/3_variant/answer.fa +2 -0
- data/spec/data/tweak/3_variant/lesser_answer.fa +2 -0
- data/spec/data/tweak/3_variant/reads.fa.gz +0 -0
- data/spec/data/tweak/3_variant/with_gaps.fa +2 -0
- data/spec/data/velvet_test_trails/Assem/Graph +17 -0
- data/spec/data/velvet_test_trails/Assem/Graph2 +40 -0
- data/spec/data/velvet_test_trails/Assem/LastGraph +40 -0
- data/spec/data/velvet_test_trails/Assem/Log +35 -0
- data/spec/data/velvet_test_trails/Assem/PreGraph +9 -0
- data/spec/data/velvet_test_trails/Assem/Roadmaps +89 -0
- data/spec/data/velvet_test_trails/Assem/Sequences +50 -0
- data/spec/data/velvet_test_trails/Assem/a.svg +53 -0
- data/spec/data/velvet_test_trails/Assem/contigs.fa +15 -0
- data/spec/data/velvet_test_trails/Assem/stats.txt +5 -0
- data/spec/data/velvet_test_trails/node_fwds.fa +8 -0
- data/spec/data/velvet_test_trails/node_seqs.fa +9 -0
- data/spec/data/velvet_test_trails/nodes_fwd_rev.fa +16 -0
- data/spec/data/velvet_test_trails/read1.fa +2 -0
- data/spec/data/velvet_test_trails/reads.fa +50 -0
- data/spec/data/velvet_test_trails_reverse/Assem/LastGraph +17 -0
- data/spec/data/velvet_test_trails_reverse/Assem/a.svg +53 -0
- data/spec/data/velvet_test_trails_reverse/reads_reversed.fa +10 -0
- data/spec/data/visualise/1/LastGraph +6695 -0
- data/spec/data/visualise/2_paired_end/HOWTO_RECREATE.txt +10 -0
- data/spec/data/visualise/2_paired_end/rand1.fa +2 -0
- data/spec/data/visualise/2_paired_end/rand2.fa +2 -0
- data/spec/data/visualise/2_paired_end/with_gaps.fa +8 -0
- data/spec/data/visualise/2_paired_end/with_gaps.read_pairs.fa.gz +0 -0
- data/spec/data/wander/1/random1.fa +2 -0
- data/spec/data/wander/1/random1.sammy.fa +804 -0
- data/spec/depth_first_search_spec.rb +190 -0
- data/spec/dijkstra_spec.rb +143 -0
- data/spec/explore_spec.rb +29 -0
- data/spec/fluffer_spec.rb +155 -0
- data/spec/gapfiller_spec.rb +107 -0
- data/spec/graph_explorer_spec.rb +475 -0
- data/spec/graph_generator_spec.rb +99 -0
- data/spec/height_finder_spec.rb +306 -0
- data/spec/kmer_abundance_pattern_spec.rb +56 -0
- data/spec/kmer_coverage_based_path_filter_spec.rb +73 -0
- data/spec/kmer_profile_finder_spec.rb +38 -0
- data/spec/kmers_count_tabulate_spec.rb +120 -0
- data/spec/oriented_node_trail_spec.rb +221 -0
- data/spec/paired_end_neighbours_spec.rb +126 -0
- data/spec/paths_between_nodes_spec.rb +349 -0
- data/spec/priner_spec.rb +7 -0
- data/spec/read_input_spec.rb +23 -0
- data/spec/read_selection_by_kmer_spec.rb +166 -0
- data/spec/read_to_node_spec.rb +35 -0
- data/spec/roundup_spec.rb +366 -0
- data/spec/scaffold_breaker_spec.rb +144 -0
- data/spec/sequence_spec.rb +43 -0
- data/spec/single_coherent_paths_between_nodes_spec.rb +492 -0
- data/spec/single_coherent_wanderer_spec.rb +120 -0
- data/spec/single_ended_assembler_spec.rb +398 -0
- data/spec/spec_helper.rb +310 -0
- data/spec/velvet_graph_sequence_extractor_spec.rb +80 -0
- data/spec/visualise_spec.rb +105 -0
- data/spec/wander_spec.rb +119 -0
- data/spec/watch_for_changes.sh +16 -0
- data/validation/fasta_compare.rb +72 -0
- data/validation/gapfill_simulate_perfect.rb +108 -0
- metadata +899 -0
|
@@ -0,0 +1,67 @@
|
|
|
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 _READSET_H_
|
|
22
|
+
#define _READSET_H_
|
|
23
|
+
|
|
24
|
+
struct readSet_st {
|
|
25
|
+
char **sequences;
|
|
26
|
+
TightString *tSequences;
|
|
27
|
+
char **labels;
|
|
28
|
+
char *tSeqMem;
|
|
29
|
+
Quality **confidenceScores;
|
|
30
|
+
Probability **kmerProbabilities;
|
|
31
|
+
IDnum *mateReads;
|
|
32
|
+
Category *categories;
|
|
33
|
+
unsigned char *secondInPair;
|
|
34
|
+
IDnum readCount;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
struct mask_st {
|
|
38
|
+
Coordinate start;
|
|
39
|
+
Coordinate finish;
|
|
40
|
+
Mask* next;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
ReadSet *newReadSet();
|
|
44
|
+
|
|
45
|
+
ShortLength *getSequenceLengths(ReadSet * reads, int wordLength);
|
|
46
|
+
|
|
47
|
+
void convertSequences(ReadSet * rs);
|
|
48
|
+
|
|
49
|
+
ReadSet *importReadSet(char *filename);
|
|
50
|
+
|
|
51
|
+
// The overall argument parser and file reader for the hash function
|
|
52
|
+
void parseDataAndReadFiles(char * filename, int argc, char **argv, boolean * double_strand, boolean * noHash);
|
|
53
|
+
|
|
54
|
+
void logInstructions(int argc, char **argv, char *directory);
|
|
55
|
+
|
|
56
|
+
// Read pairing info
|
|
57
|
+
void createReadPairingArray(ReadSet* reads);
|
|
58
|
+
int pairedCategories(ReadSet * reads);
|
|
59
|
+
boolean isSecondInPair(ReadSet * reads, IDnum index);
|
|
60
|
+
void detachDubiousReads(ReadSet * reads, boolean * dubiousReads);
|
|
61
|
+
|
|
62
|
+
void destroyReadSet(ReadSet * reads);
|
|
63
|
+
|
|
64
|
+
boolean isCreateBinary();
|
|
65
|
+
void setCreateBinary(boolean val);
|
|
66
|
+
|
|
67
|
+
#endif
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
#include <stdlib.h>
|
|
2
|
+
#include <stdio.h>
|
|
3
|
+
#include <string.h>
|
|
4
|
+
|
|
5
|
+
#include "globals.h"
|
|
6
|
+
#include "utility.h"
|
|
7
|
+
#include "readToNode.h"
|
|
8
|
+
#include "graphStructures.h"
|
|
9
|
+
#include "graph.h"
|
|
10
|
+
|
|
11
|
+
// comparison function for qsort. Sort ascending, first by read ID then by node ID
|
|
12
|
+
static int read_id_node_id_compare_function(const void *p1, const void *p2){
|
|
13
|
+
ReadIdNodeId* rn1 = (ReadIdNodeId*) p1;
|
|
14
|
+
ReadIdNodeId* rn2 = (ReadIdNodeId*) p2;
|
|
15
|
+
if (rn1->read_id < rn2->read_id)
|
|
16
|
+
return -1;
|
|
17
|
+
else if (rn1->read_id > rn2->read_id)
|
|
18
|
+
return 1;
|
|
19
|
+
else return (rn1->node_id - rn2->node_id);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Create a new ReadIdToNodeIdHash structure with all the given
|
|
23
|
+
information in the graph passed here.
|
|
24
|
+
*/
|
|
25
|
+
ReadIdToNodeIdLookupTable* createReadToNode(Graph* graph){
|
|
26
|
+
// malloc array of read_id_node_id structs that is 1/10 the size of the number of nodes,
|
|
27
|
+
// or 100, whichever is larger (to account for if the number of nodes < 10
|
|
28
|
+
IDnum reads_and_nodes_length = graph->nodeCount / 10;
|
|
29
|
+
if (reads_and_nodes_length < 100)
|
|
30
|
+
reads_and_nodes_length = 100;
|
|
31
|
+
ReadIdNodeId* reads_and_nodes = mallocOrExit(reads_and_nodes_length, ReadIdNodeId);
|
|
32
|
+
|
|
33
|
+
IDnum reads_and_nodes_count = 0;
|
|
34
|
+
IDnum reads_and_nodes_step_size = reads_and_nodes_length;
|
|
35
|
+
|
|
36
|
+
// write reads_and_nodes array unsorted
|
|
37
|
+
// For each node in order
|
|
38
|
+
IDnum i, j, k;
|
|
39
|
+
// to prevent code duplication, create an array of 2 node pointers
|
|
40
|
+
Node** fwd_and_rev_nodes = mallocOrExit(2, Node*);
|
|
41
|
+
Node* current_node;
|
|
42
|
+
ShortReadMarker current_read;
|
|
43
|
+
IDnum num_short_reads_attached;
|
|
44
|
+
ShortReadMarker* current_node_reads;
|
|
45
|
+
for (i=0; i<graph->nodeCount; i++){
|
|
46
|
+
current_node = getNodeInGraph(graph, i+1);
|
|
47
|
+
if (getNodeID(current_node) < 0)
|
|
48
|
+
continue; //ignore reverse nodes as these are already taken care of
|
|
49
|
+
|
|
50
|
+
fwd_and_rev_nodes[0] = current_node;
|
|
51
|
+
fwd_and_rev_nodes[1] = getTwinNode(current_node);
|
|
52
|
+
for (j=0; j<2; j++){
|
|
53
|
+
current_node = fwd_and_rev_nodes[j];
|
|
54
|
+
num_short_reads_attached = getNodeReadCount(current_node, graph);
|
|
55
|
+
current_node_reads = getNodeReads(current_node, graph);
|
|
56
|
+
|
|
57
|
+
for (k=0; k<num_short_reads_attached; k++){
|
|
58
|
+
// For each fwd facing short read attached to the node
|
|
59
|
+
// if we are beyond capacity, realloc some more
|
|
60
|
+
if (reads_and_nodes_count >= reads_and_nodes_length){
|
|
61
|
+
reads_and_nodes_length += reads_and_nodes_step_size;
|
|
62
|
+
//printf("Re-allocing to size %i\n", reads_and_nodes_length);
|
|
63
|
+
reads_and_nodes = reallocOrExit(reads_and_nodes, reads_and_nodes_length, ReadIdNodeId);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// add the current read
|
|
67
|
+
current_read = current_node_reads[k];
|
|
68
|
+
//printf("Accessing index %i\n", reads_and_nodes_count);
|
|
69
|
+
ReadIdNodeId* rid_nid = &(reads_and_nodes[reads_and_nodes_count]);
|
|
70
|
+
rid_nid->read_id = current_read.readID;
|
|
71
|
+
rid_nid->node_id = current_node->ID;
|
|
72
|
+
|
|
73
|
+
//increment the counter
|
|
74
|
+
reads_and_nodes_count += 1;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
free(fwd_and_rev_nodes);
|
|
79
|
+
|
|
80
|
+
//realloc down to the final size
|
|
81
|
+
reads_and_nodes_length = reads_and_nodes_count;
|
|
82
|
+
reads_and_nodes = reallocOrExit(reads_and_nodes, reads_and_nodes_length, ReadIdNodeId);
|
|
83
|
+
|
|
84
|
+
//quicksort the struct array, sorting only by read ID
|
|
85
|
+
qsort(reads_and_nodes, reads_and_nodes_length, sizeof(ReadIdNodeId), read_id_node_id_compare_function);
|
|
86
|
+
|
|
87
|
+
// malloc an index array of read id to reads_and_nodes offset the same length as the total number of reads
|
|
88
|
+
// the largest read ID recorded is the read ID of the largest (now sorted) reads_and_nodes
|
|
89
|
+
IDnum num_reads = reads_and_nodes[reads_and_nodes_length-1].read_id;
|
|
90
|
+
IDnum* index_array = callocOrExit(num_reads, IDnum);
|
|
91
|
+
|
|
92
|
+
// with sorted read_id_node_id array, write out the index array
|
|
93
|
+
IDnum last_read_id = 0;
|
|
94
|
+
for (i=0; i<reads_and_nodes_length; i++){
|
|
95
|
+
//if the last node id is different to the current node ID, write the new one to the index
|
|
96
|
+
if (reads_and_nodes[i].read_id != last_read_id ){
|
|
97
|
+
index_array[reads_and_nodes[i].read_id-1] = i;
|
|
98
|
+
last_read_id = reads_and_nodes[i].read_id;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
ReadIdToNodeIdLookupTable* lookupTable = mallocOrExit(1, ReadIdToNodeIdLookupTable);
|
|
103
|
+
lookupTable->num_contents = reads_and_nodes_length;
|
|
104
|
+
lookupTable->num_reads = num_reads;
|
|
105
|
+
lookupTable->contents = reads_and_nodes;
|
|
106
|
+
lookupTable->index = index_array;
|
|
107
|
+
return lookupTable;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
//write structure to file
|
|
113
|
+
void writeReadIdToNodeIdLookupTable(char* fileName, ReadIdToNodeIdLookupTable* lookupTable){
|
|
114
|
+
FILE* fp = fopen(fileName, "wb");
|
|
115
|
+
if (fp == NULL)
|
|
116
|
+
velvetLog("Unable to open %s for reading\n", fileName);
|
|
117
|
+
|
|
118
|
+
//write overall struct info
|
|
119
|
+
ReadIdToNodeIdLookupTableFileHeader header;
|
|
120
|
+
header.num_contents = lookupTable->num_contents;
|
|
121
|
+
header.num_reads = lookupTable->num_reads;
|
|
122
|
+
fwrite(&header, sizeof(ReadIdToNodeIdLookupTableFileHeader), 1, fp);
|
|
123
|
+
|
|
124
|
+
//write index array
|
|
125
|
+
fwrite(lookupTable->index, sizeof(IDnum), lookupTable->num_reads, fp);
|
|
126
|
+
|
|
127
|
+
//write contents array
|
|
128
|
+
fwrite(lookupTable->contents, sizeof(ReadIdNodeId), lookupTable->num_contents, fp);
|
|
129
|
+
|
|
130
|
+
//close up shop
|
|
131
|
+
fclose(fp);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
//read structure from file
|
|
135
|
+
ReadIdToNodeIdLookupTable* readReadIdToNodeIdLookupTable(char* fileName){
|
|
136
|
+
//open file
|
|
137
|
+
FILE* fp = fopen(fileName, "rb");
|
|
138
|
+
if (fp == NULL)
|
|
139
|
+
velvetLog("Unable to open %s for reading\n", fileName);
|
|
140
|
+
|
|
141
|
+
ReadIdToNodeIdLookupTable* lookupTable = mallocOrExit(1, ReadIdToNodeIdLookupTable);
|
|
142
|
+
|
|
143
|
+
// read header
|
|
144
|
+
ReadIdToNodeIdLookupTableFileHeader header;
|
|
145
|
+
if (fread(&header, sizeof(header), 1, fp) != 1){
|
|
146
|
+
velvetLog("Unable to read file %s\n", fileName);
|
|
147
|
+
fclose(fp);
|
|
148
|
+
return NULL;
|
|
149
|
+
}
|
|
150
|
+
lookupTable->num_contents = header.num_contents;
|
|
151
|
+
lookupTable->num_reads = header.num_reads;
|
|
152
|
+
|
|
153
|
+
//read index array
|
|
154
|
+
lookupTable->index = callocOrExit((lookupTable->num_reads), IDnum);
|
|
155
|
+
if (fread(lookupTable->index, sizeof(IDnum), lookupTable->num_reads, fp) != lookupTable->num_reads){
|
|
156
|
+
velvetLog("Unknown format (at index stage) for file %s\n", fileName);
|
|
157
|
+
fclose(fp);
|
|
158
|
+
return NULL;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
//read contents array
|
|
162
|
+
lookupTable->contents = mallocOrExit(lookupTable->num_contents, ReadIdNodeId);
|
|
163
|
+
if (fread(lookupTable->contents, sizeof(ReadIdNodeId), lookupTable->num_contents, fp) != lookupTable->num_contents){
|
|
164
|
+
velvetLog("Unknown format (at contents stage) for file %s\n", fileName);
|
|
165
|
+
fclose(fp);
|
|
166
|
+
return NULL;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
//close up shop
|
|
170
|
+
fclose(fp);
|
|
171
|
+
|
|
172
|
+
return lookupTable;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/* The main 'getter' function here. Return a struct representing an array start pointer and number of nodes
|
|
176
|
+
(array entries) that the read is attached to. No memory is malloc'd during this procedure so no free-ing is
|
|
177
|
+
required.
|
|
178
|
+
*/
|
|
179
|
+
ReadIdToNodeIdIndexation getReadIdToNodeIdIndexation(ReadIdToNodeIdLookupTable* lookupTable, IDnum readID){
|
|
180
|
+
ReadIdToNodeIdIndexation toReturn;
|
|
181
|
+
|
|
182
|
+
if (readID > lookupTable->num_reads){
|
|
183
|
+
toReturn.num_nodes = 0;
|
|
184
|
+
return toReturn;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
toReturn.read_ids_node_ids = lookupTable->contents + lookupTable->index[readID-1]; //minus one as the array is 0-indexed
|
|
188
|
+
|
|
189
|
+
// work out the number of nodes by using the next read's offset, or the total size of the array
|
|
190
|
+
// however, if the next read has no nodes associated, then need to get the one after, and so on.
|
|
191
|
+
IDnum nextReadID = readID;
|
|
192
|
+
while (nextReadID < lookupTable->num_reads){
|
|
193
|
+
if (lookupTable->index[nextReadID] != 0)
|
|
194
|
+
break;
|
|
195
|
+
else
|
|
196
|
+
nextReadID += 1;
|
|
197
|
+
}
|
|
198
|
+
//printf("Using next read ID %i for input read %i\n", nextReadID+1, readID);
|
|
199
|
+
if (readID != 1 && lookupTable->index[readID-1] == 0 && lookupTable->index[nextReadID] != 0){
|
|
200
|
+
// this read is not associated with any node
|
|
201
|
+
toReturn.num_nodes = 0;
|
|
202
|
+
} else if (nextReadID >= lookupTable->num_reads){
|
|
203
|
+
//last read associated with any node case
|
|
204
|
+
toReturn.num_nodes = lookupTable->num_contents - lookupTable->index[readID-1];
|
|
205
|
+
} else {
|
|
206
|
+
//regular case
|
|
207
|
+
toReturn.num_nodes = lookupTable->index[nextReadID] - lookupTable->index[readID-1];
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
return toReturn;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
void destroyReadIdToNodeIdLookupTable(ReadIdToNodeIdLookupTable* lookupTable){
|
|
215
|
+
free(lookupTable->index);
|
|
216
|
+
free(lookupTable->contents);
|
|
217
|
+
free(lookupTable);
|
|
218
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#ifndef _READ_TO_NODE_H_
|
|
2
|
+
#define _READ_TO_NODE_H_
|
|
3
|
+
|
|
4
|
+
typedef struct {
|
|
5
|
+
IDnum read_id;
|
|
6
|
+
IDnum node_id;
|
|
7
|
+
} ReadIdNodeId; //this is a doubly used structure, once for creation of the data structure, and also in the result of the indexation. This is a little bad, but eh.
|
|
8
|
+
|
|
9
|
+
typedef struct {
|
|
10
|
+
IDnum num_contents;
|
|
11
|
+
IDnum num_reads;
|
|
12
|
+
IDnum* index;
|
|
13
|
+
ReadIdNodeId* contents;
|
|
14
|
+
} ReadIdToNodeIdLookupTable;
|
|
15
|
+
|
|
16
|
+
//TODO: add 'writing is complete' flag like other velvet functions
|
|
17
|
+
typedef struct {
|
|
18
|
+
IDnum num_contents;
|
|
19
|
+
IDnum num_reads;
|
|
20
|
+
} ReadIdToNodeIdLookupTableFileHeader;
|
|
21
|
+
|
|
22
|
+
typedef struct {
|
|
23
|
+
IDnum num_nodes;
|
|
24
|
+
ReadIdNodeId* read_ids_node_ids;
|
|
25
|
+
} ReadIdToNodeIdIndexation;
|
|
26
|
+
|
|
27
|
+
ReadIdToNodeIdLookupTable* createReadToNode(Graph* graph);
|
|
28
|
+
void destroyReadIdToNodeIdLookupTable(ReadIdToNodeIdLookupTable* lookupTable);
|
|
29
|
+
|
|
30
|
+
ReadIdToNodeIdIndexation getReadIdToNodeIdIndexation(ReadIdToNodeIdLookupTable* lookupTable, IDnum readID);
|
|
31
|
+
|
|
32
|
+
void writeReadIdToNodeIdLookupTable(char* fileName, ReadIdToNodeIdLookupTable* lookupTable);
|
|
33
|
+
ReadIdToNodeIdLookupTable* readReadIdToNodeIdLookupTable(char* fileName);
|
|
34
|
+
|
|
35
|
+
#endif
|
|
@@ -0,0 +1,199 @@
|
|
|
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
|
+
/****************************************************************\
|
|
22
|
+
* *
|
|
23
|
+
* Efficient Memory Allocation Routines *
|
|
24
|
+
* *
|
|
25
|
+
* Guy St.C. Slater.. mailto:guy@ebi.ac.uk *
|
|
26
|
+
* Copyright (C) 2000-2005. All Rights Reserved. *
|
|
27
|
+
* *
|
|
28
|
+
* This source code is distributed under the terms of the *
|
|
29
|
+
* GNU Lesser General Public License. See the file COPYING *
|
|
30
|
+
* or http://www.fsf.org/copyleft/lesser.html for details *
|
|
31
|
+
* *
|
|
32
|
+
* If you use this code, please keep this notice intact. *
|
|
33
|
+
* *
|
|
34
|
+
\****************************************************************/
|
|
35
|
+
|
|
36
|
+
#include <stdlib.h>
|
|
37
|
+
#include <stdio.h>
|
|
38
|
+
|
|
39
|
+
#include "globals.h"
|
|
40
|
+
#include "recycleBin.h"
|
|
41
|
+
#include "utility.h"
|
|
42
|
+
|
|
43
|
+
typedef struct RecycleBin_Node {
|
|
44
|
+
struct RecycleBin_Node *next;
|
|
45
|
+
} RecycleBin_Node;
|
|
46
|
+
|
|
47
|
+
typedef struct chunk_st {
|
|
48
|
+
struct chunk_st *next;
|
|
49
|
+
} Chunk;
|
|
50
|
+
|
|
51
|
+
struct recycleBin_st {
|
|
52
|
+
Chunk *chunk_list;
|
|
53
|
+
RecycleBin_Node *recycle;
|
|
54
|
+
size_t node_size;
|
|
55
|
+
int chunk_pos;
|
|
56
|
+
int nodes_per_chunk;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
static void initRecycleBin(RecycleBin *recycleBin,
|
|
60
|
+
size_t node_size, int nodes_per_chunk)
|
|
61
|
+
{
|
|
62
|
+
size_t chunckSize, allocSize;
|
|
63
|
+
|
|
64
|
+
chunckSize = sizeof(Chunk) + nodes_per_chunk * node_size;
|
|
65
|
+
allocSize = 1;
|
|
66
|
+
/* Get nearest power of 2 */
|
|
67
|
+
while (allocSize < chunckSize)
|
|
68
|
+
allocSize <<= 1;
|
|
69
|
+
nodes_per_chunk = (allocSize - sizeof(Chunk)) / node_size;
|
|
70
|
+
recycleBin->chunk_list = NULL;
|
|
71
|
+
recycleBin->chunk_pos = nodes_per_chunk;
|
|
72
|
+
recycleBin->nodes_per_chunk = nodes_per_chunk;
|
|
73
|
+
recycleBin->node_size = node_size;
|
|
74
|
+
recycleBin->recycle = NULL;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
RecycleBin *newRecycleBin(size_t node_size, int nodes_per_chunk)
|
|
78
|
+
{
|
|
79
|
+
RecycleBin *recycleBin;
|
|
80
|
+
|
|
81
|
+
if (node_size < sizeof(RecycleBin_Node)) {
|
|
82
|
+
velvetLog("Too small elements to create a recycle bin!\n");
|
|
83
|
+
#ifdef DEBUG
|
|
84
|
+
abort();
|
|
85
|
+
#endif
|
|
86
|
+
exit(-1);
|
|
87
|
+
}
|
|
88
|
+
recycleBin = mallocOrExit(1, RecycleBin);
|
|
89
|
+
initRecycleBin (recycleBin, node_size, nodes_per_chunk);
|
|
90
|
+
|
|
91
|
+
return recycleBin;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
static void destroyRecycleBinChunks(RecycleBin * recycleBin)
|
|
95
|
+
{
|
|
96
|
+
while (recycleBin->chunk_list != NULL)
|
|
97
|
+
{
|
|
98
|
+
Chunk *chunk;
|
|
99
|
+
|
|
100
|
+
chunk = recycleBin->chunk_list;
|
|
101
|
+
recycleBin->chunk_list = recycleBin->chunk_list->next;
|
|
102
|
+
free(chunk);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
void destroyRecycleBin(RecycleBin * recycleBin)
|
|
107
|
+
{
|
|
108
|
+
if (recycleBin == NULL)
|
|
109
|
+
return;
|
|
110
|
+
|
|
111
|
+
destroyRecycleBinChunks(recycleBin);
|
|
112
|
+
free(recycleBin);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
void *allocatePointer(RecycleBin * recycle_bin)
|
|
116
|
+
{
|
|
117
|
+
RecycleBin_Node *node;
|
|
118
|
+
Chunk *chunk;
|
|
119
|
+
|
|
120
|
+
if (recycle_bin == NULL) {
|
|
121
|
+
velvetLog("Null recycle bin!\n");
|
|
122
|
+
#ifdef DEBUG
|
|
123
|
+
abort();
|
|
124
|
+
#endif
|
|
125
|
+
exit(-1);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (recycle_bin->recycle != NULL) {
|
|
129
|
+
node = recycle_bin->recycle;
|
|
130
|
+
recycle_bin->recycle = node->next;
|
|
131
|
+
return node;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (recycle_bin->chunk_pos == recycle_bin->nodes_per_chunk) {
|
|
135
|
+
chunk = malloc(sizeof(Chunk) + recycle_bin->nodes_per_chunk
|
|
136
|
+
* recycle_bin->node_size);
|
|
137
|
+
if (chunk == NULL) {
|
|
138
|
+
velvetLog("No more memory for memory chunk!\n");
|
|
139
|
+
#ifdef DEBUG
|
|
140
|
+
abort();
|
|
141
|
+
#endif
|
|
142
|
+
exit(-1);
|
|
143
|
+
}
|
|
144
|
+
chunk->next = recycle_bin->chunk_list;
|
|
145
|
+
recycle_bin->chunk_list = chunk;
|
|
146
|
+
recycle_bin->chunk_pos = 1;
|
|
147
|
+
return (RecycleBin_Node *) ((size_t) (void *) chunk +
|
|
148
|
+
sizeof(Chunk));
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
chunk = recycle_bin->chunk_list;
|
|
152
|
+
return (RecycleBin_Node *) ((size_t) (void *) chunk + sizeof(Chunk)
|
|
153
|
+
+
|
|
154
|
+
(recycle_bin->
|
|
155
|
+
node_size *
|
|
156
|
+
recycle_bin->chunk_pos++));
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
void deallocatePointer(RecycleBin * recycle_bin, void *data)
|
|
160
|
+
{
|
|
161
|
+
RecycleBin_Node *node = data;
|
|
162
|
+
|
|
163
|
+
node->next = recycle_bin->recycle;
|
|
164
|
+
recycle_bin->recycle = node;
|
|
165
|
+
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
#ifdef _OPENMP
|
|
170
|
+
RecycleBin *newRecycleBinArray(unsigned int n,
|
|
171
|
+
size_t node_size, int nodes_per_chunk)
|
|
172
|
+
{
|
|
173
|
+
RecycleBin *recycleBin;
|
|
174
|
+
int i;
|
|
175
|
+
|
|
176
|
+
recycleBin = mallocOrExit (n + 1, RecycleBin);
|
|
177
|
+
for (i = 0; i < n; i++)
|
|
178
|
+
initRecycleBin(recycleBin + i, node_size, nodes_per_chunk);
|
|
179
|
+
/* Last element marker */
|
|
180
|
+
recycleBin[n].node_size = 0;
|
|
181
|
+
|
|
182
|
+
return recycleBin;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
void destroyRecycleBinArray(RecycleBin * recycleBin)
|
|
186
|
+
{
|
|
187
|
+
int i;
|
|
188
|
+
|
|
189
|
+
for (i = 0; recycleBin[i].node_size != 0; i++)
|
|
190
|
+
destroyRecycleBinChunks(recycleBin + i);
|
|
191
|
+
free(recycleBin);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
RecycleBin *getRecycleBinInArray(RecycleBin *recycleBin,
|
|
195
|
+
int position)
|
|
196
|
+
{
|
|
197
|
+
return recycleBin + position;
|
|
198
|
+
}
|
|
199
|
+
#endif
|