Code Monkey home page Code Monkey logo

ratatosk's People

Contributors

guillaumeholley avatar loraine-gueguen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ratatosk's Issues

Docker

does it work as a docker image?

checkpointing / breaking up job

I am attempting to run correction on human Genome, on the university HPC, however our run times are limited to maximum 3 days. Is there a way to configure to run in batches? Our HPC supports checkpointing - and am looking into if this is possible - which saves state of job and resumes.. (I have requested extra time but could be in for a long wait) I have 150G nanopore reads and 240G of illumina reads.
Also if a resume feature was available for program interruptions, out of time or memory, etc, that would be helpful.

cant get a fastq output

Hi,

first, thanks for your software!

We have both sr paired end and single long ONT reads, so we want to try Ratatosk for our viral data:)
I've tried this command:

./Ratatosk \
    --in-short ILLUMINA/s01_R1.fastq.gz \
    --in-short ILLUMINA/s01_R2.fastq.gz  \
    --in-long  ONT/s01.fastq \
    --out-long BC01_test \
    --quality 0  \
    --cores 10

However I get a fasta output. After reading your documentation, -q option is mandatory to have a fastq output. I've tried the command above with --quality 0 or --quality or without, but the output is the same. Maybe I'm missing something.

Thanks,

Hadrien

Is it good to run Ratatosk on multiple long read files separately?

Hi,

I have four long read files. I am running Ratatosk (not reference-guided mode) on these four files but it has taken too long to finish running. I am wondering if I run Ratatosk for the four long read files separately in four computers (four nodes of a cluster), would the results be the same as in one machine? Furthermore, can I split the long reads into N parts and run Ratatosk for each part separately in N computers and afterwards merge the results?

Leiting

a question on command line

  1. None of your examples had fastq read 1 and 2. How should these be input? Like...

Ratatosk correct -v -c 4 -s read_file1_1.fq.gz -s read_file1_2.fq.gz -s read_file2_1.fq.gz -s read_file2_2.fq.gz -l LR.fq -o LR_corrected.fq

  1. Also, I've been running the program for two days now and after a day, it's been hanging there using very little CPU (see below for top output). Is that typical behavior?
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
32599 saling  20   0  102.5g 102.2g   1260 S   4.6 10.1   3635:54 Ratatosk
31845 saling   20   0  110.0g  97.7g   1876 S   3.3  9.7   5367:44 Ratatosk

Can you run "correct -2" phase without "correct -1"?

Hello, I am using Ratatosk on quite a large dataset. I used simply "correct" without the two-part command system. However, I might run out of resources and I was wondering if it would be possible to run "correct -2" since I believe that the first part of the program is finished.

Do I understand correctly that by running only correct, the program runs "correct -1" and then "correct -2" on its own anyways? And that the "correct -1" command creates "name2.fastq" file while "correct -2" creates "name.fastq" file? And thus if I run "-correct" and I managed to get to the point where "name2.fastq" is created, then it is possible to start from that point on with "correct -2"?

Thank you very much for your help.

Make fails in MacOS Catalina

Hello,

I'm having some issues during the compilation of Ratatosk in MacOS Catalina. Running make results in the below error

[ 70%] Building CXX object src/CMakeFiles/Ratatosk.dir/Graph.cpp.o
/Users/blakestamps/bin/Ratatosk/src/Graph.cpp:871:99: error: no viable conversion from 'pair<std::__1::unordered_map<unsigned long long,
      unsigned long long, CustomHashUint64_t, std::__1::equal_to<unsigned long long>, std::__1::allocator<std::__1::pair<const unsigned
      long long, unsigned long long> > >::iterator, [...]>' to 'const pair<unordered_map<uint64_t, size_t,
      CustomHashUint64_t>::const_iterator, [...]>'
  ...const pair<unordered_map<uint64_t, size_t, CustomHashUint64_t>::const_iterator, bool> p = name_hmap.insert({h_name, nextID});
                                                                                           ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/utility:328:5: note: candidate constructor not viable: no known conversion
      from 'pair<std::__1::unordered_map<unsigned long long, unsigned long long, CustomHashUint64_t, std::__1::equal_to<unsigned long
      long>, std::__1::allocator<std::__1::pair<const unsigned long long, unsigned long long> > >::iterator, bool>' (aka
      'pair<__hash_map_iterator<__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long long, unsigned long
      long>, void *> *> >, bool>') to 'const
      std::__1::pair<std::__1::__hash_map_const_iterator<std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned
      long long, unsigned long>, void *> *> >, bool> &' for 1st argument
    pair(pair const&) = default;
    ^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/utility:329:5: note: candidate constructor not viable: no known conversion
      from 'pair<std::__1::unordered_map<unsigned long long, unsigned long long, CustomHashUint64_t, std::__1::equal_to<unsigned long
      long>, std::__1::allocator<std::__1::pair<const unsigned long long, unsigned long long> > >::iterator, bool>' (aka
      'pair<__hash_map_iterator<__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long long, unsigned long
      long>, void *> *> >, bool>') to
      'std::__1::pair<std::__1::__hash_map_const_iterator<std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned
      long long, unsigned long>, void *> *> >, bool> &&' for 1st argument
    pair(pair&&) = default;
    ^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/utility:353:41: note: candidate template ignored: disabled by 'enable_if'
      [with _U1 = std::__1::__hash_map_iterator<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long
      long, unsigned long long>, void *> *> >, _U2 = bool]
    using _EnableB = typename enable_if<_Val, bool>::type;
                                        ^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/utility:353:41: note: candidate template ignored: disabled by 'enable_if'
      [with _U1 = std::__1::__hash_map_iterator<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long
      long, unsigned long long>, void *> *> >, _U2 = bool]
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/utility:353:41: note: candidate template ignored: disabled by 'enable_if'
      [with _Tuple =
      std::__1::pair<std::__1::__hash_map_iterator<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned
      long long, unsigned long long>, void *> *> >, bool>]
1 error generated.
make[2]: *** [src/CMakeFiles/Ratatosk.dir/Graph.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/Ratatosk.dir/all] Error 2
make: *** [all] Error 2

All the requirements should be/are installed, so any help is appreciated!

Found 0 unique k-mers

Hi,
I am runng Ratatosk with
Ratatosk -v -c 16 -s another.fastq.gz -l ../Nanopore/all_reads.fq -o all_reads_Ratatosk
my another.fastq.gz is a sample of the first 1000 reads but the problem is the exact same when I run it with the full data set.

Here is the output of Ratatosk:

Ratatosk::Ratatosk(): Building graph from short reads (1/2).
KmerStream::KmerStream(): Start computing k-mer cardinality estimations
CompactedDBG::build(): Estimated number of k-mers occurring at least once: 1
CompactedDBG::build(): Estimated number of minimizer occurring at least once: 1
CompactedDBG::build(): Estimated number of k-mers occurring twice or more: 1
CompactedDBG::build(): Estimated number of minimizers occurring twice or more: 1
CompactedDBG::filter(): Closed all fasta/fastq files
CompactedDBG::filter(): Processed 0 k-mers in 10000 reads
CompactedDBG::filter(): Found 0 unique k-mers
CompactedDBG::filter(): Number of blocks in Bloom filter is 1
CompactedDBG::construct(): Extract approximate unitigs
CompactedDBG::construct(): Closed all input files

CompactedDBG::construct(): Splitting unitigs (1/2)

CompactedDBG::construct(): Splitting unitigs (2/2)
CompactedDBG::construct(): Before split: 0 unitigs
CompactedDBG::construct(): After split (1/2): 0 unitigs
CompactedDBG::construct(): After split (2/2): 0 unitigs
CompactedDBG::construct(): Unitigs split: 0
CompactedDBG::construct(): Unitigs deleted: 0

CompactedDBG::construct(): Joining unitigs
CompactedDBG::construct(): After join: 0 unitigs
CompactedDBG::construct(): Joined 0 unitigs

CompactedDBG::write(): Writing graph to disk
Ratatosk::Ratatosk(): Graph is empty, no correction can be done. Output uncorrected reads.

My short read fastq file looks like this:

@L183:596:CE9G3ANXX:3:2201:1981:2071 1:N:0:0
NTAGTGACCCTATGTACAAGAGCCCTAAACACTGCTTTATCCTGTGCCAA
+
#=A<BFGEGGGGGFGGG1F1=FGGGGGGGGGGDDGGFDEFFEGGGGGGGG
@L183:596:CE9G3ANXX:3:2201:1816:2077 1:N:0:0
GTGTGCTTGTAAGGATGAGGGGCACCCTAGGTTTCCATCATGTGGAGAGG
+
CCCCCGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
@L183:596:CE9G3ANXX:3:2201:1787:2079 1:N:0:0
ACTTTTCACTTATATTTATCCCAGTTGCCCTATTTGTTACATGATCAATT
+
A=BB=@FFBFC>FGGEGCE@;CFGBD111=C@FFF1>CCFGGEGGCEG>F
@L183:596:CE9G3ANXX:3:2201:1990:2084 1:N:0:0
ATATTGAGCTTCTCCATCAAGTCTTTCCACAAATGTAGTCGTTCTGACTC
+
AB@AB1GGGCGGGGGGGGGCCGG>DFGGGGGG>FDGD1:1CFGGGGCFGG
@L183:596:CE9G3ANXX:3:2201:1763:2084 1:N:0:0
CACTAGTATTACACACAAGAAAAATCTTGCTGAAGATTATGCAAAAATGA
+

the nanopore reads look like this:

@4723f985-8ecd-4a38-87d8-7e54139cf343 runid=9df1038c4d6eb87eb4f188c7c62f93cbdf04ba22 read=12 ch=2701 start_time=2020-07-22T14:40:58Z flow_cell_id=PAE88064 protocol_group_id=20200722_DNA_Bultmann_Ruesselspringer_fb sample_id=no_sample
TGTGCTTCGTTCAGTTACGTGTGCTTGTAAGAGACAGTATTGAATAATAGTGAAGAAGTTGTGAGAGCAACATTTTAGTACATTATTGTAAATTTTATGATATTTATAAAGTTATATATTAATAAGAAGCAACATATGAAGTAACAGCCTATGGTGATGAAGGAAAAGTTCAGGCCTGCTCTGAAAAAATTGGCTAAAAATATAAGGCCCCAGGAATTGATGGTATACCAATTCACATGTTCAATTAATAGATGCTGCCTAGATATGCCCACCAAGTTGTGCCAGAAATCTGGAGAACAACCACTTGTATCTGACTGGAAGAGATCTATGTTGTTCCCATTCCAAGAAAGTGATCATTACAGAGTGTGGAAATTATCAAACAATATCATTAATATCACGTGCAACCAAGATTTTGCTGAAGATTATCAGAAATGACTGGAACTACCAACAGAAAACTACAGAAGTGCAGGCTGGATTTAGACTGGGCCATAGTGCCTAGGGATATTATGACTAATGGTTGACGGATCTTGGCTGAAAGCAAGAATTACCAAAACAATGTCTACCTCTTTCATTGATTATGTAAAGGCTTTAGACTGTGTGGATCATAACAAACTCACTAACTCTGAGAAGAATGGGAATCCCAGAATGCCATGATTGTGCTAATGTAAAACCTATACTTGGACCAGGAGGCAGTCGTCAGAACAGAACAGGAAGCACTTTATGTTTCAAAATTGGGAATGGTATATGCCAGGGCTGTATTCTATCTCCATACTTTTCAACCTTTATGCAGGTTATCTGGGAGTCTGGGATCTAGCAATACGTAGCA
+
(&+$--2--$9$'4985*'-($)67732720+2/..2=>>:<>/+;+',+;489&'((@>:5+'$&06>5<D@AB4/2114867456)')&58<;4)302/-***33A=28:>87999A>A(%%*$3914:3792%',,-25689;$68@A:;;.,+-+,-143+*,2;3/**)%*+))23:<@?E=>99:7200),77-)+%50-.,,,*10'1>>>?<;::<967;<<?CA0*$+,(721/144655:.==<9;3%7032;+&'',,+--.221;5-3....(7>=?3..031>:;A945*$$&&#&$&+,069474/.18;98=3&&=>8>B;<BAA;36<5+3./765464$$'').*.66642*/01128?>==2780:;@B<=>>78;=9:026459(&43/+,.01)0366:7=;9624659'G@66:EA=>=C==*99?203.)13+&%%&%$+/51+(++2***64=AB1267654511,')2,(')++/77645893*)%+*(&0),4040-.4:86;92598738=113-/&(&(17877:08<&&&37231,3*=BC=>A@87>C:77258117333'09;9<<64342&&%'$+-9;;?;;93&8<;;<861-238<@>771//6374,.3A?3/')**'%62+40-.0851--07)357)%%6<:72+()*+*%/00039/-++0.,(%,((&**)9896::;=>:0:>AA=.A?A88845387558:1//**'()-478956:>>:999412)&&&23:67;>7787842'&&&&&;<;=-(()-.8=741026755&&&6-**('(($#&
@9e53c1ac-4e06-41d0-97ec-f4312564af9d runid=9df1038c4d6eb87eb4f188c7c62f93cbdf04ba22 read=11 ch=1809 start_time=2020-07-22T14:40:58Z flow_cell_id=PAE88064 protocol_group_id=20200722_DNA_Bultmann_Ruesselspringer_fb sample_id=no_sample
AATGTACTTCGTTCATTTGTATTGCTGGTGATTTTTATGCTCATAAAATTTTCAGAAGCACTTTAGAGGTAAGTGTCATCTCTAAAGGTAGAAATTATTGTCCCATATTATTGTTGTTAAGTACCATCAGTCACAATCACCCAAACTGATCCTCCAGAAAGGTTTGTCTGAGGCTGTGCCCTTACTGAAGGAGATTGTCATCCTTCTCCCAGGGACCATAATGGGTTGGTTGTCTTTATGGATTACCGTGAAGTTCTTACCACTAGGCCCCCAGAGCTTTCTAAAAAGATATTAGCCAATTTAATGAATTTTAATGACAATAGATAATACCTATTGTTTCTCTCCTGCATGCAATATTCATGTGACTTTTACTTTATAATGGAGACATGACTGTAAACATTCATTTTGAGATAATAGGAAACACAAGTGACTGAATATTTCTACA
+
(&,+**39=;/=<)&+.)(-./10<;/1889BCE?1.88;?8.8E<=8;=;<<;)99*,+&&-$%$%')))&(5+63$22*9=@?+'1,,,$$$#%-354<=1,:8889++/2AB:?@A8.,.,,*..'1:6;;>9994669;9(##()978B9854933-:;=B9;:93/4:=314/++&%&&&667<91&.%%(598/=99>@;==<8,+27923(%$&$$&%0+%&$)%&$&((#'$*>@@641287657BCJEC3:<;;2.1=>?1278*72DNJH?BGLM=7@9558:3534;39:53768=EBDB<=?<<<;>=:>:??A>9:<=5255&.8.(%(9965337%$3:99:-955<7<==6=A?59;=<<6<>4=9@:@A<B@@<@D7>@E@=DAB@@??8(,48>>@;79)+3?;6>?BB;:;@?<>@AAACDGB9-+'
@ea593a53-1da1-4890-9311-abb659f51a7a runid=9df1038c4d6eb87eb4f188c7c62f93cbdf04ba22 read=9 ch=616 start_time=2020-07-22T14:40:58Z flow_cell_id=PAE88064 protocol_group_id=20200722_DNA_Bultmann_Ruesselspringer_fb sample_id=no_sample
AGCACCGTTCCAGTTACATGTGCTCACTTTCAGCCAGTTATCCCACTCCAGAGACCTGAGTTTGGTGTATTGCTCATTTTGTTTGTCCCTGATTCAAGGCGGATTTGCAGACGTTTGCCTTTTAATATTTTCCCAGACTCTGTGTCTCAGTCATTCACTGCCTTTTTTACACATCTTCTTGTCTCGAAGGGTTCTCACCTGTACATGCATCGTTCCAAACCACCATGAATCCGAGTTGTCTTGATCCTTCCGTGTGGCCATTTCGAGAGCATCTCCTGTTACCCACAGCTCATGAGTTCCTGTCTCCATGTCCAGGAGGAGGAGCTAAGCAATATGTACGTAATAA

Any idea what could be going on?
Thanks!

/usr/local/bin/Ratatosk Permission denied

Dear someone,
I don't have roof permission, how to install ratatosk?

make install
[ 44%] Built target bifrost_lib
[100%] Built target Ratatosk
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/bin/Ratatosk
CMake Error at src/cmake_install.cmake:52 (file):
file INSTALL cannot copy file
"/prj/hybrid-assembly/kang/software/ratatosk2/Ratatosk/build/src/Ratatosk"
to "/usr/local/bin/Ratatosk": Permission denied.
Call Stack (most recent call first):
cmake_install.cmake:47 (include)
make: *** [Makefile:105: install] Error 1

Did I already install it in the path /prj/hybrid-assembly/kang/software/ratatosk2/Ratatosk/build/src/Ratatosk?

Best regards,
Xiongbin

Reference-guided SLURM script errors

Hi,
I am hoping to use the reference-guided mode of Ratatosk to correct ONT reads. I tried using the new version, but there seem to be some errors.

In line 78 of the SLURM script, there is a missing fi causing an EOF error.

Also in line 226, the BIN_SZ variable appears undefined and causes an error in the for pos in $(seq 0 $((${BIN_SZ})) $((${chr_len}))) loop as it defaults to 0. I found buffer_sz = 1000000 in segmentBAM.py, but it isn't clear if this is related.

Thanks,
Alex

Fastq input format for short reads

Hello Ratatosk Team,

I have short reads in 2 file 01_R1.fastq and 01_R2.fastq for example. How should I offer them to -s ? they have the same fastq sequence name (fastq header) for each sequence except -1 or -2 in the end of the fastq header. I do not see clear explanation.

Thanks,

Jianshu

short reads for correction

Hi, I understand that if I am interested in SNPs, I should use both short and long reads for the same individual. But could I use short reads from another individual for purpose of de novo genome assembly? Could ratatosk be used for correcting long reads from pooled DNA samples? And should I somehow preprocessed the short reads prior to correction (trimming, filtering)? Thanks.

adjustable kmer size

I am using quite long illumina-quality like reads for a plant genome as the short reads input. However the correction on whole genome scale does not work accurate enough to really make a difference. My long reads are corrected only partially. One thing I am thinking is that since my short reads are quite large, upto a kilobase, and therefore the debruijn graph could be build using larger kmer sizes that de default 31/63 (?) combo. I think the 63 if is fine for mapping the long reads back, but the illumina kmer size for building the graph could be bigger. Any chance this can be increased? (either by me changing the source code or via a parameter). Thanks so far for this great software package! A question related, can I read from the logs also something on the unitig size that is constructed? That might give me a hint already. I can image that for human genome this is quite a bit bigger than for a repetitive plant.

Run time estimation

Hello!

What is the run time estimation for the correction of the long reads? I used the default command for running Ratatosk Ratatosk correct -v -c 90 -s short_reads.fastq -l long_reads.fastq -o out_long_reads and it's been running for 6 days now on a computing server. We don't have multiple nodes on the server so I'm running it on single node mode but I wouldn't have expected it to run for this long. At the moment is in this step Ratatosk::addCoverage(): Subsampling reads. How more would you say it can take?

Best regards,

Jonatan

Treated as HiFi or PacBio Raw

Hi,

I have four more questions.

FYI, a single memory node approach on a PBSpro environment.
module load ratatosk/0.1-foss-2020b
Script: Ratatosk correct -v -c 16 -s /home/SL_Reads_R12All.fq.gz -l /home/SLPBONT1st.fasta -o out_long_RataSLPBONT1st

Q1. Memory issue: I tested a diploid genome (2n=0.7Gb) and took 340 hrs (walltime) with 180G memory and 16 CPUs. Is it normal?

Q2. HiFi or PacBio Raw: Can the corrected PacBio raw read be treated as PacBio HiFi (or corrected) for genome assemblies (e.g. CANU and Flye) after completing the Ratatosk correction? Or, should it be the same as PacBio raw read for genome assemblies?

Q3. I am also testing the multiple nodes de novo correction. After reading the manual, I am trying to have 4 rounds of correction (-r 4). However, the -r option was not recognised via "Ratatosk_denovo_SLURM.sh". What other option do I have? Can I re-run the "Ratatosk_denovo_SLURM.sh" four times with each round output (corrected reads) for next round input?

Q4. Error Ratatosk_denovo_SLURM.sh: I have also tried this script on a PBS pro environment but there was no luck. The script could not find the "sbatch" command. Any suggestion for this matter?

Executed script:
module load ratatosk/0.1-foss-2020b
bash /work/Ratatosk/Ratatosk_denovo_SLURM.sh -c 6 -C 14 -n 6 -s /home/JulGFe_R12All.fastq.gz -l /home/JGFPB_1A.fasta.gz -o out_long_RJGFe4R

Error:
Minimum number of threads: 6
Maximum number of threads: 14
Maximum number of nodes: 6
Input short read file: /home/JulGFe_R12All.fastq.gz
Input long read file: /home/JGFPB_1A.fasta.gz
Output prefix: /work/Rata4R_Multi/out_long_RJGFe4R
Slurm partition: nomosix
/work/Ratatosk/Ratatosk_denovo_SLURM.sh: line 150: sbatch: command not found
Job(s) submission failed.

PBS Job 9745287.pbs
CPU time : 00:10:05
Wall time : 00:11:15
Mem usage : 29980936kb

Many thanks all the time!

Advice and request on genome-guided polishing with BAM files

Dear developers,

We are working on a large dataset (600Gbp / 84 million long-reads and 3 billion short-read pairs) for a large, fragmented and repetitive genome assembly (data described in more detail in issue #18 ), consisting of some couple of hundreds of thousands of contigs/scaffolds and about 83 M unmapped short-reads. Naturally, this is a very difficult genome and dataset.

I am trying out the genome-guided approach which starts from BAM files and initial polished long-reads (upper) look very interesting and clean compared to raw reads (lower):

image(1)

I have two questions and potential requests:

  1. Before the polishing starts, Ratatosk (or rather, one of the scripts/programs in the wrapper Ratatosk_SingleNode.sh) one pair of uncompressed long-read and short-read fasta files for every contig. In our case this results in a huge set of uncompressed sequence on disk.

Is it possible make the script in question generate gzip-compressed fasta files instead of uncompressed ones?

  1. It appears to be the case that after each round of polishing long-reads using the short-reads associated with every contig, Ratatosk checks the full set of 84M unmapped short-reads. This makes it extremely slow for us.

Is it possible to suppress the use of unmapped short-reads for this polishing step? Alternatively, possibly run an "afterburn" where those reads are applied only once to all long-reads in one go? Does discarding unmapped reads invalidate the error correction?

  1. My run will time out. If I restart the genome-guided error correction, will it reuse the large set of fasta files already generated on the disks or will it re-generate them regardless?

Is it possible to add option to split uncorrected regions instead of "trimming" them?

Hi,

I have to confess that I have only used Ratatosk once, but I was just thinking about the option for "trimming". The program GraphAligner (https://github.com/maickrau/GraphAligner) offers something where instead of trimming off the low quality or uncorrected bases/regions that it can "clip" the long reads into say parts (if I understand it correctly with the GraphAligner option --corrected-clipped-out instead of --corrected-out [I think --corrected-out is equivalent to the "trimming" option of Ratasok).

Can I split stage 1 indexing onto subsequent jobs?

Thank you for really amazing tool.

I have faced with some errors when I tried to use Ratatosk. Generally it was a time or memory limit errors. Execution have been stopped on the indexing stage 1, after a days of computation. As I saw at #35, such behavior is not a norm, and some errors may be incorporated in my pipeline. So I need a way to split indexing stage onto separate jobs for achieved intermediate files to be saved. If I simple rerun the indexing stage, it would not use computed files and would begin from the zero level. So in that case I would loss a days of computation.

So I allocated 240 Gb of RAM and 120 threads via workload manager. Execution spend 12 days until be stopped

$ sacct -j {JobId} --format=CPUTimeRAW,Elapsed,NCPUS,State,AveVMSize
CPUTimeRAW    Elapsed      NCPUS      State  AveVMSize 
---------- ---------- ----------- ---------- ---------- 
   1070438 12-09:20:38          1 OUT_OF_ME+ 259099432K 

It resulted in two files

$ls -lah
drwxr-xr-x 4 asan clugroup    4 ะพะบั‚  2 16:28 .
drwxr-xr-x 4 asan clugroup   14 ะพะบั‚  2 17:02 ..
-rw-r--r-- 1 asan clugroup  59G ะพะบั‚  1 03:45 out_long_reads.2.pids.2
-rw-r--r-- 1 asan clugroup 7,7G ัะตะฝ 21 07:49 out_long_reads.index.k63.fasta

I used 150 bp PE reads (fastq) and corrected by overlap consensus ONT reads in fasta format as input data:

$echo "count of forward pe reads" ; <$SR1 bioawk -t -c fastx 'END {print NR}'
count of forward pe reads
235136088
$echo "count of reverse pe reads" ; <$SR2 bioawk -t -c fastx 'END {print NR}'
count of reverse pe reads
235136088
$echo "count of long reads" ; <$LR bioawk -t -c fastx 'END {print NR}'
count of long reads
597518

The genome which reads I have tried to correct was approximately of 1,4 Gb

The command I used was:

Ratatosk index \
    -1 \
    -v \
    -c $THR \
    -s $SR_LIST \
    -l $LR \
    -i 247 \
    -o out_long_reads

The last strings reported was:

$ tail slurm-{JobId}.out
Ratatosk::addCoverage(): Subsampling reads (0.454545) coloring vertices with k-mer coverage [70, 100[
Ratatosk::addCoverage(): Subsampling reads (0.454545) coloring vertices with k-mer coverage [100, 156[
Ratatosk::addCoverage(): Subsampling reads (0.454545) coloring vertices with k-mer coverage [156, 285[
Ratatosk::addCoverage(): Subsampling reads (0.454545) coloring vertices with k-mer coverage [285, 744[
Ratatosk::addCoverage(): Subsampling reads (0.454545) coloring vertices with k-mer coverage [744, 2968043[
Ratatosk::addCoverage(): Compacting subsampled reads.
Ratatosk::addCoverage(): Coloring graph with subsampled reads.
Ratatosk::addCoverage(): Compacting colors.
/var/spool/slurm/{JobId}/slurm_script: string 43: 1688302 Killed                  Ratatosk index -1 -v -c $THR -s $SR_LIST -l $LR -i 247 -o out_long_reads
slurmstepd: error: Detected 1 oom-kill event(s) in StepId={JobId}.batch cgroup. Some of your processes may have been killed by the cgroup out-of-memory handler

What you recommend to do?

compiling - pthreads and usage of -s parameter

Hi,

when compiling on Ubuntu 20.04, I'm not sure if pthreads were found or not ? At least, the test failed, but threads were found? Correct ? Is this to be expected ?

Thanks.


Release mode
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed   ************
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found   ************
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found  *************
-- Found Threads: TRUE  ************
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11")
-- Configuring done
-- Generating done
-- Build files have been written to: /mnt/ngsnfs/tools/Ratatosk/build
rcug@hpc06:/mnt/ngsnfs/tools/Ratatosk/build$
rcug@hpc06:/mnt/ngsnfs/tools/Ratatosk/build$
rcug@hpc06:/mnt/ngsnfs/tools/Ratatosk/build$ ldd `which tar` | grep pthread
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff6af5c7000)

Input file format

Hi,

Thank you for the great program.
Just want to make sure about the input format.
Based on the manual, it is recommended to use Illumina PE reads to correct PacBio or ONT reads.
Given the circumstances, not sure which input file format would be appropriate.

  1. Ratatosk correct -v -c 16 -s short_read_R1.fastq -s short_read_R2.fastq -l long_reads.fastq -o out_long_reads
  2. Ratatosk correct -v -c 16 -s short_read_R12all.fastq -l long_reads.fastq -o out_long_reads
    --> -s short_read_R12all.fastq: It means to make a single input file from the same PE reads.

Any suggestion?

Cheers

UMI reads

Hi! Is there a chance to make it work using Nanopore reads with UMIs?

#Couldn't remove temporary file#

Thank you for the amazing tool. I met a problem when I used Ratatosk.
This is my command: Ratatosk correct -v -c 16 -s transcripts.stringtie.fa -l Tam.transcripts.fa -o out_long_reads
I got the file โ€˜out_long_readsโ€˜, but it said 'Couldn't remove temporary file' .Does it matter?

questions re index construction & insert size

Thanks for a great tool! I have two questions to try to optimize my use of Ratatosk.

  1. For the insert size, how sensitive is the error-correction process to deviation from the default 500-bp insert size? In other words, if median insert size is 450 bp, is it useful to change that parameter? If inserts are greatly different from 500 bp (e.g. 250 bp), does setting the correct insert size using -i improve the outcome?
  2. I'm working with a large genome (>15 Gb haploid size), and plan to error-correct several lanes of PromethION data. Is it possible to build an index from the short-read data (39x coverage) once and use the same index to correct each lane of nanopore reads? Or is the process of building the index dependent on the long-read data, so that a new index must be made for each long-read dataset processed?

-i or -s?

Thereโ€™s a discrepancy in the first command line example and explanatory paragraph.

Paragraph is:
Ratatosk corrects (Ratatosk correct) the long read file (-l in_long_reads.fastq) with 16 threads (-c 16) using an index built from the short read file (-i short_reads.fastq).

but example command uses -s short_reads.fastq

really looking forward to trying Ratatosk out!

Excessive memory usage on a small diploid genome

Hi!

I am trying to run Ratatosk on a diploid arabidopsis genome from the FALCON paper: https://www.nature.com/articles/nmeth.4035. Haploid genome size is ~140 Mb, and heterozygosity rate is ~1%. There is ~9 Gb of Illumina reads and ~22 Gb of PacBio reads.

I am using the latest github code from the master branch with all-default options (30 threads). It seems that de Bruijn graph was build successfully (with little RAM usage), but once it begins the read correction phase, the RAM usage increases over 1.3 Tb and the process is eventually killed. Here are the last lines of the terminal output below.

Is this expected behaviour? The genome is way smaller than human, but has ~10x higher SNP rate. Any tips are appreciated!

Thanks!
Mikhail

Ratatosk::createPartitions(): Processed 10000 centroids.
Ratatosk::createPartitions(): Processed 10100 centroids.
Ratatosk::createPartitions(): Processed 10200 centroids.
Ratatosk::Ratatosk(): Detecting SNPs candidates (1/2).
Ratatosk::detectSNPs(): Scanning graph for k-mers with substitutions (SNPs)
Ratatosk::detectSNPs(): Number of filtered false positive candidates: 3089662
Ratatosk::Ratatosk(): Correcting long reads (1/2).
Ratatosk::correct(): Processed 1000 reads 
Ratatosk::correct(): Processed 2000 reads 
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted (core dumped)

Index generation

Hello!

I'm trying to run the latest version using the four steps method, but when running the first index step, it writes to disk an index file with the name H2009BL_corrected.index.k63.fasta. Is this the expected behaviour? I was expecting to have a k31 index file when runnning the first index step with the Ratatosk index -1 call.

Cheers,

Jonatan

Reference-guided Ratatosk on Single Node with chromosomes but many unplaced scaffolds - faster with GNU Parallel?

If one has a lot of bins (say >2000) because the reference genome has a lot of small scaffolds, but scaffold L50 is say ~10 (for a Hi-C chromosome scale mammalian genome with many, small unplaced scaffolds because original assembly was Illumina-based), would you recommend using the GNU Parallel implementation of the local reference guided correction code? I have been running Ratatosk_SingleNode.sh from commit 74ca617 with 30 cores, and I think it is about 1/3 way done after 1 day of computing. On that note, maybe you could provide a option for using GNU Parallel in a new commit of Ratatosk_SingleNode.sh through an if/elif statement. I understand that would certainly increase the memory usage.

Ratatosk in de novo or reference mode

Hi,

If one de novo assembles paired-end Illumina reads with say ABySS and then uses Ratatosk on the ABySS assembly as a reference, does this equate to a faster but perhaps less accurate de novo Ratatosk method?

Installation typo & Docker

Hi all,

thanks for the tool! We are currently testing it in the context of a fungi hybrid assembly pipeline w/ various tools/polishers.

One thing I noticed:

git clone --recursive https://github.com/DecodeGenetics/Ratatosk/Ratatosk.git

in the README should be

git clone --recursive https://github.com/DecodeGenetics/Ratatosk.git

and we also build a Docker container to easily integrate the tool into a (nextflow) pipeline. If you want to use the Container as well, it's here:

docker pull nanozoo/ratatosk:0.1--73685af

(I still need to test the container properly, but should work)

Conda installation

Hello,

Great tool! Would it be possible to have a Bioconda recipe for Ratatosk? This way it will also trigger the creation of Biocontainers (docker and singularity) that can be integrated in assembly pipelines. Thanks

Best,
Ramon

Resume from the last completed stage

Hi,
When I use the Ratatosk ,it may have terminated prematurely because out of RAM. The output is Ratatosk_sr.fasta and Ratatosk2.fasta. Is there any way to resume from the last completed stage?
lynn

Sharding the second correction pass?

Since the second correction pass takes significantly more time to finish, I was wondering if this can be split into multiple smaller jobs. It would be far less efficient, but assuming the dbg.build, addCoverage, and detectSNPs were executed using the full set of long reads, would it be possible then iterate over subsets of long reads in the search algorithm?

Basically it takes substantially longer to queue for the 120h partition (which is the max), and so is likely faster to run 10x jobs in the 24h partition.

If you think it may work, I'd be happy to give it a go and see what happens.

Understanding the -u option (different individuals than -s possible?)

Hi,

I was wondering about the -u option for Ratatosk. From the README it says

Ratatosk might use for the correction some unmapped short reads 
(-u unmapped_short_reads.fastq) which are missing in the input subset (-s).

I sort of had an interesting idea regarding using this option to increase coverage, but at the same time might be disastrous. Specifically, I have 5 individuals with whole-genome sequencing data (between 15-30x coverage, 150-bp paired-end Illumina reads), and I thought that I might the -u option to help in correction. So my logic was use the individual with ~30x coverage for the -s input and another individual (or maybe the other 4) for the -u input. What makes things more complicated is that the long-read sequences (PacBio CLR reads, ~14x coverage) actually come from a sixth individual. Ultimately, I am the bioinformatician and not the designer of this experiment. I am aware that even if I could correct the PacBio CLR reads to Q40 that perhaps ~14x coverage is not enough for a good assembly, but I am willing to give different assemblers (Peregrine, Hifiasm, etc. a try).

Any thoughts/insight would be greatly appreciated.

Corrected reads as good as Hifi reads?

Hi,

Thanks for the nice tool. I currently correcting ONT and Pacbio raw reads using illumina short reads and HiFi reads. Do you know whether I can use the corrected reads as input for hifi assemblers like Hicanu and Hifiasm?

Thanks
Andrรฉ

Ratatosk::correct(): Corrected read file is not in the same order as input long read file. Abort.

Hi - I'm using ratatosk 0.7.5 to correct nanopore long reads with some Illumina MiSeq data. Things seem to run fine for a few hours, and then terminates on the 2nd pass with

FileParser::FileParser(): Missing input files
Ratatosk::correct(): Corrected read file is not in the same order as input long read file. Abort.

A 6.2G {prefix}.2.fastq file is created as output
A {prefix}.fastq file is created but it is empty

I'm running it on a single SMP machine w/ 32c/64t and 256G of ram.

Thanks in advance.


Complete log:

nohup: ignoring input
Ratatosk::Ratatosk(): Building graph from short reads (1/2).
KmerStream::KmerStream(): Start computing k-mer cardinality estimations
CompactedDBG::build(): Estimated number of k-mers occurring at least once: 3157246438
CompactedDBG::build(): Estimated number of minimizer occurring at least once: 777395301
CompactedDBG::build(): Estimated number of k-mers occurring twice or more: 338646117
CompactedDBG::build(): Estimated number of minimizers occurring twice or more: 82410049
CompactedDBG::filter(): Closed all fasta/fastq files
CompactedDBG::filter(): Processed 4845560557 k-mers in 34559750 reads
CompactedDBG::filter(): Found 3180398519 unique k-mers
CompactedDBG::filter(): Number of blocks in Bloom filter is 2314964
CompactedDBG::construct(): Extract approximate unitigs
CompactedDBG::construct(): Closed all input files

CompactedDBG::construct(): Splitting unitigs (1/2)

CompactedDBG::construct(): Splitting unitigs (2/2)
CompactedDBG::construct(): Before split: 14854969 unitigs
CompactedDBG::construct(): After split (1/2): 13238017 unitigs
CompactedDBG::construct(): After split (2/2): 13433207 unitigs
CompactedDBG::construct(): Unitigs split: 228451
CompactedDBG::construct(): Unitigs deleted: 1618906

CompactedDBG::construct(): Joining unitigs
CompactedDBG::construct(): After join: 12494356 unitigs
CompactedDBG::construct(): Joined 938851 unitigs

CompactedDBG::write(): Writing graph to disk
KmerStream::KmerStream(): Start computing k-mer cardinality estimations
CompactedDBG::build(): Estimated number of k-mers occurring at least once: 276919512
CompactedDBG::build(): Estimated number of minimizer occurring at least once: 62083602
CompactedDBG::filter(): Closed all fasta/fastq files
CompactedDBG::filter(): Processed 730176982 k-mers in 12494356 reads
CompactedDBG::filter(): Found 280692060 unique k-mers
CompactedDBG::filter(): Number of blocks in Bloom filter is 1893005
CompactedDBG::construct(): Extract approximate unitigs
CompactedDBG::construct(): Closed all input files

CompactedDBG::construct(): Splitting unitigs (1/2)

CompactedDBG::construct(): Splitting unitigs (2/2)
CompactedDBG::construct(): Before split: 17730668 unitigs
CompactedDBG::construct(): After split (1/1): 17730853 unitigs
CompactedDBG::construct(): Unitigs split: 92362
CompactedDBG::construct(): Unitigs deleted: 0

CompactedDBG::construct(): Joining unitigs
CompactedDBG::construct(): After join: 15337587 unitigs
CompactedDBG::construct(): Joined 2518366 unitigs
Ratatosk::Ratatosk(): Adding colors and coverage to graph (1/2).
Ratatosk::addCoverage(): Anchoring reads on graph.
Ratatosk::addCoverage(): Detecting and removing duplicated reads.
Ratatosk::addCoverage(): Coloring graph with reads.
Ratatosk::addCoverage(): Processed 1000000 reads.
Ratatosk::addCoverage(): Processed 2000000 reads.
Ratatosk::addCoverage(): Processed 3000000 reads.
Ratatosk::addCoverage(): Processed 4000000 reads.
Ratatosk::addCoverage(): Processed 5000000 reads.
Ratatosk::addCoverage(): Processed 6000000 reads.
Ratatosk::addCoverage(): Processed 7000000 reads.
Ratatosk::addCoverage(): Processed 8000000 reads.
Ratatosk::addCoverage(): Processed 9000000 reads.
Ratatosk::addCoverage(): Processed 10000000 reads.
Ratatosk::addCoverage(): Processed 11000000 reads.
Ratatosk::addCoverage(): Processed 12000000 reads.
Ratatosk::addCoverage(): Processed 13000000 reads.
Ratatosk::addCoverage(): Processed 14000000 reads.
Ratatosk::addCoverage(): Processed 15000000 reads.
Ratatosk::addCoverage(): Processed 16000000 reads.
Ratatosk::addCoverage(): Processed 17000000 reads.
Ratatosk::addCoverage(): Processed 18000000 reads.
Ratatosk::addCoverage(): Processed 19000000 reads.
Ratatosk::addCoverage(): Processed 20000000 reads.
Ratatosk::addCoverage(): Processed 21000000 reads.
Ratatosk::addCoverage(): Processed 22000000 reads.
Ratatosk::addCoverage(): Processed 23000000 reads.
Ratatosk::addCoverage(): Processed 24000000 reads.
Ratatosk::addCoverage(): Processed 25000000 reads.
Ratatosk::addCoverage(): Processed 26000000 reads.
Ratatosk::addCoverage(): Processed 27000000 reads.
Ratatosk::addCoverage(): Processed 28000000 reads.
Ratatosk::addCoverage(): Processed 29000000 reads.
Ratatosk::addCoverage(): Processed 30000000 reads.
Ratatosk::addCoverage(): Processed 31000000 reads.
Ratatosk::addCoverage(): Processed 32000000 reads.
Ratatosk::addCoverage(): Processed 33000000 reads.
Ratatosk::addCoverage(): Processed 34000000 reads.
Ratatosk::addCoverage(): Collecting branching information.
Ratatosk::addCoverage(): Compacting colors.
Ratatosk::Ratatosk(): Adding SNPs candidates to graph (1/2).
Ratatosk::detectSNPs(): Scanning graph for k-mers with substitutions (SNPs)
Ratatosk::detectSNPs(): Processed 1000448 vertices.
Ratatosk::detectSNPs(): Processed 2000896 vertices.
Ratatosk::detectSNPs(): Processed 3000320 vertices.
Ratatosk::detectSNPs(): Processed 4000768 vertices.
Ratatosk::detectSNPs(): Processed 5000192 vertices.
Ratatosk::detectSNPs(): Processed 6000640 vertices.
Ratatosk::detectSNPs(): Processed 7000064 vertices.
Ratatosk::detectSNPs(): Processed 8000512 vertices.
Ratatosk::detectSNPs(): Processed 9000960 vertices.
Ratatosk::detectSNPs(): Processed 10000384 vertices.
Ratatosk::detectSNPs(): Processed 11000832 vertices.
Ratatosk::detectSNPs(): Processed 12000256 vertices.
Ratatosk::detectSNPs(): Processed 13000704 vertices.
Ratatosk::detectSNPs(): Processed 14000128 vertices.
Ratatosk::detectSNPs(): Processed 15000576 vertices.
Ratatosk::Ratatosk(): Adding micro/mini-satellites motif candidates to graph (1/2).
Ratatosk::detectShortCycles(): Detecting unitigs in short cycles
Ratatosk::detectShortCycles(): Found 25335 in short cycles. (23975 unique)
Ratatosk::Ratatosk(): Correcting long reads (1/2).
Ratatosk::correct(): Processed 1000 reads
Ratatosk::correct(): Processed 2000 reads
Ratatosk::correct(): Processed 3000 reads
Ratatosk::correct(): Processed 4000 reads
Ratatosk::correct(): Processed 5000 reads
Ratatosk::correct(): Processed 6000 reads
Ratatosk::correct(): Processed 7000 reads
Ratatosk::correct(): Processed 8000 reads
Ratatosk::correct(): Processed 9000 reads
Ratatosk::correct(): Processed 10000 reads
Ratatosk::correct(): Processed 11000 reads
Ratatosk::correct(): Processed 12000 reads
Ratatosk::correct(): Processed 13000 reads
Ratatosk::correct(): Processed 14000 reads
Ratatosk::correct(): Processed 15000 reads
Ratatosk::correct(): Processed 16000 reads
Ratatosk::correct(): Processed 17000 reads
Ratatosk::correct(): Processed 18000 reads
Ratatosk::correct(): Processed 19000 reads
Ratatosk::correct(): Processed 20000 reads
Ratatosk::correct(): Processed 21000 reads
Ratatosk::correct(): Processed 22000 reads
Ratatosk::correct(): Processed 23000 reads
Ratatosk::correct(): Processed 24000 reads
Ratatosk::correct(): Processed 25000 reads
Ratatosk::correct(): Processed 26000 reads
Ratatosk::correct(): Processed 27000 reads
Ratatosk::correct(): Processed 28000 reads
Ratatosk::correct(): Processed 29000 reads
Ratatosk::correct(): Processed 30000 reads
Ratatosk::correct(): Processed 31000 reads
Ratatosk::correct(): Processed 32000 reads
Ratatosk::correct(): Processed 33000 reads
Ratatosk::correct(): Processed 34000 reads
Ratatosk::correct(): Processed 35000 reads
Ratatosk::correct(): Processed 36000 reads
Ratatosk::correct(): Processed 37000 reads
Ratatosk::correct(): Processed 38000 reads
Ratatosk::correct(): Processed 39000 reads
Ratatosk::correct(): Processed 40000 reads
Ratatosk::correct(): Processed 41000 reads
Ratatosk::correct(): Processed 42000 reads
Ratatosk::correct(): Processed 43000 reads
Ratatosk::correct(): Processed 44000 reads
Ratatosk::correct(): Processed 45000 reads
Ratatosk::correct(): Processed 46000 reads
Ratatosk::correct(): Processed 47000 reads
Ratatosk::correct(): Processed 48000 reads
Ratatosk::correct(): Processed 49000 reads
Ratatosk::correct(): Processed 50000 reads
Ratatosk::correct(): Processed 51000 reads
Ratatosk::correct(): Processed 52000 reads
Ratatosk::correct(): Processed 53000 reads
Ratatosk::correct(): Processed 54000 reads
Ratatosk::correct(): Processed 55000 reads
Ratatosk::correct(): Processed 56000 reads
Ratatosk::correct(): Processed 57000 reads
Ratatosk::correct(): Processed 58000 reads
Ratatosk::correct(): Processed 59000 reads
Ratatosk::correct(): Processed 60000 reads
Ratatosk::correct(): Processed 61000 reads
Ratatosk::correct(): Processed 62000 reads
Ratatosk::correct(): Processed 63000 reads
Ratatosk::correct(): Processed 64000 reads
Ratatosk::correct(): Processed 65000 reads
Ratatosk::correct(): Processed 66000 reads
Ratatosk::correct(): Processed 67000 reads
Ratatosk::correct(): Processed 68000 reads
Ratatosk::correct(): Processed 69000 reads
Ratatosk::correct(): Processed 70000 reads
Ratatosk::correct(): Processed 71000 reads
Ratatosk::correct(): Processed 72000 reads
Ratatosk::correct(): Processed 73000 reads
Ratatosk::correct(): Processed 74000 reads
Ratatosk::correct(): Processed 75000 reads
Ratatosk::correct(): Processed 76000 reads
Ratatosk::correct(): Processed 77000 reads
Ratatosk::correct(): Processed 78000 reads
Ratatosk::correct(): Processed 79000 reads
Ratatosk::correct(): Processed 80000 reads
Ratatosk::correct(): Processed 81000 reads
Ratatosk::correct(): Processed 82000 reads
Ratatosk::correct(): Processed 83000 reads
Ratatosk::correct(): Processed 84000 reads
Ratatosk::correct(): Processed 85000 reads
Ratatosk::correct(): Processed 86000 reads
Ratatosk::correct(): Processed 87000 reads
Ratatosk::correct(): Processed 88000 reads
Ratatosk::correct(): Processed 89000 reads
Ratatosk::correct(): Processed 90000 reads
Ratatosk::correct(): Processed 91000 reads
Ratatosk::correct(): Processed 92000 reads
Ratatosk::correct(): Processed 93000 reads
Ratatosk::correct(): Processed 94000 reads
Ratatosk::correct(): Processed 95000 reads
Ratatosk::correct(): Processed 96000 reads
Ratatosk::correct(): Processed 97000 reads
Ratatosk::correct(): Processed 98000 reads
Ratatosk::correct(): Processed 99000 reads
Ratatosk::correct(): Processed 100000 reads
Ratatosk::correct(): Processed 101000 reads
Ratatosk::correct(): Processed 102000 reads
Ratatosk::correct(): Processed 103000 reads
Ratatosk::correct(): Processed 104000 reads
Ratatosk::correct(): Processed 105000 reads
Ratatosk::correct(): Processed 106000 reads
Ratatosk::correct(): Processed 107000 reads
Ratatosk::correct(): Processed 108000 reads
Ratatosk::correct(): Processed 109000 reads
Ratatosk::correct(): Processed 110000 reads
Ratatosk::correct(): Processed 111000 reads
Ratatosk::correct(): Processed 112000 reads
Ratatosk::correct(): Processed 113000 reads
Ratatosk::correct(): Processed 114000 reads
Ratatosk::correct(): Processed 115000 reads
Ratatosk::correct(): Processed 116000 reads
Ratatosk::correct(): Processed 117000 reads
Ratatosk::correct(): Processed 118000 reads
Ratatosk::correct(): Processed 119000 reads
Ratatosk::correct(): Processed 120000 reads
Ratatosk::correct(): Processed 121000 reads
Ratatosk::correct(): Processed 122000 reads
Ratatosk::correct(): Processed 123000 reads
Ratatosk::correct(): Processed 124000 reads
Ratatosk::correct(): Processed 125000 reads
Ratatosk::correct(): Processed 126000 reads
Ratatosk::correct(): Processed 127000 reads
Ratatosk::correct(): Processed 128000 reads
Ratatosk::correct(): Processed 129000 reads
Ratatosk::correct(): Processed 130000 reads
Ratatosk::correct(): Processed 131000 reads
Ratatosk::correct(): Processed 132000 reads
Ratatosk::correct(): Processed 133000 reads
Ratatosk::correct(): Processed 134000 reads
Ratatosk::correct(): Processed 135000 reads
Ratatosk::correct(): Processed 136000 reads
Ratatosk::correct(): Processed 137000 reads
Ratatosk::correct(): Processed 138000 reads
Ratatosk::correct(): Processed 139000 reads
Ratatosk::correct(): Processed 140000 reads
Ratatosk::correct(): Processed 141000 reads
Ratatosk::correct(): Processed 142000 reads
Ratatosk::correct(): Processed 143000 reads
Ratatosk::correct(): Processed 144000 reads
Ratatosk::correct(): Processed 145000 reads
Ratatosk::correct(): Processed 146000 reads
Ratatosk::correct(): Processed 147000 reads
Ratatosk::correct(): Processed 148000 reads
Ratatosk::correct(): Processed 149000 reads
Ratatosk::correct(): Processed 150000 reads
Ratatosk::correct(): Processed 151000 reads
Ratatosk::correct(): Processed 152000 reads
Ratatosk::correct(): Processed 153000 reads
Ratatosk::correct(): Processed 154000 reads
Ratatosk::correct(): Processed 155000 reads
Ratatosk::correct(): Processed 156000 reads
Ratatosk::correct(): Processed 157000 reads
Ratatosk::correct(): Processed 158000 reads
Ratatosk::correct(): Processed 159000 reads
Ratatosk::correct(): Processed 160000 reads
Ratatosk::correct(): Processed 161000 reads
Ratatosk::correct(): Processed 162000 reads
Ratatosk::correct(): Processed 163000 reads
Ratatosk::correct(): Processed 164000 reads
Ratatosk::correct(): Processed 165000 reads
Ratatosk::correct(): Processed 166000 reads
Ratatosk::correct(): Processed 167000 reads
Ratatosk::correct(): Processed 168000 reads
Ratatosk::correct(): Processed 169000 reads
Ratatosk::correct(): Processed 170000 reads
Ratatosk::correct(): Processed 171000 reads
Ratatosk::correct(): Processed 172000 reads
Ratatosk::correct(): Processed 173000 reads
Ratatosk::correct(): Processed 174000 reads
Ratatosk::correct(): Processed 175000 reads
Ratatosk::correct(): Processed 176000 reads
Ratatosk::correct(): Processed 177000 reads
Ratatosk::correct(): Processed 178000 reads
Ratatosk::correct(): Processed 179000 reads
Ratatosk::correct(): Processed 180000 reads
Ratatosk::correct(): Processed 181000 reads
Ratatosk::correct(): Processed 182000 reads
Ratatosk::correct(): Processed 183000 reads
Ratatosk::correct(): Processed 184000 reads
Ratatosk::correct(): Processed 185000 reads
Ratatosk::correct(): Processed 186000 reads
Ratatosk::correct(): Processed 187000 reads
Ratatosk::correct(): Processed 188000 reads
Ratatosk::correct(): Processed 189000 reads
Ratatosk::correct(): Processed 190000 reads
Ratatosk::correct(): Processed 191000 reads
Ratatosk::correct(): Processed 192000 reads
Ratatosk::correct(): Processed 193000 reads
Ratatosk::correct(): Processed 194000 reads
Ratatosk::correct(): Processed 195000 reads
Ratatosk::correct(): Processed 196000 reads
Ratatosk::correct(): Processed 197000 reads
Ratatosk::correct(): Processed 198000 reads
Ratatosk::correct(): Processed 199000 reads
Ratatosk::correct(): Processed 200000 reads
Ratatosk::correct(): Processed 201000 reads
Ratatosk::correct(): Processed 202000 reads
Ratatosk::correct(): Processed 203000 reads
Ratatosk::correct(): Processed 204000 reads
Ratatosk::correct(): Processed 205000 reads
Ratatosk::correct(): Processed 206000 reads
Ratatosk::correct(): Processed 207000 reads
Ratatosk::correct(): Processed 208000 reads
Ratatosk::correct(): Processed 209000 reads
Ratatosk::correct(): Processed 210000 reads
Ratatosk::correct(): Processed 211000 reads
Ratatosk::correct(): Processed 212000 reads
Ratatosk::correct(): Processed 213000 reads
Ratatosk::correct(): Processed 214000 reads
Ratatosk::correct(): Processed 215000 reads
Ratatosk::correct(): Processed 216000 reads
Ratatosk::correct(): Processed 217000 reads
Ratatosk::correct(): Processed 218000 reads
Ratatosk::correct(): Processed 219000 reads
Ratatosk::correct(): Processed 220000 reads
Ratatosk::correct(): Processed 221000 reads
Ratatosk::correct(): Processed 222000 reads
Ratatosk::correct(): Processed 223000 reads
Ratatosk::correct(): Processed 224000 reads
Ratatosk::correct(): Processed 225000 reads
Ratatosk::correct(): Processed 226000 reads
Ratatosk::correct(): Processed 227000 reads
Ratatosk::correct(): Processed 228000 reads
Ratatosk::correct(): Processed 229000 reads
Ratatosk::correct(): Processed 230000 reads
Ratatosk::correct(): Processed 231000 reads
Ratatosk::correct(): Processed 232000 reads
Ratatosk::correct(): Processed 233000 reads
Ratatosk::correct(): Processed 234000 reads
Ratatosk::correct(): Processed 235000 reads
Ratatosk::correct(): Processed 236000 reads
Ratatosk::correct(): Processed 237000 reads
Ratatosk::correct(): Processed 238000 reads
Ratatosk::correct(): Processed 239000 reads
Ratatosk::correct(): Processed 240000 reads
Ratatosk::correct(): Processed 241000 reads
Ratatosk::correct(): Processed 242000 reads
Ratatosk::correct(): Processed 243000 reads
Ratatosk::correct(): Processed 244000 reads
Ratatosk::correct(): Processed 245000 reads
Ratatosk::correct(): Processed 246000 reads
Ratatosk::correct(): Processed 247000 reads
Ratatosk::correct(): Processed 248000 reads
Ratatosk::correct(): Processed 249000 reads
Ratatosk::correct(): Processed 250000 reads
Ratatosk::correct(): Processed 251000 reads
Ratatosk::correct(): Processed 252000 reads
Ratatosk::correct(): Processed 253000 reads
Ratatosk::correct(): Processed 254000 reads
Ratatosk::correct(): Processed 255000 reads
Ratatosk::correct(): Processed 256000 reads
Ratatosk::correct(): Processed 257000 reads
Ratatosk::correct(): Processed 258000 reads
Ratatosk::correct(): Processed 259000 reads
Ratatosk::correct(): Processed 260000 reads
Ratatosk::correct(): Processed 261000 reads
Ratatosk::correct(): Processed 262000 reads
Ratatosk::correct(): Processed 263000 reads
Ratatosk::correct(): Processed 264000 reads
Ratatosk::correct(): Processed 265000 reads
Ratatosk::correct(): Processed 266000 reads
Ratatosk::correct(): Processed 267000 reads
Ratatosk::correct(): Processed 268000 reads
Ratatosk::correct(): Processed 269000 reads
Ratatosk::correct(): Processed 270000 reads
Ratatosk::correct(): Processed 271000 reads
Ratatosk::correct(): Processed 272000 reads
Ratatosk::correct(): Processed 273000 reads
Ratatosk::correct(): Processed 274000 reads
Ratatosk::correct(): Processed 275000 reads
Ratatosk::correct(): Processed 276000 reads
Ratatosk::correct(): Processed 277000 reads
Ratatosk::correct(): Processed 278000 reads
Ratatosk::correct(): Processed 279000 reads
Ratatosk::correct(): Processed 280000 reads
Ratatosk::correct(): Processed 281000 reads
Ratatosk::correct(): Processed 282000 reads
Ratatosk::correct(): Processed 283000 reads
Ratatosk::correct(): Processed 284000 reads
Ratatosk::correct(): Processed 285000 reads
Ratatosk::correct(): Processed 286000 reads
Ratatosk::correct(): Processed 287000 reads
Ratatosk::correct(): Processed 288000 reads
Ratatosk::correct(): Processed 289000 reads
Ratatosk::correct(): Processed 290000 reads
Ratatosk::correct(): Processed 291000 reads
Ratatosk::correct(): Processed 292000 reads
Ratatosk::correct(): Processed 293000 reads
Ratatosk::correct(): Processed 294000 reads
Ratatosk::correct(): Processed 295000 reads
Ratatosk::correct(): Processed 296000 reads
Ratatosk::correct(): Processed 297000 reads
Ratatosk::correct(): Processed 298000 reads
Ratatosk::correct(): Processed 299000 reads
Ratatosk::correct(): Processed 300000 reads
Ratatosk::correct(): Processed 301000 reads
Ratatosk::correct(): Processed 302000 reads
Ratatosk::correct(): Processed 303000 reads
Ratatosk::correct(): Processed 304000 reads
Ratatosk::correct(): Processed 305000 reads
Ratatosk::correct(): Processed 306000 reads
Ratatosk::correct(): Processed 307000 reads
Ratatosk::correct(): Processed 308000 reads
Ratatosk::correct(): Processed 309000 reads
Ratatosk::correct(): Processed 310000 reads
Ratatosk::correct(): Processed 311000 reads
Ratatosk::correct(): Processed 312000 reads
Ratatosk::correct(): Processed 313000 reads
Ratatosk::correct(): Processed 314000 reads
Ratatosk::correct(): Processed 315000 reads
Ratatosk::correct(): Processed 316000 reads
Ratatosk::correct(): Processed 317000 reads
Ratatosk::correct(): Processed 318000 reads
Ratatosk::correct(): Processed 319000 reads
Ratatosk::correct(): Processed 320000 reads
Ratatosk::correct(): Processed 321000 reads
Ratatosk::correct(): Processed 322000 reads
Ratatosk::correct(): Processed 323000 reads
Ratatosk::correct(): Processed 324000 reads
Ratatosk::correct(): Processed 325000 reads
Ratatosk::correct(): Processed 326000 reads
Ratatosk::correct(): Processed 327000 reads
Ratatosk::correct(): Processed 328000 reads
Ratatosk::correct(): Processed 329000 reads
Ratatosk::correct(): Processed 330000 reads
Ratatosk::correct(): Processed 331000 reads
Ratatosk::correct(): Processed 332000 reads
Ratatosk::correct(): Processed 333000 reads
Ratatosk::correct(): Processed 334000 reads
Ratatosk::correct(): Processed 335000 reads
Ratatosk::correct(): Processed 336000 reads
Ratatosk::correct(): Processed 337000 reads
Ratatosk::correct(): Processed 338000 reads
Ratatosk::correct(): Processed 339000 reads
Ratatosk::correct(): Processed 340000 reads
Ratatosk::correct(): Processed 341000 reads
Ratatosk::correct(): Processed 342000 reads
Ratatosk::correct(): Processed 343000 reads
Ratatosk::correct(): Processed 344000 reads
Ratatosk::correct(): Processed 345000 reads
Ratatosk::correct(): Processed 346000 reads
Ratatosk::correct(): Processed 347000 reads
Ratatosk::correct(): Processed 348000 reads
Ratatosk::correct(): Processed 349000 reads
Ratatosk::correct(): Processed 350000 reads
Ratatosk::correct(): Processed 351000 reads
Ratatosk::correct(): Processed 352000 reads
Ratatosk::correct(): Processed 353000 reads
Ratatosk::correct(): Processed 354000 reads
Ratatosk::correct(): Processed 355000 reads
Ratatosk::correct(): Processed 356000 reads
Ratatosk::correct(): Processed 357000 reads
Ratatosk::correct(): Processed 358000 reads
Ratatosk::correct(): Processed 359000 reads
Ratatosk::correct(): Processed 360000 reads
Ratatosk::correct(): Processed 361000 reads
Ratatosk::correct(): Processed 362000 reads
Ratatosk::correct(): Processed 363000 reads
Ratatosk::correct(): Processed 364000 reads
Ratatosk::correct(): Processed 365000 reads
Ratatosk::correct(): Processed 366000 reads
Ratatosk::correct(): Processed 367000 reads
Ratatosk::correct(): Processed 368000 reads
Ratatosk::correct(): Processed 369000 reads
Ratatosk::correct(): Processed 370000 reads
Ratatosk::correct(): Processed 371000 reads
Ratatosk::correct(): Processed 372000 reads
Ratatosk::correct(): Processed 373000 reads
Ratatosk::correct(): Processed 374000 reads
Ratatosk::correct(): Processed 375000 reads
Ratatosk::correct(): Processed 376000 reads
Ratatosk::correct(): Processed 377000 reads
Ratatosk::correct(): Processed 378000 reads
Ratatosk::correct(): Processed 379000 reads
Ratatosk::correct(): Processed 380000 reads
Ratatosk::correct(): Processed 381000 reads
Ratatosk::correct(): Processed 382000 reads
Ratatosk::correct(): Processed 383000 reads
Ratatosk::correct(): Processed 384000 reads
Ratatosk::correct(): Processed 385000 reads
Ratatosk::correct(): Processed 386000 reads
Ratatosk::correct(): Processed 387000 reads
Ratatosk::correct(): Processed 388000 reads
Ratatosk::correct(): Processed 389000 reads
Ratatosk::correct(): Processed 390000 reads
Ratatosk::correct(): Processed 391000 reads
Ratatosk::correct(): Processed 392000 reads
Ratatosk::correct(): Processed 393000 reads
Ratatosk::correct(): Processed 394000 reads
Ratatosk::correct(): Processed 395000 reads
Ratatosk::correct(): Processed 396000 reads
Ratatosk::correct(): Processed 397000 reads
Ratatosk::correct(): Processed 398000 reads
Ratatosk::correct(): Processed 399000 reads
Ratatosk::correct(): Processed 400000 reads
Ratatosk::correct(): Processed 401000 reads
Ratatosk::correct(): Processed 402000 reads
Ratatosk::correct(): Processed 403000 reads
Ratatosk::correct(): Processed 404000 reads
Ratatosk::correct(): Processed 405000 reads
Ratatosk::correct(): Processed 406000 reads
Ratatosk::correct(): Processed 407000 reads
Ratatosk::correct(): Processed 408000 reads
Ratatosk::correct(): Processed 409000 reads
Ratatosk::correct(): Processed 410000 reads
Ratatosk::correct(): Processed 411000 reads
Ratatosk::correct(): Processed 412000 reads
Ratatosk::correct(): Processed 413000 reads
Ratatosk::correct(): Processed 414000 reads
Ratatosk::correct(): Processed 415000 reads
Ratatosk::correct(): Processed 416000 reads
Ratatosk::correct(): Processed 417000 reads
Ratatosk::correct(): Processed 418000 reads
Ratatosk::correct(): Processed 419000 reads
Ratatosk::correct(): Processed 420000 reads
Ratatosk::correct(): Processed 421000 reads
Ratatosk::correct(): Processed 422000 reads
Ratatosk::correct(): Processed 423000 reads
Ratatosk::correct(): Processed 424000 reads
Ratatosk::correct(): Processed 425000 reads
Ratatosk::correct(): Processed 426000 reads
Ratatosk::correct(): Processed 427000 reads
Ratatosk::correct(): Processed 428000 reads
Ratatosk::correct(): Processed 429000 reads
Ratatosk::correct(): Processed 430000 reads
Ratatosk::correct(): Processed 431000 reads
Ratatosk::correct(): Processed 432000 reads
Ratatosk::correct(): Processed 433000 reads
Ratatosk::correct(): Processed 434000 reads
Ratatosk::correct(): Processed 435000 reads
Ratatosk::correct(): Processed 436000 reads
Ratatosk::correct(): Processed 437000 reads
Ratatosk::correct(): Processed 438000 reads
Ratatosk::correct(): Processed 439000 reads
Ratatosk::correct(): Processed 440000 reads
Ratatosk::correct(): Processed 441000 reads
Ratatosk::correct(): Processed 442000 reads
Ratatosk::correct(): Processed 443000 reads
Ratatosk::correct(): Processed 444000 reads
Ratatosk::correct(): Processed 445000 reads
Ratatosk::correct(): Processed 446000 reads
Ratatosk::correct(): Processed 447000 reads
Ratatosk::correct(): Processed 448000 reads
Ratatosk::correct(): Processed 449000 reads
Ratatosk::correct(): Processed 450000 reads
Ratatosk::correct(): Processed 451000 reads
Ratatosk::correct(): Processed 452000 reads
Ratatosk::correct(): Processed 453000 reads
Ratatosk::correct(): Processed 454000 reads
Ratatosk::correct(): Processed 455000 reads
Ratatosk::correct(): Processed 456000 reads
Ratatosk::correct(): Processed 457000 reads
Ratatosk::correct(): Processed 458000 reads
Ratatosk::correct(): Processed 459000 reads
Ratatosk::correct(): Processed 460000 reads
Ratatosk::correct(): Processed 461000 reads
Ratatosk::correct(): Processed 462000 reads
Ratatosk::correct(): Processed 463000 reads
Ratatosk::correct(): Processed 464000 reads
Ratatosk::correct(): Processed 465000 reads
Ratatosk::correct(): Processed 466000 reads
Ratatosk::correct(): Processed 467000 reads
Ratatosk::correct(): Processed 468000 reads
Ratatosk::correct(): Processed 469000 reads
Ratatosk::correct(): Processed 470000 reads
Ratatosk::correct(): Processed 471000 reads
Ratatosk::correct(): Processed 472000 reads
Ratatosk::correct(): Processed 473000 reads
Ratatosk::correct(): Processed 474000 reads
Ratatosk::correct(): Processed 475000 reads
Ratatosk::correct(): Processed 476000 reads
Ratatosk::correct(): Processed 477000 reads
Ratatosk::correct(): Processed 478000 reads
Ratatosk::correct(): Processed 479000 reads
Ratatosk::correct(): Processed 480000 reads
Ratatosk::correct(): Processed 481000 reads
Ratatosk::correct(): Processed 482000 reads
Ratatosk::correct(): Processed 483000 reads
Ratatosk::correct(): Processed 484000 reads
Ratatosk::correct(): Processed 485000 reads
Ratatosk::correct(): Processed 486000 reads
Ratatosk::correct(): Processed 487000 reads
Ratatosk::correct(): Processed 488000 reads
Ratatosk::correct(): Processed 489000 reads
Ratatosk::correct(): Processed 490000 reads
Ratatosk::correct(): Processed 491000 reads
Ratatosk::correct(): Processed 492000 reads
Ratatosk::correct(): Processed 493000 reads
Ratatosk::correct(): Processed 494000 reads
Ratatosk::correct(): Processed 495000 reads
Ratatosk::correct(): Processed 496000 reads
Ratatosk::correct(): Processed 497000 reads
Ratatosk::correct(): Processed 498000 reads
Ratatosk::correct(): Processed 499000 reads
Ratatosk::correct(): Processed 500000 reads
Ratatosk::correct(): Processed 501000 reads
Ratatosk::correct(): Processed 502000 reads
Ratatosk::correct(): Processed 503000 reads
Ratatosk::correct(): Processed 504000 reads
Ratatosk::correct(): Processed 505000 reads
Ratatosk::correct(): Processed 506000 reads
Ratatosk::correct(): Processed 507000 reads
Ratatosk::correct(): Processed 508000 reads
Ratatosk::correct(): Processed 509000 reads
Ratatosk::correct(): Processed 510000 reads
Ratatosk::correct(): Processed 511000 reads
Ratatosk::correct(): Processed 512000 reads
Ratatosk::correct(): Processed 513000 reads
Ratatosk::correct(): Processed 514000 reads
Ratatosk::correct(): Processed 515000 reads
Ratatosk::correct(): Processed 516000 reads
Ratatosk::correct(): Processed 517000 reads
Ratatosk::correct(): Processed 518000 reads
Ratatosk::correct(): Processed 519000 reads
Ratatosk::correct(): Processed 520000 reads
Ratatosk::correct(): Processed 521000 reads
Ratatosk::correct(): Processed 522000 reads
Ratatosk::correct(): Processed 523000 reads
Ratatosk::correct(): Processed 524000 reads
Ratatosk::correct(): Processed 525000 reads
Ratatosk::correct(): Processed 526000 reads
Ratatosk::correct(): Processed 527000 reads
Ratatosk::correct(): Processed 528000 reads
Ratatosk::correct(): Processed 529000 reads
Ratatosk::correct(): Processed 530000 reads
Ratatosk::correct(): Processed 531000 reads
Ratatosk::correct(): Processed 532000 reads
Ratatosk::correct(): Processed 533000 reads
Ratatosk::correct(): Processed 534000 reads
Ratatosk::correct(): Processed 535000 reads
Ratatosk::correct(): Processed 536000 reads
Ratatosk::correct(): Processed 537000 reads
Ratatosk::correct(): Processed 538000 reads
Ratatosk::correct(): Processed 539000 reads
Ratatosk::correct(): Processed 540000 reads
Ratatosk::correct(): Processed 541000 reads
Ratatosk::correct(): Processed 542000 reads
Ratatosk::correct(): Processed 543000 reads
Ratatosk::correct(): Processed 544000 reads
Ratatosk::correct(): Processed 545000 reads
Ratatosk::correct(): Processed 546000 reads
Ratatosk::correct(): Processed 547000 reads
Ratatosk::correct(): Processed 548000 reads
Ratatosk::correct(): Processed 549000 reads
Ratatosk::correct(): Processed 550000 reads
Ratatosk::correct(): Processed 551000 reads
Ratatosk::correct(): Processed 552000 reads
Ratatosk::correct(): Processed 553000 reads
Ratatosk::correct(): Processed 554000 reads
Ratatosk::correct(): Processed 555000 reads
Ratatosk::correct(): Processed 556000 reads
Ratatosk::correct(): Processed 557000 reads
Ratatosk::correct(): Processed 558000 reads
Ratatosk::correct(): Processed 559000 reads
Ratatosk::correct(): Processed 560000 reads
Ratatosk::correct(): Processed 561000 reads
Ratatosk::correct(): Processed 562000 reads
Ratatosk::correct(): Processed 563000 reads
Ratatosk::correct(): Processed 564000 reads
Ratatosk::correct(): Processed 565000 reads
Ratatosk::correct(): Processed 566000 reads
Ratatosk::correct(): Processed 567000 reads
Ratatosk::correct(): Processed 568000 reads
Ratatosk::correct(): Processed 569000 reads
Ratatosk::correct(): Processed 570000 reads
Ratatosk::correct(): Processed 571000 reads
Ratatosk::correct(): Processed 572000 reads
Ratatosk::correct(): Processed 573000 reads
Ratatosk::correct(): Processed 574000 reads
Ratatosk::correct(): Processed 575000 reads
Ratatosk::correct(): Processed 576000 reads
Ratatosk::correct(): Processed 577000 reads
Ratatosk::correct(): Processed 578000 reads
Ratatosk::correct(): Processed 579000 reads
Ratatosk::correct(): Processed 580000 reads
Ratatosk::correct(): Processed 581000 reads
Ratatosk::correct(): Processed 582000 reads
Ratatosk::correct(): Processed 583000 reads
Ratatosk::correct(): Processed 584000 reads
Ratatosk::correct(): Processed 585000 reads
Ratatosk::correct(): Processed 586000 reads
Ratatosk::correct(): Processed 587000 reads
Ratatosk::correct(): Processed 588000 reads
Ratatosk::correct(): Processed 589000 reads
Ratatosk::correct(): Processed 590000 reads
Ratatosk::correct(): Processed 591000 reads
Ratatosk::correct(): Processed 592000 reads
Ratatosk::correct(): Processed 593000 reads
Ratatosk::correct(): Processed 594000 reads
Ratatosk::correct(): Processed 595000 reads
Ratatosk::correct(): Processed 596000 reads
Ratatosk::correct(): Processed 597000 reads
Ratatosk::correct(): Processed 598000 reads
Ratatosk::correct(): Processed 599000 reads
Ratatosk::correct(): Processed 600000 reads
Ratatosk::correct(): Processed 601000 reads
Ratatosk::correct(): Processed 602000 reads
Ratatosk::correct(): Processed 603000 reads
Ratatosk::correct(): Processed 604000 reads
Ratatosk::correct(): Processed 605000 reads
Ratatosk::correct(): Processed 606000 reads
Ratatosk::correct(): Processed 607000 reads
Ratatosk::correct(): Processed 608000 reads
Ratatosk::correct(): Processed 609000 reads
Ratatosk::correct(): Processed 610000 reads
Ratatosk::correct(): Processed 611000 reads
Ratatosk::correct(): Processed 612000 reads
Ratatosk::correct(): Processed 613000 reads
Ratatosk::correct(): Processed 614000 reads
Ratatosk::correct(): Processed 615000 reads
Ratatosk::correct(): Processed 616000 reads
Ratatosk::correct(): Processed 617000 reads
Ratatosk::correct(): Processed 618000 reads
Ratatosk::correct(): Processed 619000 reads
Ratatosk::correct(): Processed 620000 reads
Ratatosk::correct(): Processed 621000 reads
Ratatosk::correct(): Processed 622000 reads
Ratatosk::correct(): Processed 623000 reads
Ratatosk::correct(): Processed 624000 reads
Ratatosk::correct(): Processed 625000 reads
Ratatosk::correct(): Processed 626000 reads
Ratatosk::correct(): Processed 627000 reads
Ratatosk::correct(): Processed 628000 reads
Ratatosk::correct(): Processed 629000 reads
Ratatosk::correct(): Processed 630000 reads
Ratatosk::correct(): Processed 631000 reads
Ratatosk::correct(): Processed 632000 reads
Ratatosk::correct(): Processed 633000 reads
Ratatosk::correct(): Processed 634000 reads
Ratatosk::correct(): Processed 635000 reads
Ratatosk::correct(): Processed 636000 reads
Ratatosk::correct(): Processed 637000 reads
Ratatosk::correct(): Processed 638000 reads
Ratatosk::correct(): Processed 639000 reads
Ratatosk::correct(): Processed 640000 reads
Ratatosk::correct(): Processed 641000 reads
Ratatosk::correct(): Processed 642000 reads
Ratatosk::correct(): Processed 643000 reads
Ratatosk::correct(): Processed 644000 reads
Ratatosk::correct(): Processed 645000 reads
Ratatosk::correct(): Processed 646000 reads
Ratatosk::correct(): Processed 647000 reads
Ratatosk::correct(): Processed 648000 reads
Ratatosk::correct(): Processed 649000 reads
Ratatosk::correct(): Processed 650000 reads
Ratatosk::correct(): Processed 651000 reads
Ratatosk::correct(): Processed 652000 reads
Ratatosk::correct(): Processed 653000 reads
Ratatosk::correct(): Processed 654000 reads
Ratatosk::correct(): Processed 655000 reads
Ratatosk::correct(): Processed 656000 reads
Ratatosk::correct(): Processed 657000 reads
Ratatosk::correct(): Processed 658000 reads
Ratatosk::correct(): Processed 659000 reads
Ratatosk::correct(): Processed 660000 reads
Ratatosk::correct(): Processed 661000 reads
Ratatosk::correct(): Processed 662000 reads
Ratatosk::correct(): Processed 663000 reads
Ratatosk::correct(): Processed 664000 reads
Ratatosk::correct(): Processed 665000 reads
Ratatosk::correct(): Processed 666000 reads
Ratatosk::correct(): Processed 667000 reads
Ratatosk::correct(): Processed 668000 reads
Ratatosk::correct(): Processed 669000 reads
Ratatosk::correct(): Processed 670000 reads
Ratatosk::correct(): Processed 671000 reads
Ratatosk::correct(): Processed 672000 reads
Ratatosk::correct(): Processed 673000 reads
Ratatosk::correct(): Processed 674000 reads
Ratatosk::correct(): Processed 675000 reads
Ratatosk::correct(): Processed 676000 reads
Ratatosk::correct(): Processed 677000 reads
Ratatosk::correct(): Processed 678000 reads
Ratatosk::correct(): Processed 679000 reads
Ratatosk::correct(): Processed 680000 reads
Ratatosk::correct(): Processed 681000 reads
Ratatosk::correct(): Processed 682000 reads
Ratatosk::correct(): Processed 683000 reads
Ratatosk::correct(): Processed 684000 reads
Ratatosk::correct(): Processed 685000 reads
Ratatosk::correct(): Processed 686000 reads
Ratatosk::correct(): Processed 687000 reads
Ratatosk::correct(): Processed 688000 reads
Ratatosk::correct(): Processed 689000 reads
Ratatosk::correct(): Processed 690000 reads
Ratatosk::correct(): Processed 691000 reads
Ratatosk::correct(): Processed 692000 reads
Ratatosk::correct(): Processed 693000 reads
Ratatosk::correct(): Processed 694000 reads
Ratatosk::correct(): Processed 695000 reads
Ratatosk::correct(): Processed 696000 reads
Ratatosk::correct(): Processed 697000 reads
Ratatosk::correct(): Processed 698000 reads
Ratatosk::correct(): Processed 699000 reads
Ratatosk::correct(): Processed 700000 reads
Ratatosk::correct(): Processed 701000 reads
Ratatosk::correct(): Processed 702000 reads
Ratatosk::correct(): Processed 703000 reads
Ratatosk::correct(): Processed 704000 reads
Ratatosk::correct(): Processed 705000 reads
Ratatosk::correct(): Processed 706000 reads
Ratatosk::correct(): Processed 707000 reads
Ratatosk::correct(): Processed 708000 reads
Ratatosk::correct(): Processed 709000 reads
Ratatosk::correct(): Processed 710000 reads
Ratatosk::correct(): Processed 711000 reads
Ratatosk::correct(): Processed 712000 reads
Ratatosk::correct(): Processed 713000 reads
Ratatosk::correct(): Processed 714000 reads
Ratatosk::correct(): Processed 715000 reads
Ratatosk::correct(): Processed 716000 reads
Ratatosk::correct(): Processed 717000 reads
Ratatosk::correct(): Processed 718000 reads
Ratatosk::correct(): Processed 719000 reads
Ratatosk::correct(): Processed 720000 reads
Ratatosk::correct(): Processed 721000 reads
Ratatosk::correct(): Processed 722000 reads
Ratatosk::correct(): Processed 723000 reads
Ratatosk::correct(): Processed 724000 reads
Ratatosk::correct(): Processed 725000 reads
Ratatosk::correct(): Processed 726000 reads
Ratatosk::correct(): Processed 727000 reads
Ratatosk::correct(): Processed 728000 reads
Ratatosk::correct(): Processed 729000 reads
Ratatosk::correct(): Processed 730000 reads
Ratatosk::correct(): Processed 731000 reads
Ratatosk::correct(): Processed 732000 reads
Ratatosk::correct(): Processed 733000 reads
Ratatosk::correct(): Processed 734000 reads
Ratatosk::correct(): Processed 735000 reads
Ratatosk::correct(): Processed 736000 reads
Ratatosk::correct(): Processed 737000 reads
Ratatosk::correct(): Processed 738000 reads
Ratatosk::correct(): Processed 739000 reads
Ratatosk::correct(): Processed 740000 reads
Ratatosk::correct(): Processed 741000 reads
Ratatosk::correct(): Processed 742000 reads
Ratatosk::correct(): Processed 743000 reads
Ratatosk::correct(): Processed 744000 reads
Ratatosk::correct(): Processed 745000 reads
Ratatosk::correct(): Processed 746000 reads
Ratatosk::correct(): Processed 747000 reads
Ratatosk::correct(): Processed 748000 reads
Ratatosk::correct(): Processed 749000 reads
Ratatosk::correct(): Processed 750000 reads
Ratatosk::correct(): Processed 751000 reads
Ratatosk::correct(): Processed 752000 reads
Ratatosk::correct(): Processed 753000 reads
Ratatosk::correct(): Processed 754000 reads
Ratatosk::correct(): Processed 755000 reads
Ratatosk::correct(): Processed 756000 reads
Ratatosk::correct(): Processed 757000 reads
Ratatosk::correct(): Processed 758000 reads
Ratatosk::correct(): Processed 759000 reads
Ratatosk::correct(): Processed 760000 reads
Ratatosk::correct(): Processed 761000 reads
Ratatosk::correct(): Processed 762000 reads
Ratatosk::correct(): Processed 763000 reads
Ratatosk::correct(): Processed 764000 reads
Ratatosk::correct(): Processed 765000 reads
Ratatosk::correct(): Processed 766000 reads
Ratatosk::correct(): Processed 767000 reads
Ratatosk::correct(): Processed 768000 reads
Ratatosk::correct(): Processed 769000 reads
Ratatosk::correct(): Processed 770000 reads
Ratatosk::correct(): Processed 771000 reads
Ratatosk::correct(): Processed 772000 reads
Ratatosk::correct(): Processed 773000 reads
Ratatosk::correct(): Processed 774000 reads
Ratatosk::correct(): Processed 775000 reads
Ratatosk::correct(): Processed 776000 reads
Ratatosk::correct(): Processed 777000 reads
Ratatosk::correct(): Processed 778000 reads
Ratatosk::correct(): Processed 779000 reads
Ratatosk::correct(): Processed 780000 reads
Ratatosk::correct(): Processed 781000 reads
Ratatosk::correct(): Processed 782000 reads
Ratatosk::correct(): Processed 783000 reads
Ratatosk::correct(): Processed 784000 reads
Ratatosk::correct(): Processed 785000 reads
Ratatosk::correct(): Processed 786000 reads
Ratatosk::correct(): Processed 787000 reads
Ratatosk::correct(): Processed 788000 reads
Ratatosk::correct(): Processed 789000 reads
Ratatosk::correct(): Processed 790000 reads
Ratatosk::correct(): Processed 791000 reads
Ratatosk::correct(): Processed 792000 reads
Ratatosk::correct(): Processed 793000 reads
Ratatosk::correct(): Processed 794000 reads
Ratatosk::correct(): Processed 795000 reads
Ratatosk::correct(): Processed 796000 reads
Ratatosk::correct(): Processed 797000 reads
Ratatosk::correct(): Processed 798000 reads
Ratatosk::correct(): Processed 799000 reads
Ratatosk::correct(): Processed 800000 reads
Ratatosk::correct(): Processed 801000 reads
Ratatosk::correct(): Processed 802000 reads
Ratatosk::correct(): Processed 803000 reads
Ratatosk::correct(): Processed 804000 reads
Ratatosk::correct(): Processed 805000 reads
Ratatosk::correct(): Processed 806000 reads
Ratatosk::correct(): Processed 807000 reads
Ratatosk::correct(): Processed 808000 reads
Ratatosk::correct(): Processed 809000 reads
Ratatosk::correct(): Processed 810000 reads
Ratatosk::correct(): Processed 811000 reads
Ratatosk::correct(): Processed 812000 reads
Ratatosk::correct(): Processed 813000 reads
Ratatosk::correct(): Processed 814000 reads
Ratatosk::correct(): Processed 815000 reads
Ratatosk::correct(): Processed 816000 reads
Ratatosk::correct(): Processed 817000 reads
Ratatosk::correct(): Processed 818000 reads
Ratatosk::correct(): Processed 819000 reads
Ratatosk::correct(): Processed 820000 reads
Ratatosk::correct(): Processed 821000 reads
Ratatosk::correct(): Processed 822000 reads
Ratatosk::correct(): Processed 823000 reads
Ratatosk::correct(): Processed 824000 reads
Ratatosk::correct(): Processed 825000 reads
Ratatosk::correct(): Processed 826000 reads
Ratatosk::correct(): Processed 827000 reads
Ratatosk::correct(): Processed 828000 reads
Ratatosk::correct(): Processed 829000 reads
Ratatosk::correct(): Processed 830000 reads
Ratatosk::correct(): Processed 831000 reads
Ratatosk::correct(): Processed 832000 reads
Ratatosk::correct(): Processed 833000 reads
Ratatosk::correct(): Processed 834000 reads
Ratatosk::correct(): Processed 835000 reads
Ratatosk::correct(): Processed 836000 reads
Ratatosk::correct(): Processed 837000 reads
Ratatosk::correct(): Processed 838000 reads
Ratatosk::correct(): Processed 839000 reads
Ratatosk::correct(): Processed 840000 reads
Ratatosk::search(): Reordering reads
Ratatosk::Ratatosk(): Building graph (2/2).

CompactedDBG::read(): Reading graph from disk
KmerStream::KmerStream(): Start computing k-mer cardinality estimations

CompactedDBG::read(): Finished reading graph from disk
Ratatosk::Ratatosk(): Adding colors and coverage to graph (2/2).
Ratatosk::addCoverage(): Anchoring reads on graph.
Ratatosk::addCoverage(): Detecting and removing duplicated reads.
Ratatosk::addCoverage(): Coloring graph with reads.
Ratatosk::addCoverage(): Collecting branching information.
Ratatosk::addCoverage(): Compacting colors.
Ratatosk::Ratatosk(): Adding SNPs candidates to graph (2/2).
Ratatosk::detectSNPs(): Scanning graph for k-mers with substitutions (SNPs)
Ratatosk::detectSNPs(): Processed 1000448 vertices.
Ratatosk::detectSNPs(): Processed 2000896 vertices.
Ratatosk::detectSNPs(): Processed 3000320 vertices.
Ratatosk::detectSNPs(): Processed 4000768 vertices.
Ratatosk::detectSNPs(): Processed 5000192 vertices.
Ratatosk::detectSNPs(): Processed 6000640 vertices.
Ratatosk::detectSNPs(): Processed 7000064 vertices.
Ratatosk::detectSNPs(): Processed 8000512 vertices.
Ratatosk::detectSNPs(): Processed 9000960 vertices.
Ratatosk::detectSNPs(): Processed 10000384 vertices.
Ratatosk::detectSNPs(): Processed 11000832 vertices.
Ratatosk::detectSNPs(): Processed 12000256 vertices.
Ratatosk::Ratatosk(): Adding micro/mini-satellites motif candidates to graph (2/2).
Ratatosk::detectShortCycles(): Detecting unitigs in short cycles
Ratatosk::detectShortCycles(): Found 15107 in short cycles. (14792 unique)
Ratatosk::Ratatosk(): Correcting long reads (2/2).
FileParser::FileParser(): Missing input files
Ratatosk::correct(): Corrected read file is not in the same order as input long read file. Abort.

Add explicit sequence anchoring subcommand

It would be really cool if you could add a subcommand that simply returns the path a genome/ long read takes through the graph (as a sort of graph alignment heuristic). Is that something you can integrate?

Installation issue

I've been using FMLRC but would love to give Ratatosk a go. Unfortunately, I've run into a compiling error.

[ 55%] Building CXX object src/CMakeFiles/Ratatosk.dir/Common.cpp.o
/home/travisan/public/local/soft/Ratatosk/src/Common.cpp: In function 'PairID subsample(const SharedPairID&, size_t)':
/home/travisan/public/local/soft/Ratatosk/src/Common.cpp:347:12: error: 'random_device' is not a member of 'std'
std::random_device rd; // Seed
^~~~~~~~~~~~~
/home/travisan/public/local/soft/Ratatosk/src/Common.cpp:347:12: note: suggested alternative: 'ratio_divide'
std::random_device rd; // Seed
^~~~~~~~~~~~~
ratio_divide
/home/travisan/public/local/soft/Ratatosk/src/Common.cpp:348:12: error: 'default_random_engine' is not a member of 'std'
std::default_random_engine generator(rd()); // Random number generator
^~~~~~~~~~~~~~~~~~~~~
/home/travisan/public/local/soft/Ratatosk/src/Common.cpp:348:12: note: suggested alternative: 'default_delete'
std::default_random_engine generator(rd()); // Random number generator
^~~~~~~~~~~~~~~~~~~~~
default_delete
/home/travisan/public/local/soft/Ratatosk/src/Common.cpp:353:37: error: 'generator' was not declared in this scope
const int pos = distribution(generator);
^~~~~~~~~
/home/travisan/public/local/soft/Ratatosk/src/Common.cpp:353:37: note: suggested alternative: 'gzerror'
const int pos = distribution(generator);
^~~~~~~~~
gzerror
/home/travisan/public/local/soft/Ratatosk/src/Common.cpp: In function 'PairID subsample(const PairID&, size_t)':
/home/travisan/public/local/soft/Ratatosk/src/Common.cpp:376:12: error: 'random_device' is not a member of 'std'
std::random_device rd; // Seed
^~~~~~~~~~~~~
/home/travisan/public/local/soft/Ratatosk/src/Common.cpp:376:12: note: suggested alternative: 'ratio_divide'
std::random_device rd; // Seed
^~~~~~~~~~~~~
ratio_divide
/home/travisan/public/local/soft/Ratatosk/src/Common.cpp:377:12: error: 'default_random_engine' is not a member of 'std'
std::default_random_engine generator(rd()); // Random number generator
^~~~~~~~~~~~~~~~~~~~~
/home/travisan/public/local/soft/Ratatosk/src/Common.cpp:377:12: note: suggested alternative: 'default_delete'
std::default_random_engine generator(rd()); // Random number generator
^~~~~~~~~~~~~~~~~~~~~
default_delete
/home/travisan/public/local/soft/Ratatosk/src/Common.cpp:382:37: error: 'generator' was not declared in this scope
const int pos = distribution(generator);
^~~~~~~~~
/home/travisan/public/local/soft/Ratatosk/src/Common.cpp:382:37: note: suggested alternative: 'gzerror'
const int pos = distribution(generator);
^~~~~~~~~
gzerror
make[2]: *** [src/CMakeFiles/Ratatosk.dir/build.make:76: src/CMakeFiles/Ratatosk.dir/Common.cpp.o] Error 1
make[2]: Leaving directory '/panfs/roc/groups/5/travisan/public/local/soft/Ratatosk/build'
make[1]: *** [CMakeFiles/Makefile2:123: src/CMakeFiles/Ratatosk.dir/all] Error 2
make[1]: Leaving directory '/panfs/roc/groups/5/travisan/public/local/soft/Ratatosk/build'
make: *** [Makefile:130: all] Error 2

I am trying to build it locally on a public server (CentOS v.7). Any ideas? Thanks!

Corrected PromethION reads are extremely short

Dear developers,

We have ~30x coverage of Nanopore PromethION data from a heterozygous invertebrate with a large genome (18Gbp). We also have approximately 30-40x coverage of 10X Chromium Illumina short linked-reads. We ran a round of error correction on a large compute node with >4TB RAM and 168 cores. Our original Nanopore reads (84 million; 600Gbp) have an N50 of about 12 kbp and 72% have Q>8, and 56% have Q>10.

It finished within a week with no reported error but the output is not as we expected.

Among a set of 50M outputted reads totaling 4.7 Gbp, the N50 is only 85 bp and our longest read is only 2.2kbp.

Something has obviously gone wrong here. We have neither used the -t or -q flags at all in the command. An example with 80 cores in a trial run is this:

/usr/bin/time -v Ratatosk -v -c 80 $SHORT_READS $LONG_READS -o out_long_reads 2>&1 | tee run_ratatosk.sh.log

Here $SHORT_READS are multiple appended " -s " and $LONG_READS are multiple " -l ".

The short-reads are sorted such that read 2 always follow after read 1. Because these are chromium libraries, the 16 bp barcode has been taken off from read 1 and added to a BX read header tag.

The long-read data is generally sorted such that shorter and lower quality long reads are passed into the program early and longer/more high quality data is passed later.

Any suggestions what might be going on with this data in Ratatosk?

Grateful for feedback!

non-{A,C,G,T} characters appearing in the corrected reads

Hi,
After finishing the corrected of reference-guided reads, I noticed that many "invalid" characters have been introduced that are problematic for downstream analysis. The only reference I noticed to nonstandard bases is in the readme, where they are not used in correction.

I found some code in Alignment.C where ambiguity is handled, but it isn't clear to me if it is expected that Ratatosk outputs other bases (K,Y,N,V,M,D,W...), or if these should have been resolved during processing.

There may be more fine-tune ways of resolving ambiguous bases, but filtering out via something like seqtk rejects 90% of ratatosk corrected reads, which makes the output not useful.

Correction Nanopore reads using PacBio HiFi reads?

Hello, I am thinking to try Ratatosk to correct Nanopore reads using PacBio HiFi reads. Is there any specific setting I should use for that, or can I just input the PacBio HiFi reads as if they were Illumina single reads?

Wrong parameter -i

Should use -s short_reads.fastq parameter instead of -i short_reads.fastq in de novo correction of Readme

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.