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,125 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2011 Convey Computer Corporation (info@conveycomputer.com)
|
|
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 _BINARYSEQUENCES_H_
|
|
22
|
+
#define _BINARYSEQUENCES_H_
|
|
23
|
+
|
|
24
|
+
#include "recycleBin.h"
|
|
25
|
+
|
|
26
|
+
struct refInfo_st {
|
|
27
|
+
int32_t m_referenceID;
|
|
28
|
+
int32_t m_pos;
|
|
29
|
+
};
|
|
30
|
+
typedef struct refInfo_st RefInfo;
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
typedef struct {
|
|
34
|
+
Category m_numCategories;
|
|
35
|
+
uint32_t m_magic;
|
|
36
|
+
boolean m_bDoubleStrand;
|
|
37
|
+
boolean m_bColor;
|
|
38
|
+
uint64_t m_sequenceCnt;
|
|
39
|
+
uint64_t m_timeStamp;
|
|
40
|
+
uint64_t m_seqNuclStoreSize;
|
|
41
|
+
uint64_t m_minSeqLen;
|
|
42
|
+
uint64_t m_maxSeqLen;
|
|
43
|
+
uint64_t m_totalSeqLen;
|
|
44
|
+
boolean m_bFileWriteCompleted;
|
|
45
|
+
} CnyUnifiedSeqFileHeader;
|
|
46
|
+
|
|
47
|
+
// Reading
|
|
48
|
+
struct sequencesReader_st {
|
|
49
|
+
char * m_seqFilename;
|
|
50
|
+
FILE * m_pFile;
|
|
51
|
+
ReadSet * m_sequences;
|
|
52
|
+
boolean m_bIsBinary;
|
|
53
|
+
// following are only used by the binary code
|
|
54
|
+
char * m_namesFilename;
|
|
55
|
+
CnyUnifiedSeqFileHeader m_unifiedSeqFileHeader;
|
|
56
|
+
Category m_numCategories;
|
|
57
|
+
Category m_currCategory;
|
|
58
|
+
uint64_t m_minSeqLen;
|
|
59
|
+
uint64_t m_maxSeqLen;
|
|
60
|
+
uint8_t * m_pReadBuffer;
|
|
61
|
+
uint8_t * m_pReadBufEnd;
|
|
62
|
+
uint64_t m_readBufPos;
|
|
63
|
+
uint8_t * m_pCurrentReadPtr;
|
|
64
|
+
uint8_t * m_pNextReadPtr;
|
|
65
|
+
uint64_t m_currentNuclReadIdx;
|
|
66
|
+
uint64_t m_currentReadLength;
|
|
67
|
+
uint32_t m_refCnt;
|
|
68
|
+
boolean m_bIsRef;
|
|
69
|
+
char ** m_ppCurrString;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
#define USF_READ_BUF_SIZE (64*1024)
|
|
73
|
+
|
|
74
|
+
ReadSet *importCnyReadSet(char *filename);
|
|
75
|
+
void getCnySeqNucl(SequencesReader *seqReadInfo, uint8_t *sequence);
|
|
76
|
+
uint32_t readCnySeqUint32(SequencesReader *seqReadInfo);
|
|
77
|
+
boolean advanceCnySeqCurrentRead(SequencesReader *seqReadInfo);
|
|
78
|
+
FILE *openCnySeqForRead(const char *fileName, CnyUnifiedSeqFileHeader *seqFileHeader);
|
|
79
|
+
void resetCnySeqCurrentRead(SequencesReader *seqReadInfo);
|
|
80
|
+
|
|
81
|
+
struct refInfoList_st {
|
|
82
|
+
RefInfo m_elem;
|
|
83
|
+
struct refInfoList_st *next;
|
|
84
|
+
};
|
|
85
|
+
typedef struct refInfoList_st RefInfoList;
|
|
86
|
+
|
|
87
|
+
// Writing
|
|
88
|
+
struct sequencesWriter_st {
|
|
89
|
+
FILE * m_pFile;
|
|
90
|
+
// following are only used by the binary code
|
|
91
|
+
FILE * m_nameFile;
|
|
92
|
+
CnyUnifiedSeqFileHeader m_unifiedSeqFileHeader;
|
|
93
|
+
uint64_t m_insertStartIndex;
|
|
94
|
+
uint64_t m_insertLength;
|
|
95
|
+
uint64_t m_insertLengthIndex;
|
|
96
|
+
uint64_t m_insertCurrentIndex;
|
|
97
|
+
uint32_t m_hostBuffersInUse;
|
|
98
|
+
uint32_t m_fileSegmentWriteIdx;
|
|
99
|
+
uint8_t * m_pWriteBuffer[3];
|
|
100
|
+
uint8_t * m_pHostBufPtr;
|
|
101
|
+
uint8_t * m_pHostLengthBufPtr;
|
|
102
|
+
uint8_t * m_pHostLengthBufPtrMax;
|
|
103
|
+
uint8_t * m_pHostBufPtrMax;
|
|
104
|
+
int64_t m_hostBufferFilePos[3];
|
|
105
|
+
RefInfoList * m_refInfoHead;
|
|
106
|
+
uint32_t m_refCnt;
|
|
107
|
+
boolean m_bIsRef;
|
|
108
|
+
Mask ** m_referenceMask;
|
|
109
|
+
Mask * m_current;
|
|
110
|
+
Coordinate m_position;
|
|
111
|
+
boolean m_openMask;
|
|
112
|
+
RecycleBin * m_maskMemory;
|
|
113
|
+
};
|
|
114
|
+
typedef struct sequencesWriter_st SequencesWriter;
|
|
115
|
+
|
|
116
|
+
SequencesWriter * openCnySeqForWrite(const char *unifiedSeqFileName);
|
|
117
|
+
void cnySeqInsertSequenceName(const char *name, IDnum readID, SequencesWriter *seqWriteInfo, Category cat);
|
|
118
|
+
void cnySeqInsertReferenceMask(SequencesWriter *seqWriteInfo, Mask *referenceMask);
|
|
119
|
+
void cnySeqInsertNucleotideString(const char *pReadBuf, SequencesWriter *seqWriteInfo);
|
|
120
|
+
void inputCnySeqFileStart(Category category, SequencesWriter *seqWriteInfo);
|
|
121
|
+
void cnySeqInsertStart(SequencesWriter *seqWriteInfo);
|
|
122
|
+
void cnySeqInsertEnd(SequencesWriter *seqWriteInfo);
|
|
123
|
+
void closeCnySeqForWrite(SequencesWriter *seqWriteInfo);
|
|
124
|
+
|
|
125
|
+
#endif
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2007, 2008 Daniel Zerbino (zerbino@ebi.ac.uk)
|
|
3
|
+
|
|
4
|
+
This file is part of Velvet.
|
|
5
|
+
|
|
6
|
+
Velvet is free software; you can redistribute it and/or modify
|
|
7
|
+
it under the terms of the GNU General Public License as published by
|
|
8
|
+
the Free Software Foundation; either version 2 of the License, or
|
|
9
|
+
(at your option) any later version.
|
|
10
|
+
|
|
11
|
+
Velvet is distributed in the hope that it will be useful,
|
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
GNU General Public License for more details.
|
|
15
|
+
|
|
16
|
+
You should have received a copy of the GNU General Public License
|
|
17
|
+
along with Velvet; if not, write to the Free Software
|
|
18
|
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
19
|
+
|
|
20
|
+
*/
|
|
21
|
+
#include <stdlib.h>
|
|
22
|
+
#include <stdio.h>
|
|
23
|
+
|
|
24
|
+
#include "globals.h"
|
|
25
|
+
#include "graph.h"
|
|
26
|
+
#include "passageMarker.h"
|
|
27
|
+
#include "utility.h"
|
|
28
|
+
|
|
29
|
+
// DEBUG
|
|
30
|
+
static boolean isLocallyInitial(PassageMarkerI marker) {
|
|
31
|
+
PassageMarkerI previous = getPreviousInSequence(marker);
|
|
32
|
+
return (previous == NULL_IDX
|
|
33
|
+
|| getPassageMarkerFinish(previous) != getPassageMarkerStart(marker));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
void concatenateReadStarts(Node * target, Node * source, Graph * graph)
|
|
37
|
+
{
|
|
38
|
+
IDnum sourceLength, targetLength;
|
|
39
|
+
ShortReadMarker *sourceArray, *targetArray, *marker;
|
|
40
|
+
IDnum index;
|
|
41
|
+
Coordinate position, nodeLength;
|
|
42
|
+
|
|
43
|
+
if (!readStartsAreActivated(graph))
|
|
44
|
+
return;
|
|
45
|
+
|
|
46
|
+
if (target == NULL || source == NULL)
|
|
47
|
+
return;
|
|
48
|
+
|
|
49
|
+
// Update Coordinates
|
|
50
|
+
sourceArray = getNodeReads(source, graph);
|
|
51
|
+
sourceLength = getNodeReadCount(source, graph);
|
|
52
|
+
|
|
53
|
+
nodeLength = getNodeLength(target);
|
|
54
|
+
for (index = 0; index < sourceLength; index++) {
|
|
55
|
+
marker = getShortReadMarkerAtIndex(sourceArray, index);
|
|
56
|
+
position = getShortReadMarkerPosition(marker);
|
|
57
|
+
if (position != -1) {
|
|
58
|
+
position += nodeLength;
|
|
59
|
+
setShortReadMarkerPosition(marker, position);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Same but for symmetrical reads
|
|
64
|
+
targetArray = getNodeReads(getTwinNode(target), graph);
|
|
65
|
+
targetLength = getNodeReadCount(getTwinNode(target), graph);
|
|
66
|
+
|
|
67
|
+
nodeLength = getNodeLength(source);
|
|
68
|
+
for (index = 0; index < targetLength; index++) {
|
|
69
|
+
marker = getShortReadMarkerAtIndex(targetArray, index);
|
|
70
|
+
position = getShortReadMarkerPosition(marker);
|
|
71
|
+
if (position != -1) {
|
|
72
|
+
position += nodeLength;
|
|
73
|
+
setShortReadMarkerPosition(marker, position);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Merging lists
|
|
78
|
+
mergeNodeReads(target, source, graph);
|
|
79
|
+
mergeNodeReads(getTwinNode(target), getTwinNode(source), graph);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Replaces two consecutive nodes into a single equivalent node
|
|
83
|
+
// The extra memory is freed
|
|
84
|
+
void concatenateStringOfNodes(Node * nodeA, Graph * graph)
|
|
85
|
+
{
|
|
86
|
+
Node *twinA = getTwinNode(nodeA);
|
|
87
|
+
Node * nodeB = nodeA;
|
|
88
|
+
Node * twinB;
|
|
89
|
+
Node *currentNode, *nextNode;
|
|
90
|
+
Coordinate totalLength = 0;
|
|
91
|
+
PassageMarkerI marker, tmpMarker;
|
|
92
|
+
Arc *arc;
|
|
93
|
+
|
|
94
|
+
while (simpleArcCount(nodeB) == 1
|
|
95
|
+
&&
|
|
96
|
+
simpleArcCount(getTwinNode
|
|
97
|
+
(getDestination(getArc(nodeB)))) ==
|
|
98
|
+
1
|
|
99
|
+
&& getDestination(getArc(nodeB)) != getTwinNode(nodeB)
|
|
100
|
+
&& getDestination(getArc(nodeB)) != nodeA) {
|
|
101
|
+
totalLength += getNodeLength(nodeB);
|
|
102
|
+
nodeB = getDestination(getArc(nodeB));
|
|
103
|
+
}
|
|
104
|
+
twinB = getTwinNode(nodeB);
|
|
105
|
+
totalLength += getNodeLength(nodeB);
|
|
106
|
+
reallocateNodeDescriptor(nodeA, totalLength);
|
|
107
|
+
|
|
108
|
+
currentNode = nodeA;
|
|
109
|
+
while (currentNode != nodeB) {
|
|
110
|
+
currentNode = getDestination(getArc(currentNode));
|
|
111
|
+
|
|
112
|
+
// Passage marker management in node A:
|
|
113
|
+
for (marker = getMarker(nodeA); marker != NULL_IDX;
|
|
114
|
+
marker = getNextInNode(marker)) {
|
|
115
|
+
if (getNode(getNextInSequence(marker)) != currentNode
|
|
116
|
+
|| getFinishOffset(marker) != 0
|
|
117
|
+
|| getStartOffset(getNextInSequence(marker)) != 0
|
|
118
|
+
|| getPassageMarkerFinish(marker) != getPassageMarkerStart(getNextInSequence(marker)))
|
|
119
|
+
incrementFinishOffset(marker,
|
|
120
|
+
getNodeLength(currentNode));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Swapping new born passageMarkers from B to A
|
|
124
|
+
for (marker = getMarker(currentNode); marker != NULL_IDX; marker = tmpMarker) {
|
|
125
|
+
tmpMarker = getNextInNode(marker);
|
|
126
|
+
|
|
127
|
+
if (isLocallyInitial(marker)
|
|
128
|
+
|| getNode(getPreviousInSequence(marker)) != nodeA
|
|
129
|
+
|| getStartOffset(marker) != 0
|
|
130
|
+
|| getFinishOffset(getPreviousInSequence(marker)) != 0
|
|
131
|
+
|| getPassageMarkerStart(marker) != getPassageMarkerFinish(getPreviousInSequence(marker))) {
|
|
132
|
+
extractPassageMarker(marker);
|
|
133
|
+
incrementFinishOffset(getTwinMarker(marker),
|
|
134
|
+
getNodeLength(nodeA));
|
|
135
|
+
transposePassageMarker(marker, nodeA);
|
|
136
|
+
} else
|
|
137
|
+
disconnectNextPassageMarker(getPreviousInSequence
|
|
138
|
+
(marker), graph);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Read starts
|
|
142
|
+
concatenateReadStarts(nodeA, currentNode, graph);
|
|
143
|
+
|
|
144
|
+
// Gaps
|
|
145
|
+
appendNodeGaps(nodeA, currentNode, graph);
|
|
146
|
+
|
|
147
|
+
// Update uniqueness:
|
|
148
|
+
setUniqueness(nodeA, getUniqueness(nodeA) || getUniqueness(currentNode));
|
|
149
|
+
|
|
150
|
+
#ifndef SINGLE_COV_CAT
|
|
151
|
+
Category cat;
|
|
152
|
+
for (cat = 0; cat < CATEGORIES; cat++) {
|
|
153
|
+
// Update virtual coverage
|
|
154
|
+
incrementVirtualCoverage(nodeA, cat,
|
|
155
|
+
getVirtualCoverage(currentNode, cat));
|
|
156
|
+
// Update original virtual coverage
|
|
157
|
+
incrementOriginalVirtualCoverage(nodeA, cat,
|
|
158
|
+
getOriginalVirtualCoverage(currentNode, cat));
|
|
159
|
+
}
|
|
160
|
+
#else
|
|
161
|
+
// Update virtual coverage
|
|
162
|
+
incrementVirtualCoverage(nodeA, getVirtualCoverage(currentNode));
|
|
163
|
+
#endif
|
|
164
|
+
|
|
165
|
+
// Descriptor management (node)
|
|
166
|
+
directlyAppendDescriptors(nodeA, currentNode, totalLength);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Correct arcs
|
|
170
|
+
for (arc = getArc(nodeB); arc != NULL; arc = getNextArc(arc)) {
|
|
171
|
+
if (getDestination(arc) != twinB)
|
|
172
|
+
createAnalogousArc(nodeA, getDestination(arc),
|
|
173
|
+
arc, graph);
|
|
174
|
+
else
|
|
175
|
+
createAnalogousArc(nodeA, twinA, arc, graph);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// Freeing gobbled nodes
|
|
179
|
+
currentNode = getTwinNode(nodeB);
|
|
180
|
+
while (currentNode != getTwinNode(nodeA)) {
|
|
181
|
+
arc = getArc(currentNode);
|
|
182
|
+
nextNode = getDestination(arc);
|
|
183
|
+
destroyNode(currentNode, graph);
|
|
184
|
+
currentNode = nextNode;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Detects sequences that could be simplified through concatentation
|
|
189
|
+
// Iterates till graph cannot be more simplified
|
|
190
|
+
// Useless nodes are freed from memory and remaining ones are renumbered
|
|
191
|
+
void concatenateGraph(Graph * graph)
|
|
192
|
+
{
|
|
193
|
+
IDnum nodeIndex;
|
|
194
|
+
Node *node, *twin;
|
|
195
|
+
|
|
196
|
+
velvetLog("Concatenation...\n");
|
|
197
|
+
|
|
198
|
+
for (nodeIndex = 1; nodeIndex < nodeCount(graph); nodeIndex++) {
|
|
199
|
+
node = getNodeInGraph(graph, nodeIndex);
|
|
200
|
+
|
|
201
|
+
if (node == NULL)
|
|
202
|
+
continue;
|
|
203
|
+
|
|
204
|
+
twin = getTwinNode(node);
|
|
205
|
+
while (simpleArcCount(node) == 1
|
|
206
|
+
&&
|
|
207
|
+
simpleArcCount(getTwinNode
|
|
208
|
+
(getDestination(getArc(node)))) ==
|
|
209
|
+
1) {
|
|
210
|
+
if (getDestination(getArc(node)) == twin
|
|
211
|
+
|| getDestination(getArc(node)) == node)
|
|
212
|
+
break;
|
|
213
|
+
concatenateStringOfNodes(node,
|
|
214
|
+
graph);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
while (simpleArcCount(twin) == 1
|
|
218
|
+
&&
|
|
219
|
+
simpleArcCount(getTwinNode
|
|
220
|
+
(getDestination(getArc(twin)))) ==
|
|
221
|
+
1) {
|
|
222
|
+
if (getDestination(getArc(twin)) == node
|
|
223
|
+
|| getDestination(getArc(twin)) == twin)
|
|
224
|
+
break;
|
|
225
|
+
concatenateStringOfNodes(twin,
|
|
226
|
+
graph);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
renumberNodes(graph);
|
|
231
|
+
sortGapMarkers(graph);
|
|
232
|
+
velvetLog("Concatenation over!\n");
|
|
233
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
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 _CONCATENATEDGRAPH_H_
|
|
22
|
+
#define _CONCATENATEDGRAPH_H_
|
|
23
|
+
|
|
24
|
+
// Concatenates short read markers from node B to the end of nodeA
|
|
25
|
+
void concatenateReadStarts(Node * nodeA, Node * nodeB, Graph * graph);
|
|
26
|
+
|
|
27
|
+
// Concatenates all pairs of nodes which form a linear structure
|
|
28
|
+
void concatenateGraph(Graph * graph);
|
|
29
|
+
|
|
30
|
+
#endif
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2007, 2008 Daniel Zerbino (zerbino@ebi.ac.uk)
|
|
3
|
+
|
|
4
|
+
This file is part of Velvet.
|
|
5
|
+
|
|
6
|
+
Velvet is free software; you can redistribute it and/or modify
|
|
7
|
+
it under the terms of the GNU General Public License as published by
|
|
8
|
+
the Free Software Foundation; either version 2 of the License, or
|
|
9
|
+
(at your option) any later version.
|
|
10
|
+
|
|
11
|
+
Velvet is distributed in the hope that it will be useful,
|
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
GNU General Public License for more details.
|
|
15
|
+
|
|
16
|
+
You should have received a copy of the GNU General Public License
|
|
17
|
+
along with Velvet; if not, write to the Free Software
|
|
18
|
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
19
|
+
|
|
20
|
+
*/
|
|
21
|
+
#include <stdlib.h>
|
|
22
|
+
#include <stdio.h>
|
|
23
|
+
|
|
24
|
+
#include "globals.h"
|
|
25
|
+
#include "preGraph.h"
|
|
26
|
+
#include "utility.h"
|
|
27
|
+
|
|
28
|
+
// Replaces two consecutive preNodes into a single equivalent preNode
|
|
29
|
+
// The extra memory is freed
|
|
30
|
+
static void concatenatePreNodes(IDnum preNodeAID, PreArcI oldPreArc,
|
|
31
|
+
PreGraph * preGraph)
|
|
32
|
+
{
|
|
33
|
+
IDnum preNodeBID = preNodeAID;
|
|
34
|
+
IDnum currentPreNodeID, nextPreNodeID;
|
|
35
|
+
PreArcI preArc = oldPreArc;
|
|
36
|
+
Coordinate totalLength = 0;
|
|
37
|
+
Coordinate arrayLength;
|
|
38
|
+
Descriptor * descr, * ptr;
|
|
39
|
+
int writeOffset = 0;
|
|
40
|
+
int wordLength = getWordLength_pg(preGraph);
|
|
41
|
+
Coordinate totalOffset = 0;
|
|
42
|
+
|
|
43
|
+
//velvetLog("Concatenating nodes %li and %li\n", preNodeAID, preNodeBID);
|
|
44
|
+
|
|
45
|
+
while(hasSinglePreArc_pg(preNodeBID, preGraph)
|
|
46
|
+
&&
|
|
47
|
+
hasSinglePreArc_pg(getOtherEnd_pg
|
|
48
|
+
(preArc, preNodeBID),
|
|
49
|
+
preGraph)
|
|
50
|
+
&& !isLoop_pg(preArc)
|
|
51
|
+
&& getDestination_pg(preArc, preNodeBID) != preNodeAID) {
|
|
52
|
+
|
|
53
|
+
totalLength += getPreNodeLength_pg(preNodeBID, preGraph);
|
|
54
|
+
preNodeBID = getDestination_pg(preArc, preNodeBID);
|
|
55
|
+
preArc = getPreArc_pg(preNodeBID, preGraph);
|
|
56
|
+
}
|
|
57
|
+
totalLength += getPreNodeLength_pg(preNodeBID, preGraph);
|
|
58
|
+
totalLength += wordLength - 1;
|
|
59
|
+
|
|
60
|
+
// Reference marker management
|
|
61
|
+
if (referenceMarkersAreActivated_pg(preGraph)) {
|
|
62
|
+
currentPreNodeID = preNodeAID;
|
|
63
|
+
preArc = getPreArc_pg(currentPreNodeID, preGraph);
|
|
64
|
+
for (currentPreNodeID = getDestination_pg(preArc, currentPreNodeID); currentPreNodeID != preNodeBID; currentPreNodeID = getDestination_pg(preArc, currentPreNodeID)) {
|
|
65
|
+
concatenateReferenceMarkers_pg(preNodeAID, currentPreNodeID, preGraph, totalOffset);
|
|
66
|
+
preArc = getPreArc_pg(currentPreNodeID, preGraph);
|
|
67
|
+
totalOffset += getPreNodeLength_pg(currentPreNodeID, preGraph);
|
|
68
|
+
}
|
|
69
|
+
concatenateReferenceMarkers_pg(preNodeAID, currentPreNodeID, preGraph, totalOffset);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Descriptor management (preNode)
|
|
73
|
+
arrayLength = totalLength / 4;
|
|
74
|
+
if (totalLength % 4)
|
|
75
|
+
arrayLength++;
|
|
76
|
+
descr = callocOrExit(arrayLength, Descriptor);
|
|
77
|
+
ptr = descr;
|
|
78
|
+
if (preNodeAID > 0) {
|
|
79
|
+
currentPreNodeID = preNodeAID;
|
|
80
|
+
appendDescriptors_pg(&ptr, &writeOffset, currentPreNodeID, preGraph, true);
|
|
81
|
+
preArc = getPreArc_pg(currentPreNodeID, preGraph);
|
|
82
|
+
currentPreNodeID = getDestination_pg(preArc, currentPreNodeID);
|
|
83
|
+
while (currentPreNodeID != preNodeBID) {
|
|
84
|
+
appendDescriptors_pg(&ptr, &writeOffset, currentPreNodeID, preGraph, false);
|
|
85
|
+
preArc = getPreArc_pg(currentPreNodeID, preGraph);
|
|
86
|
+
currentPreNodeID = getDestination_pg(preArc, currentPreNodeID);
|
|
87
|
+
}
|
|
88
|
+
appendDescriptors_pg(&ptr, &writeOffset, currentPreNodeID, preGraph, false);
|
|
89
|
+
} else {
|
|
90
|
+
currentPreNodeID = -preNodeBID;
|
|
91
|
+
appendDescriptors_pg(&ptr, &writeOffset ,currentPreNodeID, preGraph, true);
|
|
92
|
+
preArc = getPreArc_pg(currentPreNodeID, preGraph);
|
|
93
|
+
currentPreNodeID = getDestination_pg(preArc, currentPreNodeID);
|
|
94
|
+
while (currentPreNodeID != -preNodeAID) {
|
|
95
|
+
appendDescriptors_pg(&ptr, &writeOffset ,currentPreNodeID, preGraph, false);
|
|
96
|
+
preArc = getPreArc_pg(currentPreNodeID, preGraph);
|
|
97
|
+
currentPreNodeID = getDestination_pg(preArc, currentPreNodeID);
|
|
98
|
+
}
|
|
99
|
+
appendDescriptors_pg(&ptr, &writeOffset ,currentPreNodeID, preGraph, false);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (writeOffset != 0)
|
|
103
|
+
while (writeOffset++ != 4)
|
|
104
|
+
(*ptr) >>= 2;
|
|
105
|
+
|
|
106
|
+
setPreNodeDescriptor_pg(descr, totalLength - wordLength + 1, preNodeAID, preGraph);
|
|
107
|
+
|
|
108
|
+
// Correct preArcs
|
|
109
|
+
for (preArc = getPreArc_pg(preNodeBID, preGraph); preArc != NULL_IDX;
|
|
110
|
+
preArc = getNextPreArc_pg(preArc, preNodeBID)) {
|
|
111
|
+
if (getDestination_pg(preArc, preNodeBID) != -preNodeBID)
|
|
112
|
+
createAnalogousPreArc_pg(preNodeAID,
|
|
113
|
+
getDestination_pg(preArc,
|
|
114
|
+
preNodeBID),
|
|
115
|
+
preArc, preGraph);
|
|
116
|
+
else
|
|
117
|
+
createAnalogousPreArc_pg(preNodeAID, -preNodeAID,
|
|
118
|
+
preArc, preGraph);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Freeing gobbled preNode
|
|
122
|
+
currentPreNodeID = -preNodeBID;
|
|
123
|
+
while (currentPreNodeID != -preNodeAID) {
|
|
124
|
+
preArc = getPreArc_pg(currentPreNodeID, preGraph);
|
|
125
|
+
nextPreNodeID = getDestination_pg(preArc, currentPreNodeID);
|
|
126
|
+
destroyPreNode_pg(currentPreNodeID, preGraph);
|
|
127
|
+
currentPreNodeID = nextPreNodeID;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Detects sequences that could be simplified through concatentation
|
|
132
|
+
// Iterates till preGraph cannot be more simplified
|
|
133
|
+
// Useless preNodes are freed from memory and remaining ones are renumbered
|
|
134
|
+
void concatenatePreGraph_pg(PreGraph * preGraph)
|
|
135
|
+
{
|
|
136
|
+
IDnum preNodeIndex;
|
|
137
|
+
PreArcI preArc;
|
|
138
|
+
PreNode *preNode;
|
|
139
|
+
|
|
140
|
+
velvetLog("Concatenation...\n");
|
|
141
|
+
|
|
142
|
+
for (preNodeIndex = 1; preNodeIndex < preNodeCount_pg(preGraph);
|
|
143
|
+
preNodeIndex++) {
|
|
144
|
+
preNode = getPreNodeInPreGraph_pg(preGraph, preNodeIndex);
|
|
145
|
+
|
|
146
|
+
if (preNode == NULL)
|
|
147
|
+
continue;
|
|
148
|
+
|
|
149
|
+
preArc = getPreArc_pg(preNodeIndex, preGraph);
|
|
150
|
+
|
|
151
|
+
while (hasSinglePreArc_pg(preNodeIndex, preGraph)
|
|
152
|
+
&&
|
|
153
|
+
hasSinglePreArc_pg(getOtherEnd_pg
|
|
154
|
+
(preArc, preNodeIndex),
|
|
155
|
+
preGraph)) {
|
|
156
|
+
if (isLoop_pg(preArc))
|
|
157
|
+
break;
|
|
158
|
+
concatenatePreNodes(preNodeIndex, preArc,
|
|
159
|
+
preGraph);
|
|
160
|
+
preArc = getPreArc_pg(preNodeIndex, preGraph);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
preArc = getPreArc_pg(-preNodeIndex, preGraph);
|
|
164
|
+
|
|
165
|
+
while (hasSinglePreArc_pg(-preNodeIndex, preGraph)
|
|
166
|
+
&&
|
|
167
|
+
hasSinglePreArc_pg(getOtherEnd_pg
|
|
168
|
+
(preArc, -preNodeIndex),
|
|
169
|
+
preGraph)) {
|
|
170
|
+
if (isLoop_pg(preArc))
|
|
171
|
+
break;
|
|
172
|
+
concatenatePreNodes(-preNodeIndex, preArc,
|
|
173
|
+
preGraph);
|
|
174
|
+
preArc = getPreArc_pg(-preNodeIndex, preGraph);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
renumberPreNodes_pg(preGraph);
|
|
179
|
+
velvetLog("Concatenation over!\n");
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
static boolean isEligibleTip(IDnum index, PreGraph * preGraph, Coordinate
|
|
183
|
+
cutoffLength)
|
|
184
|
+
{
|
|
185
|
+
IDnum currentIndex = -index;
|
|
186
|
+
Coordinate totalLength = 0;
|
|
187
|
+
PreArcI activeArc = NULL_IDX;
|
|
188
|
+
PreArcI arc;
|
|
189
|
+
IDnum mult = 0;
|
|
190
|
+
|
|
191
|
+
if (getPreArc_pg(index, preGraph) != NULL_IDX)
|
|
192
|
+
return false;
|
|
193
|
+
|
|
194
|
+
// Finding first tangle
|
|
195
|
+
while (currentIndex != 0
|
|
196
|
+
&& simplePreArcCount_pg(-currentIndex, preGraph) < 2
|
|
197
|
+
&& simplePreArcCount_pg(currentIndex, preGraph) < 2
|
|
198
|
+
&& (!referenceMarkersAreActivated_pg(preGraph) || !hasPreMarkers(currentIndex, preGraph))) {
|
|
199
|
+
totalLength += getPreNodeLength_pg(currentIndex, preGraph);
|
|
200
|
+
activeArc = getPreArc_pg(currentIndex, preGraph);
|
|
201
|
+
currentIndex = getDestination_pg(activeArc, currentIndex);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// If too long
|
|
205
|
+
if (totalLength >= cutoffLength)
|
|
206
|
+
return false;
|
|
207
|
+
|
|
208
|
+
// If isolated snippet:
|
|
209
|
+
if (currentIndex == 0)
|
|
210
|
+
return true;
|
|
211
|
+
|
|
212
|
+
// Joined tips
|
|
213
|
+
if (simplePreArcCount_pg(-currentIndex, preGraph) < 2)
|
|
214
|
+
return false;
|
|
215
|
+
|
|
216
|
+
// If unique event
|
|
217
|
+
if (getMultiplicity_pg(activeArc) == 1)
|
|
218
|
+
return true;
|
|
219
|
+
|
|
220
|
+
// Computing max arc
|
|
221
|
+
for (arc = getPreArc_pg(-currentIndex, preGraph); arc != NULL_IDX;
|
|
222
|
+
arc = getNextPreArc_pg(arc, -currentIndex))
|
|
223
|
+
if (getMultiplicity_pg(arc) > mult)
|
|
224
|
+
mult = getMultiplicity_pg(arc);
|
|
225
|
+
|
|
226
|
+
// Testing for minority
|
|
227
|
+
return mult > getMultiplicity_pg(activeArc);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
void clipTips_pg(PreGraph * preGraph)
|
|
231
|
+
{
|
|
232
|
+
IDnum index;
|
|
233
|
+
PreNode *current;
|
|
234
|
+
boolean modified = true;
|
|
235
|
+
Coordinate cutoffLength = getWordLength_pg(preGraph) * 2;
|
|
236
|
+
IDnum counter = 0;
|
|
237
|
+
|
|
238
|
+
velvetLog("Clipping short tips off preGraph\n");
|
|
239
|
+
|
|
240
|
+
// while (modified) {
|
|
241
|
+
// modified = false;
|
|
242
|
+
// for (index = 1; index <= preNodeCount_pg(preGraph);
|
|
243
|
+
// index++) {
|
|
244
|
+
// current = getPreNodeInPreGraph_pg(preGraph, index);
|
|
245
|
+
//
|
|
246
|
+
// if (current == NULL)
|
|
247
|
+
// continue;
|
|
248
|
+
//
|
|
249
|
+
// if (isEligibleTip(index, preGraph, cutoffLength)
|
|
250
|
+
// || isEligibleTip(-index, preGraph,
|
|
251
|
+
// cutoffLength)) {
|
|
252
|
+
// counter++;
|
|
253
|
+
// destroyPreNode_pg(index, preGraph);
|
|
254
|
+
// modified = true;
|
|
255
|
+
// }
|
|
256
|
+
// }
|
|
257
|
+
// }
|
|
258
|
+
|
|
259
|
+
concatenatePreGraph_pg(preGraph);
|
|
260
|
+
velvetLog("%li tips cut off\n", (long) counter);
|
|
261
|
+
velvetLog("%li nodes left\n", (long) preNodeCount_pg(preGraph));
|
|
262
|
+
}
|