{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# V(D)J clustering\n", "\n", "On the topic of finding clones/clonotypes, there are many ways used for clustering BCRs, almost all involving some measure based on sequence similarity. There are also a lot of very well established guidelines and criterias maintained by the BCR community. For example, *immcantation* uses a number of model-based [methods](https://changeo.readthedocs.io/en/stable/methods/clustering.html) that performs clustering of amino acid or nucleotide sequences based on predetermined thresholds (either user-selected or using a density-based approach).\n", "\n", "Here, *dandelion* implements a convenient method to call clones using a simple nearest-neighbor approach that satisfies the criteria described below. But first, let's load the modules and files we need." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "import scanpy as sc\n", "import dandelion as ddl\n", "\n", "os.chdir(\"dandelion_tutorial\")\n", "sc.settings.verbosity = 3" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Lazy Dandelion object with n_obs = 2493 and n_contigs = 5760\n", " data: sequence_id, sequence, rev_comp, productive, v_call, d_call, j_call, sequence_alignment, germline_alignment, junction, junction_aa, v_cigar, d_cigar, j_cigar, stop_codon, vj_in_frame, locus, junction_length, np1_length, np2_length, v_sequence_start, v_sequence_end, v_germline_start, v_germline_end, d_sequence_start, d_sequence_end, d_germline_start, d_germline_end, j_sequence_start, j_sequence_end, j_germline_start, j_germline_end, v_score, v_identity, v_support, d_score, d_identity, d_support, j_score, j_identity, j_support, fwr1, fwr2, fwr3, fwr4, cdr1, cdr2, cdr3, cell_id, consensus_count, umi_count, v_call_10x, d_call_10x, j_call_10x, junction_10x, junction_10x_aa, j_call_blastn, j_identity_blastn, j_alignment_length_blastn, j_number_of_mismatches_blastn, j_number_of_gap_openings_blastn, j_sequence_start_blastn, j_sequence_end_blastn, j_germline_start_blastn, j_germline_end_blastn, j_support_blastn, j_score_blastn, j_sequence_alignment_blastn, j_germline_alignment_blastn, j_call_igblastn, j_source, j_support_igblastn, j_score_igblastn, d_call_blastn, d_identity_blastn, d_alignment_length_blastn, d_number_of_mismatches_blastn, d_number_of_gap_openings_blastn, d_sequence_start_blastn, d_sequence_end_blastn, d_germline_start_blastn, d_germline_end_blastn, d_support_blastn, d_score_blastn, d_sequence_alignment_blastn, d_germline_alignment_blastn, d_call_igblastn, d_source, d_support_igblastn, d_score_igblastn, v_call_genotyped, germline_alignment_d_mask, sample_id, c_call, c_sequence_alignment, c_germline_alignment, c_sequence_start, c_sequence_end, c_score, c_identity, c_call_10x, junction_aa_length, fwr1_aa, fwr2_aa, fwr3_aa, fwr4_aa, cdr1_aa, cdr2_aa, cdr3_aa, sequence_alignment_aa, v_sequence_alignment_aa, d_sequence_alignment_aa, j_sequence_alignment_aa, complete_vdj, j_call_multimappers, j_call_multiplicity, j_call_sequence_start_multimappers, j_call_sequence_end_multimappers, j_call_support_multimappers, mu_count, extra, ambiguous, rearrangement_status\n", " metadata: cell_id, sample_id, productive_VDJ, productive_VJ, d_call_VDJ, j_call_VDJ, j_call_VJ, junction_VDJ, junction_VJ, junction_aa_VDJ, junction_aa_VJ, locus_VDJ, locus_VJ, v_call_VDJ, v_call_VJ, c_call_VDJ, c_call_VJ, umi_count_VDJ, umi_count_VJ, productive_VDJ_main, productive_VJ_main, d_call_VDJ_main, j_call_VDJ_main, j_call_VJ_main, junction_VDJ_main, junction_VJ_main, junction_aa_VDJ_main, junction_aa_VJ_main, locus_VDJ_main, locus_VJ_main, v_call_genotyped_VDJ_main, v_call_genotyped_VJ_main, c_call_VDJ_main, c_call_VJ_main, umi_count_VDJ_main, umi_count_VJ_main, isotype, isotype_main, isotype_status, locus_status, chain_status, rearrangement_status_VDJ, rearrangement_status_VJ" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# read in the previously saved file\n", "vdj = ddl.read_zipddl(\"dandelion_results.zipddl\")\n", "vdj" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "AnnData object with n_obs × n_vars = 25057 × 1308\n", " obs: 'sample_id', 'n_genes', 'n_genes_by_counts', 'total_counts', 'total_counts_mt', 'pct_counts_mt', 'gmm_pct_count_clusters_keep', 'scrublet_score', 'is_doublet', 'filter_rna', 'has_contig', 'productive_VDJ', 'productive_VJ', 'd_call_VDJ', 'j_call_VDJ', 'j_call_VJ', 'junction_VDJ', 'junction_VJ', 'junction_aa_VDJ', 'junction_aa_VJ', 'locus_VDJ', 'locus_VJ', 'v_call_VDJ', 'v_call_VJ', 'c_call_VDJ', 'c_call_VJ', 'umi_count_VDJ', 'umi_count_VJ', 'productive_VDJ_main', 'productive_VJ_main', 'd_call_VDJ_main', 'j_call_VDJ_main', 'j_call_VJ_main', 'junction_VDJ_main', 'junction_VJ_main', 'junction_aa_VDJ_main', 'junction_aa_VJ_main', 'locus_VDJ_main', 'locus_VJ_main', 'v_call_genotyped_VDJ_main', 'v_call_genotyped_VJ_main', 'c_call_VDJ_main', 'c_call_VJ_main', 'umi_count_VDJ_main', 'umi_count_VJ_main', 'isotype', 'isotype_main', 'isotype_status', 'locus_status', 'chain_status', 'rearrangement_status_VDJ', 'rearrangement_status_VJ', 'leiden'\n", " var: 'n_cells', 'highly_variable', 'means', 'dispersions', 'dispersions_norm', 'mean', 'std'\n", " uns: 'chain_status_colors', 'hvg', 'leiden', 'leiden_colors', 'log1p', 'neighbors', 'pca', 'sample_id_colors', 'umap'\n", " obsm: 'X_pca', 'X_umap'\n", " varm: 'PCs'\n", " obsp: 'connectivities', 'distances'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "adata = sc.read_h5ad(\"adata.h5ad\")\n", "adata" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Finding clones\n", "\n", "The following is *dandelion*'s implementation of a rather conventional method to define clones, `ddl.tl.find_clones`. \n", "\n", "
\n", "\n", "Clone definition criterion\n", " \n", "Clone definition is based on the following criterion:

\n", "\n", "I. Identical V- and J-gene usage in the VDJ chain (IGH/TRB/TRD).

\n", "\n", "II. Identical CDR3 junctional/CDR3 sequence length in the VDJ chain.

\n", "\n", "III. VDJ chain junctional/CDR3 sequences attains a minimum of % sequence similarity, based on hamming distance. The similarity cut-off is tunable (default is 85%; change to 100% if analyzing TCR data).

\n", "\n", "IV. VJ chain (IGK/IGL/TRA/TRG) usage. If cells within clones use different VJ chains, the clone will be split following the same conditions for VDJ chains in (1-3) as above.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### (Optional) Simplifying annotation calls.\n", "This is an optional step to simplify the annotation calls. The `vdj.simplify()` will reduce the complexity of the gene names and strip the alleles. This impacts on how clones are defined (using simpler v/j calls) and also visualiation." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "shape: (5_760, 3)
v_call_genotypedj_callc_call
strstrstr
"IGKV1-33*01,IGKV1D-33*01""IGKJ4*01""IGKC"
"IGHV1-69*01,IGHV1-69D*01""IGHJ3*02""IGHM"
"IGKV1-8*01""IGKJ1*01""IGKC"
"IGLV5-45*02""IGLJ3*02""IGLC3"
"IGHV1-2*02""IGHJ3*02""IGHM"
"IGHV1-46*01""IGHJ5*02""IGHM"
"IGHV1-69*01,IGHV1-69D*01""IGHJ6*02""IGHM"
"IGLV1-47*01""IGLJ3*02""IGLC3"
"IGLV2-11*01""IGLJ2*01,IGLJ3*01,IGLJ3*02""IGLC"
"IGHV3-23*01,IGHV3-23D*01""IGHJ4*02""IGHM"
" ], "text/plain": [ "shape: (5_760, 3)\n", "┌──────────────────────────┬────────────────────────────┬────────┐\n", "│ v_call_genotyped ┆ j_call ┆ c_call │\n", "│ --- ┆ --- ┆ --- │\n", "│ str ┆ str ┆ str │\n", "╞══════════════════════════╪════════════════════════════╪════════╡\n", "│ IGKV1-33*01,IGKV1D-33*01 ┆ IGKJ4*01 ┆ IGKC │\n", "│ IGHV1-69*01,IGHV1-69D*01 ┆ IGHJ3*02 ┆ IGHM │\n", "│ IGKV1-8*01 ┆ IGKJ1*01 ┆ IGKC │\n", "│ IGLV5-45*02 ┆ IGLJ3*02 ┆ IGLC3 │\n", "│ IGHV1-2*02 ┆ IGHJ3*02 ┆ IGHM │\n", "│ … ┆ … ┆ … │\n", "│ IGHV1-46*01 ┆ IGHJ5*02 ┆ IGHM │\n", "│ IGHV1-69*01,IGHV1-69D*01 ┆ IGHJ6*02 ┆ IGHM │\n", "│ IGLV1-47*01 ┆ IGLJ3*02 ┆ IGLC3 │\n", "│ IGLV2-11*01 ┆ IGLJ2*01,IGLJ3*01,IGLJ3*02 ┆ IGLC │\n", "│ IGHV3-23*01,IGHV3-23D*01 ┆ IGHJ4*02 ┆ IGHM │\n", "└──────────────────────────┴────────────────────────────┴────────┘" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# original\n", "vdj.data[[\"v_call_genotyped\", \"j_call\", \"c_call\"]].collect()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "shape: (5_760, 3)
v_call_genotypedj_callc_call
strstrstr
"IGKV1-33""IGKJ4""IGKC"
"IGHV1-69""IGHJ3""IGHM"
"IGKV1-8""IGKJ1""IGKC"
"IGLV5-45""IGLJ3""IGLC3"
"IGHV1-2""IGHJ3""IGHM"
"IGHV1-46""IGHJ5""IGHM"
"IGHV1-69""IGHJ6""IGHM"
"IGLV1-47""IGLJ3""IGLC3"
"IGLV2-11""IGLJ2""IGLC"
"IGHV3-23""IGHJ4""IGHM"
" ], "text/plain": [ "shape: (5_760, 3)\n", "┌──────────────────┬────────┬────────┐\n", "│ v_call_genotyped ┆ j_call ┆ c_call │\n", "│ --- ┆ --- ┆ --- │\n", "│ str ┆ str ┆ str │\n", "╞══════════════════╪════════╪════════╡\n", "│ IGKV1-33 ┆ IGKJ4 ┆ IGKC │\n", "│ IGHV1-69 ┆ IGHJ3 ┆ IGHM │\n", "│ IGKV1-8 ┆ IGKJ1 ┆ IGKC │\n", "│ IGLV5-45 ┆ IGLJ3 ┆ IGLC3 │\n", "│ IGHV1-2 ┆ IGHJ3 ┆ IGHM │\n", "│ … ┆ … ┆ … │\n", "│ IGHV1-46 ┆ IGHJ5 ┆ IGHM │\n", "│ IGHV1-69 ┆ IGHJ6 ┆ IGHM │\n", "│ IGLV1-47 ┆ IGLJ3 ┆ IGLC3 │\n", "│ IGLV2-11 ┆ IGLJ2 ┆ IGLC │\n", "│ IGHV3-23 ┆ IGHJ4 ┆ IGHM │\n", "└──────────────────┴────────┴────────┘" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vdj.simplify()\n", "vdj.data[[\"v_call_genotyped\", \"j_call\", \"c_call\"]].collect()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# let's save this as a separate file\n", "vdj.write_zipddl(\"dandelion_results_simplified.zipddl\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Running `ddl.tl.find_clones`\n", "The function will take a file path, a polars `DataFrame` (for example if you've used polars to read in the filtered file already), or a `DandelionPolars` class object. The default mode for calculation of junctional hamming distance is to use the CDR3 junction amino acid sequences, specified via the `key` option (`None` defaults to `junction_aa`). You can switch it to using CDR3 junction nucleotide sequences by specifying `key='junction'`.\n", "\n", "
\n", "\n", "`store_distances=True`\n", "\n", "Setting `store_distances=True` will store the clone-level pairwise distance matrix as a CSR sparse matrix in `vdj.distances`. This is useful because `ddl.tl.generate_network` will automatically detect and reuse pre-computed distances from `.distances`, avoiding redundant recalculation. This can save significant time when running both `find_clones` and `generate_network` in sequence.\n", "
" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Finding clonotypes\n", "Using PyTorch backend with Apple Metal GPU\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Finding clones based on B cell VDJ chains using junction_aa: 100%|██████████| 1159/1159 [00:01<00:00, 703.95it/s]\n", "Finding clones based on B cell VJ chains using junction_aa: 100%|██████████| 491/491 [00:00<00:00, 577.83it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Storing distance matrix...\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Building distance matrix (batched): 100%|██████████| 17/17 [00:00<00:00, 2118.34it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Stored distances as CSR sparse matrix: (2493, 2493), density=0.69%\n", " finished: Updated Dandelion object: \n", " 'data', contig AIRR table\n", " 'metadata', cell observations table\n", " 'distances', sparse distance matrix\n", " (0:00:04)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ddl.tl.find_clones(vdj, store_distances=True)\n", "vdj.distances" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This will return a new column with the column name `'clone_id'` as per convention. If a file path is provided as input, it will also save the file automatically into the base directory of the file name. Otherwise, a `DandelionPolars` object will be returned." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "Clonotype definition criterion\n", "\n", "The `clone_id` follows an `VDJ_{A}_{B}_{C}_VJ_{D}_{E}_{F}` format and largely reflects the conditions above where:\n", "\n", " {A} indicates if the contigs use the same V and J genes in the VDJ chain.\n", " \n", " {B} indicates if junctional/CDR3 sequences are equal in length in the VDJ chain.\n", " \n", " {C} indicates if clones are split based on distance threshold for the VDJ chain.\n", " \n", " {D} indicates if the contigs use the same V and J genes in the VJ chain.\n", " \n", " {E} indicates if junctional/CDR3 sequences are equal in length in the VJ chain.\n", " \n", " {F} indicates if clones are split based on distance threshold for the VJ chain.\n", " \n", "
" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "shape: (2_493, 45)
cell_idclone_idclone_id_ranksample_idproductive_VDJproductive_VJd_call_VDJj_call_VDJj_call_VJjunction_VDJjunction_VJjunction_aa_VDJjunction_aa_VJlocus_VDJlocus_VJv_call_VDJv_call_VJc_call_VDJc_call_VJumi_count_VDJumi_count_VJproductive_VDJ_mainproductive_VJ_maind_call_VDJ_mainj_call_VDJ_mainj_call_VJ_mainjunction_VDJ_mainjunction_VJ_mainjunction_aa_VDJ_mainjunction_aa_VJ_mainlocus_VDJ_mainlocus_VJ_mainv_call_genotyped_VDJ_mainv_call_genotyped_VJ_mainc_call_VDJ_mainc_call_VJ_mainumi_count_VDJ_mainumi_count_VJ_mainisotypeisotype_mainisotype_statuslocus_statuschain_statusrearrangement_status_VDJrearrangement_status_VJ
strstrcatstrstrstrstrstrstrstrstrstrstrstrstrstrstrstrstri64i64strstrstrstrstrstrstrstrstrstrstrstrstrstrstrf64f64strstrstrstrstrstrstr
"sc5p_v2_hs_PBMC_10k_b_AAACCTGT…"B_VJ_22_2_2""767""sc5p_v2_hs_PBMC_10k_b"null"T"nullnull"IGKJ4"null"TGTCAACAATATGACGAACTTCCCGTCACT…null"CQQYDELPVTF"null"IGK"null"IGKV1-33"null"IGKC"068null"T"nullnull"IGKJ4"null"TGTCAACAATATGACGAACTTCCCGTCACT…null"CQQYDELPVTF"null"IGK"null"IGKV1-33"null"IGKC"null68.0nullnullnull"Orphan IGK""Orphan VJ"null"Standard"
"sc5p_v2_hs_PBMC_10k_b_AAACCTGT…"B_VDJ_28_4_2_VJ_39_2_1""478""sc5p_v2_hs_PBMC_10k_b""T""T""IGHD3-22""IGHJ3""IGKJ1""TGTGCGACTACGTATTACTATGATAGTAGT…"TGTCAACAGTATTATAGTTACCCTCGGACG…"CATTYYYDSSGYYQNDAFDIW""CQQYYSYPRTF""IGH""IGK""IGHV1-69""IGKV1-8""IGHM""IGKC"5143"T""T""IGHD3-22""IGHJ3""IGKJ1""TGTGCGACTACGTATTACTATGATAGTAGT…"TGTCAACAGTATTATAGTTACCCTCGGACG…"CATTYYYDSSGYYQNDAFDIW""CQQYYSYPRTF""IGH""IGK""IGHV1-69""IGKV1-8""IGHM""IGKC"51.043.0"IgM""IgM""IgM""IGH + IGK""Single pair""Standard""Standard"
"sc5p_v2_hs_PBMC_10k_b_AAACCTGT…"B_VDJ_8_1_1_VJ_189_1_1""1733""sc5p_v2_hs_PBMC_10k_b""T""T"null"IGHJ3""IGLJ3""TGTGCGAGAGAGATAGAGGGGGACGGTGTT…"TGTATGATTTGGCACAGCAGCGCTTGGGTG…"CAREIEGDGVFEIW""CMIWHSSAWVV""IGH""IGL""IGHV1-2""IGLV5-45""IGHM""IGLC3"4790"T""T"null"IGHJ3""IGLJ3""TGTGCGAGAGAGATAGAGGGGGACGGTGTT…"TGTATGATTTGGCACAGCAGCGCTTGGGTG…"CAREIEGDGVFEIW""CMIWHSSAWVV""IGH""IGL""IGHV1-2""IGLV5-45""IGHM""IGLC3"47.090.0"IgM""IgM""IgM""IGH + IGL""Single pair""Standard""Standard"
"sc5p_v2_hs_PBMC_10k_b_AAACCTGT…"B_VDJ_187_4_3_VJ_60_1_1""444""sc5p_v2_hs_PBMC_10k_b""T""T"null"IGHJ3""IGKJ2""TGTGCGAGACATATCCGTGGGAACAGATTT…"TGTCAACAGTATTATAGTTTCCCGTACACT…"CARHIRGNRFGNDAFDIW""CQQYYSFPYTF""IGH""IGK""IGHV5-51""IGKV1D-8""IGHM""IGKC"8022"T""T"null"IGHJ3""IGKJ2""TGTGCGAGACATATCCGTGGGAACAGATTT…"TGTCAACAGTATTATAGTTTCCCGTACACT…"CARHIRGNRFGNDAFDIW""CQQYYSFPYTF""IGH""IGK""IGHV5-51""IGKV1D-8""IGHM""IGKC"80.022.0"IgM""IgM""IgM""IGH + IGK""Single pair""Standard""Standard"
"sc5p_v2_hs_PBMC_10k_b_AAACGGGA…"B_VDJ_165_2_1_VJ_163_2_1""1545""sc5p_v2_hs_PBMC_10k_b""T""T""IGHD6-13""IGHJ3""IGLJ2""TGTGCGAGAGTAGGCTATAGAGCAGCAGCT…"TGTAACTCCCGGGACAGCAGTGGTAACCAT…"CARVGYRAAAGTDAFDIW""CNSRDSSGNHVVF""IGH""IGL""IGHV4-4""IGLV3-19""IGHM""IGLC"1814"T""T""IGHD6-13""IGHJ3""IGLJ2""TGTGCGAGAGTAGGCTATAGAGCAGCAGCT…"TGTAACTCCCGGGACAGCAGTGGTAACCAT…"CARVGYRAAAGTDAFDIW""CNSRDSSGNHVVF""IGH""IGL""IGHV4-4""IGLV3-19""IGHM""IGLC"18.014.0"IgM""IgM""IgM""IGH + IGL""Single pair""Standard""Standard"
"vdj_v1_hs_pbmc3_b_TTTCCTCAGCGC…"B_VDJ_83_5_2_VJ_73_1_1""210""vdj_v1_hs_pbmc3_b""T""T""IGHD4-17""IGHJ6""IGKJ2""TGTGCGAAAGCCGCCTACGGTGAGGGGCTC…"TGCATGCAAGGTACACACTGGCCGTACACT…"CAKAAYGEGLRYYYYGMDVW""CMQGTHWPYTF""IGH""IGK""IGHV3-30""IGKV2-30""IGHM""IGKC"1128"T""T""IGHD4-17""IGHJ6""IGKJ2""TGTGCGAAAGCCGCCTACGGTGAGGGGCTC…"TGCATGCAAGGTACACACTGGCCGTACACT…"CAKAAYGEGLRYYYYGMDVW""CMQGTHWPYTF""IGH""IGK""IGHV3-30""IGKV2-30""IGHM""IGKC"11.028.0"IgM""IgM""IgM""IGH + IGK""Single pair""Standard""Standard"
"vdj_v1_hs_pbmc3_b_TTTCCTCAGGGA…"B_VDJ_176_2_1_VJ_25_4_1""2067""vdj_v1_hs_pbmc3_b""T""T""IGHD6-13""IGHJ2""IGKJ1""TGTGCGAGACCCCGTATAGCAGGATCTGGG…"TGTCAACAGAGTTACAGTACCCCGTGGACG…"CARPRIAGSGWYFDLW""CQQSYSTPWTF""IGH""IGK""IGHV4-61""IGKV1-39""IGHM""IGKC"14159"T""T""IGHD6-13""IGHJ2""IGKJ1""TGTGCGAGACCCCGTATAGCAGGATCTGGG…"TGTCAACAGAGTTACAGTACCCCGTGGACG…"CARPRIAGSGWYFDLW""CQQSYSTPWTF""IGH""IGK""IGHV4-61""IGKV1-39""IGHM""IGKC"14.0159.0"IgM""IgM""IgM""IGH + IGK""Single pair""Standard""Standard"
"vdj_v1_hs_pbmc3_b_TTTCCTCTCGAC…"B_VDJ_26_5_1_VJ_26_2_1""1113""vdj_v1_hs_pbmc3_b""T""T""IGHD2-15""IGHJ5""IGKJ2""TGTGCGAGAGAGGGATATTGTAGTGGTGGT…"TGTCAACAGAGTTACAGTACCCCTCGGACT…"CAREGYCSGGSCYSPDPNNGWFDPW""CQQSYSTPRTF""IGH""IGK""IGHV1-46""IGKV1-39""IGHM""IGKC"2835"T""T""IGHD2-15""IGHJ5""IGKJ2""TGTGCGAGAGAGGGATATTGTAGTGGTGGT…"TGTCAACAGAGTTACAGTACCCCTCGGACT…"CAREGYCSGGSCYSPDPNNGWFDPW""CQQSYSTPRTF""IGH""IGK""IGHV1-46""IGKV1-39""IGHM""IGKC"28.035.0"IgM""IgM""IgM""IGH + IGK""Single pair""Standard""Standard"
"vdj_v1_hs_pbmc3_b_TTTGCGCCATAC…"B_VDJ_31_7_2_VJ_134_3_1""2386""vdj_v1_hs_pbmc3_b""T""T""IGHD2-15""IGHJ6""IGLJ3""TGTGCGAGATCTCTGGATATTGTAGTGGTG…"TGTGCAGCATGGGATGACAGCCTGAGTGGT…"CARSLDIVVVVALYYYYGMDVW""CAAWDDSLSGWVF""IGH""IGL""IGHV1-69""IGLV1-47""IGHM""IGLC3"3228"T""T""IGHD2-15""IGHJ6""IGLJ3""TGTGCGAGATCTCTGGATATTGTAGTGGTG…"TGTGCAGCATGGGATGACAGCCTGAGTGGT…"CARSLDIVVVVALYYYYGMDVW""CAAWDDSLSGWVF""IGH""IGL""IGHV1-69""IGLV1-47""IGHM""IGLC3"32.028.0"IgM""IgM""IgM""IGH + IGL""Single pair""Standard""Standard"
"vdj_v1_hs_pbmc3_b_TTTGGTTGTAGG…"B_VDJ_75_6_9_VJ_141_3_1""2301""vdj_v1_hs_pbmc3_b""T""T"null"IGHJ4""IGLJ2""TGTGCGGGGAGTCGGTGGTTATATTCTTTT…"TGCTGCTCATATGCAGGCAGCTACACTGTG…"CAGSRWLYSFDYW""CCSYAGSYTVFF""IGH""IGL""IGHV3-23""IGLV2-11""IGHM""IGLC"2236"T""T"null"IGHJ4""IGLJ2""TGTGCGGGGAGTCGGTGGTTATATTCTTTT…"TGCTGCTCATATGCAGGCAGCTACACTGTG…"CAGSRWLYSFDYW""CCSYAGSYTVFF""IGH""IGL""IGHV3-23""IGLV2-11""IGHM""IGLC"22.036.0"IgM""IgM""IgM""IGH + IGL""Single pair""Standard""Standard"
" ], "text/plain": [ "shape: (2_493, 45)\n", "┌───────────┬───────────┬───────────┬───────────┬───┬───────────┬───────────┬───────────┬──────────┐\n", "│ cell_id ┆ clone_id ┆ clone_id_ ┆ sample_id ┆ … ┆ locus_sta ┆ chain_sta ┆ rearrange ┆ rearrang │\n", "│ --- ┆ --- ┆ rank ┆ --- ┆ ┆ tus ┆ tus ┆ ment_stat ┆ ement_st │\n", "│ str ┆ str ┆ --- ┆ str ┆ ┆ --- ┆ --- ┆ us_VDJ ┆ atus_VJ │\n", "│ ┆ ┆ cat ┆ ┆ ┆ str ┆ str ┆ --- ┆ --- │\n", "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ str ┆ str │\n", "╞═══════════╪═══════════╪═══════════╪═══════════╪═══╪═══════════╪═══════════╪═══════════╪══════════╡\n", "│ sc5p_v2_h ┆ B_VJ_22_2 ┆ 767 ┆ sc5p_v2_h ┆ … ┆ Orphan ┆ Orphan VJ ┆ null ┆ Standard │\n", "│ s_PBMC_10 ┆ _2 ┆ ┆ s_PBMC_10 ┆ ┆ IGK ┆ ┆ ┆ │\n", "│ k_b_AAACC ┆ ┆ ┆ k_b ┆ ┆ ┆ ┆ ┆ │\n", "│ TGT… ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ sc5p_v2_h ┆ B_VDJ_28_ ┆ 478 ┆ sc5p_v2_h ┆ … ┆ IGH + IGK ┆ Single ┆ Standard ┆ Standard │\n", "│ s_PBMC_10 ┆ 4_2_VJ_39 ┆ ┆ s_PBMC_10 ┆ ┆ ┆ pair ┆ ┆ │\n", "│ k_b_AAACC ┆ _2_1 ┆ ┆ k_b ┆ ┆ ┆ ┆ ┆ │\n", "│ TGT… ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ sc5p_v2_h ┆ B_VDJ_8_1 ┆ 1733 ┆ sc5p_v2_h ┆ … ┆ IGH + IGL ┆ Single ┆ Standard ┆ Standard │\n", "│ s_PBMC_10 ┆ _1_VJ_189 ┆ ┆ s_PBMC_10 ┆ ┆ ┆ pair ┆ ┆ │\n", "│ k_b_AAACC ┆ _1_1 ┆ ┆ k_b ┆ ┆ ┆ ┆ ┆ │\n", "│ TGT… ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ sc5p_v2_h ┆ B_VDJ_187 ┆ 444 ┆ sc5p_v2_h ┆ … ┆ IGH + IGK ┆ Single ┆ Standard ┆ Standard │\n", "│ s_PBMC_10 ┆ _4_3_VJ_6 ┆ ┆ s_PBMC_10 ┆ ┆ ┆ pair ┆ ┆ │\n", "│ k_b_AAACC ┆ 0_1_1 ┆ ┆ k_b ┆ ┆ ┆ ┆ ┆ │\n", "│ TGT… ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ sc5p_v2_h ┆ B_VDJ_165 ┆ 1545 ┆ sc5p_v2_h ┆ … ┆ IGH + IGL ┆ Single ┆ Standard ┆ Standard │\n", "│ s_PBMC_10 ┆ _2_1_VJ_1 ┆ ┆ s_PBMC_10 ┆ ┆ ┆ pair ┆ ┆ │\n", "│ k_b_AAACG ┆ 63_2_1 ┆ ┆ k_b ┆ ┆ ┆ ┆ ┆ │\n", "│ GGA… ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n", "│ vdj_v1_hs ┆ B_VDJ_83_ ┆ 210 ┆ vdj_v1_hs ┆ … ┆ IGH + IGK ┆ Single ┆ Standard ┆ Standard │\n", "│ _pbmc3_b_ ┆ 5_2_VJ_73 ┆ ┆ _pbmc3_b ┆ ┆ ┆ pair ┆ ┆ │\n", "│ TTTCCTCAG ┆ _1_1 ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ CGC… ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ vdj_v1_hs ┆ B_VDJ_176 ┆ 2067 ┆ vdj_v1_hs ┆ … ┆ IGH + IGK ┆ Single ┆ Standard ┆ Standard │\n", "│ _pbmc3_b_ ┆ _2_1_VJ_2 ┆ ┆ _pbmc3_b ┆ ┆ ┆ pair ┆ ┆ │\n", "│ TTTCCTCAG ┆ 5_4_1 ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ GGA… ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ vdj_v1_hs ┆ B_VDJ_26_ ┆ 1113 ┆ vdj_v1_hs ┆ … ┆ IGH + IGK ┆ Single ┆ Standard ┆ Standard │\n", "│ _pbmc3_b_ ┆ 5_1_VJ_26 ┆ ┆ _pbmc3_b ┆ ┆ ┆ pair ┆ ┆ │\n", "│ TTTCCTCTC ┆ _2_1 ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ GAC… ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ vdj_v1_hs ┆ B_VDJ_31_ ┆ 2386 ┆ vdj_v1_hs ┆ … ┆ IGH + IGL ┆ Single ┆ Standard ┆ Standard │\n", "│ _pbmc3_b_ ┆ 7_2_VJ_13 ┆ ┆ _pbmc3_b ┆ ┆ ┆ pair ┆ ┆ │\n", "│ TTTGCGCCA ┆ 4_3_1 ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ TAC… ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ vdj_v1_hs ┆ B_VDJ_75_ ┆ 2301 ┆ vdj_v1_hs ┆ … ┆ IGH + IGL ┆ Single ┆ Standard ┆ Standard │\n", "│ _pbmc3_b_ ┆ 6_9_VJ_14 ┆ ┆ _pbmc3_b ┆ ┆ ┆ pair ┆ ┆ │\n", "│ TTTGGTTGT ┆ 1_3_1 ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ AGG… ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "└───────────┴───────────┴───────────┴───────────┴───┴───────────┴───────────┴───────────┴──────────┘" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vdj.metadata.collect()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Alternative : Running `ddl.tl.define_clones`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Alternatively, a wrapper to call *changeo's* `DefineClones.py` [[Gupta2015]](https://academic.oup.com/bioinformatics/article/31/20/3356/195677) is also included. To run it, you need to choose the distance threshold for clonal assignment. To facilitate this, the function `ddl.pp.calculate_threshold` will run [shazam's distToNearest](https://shazam.readthedocs.io/en/stable/topics/distToNearest/) function and return the threshold value." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Calculating threshold\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "R[write to console]: Error in (function (db, sequenceColumn = \"junction\", vCallColumn = \"v_call\", : \n", " 254 cell(s) with multiple heavy chains found. One heavy chain per cell is expected.\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Rerun this after filtering. For now, switching to heavy mode.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "R[write to console]: Running in non-single-cell mode.\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Threshold method 'density' did not return with any values. Switching to method = 'gmm'.\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4QAAAH0CAYAAABl8+PTAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAewgAAHsIBbtB1PgAA/FdJREFUeJzs3Xd8U1X/wPFP0nQPuihlyN57ypCNKI8ggiIOcKAi4oMKDlTk94igoChDxYGiOABRARmKIKMWKGWUXSiUDRa6S0egK8nvj5hLS5M2bdMmab/v16uvprnn3vu9pzc599x7hspgMBgQQgghhBBCCFHtqO0dgBBCCCGEEEII+5AKoRBCCCGEEEJUU1IhFEIIIYQQQohqSiqEQgghhBBCCFFNSYVQCCGEEEIIIaopqRAKIYQQQgghRDUlFUIhhBBCCCGEqKY09g6gKlu8eDFZWVn2DkMIIUQZ+Pj4MGHCBHuH4TCkTBNCCOdUUnkmFcIKlJWVRWZmpr3DEEIIIcpNyjQhhKiapEJYSTw8POwdghBCCCtkZ2fbOwSHJ2WaEEI4PmvLM6kQVgIPDw8GDx5s7zCEEEJYYcuWLVIpLIaUaUII4RysLc9kUBkhhBBCCCGEqKakQiiEEEIIIYQQ1ZRUCIUQQgghhBCimpIKoRBCCCGEEEJUU1IhFEIIIYQQQohqSiqEQgghhBBCCFFNSYVQCCGEEEIIIaopqRAKIYQQQgghRDUlE9OLCjNz5kyuXr1aYpqaNWtWUkS2ER4ezrZt27hw4QJZWVl4eXnRuHFjBg0aRN++fVGpVOXex8KFC9m+fTtDhgzh+eeft0HUtmWKzxKNRkNAQAAdOnTggQceoG7duqVa39PTk5CQELp168b999+Pj49PoeXbtm3j448/LrS9xo0bFxvzlStXeO6555S/X3rpJQYNGmQ27T///MOWLVs4cuQISUlJ3LhxA09PT+rUqUOHDh24++67K/y8ffHFF4mLi2P16tXFpktLS+O3334jKiqKxMREvLy8aNKkCffccw/dunUrkv6ZZ54hMTGR9957j3bt2lVI7AkJCYwfPx6A9evXV8g+hHAUUtaVnZR1UtaVVNatWLGClStXMnDgQCZPnlxhcUybNo3o6Ohi86sqkwqhqBAGg4GjR4+Sm5tbbLq8vLxKiqj8DAYDH374Ibt27QLAw8ODgIAAUlJSOHz4sPLz0ksv2TnSyuPm5laksDAYDGRmZpKUlMTWrVvZuXMn06ZNo1OnTlatn5eXx7Vr17h48SIXL15k165dzJkzh6CgIItx7Nixo8RCcseOHSUej06n47vvvmPDhg3o9XoAfH19CQwMJC0tjVOnTnHq1CnWrl3Ls88+y1133VXiNssiNjaWCxcu4OrqWmy6K1euMG3aNFJTU1Gr1QQGBnLjxg0OHDjAgQMHGDlyJOPGjauQGIUQUtZVF1LW2besExVPKoSiQiQnJ5Obm0ubNm2YM2eOvcOxid9//51du3bh5ubGc889x4ABA3BxcSE3N5dVq1axcuVKtm3bRuvWrRk8eLC9w60UzZs3Z/bs2WaXnT9/no8//phz584xf/58vvrqKzw9Pa1aX6fTsXfvXhYuXEh8fDzLli0ze/Gh0WjIz89n586dPPHEE8Xesd65c2ehdW5lMBj46KOPiIiIQK1WM3ToUO69917q1KmjLD937hwrV65k7969LFq0CBcXF5veSczLy+Pw4cMsXry4xLQGg4E5c+aQmppKs2bNeO211wgNDUWv1xMWFsZnn33Gb7/9RrNmzejdu7fNYhRC3CRlnZR1UtaVXmnKOlE5pA+hqBCm5jOmL5iqYOPGjQCMHj2aO++8ExcXF8B45+/RRx+lb9++APz22292i9GRNGrUiFdffRWA9PR0Dh06ZPW6Li4u9OrVi6FDhwJw8OBBs+lq1apFaGgoSUlJxMTEWNzeuXPnuHz5MqGhodSqVctsmg0bNigF5NSpU5kwYUKh81elUtGkSROmTZvGgAEDAFi8eDEZGRlWH5cl58+f54UXXuChhx5i1qxZJCYmlrjOrl27uHjxIm5ubrz55puEhoYCoFarGTRokHJHd8WKFeWOTwhhnpR1Qso665WlrBOVQ54QVmOZmZmsWrWKffv2kZiYiFqtJiQkhK5du/LAAw/g5+dXKH1WVhZr1qwhMjKSpKQkvL29qV27NnfffTd9+/ZVCg24WUjWrl3b6nhM7cT79evHxIkTWbNmDTt37iQ5ORk/Pz+6devGQw89VGxzCmusXbuWb7/9Fo1Gw48//oi3t3eRNHv27GH27Nm4ubnxww8/kJOTQ1xcHIBSGN6qW7du7Nixg3/++YesrKwifQHKKi0tjZ9//pn9+/eTlpaGn58fXbp0YezYsQQEBBRJ//fff/PXX39x/vx5cnJy8PPzo0WLFtx33320bt3aJjFZq169etSoUYP09PQS+9iYYyrQimtu1bdvX3755Rd27Nhh8fhMTWj69u1LREREkeU5OTn8/PPPAAwbNoxevXpZ3J9KpeLpp59m165dZGdns2vXLu655x6rj8mc7Oxs0tPTlXMmPz+frKysYtcxNefq3r07wcHBRZb36tWLjRs38s8//3Dx4kUaNGhQ7Pby8vKYM2cOUVFRhISEMHv2bEJCQsp4RDfp9Xo2b97MX3/9xeXLl3F1daVp06YMHz7cbB9HIWxNyjop6yqalHXWKUtZV5zt27fzySefADBp0iTuvPPOcsVncubMGX755ReOHz9OTk4OoaGh9O7dmxEjRuDh4WGTfTgaqRBWU6mpqUydOpXExERcXFwIDAxEr9dz+fJlLl++TEREBB988IFSIF25coX//e9/SmEaGBiIVqvlxIkTnDhxgvDwcP73v/+hVquV9FC2u6ZarZbXX3+dixcv4uvri6+vL6mpqWzatIk9e/Ywa9asEi9ui9OvXz++++478vPz2b9/P/379y+SxnSx3bNnT7y8vJQveJVKZbGDdcGLBHPNNMoiNTWV1157jcTERLy9valRowYpKSls2bKF6OhoFi5cWKhpymeffcbmzZsB8PPzIzg4mNTUVCIjI9m7dy8vvfSScsevsuh0OqBw/ljr5MmTADRr1sxiGlMhGRERwfjx44vsx2AwKP9PS4Xk/v37yczMRKVScd9995UYl5+fH3PnzuX69etmK2Ol1apVK3744Qfl72PHjvHWW29ZTG8wGIiOjgawODBMq1atcHV1JS8vj1OnThX7mamoyiDA3Llz2b17N66urkr/lCNHjnDkyBFGjx7N2LFjbbIfIcyRsk7KusoiZV3JSlvWFaeiKoN79uxh0aJF6HQ6goODUavVXLp0iRUrVhAZGcm7776Lr6+vTfblSKRCWE2tWLGCxMREWrduzeuvv67cfUtJSWH+/PkcO3aM5cuX8+KLL5KXl8d7771HYmIiHTt25KWXXlIKz127djF//nwOHjzIjh07lALHVKhotVpmz55NTEwMWq0WPz8/2rRpw/Dhw2nRooXZ2KKiovD19eWdd95ROmf/888/zJ07lwsXLvD+++8rbdrLwjQi2KFDh4iMjCxSSObk5LB//34ABg4cCBibhPz888+oVCqL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2S1OIYTz2Lp1K88++yxjxozhyy+/JDc3194hiQp28uRJzp8/j0aj4Y033lAqgwB169blzTffRKVSkZmZyalTp+wYqSircj8h7NWrl9Vp8/PzuXr1KleuXAGMk9I3b96c3r17lzcMUQrvvvsu+/bto3nz5nz00Udm03z99dds2LCBVq1a8cEHHwBw/vx5fv31V44dO8b169cJDg6mX79+PPDAA2a3sXDhQrZv386QIUN4/vnnyxXzihUrWLlyJYMHD+a5557jt99+Y8eOHcTHx+Pu7k6zZs14+OGHadmypdn1T58+zdq1azl+/DgZGRn4+/vTrl07hg0bRrNmzZR0SUlJvPjii2i1Wrp27cr//ve/QttJS0vjv//9L1lZWdx777306NGDt956S1l+6NAhhg8fTtu2bZk9e7byflZWFj///DORkZGkpaURGBhIjx49eOCBB/juu+/Yvn07L730EoMGDSq0v6ysLNauXcvevXuJj4/H1dWVBg0aMHDgQAYOHFhkHs9p06YRHR3NSy+9RKtWrfjpp584cuQI2dnZ1KtXj5EjR9KnTx/S09P56aef2LdvH9euXSMgIIBevXoxZswYPDw8yvx/Mufq1ausXLmSI0eOkJmZSUBAAD179uSRRx7By8urUFqdTseff/7J33//zeXLl8nLyyMgIIC2bdvywAMPUL9+/XLHYzqX+vXrx8SJE1mzZg07d+4kOTkZPz8/unXrxkMPPURQUJDFbezatYsNGzZw4cIFABo2bMjdd9/NgAEDCs3LeuzYMd566y1CQkL4+uuv2bx5M3/++SdxcXH4+PjQuXNnHnvsMQICAti9ezfr1q1Tttm4cWMeeughOnbsWGT/Op2Ov/76i23btnH58mXUajW1atWiZ8+eDBs2DG9vbwASEhK4fv06gNntqFQqGjRowOXLl7lx40bZMtSCK1eusHLlSg4fPoxWqyU4OJju3bszatQo/Pz8bLovIRyBs5WtL7zwAhcvXqRPnz689tprZtO899577N27l379+vHKK68AkJmZSXZ2ttK6Kzs7m+zs7DLHYa2jR4+yatUqzp49S05ODnXq1OGuu+5i6NChRebDzszMZNWqVezbt4/ExETUajUhISF07dqVBx54wCbfQabydtKkSbRr145ffvmFQ4cOkZmZSa1atejfvz8jRozAzc3N7Pp5eXmsW7eO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EOLi4mwWm6urK2+++Wah8r1r1648++yzAGzfvp20tLQi6z311FMMHTpUecLl4+PD5MmTCQoKIj8/n99//73IOiqViv/7v/9TbhK6uLgo1zFgvKE9atQo5Vqnfv36SresgnkUFhbG5cuX8ff354033ij0tLR3795K+RMREWH2mGNjY7nvvvt4+OGHmTFjBpcuXaJv375FKr7l1bx5c15//XUlPrVazYABA5T4Nm7cWGkt1Ko6+37Chd2YngacOHGC9PR05X29Xl+kSYvp76FDhxZ5WgJw9913V1phUatWLbp06VLkfdOdK1OTBTB+YZkqSwWbuxRkag568uRJcnJylPeDgoIYP348YPzinDFjBmlpaTRo0IBHHnnE6nhNFYru3bubHU23U6dOZpvOhYeHAyhPk25Vu3ZtZUTIo0ePFlneq1evIs0oTENEA3Tr1q3IOqb4CuZheXXt2hUfH58i75uOueC5Z6oMHTx4UGk2auLi4sLHH3/MkiVLijTDKitvb2+zfaBDQ0OViyRzeXvrXX+ToUOHAsYR124t/FUqVZEndXDzf9KlS5ci/2dz/4/IyEgMBgONGjUye1Oic+fOjBs3jtGjR1sc6ME0XL3pZsDFixeZPXt2of9FefXq1avQ+WbSpUsX5X9//Phxm+1PCEfhbGWraZqk/fv3o9PplPezsrLMNhe1l/79+xdpGeLu7q5U+Armtelm3caNG4tU/OrXr8+SJUuU/pu20KlTp0LdREx69+6Np6en0tWjIDc3N+66664i67i6uipNRaOjo4ssb9KkSZHm/QUrvV27di2yjrmyxHTu9enTp0hffoD//Oc/jBs3zuIUEu7u7tStW7dQl5UdO3bw5ZdfFjqPyuuee+4x+9kwlcPXr19XplQS5SO9MaupNm3aEBISQmJiInv27FG+gI4fP05aWhoBAQF07NiRnJwc5Qu14N3+gry8vKhVq5bZJ1W2FhISYvZ909ONghfBpi8JlUplscO8iV6vJzU1tVB/voEDB7J792727dtHbGwsGo2GKVOmlKq9+qVLlwCK9GssqGHDhoXm4iyY52vWrOHPP/80u15qaipgHAjnVuYqmaYLC41GY7bfoYktv8wt9RMz9/8aOnQo4eHhxMfH88477xASEkLbtm1p3bo17du3t3mfsyZNmli82GrYsCGHDh0ym7eWmtMW7G+YkpJS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m0aNGjF48GD+85//mP2+c3Nz45133uGXX35hx44dpKamKjcRHn74YYuDDNlS586dWbBggTIAUkpKCj4+PrRq1Yr77ruvSNPPYcOG0ahRI37//XdOnjxJWloaLi4u3HbbbbRr1457773XZt0OTO69917at2/PmjVruHTpEiqVinbt2nHfffcprYqEbagM5Wyg7uHhQV5eHgsXLuSFF14o1bpBQUFcu3aNOXPmMHXq1PKE4ZDmzZtHZmYmHh4eDB482N7hVLqFCxeyfft2hgwZwvPPP2/vcBzWU089RXJyMnPnzqVly5b2DqfKW7FiBStXrqRTp06888479g5HOKAtW7aQnZ2Nr6+vdGsooLqXaY5CylbHMG3aNKKjo3n88cdt2kxSCFuytjwr9xPCoKAg4uPjSz3SYX5+vtL0rTTzywjn4YgDzVS2/fv38+eff1KzZk0mTpxYZPnp06dJTk7G3d1dRl0UQghRIilbhRC2Vu4KYfv27bl69Sq//fYbM2fOtLoJ259//olOp0OlUsmFcBVkMBiUKRNMc8RMnz6d6OjoUm0nJCREGYjCGQUFBREVFQUYj+W+++5T+mXExMSwcOFCAO6+++4K7S9QFiNGjCj1OgMHDuTFF1+0fTC3WLlyJStXriz1es58LlWWTz75hO3bt5d6PdPgNEKIiuNsZWt0dHSZmr2++OKLlTLKqSPnnbN79tlnS/2wqG3btrz77rsVFJEoTrkrhA899BCbN28mJiaGyZMns3DhwhIrhVevXlUGbPD09CzVRN/C8X399dds3ryZ3Nxc4ObE15MmTTI79UJxnLVTu0njxo2599572bBhA99//z3Lly8nMDCQGzduKB2xW7duzWOPPWbnSIv6+OOPS72OpX53tjZkyBB69uxZ6vXMTSgvChszZkyp+4QLISqeM5atTZs2LVNZUnCk+orkyHn3/+3dd3wT9f8H8FeSNt17UChllr3Lki1LERRZIksQFXELfHHrDxQVQVFQFHGBLEGmsvdGBESRUaBQSqF07z2S+/1x5po0o2mbNknzej4effSa+9zd5z655pP33WfYuzlz5qCkpKRC27DFoPVU+aqePHkylixZggsXLmDp0qU4ceIEZs+ejaFDh+qNqBUfH49ffvkFCxYsQHJyMmQyGWbPns3hx2uZgoICqFQqhIaG4pFHHpEGrKgt0yNU1LRp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PgBAVFSUNOKoIQUFBfjtt98AiHfMe/bsKa3TvoNu6gnFxo0bzcrXtm3bTK5fs2aNtKw9uqP26KTl7eO9997D+PHjMX78eKkpq5OTE3r37g0AuH37ts7IhGVt3brV5voHJSQkSMumBiC5desWrl+/XhNZqtU01woA/Pjjj0bT/fzzz5V+cle3bl1pioSTJ09KTTgNWbt2bYX3//fff+Oxxx7DY489hoMHDxpN16ZNGwQFBQGANPCSOWzlmtQEd4DY99qYmJgY7N69G7dv35am19D+XLhx4wYuX75sdPuSkhI8/vjjGD9+PN544w04ObHxGlFNY0BIRHalfv36mD17NgDxKcKoUaNMPmkAxKcRc+fOxddff22RPEybNk1anjVrltE72kuWLJEG0XjyySd1+vmFhoZKd/0PHDhgMFA6ffo01q1bZ1ae9u3bhz179hhct3r1aml4+m7duklPBQFxzjxNvkyNxHngwAHpy/PgwYPRpEkTaZ12ebzxxhsGyyM9PR3vvPOOWedSk7SbABsL7vPy8jB16lSdaU+ocsaOHSv1pV25cqXBGx4nTpyQmkxWluaaVKlURptqxsTEYOHChRXet3Zf5u+//95ousjISKkfpPb/HKDb5zc7O1tnna1ck3379pUCa1NTXGhP/6KZdxWATjPRN954w2jz1g8++AAxMTEAgOnTp1c120RUCQwIicjuzJs3T3rKlZqaiu7du+PFF1/EyZMnde7EJycnY+3atejatSvef/99AGITLBcXlyod//HHH5eeEh4/fhxDhgzBX3/9Ja1PSkrC//3f/+Htt98GII7Q9+677+rsw8/PT3pimJSUhLFjx+LmzZsAxODpu+++k+b+MjYFRlmjRo3C119/LX3BzMrKwoIFC/D0009LaebNm6ezTUhICN577z0AwN27d9G/f38cOXJE+qKZlpaGzz//HMOHD4cgCHB2dsZnn32ms4/Ro0dL78eJEycwbNgwnSZmf/75J/r3749bt25VamCd6tSrVy+pfNetW4ePP/5YCs7T09Px008/oUOHDjh69Kg0KEhqaioKCwsZIFaCp6endP2o1WqMHTsWjz76KBYtWoSPP/4Yjz76KPr164eMjAyTE7KX58UXX5S237BhAyZNmiT1SRQEAXv37kX//v2RkZFR4WuyQYMGuP/++wEAe/fuxeOPP67TFDonJwerV6/GkCFDIAgCFAqF3qAq9evXl5ZfffVVLF26FAcOHABgO9ekTCbDokWLpL9Hjx6N9evXS4PNJCYm4vnnn8fWrVsBiBPMjxgxQko/YsQIad7VnTt34rHHHtOZyuLWrVt47rnnpM+kxo0bY8aMGRbLPxFVgEBEZIeys7OF8ePHCwD0fnx8fAR3d3ed12QymfDmm28KgiAIffv2FQAIb7zxhs4+Dx8+LKVfsWKFyePHxMQIjRo10jmGq6ur4OPjo/Oau7u7cOLECYP72LdvnyCTyXTSOzk56fz9f//3f0KLFi0EAMKUKVN0tl+xYoWUrmxZ+Pr6CnK5XOe1jz/+2GA+VCqVMGnSJJ20SqVS8PPz08mfs7OzsHr1aoP7uHPnjtC4cWOdfbi5uQkeHh7S34MHDxaef/55AYDQsGFDk+VriPb7069fvwpt27BhQ2nbW7du6axbuHChTr7lcrng7e2t89rTTz8tfPrpp9LfHh4ewgMPPCDtY8qUKdI6Y3bv3i2lmTNnjtF0derUMVhGt27dMmv77t27l5uXZcuWGb3Wtc8lMjJSZ12/fv3Mev/mzJkj7WP37t166z/99FNBoVAY/P8FIDz11FPC+++/L/19+/Ztk8cz5MKFC0JAQIDOfj09PQU3Nzed93XYsGEGrynt663sZ8WlS5d0rm3N/7+vr6/eucyfP18vbxcvXtRLp/3/XVPXpCDofo4sW7ZMb/3bb7+t9xlV9rPB29tbOH/+vN62iYmJQocOHXS29/DwELy8vHReq1OnjnDhwgWT+SSi6sMnhERklzw9PbFu3Trs3LkTPXr00FmXmZkp3VGXyWTo27cvDh8+LE2roN1vrrIaNmyIU6dO6Qz4UFBQgMzMTClN//798eeff6JXr14G9zF48GCsXr1a5wmFprml5kmK5slmeZ599ln88MMPUt/EjIwM6WlBcHAwfvzxR7z11lsGt5XL5Vi1ahWWLFkiNVcrKipCenq61Myra9euOHbsGCZNmmRwH/Xr18eJEycwdOhQ6bX8/Hzk5uZCoVDg2WefxW+//aYzmI6teO211/Dhhx9KT47VarXU1LdRo0ZYs2YNfvjhB0ycOFEqn9zcXGnibaq42bNn48KFC5g6dSrCwsKgVCoRFBSEfv36YfXq1fjxxx+l9wCo+LQHgDg1yokTJ6Sn+YD49C4/Px8uLi549913sXz58krlv02bNjh27JjOQFEFBQU6g8yEhoZi5cqVePPNN/W2b9u2Lb755hs0btwYTk5O8PHxQaNGjaT1tnRNfvTRR1i+fLl0nJKSEp3PhgEDBuDs2bM6TWk1goODcezYMbz44otS38Dc3FypFYOTkxNGjRqFv//+W5rKhohqnkwQOI42Edm/+Ph4HD9+HPfu3UNOTg48PT3RqFEjdO/eHXXr1q32Yx86dAhxcXGQy+WoW7cu+vTpgwYNGpi1fX5+Pvbt24fo6GgUFhaiSZMmeOCBB8qdbH7lypVSU7TDhw/j/vvvR15eHvbu3Yvo6GgIgoBWrVph4MCBZk/yXVhYiIMHD+L69esoKSlB/fr10b59e7Ru3dqs7QHg8uXLOHbsGDIzMxEaGopBgwZV+3tgCQkJCdi7dy/i4uIQEBCA1q1bo3fv3jojPN6+fRubNm2CSqVCnz599G5GkOU88cQTWLNmDRQKBQoKCqo02Miff/6JM2fOoKCgAGFhYXjwwQcrNVm8IVeuXMGZM2eQlJSEkpIS+Pn5oX379ujWrZs0AFZl2dI1qf3ZkJ+fj5CQEPTu3RvNmjUza/vU1FTs378fsbGxcHV1leZWDAkJqZb8EpH5GBASEdkpQwEhkS3Ly8uTBi7y9/eXpiYwpGPHjrhw4QLCw8MRFRVVU1kkInI4ttd2h4iIiGqlY8eOISwsDGFhYXoDHGm7cOGCNDBRv379aip7REQOiQEhERER1Yju3btL/eKWL1+OW7du6aWJj4/HlClTAIh9gLVHySUiIsvj7J9ERERUI/z8/PDss8/iq6++Qnp6Ojp27Ihx48ahdevWKCoqQmRkJDZv3iwNoPLcc8+xnyYRUTVjQEhEREQ1ZuHChUhISMDGjRuRlZWF7777zmC6p59+Gl988UUN546IyPEwICQiIqIa4+rqil9//RV79+7FihUr8McffyAhIQGurq6oW7cuevTogSeffJJ9B4mIaghHGSUiIiIiInJQHFSGiIiIiIjIQTEgJCIiIiIiclAMCImIiIiIiBwUA0IiIiIiIiIHxYCQiIiIiIjIQTEgJCIiIiIiclAMCImIiIiIiBwUA0IiIiIiIiIH9f8FcFw7SlWdlAAAAABJRU5ErkJggg==" }, "metadata": { "image/png": { "height": 250, "width": 450 } }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "clone distance threshold: 0.2724548579663602\n" ] } ], "source": [ "threshold = ddl.pp.calculate_threshold(vdj)\n", "print(f\"clone distance threshold: {threshold}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also manually select a value as the threshold if you wish. Note that rerunning this with `manual_threshold` is just for reproducing the plot but with the line at 0.1 in this tutorial." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Calculating threshold\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "R[write to console]: Error in (function (db, sequenceColumn = \"junction\", vCallColumn = \"v_call\", : \n", " 254 cell(s) with multiple heavy chains found. One heavy chain per cell is expected.\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Rerun this after filtering. For now, switching to heavy mode.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "R[write to console]: Running in non-single-cell mode.\n", "\n" ] }, { "data": { "image/png": "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EEKIvzlklNHg4GA+/fRTjEYjS5cu5erVq44IQwghhBBCCCHKNYdNO9G1a1cADAYDO3bscFQYwk5efvll+vXrx/Hjx5X35s+fT79+/fjyyy8dGFnpOH78OCtWrCAsLMzRoTiFSZMm0a9fP1avXu3oUOymX79+9OvXjxs3bjg6lELLyspi9erVjB8/nmeffZann36aESNGMGPGDA4dOmS3zzH/z69YscJu2xSiPHOFsvX27dv079+fDz74wO7bNp93T506ZfdtO8Lx48fp168fL7/8sqNDKZLk5GS++eYbXn31VQYNGsSgQYN49dVXWbhwoV0f7lg67kXJKnYfwqLy9PREo9Gg1+uJj493VBiiBAUGBlK9enUCAgIcHUqJO378OCtXrqRVq1bKzQ4hnMHdu3d57733uHDhAgC+vr4EBgaSnJzM3r172bt3LwMHDuSFF15wcKRCCFs4W9m6bds2DAaDo8MQJezSpUtMmjSJ9PR0AIKCggC4du0a165dY+fOnUycOJFHH33UkWGKInJYhXDv3r3odDpUKhUVK1Z0VBiiBL3wwgtykSmEgy1btowLFy4QFBTE+PHjadGiBSqVivT0dJYuXcrWrVtZs2YN7du3p2HDho4OVwhRAGcpW9PT04mIiOCnn35ydCiiFMybN4/09HQaN27Mm2++SbVq1QCIi4vjs88+49SpU3z++ee0atUKT09PB0crCsshTUYPHTrEiBEjlL+bN2/uiDCEEKJMy87OVprkjx49moceekiZJsjX15d///vfPPDAAwBER0c7LE4hhOvYvn07r7zyCkOHDuXrr78mKyvL0SGJEnbq1CkuXryIRqPhP//5j1IZBKhevTrvvfceKpWKtLQ0Tp8+7cBIRVEV+wlhhw4dbE6r0+m4fv06165dA0yT0jds2JCOHTsWNwxRCB999BH79++nYcOGfPrppxbTfPvtt2zcuJHGjRvzySefAHDx4kV++eUXjh8/zp07dwgJCeGxxx5j4MCBFrcxf/58du7cSa9evXjttdeKFfOKFStYuXIlTzzxBK+++iq//vorERERxMfH4+npSYMGDRgyZAiNGjWyuP7Zs2dZt24dJ06c4Pbt2wQEBNC8eXP69u1LgwYNlHSJiYm88cYbaLVa2rZty3//+99c27l58yb//ve/SU9P58knn+TRRx/l/fffV5YfPnyYfv360axZM2bMmKG8n56ezqpVq4iKiuLmzZsEBQXx6KOPMnDgQJYuXcrOnTt588036d69e67PS09PZ926dezbt4/4+Hjc3d2pVasW3bp1o1u3bnnm8Zw0aRIxMTG8+eabNG7cmJ9++omjR4+SkZFBjRo1GDBgAJ06dSI1NZWffvqJ/fv3c+vWLQIDA+nQoQNDhw7Fy8uryN+TJdevX2flypUcPXqUtLQ0AgMDad++Pc8++ywVKlTIlVav1/PHH3/w559/cvXqVbKzswkMDKRZs2YMHDiQmjVrFjse87H02GOPMWbMGNauXcuuXbtISkrC39+fdu3a8cwzzxAcHGx1G7t372bjxo1cunQJgNq1a9OzZ0+6du2aa17W48eP8/7771O5cmW+/fZbtmzZwh9//EFcXBy+vr60bt2a559/nsDAQPbs2cP69euVbdatW5dnnnmGli1b5vl8vV7P1q1b2bFjB1evXkWtVlOlShXat29P37598fHxAeDGjRvcuXMHwOJ2VCoVtWrV4urVq9y9e7doGWrFtWvXWLlyJUeOHEGr1RISEsIjjzzCoEGD8Pf3t+tnCeEMXK1sff3117l8+TKdOnXinXfesZhm+vTp7Nu3j8cee4y3334bgLS0NDIyMpTWXRkZGWRkZBQ5DlsdO3aM1atXc/78eTIzM6lWrRo9evSgT58+eebDTktLY/Xq1ezfv5+EhATUajWVK1embdu2DBw40C7nIHN5O3bsWJo3b87PP//M4cOHSUtLo0qVKnTp0oX+/fvj4eFhcf3s7GzWr19PWFgY8fHxeHt706hRIwYOHEjjxo1zpTWXW926deOVV17hl19+Yffu3dy8eZPg4GC6du3KoEGDAFi/fj07d+5UttmsWTNefPFFQkND88SQnp7O2rVriYqKIjExER8fH6pWrUrPnj3p3Lmzco2Rs6wLDAzMs53AwED8/f1JTU21+7Fw+PBhfv31V86ePYtOp6NGjRp069aNf/7zn2g0DmvoWOYUOyf37t2b78T09zMajcrrkJAQaWrgAF26dGH//v2cPXuWpKQkQkJCci03Go3s2bMHgG7dugFw8OBBpk+fjk6nQ61WExISwu3bt5UL/ezs7FKJPT09nXfffZdz587h5+dHQEAASUlJHDp0iGPHjjF79mzq1auXa53169fzv//9D6PRiEajISgoiNTUVMLCwggPD+e5555j8ODBAFSqVImRI0fy+eefEx0dTXh4OI899piyra+//pr09HSqV6/O8OHDuXz5MtWrV+f27dukpaXh5eVFcHAwlSpVUtaJj49n8uTJJCQkoFKpCAwMJCMjg/Xr1xMVFUXVqlUt7uuVK1f44IMPSE5OBkzt9fV6PSdOnODEiRNs2bKFDz/8ULn4z+n06dN8++233Llzh6CgILKysjh37hyzZ88mMTGR3377jaSkJCpUqICvry+JiYmsX7+eK1eu8OGHHxb7ezK7fPkya9euJT09HX9/fypUqEBCQgLr16/nzJkzzJgxQylwDAYDH330EQcPHgQgICAAf39/kpKSCAsLIzIykv/7v//joYcesktsWq2Wd999l8uXL+Pn54efnx8pKSls3ryZvXv3Mm3aNGrVqpVnvSVLlrBnzx7c3NyU/4PY2FhiY2M5evQo48ePz7OOwWBg7ty5hIeH4+XlhaenJykpKWzfvp2zZ8/y8MMP88svv6BSqQgODubWrVucOHGCKVOmMGPGDJo0aaJsKyMjg+nTp3P06FHAVBDr9XouXLjAhQsX2LZtG7NmzSIoKAh/f38mTJiAWq3G29s7T1x6vZ7z588DKE8K7eH06dOsW7eOjIwMAgMD8fPz4/r166xbt47IyEimT59u8eJECFfmamVr165dWbp0KdHR0WRlZeWpuNy5c4fDhw/nihdgwIABDBgwQPnbXFkpSX/++SebN2/GYDAQEhKCTqfj0qVLfPPNNyQnJ+dqQpuSksLEiRNJSEjAzc2NoKAgDAYDV69e5erVq0RGRvLJJ5/ke9OvMM6dO8eSJUu4c+cOgYGBeHp68tdff7Fs2TIOHDjA1KlT85x/s7KymDx5MrGxsXh5eREUFERycjL79+8nOjqaMWPG0LNnzzyfdfv2bSZOnMiVK1fw9/dHpVJx/fp1VqxYQUJCAklJSRw5cgSNRkNAQAApKSns2bNHac7p5+enbOvatWv897//VSrMQUFBaLVaTp48ycmTJwkPD+e///0varWaJk2aMGHCBIuVQTBd56SlpQFQo0YNu+QrwO+//86ePXtQqVRUqlQJrVbL+fPnOX/+PPv37+e///0v7u7udvu88swuVeuclbz8mC92HnjgAfr06cPYsWOpUqWKPUIQhfDwww/j4+ODVqtl79699O3bN9fykydPkpycjIeHBx07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7/bBercP1nvFlff/2+27jDqCRx55BBkZGahWrRq2bdtm7+K4Dda7fbDebY91TrbCc80+WO/2wXq3D9a79bHjLRERERERkZtiQEhEREREROSmGBASERERERG5KQaEREREREREbooBIRERERERkZvitBMOYNSoUSgsLISfn5+9i+JWWO/2wXq3PdY52QrPNftgvdsH690+WO/Wx2kniIiIiIiI3BS7jBIREREREbkpBoRERERERERuigEhERERERGRm2JSmUqQk5ODjRs34uTJk8jIyICvry8aNGiARx55BO3atavw/v744w9s3rwZKSkpuHv3LsLDw9GhQwcMGTIEAQEBlXAEzsna9X7gwAHs3bsXycnJKCgogK+vL+rXr4/evXujW7dukMlklXAUzsXadV7WTz/9hLVr16JNmzZ49913rVBi12Dtek9NTcXatWvxzz//ICcnBz4+PoiKikKvXr3w0EMP8Vx3Y2zP7IPtmX2wTbM9tmeOgUllrOzGjRt48803kZ2dDblcjpCQENy9exeFhYUAgCFDhmD8+PFm72/58uXYsGEDAKBKlSrw8/NDdnY21Go1wsLC8N5776FWrVqVcizOxJr1LggCPv74Yxw+fBgA4OPjA39/f2RlZUGtVgMAevfujSlTplTOwTgJa5/rZZ09exYzZ86EWq1m46nF2vX+559/4oMPPkBxcTEUCgVCQ0NRUFCAO3fuAAAeeughTJo0qVKOhRwb2zP7YHtmH2zTbI/tmePgHUIrEgQBc+fORXZ2Nho2bIhXX30VERERUKvViI+PxxdffIGNGzeiYcOG6NKlS7n7O3LkCDZs2AC5XI5nn30W/fv3h0KhQFZWFubPn49z585h3rx5+OSTT6BQKGxwhI7J2vW+ZcsWHD58GF5eXpg4cSJ69uwJhUKB4uJirFu3DqtXr8bevXvRrFkz9O3b1wZH6HisXedl5efnY+HChdIXFhJZu96zsrIwb948FBcXo1evXnjqqacQEBAAlUqFXbt2YenSpdi5cye6deuGFi1a2OAIyVGwPbMPtmf2wTbN9tieORaOIbSiw4cP4+rVq/Dy8sKMGTMQEREBAJDL5ejduzf69esHAFi1alW5+xIEQVrvkUcewYABA6RGMjQ0FK+88go8PDyQnJyMI0eOVNIROQdr1jsAbNu2DQAQFxeHPn36SPXu5eWFUaNG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0vsolUqd/w29evXCiRMndLrSalSrVg0HDx7EpEmTpLGBhYWFUi8GDw8PDB06FH/99Zc0lQ0R2Z5MEJhHm4ic382bN3Ho0CHcuHEDBQUFqFq1KurWrYsOHTogMjKy0t973759SE1NhVwuR2RkJLp27YratWubtf3du3exa9cuJCUloaioCPXr10e/fv3KnWx++fLlUle0+Ph49OjRA3fu3MHOnTuRlJQEQRDQtGlT9O7d2+xJvouKirB3715cvHgRSqUStWrVQsuWLdGsWTOztgeAc+fO4eDBg8jNzUXNmjXRp0+fSv8MrCEtLQ07d+5EamoqQkND0axZM3Tp0kUnw+PVq1exbt06qFQqdO3aVe9iBFnP//73P6xYsQIKhQL37t27r2Qjf/zxB44fP4579+4hKioKDz30kEWTxRty/vx5HD9+HBkZGVAqlQgODkbLli3Rvn17KQGWpRzpnNT+33D37l1ERESgS5cuaNiwoVnbZ2VlYffu3UhJSYGPj480t2JERESllJeIzMeAkIjISRkKCIkc2Z07d6TERSEhIdLUBIa0bt0ap0+fRnR0NBITE21VRCIit+N4fXeIiIjIJR08eBBRUVGIiorSS3Ck7fTp01Jiou7du9uqeEREbokBIREREdlEhw4dpHFxS5cuxZUrV/TWuXnzJsaNGwdAHAOsnSWXiIisj7N/EhERkU0EBwfjueeew2effYacnBy0bt0aI0aMQLNmzVBcXIyEhASsX79eSqAyceJEjtMkIqpkDAiJiIjIZubNm4e0tDSsXbsWeXl5+Prrrw2u9/TTT+OTTz6xcemIiNwPA0IiIiKyGR8fH/zyyy/YuXMnli1bht9//x1paWnw8fFBZGQkOnbsiCeffJJjB4mIbIRZRomIiIiIiNwUk8oQERERERG5KQaEREREREREbooBIRERERERkZtiQEhEREREROSmGBASERERERG5KQaEREREREREbooBIRERERERkZtiQEhEREREROSm/h8SNUovLA7PiAAAAABJRU5ErkJggg==" }, "metadata": { "image/png": { "height": 250, "width": 450 } }, "output_type": "display_data" } ], "source": [ "_ = ddl.pp.calculate_threshold(vdj, manual_threshold=0.1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "We can run `ddl.tl.define_clones` to call *changeo's* `DefineClones.py`; see [here](https://changeo.readthedocs.io/en/stable/methods/clustering.html) for more info. The value in dist option (corresponds to threshold value) needs to be manually supplied. Additional options for `ddl.tl.define_clones` to provide to `DefineClones.py` can be supplied as a list to the `additional_args` option." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Finding clones\n", "Running command: DefineClones.py -d /var/folders/_r/j_8_fj3x28n2th3ch0ckn9c40000gt/T/tmpr23pu9an/tmp/dandelion_define_clones_heavy-clone.tsv -o /var/folders/_r/j_8_fj3x28n2th3ch0ckn9c40000gt/T/tmpr23pu9an/dandelion_define_clones_heavy-clone.tsv --act set --model ham --norm len --dist 0.2724548579663602 --nproc 1 --vf v_call_genotyped\n", "\n", " START> DefineClones\n", " FILE> dandelion_define_clones_heavy-clone.tsv\n", " SEQ_FIELD> junction\n", " V_FIELD> v_call_genotyped\n", " J_FIELD> j_call\n", " MAX_MISSING> 0\n", "GROUP_FIELDS> None\n", " ACTION> set\n", " MODE> gene\n", " DISTANCE> 0.2724548579663602\n", " LINKAGE> single\n", " MODEL> ham\n", " NORM> len\n", " SYM> avg\n", " NPROC> 1\n", "\n", "PROGRESS> [Grouping sequences] 15:09:55 (2401) 0.0 min\n", "\n", "PROGRESS> [Assigning clones] 15:09:57 |####################| 100% (2,401) 0.0 min\n", "\n", " OUTPUT> dandelion_define_clones_heavy-clone.tsv\n", " CLONES> 2243\n", "RECORDS> 2401\n", " PASS> 2401\n", " FAIL> 0\n", " END> DefineClones\n", "\n", " finished: Updated DandelionPolars object: \n", " 'data', contig-indexed AIRR table\n", " 'metadata', cell-indexed observations table\n", " (0:00:07)\n" ] }, { "data": { "text/plain": [ "Lazy Dandelion object with n_obs = 2493 and n_contigs = 5760\n", " data: sequence_id, sequence, rev_comp, productive, v_call, d_call, j_call, sequence_alignment, germline_alignment, junction, junction_aa, v_cigar, d_cigar, j_cigar, stop_codon, vj_in_frame, locus, junction_length, np1_length, np2_length, v_sequence_start, v_sequence_end, v_germline_start, v_germline_end, d_sequence_start, d_sequence_end, d_germline_start, d_germline_end, j_sequence_start, j_sequence_end, j_germline_start, j_germline_end, v_score, v_identity, v_support, d_score, d_identity, d_support, j_score, j_identity, j_support, fwr1, fwr2, fwr3, fwr4, cdr1, cdr2, cdr3, cell_id, consensus_count, umi_count, v_call_10x, d_call_10x, j_call_10x, junction_10x, junction_10x_aa, j_call_blastn, j_identity_blastn, j_alignment_length_blastn, j_number_of_mismatches_blastn, j_number_of_gap_openings_blastn, j_sequence_start_blastn, j_sequence_end_blastn, j_germline_start_blastn, j_germline_end_blastn, j_support_blastn, j_score_blastn, j_sequence_alignment_blastn, j_germline_alignment_blastn, j_call_igblastn, j_source, j_support_igblastn, j_score_igblastn, d_call_blastn, d_identity_blastn, d_alignment_length_blastn, d_number_of_mismatches_blastn, d_number_of_gap_openings_blastn, d_sequence_start_blastn, d_sequence_end_blastn, d_germline_start_blastn, d_germline_end_blastn, d_support_blastn, d_score_blastn, d_sequence_alignment_blastn, d_germline_alignment_blastn, d_call_igblastn, d_source, d_support_igblastn, d_score_igblastn, v_call_genotyped, germline_alignment_d_mask, sample_id, c_call, c_sequence_alignment, c_germline_alignment, c_sequence_start, c_sequence_end, c_score, c_identity, c_call_10x, junction_aa_length, fwr1_aa, fwr2_aa, fwr3_aa, fwr4_aa, cdr1_aa, cdr2_aa, cdr3_aa, sequence_alignment_aa, v_sequence_alignment_aa, d_sequence_alignment_aa, j_sequence_alignment_aa, complete_vdj, j_call_multimappers, j_call_multiplicity, j_call_sequence_start_multimappers, j_call_sequence_end_multimappers, j_call_support_multimappers, mu_count, extra, ambiguous, rearrangement_status, clone_id, changeo_clone_id\n", " metadata: cell_id, changeo_clone_id, changeo_clone_id_rank, sample_id, productive_VDJ, productive_VJ, d_call_VDJ, j_call_VDJ, j_call_VJ, junction_VDJ, junction_VJ, junction_aa_VDJ, junction_aa_VJ, locus_VDJ, locus_VJ, v_call_VDJ, v_call_VJ, c_call_VDJ, c_call_VJ, umi_count_VDJ, umi_count_VJ, productive_VDJ_main, productive_VJ_main, d_call_VDJ_main, j_call_VDJ_main, j_call_VJ_main, junction_VDJ_main, junction_VJ_main, junction_aa_VDJ_main, junction_aa_VJ_main, locus_VDJ_main, locus_VJ_main, v_call_genotyped_VDJ_main, v_call_genotyped_VJ_main, c_call_VDJ_main, c_call_VJ_main, umi_count_VDJ_main, umi_count_VJ_main, isotype, isotype_main, isotype_status, locus_status, chain_status, rearrangement_status_VDJ, rearrangement_status_VJ\n", " distances: distance matrix of shape (2493, 2493)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# make a copy of the original vdj object to compare results\n", "vdj_changeo = vdj.copy()\n", "ddl.tl.define_clones(vdj_changeo, dist=threshold, key_added=\"changeo_clone_id\")\n", "vdj_changeo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that I specified the parameter `key_added` and this adds the clone id output from `ddl.tl.define_clones` into a separate column. If left as default (`None`), it will write into `clone_id` column. The same `key_added` parameter can be specified in `ddl.tl.find_clones` earlier. You will notice that `vdj_changeo` is initisalised with `changeo_clone_id` as the first column while `vdj` has `clone_id`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Other clustering methods\n", "*dandelion* also now supports clustering methods from `scoper`. You can access the functions through:\n", "\n", "```python\n", "dandelion.external.immcancation.scoper.identical_clones(vdj, ...)\n", "dandelion.external.immcancation.scoper.hierarchical_clones(vdj, ...)\n", "dandelion.external.immcancation.scoper.spectral_clones(vdj, ...)\n", "```\n", "\n", "see the [dandelion documentation](https://sc-dandelion.readthedocs.io) for more information." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Generation of V(D)J network\n", "`dandelion` generates a network to facilitate visualisation of results, inspired from [[Bashford-Rogers2013]](https://genome.cshlp.org/content/23/11/1874). The deafult uses the full V(D)J contig amino acid sequences to chart a tree-like network for each clone, but it can also be used on any sequence columns, e.g. junctional nucleotide sequences. The actual visualization of the network is in the next tutorial." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`ddl.tl.generate_network` now accepts and returns `DandelionPolars` objects.\n", "\n", "
\n", "\n", "Reusing pre-computed distances\n", "\n", "`generate_network` now automatically detects the pre-computed distance matrix in `vdj.distances` at the start. If `vdj.distances` exists (generated by `find_clones(store_distances=True)`), the entire distance computation step is skipped. This is logged as \"Using pre-computed distances from .distances\". If `vdj.distances` is `None`, the distances will be recomputed from scratch.\n", "\n", "
\n", "\n", "\n", "\n", "
\n", "\n", "Layout Method Updates\n", "\n", "Several new layout algorithm options are available:\n", "\n", "| Method | Description |\n", "|---|---|\n", "| `mod_fr` | Original Python modified Fruchterman-Reingold layout |\n", "| `mod_fr2` | **New default.** Numba-accelerated FR layout (faster on CPU) |\n", "| `mod_fr2_gpu` | PyTorch GPU-accelerated FR (auto-tiles for >100K nodes) |\n", "| `mod_fr_bh` | Barnes-Hut O(N log N) CPU layout (scalable for large graphs) |\n", "| `mod_fr_bh_gpu` | Barnes-Hut GPU layout (requires CUDA) |\n", "| `fa2` | ForceAtlas2 (requires `fa2-modified`) |\n", "\n", "The `singleton_mass` parameter (default 0.5) controls the mass of isolated nodes in Barnes-Hut layouts. Lowering this reduces the repulsive force that singletons exert on connected components.\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before proceeding, let's do a bit of subsetting. Here I want to remove the `Orphan VJ` cells (lacking BCR heavy chain i.e. VDJ information). Whether or not you want to do this is up to you. I'm doing this because I want to focus on the BCR heavy chain for now. You may elect to keep everything and that can be your starting point for further analysis." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Lazy Dandelion object with n_obs = 2348 and n_contigs = 5590\n", " data: sequence_id, sequence, rev_comp, productive, v_call, d_call, j_call, sequence_alignment, germline_alignment, junction, junction_aa, v_cigar, d_cigar, j_cigar, stop_codon, vj_in_frame, locus, junction_length, np1_length, np2_length, v_sequence_start, v_sequence_end, v_germline_start, v_germline_end, d_sequence_start, d_sequence_end, d_germline_start, d_germline_end, j_sequence_start, j_sequence_end, j_germline_start, j_germline_end, v_score, v_identity, v_support, d_score, d_identity, d_support, j_score, j_identity, j_support, fwr1, fwr2, fwr3, fwr4, cdr1, cdr2, cdr3, cell_id, consensus_count, umi_count, v_call_10x, d_call_10x, j_call_10x, junction_10x, junction_10x_aa, j_call_blastn, j_identity_blastn, j_alignment_length_blastn, j_number_of_mismatches_blastn, j_number_of_gap_openings_blastn, j_sequence_start_blastn, j_sequence_end_blastn, j_germline_start_blastn, j_germline_end_blastn, j_support_blastn, j_score_blastn, j_sequence_alignment_blastn, j_germline_alignment_blastn, j_call_igblastn, j_source, j_support_igblastn, j_score_igblastn, d_call_blastn, d_identity_blastn, d_alignment_length_blastn, d_number_of_mismatches_blastn, d_number_of_gap_openings_blastn, d_sequence_start_blastn, d_sequence_end_blastn, d_germline_start_blastn, d_germline_end_blastn, d_support_blastn, d_score_blastn, d_sequence_alignment_blastn, d_germline_alignment_blastn, d_call_igblastn, d_source, d_support_igblastn, d_score_igblastn, v_call_genotyped, germline_alignment_d_mask, sample_id, c_call, c_sequence_alignment, c_germline_alignment, c_sequence_start, c_sequence_end, c_score, c_identity, c_call_10x, junction_aa_length, fwr1_aa, fwr2_aa, fwr3_aa, fwr4_aa, cdr1_aa, cdr2_aa, cdr3_aa, sequence_alignment_aa, v_sequence_alignment_aa, d_sequence_alignment_aa, j_sequence_alignment_aa, complete_vdj, j_call_multimappers, j_call_multiplicity, j_call_sequence_start_multimappers, j_call_sequence_end_multimappers, j_call_support_multimappers, mu_count, extra, ambiguous, rearrangement_status, clone_id\n", " metadata: cell_id, clone_id, clone_id_rank, sample_id, productive_VDJ, productive_VJ, d_call_VDJ, j_call_VDJ, j_call_VJ, junction_VDJ, junction_VJ, junction_aa_VDJ, junction_aa_VJ, locus_VDJ, locus_VJ, v_call_VDJ, v_call_VJ, c_call_VDJ, c_call_VJ, umi_count_VDJ, umi_count_VJ, productive_VDJ_main, productive_VJ_main, d_call_VDJ_main, j_call_VDJ_main, j_call_VJ_main, junction_VDJ_main, junction_VJ_main, junction_aa_VDJ_main, junction_aa_VJ_main, locus_VDJ_main, locus_VJ_main, v_call_genotyped_VDJ_main, v_call_genotyped_VJ_main, c_call_VDJ_main, c_call_VJ_main, umi_count_VDJ_main, umi_count_VJ_main, isotype, isotype_main, isotype_status, locus_status, chain_status, rearrangement_status_VDJ, rearrangement_status_VJ\n", " distances: distance matrix of shape (2348, 2348)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vdj = vdj[\n", " vdj.metadata[\"chain_status\"].is_in(\n", " [\"Single pair\", \"Extra pair\", \"Extra pair-exception\", \"Orphan VDJ\"]\n", " )\n", "].copy()\n", "vdj" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Generating network\n", "Using pre-computed distances from .distances\n", "\n", "Computing network layout\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "OMP: Info #276: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Computing expanded network layout\n", " finished.\n", " Updated Dandelion object\n", ": 'layout', graph layout\n", " (0:00:00)\n" ] } ], "source": [ "ddl.tl.generate_network(vdj)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At this point, we can save the dandelion object. We will visualise the network in the next tutorial." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "vdj.write_zipddl(\"dandelion_results_simplified.zipddl\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Full pairwise distance computation\n", "\n", "With version 1.0.0, we are bringing back the option to compute the full pairwise distance matrix for every pair of cells. This is useful if you want to have a more comprehensive view of the relationships between cells, rather than just within clones. However, this can be quite memory intensive, especially for large datasets. For that purpose, we have refactored the distance computation to allow for parallelization, as well as with lazy evaluation using `dask` and `zarr` arrays, which allows for handling larger datasets without running into memory issues. This is particularly useful when calculating the full pairwise distance matrix for every pair of cells, which can be quite memory-intensive. While this can also be used for `distance_mode='clone'`, it's incredibly slow. Its main advantage is for `distance_mode='full'` due to contigous nature of the distance matrix.\n", "\n", "Note that with `distance_mode='full'`, the required memory scales quadratically with the number of cells, so be cautious when using this option with large datasets. Using `dask` and `zarr` arrays can help mitigate this issue by allowing for out-of-core computation and parallel processing. This will create a `zarr` array on disk to store the distance matrix, which can later be read into memory in the `DandelionPolars` object with `vdj.compute()`, or specifying the path to the `zarr` array when reading the `DandelionPolars` object with `ddl.read_zipddl`.\n", "\n", "
\n", "\n", "`distance_mode` Options\n", "\n", "| Mode | Description |\n", "|---|---|\n", "| `\"clone\"` | **Default.** Computes distances only within clones. Memory efficient, suitable for most use cases. |\n", "| `\"full\"` | Computes full pairwise distances between all cells. Memory intensive — recommended to use with `lazy=True`. |\n", "\n", "
\n", "\n", "
\n", "\n", "New Feature: Lazy Disk-Level Distance Computation\n", "\n", "For large datasets, use `lazy=True` to offload distance computation to disk.\n", "\n", "In lazy mode:\n", "- The distance matrix is stored as a Zarr array on disk, with a Dask lazy view on top.\n", "- `vdj.distances` returns a `dask.array.Array` that computes on demand.\n", "- Call `vdj.compute()` to materialize it into an in-memory CSR sparse matrix.\n", "\n", "`zarr_path` controls the storage location. If not specified, a temporary directory is created.\n", "\n", "
\n", "\n", "
\n", "\n", "When pre-computed CSR distances are detected, `lazy` is automatically forced to `False`, since the CSR matrix is already in memory and disk-level lazy loading is unnecessary. You can run `vdj.distances = None` to delete the pre-computed CSR distances.\n", "\n", "
\n", "\n", "Finally, while pairwise distance computation is now possible, the final graph and layout is still based on within-clone distances only for performance reasons i.e. it will behave as before. In the future, we may explore options to incorporate full pairwise distances into the graph construction and visualization. We will demonstrate alternative ways to visualise the full pairwise distances in a later tutorial where use use `UMAP` and `wnn` on the full distance matrix." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To be able to use `lazy=True`, you need to have `dask`, `zarr` and `distributed` installed in your environment.\n", "\n", "```bash\n", "pip install \"sc-dandelion[dask]\"\n", "```\n", "\n", "#### Caveats with lazy distance matrix computation\n", "\n", "With `lazy=True`, the distance matrix computation will be performed lazily on disk, which allows for handling larger datasets without running into memory issues. This is particularly useful when calculating the full pairwise distance matrix for every pair of cells, which can be quite memory-intensive.\n", "\n", "While this can also be used for `distance_mode='clone'`, it is not recommended for this mode as the distance matrix computation is already efficient enough for this mode.\n", "\n", "This is also going to be slower than the in-memory computation for smaller datasets, so it's generally recommended to use `lazy=True` only for larger datasets where memory constraints are a concern." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Generating network\n", "Calculating distance matrix lazily with distance_mode = 'full'\n", "\n", "Preparing distance matrix computation for 2348 sequences across 1 columns...\n", "Auto-determined chunk size: 2348 (for 2348 sequences)\n", "Dask client started: http://127.0.0.1:8787/status\n", "\n", "Created Zarr array at: distance_matrix.zarr\n", "Scattered DataFrame to workers\n", "Starting computation of 1 chunks...\n", "Merging temporary results into final Zarr array...\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 1/1 [00:00<00:00, 2.12it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Computing network layout\n", "Computing expanded network layout\n", " finished.\n", " Updated Dandelion object\n", ": 'layout', graph layout\n", " (0:09:59)\n" ] } ], "source": [ "# we will demonstrate one example here where we use the lazy method to compute the network\n", "vdj_lazy = vdj.copy()\n", "ddl.tl.generate_network(\n", " vdj_lazy,\n", " use_existing_distance=False, # to overwrite the existing distance matrix\n", " use_existing_graph=False,\n", " distance_mode=\"full\",\n", " lazy=True,\n", " n_cpus=8,\n", " zarr_path=\"distance_matrix.zarr\", # this is where the final computed distance matrix will be stored on disk\n", ")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Lazy Dandelion object with n_obs = 2348 and n_contigs = 5590\n", " data: sequence_id, sequence, rev_comp, productive, v_call, d_call, j_call, sequence_alignment, germline_alignment, junction, junction_aa, v_cigar, d_cigar, j_cigar, stop_codon, vj_in_frame, locus, junction_length, np1_length, np2_length, v_sequence_start, v_sequence_end, v_germline_start, v_germline_end, d_sequence_start, d_sequence_end, d_germline_start, d_germline_end, j_sequence_start, j_sequence_end, j_germline_start, j_germline_end, v_score, v_identity, v_support, d_score, d_identity, d_support, j_score, j_identity, j_support, fwr1, fwr2, fwr3, fwr4, cdr1, cdr2, cdr3, cell_id, consensus_count, umi_count, v_call_10x, d_call_10x, j_call_10x, junction_10x, junction_10x_aa, j_call_blastn, j_identity_blastn, j_alignment_length_blastn, j_number_of_mismatches_blastn, j_number_of_gap_openings_blastn, j_sequence_start_blastn, j_sequence_end_blastn, j_germline_start_blastn, j_germline_end_blastn, j_support_blastn, j_score_blastn, j_sequence_alignment_blastn, j_germline_alignment_blastn, j_call_igblastn, j_source, j_support_igblastn, j_score_igblastn, d_call_blastn, d_identity_blastn, d_alignment_length_blastn, d_number_of_mismatches_blastn, d_number_of_gap_openings_blastn, d_sequence_start_blastn, d_sequence_end_blastn, d_germline_start_blastn, d_germline_end_blastn, d_support_blastn, d_score_blastn, d_sequence_alignment_blastn, d_germline_alignment_blastn, d_call_igblastn, d_source, d_support_igblastn, d_score_igblastn, v_call_genotyped, germline_alignment_d_mask, sample_id, c_call, c_sequence_alignment, c_germline_alignment, c_sequence_start, c_sequence_end, c_score, c_identity, c_call_10x, junction_aa_length, fwr1_aa, fwr2_aa, fwr3_aa, fwr4_aa, cdr1_aa, cdr2_aa, cdr3_aa, sequence_alignment_aa, v_sequence_alignment_aa, d_sequence_alignment_aa, j_sequence_alignment_aa, complete_vdj, j_call_multimappers, j_call_multiplicity, j_call_sequence_start_multimappers, j_call_sequence_end_multimappers, j_call_support_multimappers, mu_count, extra, ambiguous, rearrangement_status, clone_id\n", " metadata: cell_id, clone_id, clone_id_rank, sample_id, productive_VDJ, productive_VJ, d_call_VDJ, j_call_VDJ, j_call_VJ, junction_VDJ, junction_VJ, junction_aa_VDJ, junction_aa_VJ, locus_VDJ, locus_VJ, v_call_VDJ, v_call_VJ, c_call_VDJ, c_call_VJ, umi_count_VDJ, umi_count_VJ, productive_VDJ_main, productive_VJ_main, d_call_VDJ_main, j_call_VDJ_main, j_call_VJ_main, junction_VDJ_main, junction_VJ_main, junction_aa_VDJ_main, junction_aa_VJ_main, locus_VDJ_main, locus_VJ_main, v_call_genotyped_VDJ_main, v_call_genotyped_VJ_main, c_call_VDJ_main, c_call_VJ_main, umi_count_VDJ_main, umi_count_VJ_main, isotype, isotype_main, isotype_status, locus_status, chain_status, rearrangement_status_VDJ, rearrangement_status_VJ\n", " layout: layout for 2348 vertices, layout for 148 vertices\n", " graph: networkx graph of 2348 vertices, networkx graph of 148 vertices \n", " distances: distance matrix of shape (2348, 2348)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# view the vdj object\n", "vdj_lazy" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# save using the new default .zipddl format\n", "vdj_lazy.write_zipddl(\"dandelion_results_lazy_distance_matrix.zipddl\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because the distance matrix is lazy, it is not stored in the `.zipddl` file, but rather as the separate zarr array on disk in `zarr_path`. We will show you how to read this:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Lazy Dandelion object with n_obs = 2348 and n_contigs = 5590\n", " data: sequence_id, sequence, rev_comp, productive, v_call, d_call, j_call, sequence_alignment, germline_alignment, junction, junction_aa, v_cigar, d_cigar, j_cigar, stop_codon, vj_in_frame, locus, junction_length, np1_length, np2_length, v_sequence_start, v_sequence_end, v_germline_start, v_germline_end, d_sequence_start, d_sequence_end, d_germline_start, d_germline_end, j_sequence_start, j_sequence_end, j_germline_start, j_germline_end, v_score, v_identity, v_support, d_score, d_identity, d_support, j_score, j_identity, j_support, fwr1, fwr2, fwr3, fwr4, cdr1, cdr2, cdr3, cell_id, consensus_count, umi_count, v_call_10x, d_call_10x, j_call_10x, junction_10x, junction_10x_aa, j_call_blastn, j_identity_blastn, j_alignment_length_blastn, j_number_of_mismatches_blastn, j_number_of_gap_openings_blastn, j_sequence_start_blastn, j_sequence_end_blastn, j_germline_start_blastn, j_germline_end_blastn, j_support_blastn, j_score_blastn, j_sequence_alignment_blastn, j_germline_alignment_blastn, j_call_igblastn, j_source, j_support_igblastn, j_score_igblastn, d_call_blastn, d_identity_blastn, d_alignment_length_blastn, d_number_of_mismatches_blastn, d_number_of_gap_openings_blastn, d_sequence_start_blastn, d_sequence_end_blastn, d_germline_start_blastn, d_germline_end_blastn, d_support_blastn, d_score_blastn, d_sequence_alignment_blastn, d_germline_alignment_blastn, d_call_igblastn, d_source, d_support_igblastn, d_score_igblastn, v_call_genotyped, germline_alignment_d_mask, sample_id, c_call, c_sequence_alignment, c_germline_alignment, c_sequence_start, c_sequence_end, c_score, c_identity, c_call_10x, junction_aa_length, fwr1_aa, fwr2_aa, fwr3_aa, fwr4_aa, cdr1_aa, cdr2_aa, cdr3_aa, sequence_alignment_aa, v_sequence_alignment_aa, d_sequence_alignment_aa, j_sequence_alignment_aa, complete_vdj, j_call_multimappers, j_call_multiplicity, j_call_sequence_start_multimappers, j_call_sequence_end_multimappers, j_call_support_multimappers, mu_count, extra, ambiguous, rearrangement_status, clone_id\n", " metadata: cell_id, clone_id, clone_id_rank, sample_id, productive_VDJ, productive_VJ, d_call_VDJ, j_call_VDJ, j_call_VJ, junction_VDJ, junction_VJ, junction_aa_VDJ, junction_aa_VJ, locus_VDJ, locus_VJ, v_call_VDJ, v_call_VJ, c_call_VDJ, c_call_VJ, umi_count_VDJ, umi_count_VJ, productive_VDJ_main, productive_VJ_main, d_call_VDJ_main, j_call_VDJ_main, j_call_VJ_main, junction_VDJ_main, junction_VJ_main, junction_aa_VDJ_main, junction_aa_VJ_main, locus_VDJ_main, locus_VJ_main, v_call_genotyped_VDJ_main, v_call_genotyped_VJ_main, c_call_VDJ_main, c_call_VJ_main, umi_count_VDJ_main, umi_count_VJ_main, isotype, isotype_main, isotype_status, locus_status, chain_status, rearrangement_status_VDJ, rearrangement_status_VJ\n", " layout: layout for 2348 vertices, layout for 148 vertices\n", " graph: networkx graph of 2348 vertices, networkx graph of 148 vertices \n", " distances: distance matrix of shape (2348, 2348)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# just specify the path to the distance_matirx.zarr that was created.\n", "vdj_lazy_reload = ddl.read_zipddl(\n", " \"dandelion_results_lazy_distance_matrix.zipddl\",\n", " distance_zarr=\"distance_matrix.zarr\",\n", ")\n", "vdj_lazy_reload" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Array Chunk
Bytes 42.06 MiB 42.06 MiB
Shape (2348, 2348) (2348, 2348)
Dask graph 1 chunks in 2 graph layers
Data type float64 numpy.ndarray
\n", "
\n", " \n", "\n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", "\n", " \n", " \n", "\n", " \n", " 2348\n", " 2348\n", "\n", "
" ], "text/plain": [ "dask.array" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vdj_lazy_reload.distances" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The distance matrix is read lazily as a `dask.array.Array`. To materialize the distance matrix into memory as a CSR sparse matrix, you can call `vdj.compute()`. Note that this will load the entire distance matrix into memory, so make sure you have enough RAM available." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vdj_lazy_reload.compute()\n", "vdj_lazy_reload.distances" ] } ], "metadata": { "kernelspec": { "display_name": "dandelion", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.9" } }, "nbformat": 4, "nbformat_minor": 4 }