13
$\begingroup$

I have a DNA sample which I know doesn't quite match my reference genome - my culture comes from a subpopulation which has undergone significant mutation since the reference was created.

The example I have in mind is E.coli. We've tried assembly using a couple of different tools and the de-novo assembly isn't as high quality as we would like, despite having tonnes of data. Approaching this from a Bayesian point of view, the reference genome provides a very good prior if we could use it wisely

From visual inspection with IGV, a significant number of both SNPs and SVs appear to be present, but an assembly built entirely from my own sequencing data is not high enough quality for my purposes.

How can I modify this reference genome to match my sample with new sequencing data (preferably with Oxford Nanopore Technologies long reads, but I can also use these to scaffold short reads if necessary), taking advantage of my knowledge that the existing reference is mostly very good, without having to access the reads which were originally used to construct the reference genome?

The goal of the project isn't to determine where the SVs are, I just need a reference that accurately represents my sample in order to use the data for downstream analysis (as the training set for machine learning.) So by a high quality reference, I mean one which represents as well as possible the sample that was sequenced. To make matters worse, this may not be the one which has the highest alignment identity if there are systematic sequencing errors, as in nanopore sequencing!

$\endgroup$
0

5 Answers 5

4
$\begingroup$

Depending on the coverage of your data and the complexity of the genome, you could either reassemble the genome de novo or run a reference guided (or reference assisted) assembly. It sounds like you're leaning more towards the latter.

There are a couple of reference-guided assembly tools available: AlignGraph and Ragout. These may or may not be appropriate depending on the organism of interest and your data types. For example, these tools are very unlikely to work well on Oxford Nanopore reads which have not been error corrected using Nanopolish or Canu -correct.

$\endgroup$
0
4
$\begingroup$

One approach to this is to use whatever data you have to iteratively update the reference genome. You can keep chain files along the way so you can convert coordinates (e.g. in gff files) from the original reference to your new pseudoreference.

A simple approach might be:

  1. Align new data to existing reference
  2. Call variants (e.g. samtools mpileup, GATK, or whatever is best for you)
  3. Create new reference incorporating variants from 2
  4. Rinse and repeat (i.e. go to 1)

You can track some simple stats as you do this - e.g. the number of new variants should decrease, the number of reads mapped should increase, and the mismatch rate should decrease, with every iteration of the above loop. Once the pseudoreference stabilises, you know you can't do much more.

$\endgroup$
3
$\begingroup$

If it is a short-read draft assembly and you have long-reads (ONT or Pacbio) run links to scaffold the genome and then run Pilon iteratively to try to polish and fill gaps using the short-reads.

$\endgroup$
3
$\begingroup$

You can use nanopolish using the illumina reads. Also have a look at pilon.

$\endgroup$
0
$\begingroup$

Kindel (which I wrote) can infer consensus from low quality alignments of short reads to viral references, and extending it to work with single molecule reads and larger genomes is on my to-do list, though I imagine this will require some redesign.
Presumably you're dealing with a bacterial or fungal genome in this case ? I do also have a basic C++ version, but it's a long way away from being user friendly. Anyway, it may be worth a look – feel free to get in touch with any issues you encounter. I'd use Pilon as mentioned above

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.