From 76b43c7e2b8e6d43921f1e1d6b1d97f153591a56 Mon Sep 17 00:00:00 2001 From: Tom Mokveld Date: Wed, 14 Feb 2024 17:06:24 +0100 Subject: [PATCH] Update to version 0.1.2 --- README.md | 22 +- docs/cli.md | 3 +- docs/example.md | 52 ++-- docs/figures/dropout.png | Bin 0 -> 96564 bytes docs/figures/example_site_1.png | Bin 83143 -> 36000 bytes docs/figures/example_site_2.png | Bin 101816 -> 44350 bytes docs/figures/imbalance.png | Bin 0 -> 106831 bytes docs/figures/match_mix_dist.png | Bin 0 -> 115021 bytes docs/interpretation.md | 75 ++++++ docs/output.md | 6 +- src/aligner.rs | 225 +++++++++++++--- src/allele.rs | 433 ++++++++++++++++++++++++------ src/cli.rs | 139 +++++++++- src/commands/trio.rs | 62 +++-- src/denovo.rs | 302 +++++++++++++++++---- src/handles.rs | 118 +++++++++ src/lib.rs | 2 +- src/locus.rs | 120 ++++++++- src/math.rs | 97 +++++++ src/read.rs | 153 ++++++++--- src/snp.rs | 449 +++++++++++++++++++++++--------- src/stats.rs | 28 -- src/util.rs | 36 +++ src/wfa2.rs | 2 +- 24 files changed, 1872 insertions(+), 452 deletions(-) create mode 100644 docs/figures/dropout.png create mode 100644 docs/figures/imbalance.png create mode 100644 docs/figures/match_mix_dist.png create mode 100644 docs/interpretation.md create mode 100644 src/math.rs delete mode 100644 src/stats.rs diff --git a/README.md b/README.md index 0ff3311..705e0ab 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@

TRGT-denovo

-

Calling de novo tandem repeats in trios

+

Calling de novo tandem repeat mutations in trios

*** @@ -18,12 +18,13 @@ Please note that TRGT-denovo is still in early development and is subject to sig * [Latest release with binary](https://github.com/PacificBiosciences/trgt-denovo/releases/latest) -To build TRGT-denovo you need a working C compiler. It was tested on Linux with Clang 13.0.0 & GCC 11.3.0 and on Mac OSX (M1) with Clang 15.0.7 & GCC 14.0.0. +To build TRGT-denovo you need a working C compiler: it was tested on Linux with Clang 13.0.0 & GCC 11.3.0 and on Mac OSX (M1) with Clang 15.0.7 & GCC 14.0.0. ## Documentation -* [Example run](docs/example.md) -* [Output](docs/output.md) +* [Getting started](docs/example.md) +* [Output format](docs/output.md) +* [Interpretation](docs/interpretation.md) * [Command-line interface](docs/cli.md) ## Need help? @@ -38,5 +39,16 @@ As TRGT-denovo is not covered by any service level agreement or the like, please Please report all issues through GitHub instead. We make no warranty that any such issue will be addressed, to any extent or within any time frame. +## Changelog + +- 0.1.2 + - With the recent changes to TRGT, within-sample partitioning is now alignment-free in TRGT-denovo + - Homozygous alleles are no longer collapsed: de novo evidence will now always gathered and be specific to a single allele only + +- 0.1.1 + - Add cli parameter to set aligner penalties + - Document the codebase + - Update documentation to include interpretation of generated outpput + ### DISCLAIMER -THIS WEBSITE AND CONTENT AND ALL SITE-RELATED SERVICES, INCLUDING ANY DATA, ARE PROVIDED "AS IS," WITH ALL FAULTS, WITH NO REPRESENTATIONS OR WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, NON-INFRINGEMENT OR FITNESS FOR A PARTICULAR PURPOSE. YOU ASSUME TOTAL RESPONSIBILITY AND RISK FOR YOUR USE OF THIS SITE, ALL SITE-RELATED SERVICES, AND ANY THIRD PARTY WEBSITES OR APPLICATIONS. NO ORAL OR WRITTEN INFORMATION OR ADVICE SHALL CREATE A WARRANTY OF ANY KIND. ANY REFERENCES TO SPECIFIC PRODUCTS OR SERVICES ON THE WEBSITES DO NOT CONSTITUTE OR IMPLY A RECOMMENDATION OR ENDORSEMENT BY PACIFIC BIOSCIENCES. +THIS WEBSITE AND CONTENT AND ALL SITE-RELATED SERVICES, INCLUDING ANY DATA, ARE PROVIDED "AS IS," WITH ALL FAULTS, WITH NO REPRESENTATIONS OR WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, NON-INFRINGEMENT OR FITNESS FOR A PARTICULAR PURPOSE. YOU ASSUME TOTAL RESPONSIBILITY AND RISK FOR YOUR USE OF THIS SITE, ALL SITE-RELATED SERVICES, AND ANY THIRD PARTY WEBSITES OR APPLICATIONS. NO ORAL OR WRITTEN INFORMATION OR ADVICE SHALL CREATE A WARRANTY OF ANY KIND. ANY REFERENCES TO SPECIFIC PRODUCTS OR SERVICES ON THE WEBSITES DO NOT CONSTITUTE OR IMPLY A RECOMMENDATION OR ENDORSEMENT BY PACIFIC BIOSCIENCES. \ No newline at end of file diff --git a/docs/cli.md b/docs/cli.md index 62c0582..a8facf1 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -16,4 +16,5 @@ Basic: Advanced: - `--flank-len ` Number of flanking nucleotides added to a target region during realignment, default = 50 - `--no-clip-aln` Score alignments without stripping the flanks -- `--parental-quantile ` Quantile of alignment scores to determine the parental threshold, default is strict and takes only the top scoring alignment, default = 1.0 \ No newline at end of file +- `--parental-quantile ` Quantile of alignment scores to determine the parental threshold, default is strict and takes only the top scoring alignment, default = 1.0 +- `--aln-scoring` Scoring function for 2-piece gap affine alignment (non-negative values): mismatch,gap_opening1,gap_extension1,gap_opening2,gap_extension2, default = "8,4,2,24,1", see [here](https://github.com/smarco/WFA2-lib/) for more details on parametrization \ No newline at end of file diff --git a/docs/example.md b/docs/example.md index dc5a77a..12c8995 100644 --- a/docs/example.md +++ b/docs/example.md @@ -1,26 +1,30 @@ # Introduction -A brief overview of the steps necessary to perform *de novo* tandem repeat mutation calling from TRGT output using TRGT-denovo +A brief overview of the steps needed to call *de novo* tandem repeat mutations using TRGT-denovo given TRGT output. ## Prerequisites - [TRGT binary](https://github.com/PacificBiosciences/trgt/releases/latest) - [TRGT-denovo binary](https://github.com/PacificBiosciences/trgt-denovo/releases/latest) -- Aligned HiFi data of a family trio (father, mother, child) -- The reference genome used for the alignments -- A BED file with repeat expansion definitions (always same or a subset of those with TRGT) +- Repeat definition files are available in [this Zenodo repository](https://zenodo.org/record/8329210) + and definitions of known pathogenic repeats are [also available here](https://github.com/PacificBiosciences/trgt/tree/main/repeats/) (always the same sites or a subset of those used with TRGT) +- Aligned HiFi data of a family trio (father, mother, and child) +- The reference genome used for read alignment -## Calling *de novo* tandem repeats + + + +## Calling *de novo* tandem repeat mutations Given the following data: -- reference genome `reference.fasta` -- aligned sequencing data of the family (father, mother, and son respectively) `sample_F.bam`, `sample_M.bam`, `sample_S.bam`, -- repeat definition file `repeat.bed`. +- Reference genome `reference.fasta` +- Repeat definition file `repeat.bed`. +- Aligned sequencing data of the family (father, mother, and son respectively) `sample_F.bam`, `sample_M.bam`, and `sample_S.bam`. ### Data pre-processing -Prior to *de novo* calling all data must first be genotyped by TRGT: +All data must first be genotyped by TRGT: ``` ./trgt --genome reference.fasta \ @@ -64,7 +68,7 @@ Such that you end up with `sample_F.sorted.vcf.gz`, `sample_F.spanning.sorted.ba ### Running TRGT-denovo -With all preprocessing completed it we can call *de novo* repeat expansion mutations using TRGT-denovo from the sample data. Note that family members are supplied by their common prefix of `spanning.sorted.bam` and `sorted.vcf.gz`, i.e., `sample_F`, `sample_M`, and `sample_S` and path if not running TRGT-denovo in the same directory as the data: +With all preprocessing completed, we can call *de novo* repeat expansion mutations using TRGT-denovo from the sample data. Note that family members are supplied by their common prefix of `spanning.sorted.bam` and `sorted.vcf.gz`, i.e., `sample_F`, `sample_M`, and `sample_S` and path if not running TRGT-denovo in the same directory as the data: ``` ./TRGT-denovo trio --reference reference.fasta \ @@ -75,30 +79,4 @@ With all preprocessing completed it we can call *de novo* repeat expansion mutat --out out.csv ``` -## Example - -Below output of HG002 is shown for two candidate *de novo* tandem repeat mutation sites: -``` -trid genotype denovo_coverage allele_coverage allele_ratio child_coverage child_ratio mean_diff_father mean_diff_mother father_dropout_prob mother_dropout_prob allele_origin denovo_status per_allele_reads_father per_allele_reads_mother per_allele_reads_child index father_motif_counts mother_motif_counts child_motif_counts maxlh -chr1_47268728_47268830_ATAA 1 19 37 0.5135 37 0.5135 6.7368 6.7368 0.0000 0.0000 M:1 Y:= 43 26 37 0 25 25 25 0.7152 -chr1_7862944_7863157_TATTG 1 0 21 0.0000 37 0.0000 0.0000 19.2000 0.0000 0.0000 F:2 X 18,17 16,19 21,16 0 27,29 27,63 29,60 0.9820 -chr1_7862944_7863157_TATTG 2 16 16 1.0000 37 0.4324 171.8750 22.8750 0.0000 0.0000 M:2 Y:- 18,17 16,19 21,16 1 27,29 27,63 29,60 1.0000 -``` - -### Site 1 - -The first site is homozygous in the child, hence only one call is made. It has a *de novo* coverage (DNC) of 19, i.e., there are 19 reads that support a candidate *de novo* allele relative to the parental read alignments. The DNC should always be put into context of the total coverage, to ascertain that: - -1. There is sufficient coverage -2. The ratio between the two is close to 0.5 - -The DNC at this site is high and the ratio makes it likely that this is a confident call. However, the score difference with respect to either parents is low, such that the expected event size is small. Additionally, the score difference is equivalent in both parents such that parental origin may not be assessed. Generally the parent with the smallest score difference is the one from which is inherited: - -![Example site 1](figures/example_site_1.png) - -### Site 2 - -The second site is heterozygous in the child, hence both child alleles are tested. The second allele is a potential *de novo* call. The score difference with respect to the maternal alleles is the smallest. - -![Example site 2](figures/example_site_2.png) - +For further interpretation of TRGT-denovo output see [here](interpretation.md) \ No newline at end of file diff --git a/docs/figures/dropout.png b/docs/figures/dropout.png new file mode 100644 index 0000000000000000000000000000000000000000..92d010c60b62eb966f40a77b159b97b3d7db3ade GIT binary patch literal 96564 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 YF<;&(U!tPme?fz+q@qNfm~qJe1Gl>Q@c;k- literal 0 HcmV?d00001 diff --git a/docs/figures/example_site_1.png b/docs/figures/example_site_1.png index 8eb4532ddb294b5a17a92cfb886c8087a90e7182..c88715e195ce5b82aede670ae4051474a45d48f9 100644 GIT binary patch literal 36000 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 T#vlI;{*yhfa4hkN-rxTR6+p0z diff --git a/docs/figures/example_site_2.png b/docs/figures/example_site_2.png index 325bd794498db9244a1698b412d073f715dc364e..46999bfff5b2f6c90eaf452275ebe74348408d2d 100644 GIT binary patch literal 44350 zcmYJaWmp_d6E3_E+%>qnBzS-joZ#-k-DPo?;O-LK-Ga-a!3h%F-QC^JJny-_^X-qh zc4w!jySl6Is=BK>Tv1*E6^RfD1OlN-Ns1|hKpzf3AgF2tXy8tiKI9k#s)Cgg6IOMH zI$41Q6AjP7Za8@g*`RQ|LB{hFP4|38|NqbVDcr~2Q8pREqvyYKkyewt%I$Yz=e~JO z)-y$imU8mC_nhBhEGa3e?OQGf{9dnff<=0?kc*O(rB_WQ5kNnc84RNk0}S3?9`SUY z<3W8&(o=(4OwGB#0}Mq;j!=caw>q8n$8DFJOxe?@rC37>!!|xfu~Fv%50n*$`HM#h zXK8B6U`@-H@x<`)@p*ZAf{{nQGd4Ch?p{Cg#F$TH>po|gBv4aFv+*z@KwH~V{cA3i z`pWk`Dxo$6L{0%+G%X8%?Uykwm4GFI!W0sO&>m%StsdkbHLZ;#pVu!~;>kosFnHPB z4VtNHJfF1X5$z1owzJDgfs$aAF+s1C zw_xIef>Yw}%Q0HoJ2rVsOv@N;ANQ{cCppt?=b_`uL@UAG&@=s7QwZ@h@7mP}yO1 z%X25XOFN7k;WRz3zS9^N+2fD|>Dxu@53Yh*l)2bCD#B8AVB~A;ualw$Y+Y>il-m>564Ywx3Ow zb=fUUgdL2y5$ON)RYW`NA6tmg^4>Ws-9FEdsGd6cwnCJsfcs+Il5=+h8<+ZOj(f zR@4pn-(~&2(vm~Zr>@OwNcK@I@AuCIC?ZiVK-g3!j$`OJ@InFE%Zm`As6<0oeg=LH zx0!SuixkU^Io~+r8IK|1gM){wY-EQ64I0SehYacmXhdMhu$XJCn@JVL}W=S|JF;3U@0>kE>3|pMPI5Z1yW0$8t@RocCny{QLKB zXlRIMSdZmOjD8y_oDg#%Nb-X)4#tM9>o27dhKNulJ0buLq#G%XH$I^CUBW`oBB7Uj zjoJ2C%Sz5@K;goz{7!Y9K(0gw9lz`gqap?K{${s4BrHlfOo|U{bNOipS&}qMzLPwRQIZhZ0x&vi%pGZ|PAVw!JA6O< z>K=X$ER}&*$+mnJixco| z-tlJ38XCo=PquRqd##O9F5g`YN;v4KKHR8I()^bjgOhs^Nw%-|I&e^no>EQlXwJ`a zy#YZLI5tgSVU=EU8=s=q&+^t>WN z(TpFam=k9UlWA0oKmh_J2IhnlI_Xg7Q*<(Sm)%aeSH!;Q_}8w}&Dg7&Hv8Sm>&#B7 zy<+{C_6O`_jtRpe==_j?hGJLM`}9rBUQAYau4EnkD9m_IibbJ+%>SXcC8lzC*!HiV zZ!h+KJyy7T2h(6F5%M3uCF_1fP;;0g8;FM(5}W7dcm=wjeG|vDg&w3K2_sKN$h@qK zXAo(2<+d!iJ2wV5Gl%5@7)ov!>xQ5d9%h}6H-Y6>bc{C^6 z|YaWS~KmPITDPPod#gt zlu1@BqXzD8@*Uuw$NuG-)Q`XMBS@@tKmhp8O?RH)^pS`-_xa&?n>_0!IJ1YG*7aW7 zw6p3u#+>7()ZlG;RTitJaEdGVfnD!+;X_i%bLuKTPh+YuuEEmQc8=iMTGt#tdMl0N zV&s#qf>`dEGPTX0wP&;(Uown>C?&Cfb92EX(qHhoz9_1XQF*k2ween~IB*bZ)>3*vv$lFkrA#%nxZ%6>eJt*{

6`_dxz+lLi#I&fuAAPbf=ELQH&;Br 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 Y16&H|;tcYK1^@s607*qoM6N<$g7+G+O8@`> literal 101816 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 J&m}M1`adkmHT?hp diff --git a/docs/figures/imbalance.png b/docs/figures/imbalance.png new file mode 100644 index 0000000000000000000000000000000000000000..fe335859a1995ee35102591e18c35c128dac1db4 GIT binary patch literal 106831 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 literal 0 HcmV?d00001 diff --git a/docs/figures/match_mix_dist.png b/docs/figures/match_mix_dist.png new file mode 100644 index 0000000000000000000000000000000000000000..f5dcbe5b60f40933e0f790a4b214ddeb71524a6f GIT binary patch literal 115021 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

n8WIe||iEEtTb<5)e`0ohrKG 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 i{{Qpv|M%UzHSvYbCY!#NFJ2G +

+Low or absent coverage complicates the accurate identification of de novo mutations. +

+ +In cases of dropout, there's a risk of misinterpreting a heterozygous allele as homozygous, potentially leading to erroneous categorization of a child's allele as *de novo*. Therefore, reporting all sites in the repeat catalog provides insights into the distribution of potential *de novo* calls. For instance, analyzing the *de novo* coverage metric (the number of child reads differing from parental data), and its distribution offers useful insights: + + +

+Distributions of the TRGT-denovo de novo coverage metric in a matched and permuted trio. +

+ +The figure above shows the *de novo* coverage metric distributions in both matched and permuted trios. A very small number of *de novo* loci is expected. The *de novo* coverage is a useful measure in assessing confidence, factoring in local coverage. As seen in the permuted trio, a substantial number of putative *de novo* mutations are found, aligning with expectations. Each site with increased *de novo* coverage suggests significant deviation in the child's data from the parental, indicating a potential *de novo* mutation, or in the case of the permuted sample, a possible sample mix-up. In matched trios, this metric is equally useful, clearly demonstrating the impact of coverage imbalance: + + +

+Distributions of the TRGT-denovo de novo coverage metric in coverage balanced and imbalanced trios. +

+ +The distributions of the TRGT-denovo *de novo* coverage metric in coverage-balanced and imbalanced trios highlight an important point: as coverage decreases, the probability of insufficient allele coverage increases, leading to an increase in false positive *de novo* calls. These distributions are helpful in establishing thresholds to filter out false positives and refine the list of candidate mutations. + +## HG002 example + +Below TRGT-denovo output of HG002 is shown for two candidate *de novo* tandem repeat mutation sites: +``` +trid genotype denovo_coverage allele_coverage allele_ratio child_coverage child_ratio mean_diff_father mean_diff_mother father_dropout_prob mother_dropout_prob allele_origin denovo_status per_allele_reads_father per_allele_reads_mother per_allele_reads_child index father_motif_counts mother_motif_counts child_motif_counts +chr1_47268728_47268830_ATAA 1 19 37 0.5135 37 0.5135 6.7368 6.7368 0.0000 0.0000 M:1 Y:= 43 26 37 0 25 25 25 +chr1_7862944_7863157_TATTG 1 0 21 0.0000 37 0.0000 0.0000 19.2000 0.0000 0.0000 F:2 X 18,17 16,19 21,16 0 27,29 27,63 29,60 +chr1_7862944_7863157_TATTG 2 16 16 1.0000 37 0.4324 171.8750 22.8750 0.0000 0.0000 M:2 Y:- 18,17 16,19 21,16 1 27,29 27,63 29,60 +``` + +### Site 1 + +The first site is homozygous in the child, hence only one call is made: + +``` +chr1_47268728_47268830_ATAA 1 19 37 0.5135 37 0.5135 6.7368 6.7368 0.0000 0.0000 M:1 Y:= 43 26 37 0 25 25 25 +``` + +It has a *de novo* coverage of 19, i.e., there are 19 reads that support a candidate *de novo* allele relative to the parental read alignments. The *de novo* coverage should always be put into context of the total coverage, to ascertain that: + +1. There is sufficient coverage +2. The ratio between the two is close to 0.5 + +The *de novo* coverage at this site is high and the ratio makes it likely that this is a confident call. However, the score difference with respect to either parents is low, such that the expected event size is small. Additionally, the score difference is equivalent in both parents such that parental origin may not be assessed. Generally the parent with the smallest score difference is the one from which is inherited: + + +

+

+ +### Site 2 + +The second site is heterozygous in the child, hence both child alleles are tested: + +``` +chr1_7862944_7863157_TATTG 1 0 21 0.0000 37 0.0000 0.0000 19.2000 0.0000 0.0000 F:2 X 18,17 16,19 21,16 0 27,29 27,63 29,60 +chr1_7862944_7863157_TATTG 2 16 16 1.0000 37 0.4324 171.8750 22.8750 0.0000 0.0000 M:2 Y:- 18,17 16,19 21,16 1 27,29 27,63 29,60 +``` + +The second allele is a potential *de novo* call (note that the long allele in TRGT is always the second allele). The score difference with respect to the maternal alleles is the smallest. + + +

+

diff --git a/docs/output.md b/docs/output.md index 5f19cbf..6fed5bf 100644 --- a/docs/output.md +++ b/docs/output.md @@ -18,10 +18,10 @@ TRGT-denovo scores and then outputs target sites in a tab-separated format, with - `per_allele_reads_father` Number of reads partitioned per allele in the father (allele1, allele2) - `per_allele_reads_mother` Number of reads partitioned per allele in the mother (allele1, allele2) - `per_allele_reads_child` Number of reads partitioned per allele in the child (allele1, allele2) +- `father_dropout` Coverage cut-off dropout detection in father; possible values: Full dropout (`FD`), Haplotype dropout (`HD`), Not (`N`) +- `mother_dropout` Coverage cut-off dropout detection in mother; possible values: Full dropout (`FD`), Haplotype dropout (`HD`), Not (`N`) +- `child_dropout` Coverage cut-off dropout detection in child; possible values: Full dropout (`FD`), Haplotype dropout (`HD`), Not (`N`) - `index` Index of this allele in the TRGT VCF, used for linking to `child_motif_counts` - `father_motif_counts` TRGT VCF motif counts for this locus in the father - `mother_motif_counts` TRGT VCF motif counts for this locus in the mother - `child_motif_counts` TRGT VCF motif counts for this locus in the child -- `maxlh` Maximum likelihood score of child allele data relative to parental alleles (unstable) - -TRGT-denovo does calling based on the genotyping and spanning reads generated by TRGT and will test and output at most two alleles in the event of a heterozygous site. \ No newline at end of file diff --git a/src/aligner.rs b/src/aligner.rs index 878d7e9..6f8188f 100644 --- a/src/aligner.rs +++ b/src/aligner.rs @@ -2,6 +2,8 @@ use crate::wfa2; use serde::{Deserialize, Serialize}; use std::ptr; +// TODO: Update functions using cigar.operations to use cigar_buffer instead. + #[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq)] pub enum MemoryModel { MemoryHigh, @@ -183,6 +185,52 @@ impl WFAligner { inner: ptr::null_mut(), } } + + /// Returns the penalties as a tuple based on the distance metric. + pub fn get_penalties(&self) -> (i32, i32, Option, Option, Option, Option) { + match DistanceMetric::from(self.attributes.inner.distance_metric) { + DistanceMetric::Edit => ( + self.attributes.inner.linear_penalties.match_, + self.attributes.inner.linear_penalties.mismatch, + Some(self.attributes.inner.linear_penalties.indel), + None, + None, + None, + ), + DistanceMetric::Indel => ( + self.attributes.inner.linear_penalties.match_, + self.attributes.inner.linear_penalties.mismatch, + Some(self.attributes.inner.linear_penalties.indel), + None, + None, + None, + ), + DistanceMetric::GapLinear => ( + self.attributes.inner.linear_penalties.match_, + self.attributes.inner.linear_penalties.mismatch, + Some(self.attributes.inner.linear_penalties.indel), + None, + None, + None, + ), + DistanceMetric::GapAffine => ( + self.attributes.inner.affine_penalties.match_, + self.attributes.inner.affine_penalties.mismatch, + Some(self.attributes.inner.affine_penalties.gap_opening), + Some(self.attributes.inner.affine_penalties.gap_extension), + None, + None, + ), + DistanceMetric::GapAffine2p => ( + self.attributes.inner.affine2p_penalties.match_, + self.attributes.inner.affine2p_penalties.mismatch, + Some(self.attributes.inner.affine2p_penalties.gap_opening1), + Some(self.attributes.inner.affine2p_penalties.gap_extension1), + Some(self.attributes.inner.affine2p_penalties.gap_opening2), + Some(self.attributes.inner.affine2p_penalties.gap_extension2), + ), + } + } } impl Drop for WFAligner { @@ -284,13 +332,15 @@ impl WFAligner { let mut last_op: Option = None; for i in begin_offset..end_offset { let cur_op = operations[i as usize]; - if last_op.is_some() && cur_op != last_op.unwrap() { - score -= Self::cigar_score_gap_affine2p_get_operations_score( - last_op.unwrap(), - op_length, - &self.attributes.inner.affine2p_penalties, - ); - op_length = 0; + if let Some(op) = last_op { + if cur_op != op { + score -= Self::cigar_score_gap_affine2p_get_operations_score( + op, + op_length, + &self.attributes.inner.affine2p_penalties, + ); + op_length = 0; + } } last_op = Some(cur_op); op_length += 1; @@ -355,6 +405,7 @@ impl WFAligner { let mut cstr = String::new(); let cigar = unsafe { (*self.inner).cigar.as_ref() }.unwrap(); + let begin_offset = cigar.begin_offset as usize + offset; let end_offset = cigar.end_offset as usize - offset; @@ -446,7 +497,6 @@ impl WFAligner { (pattern_alg, ops_alg, text_alg) } - // TODO: Update this and other functions using cigar.operations to use cigar_buffer instead. pub fn find_alignment_span(&self) -> ((usize, usize), (usize, usize)) { let mut pattern_start: usize = 0; let mut pattern_end: usize = 0; @@ -546,7 +596,7 @@ impl WFAligner { pub struct WFAlignerIndel; impl WFAlignerIndel { - pub fn new(alignment_scope: AlignmentScope, memory_model: MemoryModel) -> WFAligner { + pub fn create_aligner(alignment_scope: AlignmentScope, memory_model: MemoryModel) -> WFAligner { let mut aligner = WFAligner::new(alignment_scope, memory_model); aligner.attributes = aligner.attributes.indel_penalties(); unsafe { @@ -560,7 +610,7 @@ impl WFAlignerIndel { pub struct WFAlignerEdit; impl WFAlignerEdit { - pub fn new(alignment_scope: AlignmentScope, memory_model: MemoryModel) -> WFAligner { + pub fn create_aligner(alignment_scope: AlignmentScope, memory_model: MemoryModel) -> WFAligner { let mut aligner = WFAligner::new(alignment_scope, memory_model); aligner.attributes = aligner.attributes.edit_penalties(); unsafe { @@ -574,7 +624,7 @@ impl WFAlignerEdit { pub struct WFAlignerGapLinear; impl WFAlignerGapLinear { - pub fn new_with_match( + pub fn create_aligner_with_match( match_: i32, mismatch: i32, indel: i32, @@ -592,13 +642,13 @@ impl WFAlignerGapLinear { aligner } - pub fn new( + pub fn create_aligner( mismatch: i32, indel: i32, alignment_scope: AlignmentScope, memory_model: MemoryModel, ) -> WFAligner { - Self::new_with_match(0, mismatch, indel, alignment_scope, memory_model) + Self::create_aligner_with_match(0, mismatch, indel, alignment_scope, memory_model) } } @@ -606,7 +656,7 @@ impl WFAlignerGapLinear { pub struct WFAlignerGapAffine; impl WFAlignerGapAffine { - pub fn new_with_match( + pub fn create_aligner_with_match( match_: i32, mismatch: i32, gap_opening: i32, @@ -625,14 +675,14 @@ impl WFAlignerGapAffine { aligner } - pub fn new( + pub fn create_aligner( mismatch: i32, gap_opening: i32, gap_extension: i32, alignment_scope: AlignmentScope, memory_model: MemoryModel, ) -> WFAligner { - Self::new_with_match( + Self::create_aligner_with_match( 0, mismatch, gap_opening, @@ -647,7 +697,7 @@ impl WFAlignerGapAffine { pub struct WFAlignerGapAffine2Pieces; impl WFAlignerGapAffine2Pieces { - pub fn new_with_match( + pub fn create_aligner_with_match( match_: i32, mismatch: i32, gap_opening1: i32, @@ -675,7 +725,7 @@ impl WFAlignerGapAffine2Pieces { aligner } - pub fn new( + pub fn create_aligner( mismatch: i32, gap_opening1: i32, gap_extension1: i32, @@ -684,7 +734,7 @@ impl WFAlignerGapAffine2Pieces { alignment_scope: AlignmentScope, memory_model: MemoryModel, ) -> WFAligner { - Self::new_with_match( + Self::create_aligner_with_match( 0, mismatch, gap_opening1, @@ -706,7 +756,8 @@ mod tests { #[test] fn test_aligner_indel() { - let mut aligner = WFAlignerIndel::new(AlignmentScope::Alignment, MemoryModel::MemoryHigh); + let mut aligner = + WFAlignerIndel::create_aligner(AlignmentScope::Alignment, MemoryModel::MemoryHigh); let status = aligner.align_end_to_end(PATTERN, TEXT); assert_eq!(status, AlignmentStatus::StatusAlgCompleted); assert_eq!(aligner.score(), 10); @@ -720,7 +771,8 @@ mod tests { #[test] fn test_aligner_edit() { - let mut aligner = WFAlignerEdit::new(AlignmentScope::Alignment, MemoryModel::MemoryHigh); + let mut aligner = + WFAlignerEdit::create_aligner(AlignmentScope::Alignment, MemoryModel::MemoryHigh); let status = aligner.align_end_to_end(PATTERN, TEXT); assert_eq!(status, AlignmentStatus::StatusAlgCompleted); assert_eq!(aligner.score(), 7); @@ -734,8 +786,12 @@ mod tests { #[test] fn test_aligner_gap_linear() { - let mut aligner = - WFAlignerGapLinear::new(6, 2, AlignmentScope::Alignment, MemoryModel::MemoryHigh); + let mut aligner = WFAlignerGapLinear::create_aligner( + 6, + 2, + AlignmentScope::Alignment, + MemoryModel::MemoryHigh, + ); let status = aligner.align_end_to_end(PATTERN, TEXT); assert_eq!(status, AlignmentStatus::StatusAlgCompleted); assert_eq!(aligner.score(), -20); @@ -749,8 +805,13 @@ mod tests { #[test] fn test_aligner_gap_affine() { - let mut aligner = - WFAlignerGapAffine::new(6, 4, 2, AlignmentScope::Alignment, MemoryModel::MemoryLow); + let mut aligner = WFAlignerGapAffine::create_aligner( + 6, + 4, + 2, + AlignmentScope::Alignment, + MemoryModel::MemoryLow, + ); let status = aligner.align_end_to_end(PATTERN, TEXT); assert_eq!(status, AlignmentStatus::StatusAlgCompleted); assert_eq!(aligner.score(), -40); @@ -764,8 +825,13 @@ mod tests { #[test] fn test_aligner_score_only() { - let mut aligner = - WFAlignerGapAffine::new(6, 4, 2, AlignmentScope::Score, MemoryModel::MemoryLow); + let mut aligner = WFAlignerGapAffine::create_aligner( + 6, + 4, + 2, + AlignmentScope::Score, + MemoryModel::MemoryLow, + ); let status = aligner.align_end_to_end(PATTERN, TEXT); assert_eq!(status, AlignmentStatus::StatusAlgCompleted); assert_eq!(aligner.score(), -40); @@ -776,7 +842,7 @@ mod tests { #[test] fn test_aligner_gap_affine_2pieces() { - let mut aligner = WFAlignerGapAffine2Pieces::new( + let mut aligner = WFAlignerGapAffine2Pieces::create_aligner( 6, 2, 2, @@ -800,7 +866,7 @@ mod tests { fn test_aligner_span_1() { let pattern = b"AATTTAAGTCTAGGCTACTTTC"; let text = b"CCGACTACTACGAAATTTAAGTATAGGCTACTTTCCGTACGTACGTACGT"; - let mut aligner = WFAlignerGapAffine2Pieces::new( + let mut aligner = WFAlignerGapAffine2Pieces::create_aligner( 8, 4, 2, @@ -822,7 +888,7 @@ mod tests { fn test_aligner_span_2() { let pattern = b"GGGATCCCCGAAAAAGCGGGTTTGGCAAAAGCAAATTTCCCGAGTAAGCAGGCAGAGATCGCGCCAGACGCTCCCCAGAGCAGGGCGTCATGCACAAGAAAGCTTTGCACTTTGCGAACCAACGATAGGTGGGGGTGCGTGGAGGATGGAACACGGACGGCCCGGCTTGCTGCCTTCCCAGGCCTGCAGTTTGCCCATCCACGTCAGGGCCTCAGCCTGGCCGAAAGAAAGAAATGGTCTGTGATCCCCC"; let text = b"AGCAGGGCGTCATGCACAAGAAAGCTTTGCACTTTGCGAACCAACGATAGGTGGGGGTGCGTGGAGGATGGAACACGGACGGCCCGGCTTGCTGCCTTCCCAGGCCTGCAGTTTGCCCATCCACGTCAGGGCCTCAGCCTGGCCGAAAGAAAGAAATGGTCTGTGATCCCCCCAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCAGCATTCCCGGCTACAAGGACCCTTCGAGCCCCGTTCGCCGGCCGCGGACCCGGCCCCTCCCTCCCCGGCCGCTAGGGGGCGGGCCCGGATCACAGGACTGGAGCTGGGCGGAGACCCACGCTCGGAGCGGTTGTGAACTGGCAGGCGGTGGGCGCGGCTTCTGTGCCGTGCCCCGGGCACTCAGTCTTCCAACGGGGCCCCGGAGTCGAAGACAGTTCTAGGGTTCAGGGAGCGCGGGCGGCTCCTGGGCGGCGCCAGACTGCGGTGAGTTGGCCGGCGTGGGCCACCAACCCAATGCAGCCCAGGGCGGCGGCACGAGACAGAACAACGGCGAACAGGAGCAGGGAAAGCGCCTCCGATAGGCCAGGCCTAGGGACCTGCGGGGAGAGGGCGAGGTCAACACCCGGCATGGGCCTCTGATTGGCTCCTGGGACTCGCCCCGCCTACGCCCATAGGTGGGCCCGCACTCTTCCCTGCGCCCCGCCCCCGCCCCAACAGCCT"; - let mut aligner = WFAlignerGapAffine2Pieces::new( + let mut aligner = WFAlignerGapAffine2Pieces::create_aligner( 8, 4, 2, @@ -846,8 +912,13 @@ mod tests { fn test_aligner_ends_free_global() { let pattern = b"AATTTAAGTCTAGGCTACTTTC"; let text = b"CCGACTACTACGAAATTTAAGTATAGGCTACTTTCCGTACGTACGTACGT"; - let mut aligner = - WFAlignerGapAffine::new(6, 4, 2, AlignmentScope::Alignment, MemoryModel::MemoryHigh); + let mut aligner = WFAlignerGapAffine::create_aligner( + 6, + 4, + 2, + AlignmentScope::Alignment, + MemoryModel::MemoryHigh, + ); let status = aligner.align_ends_free(pattern, 0, 0, text, 0, text.len() as i32); assert_eq!(status, AlignmentStatus::StatusAlgCompleted); assert_eq!(aligner.score(), -36); @@ -863,8 +934,13 @@ mod tests { fn test_aligner_ends_free_right_extent() { let pattern = b"AATTTAAGTCTGCTACTTTCACGCAGCT"; let text = b"AATTTCAGTCTGGCTACTTTCACGTACGATGACAGACTCT"; - let mut aligner = - WFAlignerGapAffine::new(6, 4, 2, AlignmentScope::Alignment, MemoryModel::MemoryHigh); + let mut aligner = WFAlignerGapAffine::create_aligner( + 6, + 4, + 2, + AlignmentScope::Alignment, + MemoryModel::MemoryHigh, + ); let status = aligner.align_ends_free(pattern, 0, pattern.len() as i32, text, 0, text.len() as i32); assert_eq!(status, AlignmentStatus::StatusAlgCompleted); @@ -881,8 +957,13 @@ mod tests { fn test_aligner_ends_free_left_extent() { let pattern = b"CTTTCACGTACGTGACAGTCTCT"; let text = b"AATTTCAGTCTGGCTACTTTCACGTACGATGACAGACTCT"; - let mut aligner = - WFAlignerGapAffine::new(6, 4, 2, AlignmentScope::Alignment, MemoryModel::MemoryHigh); + let mut aligner = WFAlignerGapAffine::create_aligner( + 6, + 4, + 2, + AlignmentScope::Alignment, + MemoryModel::MemoryHigh, + ); let status = aligner.align_ends_free(pattern, 0, 0, text, 0, 0); assert_eq!(status, AlignmentStatus::StatusAlgCompleted); assert_eq!(aligner.score(), -48); @@ -898,8 +979,13 @@ mod tests { fn test_aligner_ends_free_right_overlap() { let pattern = b"CGCGTCTGACTGACTGACTAAACTTTCATGTACCTGACA"; let text = b"AAACTTTCACGTACGTGACATATAGCGATCGATGACT"; - let mut aligner = - WFAlignerGapAffine::new(6, 4, 2, AlignmentScope::Alignment, MemoryModel::MemoryHigh); + let mut aligner = WFAlignerGapAffine::create_aligner( + 6, + 4, + 2, + AlignmentScope::Alignment, + MemoryModel::MemoryHigh, + ); let status = aligner.align_ends_free(pattern, 0, 0, text, 0, 0); assert_eq!(status, AlignmentStatus::StatusAlgCompleted); assert_eq!(aligner.score(), -92); @@ -924,7 +1010,7 @@ mod tests { let text = [text_lf, &motif.repeat(10)[..], text_rf].concat(); let pattern = [pattern_lf, &motif.repeat(8)[..], pattern_rf].concat(); - let mut aligner = WFAlignerGapAffine2Pieces::new( + let mut aligner = WFAlignerGapAffine2Pieces::create_aligner( 8, 4, 2, @@ -979,7 +1065,7 @@ mod tests { ]; for test in tests { - let mut aligner = WFAlignerGapAffine2Pieces::new( + let mut aligner = WFAlignerGapAffine2Pieces::create_aligner( 8, 4, 2, @@ -1001,8 +1087,13 @@ mod tests { #[test] fn test_set_heuristic() { - let mut aligner = - WFAlignerGapAffine::new(6, 4, 2, AlignmentScope::Alignment, MemoryModel::MemoryHigh); + let mut aligner = WFAlignerGapAffine::create_aligner( + 6, + 4, + 2, + AlignmentScope::Alignment, + MemoryModel::MemoryHigh, + ); aligner.set_heuristic(Heuristic::WFmash(1, 2, 3)); aligner.set_heuristic(Heuristic::BandedStatic(1, 2)); aligner.set_heuristic(Heuristic::BandedAdaptive(1, 2, 3)); @@ -1017,7 +1108,7 @@ mod tests { let read = b"GCTGCTACTGGGGTGTCCCCTCTCAAAGGACAAACCCAGGATCTACAGATGTGTGTGCTAAGCCATGTATGCACATGCACGTGTGTGTGTATATATTTAACCTATCTGTATATATGTATTATGTAAACATGAGTTCCTGCTGGCATATCTGACTATAACTGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACATGAGTTCCCTGCTGGCATATCTGACTATAACTGACCACCTCACAGTCCATTCTGATCTCTATATATGTATTATGTAAACATGAGTTCCTACTGGCATATCTGACTATAACTGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATTATGTAAACATGAGTTCCCTGCTGGCATATCTGATTATAACTGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATTATGTAAACATGAGTTCCTACTGGCATATCTGACTATAACCGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACACGAGTTCCTACTGGCATATCTGACTATAACTGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACACGAGTTCCTGCTGGCATATCTGACTATAACTGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATAATATATATTATATATGGACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACATGAGTTCCTGCTGGCATATCTGACTATAACTGACCACCTCAGGGTCTATTCTGATCTGTATATATGTATAATATATATTATATATGGACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACATGAGTTCCTGCTGGCATATCTGATTATAACCGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATTATGTAAACATGAGTTCCTACTGGCATATCTGACTATAACCGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACATGAGTTCCTACTGGCATATCTGACTATAACTGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACATGAGTTCCTACTGGCATATCTGACTATAACTGACCACCTCAGGATCCATTCTGATCTGTATATATGTATAATATATATTATATATGGACCTCAGGGTCCATTCTGATCTGTATATATGTATAATATATATTATATATGGACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACATGAGTTCCTGGCTGGCATATCTGATTATAACCGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACACGAGTTCCTACTGGCATATCTGACTATAACTGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACACGAGTTCCTGCTGGCATATCTGATTATAACCGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATAATATATATTATATATGGACCTCAGGGTCCCCGCTGGCTTTTCCATGACTTCCTTATCCAGCTGTGAGAACCCTGACTCTTACTACCCATACTGTATTGACTTATTT"; let allele = b"GCTGCTACTGGGGTGTCCCCTCTCAAAGGACAAACCCAGGATCTACAGATGTGTGTGCTAAGCCATGTATGCACACGCACGTGTGTGTGTATATATTTAACCTATCTGTATATATGTATTATGTAAACATGAGTTCCTGCTGGCATATCTGACTATAACTGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACACGACTTCCTACTGGCATATCTGACTGTAACCGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACATGATTTCCTACTGGCATATCTGACTATAACTGACCACCTCAGGGTTCATTCCGATCTGTATATAAGTATCATGTAAACACGAGTTCCTGCTGGCATATCTGACTGTAACCGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACACGAGTTCCTGCTGGCATATCTGACTATAACCGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACATGAGTTCCTACTGGCATATCTGACTATAACTGACCACCTCAGGGTCCATTCTGATCTGTATGTATGTATCATGTAAACACGAGTTCCTACTGGCATATCTGACTATAACTGACCACCTCAGGGTCCATTCCGATCTGTATATAAGTATCATGTAAACACGAGTTCCTGCTGGCATATCTGACTGTAACCGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACACGAGTTCCTGCTGGCATATCTGACTATAACTGACCACCTCAGGGTCCATTCTGATCTGTATATATGTATAATATATATTATATATGGACCTCAGGGTCCATTCTGATCTGCATATATGTATAATATATATTATATATGGACCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACATGAGTTCCTGCTGGCATATCTGTCTATAACCGACCACCTTAGGGTCCATTCTGATCTGTATATATGTATAATATATATTATATATGGTCCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACATGAGTTCCTGCTGGCATATCTGTCTATAACCGACCACCTTAGGGTCCATTCTGATCTGTATATATGTATAATATATATTATATATGGACCTCAGGGTCCATTCTGATCTGCATATATGTATAATATATATTATATATGGTCCTCAGGGTCCATTCTGATCTGTATATATGTATCATGTAAACATGAGTTCCTGCTGGCATATCTGTCTATAACCGACCACCTTAGGGTCCATTCTGATCTGTATATATGTATAATATATATTATATATGGACCTCAGGGTCCCCGCTGGCTTTTCCATGACTTCCTTATCCAGCTGTGAGAACCCTGACTCTTACTACTGTATTGACTTATTTGTGAAACCT"; - let mut aligner = WFAlignerGapAffine2Pieces::new( + let mut aligner = WFAlignerGapAffine2Pieces::create_aligner( 8, 4, 2, @@ -1035,4 +1126,52 @@ mod tests { assert_eq!(_status, AlignmentStatus::StatusAlgCompleted); assert_eq!(aligner.score(), -881); } + + #[test] + fn test_get_penalties() { + let aligner = + WFAlignerEdit::create_aligner(AlignmentScope::Alignment, MemoryModel::MemoryLow); + assert_eq!(aligner.get_penalties(), (0, 4, Some(2), None, None, None)); + + let aligner = + WFAlignerIndel::create_aligner(AlignmentScope::Alignment, MemoryModel::MemoryLow); + assert_eq!(aligner.get_penalties(), (0, 4, Some(2), None, None, None)); + + let aligner = WFAlignerGapLinear::create_aligner( + 12, + 24, + AlignmentScope::Alignment, + MemoryModel::MemoryLow, + ); + + assert_eq!(aligner.get_penalties(), (0, 12, Some(24), None, None, None)); + + let aligner = WFAlignerGapAffine::create_aligner( + 12, + 24, + 2, + AlignmentScope::Alignment, + MemoryModel::MemoryLow, + ); + + assert_eq!( + aligner.get_penalties(), + (0, 12, Some(24), Some(2), None, None) + ); + + let aligner = WFAlignerGapAffine2Pieces::create_aligner( + 12, + 24, + 2, + 48, + 1, + AlignmentScope::Alignment, + MemoryModel::MemoryLow, + ); + + assert_eq!( + aligner.get_penalties(), + (0, 12, Some(24), Some(2), Some(48), Some(1)) + ); + } } diff --git a/src/allele.rs b/src/allele.rs index 5e38e76..d698d32 100644 --- a/src/allele.rs +++ b/src/allele.rs @@ -1,11 +1,18 @@ -use crate::aligner::{AlignmentStatus, WFAligner}; -use crate::denovo::{self, AlleleOrigin, DenovoStatus}; -use crate::handles; -use crate::locus::Locus; -use crate::read::ReadInfo; -use crate::snp::{self, TrinaryMatrix}; -use crate::stats; -use crate::util::Result; +//! Provides functionality for handling alleles and related operations. +//! +//! This module includes structures and functions to represent alleles, load them from VCF and BAM +//! files, perform read alignments, and process allele information for further analysis. +//! +use crate::{ + aligner::{AlignmentStatus, WFAligner}, + denovo::{self, AlleleOrigin, DenovoStatus}, + handles::{self, Karyotype, Ploidy}, + locus::Locus, + math, + read::ReadInfo, + snp::{self}, + util::{Params, Result}, +}; use anyhow::anyhow; use itertools::Itertools; use log; @@ -23,20 +30,126 @@ use noodles::{ use once_cell::sync::Lazy; use serde::Serialize; use std::{ + fmt, fs::File, + ops::Index, sync::{Arc, Mutex}, }; +#[derive(Debug, PartialEq)] +pub struct AlleleSet { + pub alleles: Vec, + pub hp_counts: [usize; 3], +} + +impl AlleleSet { + pub fn iter(&self) -> std::slice::Iter { + self.alleles.iter() + } + + pub fn len(&self) -> usize { + self.alleles.len() + } + + pub fn is_empty(&self) -> bool { + self.alleles.len() == 0 + } + + pub fn get_naive_dropout(&self, locus: &Locus, karyotype: &Karyotype) -> DropoutType { + const MIN_COVERAGE: usize = 2; + + let hp1_reads = self.hp_counts[0]; + let hp2_reads = self.hp_counts[1]; + let unphased_reads = self.hp_counts[2]; + + let phased_reads = hp1_reads + hp2_reads; + let total_reads = phased_reads + unphased_reads; + + let ploidy = karyotype.get_ploidy(locus.region.name()).unwrap(); + + if total_reads < MIN_COVERAGE { + return DropoutType::FullDropout; + } else if (unphased_reads < MIN_COVERAGE) + & (ploidy != Ploidy::One) + & (hp1_reads < MIN_COVERAGE || hp2_reads < MIN_COVERAGE) + { + return DropoutType::HaplotypeDropout; + } + DropoutType::None + } +} + +#[derive(Debug, PartialEq, Serialize)] +pub enum DropoutType { + FullDropout, + HaplotypeDropout, + None, +} + +impl fmt::Display for DropoutType { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self { + DropoutType::FullDropout => write!(f, "FD"), + DropoutType::HaplotypeDropout => write!(f, "HD"), + DropoutType::None => write!(f, "N"), + } + } +} + +impl IntoIterator for AlleleSet { + type Item = Allele; + type IntoIter = std::vec::IntoIter; + + fn into_iter(self) -> Self::IntoIter { + self.alleles.into_iter() + } +} + +impl<'a> IntoIterator for &'a AlleleSet { + type Item = &'a Allele; + type IntoIter = std::slice::Iter<'a, Allele>; + + fn into_iter(self) -> Self::IntoIter { + self.alleles.iter() + } +} + +impl Index for AlleleSet { + type Output = Allele; + + fn index(&self, index: usize) -> &Self::Output { + &self.alleles[index] + } +} + +/// Allele representation #[derive(Debug, PartialEq)] pub struct Allele { + /// The sequence of the allele pub seq: Vec, + /// TRGT genotype index of the allele. pub genotype: usize, - pub read_aligns: Vec<(ReadInfo, i32)>, + /// Vector of alignments of reads supporting this allele, storing the read and alignment score + pub read_aligns: Vec<(ReadInfo, i32)>, // TODO: Do we need the score here? + /// TRGT motif count in this allele pub motif_count: String, + /// Index used to identify the allele pub index: usize, } +/// Implementation of `Allele` struct. +/// +/// Provides methods for creating and manipulating `Allele` instances. impl Allele { + /// Creates a dummy `Allele` with given reads and default values for other fields. + /// + /// # Arguments + /// + /// * `reads` - A vector of `ReadInfo` instances representing the reads. + /// + /// # Returns + /// + /// Returns an `Allele` instance with default values and provided reads. pub fn dummy(reads: Vec) -> Allele { Allele { seq: vec![], @@ -48,22 +161,70 @@ impl Allele { } } +/// Static array of filters to be applied to reads. +/// +/// These filters are used to preprocess reads before assigning them to alleles. Filters can include +/// distance-based and frequency-based criteria to ensure the quality and relevance of the reads. pub static FILTERS: &[&'static (dyn snp::ReadFilter + Sync)] = &[&snp::FilterByDist, &snp::FilterByFreq]; +/// Calculates the haplotype counts from a vector of reads. +/// +/// # Arguments +/// +/// * `reads` - A vector of `ReadInfo` instances representing the reads. +/// +/// # Returns +/// +/// Returns an array containing the counts of reads for each haplotype. +pub fn calculate_hp_counts(reads: &[ReadInfo]) -> [usize; 3] { + let mut hp_counts = [0; 3]; + for read in reads { + match read.haplotype { + Some(1) => hp_counts[0] += 1, + Some(2) => hp_counts[1] += 1, + None => hp_counts[2] += 1, + _ => {} + } + } + hp_counts +} + +/// Loads alleles from VCF and BAM files for a given locus and subhandle. +/// +/// Extracts allele sequences from a VCF file and retrieves corresponding reads from a +/// BAM file. It applies read filters and assigns reads to the closest matching allele based on +/// alignment. +/// +/// # Arguments +/// +/// * `locus` - A reference to the `Locus` for which alleles are to be loaded. +/// * `subhandle` - A reference to the `SubHandle` containing file handles. +/// * `clip_len` - The length of the clipping to be applied to alignments. +/// * `aligner` - A mutable reference to the `WFAligner` for performing alignments. +/// +/// # Returns +/// +/// A result containing a vector of `Allele` instances if successful, or an error if not. pub fn load_alleles( locus: &Locus, subhandle: &handles::SubHandle, - clip_len: usize, + params: &Params, aligner: &mut WFAligner, -) -> Result> { +) -> Result { let (allele_seqs, motif_counts, genotype_indices) = get_allele_seqs(locus, &subhandle.vcf, &subhandle.vcf_header)?; let mut reads = get_reads(&subhandle.bam, &subhandle.bam_header, locus)?; - snp::apply_read_filters(&mut reads, FILTERS); - let reads_by_allele = assign_reads(&allele_seqs, reads, clip_len, aligner); + let hp_counts = calculate_hp_counts(&reads); + + let reads_by_allele = if params.partition_by_alignment { + assign_reads_by_alignment(&allele_seqs, reads, params.clip_len, aligner) + } else { + assign_reads_by_classification(&allele_seqs, reads) + }; + let alleles = allele_seqs .into_iter() .enumerate() @@ -75,10 +236,26 @@ pub fn load_alleles( index, }) .collect(); - Ok(alleles) + + Ok(AlleleSet { alleles, hp_counts }) } -fn assign_reads( +/// Assigns reads to the closest matching allele based on alignment scores. +/// +/// This function aligns reads to each allele sequence and assigns each read to the allele with the +/// highest alignment score. In case of ties, it distributes reads evenly. +/// +/// # Arguments +/// +/// * `alleles` - A slice of allele sequences. +/// * `reads` - A vector of `ReadInfo` instances representing the reads. +/// * `clip_len` - The length of the clipping to be applied to alignments. +/// * `aligner` - A mutable reference to the `WFAligner` for performing alignments. +/// +/// # Returns +/// +/// Returns a vector of vectors, each containing tuples of `ReadInfo` and alignment scores. +fn assign_reads_by_alignment( alleles: &[Vec], reads: Vec, clip_len: usize, @@ -119,6 +296,32 @@ fn assign_reads( reads_by_allele } +fn assign_reads_by_classification( + alleles: &[Vec], + reads: Vec, +) -> Vec> { + let mut reads_by_allele = vec![Vec::new(); alleles.len()]; + for read in reads { + let al = read.classification.unwrap() as usize; + reads_by_allele[al].push((read, 0)); + } + reads_by_allele +} + +/// Retrieves reads from a BAM file for a given locus. +/// +/// This function queries a BAM file to extract reads that overlap with the genomic region of the +/// given locus. It then converts the BAM records into `ReadInfo` instances for further processing. +/// +/// # Arguments +/// +/// * `bam` - A reference to an `Arc>>>`. +/// * `bam_header` - A reference to an `Arc`. +/// * `locus` - A reference to the `Locus` for which reads are to be retrieved. +/// +/// # Returns +/// +/// A result containing a vector of `ReadInfo` instances if successful, or an error if not. pub fn get_reads( bam: &Arc>>>, bam_header: &Arc, @@ -133,21 +336,41 @@ pub fn get_reads( .map(|record| record.map_err(|e| e.into()).map(ReadInfo::new)) .collect::>>()?; - Ok(reads) + if reads.is_empty() { + Err(anyhow!("no reads found for locus: {}", locus.id)) + } else { + Ok(reads) + } } // TODO: improve, for now it just pulls out the genotype index and checks duplicates -fn is_homozygous(genotypes: &Genotype) -> bool { - let alleles: Vec<_> = genotypes - .iter() - .filter_map(|allele| allele.position()) - .collect(); - alleles.into_iter().unique().count() == 1 -} +// fn is_homozygous(genotypes: &Genotype) -> bool { +// let alleles: Vec<_> = genotypes +// .iter() +// .filter_map(|allele| allele.position()) +// .collect(); +// alleles.into_iter().unique().count() == 1 +// } +// Define custom tags for lookup in TRGT VCFS static TRID_KEY: Lazy = Lazy::new(|| "TRID".parse().unwrap()); static MC_KEY: Lazy = Lazy::new(|| "MC".parse().unwrap()); +/// Extracts allele sequences and associated information from a VCF file for a given locus. +/// +/// Reads a VCF file to obtain allele sequences, motif counts, and genotype indices +/// for a specific locus. It ensures that the alleles correspond to the locus ID and processes +/// genotype information to construct allele sequences. +/// +/// # Arguments +/// +/// * `locus` - A reference to the `Locus` for which allele sequences are to be extracted. +/// * `vcf` - A reference to an `Arc>>`. +/// * `vcf_header` - A reference to an `Arc`. +/// +/// # Returns +/// +/// A result containing a tuple with allele sequences, motif counts, and genotype indices if successful, or an error if not. fn get_allele_seqs( locus: &Locus, vcf: &Arc>>, @@ -185,6 +408,17 @@ fn get_allele_seqs( Err(anyhow!("TRID={} missing", &locus.id)) } +/// Processes genotype information from a VCF record to generate allele sequences. +/// +/// # Arguments +/// +/// * `genotype` - A reference to the `Genotype` from the VCF record. +/// * `record` - A reference to the VCF `Record`. +/// * `locus` - A reference to the `Locus` associated with the alleles. +/// +/// # Returns +/// +/// A result containing a tuple with al0lele sequences and genotype indices if successful, or an error if not. fn process_genotypes( genotype: &Genotype, record: &Record, @@ -217,14 +451,11 @@ fn process_genotypes( seq.truncate(locus.left_flank.len()); // reset the sequence for the next allele genotype_indices.push(allele_index); - - if genotype.len() > 1 && is_homozygous(genotype) { - break; - } } Ok((alleles, genotype_indices)) } +/// Represents the result of allele processing, including various statistics and classifications. #[derive(Debug, PartialEq, Serialize)] pub struct AlleleResult { pub trid: String, @@ -251,14 +482,30 @@ pub struct AlleleResult { pub per_allele_reads_father: String, pub per_allele_reads_mother: String, pub per_allele_reads_child: String, + pub father_dropout: String, + pub mother_dropout: String, + pub child_dropout: String, pub index: usize, pub father_motif_counts: String, pub mother_motif_counts: String, pub child_motif_counts: String, - #[serde(serialize_with = "serialize_with_precision")] - pub maxlh: f64, + // #[serde(serialize_with = "serialize_with_precision")] + // pub maxlh: f64, } +/// Serialize a value as a display string. +/// +/// Serialize values for JSON output, ensuring that they are represented +/// as human-readable strings. +/// +/// # Arguments +/// +/// * `value` - A reference to the value to serialize. +/// * `serializer` - The serializer to use. +/// +/// # Returns +/// +/// Returns a serialized string representation of the value. fn serialize_as_display( value: &T, serializer: S, @@ -266,6 +513,19 @@ fn serialize_as_display( serializer.collect_str(value) } +/// Serialize a value with a specified precision as a string. +/// +/// Formats numerical values with a fixed precision before serialization, ensuring +/// consistent representation in the output. +/// +/// # Arguments +/// +/// * `value` - A reference to the value to serialize. +/// * `serializer` - The serializer to use. +/// +/// # Returns +/// +/// Returns a serialized string representation of the value with precision. fn serialize_with_precision( value: &T, serializer: S, @@ -274,43 +534,71 @@ fn serialize_with_precision( serializer.serialize_str(&formatted_value) } +/// Loads alleles for a specific family member role (father, mother, or child). +/// +/// Wrapper around `load_alleles` that handles errors and logs warnings +/// specific to the family member role being processed. +/// +/// # Arguments +/// +/// * `role` - A character representing the family member role ('F', 'M', or 'C'). +/// * `locus` - A reference to the `Locus` for which alleles are to be loaded. +/// * `subhandle` - A reference to the `SubHandle` containing file handles. +/// * `clip_len` - The length of the clipping to be applied to alignments. +/// * `aligner` - A mutable reference to the `WFAligner` for performing alignments. fn load_alleles_handle( role: char, locus: &Locus, subhandle: &handles::SubHandle, - clip_len: usize, + params: &Params, aligner: &mut WFAligner, -) -> Result> { - load_alleles(locus, subhandle, clip_len, aligner).map_err(|err| { +) -> Result { + load_alleles(locus, subhandle, params, aligner).map_err(|err| { log::warn!("Skipping {} in {}", err, role); err }) } +/// Processes alleles for a given locus and handle. +/// +/// Coordinates the loading and processing of alleles for a family trio (father, +/// mother, and child). It calculates statistics, dropout probabilities, and de novo allele +/// information, and compiles the results into `AlleleResult` instances. +/// +/// # Arguments +/// +/// * `locus` - A reference to the `Locus` for which alleles are to be processed. +/// * `handle` - An `Arc` containing the `Handles` for the family members. +/// * `clip_len` - The length of the clipping to be applied to alignments. +/// * `parent_quantile` - The quantile used for parental allele frequency calculations. +/// * `aligner` - A mutable reference to the `WFAligner` for performing alignments. +/// +/// # Returns +/// +/// A result containing a vector of `AlleleResult` instances if successful, or an error if not. pub fn process_alleles( locus: &Locus, handle: Arc, - clip_len: usize, - parent_quantile: f64, + params: &Params, aligner: &mut WFAligner, ) -> Result> { - let father_alleles = load_alleles_handle('F', locus, &handle.father, clip_len, aligner)?; - let mother_alleles = load_alleles_handle('M', locus, &handle.mother, clip_len, aligner)?; - let child_alleles = load_alleles_handle('C', locus, &handle.child, clip_len, aligner)?; + let father_alleles = load_alleles_handle('F', locus, &handle.father, params, aligner)?; + let mother_alleles = load_alleles_handle('M', locus, &handle.mother, params, aligner)?; + let child_alleles = load_alleles_handle('C', locus, &handle.child, params, aligner)?; // TODO: ongoing work, the maximum likelihood is obtained naively - let max_lhs = TrinaryMatrix::new(&child_alleles, &father_alleles, &mother_alleles) - .and_then(|trinary_mat| snp::inheritance_prob(&trinary_mat)) - .map(|(_inherit_p, max_lh)| max_lh) - .unwrap_or((-1.0, -1.0)); - let max_lhs = vec![max_lhs.0, max_lhs.1]; + // let max_lhs = TrinaryMatrix::new(&child_alleles, &father_alleles, &mother_alleles) + // .and_then(|trinary_mat| snp::inheritance_prob(&trinary_mat)) + // .map(|(_inherit_p, max_lh)| max_lh) + // .unwrap_or((-1.0, -1.0)); + // let max_lhs = [max_lhs.0, max_lhs.1]; - let mother_dropout_prob = stats::get_dropout_prob(&mother_alleles); - let father_dropout_prob = stats::get_dropout_prob(&father_alleles); + let mother_dropout_prob = math::get_dropout_prob(&mother_alleles); + let father_dropout_prob = math::get_dropout_prob(&father_alleles); - let father_reads = stats::get_per_allele_reads(&father_alleles); - let mother_reads = stats::get_per_allele_reads(&mother_alleles); - let child_reads = stats::get_per_allele_reads(&child_alleles); + let father_reads = math::get_per_allele_reads(&father_alleles); + let mother_reads = math::get_per_allele_reads(&mother_alleles); + let child_reads = math::get_per_allele_reads(&child_alleles); let father_motifs = father_alleles .iter() @@ -329,12 +617,11 @@ pub fn process_alleles( .join(","); let mut out_vec = Vec::::new(); - for (i, dna) in denovo::assess_denovo( + for (_i, dna) in denovo::assess_denovo( &mother_alleles, &father_alleles, &child_alleles, - clip_len, - parent_quantile, + params, aligner, ) .enumerate() @@ -342,11 +629,11 @@ pub fn process_alleles( let output = AlleleResult { trid: locus.id.clone(), genotype: dna.genotype, - denovo_coverage: dna.denovo_score, + denovo_coverage: dna.denovo_coverage, allele_coverage: dna.allele_coverage, - allele_ratio: dna.denovo_score as f64 / dna.allele_coverage as f64, + allele_ratio: dna.denovo_coverage as f64 / dna.allele_coverage as f64, child_coverage: dna.child_coverage, - child_ratio: dna.denovo_score as f64 / dna.child_coverage as f64, + child_ratio: dna.denovo_coverage as f64 / dna.child_coverage as f64, mean_diff_father: dna.mean_diff_father, mean_diff_mother: dna.mean_diff_mother, father_dropout_prob, @@ -368,42 +655,22 @@ pub fn process_alleles( .map(|a| a.to_string()) .collect::>() .join(","), + father_dropout: father_alleles + .get_naive_dropout(&locus, &handle.father.karyotype) + .to_string(), + mother_dropout: mother_alleles + .get_naive_dropout(&locus, &handle.mother.karyotype) + .to_string(), + child_dropout: child_alleles + .get_naive_dropout(&locus, &handle.child.karyotype) + .to_string(), index: dna.index, father_motif_counts: father_motifs.clone(), mother_motif_counts: mother_motifs.clone(), child_motif_counts: child_motifs.clone(), - maxlh: max_lhs[i], + // maxlh: max_lhs[i], }; out_vec.push(output); } Ok(out_vec) } - -// #[cfg(test)] -// mod tests { -// use super::*; - -// #[test] -// fn test_is_homozygous() { -// let mut header = Header::new(); -// let header_contig_line = r#"##contig="#; -// header.push_record(header_contig_line.as_bytes()); -// let header_gt_line = r#"##FORMAT="#; -// header.push_record(header_gt_line.as_bytes()); -// header.push_sample("test_sample".as_bytes()); -// let vcf = Writer::from_stdout(&header, true, Format::Vcf).unwrap(); -// let mut record = vcf.empty_record(); - -// let alleles = &[GenotypeAllele::Unphased(0), GenotypeAllele::Phased(0)]; -// record.push_genotypes(alleles).unwrap(); -// let genotypes = record.genotypes().unwrap().get(0); -// // assert!(is_homozygous(&genotypes)); - -// record.clear(); - -// let alleles = &[GenotypeAllele::Unphased(2), GenotypeAllele::Phased(1)]; -// record.push_genotypes(alleles).unwrap(); -// let genotypes = record.genotypes().unwrap().get(0); -// // assert!(!is_homozygous(&genotypes)); -// } -// } diff --git a/src/cli.rs b/src/cli.rs index cdcb922..b0670aa 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -1,4 +1,4 @@ -use crate::util::Result; +use crate::util::{AlnScoring, Result}; use anyhow::anyhow; use chrono::Datelike; use clap::{ArgAction, ArgGroup, Parser, Subcommand}; @@ -10,6 +10,13 @@ use std::{ path::{Path, PathBuf}, }; +/// Full version string including the crate version and git description. +/// +/// This version string is used in the command-line interface to provide detailed version information. +/// It includes the crate version from Cargo.toml and additional build information such as the git commit hash. +/// # Examples +/// * `0.1.0-1ba958a-dirty` - while on a dirty branch +/// * `0.1.0-1ba958a` - with a fresh commit pub static FULL_VERSION: Lazy = Lazy::new(|| { format!( "{}-{}", @@ -130,8 +137,32 @@ pub struct TrioArgs { #[clap(default_value = "1.0")] #[arg(value_parser = parse_quantile)] pub parent_quantile: f64, + + #[clap(help_heading("Advanced"))] + #[clap(long = "aln-scoring")] + #[clap(value_name = "SCORING")] + #[clap( + help = "Scoring function for 2-piece gap affine alignment (non-negative values): mismatch,gap_opening1,gap_extension1,gap_opening2,gap_extension2" + )] + #[clap(default_value = "8,4,2,24,1")] + #[arg(value_parser = scoring_from_string)] + pub aln_scoring: AlnScoring, + + #[clap(help_heading("Advanced"))] + #[clap(long = "partition-by-aln")] + #[clap(help = "Within-sample partitioning using alignment rather than the TRGT AL field")] + #[clap(value_name = "ALN")] + pub partition_by_alignment: bool, } +/// Initializes the verbosity level for logging based on the command-line arguments. +/// +/// Sets up the logger with a specific verbosity level that is determined +/// by the number of occurrences of the `-v` or `--verbose` flag in the command-line arguments. +/// +/// # Arguments +/// +/// * `args` - A reference to the parsed command-line arguments. pub fn init_verbose(args: &Cli) { let filter_level: LevelFilter = match args.verbosity { 0 => LevelFilter::Info, @@ -163,6 +194,18 @@ pub fn init_verbose(args: &Cli) { .init(); } +/// Checks if the provided path prefix exists. +/// +/// Validates that the path prefix provided as an argument exists in the file system. +/// It is used to ensure that the file paths constructed using this prefix will be valid. +/// +/// # Arguments +/// +/// * `s` - A string slice representing the path prefix to check. +/// +/// # Returns +/// +/// Returns a `Result` which is Ok if the path prefix exists, or an Err with a descriptive message if not. fn check_prefix_path(s: &str) -> Result { let path = Path::new(s); if let Some(parent_dir) = path.parent() { @@ -173,21 +216,46 @@ fn check_prefix_path(s: &str) -> Result { Ok(s.to_string()) } +/// Validates that the provided string represents a valid number of threads. +/// +/// Checks if the string argument can be parsed into a non-zero positive integer +/// that represents the number of threads to use. It ensures that the number of threads is within +/// a valid range. +/// +/// # Arguments +/// +/// * `s` - A string slice representing the number of threads. +/// +/// # Returns +/// +/// Returns a `Result` which is Ok if the number is valid, or an Err with a descriptive message if not. fn threads_in_range(s: &str) -> Result { let thread: usize = s .parse::() .map_err(|_| anyhow!("`{}` is not a valid thread number", s))?; - if thread <= 0 { + if thread == 0 { return Err(anyhow!("Number of threads must be >= 1")); } Ok(thread) } +/// Parses a string into a floating-point number representing a quantile. +/// +/// Attempts to parse a string into a `f64` that represents a quantile value. +/// It validates that the value is within the range [0.0, 1.0]. +/// +/// # Arguments +/// +/// * `s` - A string slice representing the quantile to parse. +/// +/// # Returns +/// +/// Returns a `Result` which is Ok if the value is within the valid range, or an Err with a descriptive message if not. fn parse_quantile(s: &str) -> Result { let value = s .parse::() .map_err(|e| anyhow!("Could not parse float: {}", e))?; - if value < 0.0 || value > 1.0 { + if !(0.0..=1.0).contains(&value) { Err(anyhow!( "The value must be between 0.0 and 1.0, got: {}", value @@ -197,6 +265,18 @@ fn parse_quantile(s: &str) -> Result { } } +/// Checks if the provided file path exists. +/// +/// Validates that the file path provided as an argument exists in the file system. +/// It is used to ensure that the file paths provided for input files are valid before attempting to process them. +/// +/// # Arguments +/// +/// * `s` - A string slice representing the file path to check. +/// +/// # Returns +/// +/// Returns a `Result` which is Ok if the file exists, or an Err with a descriptive message if not. fn check_file_exists(s: &str) -> Result { let path = Path::new(s); if !path.exists() { @@ -204,3 +284,56 @@ fn check_file_exists(s: &str) -> Result { } Ok(path.to_path_buf()) } + +/// Parses a string of comma-separated alignment scoring parameters into an `AlnScoring` struct. +/// +/// # Arguments +/// +/// * `s` - A string slice containing the scoring parameters in the format "mismatch,gap_opening1,gap_extension1,gap_opening2,gap_extension2". +/// +/// # Returns +/// +/// Returns a `Result` which is Ok if the string is correctly formatted and contains valid values, +/// or an Err with a descriptive message if the input is invalid. +/// ``` +fn scoring_from_string(s: &str) -> Result { + const NUM_EXPECTED_VALUES: usize = 5; + let values: Vec = s.split(',').filter_map(|x| x.parse().ok()).collect(); + if values.len() != NUM_EXPECTED_VALUES { + return Err(anyhow!( + "Expected {} comma-separated integers values in scoring. Got {} -> {}", + NUM_EXPECTED_VALUES, + values.len(), + s + )); + } + + let (mismatch, gap_opening1, gap_extension1, gap_opening2, gap_extension2) = + (values[0], values[1], values[2], values[3], values[4]); + + if mismatch <= 0 + || gap_opening1 < 0 + || gap_extension1 <= 0 + || gap_opening2 < 0 + || gap_extension2 <= 0 + { + return Err(anyhow!( + "Invalid penalties. Got (mismatch={}, gap_opening1={}, gap_extension1={}, gap_opening2={}, +gap_extension2={}) -> (mismatch>0, gap_opening1>=0, gap_extension1>0, gap_opening2>=0, +gap_extension2>0)", + mismatch, + gap_opening1, + gap_extension1, + gap_opening2, + gap_extension2 + )); + } + + Ok(AlnScoring { + mismatch, + gap_opening1, + gap_extension1, + gap_opening2, + gap_extension2, + }) +} diff --git a/src/commands/trio.rs b/src/commands/trio.rs index a0d45b1..b048447 100644 --- a/src/commands/trio.rs +++ b/src/commands/trio.rs @@ -1,19 +1,19 @@ -use crate::aligner::{AlignmentScope, MemoryModel, WFAligner, WFAlignerGapAffine2Pieces}; use crate::{ + aligner::{AlignmentScope, MemoryModel, WFAligner, WFAlignerGapAffine2Pieces}, allele, cli::TrioArgs, handles, locus, - util::{self}, + util::{self, AlnScoring, Params}, }; -use anyhow::Result; +use anyhow::{anyhow, Result}; use csv::WriterBuilder; use log; use noodles::{ bed, fasta::{self, io::BufReadSeek}, }; -use rayon::prelude::*; -use rayon::ThreadPoolBuilder; +use once_cell::sync::OnceCell; +use rayon::{prelude::*, ThreadPoolBuilder}; use std::{ cell::RefCell, fs, @@ -23,16 +23,23 @@ use std::{ time::Instant, }; -thread_local! { - static ALIGNER: RefCell = RefCell::new(WFAlignerGapAffine2Pieces::new( - 8, - 4, - 2, - 24, - 1, +fn create_aligner_with_scoring() -> WFAligner { + let aln_scoring = ALN_SCORING.get().expect("AlnScoring not initialized"); + WFAlignerGapAffine2Pieces::create_aligner( + aln_scoring.mismatch, + aln_scoring.gap_opening1, + aln_scoring.gap_extension1, + aln_scoring.gap_opening2, + aln_scoring.gap_extension2, AlignmentScope::Alignment, - MemoryModel::MemoryLow - )); + MemoryModel::MemoryLow, + ) +} + +static ALN_SCORING: OnceCell = OnceCell::new(); + +thread_local! { + static ALIGNER: RefCell = RefCell::new(create_aligner_with_scoring()); } pub fn trio(args: TrioArgs) -> Result<()> { @@ -42,8 +49,20 @@ pub fn trio(args: TrioArgs) -> Result<()> { *crate::cli::FULL_VERSION ); let start_timer = Instant::now(); + + ALN_SCORING + .set(args.aln_scoring) + .map_err(|_| anyhow!("AlnScoring was already set"))?; + let clip_len = if args.no_clip_aln { 0 } else { args.flank_len }; + let params = Params { + clip_len, + parent_quantile: args.parent_quantile, + partition_by_alignment: args.partition_by_alignment, + }; + let params_arc = Arc::new(params); + let handles = handles::Handles::new(&args.mother_prefix, &args.father_prefix, &args.child_prefix) .unwrap_or_else(|err| util::handle_error_and_exit(err)); @@ -74,13 +93,9 @@ pub fn trio(args: TrioArgs) -> Result<()> { ALIGNER.with(|aligner| { let mut aligner = aligner.borrow_mut(); - if let Ok(result) = allele::process_alleles( - &locus, - handles_arc, - clip_len, - args.parent_quantile, - &mut aligner, - ) { + if let Ok(result) = + allele::process_alleles(&locus, handles_arc, ¶ms_arc, &mut aligner) + { for row in result { if let Err(err) = csv_wtr.serialize(row) { log::error!("Failed to write record: {}", err); @@ -111,7 +126,7 @@ pub fn trio(args: TrioArgs) -> Result<()> { } }); - log::info!("Starting job pool with {} threads...", args.num_threads); + log::info!("Starting job pool with {} thread(s)...", args.num_threads); let pool = ThreadPoolBuilder::new() .num_threads(args.num_threads) .build() @@ -127,8 +142,7 @@ pub fn trio(args: TrioArgs) -> Result<()> { if let Ok(result) = allele::process_alleles( &locus, handles_arc.clone(), - clip_len, - args.parent_quantile, + ¶ms_arc.clone(), &mut aligner, ) { s.send(result).unwrap(); diff --git a/src/denovo.rs b/src/denovo.rs index 6c9dc52..07fca96 100644 --- a/src/denovo.rs +++ b/src/denovo.rs @@ -1,23 +1,45 @@ -use crate::aligner::WFAligner; -use crate::allele::Allele; +//! Provides functionality for assessing de novo allele events. +//! +//! This module contains structures and functions for identifying and classifying de novo +//! mutations in genomic data. It includes methods for comparing allele sequences, determining +//! the origin of alleles, and calculating de novo scores. + +use crate::{ + aligner::{AlignmentStatus, WFAligner}, + allele::{Allele, AlleleSet}, + math, + util::Params, +}; use ndarray::{Array2, ArrayBase, Dim, OwnedRepr}; use serde::Serialize; use std::{cmp::Ordering, fmt}; +/// Represents a de novo allele event with associated scoring and classification information. #[derive(Debug)] pub struct DenovoAllele { + /// TRGT genotype index of the allele. pub genotype: usize, - pub denovo_score: usize, + /// The number of child reads with de novo signal relative to the parental alleles + pub denovo_coverage: usize, + /// The number of reads covering this allele in the child. pub child_coverage: usize, + /// The number of reads covering this allele. pub allele_coverage: usize, + /// Average difference in alignment scores compared to the father's alleles. pub mean_diff_father: f32, + /// Average difference in alignment scores compared to the mother's alleles. pub mean_diff_mother: f32, + /// Inferred origin of the allele (father or mother). pub allele_origin: AlleleOrigin, + /// Status indicating whether the allele is de novo and its type. pub denovo_status: DenovoStatus, + /// TRGT count of the motif present in the allele. pub motif_count: String, + /// Index used to identify the allele. pub index: usize, } +/// Enumerates the types of de novo events that can occur. #[derive(Debug, PartialEq, Clone, Serialize)] pub enum DenovoType { Expansion, @@ -26,8 +48,10 @@ pub enum DenovoType { Unclear, } +/// Represents the status of a de novo event, indicating whether it is de novo and its type. #[derive(Debug, PartialEq, Clone, Serialize)] pub enum DenovoStatus { + /// Indicates a de novo event with a specified type. Denovo(DenovoType), NotDenovo, } @@ -52,6 +76,7 @@ impl std::fmt::Display for DenovoStatus { } } +/// Represents the number of alleles inherited from a parent. #[derive(Debug, Clone, PartialEq, Serialize)] pub enum AlleleNum { One, @@ -59,6 +84,7 @@ pub enum AlleleNum { Unclear, } +/// Represents the origin of an allele, specifying which parent it was inherited from. #[derive(Debug, PartialEq, Clone, Serialize)] pub enum AlleleOrigin { Father { allele: AlleleNum }, @@ -124,27 +150,47 @@ static COMBS_2D: [[(usize, usize); 2]; 8] = [ [(3, 0), (1, 1)], ]; +/// Assesses de novo alleles by comparing child alleles to parental alleles. +/// +/// Calculates de novo coverage and determines the origin and type of potential +/// de novo events. +/// +/// # Arguments +/// +/// * `mother_gts` - A slice of alleles from the mother. +/// * `father_gts` - A slice of alleles from the father. +/// * `child_gts` - A slice of alleles from the child. +/// * `clip_len` - The length of the clipping to be applied to alignments. +/// * `parent_quantile` - The quantile used for parental allele frequency calculations. +/// * `aligner` - A mutable reference to the `WFAligner` for performing alignments. +/// +/// # Returns +/// +/// An iterator over `DenovoAllele` instances with updated de novo information. pub fn assess_denovo<'a>( - mother_gts: &'a [Allele], - father_gts: &'a [Allele], - child_gts: &'a [Allele], - clip_len: usize, - parent_quantile: f64, + mother_gts: &'a AlleleSet, + father_gts: &'a AlleleSet, + child_gts: &'a AlleleSet, + params: &Params, aligner: &mut WFAligner, ) -> impl Iterator + 'a { let mut matrix = Array2::from_elem((4, 2), f64::MIN); let mut dnrs = Vec::with_capacity(child_gts.len()); for (index, denovo_allele) in child_gts.iter().enumerate() { - let mother_align_scores = align(mother_gts, &denovo_allele.seq, clip_len, aligner); - let father_align_scores = align(father_gts, &denovo_allele.seq, clip_len, aligner); - let child_align_scores = align(child_gts, &denovo_allele.seq, clip_len, aligner); + let mother_align_scores = + align_alleleset(mother_gts, &denovo_allele.seq, params.clip_len, aligner); + let father_align_scores = + align_alleleset(father_gts, &denovo_allele.seq, params.clip_len, aligner); + + let child_align_scores = + align_allele(denovo_allele, &denovo_allele.seq, params.clip_len, aligner); let (denovo_coverage, mean_diff_father, mean_diff_mother) = get_denovo_coverage( &mother_align_scores, &father_align_scores, &child_align_scores, - parent_quantile, + params.parent_quantile, ); update_mean_matrix( @@ -156,8 +202,8 @@ pub fn assess_denovo<'a>( dnrs.push(DenovoAllele { genotype: denovo_allele.genotype, - denovo_score: denovo_coverage, - child_coverage: child_align_scores.iter().map(|vec| vec.len()).sum(), + denovo_coverage, + child_coverage: child_gts.iter().map(|vec| vec.read_aligns.len()).sum(), allele_coverage: denovo_allele.read_aligns.len(), mean_diff_mother, mean_diff_father, @@ -167,8 +213,9 @@ pub fn assess_denovo<'a>( index: denovo_allele.index, }); } + log::trace!("Mean matrix={:?}", matrix); - // Get best allele combinations + // For each valid allele inheritance pattern calculate the scores let mut combs_score: Vec<(f64, [(usize, usize); 2])> = Vec::new(); if child_gts.len() > 1 { for c in COMBS_2D.iter() { @@ -179,21 +226,22 @@ pub fn assess_denovo<'a>( combs_score.push((matrix[[c[0].0, c[0].1]], *c)); } } + // Sort the scores (higher more similar) combs_score.sort_unstable_by(|a, b| b.0.partial_cmp(&a.0).unwrap()); - - // Update allele origin and de novo type + // Absolute difference between top two assignments let comb_diff = (combs_score[0].0 - combs_score[1].0).abs(); + log::trace!("comb_diff: {}", comb_diff); + // Update allele origin and de novo type let comb_0 = combs_score[0].1; for (index, denovo_allele) in child_gts.iter().enumerate() { let dna = &mut dnrs[index]; - // TODO: Alignment based: while we might not know the allele origin, may still figure out parental origin if comb_diff < 1.0 { dna.allele_origin = AlleleOrigin::Unclear; } else { dna.allele_origin = AlleleOrigin::new(comb_0[index].0).unwrap(); } - dna.denovo_status = match dna.denovo_score { + dna.denovo_status = match dna.denovo_coverage { 0 => DenovoStatus::NotDenovo, _ => DenovoStatus::Denovo(get_denovo_type( mother_gts, @@ -206,12 +254,26 @@ pub fn assess_denovo<'a>( dnrs.into_iter().filter_map(Some) } +/// Updates the mean matrix with alignment scores for parental alleles. +/// +/// Calculates the mean alignment scores for each parent and updates the matrix +/// used to determine the most likely allele origin. +/// +/// # Arguments +/// +/// * `matrix` - A mutable reference to the mean matrix. +/// * `index` - The index of the current allele being assessed. +/// * `mother_align_scores` - A slice of alignment scores for the mother's alleles. +/// * `father_align_scores` - A slice of alignment scores for the father's alleles. pub fn update_mean_matrix( matrix: &mut ArrayBase, Dim<[usize; 2]>>, index: usize, mother_align_scores: &[Vec], father_align_scores: &[Vec], ) { + // Calculates the average of each non-empty vector in a slice of integer vectors, + // and pairs it with the vector's index. For empty vectors, it pairs negative infinity with their index. + // Returns a vector of these pairs (average or negative infinity, index). let get_mean = |aligns: &[Vec]| -> Vec<(f64, usize)> { aligns .iter() @@ -235,7 +297,25 @@ pub fn update_mean_matrix( matrix[[3, index]] = father_mean.get(1).map_or(f64::MIN, |v| v.0); } -fn compare_seq_lengths(gts: &[Allele], allele: &AlleleNum, child_seq: &[u8]) -> Option { +/// Compares the lengths of allele sequences to determine the type of de novo event. +/// +/// Compares the lengths of the sequences of the parental alleles to the child's allele +/// to classify the de novo event as an expansion, contraction, or substitution. +/// +/// # Arguments +/// +/// * `gts`: A slice of alleles from a parent. +/// * `allele`: The number of alleles inherited from the parent. +/// * `child_seq`: The sequence of the child's allele. +/// +/// # Returns +/// +/// Returns an `Option` indicating the type of de novo event, if determinable. +fn compare_seq_lengths( + gts: &AlleleSet, + allele: &AlleleNum, + child_seq: &[u8], +) -> Option { match allele { AlleleNum::One => compare_sequences(>s[0].seq, child_seq), AlleleNum::Two => compare_sequences(>s[1].seq, child_seq), @@ -243,6 +323,19 @@ fn compare_seq_lengths(gts: &[Allele], allele: &AlleleNum, child_seq: &[u8]) -> } } +/// Compares two sequences to determine the type of de novo event based on length differences. +/// +/// Compares the length of a parental allele sequence to the child's allele sequence +/// to classify the de novo event as an expansion, contraction, or substitution. +/// +/// # Arguments +/// +/// * `seq`: The sequence of the parental allele. +/// * `child_seq`: The sequence of the child's allele. +/// +/// # Returns +/// +/// Returns an `Option` indicating the type of de novo event, if determinable. fn compare_sequences(seq: &[u8], child_seq: &[u8]) -> Option { match seq.len().cmp(&child_seq.len()) { Ordering::Less => Some(DenovoType::Expansion), @@ -251,9 +344,24 @@ fn compare_sequences(seq: &[u8], child_seq: &[u8]) -> Option { } } +/// Determines the type of de novo event based on allele sequences. +/// +/// Compare the lengths of the child's allele sequence to the parental allele +/// sequences to classify the de novo event as an expansion, contraction, substitution, or unclear. +/// +/// # Arguments +/// +/// * `mother_gts` - A slice of alleles from the mother. +/// * `father_gts` - A slice of alleles from the father. +/// * `allele_origin` - A reference to the `AlleleOrigin` indicating the parental origin. +/// * `child_seq` - A slice of the child's allele sequence. +/// +/// # Returns +/// +/// The `DenovoType` representing the type of de novo event. fn get_denovo_type( - mother_gts: &[Allele], - father_gts: &[Allele], + mother_gts: &AlleleSet, + father_gts: &AlleleSet, allele_origin: &AlleleOrigin, child_seq: &[u8], ) -> DenovoType { @@ -268,21 +376,72 @@ fn get_denovo_type( } } -fn align(gts: &[Allele], target: &[u8], clip_len: usize, aligner: &mut WFAligner) -> Vec> { +/// Aligns reads from alleles to a target sequence and calculates alignment scores. +/// +/// This function performs end-to-end alignments of reads from alleles to a given target sequence +/// and returns the alignment scores. +/// +/// # Arguments +/// +/// * `gts` - A slice of alleles containing the reads to align. +/// * `target` - A slice of the target sequence to align to. +/// * `clip_len` - The length of the clipping to be applied to alignments. +/// * `aligner` - A mutable reference to the `WFAligner` for performing alignments. +/// +/// # Returns +/// +/// A vector of vectors containing alignment scores for each allele. +fn align_alleleset( + gts: &AlleleSet, + target: &[u8], + clip_len: usize, + aligner: &mut WFAligner, +) -> Vec> { let mut align_scores = vec![vec![]; gts.len()]; for (i, allele) in gts.iter().enumerate() { for (read, _align) in &allele.read_aligns { - let _status = aligner.align_end_to_end(&read.bases, target); - align_scores[i].push(aligner.cigar_score_clipped(clip_len)); + if let AlignmentStatus::StatusAlgCompleted = + aligner.align_end_to_end(&read.bases, target) + { + align_scores[i].push(aligner.cigar_score_clipped(clip_len)); + } } } align_scores } -fn get_parental_count_diff(top_parent_score: f64, child_aligns: &[Vec]) -> (usize, f32) { +fn align_allele( + allele: &Allele, + target: &[u8], + clip_len: usize, + aligner: &mut WFAligner, +) -> Vec { + let mut align_scores = vec![]; + for (read, _align) in &allele.read_aligns { + if let AlignmentStatus::StatusAlgCompleted = aligner.align_end_to_end(&read.bases, target) { + align_scores.push(aligner.cigar_score_clipped(clip_len)); + } + } + align_scores +} + +/// Calculates the count and mean difference of child alignments that exceed the top parental score. +/// +/// Determines the number of child alignments with scores higher than the top score +/// of a parent and calculates the mean difference of these scores from the top parental score. +/// +/// # Arguments +/// +/// * `top_parent_score`: The highest alignment score of a parent. +/// * `child_aligns`: A slice of vectors containing alignment scores for the child's alleles. +/// +/// # Returns +/// +/// Returns a tuple containing the count of alignments exceeding the top parental score and the mean +/// difference of these alignments from the top score. +fn get_parental_count_diff(top_parent_score: f64, child_aligns: &[i32]) -> (usize, f32) { let (count, sum) = child_aligns .iter() - .flatten() .map(|&a| a as f64) .filter(|a| a > &top_parent_score) .fold((0, 0.0), |(count, sum), a| (count + 1, sum + a)); @@ -294,38 +453,56 @@ fn get_parental_count_diff(top_parent_score: f64, child_aligns: &[Vec]) -> (count, mean_diff) } -fn get_score_quantile(xs: &mut [f64], q: f64) -> Option { - if xs.is_empty() { - return None; - } - xs.sort_by(|a, b| a.partial_cmp(b).unwrap_or(std::cmp::Ordering::Equal)); - - let index = q * (xs.len() as f64 - 1.0); - let lower_index = index.floor() as usize; - let upper_index = lower_index + 1; - let fraction = index - lower_index as f64; - - if upper_index >= xs.len() { - return Some(xs[xs.len() - 1]); - } - - Some(xs[lower_index] + (xs[upper_index] - xs[lower_index]) * fraction) -} - +/// Determines the top alignment score among parental alleles at a given quantile. +/// +/// Finds the highest alignment score at a specified quantile across all parental +/// alleles. It is used to establish a threshold for comparing child alignment scores. +/// +/// # Arguments +/// +/// * `align_scores`: A slice of vectors containing alignment scores for parental alleles. +/// * `quantile`: The quantile used to determine the top score. +/// +/// # Returns +/// +/// Returns an `Option` representing the top alignment score at the given quantile, if scores are available. fn get_top_parent_score(align_scores: &[Vec], quantile: f64) -> Option { align_scores .iter() .filter_map(|scores| { let mut scores_f64: Vec = scores.iter().map(|&x| x as f64).collect(); - get_score_quantile(&mut scores_f64, quantile) + let quantile_score = math::quantile(&mut scores_f64, quantile); + log::trace!( + "Quantile score for {:?} at quantile {}: {}", + scores_f64, + quantile, + quantile_score.unwrap_or_default() + ); + quantile_score }) .max_by(|a, b| a.partial_cmp(b).unwrap_or(std::cmp::Ordering::Equal)) } +/// Calculates the de novo coverage and mean difference from parental alignment scores. +/// +/// Determines the number of child alignments that exceed the top parental alignment +/// scores and calculates the mean difference in scores. +/// +/// # Arguments +/// +/// * `mother_align_scores` - A slice of alignment scores for the mother's alleles. +/// * `father_align_scores` - A slice of alignment scores for the father's alleles. +/// * `child_align_scores` - A slice of alignment scores for the child's alleles. +/// * `parent_quantile` - The quantile used for parental allele frequency calculations. +/// +/// # Returns +/// +/// A tuple containing the de novo coverage, mean difference from the father's scores, and mean +/// difference from the mother's scores. fn get_denovo_coverage( mother_align_scores: &[Vec], father_align_scores: &[Vec], - child_align_scores: &[Vec], + child_align_scores: &[i32], parent_quantile: f64, ) -> (usize, f32, f32) { let top_mother_score = get_top_parent_score(mother_align_scores, parent_quantile).unwrap(); @@ -347,9 +524,9 @@ fn get_denovo_coverage( #[cfg(test)] mod tests { - use crate::read::ReadInfoBuilder; - use super::*; + use crate::allele::Allele; + use crate::read::ReadInfoBuilder; #[test] fn test_parent_origin_matrix_1() { @@ -392,7 +569,7 @@ mod tests { let top_parent_score = -8.0; let child_aligns = vec![vec![-30, -20, -30], vec![-6, 3, 0]]; assert_eq!( - get_parental_count_diff(top_parent_score, &child_aligns), + get_parental_count_diff(top_parent_score, &child_aligns[1]), (3, 7.0) ); } @@ -403,7 +580,18 @@ mod tests { let father_aligns = vec![vec![-8, -8, -12], vec![-8, -8, -20]]; let child_aligns = vec![vec![-30, -20, -30], vec![-6, 0, 0]]; assert_eq!( - get_denovo_coverage(&mother_aligns, &father_aligns, &child_aligns, 1.0), + get_denovo_coverage(&mother_aligns, &father_aligns, &child_aligns[1], 1.0), + (3, 6.0, 10.0) + ); + } + + #[test] + fn test_get_denovo_coverage_single_allele() { + let mother_aligns = vec![vec![-24, -24, -24], vec![-24, -12, -24]]; + let father_aligns = vec![vec![-8, -8, -12], vec![-8, -8, -20]]; + let child_aligns = vec![vec![-30, 0, 0], vec![-6, 0, 0]]; + assert_eq!( + get_denovo_coverage(&mother_aligns, &father_aligns, &child_aligns[1], 1.0), (3, 6.0, 10.0) ); } @@ -432,6 +620,10 @@ mod tests { index: 1, }, ]; + let gts = AlleleSet { + alleles: gts, + hp_counts: [0; 3], + }; let allele = AlleleNum::One; let child_seq = b"ATCGATAT".to_vec(); assert_eq!( @@ -464,6 +656,10 @@ mod tests { index: 1, }, ]; + let gts = AlleleSet { + alleles: gts, + hp_counts: [0; 3], + }; let allele = AlleleNum::One; let child_seq = b"ATATAT".to_vec(); assert_eq!( @@ -496,6 +692,10 @@ mod tests { index: 1, }, ]; + let gts = AlleleSet { + alleles: gts, + hp_counts: [0; 3], + }; let allele = AlleleNum::Two; let child_seq = b"ATATATATAT".to_vec(); assert_eq!( diff --git a/src/handles.rs b/src/handles.rs index eb221bd..01f28ce 100644 --- a/src/handles.rs +++ b/src/handles.rs @@ -1,3 +1,8 @@ +//! Handles module for managing file handles and providing access to BAM and VCF files. +//! +//! This module defines structures and functions to manage file handles for BAM and VCF files, +//! allowing for concurrent access and operations on genomic data. + use crate::util::{self, Result}; use anyhow::anyhow; use noodles::{bam, bgzf::Reader, sam, vcf}; @@ -7,6 +12,16 @@ use std::{ sync::{Arc, Mutex}, }; +/// Builds file paths for BAM and VCF files based on a given prefix. +/// +/// # Arguments +/// +/// * `prefix` - The prefix string used to construct file paths. +/// +/// # Returns +/// +/// A result containing a vector of `PathBuf` with the constructed file paths if successful, +/// or an error if the paths do not exist. pub fn build_paths(prefix: &str) -> Result> { let mut paths = Vec::new(); for ext in &["spanning.sorted.bam", "sorted.vcf.gz"] { @@ -21,14 +36,33 @@ pub fn build_paths(prefix: &str) -> Result> { Ok(paths) } +/// A collection of file handles for a trio of family members. +/// +/// This struct contains `SubHandle` instances for the mother, father, and child, +/// providing access to their respective BAM and VCF files. #[derive(Clone)] pub struct Handles { + /// The file handle for the mother's genomic data. pub mother: SubHandle, + /// The file handle for the father's genomic data. pub father: SubHandle, + /// The file handle for the child's genomic data. pub child: SubHandle, } +/// Implements the creation of `Handles` instances. impl Handles { + /// Creates a new `Handles` instance for a trio of family members. + /// + /// # Arguments + /// + /// * `mother_prefix` - The file prefix for the mother's genomic data. + /// * `father_prefix` - The file prefix for the father's genomic data. + /// * `child_prefix` - The file prefix for the child's genomic data. + /// + /// # Returns + /// + /// A result containing the new `Handles` instance if successful, or an error if any file handle cannot be created. pub fn new(mother_prefix: &str, father_prefix: &str, child_prefix: &str) -> Result { Ok(Handles { mother: SubHandle::new(mother_prefix)?, @@ -38,15 +72,90 @@ impl Handles { } } +/// A sub-handle for managing access to a single family member's BAM and VCF files. +/// +/// This struct contains file handles and headers for both BAM and VCF files, +/// allowing for operations on genomic data. #[derive(Clone)] pub struct SubHandle { + /// The indexed VCF reader wrapped in a thread-safe `Arc>`. pub vcf: Arc>>, + /// The VCF header information. pub vcf_header: Arc, + /// The indexed BAM reader wrapped in a thread-safe `Arc>`. pub bam: Arc>>>, + /// The BAM header information. pub bam_header: Arc, + /// Karyotype string extracted from TRGT BAM (TEMP) + pub karyotype: Karyotype, } +fn extract_karyotype(input: &str) -> Karyotype { + const KARYOTYPE_PREFIX: &str = "--karyotype "; + let karyotype_string = input + .find(KARYOTYPE_PREFIX) + .and_then(|start| { + let remaining = &input[start + KARYOTYPE_PREFIX.len()..]; + remaining.split_whitespace().next() + }) + .unwrap_or("XY") + .to_string(); + Karyotype::new(&karyotype_string) +} + +#[derive(Debug, PartialEq, Clone)] +pub struct Karyotype { + ploidy: PloidyInfo, +} + +#[derive(Debug, PartialEq, Clone)] +enum PloidyInfo { + PresetXX, + PresetXY, +} + +#[derive(Debug, PartialEq, Clone, Copy)] +pub enum Ploidy { + Zero, + One, + Two, +} + +impl Karyotype { + pub fn new(encoding: &str) -> Self { + let ploidy = match encoding { + "XX" => PloidyInfo::PresetXX, + "XY" => PloidyInfo::PresetXY, + _ => PloidyInfo::PresetXY, + }; + Self { ploidy } + } + + pub fn get_ploidy(&self, chrom: &str) -> Result { + match &self.ploidy { + PloidyInfo::PresetXX => match chrom { + "Y" | "chrY" => Ok(Ploidy::Zero), + _ => Ok(Ploidy::Two), + }, + PloidyInfo::PresetXY => match chrom { + "X" | "chrX" | "Y" | "chrY" => Ok(Ploidy::One), + _ => Ok(Ploidy::Two), + }, + } + } +} + +/// Implements the creation of `SubHandle` instances. impl SubHandle { + /// Creates a new `SubHandle` instance for a single family member. + /// + /// # Arguments + /// + /// * `prefix` - The file prefix for the family member's genomic data. + /// + /// # Returns + /// + /// A result containing the new `SubHandle` instance if successful, or an error if the file paths cannot be parsed or file handles cannot be created. pub fn new(prefix: &str) -> Result { let paths = build_paths(prefix)?; let paths_slice = paths.as_slice(); @@ -66,6 +175,14 @@ impl SubHandle { .read_header() .map_err(|e| anyhow!("Failed to read bam header: {}", e))?; + let karyotype = extract_karyotype( + &bam_header + .programs() + .get("trgt") + .and_then(|trgt| trgt.command_line()) + .unwrap_or("XY"), + ); + let bam = Arc::new(Mutex::new(bam)); let bam_header = Arc::new(bam_header); @@ -85,6 +202,7 @@ impl SubHandle { vcf_header, bam, bam_header, + karyotype, }) } } diff --git a/src/lib.rs b/src/lib.rs index a02f43c..2944b14 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,8 +5,8 @@ pub mod commands; pub mod denovo; pub mod handles; pub mod locus; +pub mod math; pub mod read; pub mod snp; -pub mod stats; pub mod util; pub mod wfa2; diff --git a/src/locus.rs b/src/locus.rs index ec69cac..2b61dbc 100644 --- a/src/locus.rs +++ b/src/locus.rs @@ -1,3 +1,5 @@ +//! Defines the `Locus` struct and associated functions for handling genomic loci. +//! use crate::util::Result; use anyhow::{anyhow, Context}; use noodles::{ @@ -11,16 +13,36 @@ use std::{ io::BufReader, }; +/// Represents a genomic locus with its associated information. +/// +/// A `Locus` contains the identifier, structure, motifs, and flanking sequences +/// of a genomic region, as well as the region itself. #[derive(Debug, PartialEq)] pub struct Locus { + /// A unique identifier for the locus. pub id: String, + /// The structure of the locus. pub struc: String, + /// A list of motifs associated with the locus. pub motifs: Vec, + /// The sequence of the left flanking region. pub left_flank: Vec, + /// The sequence of the right flanking region. pub right_flank: Vec, + /// The genomic region of the locus. pub region: Region, } +/// Decodes a single info field from a BED file into a name-value pair. +/// +/// # Arguments +/// +/// * `encoding` - A string slice representing the encoded info field. +/// +/// # Returns +/// +/// A result containing a tuple with the name and value of the info field if successful, +/// or an error if the field cannot be decoded. fn decode_info_field(encoding: &str) -> Result<(&str, &str)> { let mut name_and_value = encoding.splitn(2, '='); let name = name_and_value @@ -32,6 +54,16 @@ fn decode_info_field(encoding: &str) -> Result<(&str, &str)> { Ok((name, value)) } +/// Decodes multiple info fields from a BED file into a hashmap. +/// +/// # Arguments +/// +/// * `info_fields` - A string slice representing the encoded info fields. +/// +/// # Returns +/// +/// A result containing a hashmap with the names and values of the info fields if successful, +/// or an error if any field cannot be decoded or if there are duplicate fields. fn decode_fields(info_fields: &str) -> Result> { let mut fields = HashMap::new(); for field_encoding in info_fields.split(';') { @@ -43,7 +75,21 @@ fn decode_fields(info_fields: &str) -> Result> { Ok(fields) } +/// Represents a genomic locus with associated information. impl Locus { + /// Creates a new `Locus` instance from a BED record and genome data. + /// + /// # Arguments + /// + /// * `genome` - A mutable reference to an indexed FASTA reader. + /// * `chrom_lookup` - A reference to a set containing chromosome names. + /// * `line` - A reference to a BED record. + /// * `flank_len` - The length of the flanking sequences to retrieve. + /// + /// # Returns + /// + /// A result containing the new `Locus` instance if successful, or an error if the + /// chromosome is not found, required fields are missing, or flanks cannot be retrieved. pub fn new( genome: &mut fasta::IndexedReader>, chrom_lookup: &HashSet, @@ -93,6 +139,19 @@ impl Locus { } } +/// Retrieves a specific locus by its ID from a BED file using a genome reader. +/// +/// # Arguments +/// +/// * `genome_reader` - A mutable reference to an indexed FASTA reader. +/// * `catalog_reader` - A mutable reference to a BED reader. +/// * `tr_id` - The ID of the target repeat. +/// * `flank_len` - The length of the flanking sequences to retrieve. +/// +/// # Returns +/// +/// A result containing the `Locus` instance if found, or an error if the locus with the +/// specified ID cannot be found or processed. pub fn get_locus( genome_reader: &mut fasta::IndexedReader>, catalog_reader: &mut bed::Reader>, @@ -117,6 +176,18 @@ pub fn get_locus( Err(anyhow!("Unable to find locus {tr_id}")) } +/// Returns an iterator over all loci in a BED file using a genome reader. +/// +/// # Arguments +/// +/// * `genome_reader` - A mutable reference to an indexed FASTA reader. +/// * `catalog_reader` - A mutable reference to a BED reader. +/// * `flank_len` - The length of the flanking sequences to retrieve for each locus. +/// +/// # Returns +/// +/// An iterator that yields results containing `Locus` instances or errors encountered +/// during processing. pub fn get_loci<'a>( genome_reader: &'a mut fasta::IndexedReader>, catalog_reader: &'a mut bed::Reader>, @@ -132,28 +203,39 @@ pub fn get_loci<'a>( catalog_reader .records::<3>() .enumerate() - .filter_map(move |(line_number, result_line)| match result_line { - Ok(line) => Some(Ok((line, line_number))), - Err(err) => Some(Err( - anyhow!(err).context(format!("Error at BED line {}", line_number + 1)) - )), - }) - .map(move |result| { - result.and_then(|(line, line_number)| { - Locus::new(genome_reader, &chrom_lookup, &line, flank_len) - .with_context(|| format!("Error processing BED line {}", line_number + 1)) - }) + .map(move |(line_number, result_line)| { + result_line + .map_err(|err| { + anyhow!(err).context(format!("Error at BED line {}", line_number + 1)) + }) + .and_then(|line| { + Locus::new(genome_reader, &chrom_lookup, &line, flank_len) + .with_context(|| format!("Error processing BED line {}", line_number + 1)) + }) }) } +/// Retrieves a flank sequence from the genome given a region and start/end positions. +/// +/// # Arguments +/// +/// * `genome` - A mutable reference to an indexed FASTA reader. +/// * `region` - A reference to the region of interest. +/// * `start` - The start position of the flank. +/// * `end` - The end position of the flank. +/// +/// # Returns +/// +/// A result containing the flank sequence if successful, or an error if the sequence +/// cannot be extracted. fn get_flank( genome: &mut fasta::IndexedReader>, region: &Region, start: usize, end: usize, ) -> Result { - let start_pos = Position::try_from(start + 1).unwrap(); - let end_pos = Position::try_from(end).unwrap(); + let start_pos = Position::try_from(start + 1)?; + let end_pos = Position::try_from(end)?; let query_region = Region::new(region.name(), start_pos..=end_pos); match genome.query(&query_region) { Ok(seq) => Ok(seq.sequence().to_owned()), @@ -161,6 +243,18 @@ fn get_flank( } } +/// Retrieves both left and right flank sequences for a given region from the genome. +/// +/// # Arguments +/// +/// * `genome` - A mutable reference to an indexed FASTA reader. +/// * `region` - A reference to the region of interest. +/// * `flank_len` - The length of the flanking sequences to retrieve. +/// +/// # Returns +/// +/// A result containing a tuple with the left and right flank sequences if successful, +/// or an error if the sequences cannot be extracted. fn get_flanks( genome: &mut fasta::IndexedReader>, region: &Region, diff --git a/src/math.rs b/src/math.rs new file mode 100644 index 0000000..f8a243d --- /dev/null +++ b/src/math.rs @@ -0,0 +1,97 @@ +//! Statistical functions for analyzing allele data. +//! +//! This module provides functions to calculate various statistics related to alleles, +//! such as read counts, total reads, simple dropout probabilities, and allele frequencies. + +use crate::allele::AlleleSet; + +/// Calculates the number of reads for each allele. +/// +/// # Arguments +/// +/// * `alleles` - A slice of `Allele` instances to analyze. +/// +/// # Returns +/// +/// A vector containing the number of reads for each allele. +pub fn get_per_allele_reads(alleles: &AlleleSet) -> Vec { + alleles.iter().map(|a| a.read_aligns.len()).collect() +} + +/// Calculates the total number of reads across all alleles. +/// +/// # Arguments +/// +/// * `alleles` - A slice of `Allele` instances to analyze. +/// +/// # Returns +/// +/// The total number of reads across all alleles. +pub fn get_total_reads(alleles: &AlleleSet) -> usize { + get_per_allele_reads(alleles).iter().sum() +} + +/// Estimates the probability of (simple) dropout for a set of alleles. +/// +/// # Arguments +/// +/// * `alleles` - A slice of `Allele` instances to analyze. +/// +/// # Returns +/// +/// The estimated probability of dropout for the alleles. +pub fn get_dropout_prob(alleles: &AlleleSet) -> f64 { + assert!(!alleles.is_empty()); + let allele_frac: f64 = 0.5; + let num_reads = get_total_reads(alleles) as f64; + allele_frac.powf(num_reads) +} + +/// Calculates the frequency of each allele based on read counts. +/// +/// # Arguments +/// +/// * `alleles` - A slice of `Allele` instances to analyze. +/// +/// # Returns +/// +/// A vector containing the frequency of each allele. +pub fn get_allele_freqs(alleles: &AlleleSet) -> Vec { + let num_reads = get_total_reads(alleles) as f64; + let allele_freqs: Vec = alleles + .iter() + .map(|a| a.read_aligns.len() as f64 / num_reads) + .collect(); + allele_freqs +} + +/// Calculates the quantile value of a sorted list of scores. +/// +/// Computes the value at a given quantile in a list of scores. The list is sorted +/// and the quantile value is interpolated if necessary. +/// +/// # Arguments +/// +/// * `xs`: A mutable slice of scores. +/// * `q`: The quantile to compute (between 0 and 1). +/// +/// # Returns +/// +/// Returns an `Option` representing the quantile value, if the list is not empty. +pub fn quantile(xs: &mut [f64], q: f64) -> Option { + if xs.is_empty() { + return None; + } + xs.sort_by(|a, b| a.partial_cmp(b).unwrap_or(std::cmp::Ordering::Equal)); + + let index = q * (xs.len() as f64 - 1.0); + let lower_index = index.floor() as usize; + let upper_index = lower_index + 1; + let fraction = index - lower_index as f64; + + if upper_index >= xs.len() { + return Some(xs[xs.len() - 1]); + } + + Some(xs[lower_index] + (xs[upper_index] - xs[lower_index]) * fraction) +} diff --git a/src/read.rs b/src/read.rs index a14e103..70bf3bb 100644 --- a/src/read.rs +++ b/src/read.rs @@ -1,29 +1,50 @@ -use noodles::sam::alignment::Record; -use noodles::sam::record::data::field::value::Array; -use noodles::sam::record::data::field::{tag, Value}; -use once_cell::sync::Lazy; +//! Module for representing and building read information from alignment records. +//! +//! This module defines structures and functions for extracting and representing +//! various pieces of information from read alignment records, such as bases, +//! classification, and mismatch offsets -#[derive(Debug, PartialEq, Clone)] -pub struct FlankingReadInfo { - is_left_flank: bool, -} +use noodles::sam::{ + alignment::Record, + record::data::field::{tag, value::Array, Value}, +}; +use once_cell::sync::Lazy; +/// Represents a single read from an alignment record. #[derive(Debug, PartialEq, Clone)] pub struct ReadInfo { + /// The sequence of bases for the read. pub bases: Box<[u8]>, + /// The TRGT classification of the read. pub classification: Option, + /// HP tag + pub haplotype: Option, + /// The start offset of the read relative to the reference and the locus start position. pub start_offset: Option, + /// The end offset of the read relative to the reference and the locus end position. pub end_offset: Option, + /// A list of offsets where SNPs occur between the original HiFi read and the reference relative to the locus start and end positions. pub mismatch_offsets: Option>, - pub flank_info: Option, } +// Define custom tags for lookup in TRGT BAMlets static AL_KEY: Lazy = Lazy::new(|| "AL".parse().unwrap()); +static HP_KEY: Lazy = Lazy::new(|| "HP".parse().unwrap()); static MO_KEY: Lazy = Lazy::new(|| "MO".parse().unwrap()); static SO_KEY: Lazy = Lazy::new(|| "SO".parse().unwrap()); static EO_KEY: Lazy = Lazy::new(|| "EO".parse().unwrap()); +/// Constructs a `ReadInfo` from a SAM record. impl ReadInfo { + /// Creates a new `ReadInfo` instance from a given SAM record. + /// + /// # Arguments + /// + /// * `record` - The SAM record to extract read information from. + /// + /// # Returns + /// + /// A `ReadInfo` instance containing the extracted information. pub fn new(record: Record) -> Self { let bases = record .sequence() @@ -36,6 +57,12 @@ impl ReadInfo { let data = record.data(); let classification = data.get(&*AL_KEY).and_then(|value| match value { + Value::UInt8(v) => Some(*v), + Value::Int32(v) => Some(*v as u8), + _ => None, + }); + + let haplotype = data.get(&*HP_KEY).and_then(|value| match value { Value::UInt8(v) => Some(*v), _ => None, }); @@ -61,88 +88,164 @@ impl ReadInfo { Self { bases, classification, + haplotype, start_offset, end_offset, mismatch_offsets, - flank_info: None, } } } +/// Builder for constructing `ReadInfo` instances with optional fields. #[derive(Debug, PartialEq, Clone)] - pub struct ReadInfoBuilder { + /// The sequence of bases for the read. bases: Box<[u8]>, + /// The TRGT classification of the read. classification: Option, + /// HP tag + haplotype: Option, + /// The start offset of the read relative to the reference and the locus start position. start_offset: Option, + /// The end offset of the read relative to the reference and the locus end position. end_offset: Option, + /// A list of offsets where SNPs occur between the original HiFi read and the reference relative to the locus start and end positions. mismatch_offsets: Option>, - flank_info: Option, } +/// Provides an interface for building `ReadInfo` instances. impl ReadInfoBuilder { + /// Creates a new `ReadInfoBuilder` instance with default values. + /// + /// # Returns + /// + /// A new instance of `ReadInfoBuilder`. pub fn new() -> Self { Self { bases: Box::new([0u8; 10]), classification: Some(0), + haplotype: None, start_offset: Some(0), end_offset: Some(0), mismatch_offsets: Some(vec![0, 0, 0, 0, 0]), - flank_info: None, } } + /// Sets the bases for the `ReadInfo` being built. + /// + /// # Arguments + /// + /// * `bases` - A sequence of bases represented as a byte array. + /// + /// # Returns + /// + /// This method returns the builder itself. pub fn with_bases>>(mut self, bases: T) -> Self { self.bases = bases.into(); self } + /// Sets the classification for the `ReadInfo` being built. + /// + /// # Arguments + /// + /// * `classification` - An optional classification code as a byte. + /// + /// # Returns + /// + /// This method returns the builder itself. pub fn with_classification(mut self, classification: Option) -> Self { self.classification = classification; self } + /// Sets the haplotype for the `ReadInfo` being built. + /// + /// # Arguments + /// + /// * `haplotype` - An optional haplotype code as a byte. + /// + /// # Returns + /// + /// This method returns the builder itself. + pub fn with_haplotype(mut self, haplotype: Option) -> Self { + self.haplotype = haplotype; + self + } + + /// Sets the start offset for the `ReadInfo` being built. + /// + /// # Arguments + /// + /// * `start_offset` - An optional start offset as an integer. + /// + /// # Returns + /// + /// This method returns the builder itself. pub fn with_start_offset(mut self, start_offset: Option) -> Self { self.start_offset = start_offset; self } + /// Sets the end offset for the `ReadInfo` being built. + /// + /// # Arguments + /// + /// * `end_offset` - An optional end offset as an integer. + /// + /// # Returns + /// + /// This method returns the builder itself. pub fn with_end_offset(mut self, end_offset: Option) -> Self { self.end_offset = end_offset; self } + /// Sets the mismatch offsets for the `ReadInfo` being built. + /// + /// # Arguments + /// + /// * `mismatch_offsets` - An optional vector of mismatch offsets as integers. + /// + /// # Returns + /// + /// This method returns the builder itself. pub fn with_mismatch_offsets(mut self, mismatch_offsets: Option>) -> Self { self.mismatch_offsets = mismatch_offsets; self } - pub fn with_flank_info(mut self, flank_info: Option) -> Self { - self.flank_info = flank_info; - self - } - + /// Builds a `ReadInfo` instance from the builder. + /// + /// # Returns + /// + /// A result containing the `ReadInfo` instance if successful, or an error message if not. pub fn build(self) -> Result { Ok(ReadInfo { bases: self.bases, classification: self.classification, + haplotype: self.haplotype, start_offset: self.start_offset, end_offset: self.end_offset, mismatch_offsets: self.mismatch_offsets, - flank_info: self.flank_info, }) } } +/// Provides default values for building a `ReadInfo` instance. +/// +/// This implementation sets all optional fields to `None` and initializes `bases` +/// with a default value of 10 zeroed bytes. impl Default for ReadInfoBuilder { + /// Returns a `ReadInfoBuilder` instance with default values. fn default() -> Self { Self { bases: Box::new([0u8; 10]), classification: None, + haplotype: None, start_offset: None, end_offset: None, mismatch_offsets: None, - flank_info: None, } } } @@ -159,9 +262,6 @@ mod tests { .with_start_offset(Some(100)) .with_end_offset(Some(200)) .with_mismatch_offsets(Some(vec![1, 2, 3, 4, 5])) - .with_flank_info(Some(FlankingReadInfo { - is_left_flank: true, - })) .build() .unwrap(); @@ -173,12 +273,6 @@ mod tests { assert_eq!(dummy_read_info.start_offset, Some(100)); assert_eq!(dummy_read_info.end_offset, Some(200)); assert_eq!(dummy_read_info.mismatch_offsets, Some(vec![1, 2, 3, 4, 5])); - assert_eq!( - dummy_read_info.flank_info, - Some(FlankingReadInfo { - is_left_flank: true - }) - ); } #[test] @@ -193,6 +287,5 @@ mod tests { assert_eq!(default_read_info.start_offset, None); assert_eq!(default_read_info.end_offset, None); assert_eq!(default_read_info.mismatch_offsets, None); - assert_eq!(default_read_info.flank_info, None); } } diff --git a/src/snp.rs b/src/snp.rs index 26f0f5b..ea808be 100644 --- a/src/snp.rs +++ b/src/snp.rs @@ -1,7 +1,15 @@ -use crate::{allele::Allele, read::ReadInfo}; +//! SNP analysis module. +//! +//! This module provides functionality for analyzing SNPs within genomic data. +//! It includes structures and functions for representing family members, calculating +//! SNP similarities, and determining inheritance probabilities. + +use crate::{allele::AlleleSet, read::ReadInfo}; use ndarray::{s, Array2, ArrayView1, ArrayView2}; -use std::collections::{HashMap, HashSet}; -use std::iter; +use std::{ + collections::{HashMap, HashSet}, + iter, +}; #[cfg(not(test))] mod constants { @@ -15,6 +23,7 @@ mod constants { pub const MIN_SNP_FREQ: f64 = 0.2; } +/// Represents a family member in the context of SNP analysis. #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum FamilyMember { Father, @@ -32,94 +41,108 @@ impl FamilyMember { } } +/// Stores the offsets for SNP analysis for a family member. +/// +/// This struct is used to keep track of the start and end offsets within the SNP matrix, +/// as well as the offsets for each allele. #[derive(Debug, Clone, PartialEq, Default)] pub struct FamilyOffsets { + /// The start offset in the SNP matrix for this family member. pub start_offset: usize, + /// The end offset in the SNP matrix for this family member. pub end_offset: usize, + /// A vector of offsets for each allele of this family member. pub allele_offsets: Vec, } +/// Represents a matrix used for SNP analysis, encoding the presence or absence of SNPs. +/// +/// This matrix is used to compare SNP positions across family members and to calculate +/// inheritance probabilities. It uses a trinary encoding where `0` indicates absence, +/// `1` indicates presence, and `2` indicates missing information. #[derive(Debug, PartialEq)] pub struct TrinaryMatrix { + /// The underlying matrix storing SNP information. pub matrix: Array2, + /// Offsets for each family member within the matrix. pub offsets: [FamilyOffsets; 3], + /// A vector of mismatch offsets used for SNP analysis. pub mismatch_offsets: Vec, } +/// Provides methods for working with the `TrinaryMatrix`. impl TrinaryMatrix { - pub fn new( - child: &Vec, - father: &Vec, - mother: &Vec, - ) -> Option { - let mut n_reads = 0; - let mut all_pois: HashSet = HashSet::new(); + /// Creates a new `TrinaryMatrix` from the given alleles of a family trio. + /// + /// # Arguments + /// + /// * `child` - A slice of `Allele` instances for the child. + /// * `father` - A slice of `Allele` instances for the father. + /// * `mother` - A slice of `Allele` instances for the mother. + /// + /// # Returns + /// + /// An `Option` which is `None` if no SNPs are found, or contains the constructed matrix otherwise. + pub fn new(child: &AlleleSet, father: &AlleleSet, mother: &AlleleSet) -> Option { + let mut total_reads = 0; + let mut pois_set: HashSet = HashSet::new(); let family_members = [father, mother, child]; for family_member in &family_members { for allele in *family_member { - n_reads += allele.read_aligns.len(); - for (read, _) in &allele.read_aligns { - all_pois.extend(read.mismatch_offsets.as_ref().unwrap()); - } + total_reads += allele.read_aligns.len(); + allele + .read_aligns + .iter() + .filter_map(|(read, _)| read.mismatch_offsets.as_ref()) + .for_each(|mismatches| { + pois_set.extend(mismatches); + }); } } - if all_pois.is_empty() { + if pois_set.is_empty() { return None; } - let mut all_pois: Vec = all_pois.into_iter().collect(); - all_pois.sort_unstable(); - - let mut matrix = Array2::from_elem((n_reads, all_pois.len()), 2); - - // TODO: ideally want: offsets = [FamilyOffsets::default(); 3], can't because of vec, maybe box Vec? - let mut offsets = [ - (FamilyOffsets { - start_offset: 0, - end_offset: 0, - allele_offsets: Vec::new(), - }), - (FamilyOffsets { - start_offset: 0, - end_offset: 0, - allele_offsets: Vec::new(), - }), - (FamilyOffsets { - start_offset: 0, - end_offset: 0, - allele_offsets: Vec::new(), - }), - ]; + let mut pois: Vec = pois_set.into_iter().collect(); + pois.sort_unstable(); + + let mut matrix = Array2::from_elem((total_reads, pois.len()), 2); - let mut row_idx = 0; - let mut allele_offsets = Vec::new(); + let mut offsets: [FamilyOffsets; 3] = std::iter::repeat_with(FamilyOffsets::default) + .take(3) + .collect::>() + .try_into() + .unwrap_or_else(|_| unreachable!()); + + let mut current_row = 0; + let mut allele_offsets = Vec::with_capacity(total_reads); for (member_idx, family_member) in family_members.iter().enumerate() { - let start_offset = row_idx; + let start_offset = current_row; for (allele_idx, allele) in family_member.iter().enumerate() { if allele_idx > 0 { - allele_offsets.push(row_idx); + allele_offsets.push(current_row); } for (read, _) in &allele.read_aligns { let mismatch_offsets = read.mismatch_offsets.as_ref().unwrap(); - let start_col_idx = all_pois + let start_col = pois .binary_search(&read.start_offset.unwrap()) .unwrap_or_else(|x| x); - let end_col_idx = all_pois + let end_col = pois .binary_search(&read.end_offset.unwrap()) .unwrap_or_else(|x| x); - for col_idx in start_col_idx..end_col_idx { - let offset = all_pois[col_idx]; - matrix[[row_idx, col_idx]] = + for col in start_col..end_col { + let offset = pois[col]; + matrix[[current_row, col]] = mismatch_offsets.binary_search(&offset).is_ok() as u8; } - row_idx += 1; + current_row += 1; } } offsets[member_idx] = FamilyOffsets { start_offset, - end_offset: row_idx - 1, + end_offset: current_row - 1, allele_offsets: allele_offsets.clone(), }; allele_offsets.clear(); @@ -128,16 +151,42 @@ impl TrinaryMatrix { Some(TrinaryMatrix { matrix, offsets, - mismatch_offsets: all_pois, + mismatch_offsets: pois, }) } + /// Retrieves a submatrix view for a specific family member's SNPs. + /// + /// Returns a view of the SNP matrix that corresponds to the SNPs + /// associated with the specified family member. + /// + /// # Arguments + /// + /// * `member` - The family member for which to retrieve the SNP submatrix. + /// + /// # Returns + /// + /// An `ArrayView2` representing the submatrix of SNPs for the given family member. pub fn family_submatrix(&self, member: FamilyMember) -> ArrayView2 { let offset = &self.offsets[member.index()]; self.matrix .slice(s![offset.start_offset..=offset.end_offset, ..]) } + /// Retrieves a submatrix view for a specific allele of a family member. + /// + /// Returns a view of the SNP matrix that corresponds to the SNPs + /// associated with a particular allele of the specified family member. + /// + /// # Arguments + /// + /// * `member` - The family member to which the allele belongs. + /// * `allele_idx` - The index of the allele within the family member's alleles. + /// + /// # Returns + /// + /// An `Option>` representing the submatrix of SNPs for the given allele, + /// or `None` if the allele index is out of bounds. pub fn allele_submatrix( &self, member: FamilyMember, @@ -164,10 +213,20 @@ impl TrinaryMatrix { Some(self.matrix.slice(s![start_offset..=end_offset, ..])) } - pub fn iter_alleles<'a>( - &'a self, - member: FamilyMember, - ) -> impl Iterator> + 'a { + /// Creates an iterator over submatrices for each allele of a family member. + /// + /// Returns an iterator that yields views of the SNP matrix for each allele + /// of the specified family member. Each item in the iterator is a submatrix corresponding + /// to a single allele's SNPs. + /// + /// # Arguments + /// + /// * `member` - The family member whose alleles are to be iterated over. + /// + /// # Returns + /// + /// An iterator over `ArrayView2` where each item is a submatrix for an allele of the family member. + pub fn iter_alleles(&self, member: FamilyMember) -> impl Iterator> { let offset = &self.offsets[member.index()]; let start_offsets = iter::once(offset.start_offset).chain(offset.allele_offsets.iter().cloned()); @@ -188,30 +247,16 @@ impl TrinaryMatrix { } } -pub trait ReadFilter { - fn filter(&self, reads: &mut Vec); -} - -pub struct FilterByDist; -impl ReadFilter for FilterByDist { - fn filter(&self, reads: &mut Vec) { - for read in reads.iter_mut() { - if let Some(offsets) = &mut read.mismatch_offsets { - offsets.drain( - ..offsets - .binary_search(&(-constants::MAX_SNP_DIFF - 1)) - .unwrap_or_else(|x| x), - ); - offsets.drain( - offsets - .binary_search(&(constants::MAX_SNP_DIFF + 1)) - .unwrap_or_else(|x| x).., - ); - } - } - } -} - +/// Calculates the similarity between a child's SNP row and a parent's SNP row. +/// +/// # Arguments +/// +/// * `child_row` - A view of the SNP row for the child. +/// * `parent_row` - A view of the SNP row for the parent. +/// +/// # Returns +/// +/// A `f64` representing the similarity score between the two rows. fn calc_similarity(child_row: &ArrayView1, parent_row: &ArrayView1) -> f64 { let mut matching_positions = 0; let mut total_covered_positions = 0; @@ -238,6 +283,16 @@ fn calc_similarity(child_row: &ArrayView1, parent_row: &ArrayView1) -> f matching_positions as f64 / total_covered_positions } +/// Calculates the likelihood of inheritance based on the similarity of SNP rows between a child and a parent. +/// +/// # Arguments +/// +/// * `child_allele` - A view of the SNP matrix for the child's allele. +/// * `parent_allele` - A view of the SNP matrix for the parent's allele. +/// +/// # Returns +/// +/// A `f64` representing the likelihood of inheritance. fn get_likelihood(child_allele: ArrayView2, parent_allele: ArrayView2) -> f64 { let similarity_scores: Vec = child_allele .outer_iter() @@ -252,6 +307,16 @@ fn get_likelihood(child_allele: ArrayView2, parent_allele: ArrayView2) - likelihood } +/// Determines the individual probability of inheritance for a given child allele. +/// +/// # Arguments +/// +/// * `trinary_matrix` - A reference to the `TrinaryMatrix`. +/// * `child_allele_idx` - The index of the child's allele. +/// +/// # Returns +/// +/// An `Option<(Vec, f64)>` containing the posterior probabilities and the maximum likelihood, or `None` if the allele is empty. fn get_individual_prob( trinary_matrix: &TrinaryMatrix, child_allele_idx: usize, @@ -304,6 +369,18 @@ fn get_individual_prob( Some((posteriors, max_likelihood)) } +/// Combines the probabilities of two child alleles to determine the overall inheritance probabilities. +/// +/// # Arguments +/// +/// * `child_allele1_prob` - A slice of probabilities for the first child allele. +/// * `child_allele2_prob` - A slice of probabilities for the second child allele. +/// * `father_count` - The number of alleles for the father. +/// * `mother_count` - The number of alleles for the mother. +/// +/// # Returns +/// +/// A `HashMap` containing the combined probabilities for each inheritance hypothesis. fn combine_probabilities( child_allele1_prob: &[f64], child_allele2_prob: &[f64], @@ -312,14 +389,20 @@ fn combine_probabilities( ) -> HashMap { let mut combined_probabilities = HashMap::new(); let mut total_prob = 0.0; - - for i in 0..(father_count + mother_count) { - for j in 0..(father_count + mother_count) { + for (i, c1_prob) in child_allele1_prob + .iter() + .enumerate() + .take(father_count + mother_count) + { + for (j, c2_prob) in child_allele2_prob + .iter() + .enumerate() + .take(father_count + mother_count) + { if (i < father_count && j < father_count) || (i >= father_count && j >= father_count) { continue; } - - let probability = child_allele1_prob[i] * child_allele2_prob[j]; + let probability = c1_prob * c2_prob; combined_probabilities.insert(format!("H{}_{}", i, j), probability); total_prob += probability; } @@ -333,6 +416,15 @@ fn combine_probabilities( combined_probabilities } +/// Calculates the probabilities of inheritance for each possible combination of parental alleles. +/// +/// # Arguments +/// +/// * `trinary_matrix` - A reference to the `TrinaryMatrix`. +/// +/// # Returns +/// +/// An `Option<(HashMap, (f64, f64))>` containing the inheritance probabilities and the maximum likelihoods for each child allele, or `None` if there are more than two alleles. pub fn inheritance_prob( trinary_matrix: &TrinaryMatrix, ) -> Option<(HashMap, (f64, f64))> { @@ -343,7 +435,7 @@ pub fn inheritance_prob( for (i, prob) in child_allele1_prob.iter().enumerate() { result.insert(i.to_string(), *prob); } - Some((result, ((max_likelihood, -1.0)))) + Some((result, (max_likelihood, -1.0))) } 2 => { let (child_allele1_prob, max_likelihood_1) = get_individual_prob(trinary_matrix, 0)?; @@ -362,6 +454,44 @@ pub fn inheritance_prob( } } +/// Defines a trait for filtering reads based on SNP criteria. +/// +/// Implementors of this trait provide methods to filter reads to remove noise and improve SNP analysis accuracy. +pub trait ReadFilter { + /// Filters a vector of `ReadInfo` instances based on specific criteria. + /// + /// # Arguments + /// + /// * `reads` - A mutable reference to a vector of `ReadInfo` instances to be filtered. + fn filter(&self, reads: &mut Vec); +} + +/// A `ReadFilter` that filters reads based on distance criteria. +/// +/// This filter removes SNPs that are too far from the region of interest, as defined by a maximum distance threshold. +pub struct FilterByDist; +impl ReadFilter for FilterByDist { + fn filter(&self, reads: &mut Vec) { + for read in reads.iter_mut() { + if let Some(offsets) = &mut read.mismatch_offsets { + offsets.drain( + ..offsets + .binary_search(&(-constants::MAX_SNP_DIFF - 1)) + .unwrap_or_else(|x| x), + ); + offsets.drain( + offsets + .binary_search(&(constants::MAX_SNP_DIFF + 1)) + .unwrap_or_else(|x| x).., + ); + } + } + } +} + +/// A `ReadFilter` that filters reads based on frequency criteria. +/// +/// This filter retains SNPs that occur with a frequency above a specified threshold, ensuring that only common SNPs are considered. pub struct FilterByFreq; impl ReadFilter for FilterByFreq { fn filter(&self, reads: &mut Vec) { @@ -386,6 +516,12 @@ impl ReadFilter for FilterByFreq { } } +/// Applies a set of read filters to a vector of `ReadInfo` instances. +/// +/// # Arguments +/// +/// * `reads` - A mutable reference to a vector of `ReadInfo` instances to be filtered. +/// * `filters` - A slice of references to objects that implement the `ReadFilter` trait. pub fn apply_read_filters(reads: &mut Vec, filters: &[&(dyn ReadFilter + Sync)]) { for filter in filters { filter.filter(reads); @@ -395,7 +531,7 @@ pub fn apply_read_filters(reads: &mut Vec, filters: &[&(dyn ReadFilter #[cfg(test)] mod tests { use super::*; - use crate::read::ReadInfoBuilder; + use crate::{allele::Allele, read::ReadInfoBuilder}; use itertools::Itertools; fn create_read_info( @@ -413,9 +549,18 @@ mod tests { #[test] fn test_empty_trinary_matrix() { - let child_alleles: Vec = vec![]; - let father_alleles: Vec = vec![]; - let mother_alleles: Vec = vec![]; + let child_alleles = AlleleSet { + alleles: vec![], + hp_counts: [0; 3], + }; + let father_alleles = AlleleSet { + alleles: vec![], + hp_counts: [0; 3], + }; + let mother_alleles = AlleleSet { + alleles: vec![], + hp_counts: [0; 3], + }; let trinaray_mat: Option = TrinaryMatrix::new(&child_alleles, &father_alleles, &mother_alleles); assert_eq!(trinaray_mat, None); @@ -424,49 +569,58 @@ mod tests { // TODO: split into multiple tests #[test] fn test_trinary_matrix() { - let father_alleles = vec![ - Allele::dummy(vec![ - create_read_info(vec![-8, -2, 3, 5, 8, 42], -12, 70), - create_read_info(vec![-2, 3, 5, 8], -6, 30), - create_read_info(vec![3, 5, 8, 42], 0, 50), - ]), - Allele::dummy(vec![ - create_read_info(vec![-8, -4, 2], -22, 30), - create_read_info(vec![-8, -4, 2], -40, 60), - create_read_info(vec![-8, -4, 2], -30, 90), - ]), - ]; + let father_alleles = AlleleSet { + alleles: vec![ + Allele::dummy(vec![ + create_read_info(vec![-8, -2, 3, 5, 8, 42], -12, 70), + create_read_info(vec![-2, 3, 5, 8], -6, 30), + create_read_info(vec![3, 5, 8, 42], 0, 50), + ]), + Allele::dummy(vec![ + create_read_info(vec![-8, -4, 2], -22, 30), + create_read_info(vec![-8, -4, 2], -40, 60), + create_read_info(vec![-8, -4, 2], -30, 90), + ]), + ], + hp_counts: [0; 3], + }; - let mother_alleles = vec![ - Allele::dummy(vec![ - create_read_info(vec![-4, -1, 2, 6], -5, 7), - create_read_info(vec![-4, -1, 2, 6, 23], -20, 70), - create_read_info(vec![2, 6, 23], 1, 120), - ]), - // Allele::dummy(vec![ - // create_read_info(vec![6, 23], -30, 40), - // create_read_info(vec![6, 23], -10, 90), - // create_read_info(vec![6, 23], -2, 120), - // ]), - ]; + let mother_alleles = AlleleSet { + alleles: vec![ + Allele::dummy(vec![ + create_read_info(vec![-4, -1, 2, 6], -5, 7), + create_read_info(vec![-4, -1, 2, 6, 23], -20, 70), + create_read_info(vec![2, 6, 23], 1, 120), + ]), + // Allele::dummy(vec![ + // create_read_info(vec![6, 23], -30, 40), + // create_read_info(vec![6, 23], -10, 90), + // create_read_info(vec![6, 23], -2, 120), + // ]), + ], + hp_counts: [0; 3], + }; - let child_alleles = vec![ - Allele::dummy(vec![ - create_read_info(vec![-8, -2, 3, 5, 8, 42], -12, 70), - create_read_info(vec![-8, -2, 3, 5, 8], -10, 30), - create_read_info(vec![3, 5, 8, 42], 0, 50), - ]), - Allele::dummy(vec![ - create_read_info(vec![-4, -1, 2, 6, 23], -40, 90), - create_read_info(vec![-4, -1, 2, 6], -32, 20), - create_read_info(vec![2, 6, 23], 1, 120), - ]), - Allele::dummy(vec![create_read_info(vec![], -40, 90)]), - Allele::dummy(vec![ - create_read_info(vec![-1, 2, 6], -32, 20), - create_read_info(vec![2, 6], 1, 10), - ]), - ]; + let child_alleles = AlleleSet { + alleles: vec![ + Allele::dummy(vec![ + create_read_info(vec![-8, -2, 3, 5, 8, 42], -12, 70), + create_read_info(vec![-8, -2, 3, 5, 8], -10, 30), + create_read_info(vec![3, 5, 8, 42], 0, 50), + ]), + Allele::dummy(vec![ + create_read_info(vec![-4, -1, 2, 6, 23], -40, 90), + create_read_info(vec![-4, -1, 2, 6], -32, 20), + create_read_info(vec![2, 6, 23], 1, 120), + ]), + Allele::dummy(vec![create_read_info(vec![], -40, 90)]), + Allele::dummy(vec![ + create_read_info(vec![-1, 2, 6], -32, 20), + create_read_info(vec![2, 6], 1, 10), + ]), + ], + hp_counts: [0; 3], + }; let trinaray_mat = TrinaryMatrix::new(&child_alleles, &father_alleles, &mother_alleles).unwrap(); @@ -641,4 +795,41 @@ mod tests { assert_eq!(reads[3].mismatch_offsets.as_ref().unwrap(), &vec![]); assert_eq!(reads[4].mismatch_offsets.as_ref().unwrap(), &vec![2000]); } + + #[test] + fn test_combine_probabilities() { + let child_allele1_prob = vec![0.1, 0.2, 0.3, 0.4]; + let child_allele2_prob = vec![0.3, 0.2, 0.1, 0.4]; + let father_count = 2; + let mother_count = 2; + + let combined_probs = combine_probabilities( + &child_allele1_prob, + &child_allele2_prob, + father_count, + mother_count, + ); + + let expected_probs = HashMap::from([ + ("H3_1".to_string(), 0.16), + ("H2_0".to_string(), 0.18), + ("H1_3".to_string(), 0.16), + ("H0_3".to_string(), 0.08), + ("H1_2".to_string(), 0.04), + ("H3_0".to_string(), 0.24), + ("H0_2".to_string(), 0.02), + ("H2_1".to_string(), 0.12), + ]); + + for (key, &expected_prob) in &expected_probs { + let combined_prob = combined_probs.get(key).unwrap(); + assert!( + (combined_prob - expected_prob).abs() < 1e-6, + "Probabilities do not match for key {}: expected {}, got {}", + key, + expected_prob, + combined_prob + ); + } + } } diff --git a/src/stats.rs b/src/stats.rs deleted file mode 100644 index 001abf2..0000000 --- a/src/stats.rs +++ /dev/null @@ -1,28 +0,0 @@ -use crate::allele::Allele; - -pub fn get_per_allele_reads(alleles: &[Allele]) -> Vec { - alleles.iter().map(|a| a.read_aligns.len()).collect() -} - -pub fn get_total_reads(alleles: &[Allele]) -> usize { - get_per_allele_reads(alleles).iter().sum() -} - -pub fn get_dropout_prob(alleles: &[Allele]) -> f64 { - assert!(!alleles.is_empty()); - let allele_frac: f64 = 0.5; - let num_reads = get_total_reads(alleles) as f64; - allele_frac.powf(num_reads) -} - -pub fn get_allele_freqs(alleles: &[Allele]) -> Vec { - let num_reads = get_total_reads(alleles) as f64; - let allele_freqs: Vec = alleles - .iter() - .map(|a| a.read_aligns.len() as f64 / num_reads) - .collect(); - allele_freqs -} - -#[cfg(test)] -mod tests {} diff --git a/src/util.rs b/src/util.rs index 65d6467..fb9431d 100644 --- a/src/util.rs +++ b/src/util.rs @@ -1,17 +1,53 @@ +//! Utility functions and types for error handling and file path validation. +//! +//! This module provides common utility functions used throughout the program, +//! including custom result types and error handling mechanisms. + use anyhow::anyhow; use log; use std::path::Path; +/// Custom result type for error handling throughout the program. pub type Result = anyhow::Result; +/// Logs the provided error and exits the program. +/// +/// # Arguments +/// +/// * `err` - The error to log before exiting. pub fn handle_error_and_exit(err: anyhow::Error) -> ! { log::error!("{:#}", err); std::process::exit(1); } +/// Checks if the provided file path exists. +/// +/// # Arguments +/// +/// * `path` - The file path to check. +/// +/// # Returns +/// +/// A result indicating success if the path exists, or an error if it does not. pub fn try_exists(path: &Path) -> Result<()> { if !path.exists() { return Err(anyhow!("Path does not exist: {}", path.display())); } Ok(()) } + +#[derive(Debug, Clone, Copy)] +pub struct AlnScoring { + pub mismatch: i32, + pub gap_opening1: i32, + pub gap_extension1: i32, + pub gap_opening2: i32, + pub gap_extension2: i32, +} + +#[derive(Debug)] +pub struct Params { + pub clip_len: usize, + pub parent_quantile: f64, + pub partition_by_alignment: bool, +} diff --git a/src/wfa2.rs b/src/wfa2.rs index d9c0de6..85bb701 100644 --- a/src/wfa2.rs +++ b/src/wfa2.rs @@ -1,2 +1,2 @@ -//! Re-export wfa2-sys bindings +//! Re-export wfa2-sys bindings. pub use wfa2_sys::*;