selkamand / selkamand/seqlib

Indel representations and classification

Open
#22 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

At some point, a package that uses seqlib will want to read mutation data + reference genome into a MutationWithContext instance.

Some of those mutations will be indels ... and given an indel and its sequence context you might want to classify the 'type' of indel (e.g. is it in a microhomology region, etc).

How you do this may depend on how the indel is represented. Note MutationWithContext EXPECTS (as a constructor-enforced invariant) that the ref base allele matches the context sequence at the appropriate position AND SmallMutation requires there is at least one reference base (this is what lets us supply an infallable apply_mutation method).

I think we should try implementing an Indel type classifier method from a MutationWithContext type to figure out how much of the logic requires we know - in advanced - exactly how the Indel is Normalised - and whether sequence-context dependent indel classification is something seqlib can perform with correctness guarantees for ANY valid MutationWithContext object.

More info on indel normalisation: https://support-docs.illumina.com/SW/DRAGEN_v310/Content/SW/DRAGEN/VarNorm.htm

Additional notes on variant representation in the DRAGEN VCF:

• Reference-trimming of alleles: A single padding reference base is used to represent insertions and deletions (i.e. the reference base preceding the insertion or deletion is included).
• Allele decomposition: multi-nucleotide polymorphisms (MNPs) are represented as separate, contiguous individual SNVs records in the VCF. If phasing can be determined, the FORMAT/GT is phased and the FORMAT/PS contains the coordinate position of the first variant in the set of phased variants. This determines which variant has occurred on the same haplotype.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the MutationWithContext and SmallMutation invariants, especially the reference-base and context requirements. Compare those representations with the linked DRAGEN indel-normalisation notes and determine whether classification is possible for every valid MutationWithContext. Done means the required representation assumptions and correctness guarantees are defined; the issue names no files or tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
bioinformatics
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.