From 7f7b4ab8d0080953e73973ea7d70d33953376dc2 Mon Sep 17 00:00:00 2001 From: Jayoung Ryu Date: Wed, 6 Dec 2023 01:34:18 -0500 Subject: [PATCH 1/8] keep ReporterScreen object --- bin/bean-run | 1 - 1 file changed, 1 deletion(-) diff --git a/bin/bean-run b/bin/bean-run index 1ab8aac..1aa08c4 100644 --- a/bin/bean-run +++ b/bin/bean-run @@ -130,7 +130,6 @@ def main(args, bdata): print("syn idx: ", adj_negctrl_idx) guide_info_df = ndata.screen.guides - del bdata info(f"Running inference for {model_label}...") From ea7365f29ff21d17b94d475853da1e11e06949e6 Mon Sep 17 00:00:00 2001 From: Jayoung Ryu Date: Wed, 6 Dec 2023 09:59:54 -0500 Subject: [PATCH 2/8] fix duplicate a0 subset error --- bean/preprocessing/data_class.py | 5 ++--- tests/test_run.py | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/bean/preprocessing/data_class.py b/bean/preprocessing/data_class.py index 961fc92..48f4347 100644 --- a/bean/preprocessing/data_class.py +++ b/bean/preprocessing/data_class.py @@ -200,7 +200,8 @@ def __getitem__(self, guide_idx): ndata.X_masked = ndata.X_masked[:, :, guide_idx] ndata.X_control = ndata.X_control[:, :, guide_idx] ndata.repguide_mask = ndata.repguide_mask[:, guide_idx] - ndata.a0 = ndata.a0[guide_idx] + if hasattr(ndata, "a0") and self.a0 is not None: + ndata.a0 = ndata.a0[guide_idx] return ndata def transform_data(self, X, n_bins=None): @@ -369,8 +370,6 @@ def __getitem__(self, guide_idx): ndata.allele_counts = ndata.allele_counts[:, :, guide_idx, :] if hasattr(ndata, "a0_allele"): ndata.a0_allele = ndata.a0_allele[guide_idx, :] - if hasattr(ndata, "a0") and self.a0 is not None: - ndata.a0 = ndata.a0[guide_idx] if hasattr(ndata, "pi_a0") and self.pi_a0 is not None: ndata.pi_a0 = ndata.pi_a0[guide_idx] if hasattr(ndata, "a0_bcmatch") and self.a0_bcmatch is not None: diff --git a/tests/test_run.py b/tests/test_run.py index baa0a80..00bca37 100644 --- a/tests/test_run.py +++ b/tests/test_run.py @@ -69,7 +69,7 @@ def test_run_tiling_with_wo_negctrl_noacc(): @pytest.mark.order(18) def test_run_tiling_with_wo_negctrl_uniform(): - cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad -o tests/test_res/tiling/ --uniform-edit --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --control-guide-tag None --repguide-mask None" + cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad -o tests/test_res/tiling/ --uniform-edit --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --control-guide-tag None --repguide-mask None" try: subprocess.check_output( cmd, From 0bb73923300c230aeb6e7f0eb68ac27dfa952de2 Mon Sep 17 00:00:00 2001 From: Jayoung Ryu Date: Wed, 6 Dec 2023 10:46:52 -0500 Subject: [PATCH 3/8] Accelerate run test, add negative control runs for testing, allow custom control_guide_tag --- bean/annotate/translate_allele.py | 13 ++++- bean/model/model.py | 29 +++++---- bean/model/run.py | 2 +- bean/preprocessing/data_class.py | 14 +++++ bin/bean-run | 1 + tests/test_run.py | 97 ++++++++++++++++++++++++++++--- 6 files changed, 132 insertions(+), 24 deletions(-) diff --git a/bean/annotate/translate_allele.py b/bean/annotate/translate_allele.py index 2e81a89..a8fe178 100644 --- a/bean/annotate/translate_allele.py +++ b/bean/annotate/translate_allele.py @@ -595,7 +595,8 @@ def strsplit_edit(edit_str): def annotate_edit( edit_info: pd.DataFrame, - edit_col="edit", + edit_col: str = "edit", + control_tag: str = "CONTROL", splice_sites: Collection[ int ] = None, # TODO: may be needed to extended into multi-chromosome case @@ -604,6 +605,7 @@ def annotate_edit( Args edit_info: pd.DataFrame with at least 1 column of 'edit_col', which has 'Edit' format. + control_tag: String tag identifying non-targeting control guides so their variant signal are not aggregated. splice_sites: Collection of integer splice site positions. If the edit position matches the positions, it will be annotated as 'splicing'. """ @@ -619,8 +621,13 @@ def annotate_edit( edit_info.loc[ edit_info.pos.map(lambda s: not s.startswith("A")), "coding" ] = "noncoding" - edit_info.loc[edit_info.pos.map(lambda s: "CONTROL" in s), "group"] = "negctrl" - edit_info.loc[edit_info.pos.map(lambda s: "CONTROL" in s), "coding"] = "negctrl" + if control_tag is not None: + edit_info.loc[ + edit_info.pos.map(lambda s: control_tag in s), "group" + ] = "negctrl" + edit_info.loc[ + edit_info.pos.map(lambda s: control_tag in s), "coding" + ] = "negctrl" edit_info.loc[ (edit_info.coding == "noncoding") & (edit_info.group != "negctrl"), "int_pos" ] = edit_info.loc[ diff --git a/bean/model/model.py b/bean/model/model.py index 96514ce..779cfc1 100644 --- a/bean/model/model.py +++ b/bean/model/model.py @@ -206,18 +206,23 @@ def ControlNormalModel(data, mask_thres=10, use_bcmatch=True): data.sample_mask, data.a0_bcmatch, ) - with poutine.mask( - mask=torch.logical_and( - data.X_bcmatch_masked.permute(0, 2, 1).sum(axis=-1) - > mask_thres, - data.repguide_mask, - ) - ): - pyro.sample( - "guide_bcmatch_counts", - dist.DirichletMultinomial(a_bcmatch, validate_args=False), - obs=data.X_bcmatch_masked.permute(0, 2, 1), - ) + try: + with poutine.mask( + mask=torch.logical_and( + data.X_bcmatch_masked.permute(0, 2, 1).sum(axis=-1) + > mask_thres, + data.repguide_mask, + ) + ): + pyro.sample( + "guide_bcmatch_counts", + dist.DirichletMultinomial(a_bcmatch, validate_args=False), + obs=data.X_bcmatch_masked.permute(0, 2, 1), + ) + except RuntimeError: + print(data.X_bcmatch_masked.shape) + print(data.repguide_mask.shape) + exit(1) return alleles_p_bin diff --git a/bean/model/run.py b/bean/model/run.py index 0cd7808..96f008f 100644 --- a/bean/model/run.py +++ b/bean/model/run.py @@ -293,7 +293,7 @@ def check_args(args, bdata): bdata.guides[args.negctrl_col].map(lambda s: s.lower()) == args.negctrl_col_value.lower() ).sum() - if not n_negctrl >= 20: + if not n_negctrl >= 10: raise ValueError( f"Not enough negative control guide in the input data: {n_negctrl}. Check your input arguments." ) diff --git a/bean/preprocessing/data_class.py b/bean/preprocessing/data_class.py index 48f4347..a48be5a 100644 --- a/bean/preprocessing/data_class.py +++ b/bean/preprocessing/data_class.py @@ -1136,6 +1136,20 @@ def set_bcmatch(self, screen): ) self.a0_bcmatch = torch.as_tensor(a0_bcmatch) + def __getitem__(self, guide_idx): + ndata = super().__getitem__(guide_idx) + if hasattr(ndata, "X_bcmatch"): + ndata.X_bcmatch = ndata.X_bcmatch[:, :, guide_idx] + if hasattr(ndata, "X_bcmatch_masked"): + ndata.X_bcmatch_masked = ndata.X_bcmatch_masked[:, :, guide_idx] + if hasattr(ndata, "X_bcmatch_control"): + ndata.X_bcmatch_control = ndata.X_bcmatch_control[:, :, guide_idx] + if hasattr(ndata, "X_bcmatch_control_masked"): + ndata.X_bcmatch_control_masked = ndata.X_bcmatch_control_masked[ + :, :, guide_idx + ] + return ndata + @dataclass class VariantSortingReporterScreenData(VariantReporterScreenData, SortingScreenData): diff --git a/bin/bean-run b/bin/bean-run index 1aa08c4..84ef141 100644 --- a/bin/bean-run +++ b/bin/bean-run @@ -117,6 +117,7 @@ def main(args, bdata): pd.DataFrame(pd.Series(ndata.edit_index)) .reset_index() .rename(columns={"index": "edit"}), + control_tag=args.control_guide_tag, splice_sites=None if args.splice_site_path is None else splice_site, ) target_info_df["effective_edit_rate"] = _obtain_effective_edit_rate(ndata).cpu() diff --git a/tests/test_run.py b/tests/test_run.py index 00bca37..3be6fea 100644 --- a/tests/test_run.py +++ b/tests/test_run.py @@ -4,7 +4,7 @@ @pytest.mark.order(13) def test_run_variant_wacc(): - cmd = "bean-run sorting variant tests/data/var_mini_screen_annotated.h5ad --scale-by-acc --acc-bw-path tests/data/accessibility_signal_chr6.bw -o tests/test_res/var/ --repguide-mask None" + cmd = "bean-run sorting variant tests/data/var_mini_screen_annotated.h5ad --scale-by-acc --acc-bw-path tests/data/accessibility_signal_chr6.bw -o tests/test_res/var/ --repguide-mask None --n-iter 10" try: subprocess.check_output( cmd, @@ -17,7 +17,7 @@ def test_run_variant_wacc(): @pytest.mark.order(14) def test_run_variant_noacc(): - cmd = "bean-run sorting variant tests/data/var_mini_screen_annotated.h5ad -o tests/test_res/var/ " + cmd = "bean-run sorting variant tests/data/var_mini_screen_annotated.h5ad -o tests/test_res/var/ --n-iter 10" try: subprocess.check_output( cmd, @@ -30,7 +30,7 @@ def test_run_variant_noacc(): @pytest.mark.order(15) def test_run_variant_wo_negctrl_uniform(): - cmd = "bean-run sorting variant tests/data/var_mini_screen_annotated.h5ad -o tests/test_res/var/ --uniform-edit " + cmd = "bean-run sorting variant tests/data/var_mini_screen_annotated.h5ad -o tests/test_res/var/ --uniform-edit --n-iter 10" try: subprocess.check_output( cmd, @@ -42,8 +42,8 @@ def test_run_variant_wo_negctrl_uniform(): @pytest.mark.order(16) -def test_run_tiling_wo_negctrl(): - cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad --scale-by-acc --acc-bw-path tests/data/accessibility_signal.bw -o tests/test_res/tiling/ --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --control-guide-tag None --repguide-mask None" +def test_run_variant_wacc_negctrl(): + cmd = "bean-run sorting variant tests/data/var_mini_screen_annotated.h5ad --scale-by-acc --acc-bw-path tests/data/accessibility_signal_chr6.bw -o tests/test_res/var/ --repguide-mask None --n-iter 10 --fit-negctrl " try: subprocess.check_output( cmd, @@ -55,8 +55,8 @@ def test_run_tiling_wo_negctrl(): @pytest.mark.order(17) -def test_run_tiling_with_wo_negctrl_noacc(): - cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad -o tests/test_res/tiling/ --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --control-guide-tag None --repguide-mask None" +def test_run_variant_noacc_negctrl(): + cmd = "bean-run sorting variant tests/data/var_mini_screen_annotated.h5ad -o tests/test_res/var/ --fit-negctrl --n-iter 10" try: subprocess.check_output( cmd, @@ -68,8 +68,47 @@ def test_run_tiling_with_wo_negctrl_noacc(): @pytest.mark.order(18) +def test_run_variant_uniform_negctrl(): + cmd = "bean-run sorting variant tests/data/var_mini_screen_annotated.h5ad -o tests/test_res/var/ --uniform-edit --fit-negctrl --n-iter 10" + try: + subprocess.check_output( + cmd, + shell=True, + universal_newlines=True, + ) + except subprocess.CalledProcessError as exc: + raise exc + + +@pytest.mark.order(19) +def test_run_tiling_wo_negctrl(): + cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad --scale-by-acc --acc-bw-path tests/data/accessibility_signal.bw -o tests/test_res/tiling/ --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --control-guide-tag None --repguide-mask None --n-iter 10" + try: + subprocess.check_output( + cmd, + shell=True, + universal_newlines=True, + ) + except subprocess.CalledProcessError as exc: + raise exc + + +@pytest.mark.order(20) +def test_run_tiling_with_wo_negctrl_noacc(): + cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad -o tests/test_res/tiling/ --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --control-guide-tag None --repguide-mask None --n-iter 10" + try: + subprocess.check_output( + cmd, + shell=True, + universal_newlines=True, + ) + except subprocess.CalledProcessError as exc: + raise exc + + +@pytest.mark.order(21) def test_run_tiling_with_wo_negctrl_uniform(): - cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad -o tests/test_res/tiling/ --uniform-edit --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --control-guide-tag None --repguide-mask None" + cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad -o tests/test_res/tiling/ --uniform-edit --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --control-guide-tag None --repguide-mask None --n-iter 10" try: subprocess.check_output( cmd, @@ -78,3 +117,45 @@ def test_run_tiling_with_wo_negctrl_uniform(): ) except subprocess.CalledProcessError as exc: raise exc + + +@pytest.mark.order(22) +def test_run_tiling_negctrl(): + cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad --scale-by-acc --acc-bw-path tests/data/accessibility_signal.bw -o tests/test_res/tiling/ --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --fit-negctrl --negctrl-col strand --negctrl-col-value neg --control-guide-tag neg --repguide-mask None --n-iter 10" + try: + subprocess.check_output( + cmd, + shell=True, + universal_newlines=True, + ) + except subprocess.CalledProcessError as exc: + raise exc + + +@pytest.mark.order(23) +def test_run_tiling_with_negctrl_noacc(): + cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad -o tests/test_res/tiling/ --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --fit-negctrl --negctrl-col strand --negctrl-col-value neg --control-guide-tag neg --repguide-mask None --n-iter 10" + try: + subprocess.check_output( + cmd, + shell=True, + universal_newlines=True, + ) + except subprocess.CalledProcessError as exc: + raise exc + + +@pytest.mark.order(24) +def test_run_tiling_with_negctrl_uniform(): + cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad -o tests/test_res/tiling/ --uniform-edit --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --fit-negctrl --negctrl-col strand --negctrl-col-value neg --control-guide-tag neg --repguide-mask None --n-iter 10" + try: + subprocess.check_output( + cmd, + shell=True, + universal_newlines=True, + ) + except subprocess.CalledProcessError as exc: + raise exc + + +# Add fit_negctrl examples From 20c819b35e6c43c5f8b6be7f45945d8c5a312e9b Mon Sep 17 00:00:00 2001 From: Jayoung Ryu Date: Fri, 15 Dec 2023 18:20:42 -0500 Subject: [PATCH 4/8] Adding integrated tutorials. Switch 'bin' to 'condition' label for sample annotation. Add tests and made QC to raise error when not enough sample is left. --- README.md | 116 ++++++++++++++------- bean/model/run.py | 17 ++- bean/qc/sample_qc.py | 20 +++- bean/qc/utils.py | 4 +- bin/bean-qc | 1 + docs/tutorials/ldl_cds.md | 109 +++++++++++++++++++ docs/tutorials/ldl_var.md | 81 ++++++++++++++ imgs/sorting_bins@8x.png | Bin 0 -> 16429 bytes notebooks/sample_quality_report.ipynb | 17 ++- tests/data/tiling_mini_screen.h5ad | Bin 1295280 -> 1295280 bytes tests/data/tiling_mini_screen_missing.h5ad | Bin 1204704 -> 1204704 bytes tests/data/var_mini_screen.h5ad | Bin 1452160 -> 1452160 bytes tests/data/var_mini_screen_missing.h5ad | Bin 1342328 -> 1342328 bytes tests/test_count.py | 13 +++ tests/test_filter.py | 25 +++-- tests/test_qc.py | 24 ++--- tests/test_run.py | 24 ++--- 17 files changed, 369 insertions(+), 82 deletions(-) create mode 100644 docs/tutorials/ldl_cds.md create mode 100644 docs/tutorials/ldl_var.md create mode 100644 imgs/sorting_bins@8x.png diff --git a/README.md b/README.md index ef03512..eead4ed 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,17 @@ This is an analysis toolkit for the pooled CRISPR reporter or sensor data. The r ### Screen data is saved as *ReporterScreen* object in the pipeline. BEAN stores mapped gRNA and allele counts in `ReporterScreen` object which is compatible with [AnnData](https://anndata.readthedocs.io/en/latest/index.html). See [Data Structure](#data-structure) section for more information. -### Examples -We provide example scripts in `tests/`. Running `pytest --sparse-ordering` generates example input/output files from running 1 and 2-4 sequentially. +

+ +## Examples +| Tutorial link | [Library design](#pipeline-run-options-by-library-design) | Selection | Reporter | +|---------------| -------------- | --------- | -------- | +| [LDL-C GWAS](docs/tutorials/ldl_var.md) | GWAS variant library | FACS sorting | Yes/No | +| [LDL-C LDLR CDS](docs/tutorials/ldl_cds.md) | Coding sequence tiling libarary | FACS sorting | Yes/No | +| TKO simulated (Coming soon!) | GWAS variant library | Survival / Proliferation | Yes/No | +| TKO simulated, tiling (Coming soon!) | Coding sequence tiling libarary | Survival / Proliferation | Yes/No | + +We also provide example scripts in `tests/`. Running `pytest --sparse-ordering` will generate example input/output files. ### Pipeline run options by library design The `bean-filter` and `bean-run` steps depend on the type of gRNA library design, where BEAN supports two modes of running. @@ -83,8 +92,8 @@ File should contain following columns. * Option 2: `accessibility_signal`: ATAC-seq signal value of the target loci of each guide. * For variant library (gRNAs are designed to target specific variants and ignores bystander edits) * `target`: This column denotes which target variant/element of each gRNA. This is not used in `bean-count[-samples]` but required to run `bean-run` in later steps. - * `target_group [Optional]`: If negative/positive control gRNA will be considered in `bean-qc` and/or `bean-run`, specify as "NegCtrl"/"PosCtrl" in this column. - * `target_pos [Optional]`: If `--match_target_pos` flag is used, input file needs `target_pos` which specifies 0-based relative position of targeted base within Reporter sequence. + * `target_group`: If negative/positive control gRNA will be considered in `bean-qc` and/or `bean-run`, specify as "NegCtrl"/"PosCtrl" in this column. + * `target_pos`: If `--match_target_pos` flag is used, input file needs `target_pos` which specifies 0-based relative position of targeted base within Reporter sequence. * For tiling library (gRNAs tile coding / noncoding sequences) * `strand`: Specifies gRNA strand information relative to the reference genome. * `chrom`: Chromosome of gRNA targeted locus. @@ -97,12 +106,18 @@ File should contain following columns with header. * `R1_filepath`: Path to read 1 `.fastq[.gz]` file * `R2_filepath`: Path to read 1 `.fastq[.gz]` file * `sample_id`: ID of sequencing sample -* `rep [Optional]`: Replicate # of this sample (Should NOT contain `.`) -* `bin [Optional]`: Name of the sorting bin -* `upper_quantile [Optional]`: FACS sorting upper quantile -* `lower_quantile [Optional]`: FACS sorting lower quantile +* `rep`: Replicate # of this sample (Should NOT contain `.`) +* `condition`: Name of the sorting bin (ex. `top`, `bot`), or label of timepoint (ex. `D5`, `D18`) + +For FACS sorting screens: +* `upper_quantile`: FACS sorting upper quantile +* `lower_quantile`: FACS sorting lower quantile -Optional columns are not required but can be provided for compatibility with `bean-qc` and `bean-run`. See [example](tests/data/sample_list.csv). +For proliferation / survival screens: +* `time`: FACS sorting upper quantile + + +Also see examples for [FACS sorting screen](tests/data/sample_list.csv). ### Output file format `count` or `count-samples` produces `.h5ad` and `.xlsx` file with guide and per-guide allele counts. @@ -111,35 +126,45 @@ Optional columns are not required but can be provided for compatibility with `be ### Parameters * `-b`, `--edited-base` (`str`, default: `None`): For base editors, the base that should be ignored when matching the gRNA sequence +* `-i`, `--input`: List of fastq and sample ids. See above for the format. * `-f`, `--sgRNA-filename` (`str`, default: `None`): sgRNA description file. (See above) -* `--guide-start-seq`: Guide starts after this sequence in R1 (default: '') -* `--guide-end-seq`: Guide ends after this sequence in R1 (default: '') -* `-r`, `--count-reporter` (default: `False`): Count edited alleles in reporters. -* `-q`, `--min-average-read-quality` (default: `30`): Minimum average quality score (phred33) to keep a read -* `-s`, `--min-single-bp-quality` (default: `0`): Minimum single bp score (phred33) to keep a read (default: 0) + +Output formats * `-n`, `--name`: Name of the output file will be `bean_count_{name}.h5ad`. * `-o`, `--output-folder`: Output folder +* `--tiling`: Specify that the guide library is tiling library +* `-r`, `--count-reporter` (default: `False`): Count edited alleles in reporters. +* `--string-allele` (default: `False`): Store allele as quality filtered string instead of Allele object +* `-g`, `--count-guide-edits` (default: `False`): count the self editing of guides (default: False) +* `-m`, `--count-guide-reporter-alleles`: count the matched allele of guide and reporter edit +* `--match-target-pos` (default: `False`): Count the edit in the exact target position. +* `--target-pos-col` (default: `target_pos`): Column name specifying the relative target position within *reporter* sequence. +* `--offset` (default: `False`): Guide file has `offest` column that will be added to the relative position of reporters. +* `--align-fasta` (default: ''): gRNA is aligned to this sequence to infer the offset. Can be used when the exact offset is not provided. + + +Read structure +* `--guide-start-seq`: Guide starts after this sequence in R1 (default: '') +* `--guide-end-seq`: Guide ends after this sequence in R1 (default: '') +* `--guide-start-seqs-file` (default: `None`): CSV file path with per-sample `guide_start_seq` to be used, if provided. Formatted as `sample_id, guide_start_seq` +* `--guide-end-seqs-file` (default: `None`): CSV file path with per-sample `guide_end_seq` to be used, if provided. Formatted as `sample_id,guide_end_seq` * `-l`, `--reporter-length` (default: `32`): Length of the reporter sequence. +* `--gstart-reporter` (default: `6`): Start position of the guide sequence in the reporter +* `--guide-bc` (default: `True`): Construct has guide barcode +* `--guide-bc-len` (default: `4`): Guide barcode sequence length at the beginning of the R2 + +Mapping quality filters +* `-q`, `--min-average-read-quality` (default: `30`): Minimum average quality score +(phred33) to keep a read * `--keep-intermediate` (default: `False`): Keep all intermediate files generated from filtering. +* `-s`, `--min-single-bp-quality` (default: `0`): Minimum single bp score (phred33) to keep a read (default: 0) * `--qstart-R1` (default: `0`): Start position of the read when filtering for quality score of the read 1 * `--qend-R1` (default: `47`): End position of the read when filtering for quality score of the read 1 * `--qstart-R2` (default: `0`): Start position of the read when filtering for quality score of the read 2 * `--qend-R2` (default: `36`): End position of the read when filtering for quality score of the read 2 -* `--gstart-reporter` (default: `6`): Start position of the guide sequence in the reporter -* `--match-target-pos` (default: `False`): Count the edit in the exact target position. -* `--target-pos-col` (default: `target_pos`): Column name specifying the relative target position within *reporter* sequence. -* `--guide-bc` (default: `True`): Construct has guide barcode -* `--guide-bc-len` (default: `4`): Guide barcode sequence length at the beginning of the R2 -* `--offset` (default: `False`): Guide file has `offest` column that will be added to the relative position of reporters. -* `--align-fasta` (default: ''): gRNA is aligned to this sequence to infer the offset. Can be used when the exact offset is not provided. -* `--string-allele` (default: `False`): Store allele as quality filtered string instead of Allele object -* `-g`, `--count-guide-edits` (default: `False`): count the self editing of guides (default: False) -* `-m`, `--count-guide-reporter-alleles`: count the matched allele of guide and reporter edit -* `--tiling`: Specify that the guide library is tiling library -* `-i`, `--input`: List of fastq and sample ids. See above for the format. + +Run options * `-t`, `--threads` (default: `10`): Number of threads to use -* `--guide-start-seqs-file` (default: `None`): CSV file path with per-sample `guide_start_seq` to be used, if provided. Formatted as `sample_id, guide_start_seq` -* `--guide-end-seqs-file` (default: `None`): CSV file path with per-sample `guide_end_seq` to be used, if provided. Formatted as `sample_id,guide_end_seq` * `--rerun` (default: `False`): Recount each sample. If `False`, existing count for each sample is taken. @@ -206,20 +231,33 @@ Above command produces #### Additional Parameters * `--tiling` (default: `None`): If set as `True` or `False`, it sets the screen object to be tiling (`True`) or variant (`False`)-targeting screen when calculating editing rate. * `--replicate-label` (default: `"rep"`): Label of column in `bdata.samples` that describes replicate ID. -* `--condition-label` (default: `"bin"`)": Label of column in `bdata.samples` that describes experimental condition. (sorting bin, time, etc.). +* `--condition-label` (default: `"condition"`)": Label of column in `bdata.samples` that describes experimental condition. (sorting bin, time, etc.). * `--sample-covariates` (default: `None`): Comma-separated list of column names in `bdata.samples` that describes non-selective experimental condition (drug treatment, etc.). The values in the `bdata.samples` should NOT contain `.`. * `--no-editing` (default: `False`): Ignore QC about editing. Can be used for QC of other editing modalities. -* `--target-pos-col` (default: `"target_pos"`): Target position column in `bdata.guides` specifying target edit position in reporter. -* `--rel-pos-is-reporter` (default: `False`): Specifies whether `edit_start_pos` and `edit_end_pos` are relative to reporter position. If `False`, those are relative to spacer position. -* `--edit-start-pos` (default: `2`): Edit start position to quantify editing rate on, 0-based inclusive. -* `--edit-end-pos` (default: `7`): Edit end position to quantify editing rate on, 0-based exclusive. -* `--count-correlation-thres` (default: `0.8`): Threshold of guide count correlation to mask out. -* `--edit-rate-thres` (default: `0.1`): Median editing rate threshold per sample to mask out. + +Editing rate quantification +* `--ctrl-cond` (default: `"bulk"`): Value in of column in `ReporterScreen.samples[condition_label]` where guide-level editing rate to be calculated + + Editing rate is calculated with following parameters in variant screens: + * `--target-pos-col` (default: `"target_pos"`): Target position column in `bdata.guides` specifying target edit position in reporter. + + For tiling screens: + * `--rel-pos-is-reporter` (default: `False`): Specifies whether `edit_start_pos` and `edit_end_pos` are relative to reporter position. If `False`, those are relative to spacer position. + * `--edit-start-pos` (default: `2`): Edit start position to quantify editing rate on, 0-based inclusive. + * `--edit-end-pos` (default: `7`): Edit end position to quantify editing rate on, 0-based exclusive. + +LFC of positive controls * `--posctrl-col` (default: `group`): Column name in .h5ad.guides DataFrame that specifies guide category. * `--posctrl-val` (default: `PosCtrl`): Value in .h5ad.guides[`posctrl_col`] that specifies guide will be used as the positive control in calculating log fold change. -* `--lfc-thres` (default: `0.1`): Positive guides' correlation threshold to filter out. * `--lfc-conds` (default: `"top,bot"`): Values in of column in `ReporterScreen.samples[condition_label]` for LFC will be calculated between, delimited by comma -* `--ctrl-cond` (default: `"bulk"`): Value in of column in `ReporterScreen.samples[condition_label]` where guide-level editing rate to be calculated + + +Sample filtering thresholds +* `--count-correlation-thres` (default: `0.7`): Threshold of guide count correlation to mask out. +* `--edit-rate-thres` (default: `0.1`): Mean editing rate threshold per sample to mask out. +* `--lfc-thres` (default: `0.1`): Positive guides' correlation threshold to filter out. + +Other * `--recalculate-edits` (default: `False`): Even when `ReporterScreen.layers['edit_count']` exists, recalculate the edit counts from `ReporterScreen.uns['allele_count']`."

@@ -237,7 +275,7 @@ Above command produces * `my_sorting_screen_filtered.h5ad` with filtered alleles stored in `.uns`, * `my_sorting_screen_filtered.filtered_allele_stats.pdf`, and `my_sorting_screen_filtered.filter_log.txt` that report allele count stats in each filtering step. -You may want to adjust the flitering parameters to obtain optimal balance between # guides per variant & # variants that are scored. See example outputs of filtering step [here](docs/example_filtering_outputs/). +You may want to adjust the flitering parameters to obtain optimal balance between # guides per variant & # variants that are scored. See example outputs of filtering step [here](docs/example_filtering_output/). ### Translating alleles @@ -367,7 +405,7 @@ Above command produces * `--target-column` (default: `target`): Column key in `bdata.guides` that describes the target element of each guide. * `--guide-activity-col`: Column in `bdata.guides` DataFrame showing the editing rate estimated via external tools. * Sample annotations (`bdata.samples` column keys) - * `--condition-column` (default: `bin`): Column key in `bdata.samples` that describes experimental condition. + * `--condition-column` (default: `condition`): Column key in `bdata.samples` that describes experimental condition. * `-uq`, `--sorting-bin-upper-quantile-column` (default: `upper_quantile`): Column name with upper quantile values of each sorting bin in bdata.samples * `-lq`, `--sorting-bin-lower-quantile-column` (default: `lower_quantile`): Column name with lower quantile values of each sorting bin in bdata.samples diff --git a/bean/model/run.py b/bean/model/run.py index 96f008f..e09dcd5 100644 --- a/bean/model/run.py +++ b/bean/model/run.py @@ -102,7 +102,7 @@ def parse_args(): ) parser.add_argument( "--condition-col", - default="bin", + default="condition", type=str, help="Column key in `bdata.samples` that describes experimental condition.", ) @@ -281,8 +281,21 @@ def check_args(args, bdata): pass elif args.library_design == "tiling": if args.allele_df_key is None: + key_to_use = "allele_counts" + n_alleles = len(bdata.uns[key_to_use]) + for key, df in bdata.uns.items(): + if "allele_counts" not in key or not isinstance(df, pd.DataFrame): + continue + if len(df) < n_alleles: + key_to_use = key + n_alleles = len(df) + warn( + f"--allele-df-key not provided for tiling screen. Using the most filtered allele counts with {n_alleles} alleles stored in {key_to_use}." + ) + args.allele_df_key = key_to_use + elif args.allele_df_key not in bdata.uns: raise ValueError( - "--allele-df-key not provided for tiling screen. Feed in the key then allele counts in screen.uns[allele_df_key] will be used." + f"--allele-df-key {args.allele_df_key} not in ReporterScreen.uns. Check your input." ) else: raise ValueError( diff --git a/bean/qc/sample_qc.py b/bean/qc/sample_qc.py index 9f60c14..8b66f90 100644 --- a/bean/qc/sample_qc.py +++ b/bean/qc/sample_qc.py @@ -16,21 +16,31 @@ def plot_guide_edit_rates(bdata, ax=None, figsize=(5, 3), title="", n_bins=30): return ax -def plot_sample_edit_rates( - bdata, ax=None, figsize=(5, 3), title="", agg_method="median" -): +def plot_sample_edit_rates(bdata, ax=None, figsize=(5, 3), title="", agg_method="mean"): + if agg_method == "median": + agg = np.nanmedian + elif agg_method == "mean": + agg = np.nanmean + else: + raise ValueError( + "Invalid aggregation method provided. Please pass one of 'median' or 'mean'." + ) set_sample_edit_rates(bdata, agg_method) if ax is None: fig, ax = plt.subplots(figsize=figsize) for i, sample in enumerate(bdata.samples.index): sns.kdeplot( bdata.layers["edit_rate"][:, i], - label=f"{sample}(median {np.nanmedian(bdata.layers['edit_rate'][:, i]):.2f})", + label=f"{sample}({agg_method} {agg(bdata.layers['edit_rate'][:, i]):.2f})", linestyle=linestyles[(i // 10) % 4], clip=(0, 1), ) sns.kdeplot( - bdata.guides.edit_rate, linewidth=2, c="black", label="Bulk median", clip=(0, 1) + bdata.guides.edit_rate, + linewidth=2, + c="black", + label=f"Bulk {agg_method}", + clip=(0, 1), ) ax.set_xlabel("Editing rate") ax.set_title(title) diff --git a/bean/qc/utils.py b/bean/qc/utils.py index f584783..5c6e51c 100644 --- a/bean/qc/utils.py +++ b/bean/qc/utils.py @@ -63,7 +63,7 @@ def parse_args(): "--condition-label", help="Label of column in `bdata.samples` that describes experimental condition. (sorting bin, time, etc.)", type=str, - default="bin", + default="condition", ) parser.add_argument( "--no-editing", @@ -100,7 +100,7 @@ def parse_args(): ) parser.add_argument( "--edit-rate-thres", - help="Median editing rate threshold per sample to mask out.", + help="Mean editing rate threshold per sample to mask out.", type=float, default=0.1, ) diff --git a/bin/bean-qc b/bin/bean-qc index c83d6f2..1f79ab9 100644 --- a/bin/bean-qc +++ b/bin/bean-qc @@ -35,6 +35,7 @@ def main(): exp_id=args.out_report_prefix, recalculate_edits=args.recalculate_edits, base_edit_data=args.base_edit_data, + ), kernel_name="bean_python3", ) diff --git a/docs/tutorials/ldl_cds.md b/docs/tutorials/ldl_cds.md new file mode 100644 index 0000000..7bf6084 --- /dev/null +++ b/docs/tutorials/ldl_cds.md @@ -0,0 +1,109 @@ +# Tiling sorting screen tutorial +Tiling screen that tiles gRNA densely across locus or multiple loci, selected based on FACS signal quantiles. + + + + + + + + + + +
Library designTiling (gRNAs tile each locus densely)
tiling library design
SelectionCells are sorted based on FACS signal quantiles
variant library design
+ +

+ +## 1. Count gRNA & reporter ([`bean-count-samples`](../../README#bean-count-samples-count-reporter-screen-data)) +``` +bean-count-samples \ +--input tests/data/sample_list_tiling.csv `# Contains fastq file path; see test file for example.`\ +-b A `# Base A is edited (into G)` \ +-f tests/data/test_guide_info_tiling_chrom.csv `# Contains gRNA metadata; see test file for example.`\ +-o tests/test_res/ \ +-r `# Quantify reporter edits` \ +--tiling +``` +Make sure you follow the [input file format](../../README#input-file-format) for seamless downstream steps. This will produce `tests/test_res/bean_count_sample_list.h5ad`. + +## 2. QC ([`bean-qc`](../../README#bean-qc-qc-of-reporter-screen-data)) +Base editing data will include QC about editing efficiency. As QC uses predefined column names and values, beware to follow the [input file guideline](../../README#input-file-format), but you can change the parameters with the full argument list of [`bean-qc`](../../README#bean-qc-qc-of-reporter-screen-data). (Common factors you may want to tweak is `--ctrl-cond=bulk` and `--lfc-conds=top,bot` if you have different sample condition labels.) +``` +bean-qc \ + my_sorting_screen.h5ad `# Input ReporterScreen .h5ad file path` \ + -o my_sorting_screen_masked.h5ad `# Output ReporterScreen .h5ad file path` \ + -r qc_report_my_sorting_screen `# Prefix for QC report` \ + [--tiling] `# Not required if you have passed --tiling in counting step` +``` + + + +If the data does not include reporter editing data, you can provide `--no-editing` flag to omit the editing rate QC. + +## 3. Filter alleles ([`bean-filter`](../../README#bean-filter-filtering-and-optionally-translating-alleles)) +As tiling library doesn't have designated per-gRNA target variant, any base edit observed in reporter may be the candidate variant, while having too many variants with very low editing rate significantly decreases the power. Variants are filtered based on multiple criteria in `bean-fitler`. + +If the screen targets coding sequence, it's beneficial to translate edits into coding varaints whenever possible for better power. For translation, provide `--translate` and one of the following: +``` +[ --translate-gene-name GENE_SYMBOL OR + --translate-genes-list path_to_gene_names_file.txt OR + --translate-fasta gene_exon.fa, OR + --translate-fastas-csv gene_exon_fas.csv] +``` +where `path_to_gene_names_file.txt` has one gene symbol per line, and gene symbol uses its MANE transcript (hg38) coordinates of exons. In order to use other reference versions or transcript ID, you'll need to feed in fasta file. See detailed formatting of fasta file [here](../../README#translating-alleles). + +Example allele filtering given we're translating based on MANE transcript exons of multiple gene symbols: + +```bash +bean-filter tests/data/tiling_mini_screen_masked.h5ad \ +-o tests/data/tiling_mini_screen_annotated \ +--filter-target-basechange `# Filter based on intended base changes. If -b A was provided in bean-count, filters for A>G edit. If -b C was provided, filters for C>T edit.`\ +--filter-window --edit-start-pos 0 --edit-end-pos 19 `# Filter based on editing window in spacer position within reporter.`\ +--filter-allele-proportion 0.1 --filter-sample-proportion 0.3 `#Filter based on allele proportion larger than 0.1 in at least 0.3 (30%) of the control samples.` \ +--translate --translate-genes-list tests/data/gene_symbols.txt +``` + +Ouptut file `` shows number of alleles per guide and number of guides per variant, where we want high enough values for the latter. See the typical output for dataset with good editing coverage & filtering result [here](../example_filtering_ouptut/). + +## 4. Quantify variant effect ([`bean-run`](../../README#bean-run-quantify-variant-effects)) +By default, `bean-run [sorting,survival] tiling` uses most filtered allele counts table for variant identification and quantification of their effects. **Check [allele filtering output](../example_filtering_ouptut/)** and choose alternative filtered allele counts table if necessary. + +`bean-run` can take 3 run options to quantify editing rate: +1. From **reporter + accessibility** + If your gRNA metadata table (`tests/data/test_guide_info.csv` above) included per-gRNA accessibility score, + ``` + bean-run sorting tiling \ + tests/data/tiling_mini_screen_annotated.h5ad \ + -o tests/test_res/var/ \ + --fit-negctrl \ + --scale-by-acc \ + --accessibility-col accessibility + ``` + If your gRNA metadata table (`tests/data/test_guide_info.csv` above) included per-gRNA chromosome & position and you have bigWig file with accessibility signal, + ``` + bean-run sorting tiling \ + tests/data/tiling_mini_screen_annotated.h5ad \ + -o tests/test_res/var/ \ + --fit-negctrl \ + --scale-by-acc \ + --accessibility-bw accessibility.bw + ``` + +2. From **reporter** + ``` + bean-run sorting tiling \ + tests/data/tiling_mini_screen_annotated.h5ad \ + -o tests/test_res/var/ \ + --fit-negctrl + ``` +3. No reporter information, assume the same editing efficiency of all gRNAs. + Use this option if your data don't have editing rate information. + ``` + bean-run sorting tiling \ + tests/data/tiling_mini_screen_annotated.h5ad \ + -o tests/test_res/var/ \ + --fit-negctrl \ + --uniform-edit + ``` + +See [full argument list](../../README#optional-parameters) to accommodate different input sample & guide metadata columns/values and run options. \ No newline at end of file diff --git a/docs/tutorials/ldl_var.md b/docs/tutorials/ldl_var.md new file mode 100644 index 0000000..1208e27 --- /dev/null +++ b/docs/tutorials/ldl_var.md @@ -0,0 +1,81 @@ +# Variant sorting screen tutorial +GWAS variant screen with per-variant gRNA tiling design, selected based on FACS signal quantiles. + + + + + + + + + + +
Library designVariant (gRNAs tile each target variant)
variant library design
SelectionCells are sorted based on FACS signal quantiles
variant library design
+ +

+ +## 1. Count gRNA & reporter ([`bean-count-samples`](../../README#bean-count-samples-count-reporter-screen-data)) +``` +bean-count-samples \ +--input tests/data/sample_list.csv `# Contains fastq file path; see test file for example.`\ +-b A `# Base A is edited (into G)` \ +-f tests/data/test_guide_info.csv `# Contains gRNA metadata; see test file for example.`\ +-o tests/test_res/ \ +-r `# Quantify reporter edits` +``` +Make sure you follow the [input file format](../../README#input-file-format) for seamless downstream steps. This will produce `tests/test_res/bean_count_sample_list.h5ad`. + +## 2. QC ([`bean-qc`](../../README#bean-qc-qc-of-reporter-screen-data)) +Base editing data will include QC about editing efficiency. As QC uses predefined column names and values, beware to follow the [input file guideline](../../README#input-file-format), but you can change the parameters with the full argument list of [`bean-qc`](../../README#bean-qc-qc-of-reporter-screen-data). (Common factors you may want to tweak is `--ctrl-cond=bulk` and `--lfc-conds=top,bot` if you have different sample condition labels.) +``` +bean-qc \ + my_sorting_screen.h5ad `# Input ReporterScreen .h5ad file path` \ + -o my_sorting_screen_masked.h5ad `# Output ReporterScreen .h5ad file path` \ + -r qc_report_my_sorting_screen `# Prefix for QC report` +``` + + + +If the data does not include reporter editing data, you can provide `--no-editing` flag to omit the editing rate QC. + + +## 3. Quantify variant effect ([`bean-run`](../../README#bean-run-quantify-variant-effects)) + +`bean-run` can take 3 run options to quantify editing rate: +1. From **reporter + accessibility** + If your gRNA metadata table (`tests/data/test_guide_info.csv` above) included per-gRNA accessibility score, + ``` + bean-run sorting variant \ + tests/data/var_mini_screen_annotated.h5ad \ + -o tests/test_res/var/ \ + --fit-negctrl \ + --scale-by-acc \ + --accessibility-col accessibility + ``` + If your gRNA metadata table (`tests/data/test_guide_info.csv` above) included per-gRNA chromosome & position and you have bigWig file with accessibility signal, + ``` + bean-run sorting variant \ + tests/data/var_mini_screen_annotated.h5ad \ + -o tests/test_res/var/ \ + --fit-negctrl \ + --scale-by-acc \ + --accessibility-bw accessibility.bw + ``` + +2. From **reporter** + ``` + bean-run sorting variant \ + tests/data/var_mini_screen_annotated.h5ad \ + -o tests/test_res/var/ \ + --fit-negctrl + ``` +3. No reporter information, assume the same editing efficiency of all gRNAs. + Use this option if your data don't have editing rate information. + ``` + bean-run sorting variant \ + tests/data/var_mini_screen_annotated.h5ad \ + -o tests/test_res/var/ \ + --fit-negctrl \ + --uniform-edit + ``` +See [full argument list](../../README#optional-parameters) to accommodate different input sample & guide metadata columns/values and run options. \ No newline at end of file diff --git a/imgs/sorting_bins@8x.png b/imgs/sorting_bins@8x.png new file mode 100644 index 0000000000000000000000000000000000000000..609c137cb0d982d0cdf99a734de92b2fd1a78bf3 GIT binary patch literal 16429 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

E^&xLvCzvYe3%th}4=de7W^ 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 Kv|RXo(EkHqH|jwE literal 0 HcmV?d00001 diff --git a/notebooks/sample_quality_report.ipynb b/notebooks/sample_quality_report.ipynb index 49d88f1..65a0d92 100644 --- a/notebooks/sample_quality_report.ipynb +++ b/notebooks/sample_quality_report.ipynb @@ -53,7 +53,7 @@ "posctrl_val = \"PosCtrl\"\n", "lfc_thres = -0.1\n", "replicate_label = \"rep\"\n", - "condition_label = \"bin\"\n", + "condition_label = \"condition\"\n", "comp_cond1 = \"top\"\n", "comp_cond2 = \"bot\"\n", "ctrl_cond = \"bulk\"\n", @@ -399,8 +399,8 @@ " bdata.samples.median_corr_X.isnull() | (bdata.samples.median_corr_X < corr_X_thres),\n", " \"mask\",\n", "] = 0\n", - "if \"median_editing_rate\" in bdata.samples.columns.tolist():\n", - " bdata.samples.loc[bdata.samples.median_editing_rate < edit_rate_thres, \"mask\"] = 0\n", + "if \"mean_editing_rate\" in bdata.samples.columns.tolist():\n", + " bdata.samples.loc[bdata.samples.mean_editing_rate < edit_rate_thres, \"mask\"] = 0\n", "if (\n", " isinstance(replicate_label, str)\n", " and len(bdata.samples[replicate_label].unique()) > 1\n", @@ -424,7 +424,6 @@ "rep_n_samples = bdata_filtered.samples.groupby(replicate_label)[\"mask\"].sum()\n", "print(rep_n_samples)\n", "rep_has_too_small_sample = rep_n_samples.loc[rep_n_samples < 2].index.tolist()\n", - "rep_has_too_small_sample\n", "print(\n", " f\"Excluding reps {rep_has_too_small_sample} that has less than 2 samples per replicate.\"\n", ")\n", @@ -441,6 +440,16 @@ "bdata_filtered = bdata_filtered[:, samples_include]" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if isinstance(replicate_label, str) and len(bdata_filtered.samples[replicate_label].unique()) <= 1 or isinstance(replicate_label, list) and len(bdata_filtered.samples[replicate_label].drop_duplicates() <= 1): \n", + " raise ValueError(\"Too small number of replicate left after QC. Check the input data or adjust the QC metric thresholds.\")" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/tests/data/tiling_mini_screen.h5ad b/tests/data/tiling_mini_screen.h5ad index e4f94a01be428ed444a54cbe9e7be2100620ac02..fbd06969e08c4c215e7c36e05ad71b2b08222492 100644 GIT binary patch delta 177 zcmdnc?!N(u1X_hT86Y4zKQAS-Br`vcfnl?BYbnd-8J!k-j27D!<+;8yPF|od!00jg z=1z4^xVp&~Tf`?z?2=#Kf2E^<@%mKulK+FZi+(66&#JoVv2gLk9EC9rUKrFQV*E+ zfvP5R@6w&V;w`(tWCbOT$sW537@0Tk+;yLkQDO4TJ^qXa%`f+~zudzJ#7scU48$xz t%nHP8K+F!r96-zo#9Tnk4a7V^%nQVPK+F%s0zfPX#6sI&?h!uD1_0n7O%MP8 diff --git a/tests/data/tiling_mini_screen_missing.h5ad b/tests/data/tiling_mini_screen_missing.h5ad index 5e32a15e590be28066d67d267cec52d96c6d5bbc..af3b2af936366f76ca97abdabf0f5a128ad8b242 100644 GIT binary patch delta 172 zcmaEG*z>_*&kYu>!ki2cker{Fl39|OpU1$k*}1ipWxB>$ZiUScI&bJQT5SKgoa;N| z_*&kYu>+{_FRkd&FX*}JurWqL;kqsHb3oi}tD4Yq$=&h?#f@&bJUMu*7< zcd9c36;1xUQ+N80ubcvt6_hw88|*4zWZt}R*L_Atg~^S3{22|JFYal-xQ7vlnShuX rh*^M`6^Pk@m>q~YfS41Axqz4(h-A*wqM*M$iEZ-4NFQk diff --git a/tests/data/var_mini_screen.h5ad b/tests/data/var_mini_screen.h5ad index 74eb17e924b3c7f162cbddfdd3568d33e60c98f1..d8b36bb0ab70e263fc1563de9a1da027f5801775 100644 GIT binary patch delta 175416 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ü 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

+fE>7|DCOdifaOy3L2if$re> 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 delta 175208 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�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 delta 1120 zcmYjQO>9(E6h7zPc{8u=>vX1KW~S=AVZzuJN~gbCB!rG8{KN#UqNN1r_|p`kwuMgX z6cfY32r&T`FZ5J&fpG&1NaG|%9QzkAR5 z?)ToSJQ%7x7+U-%rVEo(U&YT{ifXDpZ=RU&o!6y1!?Duh^>Y?q@HXFwc{dLnEPY=3 zD8pUlF9w`H*?YMo!h>G>nyYchdv&c}ir?80FO{~vg|)mazt<2b{k`@FbIM!4(<;kp zuJaOiUG6IFxI6s}TjlGUIOOCM<^_S3E$mM=t8F}gA^I3@9kB09lO#G1n9`&8g4|EB zu$J?i`6mvPUrY06O6&|r5~j6ztg4~$nGPb%D(@CjhxJ8;BYcTZe=y*R-SQ07iO7UsFEX|F2P+n=}3AvKfart>qBrc0N zZA+z_b)pPwg)kIA;=suB$snKsg9C-Qi>$`m_Oez8U4@8dk-C#-!QAJbnz2G2uk#px7r9^ z-H4$G(U{D&K;lD4gm9c_9PeVcl~l)TIxNMkDq()dw8q&UyrlF{Bvn&+qNZ{Yc|#Av zPt|&ytX`T=`BbL;QL0dFtY%1_TgB*+UT&3}^ANg7^6fknSn7oW=mdhN{qLmG%lqcH zL)H(g+86tHKsLs-%_QBGW>+?TsJCVL$9nthMjw|q`qZtRDoEw8r&OBRk=2uGlEdZw zr&N;(N2b+p9F`pg<(jCVUP5%Opmrl#FQ|)%=4RBzr~^43{VYe|<8z!6cwO>0AK+@AOx6N9Z(N601nUy Ugn=d?0z`pk;IVR{xGA9j1wz{;*Z=?k diff --git a/tests/test_count.py b/tests/test_count.py index 882f4dc..b6e20f5 100644 --- a/tests/test_count.py +++ b/tests/test_count.py @@ -42,6 +42,19 @@ def test_count_samples(): @pytest.mark.order(5) +def test_count_samples_tiling(): + cmd = "bean-count-samples --input tests/data/sample_list_tiling.csv -b A -f tests/data/test_guide_info_tiling_chrom.csv -o tests/test_res/ -r" + try: + subprocess.check_output( + cmd, + shell=True, + universal_newlines=True, + ) + except subprocess.CalledProcessError as exc: + raise exc + + +@pytest.mark.order(6) def test_count_chroms(): cmd = "bean-count --R1 tests/data/test_tiling_R1.fastq --R2 tests/data/test_tiling_R2.fastq -b A -f tests/data/test_guide_info_tiling_chrom.csv -o tests/test_res/ -r" try: diff --git a/tests/test_filter.py b/tests/test_filter.py index f98db3b..2baaf55 100644 --- a/tests/test_filter.py +++ b/tests/test_filter.py @@ -2,7 +2,7 @@ import subprocess -@pytest.mark.order(10) +@pytest.mark.order(11) def test_filter_varscreen(): cmd = "bean-filter tests/data/var_mini_screen_masked.h5ad -o tests/data/var_mini_screen_annotated -s 0 -e 19 -w -b -t -ap 0.1 -sp 0.3" try: @@ -15,7 +15,7 @@ def test_filter_varscreen(): raise exc -@pytest.mark.order(11) +@pytest.mark.order(12) def test_filter_tiling_screen(): cmd = "bean-filter tests/data/tiling_mini_screen_masked.h5ad -o tests/data/tiling_mini_screen_annotated -s 0 -e 19 -w -b -t -ap 0.1 -sp 0.3" try: @@ -28,9 +28,9 @@ def test_filter_tiling_screen(): raise exc -@pytest.mark.order(12) +@pytest.mark.order(13) def test_filter_tiling_screen_translate_genename(): - cmd = "bean-filter tests/data/tiling_mini_screen_masked.h5ad -o tests/data/tiling_mini_screen_annotated_wrong -s 0 -e 19 -w -b -t -ap 0.1 -sp 0.3 --translate --translate-gene LDLR" + cmd = "bean-filter tests/data/tiling_mini_screen_masked.h5ad -o tests/data/tiling_mini_screen_annotated_wrong -s 0 -e 19 -w -b -ap 0.1 -sp 0.3 --translate --translate-gene LDLR" try: subprocess.check_output( cmd, @@ -41,9 +41,22 @@ def test_filter_tiling_screen_translate_genename(): raise exc -@pytest.mark.order(13) +@pytest.mark.order(14) def test_filter_tiling_screen_translate_fasta(): - cmd = "bean-filter tests/data/tiling_mini_screen_masked.h5ad -o tests/data/tiling_mini_screen_annotated_wrong -s 0 -e 19 -w -b -t -ap 0.1 -sp 0.3 --translate --translate-fasta tests/data/ldlr_exons.fa" + cmd = "bean-filter tests/data/tiling_mini_screen_masked.h5ad -o tests/data/tiling_mini_screen_annotated_wrong -s 0 -e 19 -w -b -ap 0.1 -sp 0.3 --translate --translate-fasta tests/data/ldlr_exons.fa" + try: + subprocess.check_output( + cmd, + shell=True, + universal_newlines=True, + ) + except subprocess.CalledProcessError as exc: + raise exc + + +@pytest.mark.order(15) +def test_filter_tiling_screen_translate_genenames(): + cmd = "bean-filter tests/data/tiling_mini_screen_masked.h5ad -o tests/data/tiling_mini_screen_alleleFiltered -s 0 -e 19 -w -b -t -ap 0.1 -sp 0.3 --translate --translate-genes-list tests/data/gene_symbols.txt" try: subprocess.check_output( cmd, diff --git a/tests/test_qc.py b/tests/test_qc.py index 5af73e5..4ceb76e 100644 --- a/tests/test_qc.py +++ b/tests/test_qc.py @@ -2,7 +2,7 @@ import subprocess -@pytest.mark.order(6) +@pytest.mark.order(7) def test_qc(): cmd = "bean-qc tests/data/var_mini_screen.h5ad -o tests/data/var_mini_screen_masked.h5ad -r tests/test_res/qc_report_var_mini_screen --count-correlation-thres 0.6" try: @@ -15,7 +15,7 @@ def test_qc(): raise exc -@pytest.mark.order(7) +@pytest.mark.order(8) def test_qc_tiling(): cmd = "bean-qc tests/data/tiling_mini_screen.h5ad -o tests/data/tiling_mini_screen_masked.h5ad -r tests/test_res/qc_report_tiling_mini_screen --count-correlation-thres 0.6 --posctrl-col ''" try: @@ -28,27 +28,27 @@ def test_qc_tiling(): raise exc -@pytest.mark.order(8) +@pytest.mark.order(9) def test_dummy_insertion_varscreen(): cmd = "bean-qc tests/data/var_mini_screen_missing.h5ad -o tests/data/var_mini_screen_missing_masked.h5ad -r tests/test_res/qc_report_var_mini_screen_missing --count-correlation-thres 0.6" try: subprocess.check_output( - cmd, - shell=True, - universal_newlines=True, + cmd, shell=True, universal_newlines=True, stderr=subprocess.STDOUT ) + raise ValueError("Filtering should fail with too small number of replicates.") except subprocess.CalledProcessError as exc: - raise exc + if "Too small number of replicate left after QC" not in exc.output: + raise exc -@pytest.mark.order(9) +@pytest.mark.order(10) def test_dummy_insertion_tilingscreen(): cmd = "bean-qc tests/data/tiling_mini_screen_missing.h5ad -o tests/data/tiling_mini_screen_missing_masked.h5ad -r tests/test_res/qc_report_tiling_mini_screen_missing --count-correlation-thres 0.6 --posctrl-col ''" try: subprocess.check_output( - cmd, - shell=True, - universal_newlines=True, + cmd, shell=True, universal_newlines=True, stderr=subprocess.STDOUT ) + raise ValueError("Filtering should fail with too small number of replicates.") except subprocess.CalledProcessError as exc: - raise exc + if "Too small number of replicate left after QC" not in exc.output: + raise exc diff --git a/tests/test_run.py b/tests/test_run.py index 3be6fea..1455707 100644 --- a/tests/test_run.py +++ b/tests/test_run.py @@ -2,7 +2,7 @@ import subprocess -@pytest.mark.order(13) +@pytest.mark.order(16) def test_run_variant_wacc(): cmd = "bean-run sorting variant tests/data/var_mini_screen_annotated.h5ad --scale-by-acc --acc-bw-path tests/data/accessibility_signal_chr6.bw -o tests/test_res/var/ --repguide-mask None --n-iter 10" try: @@ -15,7 +15,7 @@ def test_run_variant_wacc(): raise exc -@pytest.mark.order(14) +@pytest.mark.order(17) def test_run_variant_noacc(): cmd = "bean-run sorting variant tests/data/var_mini_screen_annotated.h5ad -o tests/test_res/var/ --n-iter 10" try: @@ -28,7 +28,7 @@ def test_run_variant_noacc(): raise exc -@pytest.mark.order(15) +@pytest.mark.order(18) def test_run_variant_wo_negctrl_uniform(): cmd = "bean-run sorting variant tests/data/var_mini_screen_annotated.h5ad -o tests/test_res/var/ --uniform-edit --n-iter 10" try: @@ -41,7 +41,7 @@ def test_run_variant_wo_negctrl_uniform(): raise exc -@pytest.mark.order(16) +@pytest.mark.order(19) def test_run_variant_wacc_negctrl(): cmd = "bean-run sorting variant tests/data/var_mini_screen_annotated.h5ad --scale-by-acc --acc-bw-path tests/data/accessibility_signal_chr6.bw -o tests/test_res/var/ --repguide-mask None --n-iter 10 --fit-negctrl " try: @@ -54,7 +54,7 @@ def test_run_variant_wacc_negctrl(): raise exc -@pytest.mark.order(17) +@pytest.mark.order(20) def test_run_variant_noacc_negctrl(): cmd = "bean-run sorting variant tests/data/var_mini_screen_annotated.h5ad -o tests/test_res/var/ --fit-negctrl --n-iter 10" try: @@ -67,7 +67,7 @@ def test_run_variant_noacc_negctrl(): raise exc -@pytest.mark.order(18) +@pytest.mark.order(21) def test_run_variant_uniform_negctrl(): cmd = "bean-run sorting variant tests/data/var_mini_screen_annotated.h5ad -o tests/test_res/var/ --uniform-edit --fit-negctrl --n-iter 10" try: @@ -80,7 +80,7 @@ def test_run_variant_uniform_negctrl(): raise exc -@pytest.mark.order(19) +@pytest.mark.order(22) def test_run_tiling_wo_negctrl(): cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad --scale-by-acc --acc-bw-path tests/data/accessibility_signal.bw -o tests/test_res/tiling/ --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --control-guide-tag None --repguide-mask None --n-iter 10" try: @@ -93,7 +93,7 @@ def test_run_tiling_wo_negctrl(): raise exc -@pytest.mark.order(20) +@pytest.mark.order(23) def test_run_tiling_with_wo_negctrl_noacc(): cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad -o tests/test_res/tiling/ --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --control-guide-tag None --repguide-mask None --n-iter 10" try: @@ -106,7 +106,7 @@ def test_run_tiling_with_wo_negctrl_noacc(): raise exc -@pytest.mark.order(21) +@pytest.mark.order(23) def test_run_tiling_with_wo_negctrl_uniform(): cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad -o tests/test_res/tiling/ --uniform-edit --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --control-guide-tag None --repguide-mask None --n-iter 10" try: @@ -119,7 +119,7 @@ def test_run_tiling_with_wo_negctrl_uniform(): raise exc -@pytest.mark.order(22) +@pytest.mark.order(24) def test_run_tiling_negctrl(): cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad --scale-by-acc --acc-bw-path tests/data/accessibility_signal.bw -o tests/test_res/tiling/ --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --fit-negctrl --negctrl-col strand --negctrl-col-value neg --control-guide-tag neg --repguide-mask None --n-iter 10" try: @@ -132,7 +132,7 @@ def test_run_tiling_negctrl(): raise exc -@pytest.mark.order(23) +@pytest.mark.order(25) def test_run_tiling_with_negctrl_noacc(): cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad -o tests/test_res/tiling/ --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --fit-negctrl --negctrl-col strand --negctrl-col-value neg --control-guide-tag neg --repguide-mask None --n-iter 10" try: @@ -145,7 +145,7 @@ def test_run_tiling_with_negctrl_noacc(): raise exc -@pytest.mark.order(24) +@pytest.mark.order(26) def test_run_tiling_with_negctrl_uniform(): cmd = "bean-run sorting tiling tests/data/tiling_mini_screen_annotated.h5ad -o tests/test_res/tiling/ --uniform-edit --allele-df-key allele_counts_spacer_0_19_A.G_translated_prop0.1_0.3 --fit-negctrl --negctrl-col strand --negctrl-col-value neg --control-guide-tag neg --repguide-mask None --n-iter 10" try: From fec71cc486ff1083e23dc69a1da842d2fed13571 Mon Sep 17 00:00:00 2001 From: Jayoung Ryu Date: Fri, 15 Dec 2023 18:28:40 -0500 Subject: [PATCH 5/8] add missing files for tests --- tests/data/gene_symbols.txt | 3 +++ tests/data/sample_list_tiling.csv | 7 +++++++ 2 files changed, 10 insertions(+) create mode 100644 tests/data/gene_symbols.txt create mode 100644 tests/data/sample_list_tiling.csv diff --git a/tests/data/gene_symbols.txt b/tests/data/gene_symbols.txt new file mode 100644 index 0000000..f067e0a --- /dev/null +++ b/tests/data/gene_symbols.txt @@ -0,0 +1,3 @@ +LDLR +SMARCA4 +SPC24 \ No newline at end of file diff --git a/tests/data/sample_list_tiling.csv b/tests/data/sample_list_tiling.csv new file mode 100644 index 0000000..dd89fce --- /dev/null +++ b/tests/data/sample_list_tiling.csv @@ -0,0 +1,7 @@ +R1_fastq,R2_fastq,sample_id,replicate,condition,upper_quantile,lower_quantiles +tests/data/test_tiling_R1.fastq,tests/data/test_tiling_R2.fastq,1_bot,1,bot,0.3,0.0 +tests/data/test_tiling_R1.fastq,tests/data/test_tiling_R2.fastq,1_bulk,1,bulk,1.0,0.0 +tests/data/test_tiling_R1.fastq,tests/data/test_tiling_R2.fastq,1_top,1,top,1.0,0.7 +tests/data/test_tiling_R1.fastq,tests/data/test_tiling_R2.fastq,2_bot,2,bot,0.3,0.0 +tests/data/test_tiling_R1.fastq,tests/data/test_tiling_R2.fastq,2_bulk,2,bulk,1.0,0.0 +tests/data/test_tiling_R1.fastq,tests/data/test_tiling_R2.fastq,2_top,2,top,1.0,0.7 \ No newline at end of file From a47b38cedfa07a5edef4f27a99e253d85ff082a7 Mon Sep 17 00:00:00 2001 From: Jayoung Ryu Date: Tue, 19 Dec 2023 13:06:51 -0500 Subject: [PATCH 6/8] fix typo in data class attribute definition, allow editing rate calculated from correct control samples --- bean/preprocessing/data_class.py | 4 ++-- bin/bean-run | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bean/preprocessing/data_class.py b/bean/preprocessing/data_class.py index a48be5a..4bfc862 100644 --- a/bean/preprocessing/data_class.py +++ b/bean/preprocessing/data_class.py @@ -250,8 +250,8 @@ def get_sample_ids_and_sort(self, screen: be.ReporterScreen, condit_id_col: str) class ReporterScreenData(ScreenData): X_bcmatch: torch.Tensor size_factor_bcmatch: torch.Tensor - X_control_bcmatch: torch.Tensor - size_factor_control_bcmatch: torch.Tensor + X_bcmatch_control: torch.Tensor + size_factor_bcmatch_control: torch.Tensor allele_counts: torch.Tensor allele_counts_control: torch.Tensor a0_bcmatch: torch.Tensor diff --git a/bin/bean-run b/bin/bean-run index 84ef141..550d0ec 100644 --- a/bin/bean-run +++ b/bin/bean-run @@ -101,7 +101,7 @@ def main(args, bdata): if "edit_rate" not in ndata.screen.guides.columns: ndata.screen.get_edit_from_allele() ndata.screen.get_edit_mat_from_uns(rel_pos_is_reporter=True) - ndata.screen.get_guide_edit_rate() + ndata.screen.get_guide_edit_rate(unsorted_condition_label=args.control_condition_label) target_info_df = _get_guide_target_info( ndata.screen, args, cols_include=[args.negctrl_col] ) From 541b80689591699b8b6634337a6cc0fea5f06c38 Mon Sep 17 00:00:00 2001 From: Jayoung Ryu Date: Tue, 19 Dec 2023 13:07:12 -0500 Subject: [PATCH 7/8] streamline tutorials --- docs/tutorials/ldl_cds.md | 31 +++++++++++++++++-------------- docs/tutorials/ldl_var.md | 23 +++++++++++++---------- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/docs/tutorials/ldl_cds.md b/docs/tutorials/ldl_cds.md index 7bf6084..c3de47a 100644 --- a/docs/tutorials/ldl_cds.md +++ b/docs/tutorials/ldl_cds.md @@ -16,24 +16,27 @@ Tiling screen that tiles gRNA densely across locus or multiple loci, selected ba ## 1. Count gRNA & reporter ([`bean-count-samples`](../../README#bean-count-samples-count-reporter-screen-data)) ``` +screen_id=my_sorting_tiling_screen + bean-count-samples \ --input tests/data/sample_list_tiling.csv `# Contains fastq file path; see test file for example.`\ -b A `# Base A is edited (into G)` \ -f tests/data/test_guide_info_tiling_chrom.csv `# Contains gRNA metadata; see test file for example.`\ --o tests/test_res/ \ +-o ./ `# Output directory` \ -r `# Quantify reporter edits` \ +-n ${screen_id} `# ID of the screen` \ --tiling ``` -Make sure you follow the [input file format](../../README#input-file-format) for seamless downstream steps. This will produce `tests/test_res/bean_count_sample_list.h5ad`. +Make sure you follow the [input file format](../../README#input-file-format) for seamless downstream steps. This will produce `./bean_count_${screen_id}.h5ad`. ## 2. QC ([`bean-qc`](../../README#bean-qc-qc-of-reporter-screen-data)) Base editing data will include QC about editing efficiency. As QC uses predefined column names and values, beware to follow the [input file guideline](../../README#input-file-format), but you can change the parameters with the full argument list of [`bean-qc`](../../README#bean-qc-qc-of-reporter-screen-data). (Common factors you may want to tweak is `--ctrl-cond=bulk` and `--lfc-conds=top,bot` if you have different sample condition labels.) ``` bean-qc \ - my_sorting_screen.h5ad `# Input ReporterScreen .h5ad file path` \ - -o my_sorting_screen_masked.h5ad `# Output ReporterScreen .h5ad file path` \ - -r qc_report_my_sorting_screen `# Prefix for QC report` \ - [--tiling] `# Not required if you have passed --tiling in counting step` + bean_count_${screen_id}.h5ad `# Input ReporterScreen .h5ad file path` \ + -o bean_count_${screen_id}_masked.h5ad `# Output ReporterScreen .h5ad file path` \ + -r qc_report_${screen_id} `# Prefix for QC report` \ + [--tiling] `# Not required if you have passed --tiling in counting step` ``` @@ -55,8 +58,8 @@ where `path_to_gene_names_file.txt` has one gene symbol per line, and gene symbo Example allele filtering given we're translating based on MANE transcript exons of multiple gene symbols: ```bash -bean-filter tests/data/tiling_mini_screen_masked.h5ad \ --o tests/data/tiling_mini_screen_annotated \ +bean-filter ./bean_count_${screen_id}_masked.h5ad \ +-o ./bean_count_${screen_id}_alleleFiltered \ --filter-target-basechange `# Filter based on intended base changes. If -b A was provided in bean-count, filters for A>G edit. If -b C was provided, filters for C>T edit.`\ --filter-window --edit-start-pos 0 --edit-end-pos 19 `# Filter based on editing window in spacer position within reporter.`\ --filter-allele-proportion 0.1 --filter-sample-proportion 0.3 `#Filter based on allele proportion larger than 0.1 in at least 0.3 (30%) of the control samples.` \ @@ -70,19 +73,19 @@ By default, `bean-run [sorting,survival] tiling` uses most filtered allele count `bean-run` can take 3 run options to quantify editing rate: 1. From **reporter + accessibility** - If your gRNA metadata table (`tests/data/test_guide_info.csv` above) included per-gRNA accessibility score, + 1-1. If your gRNA metadata table (`tests/data/test_guide_info.csv` above) included per-gRNA accessibility score, ``` bean-run sorting tiling \ - tests/data/tiling_mini_screen_annotated.h5ad \ + ./bean_count_${screen_id}_alleleFiltered.h5ad \ -o tests/test_res/var/ \ --fit-negctrl \ --scale-by-acc \ --accessibility-col accessibility ``` - If your gRNA metadata table (`tests/data/test_guide_info.csv` above) included per-gRNA chromosome & position and you have bigWig file with accessibility signal, + 1-2. If your gRNA metadata table (`tests/data/test_guide_info.csv` above) included per-gRNA chromosome & position and you have bigWig file with accessibility signal, ``` bean-run sorting tiling \ - tests/data/tiling_mini_screen_annotated.h5ad \ + ./bean_count_${screen_id}_alleleFiltered.h5ad \ -o tests/test_res/var/ \ --fit-negctrl \ --scale-by-acc \ @@ -92,7 +95,7 @@ By default, `bean-run [sorting,survival] tiling` uses most filtered allele count 2. From **reporter** ``` bean-run sorting tiling \ - tests/data/tiling_mini_screen_annotated.h5ad \ + ./bean_count_${screen_id}_alleleFiltered.h5ad \ -o tests/test_res/var/ \ --fit-negctrl ``` @@ -100,7 +103,7 @@ By default, `bean-run [sorting,survival] tiling` uses most filtered allele count Use this option if your data don't have editing rate information. ``` bean-run sorting tiling \ - tests/data/tiling_mini_screen_annotated.h5ad \ + ./bean_count_${screen_id}_alleleFiltered.h5ad \ -o tests/test_res/var/ \ --fit-negctrl \ --uniform-edit diff --git a/docs/tutorials/ldl_var.md b/docs/tutorials/ldl_var.md index 1208e27..263899a 100644 --- a/docs/tutorials/ldl_var.md +++ b/docs/tutorials/ldl_var.md @@ -16,22 +16,25 @@ GWAS variant screen with per-variant gRNA tiling design, selected based on FACS ## 1. Count gRNA & reporter ([`bean-count-samples`](../../README#bean-count-samples-count-reporter-screen-data)) ``` +screen_id=my_sorting_tiling_screen + bean-count-samples \ --input tests/data/sample_list.csv `# Contains fastq file path; see test file for example.`\ -b A `# Base A is edited (into G)` \ -f tests/data/test_guide_info.csv `# Contains gRNA metadata; see test file for example.`\ --o tests/test_res/ \ --r `# Quantify reporter edits` +-o ./ `# Output directory` \ +-r `# Quantify reporter edits` \ +-n ${screen_id} `# ID of the screen to be counted` ``` -Make sure you follow the [input file format](../../README#input-file-format) for seamless downstream steps. This will produce `tests/test_res/bean_count_sample_list.h5ad`. +Make sure you follow the [input file format](../../README#input-file-format) for seamless downstream steps. This will produce `./bean_count_${screen_id}.h5ad`. ## 2. QC ([`bean-qc`](../../README#bean-qc-qc-of-reporter-screen-data)) Base editing data will include QC about editing efficiency. As QC uses predefined column names and values, beware to follow the [input file guideline](../../README#input-file-format), but you can change the parameters with the full argument list of [`bean-qc`](../../README#bean-qc-qc-of-reporter-screen-data). (Common factors you may want to tweak is `--ctrl-cond=bulk` and `--lfc-conds=top,bot` if you have different sample condition labels.) ``` bean-qc \ - my_sorting_screen.h5ad `# Input ReporterScreen .h5ad file path` \ - -o my_sorting_screen_masked.h5ad `# Output ReporterScreen .h5ad file path` \ - -r qc_report_my_sorting_screen `# Prefix for QC report` + bean_count_${screen_id}.h5ad `# Input ReporterScreen .h5ad file path` \ + -o bean_count_${screen_id}_masked.h5ad `# Output ReporterScreen .h5ad file path` \ + -r qc_report_${screen_id} `# Prefix for QC report` ``` @@ -46,7 +49,7 @@ If the data does not include reporter editing data, you can provide `--no-editin If your gRNA metadata table (`tests/data/test_guide_info.csv` above) included per-gRNA accessibility score, ``` bean-run sorting variant \ - tests/data/var_mini_screen_annotated.h5ad \ + tests/data/bean_count_${screen_id}_masked.h5ad \ -o tests/test_res/var/ \ --fit-negctrl \ --scale-by-acc \ @@ -55,7 +58,7 @@ If the data does not include reporter editing data, you can provide `--no-editin If your gRNA metadata table (`tests/data/test_guide_info.csv` above) included per-gRNA chromosome & position and you have bigWig file with accessibility signal, ``` bean-run sorting variant \ - tests/data/var_mini_screen_annotated.h5ad \ + tests/data/bean_count_${screen_id}_masked.h5ad \ -o tests/test_res/var/ \ --fit-negctrl \ --scale-by-acc \ @@ -65,7 +68,7 @@ If the data does not include reporter editing data, you can provide `--no-editin 2. From **reporter** ``` bean-run sorting variant \ - tests/data/var_mini_screen_annotated.h5ad \ + tests/data/bean_count_${screen_id}_masked.h5ad \ -o tests/test_res/var/ \ --fit-negctrl ``` @@ -73,7 +76,7 @@ If the data does not include reporter editing data, you can provide `--no-editin Use this option if your data don't have editing rate information. ``` bean-run sorting variant \ - tests/data/var_mini_screen_annotated.h5ad \ + tests/data/bean_count_${screen_id}_masked.h5ad \ -o tests/test_res/var/ \ --fit-negctrl \ --uniform-edit From d523ae8716024315cd520b3cd4e7dabdb03a2cea Mon Sep 17 00:00:00 2001 From: Jayoung Ryu Date: Tue, 19 Dec 2023 13:16:13 -0500 Subject: [PATCH 8/8] update version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f41178c..4745dcb 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ setup( name="crispr-bean", - version="0.3.0", + version="0.3.1", python_requires=">=3.8.0", author="Jayoung Ryu", author_email="jayoung_ryu@g.harvard.edu",