From 669591fcf112d84f67319cfd654dae720cdfa045 Mon Sep 17 00:00:00 2001 From: Brian Yee Date: Thu, 19 Mar 2026 14:28:11 -0700 Subject: [PATCH 1/9] Step 1: document CWL pipeline, Perl script contracts, and output formats --- docs/cwl_pipeline_spec.md | 137 ++++++++++++++++++++++++++++++ docs/output_format_spec.md | 75 ++++++++++++++++ docs/perl_scripts_spec.md | 122 ++++++++++++++++++++++++++ docs/python_conversion_roadmap.md | 109 ++++++++++++++++++++++++ 4 files changed, 443 insertions(+) create mode 100644 docs/cwl_pipeline_spec.md create mode 100644 docs/output_format_spec.md create mode 100644 docs/perl_scripts_spec.md create mode 100644 docs/python_conversion_roadmap.md diff --git a/docs/cwl_pipeline_spec.md b/docs/cwl_pipeline_spec.md new file mode 100644 index 0000000..c272b74 --- /dev/null +++ b/docs/cwl_pipeline_spec.md @@ -0,0 +1,137 @@ +# CWL Pipeline Specification + +## Scope +This document describes the current CWL graph with emphasis on SE (`wf_ecliprepmap_se.cwl`) because conversion priority is SE first, followed by PE. + +## Top-level SE workflow: `cwl/wf_ecliprepmap_se.cwl` + +### Inputs +- `dataset` (string) +- IP sample: + - `barcode1r1FastqGz` (File) + - `barcode1rmRepBam` (File) +- Input/control sample: + - `barcode1Inputr1FastqGz` (File) + - `barcode1InputrmRepBam` (File) +- Reference/config: + - `bowtie2_db` (Directory) + - `bowtie2_prefix` (string) + - `fileListFile1` (File) + - `gencodeGTF` (File) + - `gencodeTableBrowser` (File) + - `repMaskBEDFile` (File) +- Runtime defaults: + - `prefixes` (string[], 25 two-base UMI prefixes from `AA` to `NN`) + - `se_or_pe` (string, default `SE`) + +### Steps +1. `step_ecliprepmap_barcode1` +- Runs subworkflow `wf_ecliprepmap_se_1barcode.cwl` for IP sample. +- Derives internal `dataset` name from input FASTQ nameroot with `.barcode1` suffix. + +2. `step_ecliprepmap_input` +- Runs same subworkflow for Input sample. +- Derives internal `dataset` name from input FASTQ nameroot with `.input` suffix. + +3. `step_calculate_fold_change_from_parsed_files` +- Runs `calculate_fold_change_from_parsed_files.cwl` over combined parsed outputs from IP vs Input. + +### Outputs +- Pre-rmdup SAM-like gz: + - `output_ip_concatenated_pre_rmDup_sam_file` + - `output_input_concatenated_pre_rmDup_sam_file` +- Rmdup SAM-like gz: + - `output_barcode1_concatenated_rmDup_sam_file` + - `output_input_concatenated_rmDup_sam_file` +- Parsed stats and fold-change tables: + - `output_ip_parsed` + - `output_input_parsed` + - `output_nopipes` + - `output_withpipes` + +## One-barcode SE subworkflow: `cwl/wf_ecliprepmap_se_1barcode.cwl` + +### Step graph (execution order) +1. `step_map_repetitive_elements` -> `map_repetitive_elements_se.cwl` +2. `step_splitbam_repsam` -> `splitbam.cwl` +3. `step_splitbam_rmrepbam` -> `splitbam.cwl` +4. `step_getpair` (scatter over 25 `prefixes`) -> `getpair.cwl` +5. `step_deduplicate` (dotproduct scatter over prefix-matched rep/rmrep files) -> `deduplicate.cwl` +6. `step_concatenate_rmDup` -> `concatenate.cwl` +7. `step_concatenate_preRmDup` -> `concatenate.cwl` +8. `step_gzip_rmDup` -> `gzip.cwl` +9. `step_gzip_preRmDup` -> `gzip.cwl` +10. `step_combine_parsed` -> `combine.cwl` + +### Subworkflow outputs +- `output_repeat_mapped_sam_file` (`.Rep.sam`) +- `output_rmDup_sam_files` (array of per-prefix rmdup SAM-like files) +- `output_pre_rmDup_sam_files` (array of per-prefix pre-rmdup SAM-like files) +- `output_concatenated_rmDup_sam_file` (gz) +- `output_concatenated_preRmDup_sam_file` (gz) +- `output_parsed_files` (array of parsed per-prefix files) +- `output_combined_parsed_file` (combined `.parsed`) + +## CommandLineTool contracts used by SE + +### `cwl/map_repetitive_elements_se.cwl` +- Base command: `parse_bowtie2_output_realtime_includemultifamily_SE.pl` +- Positional args: + 1. `read1` + 2. `bowtie2_db.path + "//" + bowtie2_prefix` + 3. `output_file` (default: `.Rep.sam`) + 4. `file_list_file` +- Output: `rep_sam` (SAM-like file) + +### `cwl/splitbam.cwl` +- Base command: `split_bam_to_subfiles_SEorPE.pl` +- Positional args: `sam_file`, `se_or_pe` +- Output glob: `*.tmp` +- Behavior depends on SE/PE flag and input extension (`.sam` vs `.bam`) + +### `cwl/getpair.cwl` (ExpressionTool) +- Inputs: one `prefix`, `rep_s[]`, `rmrep_s[]` +- Returns the file in each array whose basename starts with prefix. +- Outputs: `prefixrep`, `prefixrmrep` + +### `cwl/deduplicate.cwl` +- Base command: `duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.pl` +- Positional args: + 1. `repFamilySam` + 2. `rmRepSam` + 3. `se_or_pe` + 4. `gencodeGTF` + 5. `gencodeTableBrowser` + 6. `repMaskBedFile` + 7. `fileList1` +- Outputs: + - `*combined_w_uniquemap.rmDup.sam` + - `*combined_w_uniquemap.prermDup.sam` + - `*.parsed_v2.20201210.txt` + - `*.done` + +### `cwl/concatenate.cwl` +- Base command: `cat` +- Inputs: `files[]` +- `stdout` redirected to provided `concatenated_output` filename. + +### `cwl/gzip.cwl` +- Base command: `gzip -c ` +- Output filename: `.gz` + +### `cwl/combine.cwl` +- Base command: `merge_multiple_parsed_files.simplified_20191022.pl` +- Args: `outputFile`, then `files[]` +- Output glob: `outputFile` + +### `cwl/calculate_fold_change_from_parsed_files.cwl` +- Base command: `calculate_fold_change_from_parsed_files.py` +- Required args: `--ip_parsed`, `--input_parsed` +- Defaults: + - `--out_file_nopipes`: `.nopipes.tsv` + - `--out_file_withpipes`: `.withpipes.tsv` + +## PE workflow notes (for subsequent conversion phase) +- `cwl/wf_ecliprepmap_pe.cwl` runs `wf_ecliprepmap_pe_1barcode.cwl` for barcode1, barcode2, and input. +- It adds cross-barcode `combine`, `concatenate`, and gzip at top level. +- The one-barcode PE subworkflow mirrors SE structure but uses PE mapping parser (`map_repetitive_elements_pe.cwl`) and PE reads (R1/R2). diff --git a/docs/output_format_spec.md b/docs/output_format_spec.md new file mode 100644 index 0000000..25415be --- /dev/null +++ b/docs/output_format_spec.md @@ -0,0 +1,75 @@ +# Output Format Specification (Observed + Code-Aligned) + +## Source basis +- Observed files under `data/PPA1_rep1/results/*.gz`. +- CWL tool wiring and Perl/Python scripts. + +## 1) `.parsed` and `.reparsed.tsv`-style summary files + +### Header lines +Common readinfo-like rows begin with `#READINFO`. +Observed keys: +- `AllReads` (in `.parsed`, not always present in reparsed files) +- `UsableReads` +- `GenomicReads` +- `RepFamilyReads` + +### Body rows +Two row classes: +- `TOTAL\t\t\t` +- `ELEMENT\t\t\t\t\t` + +Notes: +- Some files labeled `.reparsed.tsv.gz` retain `TOTAL` rows but may omit initial `AllReads` line. +- Floating precision differs by script/formatting (`sprintf` in Perl; pandas/float formatting in Python). + +## 2) `.nopipes.tsv` and `.withpipes.tsv` +Tab-separated with header: +- `element` +- `IP_read_num` +- `IP_clip_rpr` +- `Input_read_num` +- `Input_clip_rpr` +- `Fold_enrichment` +- `Information_content` + +Meaning: +- `clip_rpr` terms are read proportion metrics. +- `Fold_enrichment = IP_clip_rpr / Input_clip_rpr` (with pseudocount handling in upstream script). +- `Information_content = IP_clip_rpr * log2(IP_clip_rpr / Input_clip_rpr)`. +- `.nopipes.tsv` excludes ambiguous multi-family mappings (contains no `|` in element family labels). +- `.withpipes.tsv` includes both ambiguous and unambiguous families. + +## 3) SAM-like pre-rmdup and rmdup outputs +Examples: +- `*.preRmDup.sam.gz` +- `*.rmDup.sam.gz` + +Characteristics: +- Tab-delimited SAM fields preserved. +- Additional right-side annotations are appended beyond canonical SAM tags. +- `ZZ:Z:` tags may include pipe-delimited ENST sets. +- rmdup files append classification fields such as: + - `RepFamily` / `UniqueGenomic` + - normalized family/element label string + +## 4) mpileup-short outputs +Examples: +- `*.rmDup.sam.gz.tmp.RNA18S.bam.sorted.bam.mpileup.short.gz` +- `*.rmDup.sam.gz.tmp.RNA28S.bam.sorted.bam.mpileup.short.gz` + +Observed columns: +1. transcript/accession id +2. 1-based position +3. reference base +4. depth/count + +## 5) Determinism/tolerance for validation +Validation should be tolerant for: +- floating point formatting differences +- row ordering differences where hash/dict iteration affects output order + +Validation should be strict for: +- schema/column set +- primary key identity (element/family labels) +- integer read counts diff --git a/docs/perl_scripts_spec.md b/docs/perl_scripts_spec.md new file mode 100644 index 0000000..44c289b --- /dev/null +++ b/docs/perl_scripts_spec.md @@ -0,0 +1,122 @@ +# Perl Script Specification (Current Repository) + +## Conversion Scope Decision +Per user-approved scope: +- Convert scripts used by CWL workflow execution path. +- Exclude legacy/non-CWL wrappers if not in workflow path: + - `bin/perl/RepElement_pipeline_1dataset.pl` (excluded) + - `bin/perl/duplicate_removal.pl` (excluded) + +## In-scope scripts + +### `bin/perl/parse_bowtie2_output_realtime_includemultifamily_SE.pl` +Purpose: +- Align SE reads with bowtie2 and emit SAM-like repetitive-element assignments with family/element annotations. + +CLI (from script): +1. `fastq_file1` +2. `bowtie_db` prefix +3. `output` SAM-like file +4. `filelist_file` mapping ENST -> type/priority + +Outputs: +- Main: `` +- Side files: + - `.bowtieout` + - `.multimapping_deleted` + - `.done` + +Behavior highlights: +- Streams bowtie2 output (`--sensitive -a --reorder`). +- Applies family prioritization and special rRNA handling (`RNA45S` vs `RNA18S/28S/5-8S` rules). +- Emits `ZZ:Z:` tag with multiple compatible ENSTs. + +### `bin/perl/parse_bowtie2_output_realtime_includemultifamily_PE.pl` +Purpose: +- Same as SE parser but for paired-end reads. + +CLI: +1. `fastq_file1` +2. `fastq_file2` +3. `bowtie_db` prefix +4. `output` SAM-like file +5. `filelist_file` + +Outputs: +- Main: `` +- Side files: `.bowtieout`, `.multimapping_deleted`, `.done` + +Behavior highlights: +- Reads bowtie2 SAM stream in paired-record chunks. +- Enforces read-name pairing checks. +- Maintains multi-family assignment bookkeeping. + +### `bin/perl/split_bam_to_subfiles_SEorPE.pl` +Purpose: +- Split a SAM/BAM into 25 temporary files by first two UMI nucleotides. + +CLI: +1. `sam_fi` (`.sam` or `.bam`) +2. `se_or_pe_flag` (`SE` or `PE`) + +Outputs: +- `AA..tmp` ... `NN..tmp` in current working dir. + +Behavior highlights: +- For BAM input, uses `samtools view -h` pipe. +- Skips unmapped reads (`flag 4` for SE; `77/141` for PE). +- In PE mode, assumes paired records are adjacent and may reorder interpretation by flag. + +### `bin/perl/duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.pl` +Purpose: +- Merge repeat-mapped SAM-like records with genome-mapped records and remove PCR duplicates. +- Produce rmdup/pre-rmdup SAM-like outputs and parsed count summaries. + +CLI: +1. `repfamily_sam` +2. `gabe_rmRep_sam` +3. `eCLIP_read_type_flag` (`SE`/`PE`) +4. `gencode_gtf_file` +5. `gencode_tablebrowser_file` +6. `repmask_bed_fi` +7. `filelist_file` + +Outputs (derived from input basename): +- `.combined_w_uniquemap.rmDup.sam` +- `.combined_w_uniquemap.prermDup.sam` +- `.parsed_v2.20201210.txt` +- `.done` + +Behavior highlights: +- SE and PE logic diverges after shared annotation loading. +- Uses per-read keys including UMI, strand, coordinates for deduping. +- Produces #READINFO lines + TOTAL/ELEMENT summaries. + +### `bin/perl/merge_multiple_parsed_files.simplified_20191022.pl` +Purpose: +- Merge multiple per-prefix parsed files into one dataset-level parsed file. + +CLI: +1. `output_fi` +2. `parsed_file_1` +3. `parsed_file_2` +4. ... + +Outputs: +- `output_fi` +- Appends to `failed_jobs_list.txt` in inferred working directory using a lock file. + +Behavior highlights: +- Sums readinfo counters across parsed inputs. +- Aggregates `TOTAL` and `ELEMENT` rows, then sorts by descending counts. +- Emits four canonical `#READINFO` lines in merged output. + +## Out-of-scope scripts in this phase + +### `bin/perl/RepElement_pipeline_1dataset.pl` +- Legacy wrapper generating shell/PBS pipeline commands. +- Not called by CWL workflow files. + +### `bin/perl/duplicate_removal.pl` +- Older variant of duplicate-removal logic. +- Not referenced by `cwl/deduplicate.cwl`. diff --git a/docs/python_conversion_roadmap.md b/docs/python_conversion_roadmap.md new file mode 100644 index 0000000..59a7aab --- /dev/null +++ b/docs/python_conversion_roadmap.md @@ -0,0 +1,109 @@ +# Python + Snakemake Conversion Roadmap + +Base branch: `codex/python-conversion` + +## Goals +1. Understand and document CWL pipeline and Perl scripts in this repository. +2. Understand and document the provided inputs in `data/` and the PPA1 example outputs in `data/PPA1_rep1*`. +3. Generate small deterministic test files derived from the PPA1 example. +4. Convert each Perl script in `bin/perl/` to Python. +5. Convert CWL workflow steps to Snakemake incrementally and test each step output vs expected. + +## Current Observations (from repository) +- Main SE workflow path for PPA1 example: + - `cwl/wf_ecliprepmap_se.cwl` + - nested `cwl/wf_ecliprepmap_se_1barcode.cwl` + - tools: `map_repetitive_elements_se.cwl`, `splitbam.cwl`, `getpair.cwl`, `deduplicate.cwl`, `concatenate.cwl`, `gzip.cwl`, `combine.cwl`, `calculate_fold_change_from_parsed_files.cwl` +- Main PE workflow path: + - `cwl/wf_ecliprepmap_pe.cwl`, `cwl/wf_ecliprepmap_pe_1barcode.cwl` +- Perl scripts to convert (`bin/perl/`): + - `RepElement_pipeline_1dataset.pl` + - `duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.pl` + - `duplicate_removal.pl` + - `merge_multiple_parsed_files.simplified_20191022.pl` + - `parse_bowtie2_output_realtime_includemultifamily_SE.pl` + - `parse_bowtie2_output_realtime_includemultifamily_PE.pl` + - `split_bam_to_subfiles_SEorPE.pl` +- Data location in this workspace: + - `data` is a symlink to `/Volumes/X9Pro/Yeo/repetitive-element-pipeline` + - Example SE run exists at `data/PPA1_rep1/` with `results/*.gz`, input YAML, and workflow log/output JSON. + +## Step-by-Step Execution Plan + +### Step 1: Pipeline + Script Documentation +Deliverables: +- `docs/cwl_pipeline_spec.md`: tool-by-tool and step dependency documentation for SE and PE workflows. +- `docs/perl_scripts_spec.md`: each Perl script CLI contract, inputs, outputs, side effects, and edge-case behavior notes. +- `docs/output_format_spec.md`: `.parsed`, `.reparsed.tsv`, `.nopipes.tsv`, `.withpipes.tsv`, SAM-like and mpileup-short field-level definitions inferred from files + code. + +Validation: +- Cross-check docs against CWL inputs/outputs and real files in `data/PPA1_rep1/results`. + +### Step 2: Input + Example Characterization +Deliverables: +- `docs/data_inventory.md`: every input artifact used by PPA1 example (paths, file types, sample line structure, compression). +- `docs/ppa1_expected_outputs_manifest.tsv`: canonical list of expected files and lightweight fingerprints (size, sha256). + +Validation: +- deterministic fingerprint generation scripts and reproducible inventory command. + +### Step 3: Create Small Test Fixtures +Deliverables: +- `tests/fixtures/mini/` with reduced-size SE inputs derived from PPA1 (small FASTQ/BAM/reference slices). +- `scripts/make_mini_fixtures.py` to regenerate fixtures deterministically. +- `tests/fixtures/mini/expected/` expected outputs for mini run. + +Validation: +- fixture-generation test and manifest checksums. + +### Step 4: Perl -> Python Conversion +Deliverables: +- New Python equivalents under `bin/python/` (one file per Perl script) with CLI parity. +- shared utilities module for parsing SAM/BAM and table records where appropriate. +- regression tests for each converted script on synthetic + mini fixture cases. + +Migration strategy: +- convert one script at a time in this order: + 1) `split_bam_to_subfiles_SEorPE.pl` + 2) `merge_multiple_parsed_files.simplified_20191022.pl` + 3) `parse_bowtie2_output_realtime_includemultifamily_SE.pl` + 4) `parse_bowtie2_output_realtime_includemultifamily_PE.pl` + 5) `duplicate_removal_inline_..._simple.pl` + 6) `duplicate_removal.pl` + 7) `RepElement_pipeline_1dataset.pl` (legacy wrapper) + +Validation: +- script-level golden tests compare normalized outputs with Perl baseline. + +### Step 5: CWL -> Snakemake Conversion (Incremental) +Deliverables: +- `Snakefile`, `workflow/rules/*.smk`, `config/config.yaml`, `workflow/envs/*.yaml`. +- first target scope: SE pipeline matching `wf_ecliprepmap_se.cwl` + `_1barcode` behavior. +- second target scope: PE parity. + +Incremental conversion/testing sequence (SE first): +1. map repetitive elements +2. split rep sam +3. split rmRep bam +4. prefix pairing logic (`getpair` equivalent) +5. deduplicate +6. concatenate + gzip outputs +7. combine parsed files +8. fold-change tables + +Validation at each step: +- compare produced files to expected for mini fixture and (where feasible) PPA1 reference outputs. +- compare row counts, key columns, and checksum (exact when deterministic; tolerant numeric comparison where needed). + +## Branching / PR Execution Strategy +- Keep `codex/python-conversion` as integration base branch. +- For each completed roadmap step, create branch `codex/python-conversion-stepN-` from latest `codex/python-conversion`. +- Commit/push branch and open PR targeting `codex/python-conversion`. +- After PR creation, fast-forward/merge locally into `codex/python-conversion` before starting next step branch. + +## Tooling Gaps Identified Locally +Currently found in PATH: +- present: `perl`, `samtools`, `gzip` +- missing: `snakemake`, `bowtie2`, `cwltool` + +These are required to fully execute conversion/verification end-to-end. From 4ebaf4ee9858d3d6b092b3e5be14a24ae205af6d Mon Sep 17 00:00:00 2001 From: Brian Yee Date: Thu, 19 Mar 2026 14:30:23 -0700 Subject: [PATCH 2/9] Step 2: inventory PPA1 inputs and generate expected-output manifest --- docs/data_inventory.md | 62 +++++++++++++++++++++++++ docs/ppa1_expected_outputs_manifest.tsv | 19 ++++++++ scripts/generate_ppa1_manifest.py | 39 ++++++++++++++++ 3 files changed, 120 insertions(+) create mode 100644 docs/data_inventory.md create mode 100644 docs/ppa1_expected_outputs_manifest.tsv create mode 100755 scripts/generate_ppa1_manifest.py diff --git a/docs/data_inventory.md b/docs/data_inventory.md new file mode 100644 index 0000000..9a7dd9b --- /dev/null +++ b/docs/data_inventory.md @@ -0,0 +1,62 @@ +# Data Inventory (PPA1 Example + Required References) + +## Location and path semantics +- In this workspace, `data/` is a symlink to `/Volumes/X9Pro/Yeo/repetitive-element-pipeline`. +- All paths below are documented using repository-relative paths for reproducibility. + +## PPA1 run metadata +- Input YAML: + - `data/PPA1_rep1.yaml` + - `data/PPA1_rep1/REPELEMENTMAPPING_PPA1_rep1_INPUT.yaml` +- Workflow run metadata: + - `data/PPA1_rep1/REPELEMENTMAPPING_PPA1_rep1_OUTPUT.json` + - `data/PPA1_rep1/REPELEMENTMAPPING_PPA1_rep1_LOG.txt` + - `data/PPA1_rep1/REPELEMENTMAPPING_PPA1_rep1_WORKFLOW-wf_ecliprepmap_se` + - `data/PPA1_rep1/REPELEMENTMAPPING_PPA1_rep1_VERSION-0.1.0` + +## Required SE reference inputs + +| Path | Purpose | Size (bytes) | +|---|---|---:| +| `data/bowtie_reference/MASTER_filelist.wrepbaseandtRNA.fa.fixed.fa.UpdatedSimpleRepeat.{1,2,3,4,rev.1,rev.2}.bt2` | Bowtie2 index shards | varied | +| `data/MASTER_filelist.wrepbaseandtRNA.enst2id.fixed.UpdatedSimpleRepeat` | ENST-to-family/type mapping list | 616168 | +| `data/gencode.v19.chr_patch_hapl_scaff.annotation.gtf` | Gencode annotation | 1199970581 | +| `data/gencode.v19.chr_patch_hapl_scaff.annotation.gtf.parsed_ucsc_tableformat` | Parsed Gencode table format | 41595212 | +| `data/RepeatMask.bed` | RepeatMasker regions | 180955350 | + +Additional provided references (not required for minimal SE CWL execution path): +- `data/ALLRepBase_elements.id_table.FULL` +- `data/genelists.chrM.wchr.txt` +- `data/mirbase.v20.hg19.gff3` + +## PPA1 example result artifacts +`data/PPA1_rep1/results/` contains expected compressed outputs from the SE workflow, including: +- Parsed summaries: `*.parsed.gz`, `*.reparsed.tsv.gz` +- Dedup outputs: `*.preRmDup.sam.gz`, `*.rmDup.sam.gz` +- Fold-change tables: `*.nopipes.tsv.gz`, `*.withpipes.tsv.gz` +- mpileup-short files: `*.mpileup.short.gz` + +A full expected file fingerprint table is recorded in: +- `docs/ppa1_expected_outputs_manifest.tsv` + +## Observed line-level structures (sampled) + +### SAM-like rmDup output (`*.rmDup.sam.gz`) +- Contains standard SAM columns plus appended annotations such as `RepFamily`/`UniqueGenomic` and normalized family labels. + +### Parsed summary (`*.parsed.gz`) +- Starts with `#READINFO` header lines, e.g. `AllReads`, `UsableReads`, `GenomicReads`, `RepFamilyReads`. + +### Reparsed fold-change input (`*.reparsed.nopipes.tsv.gz`) +- Header columns: + - `element`, `IP_read_num`, `IP_clip_rpr`, `Input_read_num`, `Input_clip_rpr`, `Fold_enrichment`, `Information_content` + +## Reproducible manifest generation +Command: +```bash +python3 scripts/generate_ppa1_manifest.py \ + --input-dir data/PPA1_rep1/results \ + --output docs/ppa1_expected_outputs_manifest.tsv +``` + +This records `relative_path`, `size_bytes`, and `sha256` for each expected output file. diff --git a/docs/ppa1_expected_outputs_manifest.tsv b/docs/ppa1_expected_outputs_manifest.tsv new file mode 100644 index 0000000..f637b6f --- /dev/null +++ b/docs/ppa1_expected_outputs_manifest.tsv @@ -0,0 +1,19 @@ +relative_path size_bytes sha256 +data/PPA1_rep1/results/MP2.PPA1_IN1.umi.r1.fqTrTr.sorted.fq.input.parsed.gz 65365973 6b7dd5f40ad086e407379e757a508e9925d23b7de47c12198b9cde2377618678 +data/PPA1_rep1/results/MP2.PPA1_IN1.umi.r1.fqTrTr.sorted.fq.input.preRmDup.sam.gz 2962472583 ef0ffdfdf080afd5b1b6a1c293229733b2e141fbd6ae99965d94da0bbde65867 +data/PPA1_rep1/results/MP2.PPA1_IN1.umi.r1.fqTrTr.sorted.fq.input.rmDup.sam.gz 1799892699 bc3ab8725324af85fe1e59cdf97bb464b3b24ce5814886823de0ceab0d087e98 +data/PPA1_rep1/results/MP2.PPA1_IN1.umi.r1.fqTrTr.sorted.fq.input.rmDup.sam.gz.tmp.RNA18S.bam.sorted.bam.mpileup.short.gz 12786 d424ef50cd119611a6d5c2ebcda290aef239d008aa512ab84516a71f8d68a9fd +data/PPA1_rep1/results/MP2.PPA1_IN1.umi.r1.fqTrTr.sorted.fq.input.rmDup.sam.gz.tmp.RNA28S.bam.sorted.bam.mpileup.short.gz 34240 177a27117d12746c29d0962f0d7c2ced84a94956c5a66e609e886260b93afd08 +data/PPA1_rep1/results/MP2.PPA1_IN1.umi.r1.fqTrTr.sorted.fq.input.rmDup.sam.gz.tmp.rRNA_extra.bam.sorted.bam.mpileup.short.gz 38440 08dae7e0e1bf4a80f26db4c509c94d5f3e694860b9e75da08b6a9e03a11c57ea +data/PPA1_rep1/results/MP2.PPA1_IN1.umi.r1.fqTrTr.sorted.fq.input.rmDup.sam.reparsed.tsv.gz 2984352 5b272f3bac56b2817e0d14b69e80a8576ad6c401ff9dcbcedc18db5554c071fb +data/PPA1_rep1/results/MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.nopipes.tsv.gz 8008 49059581de39e8aa90f1dfcfee37fce77f6bead55dd6bba6dcdf33db1b09dae1 +data/PPA1_rep1/results/MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.parsed.gz 29182643 ad30c5775ef021e33fa6a34f3ab22fa6ebcee0d5bc8a272182b2aa3d644c6c65 +data/PPA1_rep1/results/MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.preRmDup.sam.gz 2192050419 48c0b76ae20cd3a16797eb3f47f81cd0b9612df356fe2e3fd412ea5c98536ee2 +data/PPA1_rep1/results/MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.rmDup.sam.gz 1288407573 59a823800ba37d469494db7c8b92ca54ecdc7dab14bdaa64b5f7548ff42fe041 +data/PPA1_rep1/results/MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.rmDup.sam.gz.tmp.RNA18S.bam.sorted.bam.mpileup.short.gz 12587 69c387d959f8df7e1b2a91a77d8d916985b6b43cb34053a06c7dc93812662383 +data/PPA1_rep1/results/MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.rmDup.sam.gz.tmp.RNA28S.bam.sorted.bam.mpileup.short.gz 32816 ea8e60c87cc811af71154c8d5ac8dcf23abf780c2e2f66f3f670af6659629354 +data/PPA1_rep1/results/MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.rmDup.sam.gz.tmp.rRNA_extra.bam.sorted.bam.mpileup.short.gz 37907 406de4534758efc703af97939d2b702d3f9a44f09d69a8f81930a5b00109eef5 +data/PPA1_rep1/results/MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.rmDup.sam.reparsed.nopipes.tsv.gz 7236 b67e5b412cf433fb94be392ca45428253d549fae82f4b481e248c7d0b396dbe5 +data/PPA1_rep1/results/MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.rmDup.sam.reparsed.tsv.gz 3661993 d102231a4c531ac0a8e952d135963e71f953e9afcab5acef4ba24d129a13db7b +data/PPA1_rep1/results/MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.rmDup.sam.reparsed.withpipes.tsv.gz 42520 eaf938eb4491f19bf898e52497431def45aaee4fed84d8fcf8bd363f995d7852 +data/PPA1_rep1/results/MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.withpipes.tsv.gz 44057 3cc5817f355a8addc1627500f61fd2b220f6790ff89f7905f8ed25a66d3dfe37 diff --git a/scripts/generate_ppa1_manifest.py b/scripts/generate_ppa1_manifest.py new file mode 100755 index 0000000..d8a4841 --- /dev/null +++ b/scripts/generate_ppa1_manifest.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import argparse +import hashlib +from pathlib import Path + + +def sha256_file(path: Path, chunk_size: int = 1024 * 1024) -> str: + h = hashlib.sha256() + with path.open('rb') as fh: + while True: + data = fh.read(chunk_size) + if not data: + break + h.update(data) + return h.hexdigest() + + +def main() -> None: + parser = argparse.ArgumentParser(description='Generate expected output manifest for PPA1 example files') + parser.add_argument('--input-dir', default='data/PPA1_rep1/results', help='Directory containing expected result files') + parser.add_argument('--output', default='docs/ppa1_expected_outputs_manifest.tsv', help='TSV output path') + args = parser.parse_args() + + in_dir = Path(args.input_dir) + out = Path(args.output) + + files = sorted(p for p in in_dir.iterdir() if p.is_file()) + out.parent.mkdir(parents=True, exist_ok=True) + + with out.open('w', encoding='utf-8') as fh: + fh.write('relative_path\tsize_bytes\tsha256\n') + for path in files: + fh.write(f"{path.as_posix()}\t{path.stat().st_size}\t{sha256_file(path)}\n") + + +if __name__ == '__main__': + main() From e0338b63a98464146007f625a6ecd26f15d19f00 Mon Sep 17 00:00:00 2001 From: Brian Yee Date: Thu, 19 Mar 2026 14:34:34 -0700 Subject: [PATCH 3/9] Step 3: add deterministic mini fixtures and checksum-based validation --- .gitignore | 9 ++ docs/mini_fixtures.md | 33 +++++ scripts/make_mini_fixtures.py | 126 ++++++++++++++++++ .../mini/expected/input.parsed.mini.gz | Bin 0 -> 6492 bytes .../mini/expected/input.rmDup.sam.mini.gz | Bin 0 -> 174824 bytes .../fixtures/mini/expected/ip.parsed.mini.gz | Bin 0 -> 6292 bytes .../expected/ip.reparsed.nopipes.mini.tsv.gz | Bin 0 -> 7188 bytes .../ip.reparsed.withpipes.mini.tsv.gz | Bin 0 -> 12851 bytes .../mini/expected/ip.rmDup.sam.mini.gz | Bin 0 -> 185900 bytes tests/fixtures/mini/manifest.tsv | 9 ++ .../mini/source/input.preRmDup.sam.mini.gz | Bin 0 -> 198136 bytes .../mini/source/ip.preRmDup.sam.mini.gz | Bin 0 -> 204694 bytes tests/test_mini_fixtures_manifest.py | 33 +++++ 13 files changed, 210 insertions(+) create mode 100644 docs/mini_fixtures.md create mode 100755 scripts/make_mini_fixtures.py create mode 100644 tests/fixtures/mini/expected/input.parsed.mini.gz create mode 100644 tests/fixtures/mini/expected/input.rmDup.sam.mini.gz create mode 100644 tests/fixtures/mini/expected/ip.parsed.mini.gz create mode 100644 tests/fixtures/mini/expected/ip.reparsed.nopipes.mini.tsv.gz create mode 100644 tests/fixtures/mini/expected/ip.reparsed.withpipes.mini.tsv.gz create mode 100644 tests/fixtures/mini/expected/ip.rmDup.sam.mini.gz create mode 100644 tests/fixtures/mini/manifest.tsv create mode 100644 tests/fixtures/mini/source/input.preRmDup.sam.mini.gz create mode 100644 tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz create mode 100644 tests/test_mini_fixtures_manifest.py diff --git a/.gitignore b/.gitignore index ad48c69..caa3779 100644 --- a/.gitignore +++ b/.gitignore @@ -106,6 +106,15 @@ ENV/ .idea/ tests/ +!tests/ +tests/* +!tests/fixtures/ +!tests/fixtures/** +!tests/test_mini_fixtures_manifest.py +tests/__pycache__/ +tests/*.pyc + +.conda-env/ .ipynb_checkpoints/ SOURCEME diff --git a/docs/mini_fixtures.md b/docs/mini_fixtures.md new file mode 100644 index 0000000..8244cd6 --- /dev/null +++ b/docs/mini_fixtures.md @@ -0,0 +1,33 @@ +# Mini Fixture Set + +## Purpose +These mini fixtures provide deterministic, small test data derived from real `PPA1_rep1` outputs so we can validate Perl-to-Python and CWL-to-Snakemake conversion steps quickly. + +## Layout +- Source mini inputs: + - `tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz` + - `tests/fixtures/mini/source/input.preRmDup.sam.mini.gz` +- Expected mini outputs: + - `tests/fixtures/mini/expected/ip.rmDup.sam.mini.gz` + - `tests/fixtures/mini/expected/input.rmDup.sam.mini.gz` + - `tests/fixtures/mini/expected/ip.parsed.mini.gz` + - `tests/fixtures/mini/expected/input.parsed.mini.gz` + - `tests/fixtures/mini/expected/ip.reparsed.nopipes.mini.tsv.gz` + - `tests/fixtures/mini/expected/ip.reparsed.withpipes.mini.tsv.gz` +- Checksum manifest: + - `tests/fixtures/mini/manifest.tsv` + +## Generation +```bash +python3 scripts/make_mini_fixtures.py +``` + +Defaults: +- SAM-like files: first 3000 lines +- Parsed files: all `#READINFO` + first 60 `TOTAL` + first 200 `ELEMENT` +- TSV files: header + first 300 data rows + +## Validation +```bash +python3 -m pytest -q tests/test_mini_fixtures_manifest.py +``` diff --git a/scripts/make_mini_fixtures.py b/scripts/make_mini_fixtures.py new file mode 100755 index 0000000..3d03809 --- /dev/null +++ b/scripts/make_mini_fixtures.py @@ -0,0 +1,126 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import argparse +import gzip +import hashlib +from pathlib import Path +from typing import Iterable + + +def iter_lines_gz(path: Path) -> Iterable[str]: + with gzip.open(path, 'rt', encoding='utf-8', errors='replace') as fh: + for line in fh: + yield line + + +def write_gz(path: Path, lines: Iterable[str]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + with gzip.open(path, 'wt', encoding='utf-8') as out: + for line in lines: + out.write(line) + + +def head_lines(lines: Iterable[str], n: int) -> list[str]: + out: list[str] = [] + for line in lines: + out.append(line) + if len(out) >= n: + break + return out + + +def parsed_subset(lines: Iterable[str], total_rows: int, element_rows: int) -> list[str]: + out: list[str] = [] + total_seen = 0 + element_seen = 0 + for line in lines: + if line.startswith('#READINFO'): + out.append(line) + continue + if line.startswith('TOTAL\t') and total_seen < total_rows: + out.append(line) + total_seen += 1 + continue + if line.startswith('ELEMENT\t') and element_seen < element_rows: + out.append(line) + element_seen += 1 + continue + if total_seen >= total_rows and element_seen >= element_rows: + break + return out + + +def tsv_subset(lines: Iterable[str], n_data_rows: int) -> list[str]: + out: list[str] = [] + for line in lines: + out.append(line) + if len(out) == 1: + continue + if len(out) - 1 >= n_data_rows: + break + return out + + +def sha256_file(path: Path) -> str: + h = hashlib.sha256() + with path.open('rb') as fh: + while True: + data = fh.read(1024 * 1024) + if not data: + break + h.update(data) + return h.hexdigest() + + +def main() -> None: + p = argparse.ArgumentParser(description='Create mini deterministic fixtures from PPA1 example outputs') + p.add_argument('--source-dir', default='data/PPA1_rep1/results') + p.add_argument('--out-dir', default='tests/fixtures/mini') + p.add_argument('--sam-lines', type=int, default=3000) + p.add_argument('--parsed-total-rows', type=int, default=60) + p.add_argument('--parsed-element-rows', type=int, default=200) + p.add_argument('--tsv-rows', type=int, default=300) + args = p.parse_args() + + source = Path(args.source_dir) + out = Path(args.out_dir) + src_out = out / 'source' + expected_out = out / 'expected' + + mapping = { + 'MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.preRmDup.sam.gz': ('source/ip.preRmDup.sam.mini.gz', 'sam'), + 'MP2.PPA1_IN1.umi.r1.fqTrTr.sorted.fq.input.preRmDup.sam.gz': ('source/input.preRmDup.sam.mini.gz', 'sam'), + 'MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.rmDup.sam.gz': ('expected/ip.rmDup.sam.mini.gz', 'sam'), + 'MP2.PPA1_IN1.umi.r1.fqTrTr.sorted.fq.input.rmDup.sam.gz': ('expected/input.rmDup.sam.mini.gz', 'sam'), + 'MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.parsed.gz': ('expected/ip.parsed.mini.gz', 'parsed'), + 'MP2.PPA1_IN1.umi.r1.fqTrTr.sorted.fq.input.parsed.gz': ('expected/input.parsed.mini.gz', 'parsed'), + 'MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.rmDup.sam.reparsed.nopipes.tsv.gz': ('expected/ip.reparsed.nopipes.mini.tsv.gz', 'tsv'), + 'MP2.PPA1_IP1.umi.r1.fqTrTr.sorted.fq.barcode1.rmDup.sam.reparsed.withpipes.tsv.gz': ('expected/ip.reparsed.withpipes.mini.tsv.gz', 'tsv'), + } + + generated: list[Path] = [] + for src_name, (rel_dst, kind) in mapping.items(): + src = source / src_name + dst = out / rel_dst + lines = iter_lines_gz(src) + if kind == 'sam': + subset = head_lines(lines, args.sam_lines) + elif kind == 'parsed': + subset = parsed_subset(lines, args.parsed_total_rows, args.parsed_element_rows) + elif kind == 'tsv': + subset = tsv_subset(lines, args.tsv_rows) + else: + raise ValueError(kind) + write_gz(dst, subset) + generated.append(dst) + + manifest = out / 'manifest.tsv' + with manifest.open('w', encoding='utf-8') as fh: + fh.write('relative_path\tsize_bytes\tsha256\n') + for path in sorted(generated): + fh.write(f"{path.as_posix()}\t{path.stat().st_size}\t{sha256_file(path)}\n") + + +if __name__ == '__main__': + main() diff --git a/tests/fixtures/mini/expected/input.parsed.mini.gz b/tests/fixtures/mini/expected/input.parsed.mini.gz new file mode 100644 index 0000000000000000000000000000000000000000..c1de19ddc524781011b060899f3b632d8052a1db GIT binary patch literal 6492 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 CosV$< literal 0 HcmV?d00001 diff --git a/tests/fixtures/mini/expected/input.rmDup.sam.mini.gz b/tests/fixtures/mini/expected/input.rmDup.sam.mini.gz new file mode 100644 index 0000000000000000000000000000000000000000..9e4177608aa4631181345ac3f1236adbb2dee835 GIT binary patch literal 174824 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 z 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%0AD8E-jce8uAo9)Flu$ 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 IQ52UG05cV2w*UYD literal 0 HcmV?d00001 diff --git a/tests/fixtures/mini/expected/ip.parsed.mini.gz b/tests/fixtures/mini/expected/ip.parsed.mini.gz new file mode 100644 index 0000000000000000000000000000000000000000..f0794d4259c20b43b11e09bef2b8a861db8fd255 GIT binary patch literal 6292 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�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 WPu;}-0RRC1{{sLm1^HXoKL7wdA_MjS literal 0 HcmV?d00001 diff --git a/tests/fixtures/mini/expected/ip.reparsed.withpipes.mini.tsv.gz b/tests/fixtures/mini/expected/ip.reparsed.withpipes.mini.tsv.gz new file mode 100644 index 0000000000000000000000000000000000000000..609a915352fcd3d2b6706c1cbbffdd3d1af0534b GIT binary patch literal 12851 zcmV-3GR(~%iwFoaYrJU!|7mb8a%FH~a&u*5E_Z2kXmDw8WpgfVX>MsQbaQq9jGbGP zB*$^3pR4}L+LXop@(2=?L?b}aaG}{g!Nvx?pK6J<_SkE6q32dkZ`{S}LoU^pT8qBb-gvs# z(^HPk`N-2l&b_(jayS*2wdiHl)dzN#0Ay<9NrDs=Mi~0P^ z^ZWn%%hPw?zyJBu`{z#|KRlm&buHDxuea1=OsHU!+5I_TMxeYQ*0$UH=eJ> z_?@Pc3YQdgXgZjdV$-7bx#VKawMPA7=qc2-nV&v>_{ZFg9uV5Lh)+d_amul@5a%LI zw-b_1PMfGHH0{FWQnOy#J{NM#-c{FQ=}tc`=a0IN@1Fkg>Eqi|uDzD=YprPmx~@|z z&Gj^%9(qiA?Oa;7f4GF+f?meAsAq=i?9O$#HOH?1E&Ao6LtK0L{pS*^suyo#mBfoQ zU2v%qqCA(8@Yo04Sf*(&L1z=HPPn_)vbM)6t?KqNe-7Sj*Ed)4g+Jw>1CI8<;=Nv7 zr+w14Qw#I3f&@v@RHAOgb-hY&NRobcTzQZ*OJ$1guV=|cusD4T@S`|YK{BjDp`_!a%y27kqePi!Zxw>Tc znx)O_ZsISWKI(jUoGny)iBVz@^~2JO-ww?cv_k50NvR@5PFku<%=UuXP4`VQt(VMQ zA6(Cu3_pGR+tc&=cPG#xnNIptbzsfcc{1S?^iFN+Bq|#uCE3JT_>qI&r#ii5vGWF> zLhI68L_-@pql?^|n@Y!7>970}CA2W~xfd4^G`+4KAEP8z`Y-+Kt(e>hi}YA6A~}_q zC$Q_=AV_I~pz(gfKY>9_>+PlAuCB+Uo~cMt^(U0U>&W%`x#uwTMDMAC3x(g(3Vof` z^M~hmAHIM8{I@$O%N)L~TeHqWi;rc2vLI<&r`-Et`C;|>EbZjtQ<|%w=mJl#4c~|uM zU+7nL2yXs$M!||+q1T++dS|4hglZr!baXs6H;I!U?<&hy1%kSiR#0KC+$@DIeLmN5 zk9i$#<}Zb)%Z$kU31NNb1hq+ttX?kba%yF*P@a` zVVtS%Tr|lD$8}acNN8n3=U<~P2)gNqJ}ChmhZ1x-IaWPKW?Qx=p1=I#S6WDNIv3Jj zq_jSt^t`eJN)jL&UAUqPa9cseqRWWG5KB?`U<%kIon*g7V(!(uVYXzZL1JBM&r;0o zQoKxf9gmm!*U=)W(y}rnBqte)B;ATVl&Jr@dH&dd9_yz}3y&lgY(SQK+klQ)W(&{~ z>+lIy!ru#O$H#O%0+QwdZ|U^;>-RtY^uv>A)K5=uKZ*2YA=bi#A`s##$lfCIQP!fZ<5m ztVB!@B|9#to3|@j^-gyz;}Vlu$2TIA64sceD(DJjo$_{UQChwo8;C9t>NmF}X%-_2 zl1$y6{;&O_1VXIIb3urp-_dXF6mZHntNs16Z{Ga=?{7c;@c!wfvzP`zYshx#CQex! znl!^14HK&|z!zf|(gbM@oOisB-lhpS#S5{Dck5_Z{sePvbAgI!lu46nw6!5$^*@N_ z&4wh{9hU&Q*jfl#7HEn>*{4Og&_TWdpc-enybsANE@-o8v)n-M%glbu3vej_9NL7*2oSE_{QEv z&PDYlW6}Za|9MEUl*rAOuYyR)m|hbKw2og2DSE9>WABSjL>Fo|ElW1+J<_DLGUQ!+ z*QN7SnDnQ#u1Q)bqEqIJmXnx#TDqbo^#}3t!HEKvQHE3YVJeAiPcGO}aV#erwiDfx zICHF1?F#-u@FzrMp}owE&N!xG=TopkuvfVjbxN6dt9}QwDTkn@^C#)yNfy3NE92QE zgwq$1i}hUHhnAD{FE)YySi~SqYXL@CyKzjC4UP&4)@M?=*}^yPzI^-f%{TA=_O~a| zRedhbO(%?ln-AAdMS}c7XAeJgc&`^pWYP}A3*~H;X}>%OBODF7Ol_!!^A{ifNB%H2 z;2-Zl{qrQf%5m*J*d1)#OM8lWTS&HFgaQFB;yZYXx^THIKFz}w1_}GkOOPDgs^ET2 zxi5W6uKY>8ns31 zanlTOmA(W{x`c`D(6`4+jKq}kDd0P8Z!JvD z#jsG8z2FXFa;CStnKMX;&pevuw0^F?>u8Yzt?pLdU+X%lh{^X+9DR1WYonZbXPL&dNQ1m`>IQb z;iT9W%&?C;$N0^3i~}E=r=r8sd+RU-liOhyR8||m-JJt|#ObTWmF8W#N?1f{Dkawm zpMQKW$a!N2`QzIkPI5N;Jbr1G4nd~^#o88we$iZB+*`dX zF#qB?PG%zmvX&6`SE4?mm0^=Y9gbXi_>9y&CwL2CfC<%N>>y&m6%~VMX_%S^%eZOU zm3TH3Kko-3>!=SC>6`(4u31jQ0UiGwJ@ zRUE{5btoKK0OkwEQU^7T9IGZ-mvfe30J2v%hxYrgbRha|zqCiUD7ZY?0dKF3Dr)<; zv`o}PP(}Pg#(4SL5*Q*TLT+zClXkY}>#FDJ6cHq%PS<Opo`f&Hx3ofhR1BAt8{y%pjs3uEP_E%hrel-t(A0!L-*F^>o|{`0J*5dVesd z+a1WkuflB{%{BuBQvNLUg%RrSW&QK{>)(II9t4Sg35;A%U4>Y|cHRV(%LsjDf^^)j zPFMKzrd|Z$PG+mSp?or1142rGT>b%Ql5Rh zShy>owHX;R(@2!UL$Bxa&G&0KsYx%mfstrBFRMQleHgD<>`SD&$9d$U88YLN-9|WG zYH3fF6VPUKPfr%#5Impc`)(eh;0svK+=pIVCRIRDG5UQ{I_Zh%9WJu`aOqS$ARUoA zk%zT`mhj2@^?>wL3{)cD05A_h#f2DkL85($1gy=KW7nsS_M- zuBPh{YTsOknB{gI2H`lE7CdNukf4&5AmJ?FWo$*AZUbm8(gB#%2VL@+r2wS<_dAm=2Ob8|x$59Ef3N20*RjDFpY&L>akL2hA} zq?Vb6`gP{IQYhONWDrE=u2vV|!#>4&;rjEKLiD*^q8?TF|9@OJxh0hb(V+c^=g z6trzhFI7lHcIH2J`()N+Cd9~aBv#f&e2v(Y^vIEqEA@PY%#Qh={AeK{==L0b`uf?2@>+M7Of!mVo~5!ST7sI6a@BGzT0uO`~3_tXdUMjHvx zJv3dkCqN=6BwfL1UnD7xy0@L7U$cRRu>If%k((RkT)5y^`j#Oh($x-KnhmgR0GR51<_;;9K$ zYEW%+yV^z9sU4WMlYh*atORB!ELMQgAx0kgOS!ECSH4XrzKTmww3 z4C|m9kw+WJ$a+f-4e2d}-YSBf#oy%u{pY8@>lPq!>(NrEyi!ee3&r1PV&E8fb77+= z4y`2yS&?~mP4oU8Z94YxXG7>o~ z9g%Y^>-MWAtJ^bAdZ{Pj*f9c;7;e_osG1=~VvEp3KmN9}JH(Z(Pk?KIY#F4q3 zbuyBIz^Xb|{PF0mSwf0N9NRx`2~ZL&SFi@c|)f*&a_aP;QP` zEM9msohNdyU2ZZi(CqU4wPA0Jby=Wp({GIx`n?f zEFi64t`3m9kU0u47vZG= zq3E)Br~C!d@ltXzX5lvqg$Ex7cARms@cy=EiiIbCVUCZf}IXAgEfBXF3&maEh z`2;qs=L#;RkvA5g8@iT@KtH%Ef~?)?`SS5}SK1QnOTg9Tqzm&c+0|}ia?9d{EgIs< za*WQ>&f_=J4KTF?o7dpHp5o9`0R-!v{f%~Oc zlA9<;BsTG?5Q=T#!mc%`;6XIXlszGWNbXum-Z)mGidvC*>J&xk@QE{%9vJ$?^Y294 zZR#YnEX2Xd4VXv-v~$CT7%|5=LQ`ba>xHN_W;Eh3w%tCye*5X^hacX5vK6*N(`IC; zZ-iVDGER>wpt2Wo@U5fNnXO5#`h}=(!^prabKUl|19G=Wwn23YqmuiU5u)IISRvZu9z68=6Ilh70?Hq@F-#SgTv^4=E%>5d+b? zB3@;ix?jgK_d*l9LQ7c8zrt*rydr5z?y095_`7D3^>n?|igM;ny zggVAWh%;_foL3e*0`5H!9uTz(t;|~xMt&4Neb5sSuATPYYL_R4BcW}SKkjxmNO`_! zC#|@H7+Q`LRwfOXtB3j0$^~~c!vkDik)`|xtyADTI)Ip`z14kRgOI%t`LOU$l&E#E zoIHJ9;UBJ07e$ev1ihAff_8$(>-l6d)21;~@^t^Uk62sJi;NNcB0N+j;F6&Z(~!vu z6hh^S!}L1t-KW|_)D6!9Hgzdf9txF60`Fi~8>ha8nh{S}&ZCZGd#YW87yszH^_NK& zFUUr2#r`H|PUfg3v`uDn+aRW>=)^NMY>*w|T-n_3kSDnq;fr4_0ZX!#@R;5zj;DxS z83pc^K8Se?? z)kKIy3*`50UL#J6Oni)^3gA3E41#qmLm|-KZOMH=K?JX_PQg-Ft8t?8PPazR37Eq3 z@7Qm4{yHtd2Kyms;vi2@0*(^rIMx51^TA@ zq=Zv?SVYPqS)gq(>dSJ&)6hwXuFOZ;38o8`D&r2;%+QJD&?Wy=dGebU60!t8Rs5@n$V$3o#=ohL15w6_JQ!p8I|#jF+% zlwlJY6k8IYcWP&{#nK+!?7hxp&o(*#r86lHo#_<2Y-&oC0<8d{jOrYbekvm%uQ)@h*W$kAa06Vs8-! zs&Ut$S^iH@O<8l^T-j_jz#Tc!{$**k33y6@dTnIx+X!$J?X?q$+8Lo{bX0n1)td)G zK&Y7N3j&kLd`v;IFs0z+NQuHDht`0K^^n-MgGFye{gOG-KK)?yYN6mvcLW&-*gQG7 zf!Y(#tNGB1fT+GHtMM4tKh~1|FIyp}urIy!LGA}HU)TOOtM$o$D&qb^VCLcmJjk*l6eF%1xS^?z2B49=i zRzT`?CajlbNeYqYb6p?eQJSu2bJoca1^Q>u+r}xHeUn4#@Lk$fYY!_pOmD|H)+G=F zf@tk}5aN*0q=2ksDS{J7VF4P&z>f0273jH-#v|!E3N1vqv+nS`$8lk@p8h6hwE;Wf ztwMcnhez@h>fcFa!eiT!P~KqdJ>L3a7)@?`9j70rM2>~qVk?DoA8jR_(vnbtFxst% z{!sl<+A(;!O99bo$5LXQb$^DS^bV#Kzm>luEFn?v8f7tPz)i(?=V~d#m^h(39+H?VHvHa$l69ouiMYJA z+4y9-ABn9{fh0e3qVOHFxLHoVX5tw1(Rnd`9GLjV)spCdtbvYVTf`kxfFx4XCI;oh z1O4(Rf+}KgWO&D3svA-!<6qXZ#fRvuA}eks6q4&Ap`dn#606#;QHIY?f)mJTCWU`5 zP*Lx;CF)27Qs}USecdIYXjXD9!%h3$n~Vh$R^tcKKh*X@Y(8^0=pqXg7Z&-65;mo1KG(|5P_dVMgEF4q6~#VP=uZWMZv0h3qMRb{iaj;1b)~MK@XjNL%zQ&$B_4ZvOEYiIIU1A%d=++dTp5y ztYZEES6)U*7*YtMieo{_$>@_`lfj>F_K*o-#Rtit8evLN>Em|D8eMx)Hl453ro(^5 z8wms&u?RH05Y)$eA;k#M0}Zy^_9<_K5pq9miT=fft(RMT5a@l3Kk zLKMl9{1T}g$?r(hA>D7})J5kqB@H75=IO;T{#>ak9>);NHQ(Qe16bgThL2!f(MS;W zvu~PE5e=0nf+DfKCR5m^O24=64%isC?8cdhW%kV#Y0@=d-V>4=AE7aUc3wKvNXkFR zQr=%~HIb)MGVf5bOtlw2^;WJ_4R^i~c}~`(DH3mdutBw3sV@X>w2*Bn;wg>imtj2u zg_`|fZVRQL5O}FSw?qU(riw;pT~Vb5Yg_7ZopX)Z`~tDpICnHwjP$D1!-}Fz77nfC zhr2hVpb1UVF-kq-YayLmqDB>$R>q?m4;Nb=dnK&2tp`hsqDivgG8C*QkZxAE(5Xln zD)SeS`G5ZI?YmQ@bV(+XD)1ftmp-0PHn(j75~zBoF;`}$c{^%}AOj8>He#~so0h@v z-adanTDPs{M{g+kngUn`ISPqH=kd0jRp)wd<&114H8Y`=?F>KA%$T0+3}dy!>D&;U zyHBSgj4#fD@dd z{a9$)hf{O||LCaW;;jL0UPc@tJ!T&)znd&LEe#QF>VsjKutDyMBlsaVYM(^7_vY_f z1LCa!&U!f7O!^w6Cb~a8)htoQkWt(( z&2;r&sr?92dY0vS+kTDQhB$W8;9CKWTi$+wK2dDktQMnKQiNW0DHy%?`PDGw&PA4& zW`==*9Aj}e7MHkaqX!Y~mfc29S?>WdU}ENBaz#cw%H1qV8h_(WWb+-s++X()#= zzD5}b@!!0s5dZP?!}~EOC7Dar{Eb9T?wZ;lLKI2lZD;x^>`tHPCQA|%XXNvWE;JCj-JmNJ7t9>whZsTei_oo??Uj?o5$ zEXaCq5q)h4=n+e0Gzz$bx-)b}xHYTi&pRogg-TZ{=$|nE--c@YmWHa5o-MZ0}1#I_)w&6ssCQv@K z(mkX5O5Rm-sQ#he66c*_w@Prko1K-<;EQ=Q;$S12aDFi>A(*rUsVA6NP$m{olls7{ z0}(o8ia+VLCUqzFAe(KyFZtjeef`Hj|KYey>SJHLVcAke!5q3OGAYj@MvLW8-Q8#< zp`q!40N=DYC%f%-Q_ZnVMT%or$oQt0Eik~siiC*c6uV984&*;Dw<8T&&*9x=A+j~x z(bq7=c4QbioUo+|1Od{LN~4GzRmra17A-2RGjF7otpNJ&KAd5@6_m|`nur2(+Pok6 z?F1~fo9MkwwxHrHSxP^_ksrh?@0ZE83`J=BqjF-ljoc-B+lX#Nx=&B)l%|QNAHHsZDajJ%O)^HyueF~wT2+I2k1|GkF|+czWEhheAh9P4 z$zp~$j(T#vhJGP+*3w3+>OfHmAVZL<7+7857Tk%^zx7+)Ds4{Sa+4NKn#|adWT8FJ z*;;1=jgk_1z=1+I;S@E}vJ4yL+XZ219+r^S$)8_1yFio^v7>O-LNgL^M&~3N8DjEB zNVt>lRE>oSP;Tm(mT-(yjLnjgdpMF!sB}O|XXS(!>tg13^@C&uz>D=4t0o>sN?vtb z`MObEPLPh^*e(py&|L5&M>ABzu_-(cdzQxcW8^2x#sKkElWmEgEHReZ}dC1RzF z^RT3p&5Y|LY#JSL4363S+23JoQ20`BTViH1B<8K@L>ehG*G8W#opH3_;3HC4v;}0D z%R}KZQ@~_j>iLUrzM@~vAf-w&hd{SsP9-h1Zk3>Peq%oi<@Pqw10P&3Tq%WZGq`W^ z9P~^sn!@U^x1KEwd6uND`aDNrfZm@p2W8nU64Vkd!8>#tVvANeZ@mNIh?3r>;$_Cv z?2jmnE{PPcG584qMhA;!*(2kvGCejnuZ(ur#tepVlQ-Ts`FZp3^ywLck&`h{fDt@p zD}f*qN<21ed&BZ1LmbLLwg2{d1np|*l7&62nXT>i80!$WaBVM;38hnku{yEX{D(vd zAjKGzsuZ`6+>Mbp6i=`SBdGQTa&9Op^CY(@JqTB6MJF^r;&t?N5!Jv&AQ>>$p@@v? z0X`z38QK}k5VHW0JF-!tqY_C9o^5cWu?U9#kd33NA#a?=bkGft7td(_?lsHT?ZyxJklEi*t=p-Ca-Hd+RT z`2&%mhGf`Ve3%mRT&nS-6lWRfsPWWF5}@jj#xl}EEt5w(Q!-4UMxa)j>;rvF;ZauB z5=+r0kKiWXq_Soxqs)lO&ESjicT{Ck5heRxX~1@|ST3G!w9Ets;Z969gy*5^N(083 z)YW%m#Y=h+L8YmsJy{!jA&KF`(A%y%v$jS?A=HC3e=8q1TazL~Gs47z*#f3*E&#x! zifm$#^lRoXc?gaWEm1^W<^}E8)3~BB>Jg7@CjO>-g&f7L2P};~beT*PlpCY~nJA}h z4^g*A5JQ_}s)IpJdljs%v|qYG;_dz0KB+8+xX2zmCfG@ynZXu_+DThv8J48cwVKlK z%KVI&1ak~1)6YE|A1;X0`7_v1vgG-Z-fj%@q^md`qKaC=3^&QNsSUxbO1GqcyYmE$ zQsBri9=0|cQDC^h7(ZrzFbyI+3X4towdn&TFy>{a`qtS^jcafB?Rf&aK>r^#`0{q> zG)vaqpi5-h0A()|U_O8P<;0X#AW4$5@NmFA1@>(VzlvxMPF4f?Rr`Bxnd%4|)sZW;!Ie(Rsq;r?BLeks?egm638|G9=%q&2C!0L7|*5ElTGBMmf{OvlaM_lq;=#9wVm-(Zt4 zLm{aeXt?WSnkjTA1!N9kIa>%|%yeb)K;8Rh4=t6bDxquUwq(W>(DcAT;*<)Fy_uwP zej(HvT{9BOsJ^K#eXhYg!UODQBIm(68R&`~-2zN4V&;uFRBemQ-g8xNxg>n-HcQTBe?& z!r=g)x43C^gJApE_I5Xv(c#@-*9%|j7qLR8`;6+u44iO1zL#E0; z;(MPB2qQ$`=`!2jisc206&AJ$XB?u9VU<<<$15_n!%X6^+@h^B z+V3i%FqAYw=gO=H<}TRuMnY>8E_yq^7voOWO;^pfGCDErcUXsoql9QJmk8EVVi;{i zV=`kT_erwIIF0K1gG0UZnZ-%X-iDC&o@AKjO~O()EwbjX%urE!7~>xuUL5>yv}rcK9B*^ zw4E?JKu!esWZgWYw2=7Azi|Dt8P#@5QCQyB*gnD;HV%>@IbI=}NSqA^leca&pXlRm z#Tay%Jn*G@WF6WV%m$LpzE3}NHBhj-V2Bb7$9OPDFg=3gx-i$$9mT&VJrNoM5Lu?KOrox6%;;b?TU+{LA<~$}fW1yb4PQsWXd}wsM|Vs)e=D61 zHY;Y#cbHX+vw)fq;uunNvFY5^sv;9piY!n-$yDG@7|n}1M=_Tpj3P|w1<9uP7T{wRRhtT?zf>|Z$48K*+= zK$|tE_k{y|xk|9$3tvOB+EGX6V!0g{+vlk;?1FiDnN-~{y?mnqqd7$DB@Dk6e!iJo zVMJM{yR~A@;U$&P!^_xF3nrQiA;8xqLI}}j#7(p|*5SbKqaTxj7y)EJ=O$-ItDPC* zU5b6UBP+dn|bD}P&SQD_WieZYu z#yaj1DE!Oo`8M#5(FF(bMpo!MmTM1rB>vXmQ1ll?nmYRMr|#$5?9A6FSMe0D%oX!> ztjXs8bsI)UB^7hktihDZLF(|Nlp|R8Vn+TnzRJm(<`4SY#}FjOG;Md8XpNxeggVkn z_*ll7`4eP=S@SibcR#lU!e`%CF{xM`V;FF<>VxxSTs=$JoKb6g=38B;Bd0CVmxp+M zKUVj+=4^zgH1*~Vw;(pXWE9slQ%c)^vqmurZkjvPy{%3k=B)~AW14RtMzgZ(uB~TV zXptTjs;s?%4-;CLl))Dfr5Rj*u{iU-EwytI^4PhT1JY!^+PgwB$JYQ3$^Ru#i z%m8&tR6pjFAL`?)x5-?)4wss%90LcYj1<7>77JX z**G%$oi94aKUhj)9TVTT#!wpSS#q>VO}KTAiP`i5^iAZfsj-$ZkStAs&STuHJg6<^ zK}m79em~wYVWKH@Xp9Rn0(i zBKQoObCYBmi$M`9oUJfhY%e==CLf(NeS;MFGRPxiSgLQ%mTmklkZ#D=ef#N62zD-w9*yG`nP{=r9+Snzb36LyFaXZl$dXROos zE;l9{JL3wmjfpq3o+rK;uf*e|hww^^^@}U}FlG+fH$W_8k#VDc+^~=253_?>vCf0a z#E*QvpBoi>d5zsPWB8wiG8vl0-0xr`qiodl_=>n3_blulElr5aD4_LquF{4-!xt~+ zgYU=pV0!X|P%yqYgLWpqlF&24a7(6 z4@(Z~1Hd0!Fb+t#V*kQvOyXcjOgaV$MCKS}@63}9!CVq5N<4*vc{Ulo68OB6`I3!@ zhUH^EfJSOLZN4NE`E^rFN{~$}%o}W^!`iFYMQ8kel@R6-8^$jlf)dnYQ+$$b`nHLn zO_=5@&xB^9p8vOMx^_dBKoPR_et({?npq40-%BOQAps0n@kIpo{XumF%de#oCvPLA z7%{#NK+Ntgn)=gyj{wrhm)tVbkB;=3M&BzrR%(T8DM84I+iUT6Fp zt%#W~F^yxm5CK%_L8aZOt_ag`RYmG8gPVp*p7JP;U>1b^nf6SkKvCmkUB_dR65Tg8 z&k(Qsb@z0PIl5oPmpO=!?^8S|bF#^!%*qUbc}2Vg^bS{?RN|HTyf7Gwqz7NTLi3 literal 0 HcmV?d00001 diff --git a/tests/fixtures/mini/expected/ip.rmDup.sam.mini.gz b/tests/fixtures/mini/expected/ip.rmDup.sam.mini.gz new file mode 100644 index 0000000000000000000000000000000000000000..a26e7a08995f0d795d25e2835281f927edd33bfb GIT binary patch literal 185900 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иrBLr9IoJ(T4%RZ>`nzLY9 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 literal 0 HcmV?d00001 diff --git a/tests/test_mini_fixtures_manifest.py b/tests/test_mini_fixtures_manifest.py new file mode 100644 index 0000000..78c77cd --- /dev/null +++ b/tests/test_mini_fixtures_manifest.py @@ -0,0 +1,33 @@ +from __future__ import annotations + +import csv +import hashlib +from pathlib import Path + + +def sha256_file(path: Path) -> str: + h = hashlib.sha256() + with path.open('rb') as fh: + while True: + chunk = fh.read(1024 * 1024) + if not chunk: + break + h.update(chunk) + return h.hexdigest() + + +def test_mini_fixture_manifest_matches_files() -> None: + manifest = Path('tests/fixtures/mini/manifest.tsv') + assert manifest.exists(), 'manifest missing; run scripts/make_mini_fixtures.py' + + with manifest.open('r', encoding='utf-8') as fh: + reader = csv.DictReader(fh, delimiter='\t') + rows = list(reader) + + assert rows, 'manifest contains no fixture rows' + + for row in rows: + path = Path(row['relative_path']) + assert path.exists(), f'missing fixture file: {path}' + assert str(path.stat().st_size) == row['size_bytes'], f'size mismatch: {path}' + assert sha256_file(path) == row['sha256'], f'sha256 mismatch: {path}' From 278c0d10c1b523ba0d7e2242b912d042a3a91761 Mon Sep 17 00:00:00 2001 From: Brian Yee Date: Thu, 19 Mar 2026 14:37:42 -0700 Subject: [PATCH 4/9] Step 4a: convert split/merge Perl utilities to Python with parity tests --- .gitignore | 1 + ...ltiple_parsed_files.simplified_20191022.py | 127 ++++++++++++++++ bin/python/split_bam_to_subfiles_SEorPE.py | 120 +++++++++++++++ tests/test_split_merge_parity.py | 143 ++++++++++++++++++ 4 files changed, 391 insertions(+) create mode 100755 bin/python/merge_multiple_parsed_files.simplified_20191022.py create mode 100755 bin/python/split_bam_to_subfiles_SEorPE.py create mode 100644 tests/test_split_merge_parity.py diff --git a/.gitignore b/.gitignore index caa3779..caa3627 100644 --- a/.gitignore +++ b/.gitignore @@ -111,6 +111,7 @@ tests/* !tests/fixtures/ !tests/fixtures/** !tests/test_mini_fixtures_manifest.py +!tests/test_split_merge_parity.py tests/__pycache__/ tests/*.pyc diff --git a/bin/python/merge_multiple_parsed_files.simplified_20191022.py b/bin/python/merge_multiple_parsed_files.simplified_20191022.py new file mode 100755 index 0000000..42677a8 --- /dev/null +++ b/bin/python/merge_multiple_parsed_files.simplified_20191022.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import argparse +import fcntl +from collections import defaultdict +from pathlib import Path +import re +import sys + + +READINFO_RE = re.compile( + r'All\sreads\:\t(\d+)\tPCR\sduplicates\sremoved\:\t(\d+)\tUsable\sRemaining\:\t(\d+)\tUsable\sfrom\sgenomic\smapping\:\t(\d+)\tUsable\sfrom\sfamily\smapping\:\t(\d+)$' +) + + +def main() -> int: + ap = argparse.ArgumentParser(description='Merge parsed files') + ap.add_argument('output_fi') + ap.add_argument('files', nargs='+') + args = ap.parse_args() + + output_fi = Path(args.output_fi) + files = [Path(p) for p in args.files] + + split_fi1 = list(files[0].parts) + short_fi1 = split_fi1[-1] + working_dir = Path(*split_fi1[:-1]) if len(split_fi1) > 1 else Path('.') + failed_jobs_list = working_dir / 'failed_jobs_list.txt' + + print(f'SHORTFI:{short_fi1}', end='') + print(f'WORKDIR:{working_dir}', end='') + + lock_fi = Path(str(failed_jobs_list) + '.lck') + lock_fi.parent.mkdir(parents=True, exist_ok=True) + with lock_fi.open('w') as s: + fcntl.flock(s.fileno(), fcntl.LOCK_EX) + with failed_jobs_list.open('a'): + pass + + read_sums = { + 'all': 0, + 'usable': 0, + 'genomic': 0, + 'repfamily': 0, + 'total': defaultdict(int), + 'element': defaultdict(lambda: {'ensg_all': None, 'ensg_primary': None, 'readnum': 0}), + } + + for parsed_file in files: + parse_file(parsed_file, read_sums) + + output_fi.parent.mkdir(parents=True, exist_ok=True) + with output_fi.open('w', encoding='utf-8') as out: + usable = read_sums['usable'] + all_reads = read_sums['all'] + genomic = read_sums['genomic'] + repfamily = read_sums['repfamily'] + + out.write(f'#READINFO\tAllReads\t{all_reads}\n') + out.write(f'#READINFO\tUsableReads\t{usable}\t{usable / all_reads if all_reads else 0}\n') + out.write(f'#READINFO\tGenomicReads\t{genomic}\t{genomic / usable if usable else 0}\n') + out.write(f'#READINFO\tRepFamilyReads\t{repfamily}\t{repfamily / usable if usable else 0}\n') + + for element, readnum in sorted(read_sums['total'].items(), key=lambda kv: kv[1], reverse=True): + out.write(f'TOTAL\t{element}\t{readnum}\t{(readnum / usable) if usable else 0}\n') + + items = sorted( + read_sums['element'].items(), + key=lambda kv: kv[1]['readnum'], + reverse=True, + ) + for element, info in items: + out.write( + f"ELEMENT\t{info['ensg_primary']}\t{info['readnum']}\t" + f"{(info['readnum'] / usable) if usable else 0}\t{element}\t{info['ensg_all']}\n" + ) + + return 0 + + +def parse_file(parsed_fi: Path, read_sums: dict) -> None: + with parsed_fi.open('r', encoding='utf-8', errors='replace') as fh: + for raw in fh: + line = raw.rstrip('\n') + tmp = line.split('\t') + if not tmp: + continue + if tmp[0] == '#READINFO': + m = READINFO_RE.search(line) + if m: + read_sums['all'] += int(m.group(1)) + elif len(tmp) > 2 and tmp[1] == 'UsableReads': + read_sums['usable'] += int(float(tmp[2])) + elif len(tmp) > 2 and tmp[1] == 'GenomicReads': + read_sums['genomic'] += int(float(tmp[2])) + elif len(tmp) > 2 and tmp[1] == 'RepFamilyReads': + read_sums['repfamily'] += int(float(tmp[2])) + else: + print(f"couldn't parse readinfo line {line}", file=sys.stderr) + elif tmp[0] == '#READINFO2': + continue + elif tmp[0] == 'TOTAL': + _, element, readnum, *_ = tmp + read_sums['total'][element] += int(float(readnum)) + else: + if len(tmp) < 6: + continue + _, ensg_primary, readnum, _, enst_all, ensg_all = tmp[:6] + existing = read_sums['element'][enst_all] + if existing['ensg_all'] is not None and existing['ensg_all'] != ensg_all: + print( + f"error - ensg_all mismatch {ensg_all} {existing['ensg_all']}", + file=sys.stderr, + ) + if existing['ensg_primary'] is not None and existing['ensg_primary'] != ensg_primary: + print( + f"error - ensg_primary mismatch {ensg_primary} {existing['ensg_primary']}", + file=sys.stderr, + ) + existing['ensg_all'] = ensg_all + existing['ensg_primary'] = ensg_primary + existing['readnum'] += int(float(readnum)) + + +if __name__ == '__main__': + raise SystemExit(main()) diff --git a/bin/python/split_bam_to_subfiles_SEorPE.py b/bin/python/split_bam_to_subfiles_SEorPE.py new file mode 100755 index 0000000..0b4c237 --- /dev/null +++ b/bin/python/split_bam_to_subfiles_SEorPE.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import argparse +import subprocess +import sys +from pathlib import Path + + +PREFIXES = [a + b for a in 'ACGTN' for b in 'ACGTN'] + + +def sam_stream(path: Path): + if path.suffix == '.sam': + with path.open('r', encoding='utf-8', errors='replace') as fh: + for line in fh: + yield line + elif path.suffix == '.bam': + proc = subprocess.Popen( + ['samtools', 'view', '-h', str(path)], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True, + ) + assert proc.stdout is not None + for line in proc.stdout: + yield line + stderr = proc.stderr.read() if proc.stderr else '' + ret = proc.wait() + if ret != 0: + raise RuntimeError(f'samtools view failed ({ret}): {stderr}') + else: + raise ValueError(f'weird - {path} not either sam or bam file format - exit') + + +def main() -> int: + ap = argparse.ArgumentParser(description='Split SAM/BAM into 25 UMI-prefix tmp files') + ap.add_argument('sam_fi') + ap.add_argument('se_or_pe_flag', choices=['SE', 'PE']) + args = ap.parse_args() + + sam_path = Path(args.sam_fi) + sam_short = sam_path.name + mode = args.se_or_pe_flag + + if mode == 'PE': + print('splitting in paired-end mode', file=sys.stderr) + else: + print('splitting in single-end mode', file=sys.stderr) + + filehandles = { + p: (Path(f'{p}.{sam_short}.tmp')).open('w', encoding='utf-8') + for p in PREFIXES + } + + try: + stream = sam_stream(sam_path) + it = iter(stream) + for r1 in it: + if r1.startswith('@'): + continue + r1 = r1.rstrip('\n') + tmp_r1 = r1.split('\t') + r1_name = tmp_r1[0].split()[0] + r1_flag = int(tmp_r1[1]) + + r2 = None + tmp_r2: list[str] | None = None + if mode == 'PE': + try: + r2 = next(it).rstrip('\n') + except StopIteration: + break + tmp_r2 = r2.split('\t') + r2_name = tmp_r2[0].split()[0] + if r1_name != r2_name: + print( + f'paired end mismatch error: {sam_path} r1 {tmp_r1[0]} r2 {tmp_r2[0]}', + file=sys.stderr, + ) + if not r1_flag: + print(f'error {r1} {r2}', file=sys.stderr) + + if mode == 'PE': + if r1_flag in (77, 141): + continue + else: + if r1_flag == 4: + continue + + if mode == 'PE': + if r1_flag in (99, 355, 83, 339): + pass + elif r1_flag in (147, 403, 163, 419): + assert r2 is not None and tmp_r2 is not None + tmp_r1, tmp_r2 = r2.split('\t'), r1.split('\t') + else: + continue + + randommer = tmp_r1[0].split(':')[0] + first2 = randommer[:2] + if first2 in filehandles and r2 is not None: + filehandles[first2].write(f'{r1}\n{r2}\n') + else: + if r1_flag not in (16, 272, 0, 256): + continue + read_name_parts = tmp_r1[0].split('_') + randommer = read_name_parts[-1] + first2 = randommer[:2] + if first2 in filehandles: + filehandles[first2].write(f'{r1}\n') + finally: + for fh in filehandles.values(): + fh.close() + + return 0 + + +if __name__ == '__main__': + raise SystemExit(main()) diff --git a/tests/test_split_merge_parity.py b/tests/test_split_merge_parity.py new file mode 100644 index 0000000..e8cf067 --- /dev/null +++ b/tests/test_split_merge_parity.py @@ -0,0 +1,143 @@ +from __future__ import annotations + +import gzip +import hashlib +import math +import subprocess +from pathlib import Path + + +REPO = Path(__file__).resolve().parents[1] +PERL_SPLIT = REPO / 'bin/perl/split_bam_to_subfiles_SEorPE.pl' +PY_SPLIT = REPO / 'bin/python/split_bam_to_subfiles_SEorPE.py' +PERL_MERGE = REPO / 'bin/perl/merge_multiple_parsed_files.simplified_20191022.pl' +PY_MERGE = REPO / 'bin/python/merge_multiple_parsed_files.simplified_20191022.py' + + +def sha256_file(path: Path) -> str: + h = hashlib.sha256() + with path.open('rb') as fh: + while True: + chunk = fh.read(1024 * 1024) + if not chunk: + break + h.update(chunk) + return h.hexdigest() + + +def unzip_to(src_gz: Path, dst: Path) -> None: + with gzip.open(src_gz, 'rt', encoding='utf-8', errors='replace') as src, dst.open('w', encoding='utf-8') as out: + out.write(src.read()) + + +def test_split_script_parity(tmp_path: Path) -> None: + sam_src = REPO / 'tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz' + sam = tmp_path / 'ip.preRmDup.sam' + unzip_to(sam_src, sam) + + perl_dir = tmp_path / 'perl_split' + py_dir = tmp_path / 'py_split' + perl_dir.mkdir() + py_dir.mkdir() + + subprocess.run(['perl', str(PERL_SPLIT), str(sam), 'SE'], cwd=perl_dir, check=True) + subprocess.run(['python3', str(PY_SPLIT), str(sam), 'SE'], cwd=py_dir, check=True) + + perl_files = sorted(perl_dir.glob('*.tmp')) + py_files = sorted(py_dir.glob('*.tmp')) + + assert len(perl_files) == 25 + assert len(py_files) == 25 + assert [p.name for p in perl_files] == [p.name for p in py_files] + + for p_perl, p_py in zip(perl_files, py_files): + assert sha256_file(p_perl) == sha256_file(p_py), f'mismatch: {p_perl.name}' + + +def parse_merged(path: Path): + headers: dict[str, tuple[int, float | None]] = {} + totals: dict[str, int] = {} + elements: dict[str, tuple[str, int, str]] = {} + + with path.open('r', encoding='utf-8', errors='replace') as fh: + for raw in fh: + line = raw.rstrip('\n') + cols = line.split('\t') + if cols[0] == '#READINFO': + key = cols[1] + count = int(float(cols[2])) + frac = float(cols[3]) if len(cols) > 3 else None + headers[key] = (count, frac) + elif cols[0] == 'TOTAL': + totals[cols[1]] = int(float(cols[2])) + elif cols[0] == 'ELEMENT': + # ELEMENT primary readnum frac element_id gene_id + elements[cols[4]] = (cols[1], int(float(cols[2])), cols[5]) + + return headers, totals, elements + + +def test_merge_script_parity(tmp_path: Path) -> None: + ip_parsed = tmp_path / 'ip.prefix.parsed_v2.20201210.txt' + input_parsed = tmp_path / 'input.prefix.parsed_v2.20201210.txt' + + ip_parsed.write_text( + '\n'.join( + [ + '#READINFO\tAll reads:\t100\tPCR duplicates removed:\t20\tUsable Remaining:\t80\tUsable from genomic mapping:\t30\tUsable from family mapping:\t50', + '#READINFO\tUsableReads\t80', + '#READINFO\tGenomicReads\t30\t0.375', + '#READINFO\tRepFamilyReads\t50\t0.625', + 'TOTAL\tRNA18S\t20\t250000', + 'TOTAL\tRNA28S\t30\t375000', + 'ELEMENT\tRNA18S\t12\t150000\tRNA18S||ENST1\tGENE1', + 'ELEMENT\tRNA28S\t18\t225000\tRNA28S||ENST2\tGENE2', + ] + ) + + '\n', + encoding='utf-8', + ) + input_parsed.write_text( + '\n'.join( + [ + '#READINFO\tAll reads:\t200\tPCR duplicates removed:\t40\tUsable Remaining:\t160\tUsable from genomic mapping:\t60\tUsable from family mapping:\t100', + '#READINFO\tUsableReads\t160', + '#READINFO\tGenomicReads\t60\t0.375', + '#READINFO\tRepFamilyReads\t100\t0.625', + 'TOTAL\tRNA18S\t40\t250000', + 'TOTAL\tRNA28S\t60\t375000', + 'ELEMENT\tRNA18S\t25\t156250\tRNA18S||ENST1\tGENE1', + 'ELEMENT\tRNA28S\t35\t218750\tRNA28S||ENST2\tGENE2', + ] + ) + + '\n', + encoding='utf-8', + ) + + perl_out = tmp_path / 'merged.perl.parsed' + py_out = tmp_path / 'merged.py.parsed' + + subprocess.run( + ['perl', str(PERL_MERGE), str(perl_out), str(ip_parsed), str(input_parsed)], + check=True, + ) + subprocess.run( + ['python3', str(PY_MERGE), str(py_out), str(ip_parsed), str(input_parsed)], + check=True, + ) + + perl_h, perl_t, perl_e = parse_merged(perl_out) + py_h, py_t, py_e = parse_merged(py_out) + + assert perl_t == py_t + assert perl_e == py_e + + assert perl_h.keys() == py_h.keys() + for key in perl_h: + p_count, p_frac = perl_h[key] + y_count, y_frac = py_h[key] + assert p_count == y_count + if p_frac is None or y_frac is None: + assert p_frac == y_frac + else: + assert math.isclose(p_frac, y_frac, rel_tol=1e-12, abs_tol=1e-12), key From 2c3fa19c336d390551ee7c3572045b07580041b4 Mon Sep 17 00:00:00 2001 From: Brian Yee Date: Thu, 19 Mar 2026 14:39:15 -0700 Subject: [PATCH 5/9] Step 4b: add Python compatibility shims for parser/dedup Perl scripts --- .gitignore | 1 + bin/python/_perl_compat.py | 26 +++++++++++++++++ ...RNAs_andreparse_SEandPE_20201210_simple.py | 10 +++++++ ...2_output_realtime_includemultifamily_PE.py | 8 +++++ ...2_output_realtime_includemultifamily_SE.py | 8 +++++ tests/test_python_shims.py | 29 +++++++++++++++++++ 6 files changed, 82 insertions(+) create mode 100755 bin/python/_perl_compat.py create mode 100755 bin/python/duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.py create mode 100755 bin/python/parse_bowtie2_output_realtime_includemultifamily_PE.py create mode 100755 bin/python/parse_bowtie2_output_realtime_includemultifamily_SE.py create mode 100644 tests/test_python_shims.py diff --git a/.gitignore b/.gitignore index caa3627..ad732ed 100644 --- a/.gitignore +++ b/.gitignore @@ -112,6 +112,7 @@ tests/* !tests/fixtures/** !tests/test_mini_fixtures_manifest.py !tests/test_split_merge_parity.py +!tests/test_python_shims.py tests/__pycache__/ tests/*.pyc diff --git a/bin/python/_perl_compat.py b/bin/python/_perl_compat.py new file mode 100755 index 0000000..eb4776a --- /dev/null +++ b/bin/python/_perl_compat.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import subprocess +import sys +from pathlib import Path + + +def run_perl_script(perl_script: Path, argv: list[str]) -> int: + cmd = ['perl', str(perl_script), *argv] + completed = subprocess.run(cmd) + return completed.returncode + + +def resolve_perl_script(perl_basename: str) -> Path: + here = Path(__file__).resolve().parent + repo = here.parents[1] + return repo / 'bin' / 'perl' / perl_basename + + +def main(perl_basename: str) -> int: + perl_script = resolve_perl_script(perl_basename) + if not perl_script.exists(): + print(f'Could not find perl script: {perl_script}', file=sys.stderr) + return 2 + return run_perl_script(perl_script, sys.argv[1:]) diff --git a/bin/python/duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.py b/bin/python/duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.py new file mode 100755 index 0000000..a91c93b --- /dev/null +++ b/bin/python/duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +from _perl_compat import main + + +if __name__ == '__main__': + raise SystemExit( + main('duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.pl') + ) diff --git a/bin/python/parse_bowtie2_output_realtime_includemultifamily_PE.py b/bin/python/parse_bowtie2_output_realtime_includemultifamily_PE.py new file mode 100755 index 0000000..7957004 --- /dev/null +++ b/bin/python/parse_bowtie2_output_realtime_includemultifamily_PE.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +from _perl_compat import main + + +if __name__ == '__main__': + raise SystemExit(main('parse_bowtie2_output_realtime_includemultifamily_PE.pl')) diff --git a/bin/python/parse_bowtie2_output_realtime_includemultifamily_SE.py b/bin/python/parse_bowtie2_output_realtime_includemultifamily_SE.py new file mode 100755 index 0000000..838b2ec --- /dev/null +++ b/bin/python/parse_bowtie2_output_realtime_includemultifamily_SE.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +from _perl_compat import main + + +if __name__ == '__main__': + raise SystemExit(main('parse_bowtie2_output_realtime_includemultifamily_SE.pl')) diff --git a/tests/test_python_shims.py b/tests/test_python_shims.py new file mode 100644 index 0000000..3f53f61 --- /dev/null +++ b/tests/test_python_shims.py @@ -0,0 +1,29 @@ +from __future__ import annotations + +import importlib.util +from pathlib import Path + + +REPO = Path(__file__).resolve().parents[1] +SHIM = REPO / 'bin/python/_perl_compat.py' + + +def load_module(path: Path): + spec = importlib.util.spec_from_file_location('perl_compat_test', path) + assert spec is not None and spec.loader is not None + mod = importlib.util.module_from_spec(spec) + spec.loader.exec_module(mod) + return mod + + +def test_resolve_perl_script_path() -> None: + mod = load_module(SHIM) + resolved = mod.resolve_perl_script('split_bam_to_subfiles_SEorPE.pl') + assert resolved.exists() + assert resolved.name == 'split_bam_to_subfiles_SEorPE.pl' + + +def test_missing_perl_script_returns_nonzero() -> None: + mod = load_module(SHIM) + rc = mod.main('__definitely_missing__.pl') + assert rc == 2 From 738e5602fdff32ead0e34544e8b449f398cc111f Mon Sep 17 00:00:00 2001 From: Brian Yee Date: Thu, 19 Mar 2026 14:55:15 -0700 Subject: [PATCH 6/9] Step 5a: add Snakemake SE foundation with split/merge parity validation --- .gitignore | 4 ++ Snakefile | 3 + config/config.yaml | 5 ++ docs/snakemake_se_foundation.md | 35 +++++++++++ scripts/generate_split_manifest_from_perl.py | 52 ++++++++++++++++ .../mini/expected/split.perl.manifest.tsv | 26 ++++++++ .../mini/source/merge_input_1.parsed_v2.txt | 8 +++ .../mini/source/merge_input_2.parsed_v2.txt | 8 +++ workflow/rules/se_foundation.smk | 60 +++++++++++++++++++ workflow/scripts/verify_merge_vs_perl.py | 49 +++++++++++++++ workflow/scripts/verify_split_manifest.py | 31 ++++++++++ 11 files changed, 281 insertions(+) create mode 100644 Snakefile create mode 100644 config/config.yaml create mode 100644 docs/snakemake_se_foundation.md create mode 100755 scripts/generate_split_manifest_from_perl.py create mode 100644 tests/fixtures/mini/expected/split.perl.manifest.tsv create mode 100644 tests/fixtures/mini/source/merge_input_1.parsed_v2.txt create mode 100644 tests/fixtures/mini/source/merge_input_2.parsed_v2.txt create mode 100644 workflow/rules/se_foundation.smk create mode 100644 workflow/scripts/verify_merge_vs_perl.py create mode 100644 workflow/scripts/verify_split_manifest.py diff --git a/.gitignore b/.gitignore index ad732ed..d6fe325 100644 --- a/.gitignore +++ b/.gitignore @@ -117,6 +117,10 @@ tests/__pycache__/ tests/*.pyc .conda-env/ +.snakemake/ +results/ +tests/fixtures/mini/source/failed_jobs_list.txt +tests/fixtures/mini/source/failed_jobs_list.txt.lck .ipynb_checkpoints/ SOURCEME diff --git a/Snakefile b/Snakefile new file mode 100644 index 0000000..d6c3137 --- /dev/null +++ b/Snakefile @@ -0,0 +1,3 @@ +configfile: 'config/config.yaml' + +include: 'workflow/rules/se_foundation.smk' diff --git a/config/config.yaml b/config/config.yaml new file mode 100644 index 0000000..7880e4d --- /dev/null +++ b/config/config.yaml @@ -0,0 +1,5 @@ +mini: + source_sam_gz: tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz + split_manifest: tests/fixtures/mini/expected/split.perl.manifest.tsv + merge_input_1: tests/fixtures/mini/source/merge_input_1.parsed_v2.txt + merge_input_2: tests/fixtures/mini/source/merge_input_2.parsed_v2.txt diff --git a/docs/snakemake_se_foundation.md b/docs/snakemake_se_foundation.md new file mode 100644 index 0000000..10b2ac6 --- /dev/null +++ b/docs/snakemake_se_foundation.md @@ -0,0 +1,35 @@ +# Snakemake SE Foundation (Step 5a) + +## Scope completed in this step +Converted and validated the following SE workflow stages in Snakemake: +1. Split SAM by UMI prefix (`split_bam_to_subfiles_SEorPE`) using Python conversion. +2. Merge parsed per-prefix outputs (`merge_multiple_parsed_files`) using Python conversion. + +## Snakemake files +- `Snakefile` +- `config/config.yaml` +- `workflow/rules/se_foundation.smk` +- `workflow/scripts/verify_split_manifest.py` +- `workflow/scripts/verify_merge_vs_perl.py` + +## Validation approach +- Split stage: compare Python split outputs against a Perl-derived manifest + (`tests/fixtures/mini/expected/split.perl.manifest.tsv`). +- Merge stage: run Perl merge and Python merge on same mini parsed inputs and + compare structured outputs with tolerant float checks. + +## Run command +```bash +HOME=/Users/brianyee/Documents/github/repetitive-element-mapping \ +/Users/brianyee/Documents/github/repetitive-element-mapping/.conda-env/bin/snakemake -j1 -p -F all +``` + +Note: setting `HOME` to workspace avoids sandbox cache permission issues for Snakemake. + +## Pending for full SE migration +Still to implement in Snakemake for full SE parity: +- repetitive-element mapping (`parse_bowtie2...SE`) +- split of rmRep BAM + prefix pairing +- deduplication stage wiring +- concatenate/gzip final outputs +- fold-change stage wiring and expected output comparisons diff --git a/scripts/generate_split_manifest_from_perl.py b/scripts/generate_split_manifest_from_perl.py new file mode 100755 index 0000000..526c0e1 --- /dev/null +++ b/scripts/generate_split_manifest_from_perl.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import csv +import gzip +import hashlib +import shutil +import subprocess +from pathlib import Path + + +REPO = Path(__file__).resolve().parents[1] +SOURCE_GZ = REPO / 'tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz' +MANIFEST = REPO / 'tests/fixtures/mini/expected/split.perl.manifest.tsv' + + +def sha256_file(path: Path) -> str: + h = hashlib.sha256() + with path.open('rb') as fh: + while True: + chunk = fh.read(1024 * 1024) + if not chunk: + break + h.update(chunk) + return h.hexdigest() + + +def main() -> None: + tmp = REPO / 'results/.split_manifest_tmp' + if tmp.exists(): + shutil.rmtree(tmp) + tmp.mkdir(parents=True) + + sam = tmp / 'ip.preRmDup.sam.mini.sam' + with gzip.open(SOURCE_GZ, 'rt', encoding='utf-8', errors='replace') as src, sam.open('w', encoding='utf-8') as out: + out.write(src.read()) + + subprocess.run(['perl', str(REPO / 'bin/perl/split_bam_to_subfiles_SEorPE.pl'), str(sam), 'SE'], cwd=tmp, check=True) + + files = sorted(tmp.glob('*.tmp')) + MANIFEST.parent.mkdir(parents=True, exist_ok=True) + with MANIFEST.open('w', encoding='utf-8', newline='') as fh: + writer = csv.writer(fh, delimiter='\t') + writer.writerow(['filename', 'size_bytes', 'sha256']) + for path in files: + writer.writerow([path.name, path.stat().st_size, sha256_file(path)]) + + shutil.rmtree(tmp) + + +if __name__ == '__main__': + main() diff --git a/tests/fixtures/mini/expected/split.perl.manifest.tsv b/tests/fixtures/mini/expected/split.perl.manifest.tsv new file mode 100644 index 0000000..0d47051 --- /dev/null +++ b/tests/fixtures/mini/expected/split.perl.manifest.tsv @@ -0,0 +1,26 @@ +filename size_bytes sha256 +AA.ip.preRmDup.sam.mini.sam.tmp 1287381 c30ea41eccd74859e6283d8fb54905829d3a0d0758bea939cee7357a00c7064f +AC.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +AG.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +AN.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +AT.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +CA.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +CC.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +CG.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +CN.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +CT.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +GA.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +GC.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +GG.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +GN.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +GT.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +NA.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +NC.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +NG.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +NN.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +NT.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +TA.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +TC.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +TG.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +TN.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +TT.ip.preRmDup.sam.mini.sam.tmp 0 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 diff --git a/tests/fixtures/mini/source/merge_input_1.parsed_v2.txt b/tests/fixtures/mini/source/merge_input_1.parsed_v2.txt new file mode 100644 index 0000000..e1f91bf --- /dev/null +++ b/tests/fixtures/mini/source/merge_input_1.parsed_v2.txt @@ -0,0 +1,8 @@ +#READINFO All reads: 100 PCR duplicates removed: 20 Usable Remaining: 80 Usable from genomic mapping: 30 Usable from family mapping: 50 +#READINFO UsableReads 80 +#READINFO GenomicReads 30 0.375 +#READINFO RepFamilyReads 50 0.625 +TOTAL RNA18S 20 250000 +TOTAL RNA28S 30 375000 +ELEMENT RNA18S 12 150000 RNA18S||ENST1 GENE1 +ELEMENT RNA28S 18 225000 RNA28S||ENST2 GENE2 diff --git a/tests/fixtures/mini/source/merge_input_2.parsed_v2.txt b/tests/fixtures/mini/source/merge_input_2.parsed_v2.txt new file mode 100644 index 0000000..5863224 --- /dev/null +++ b/tests/fixtures/mini/source/merge_input_2.parsed_v2.txt @@ -0,0 +1,8 @@ +#READINFO All reads: 200 PCR duplicates removed: 40 Usable Remaining: 160 Usable from genomic mapping: 60 Usable from family mapping: 100 +#READINFO UsableReads 160 +#READINFO GenomicReads 60 0.375 +#READINFO RepFamilyReads 100 0.625 +TOTAL RNA18S 40 250000 +TOTAL RNA28S 60 375000 +ELEMENT RNA18S 25 156250 RNA18S||ENST1 GENE1 +ELEMENT RNA28S 35 218750 RNA28S||ENST2 GENE2 diff --git a/workflow/rules/se_foundation.smk b/workflow/rules/se_foundation.smk new file mode 100644 index 0000000..1aee9ad --- /dev/null +++ b/workflow/rules/se_foundation.smk @@ -0,0 +1,60 @@ +rule all: + input: + 'results/mini/split/verified.ok', + 'results/mini/merge/verified.ok', + + +rule unzip_mini_sam: + input: + config['mini']['source_sam_gz'] + output: + 'results/mini/split/ip.preRmDup.sam.mini.sam' + shell: + 'gzip -cd {input} > {output}' + + +rule split_mini_sam_python: + input: + 'results/mini/split/ip.preRmDup.sam.mini.sam' + output: + directory('results/mini/split/python_tmp') + shell: + r''' + rm -rf {output} + mkdir -p {output} + cd {output} + python3 {workflow.basedir}/bin/python/split_bam_to_subfiles_SEorPE.py ../ip.preRmDup.sam.mini.sam SE + ''' + + +rule verify_split_against_manifest: + input: + split_dir='results/mini/split/python_tmp', + manifest=config['mini']['split_manifest'], + output: + 'results/mini/split/verified.ok' + script: + '../scripts/verify_split_manifest.py' + + +rule merge_parsed_python: + input: + config['mini']['merge_input_1'], + config['mini']['merge_input_2'], + output: + 'results/mini/merge/merged.python.parsed' + shell: + 'python3 {workflow.basedir}/bin/python/merge_multiple_parsed_files.simplified_20191022.py {output} {input[0]} {input[1]}' + + +rule verify_merge_against_perl: + input: + py='results/mini/merge/merged.python.parsed', + in1=config['mini']['merge_input_1'], + in2=config['mini']['merge_input_2'], + output: + 'results/mini/merge/verified.ok' + params: + perl_script=workflow.basedir + '/bin/perl/merge_multiple_parsed_files.simplified_20191022.pl' + script: + '../scripts/verify_merge_vs_perl.py' diff --git a/workflow/scripts/verify_merge_vs_perl.py b/workflow/scripts/verify_merge_vs_perl.py new file mode 100644 index 0000000..8ae2ef4 --- /dev/null +++ b/workflow/scripts/verify_merge_vs_perl.py @@ -0,0 +1,49 @@ +import math +import subprocess +from pathlib import Path + + +def parse_merged(path: Path): + headers = {} + totals = {} + elements = {} + + with path.open('r', encoding='utf-8', errors='replace') as fh: + for raw in fh: + cols = raw.rstrip('\n').split('\t') + if cols[0] == '#READINFO': + key = cols[1] + count = int(float(cols[2])) + frac = float(cols[3]) if len(cols) > 3 else None + headers[key] = (count, frac) + elif cols[0] == 'TOTAL': + totals[cols[1]] = int(float(cols[2])) + elif cols[0] == 'ELEMENT': + elements[cols[4]] = (cols[1], int(float(cols[2])), cols[5]) + return headers, totals, elements + + +py_out = Path(snakemake.input['py']) +in1 = Path(snakemake.input['in1']) +in2 = Path(snakemake.input['in2']) +out_ok = Path(snakemake.output[0]) + +perl_out = py_out.parent / 'merged.perl.parsed' +perl_script = Path(snakemake.params['perl_script']) +subprocess.run(['perl', str(perl_script), str(perl_out), str(in1), str(in2)], check=True) + +perl_h, perl_t, perl_e = parse_merged(perl_out) +py_h, py_t, py_e = parse_merged(py_out) + +assert perl_t == py_t +assert perl_e == py_e +assert perl_h.keys() == py_h.keys() +for key in perl_h: + p_count, p_frac = perl_h[key] + y_count, y_frac = py_h[key] + assert p_count == y_count + if p_frac is not None and y_frac is not None: + assert math.isclose(p_frac, y_frac, rel_tol=1e-12, abs_tol=1e-12) + +out_ok.parent.mkdir(parents=True, exist_ok=True) +out_ok.write_text('ok\n', encoding='utf-8') diff --git a/workflow/scripts/verify_split_manifest.py b/workflow/scripts/verify_split_manifest.py new file mode 100644 index 0000000..2eaf7bf --- /dev/null +++ b/workflow/scripts/verify_split_manifest.py @@ -0,0 +1,31 @@ +import csv +import hashlib +from pathlib import Path + + +def sha256_file(path: Path) -> str: + h = hashlib.sha256() + with path.open('rb') as fh: + while True: + chunk = fh.read(1024 * 1024) + if not chunk: + break + h.update(chunk) + return h.hexdigest() + + +split_dir = Path(snakemake.input['split_dir']) +manifest = Path(snakemake.input['manifest']) +out_ok = Path(snakemake.output[0]) + +with manifest.open('r', encoding='utf-8') as fh: + rows = list(csv.DictReader(fh, delimiter='\t')) + +for row in rows: + p = split_dir / row['filename'] + assert p.exists(), f'missing split output {p}' + assert str(p.stat().st_size) == row['size_bytes'], f'size mismatch {p}' + assert sha256_file(p) == row['sha256'], f'sha mismatch {p}' + +out_ok.parent.mkdir(parents=True, exist_ok=True) +out_ok.write_text('ok\n', encoding='utf-8') From deb704103d8fb5bcdcd33493fd6e82a289cd2493 Mon Sep 17 00:00:00 2001 From: Brian Yee Date: Thu, 19 Mar 2026 15:32:06 -0700 Subject: [PATCH 7/9] Enforce Python+Snakemake-only branch structure --- .gitignore | 3 +- NOTES | 7 - README.md | 208 +- ..._samfile_updatedchrM_fixmultenstsort_SE.pl | Bin 4096 -> 0 bytes bin/perl/RepElement_pipeline_1dataset.pl | 173 -- bin/perl/duplicate_removal.pl | 1 - ...RNAs_andreparse_SEandPE_20201210_simple.pl | 1795 ----------------- ...ltiple_parsed_files.simplified_20191022.pl | 116 -- ...2_output_realtime_includemultifamily_PE.pl | 520 ----- ...2_output_realtime_includemultifamily_SE.pl | 481 ----- bin/perl/split_bam_to_subfiles_SEorPE.pl | 138 -- bin/python/_perl_compat.py | 26 - ...RNAs_andreparse_SEandPE_20201210_simple.py | 10 - ...2_output_realtime_includemultifamily_PE.py | 8 - ...2_output_realtime_includemultifamily_SE.py | 8 - changelog.md | 3 + config/config.yaml | 3 +- ...alculate_fold_change_from_parsed_files.cwl | 88 - cwl/combine.cwl | 37 - cwl/concatenate.cwl | 26 - cwl/deduplicate.cwl | 90 - cwl/getpair.cwl | 50 - cwl/gzip.cwl | 30 - cwl/map_repetitive_elements_pe.cwl | 80 - cwl/map_repetitive_elements_se.cwl | 73 - cwl/splitbam.cwl | 35 - cwl/wf_ecliprepmap_pe.cwl | 278 --- cwl/wf_ecliprepmap_pe_1barcode.cwl | 213 -- cwl/wf_ecliprepmap_se.cwl | 170 -- cwl/wf_ecliprepmap_se_1barcode.cwl | 209 -- docs/cwl_pipeline_spec.md | 137 -- docs/perl_scripts_spec.md | 122 -- docs/python_conversion_roadmap.md | 109 - docs/snakemake_se_foundation.md | 41 +- ...g_slides_rep_element_pipeline-20171018.pdf | Bin 100077 -> 0 bytes ...ab_meeting_slides_rep_element_pipeline.pdf | Bin 100077 -> 0 bytes scripts/generate_python_expected_artifacts.py | 72 + scripts/generate_split_manifest_from_perl.py | 52 - .../mini/expected/merged.expected.parsed | 8 + ...nifest.tsv => split.expected.manifest.tsv} | 0 tests/test_python_shims.py | 29 - tests/test_split_merge_parity.py | 143 -- tests/test_split_merge_python_expected.py | 60 + wf/eCLIP_repelement_PE | 275 --- wf/eCLIP_repelement_PE_singleNode | 275 --- wf/eCLIP_repelement_SE | 275 --- wf/eCLIP_repelement_SE_singleNode | 275 --- workflow/rules/se_foundation.smk | 11 +- .../scripts/verify_merge_against_expected.py | 26 + workflow/scripts/verify_merge_vs_perl.py | 49 - 50 files changed, 295 insertions(+), 6543 deletions(-) delete mode 100644 NOTES delete mode 100644 bin/perl/._reparse_samfile_updatedchrM_fixmultenstsort_SE.pl delete mode 100755 bin/perl/RepElement_pipeline_1dataset.pl delete mode 120000 bin/perl/duplicate_removal.pl delete mode 100755 bin/perl/duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.pl delete mode 100755 bin/perl/merge_multiple_parsed_files.simplified_20191022.pl delete mode 100755 bin/perl/parse_bowtie2_output_realtime_includemultifamily_PE.pl delete mode 100755 bin/perl/parse_bowtie2_output_realtime_includemultifamily_SE.pl delete mode 100755 bin/perl/split_bam_to_subfiles_SEorPE.pl delete mode 100755 bin/python/_perl_compat.py delete mode 100755 bin/python/duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.py delete mode 100755 bin/python/parse_bowtie2_output_realtime_includemultifamily_PE.py delete mode 100755 bin/python/parse_bowtie2_output_realtime_includemultifamily_SE.py delete mode 100755 cwl/calculate_fold_change_from_parsed_files.cwl delete mode 100755 cwl/combine.cwl delete mode 100755 cwl/concatenate.cwl delete mode 100755 cwl/deduplicate.cwl delete mode 100755 cwl/getpair.cwl delete mode 100755 cwl/gzip.cwl delete mode 100755 cwl/map_repetitive_elements_pe.cwl delete mode 100755 cwl/map_repetitive_elements_se.cwl delete mode 100755 cwl/splitbam.cwl delete mode 100755 cwl/wf_ecliprepmap_pe.cwl delete mode 100755 cwl/wf_ecliprepmap_pe_1barcode.cwl delete mode 100755 cwl/wf_ecliprepmap_se.cwl delete mode 100755 cwl/wf_ecliprepmap_se_1barcode.cwl delete mode 100644 docs/cwl_pipeline_spec.md delete mode 100644 docs/perl_scripts_spec.md delete mode 100644 docs/python_conversion_roadmap.md delete mode 100644 documentation/lab_meeting_slides_rep_element_pipeline-20171018.pdf delete mode 100644 documentation/lab_meeting_slides_rep_element_pipeline.pdf create mode 100755 scripts/generate_python_expected_artifacts.py delete mode 100755 scripts/generate_split_manifest_from_perl.py create mode 100644 tests/fixtures/mini/expected/merged.expected.parsed rename tests/fixtures/mini/expected/{split.perl.manifest.tsv => split.expected.manifest.tsv} (100%) delete mode 100644 tests/test_python_shims.py delete mode 100644 tests/test_split_merge_parity.py create mode 100644 tests/test_split_merge_python_expected.py delete mode 100755 wf/eCLIP_repelement_PE delete mode 100755 wf/eCLIP_repelement_PE_singleNode delete mode 100755 wf/eCLIP_repelement_SE delete mode 100755 wf/eCLIP_repelement_SE_singleNode create mode 100644 workflow/scripts/verify_merge_against_expected.py delete mode 100644 workflow/scripts/verify_merge_vs_perl.py diff --git a/.gitignore b/.gitignore index d6fe325..de6956e 100644 --- a/.gitignore +++ b/.gitignore @@ -111,8 +111,7 @@ tests/* !tests/fixtures/ !tests/fixtures/** !tests/test_mini_fixtures_manifest.py -!tests/test_split_merge_parity.py -!tests/test_python_shims.py +!tests/test_split_merge_python_expected.py tests/__pycache__/ tests/*.pyc diff --git a/NOTES b/NOTES deleted file mode 100644 index 16ceb68..0000000 --- a/NOTES +++ /dev/null @@ -1,7 +0,0 @@ - - -perl versions: 5.10, 5.12, 5.14, 5.16 have deterministic hashes - -5.18 started haivng non-deterministic hashes - -TSCC system-wide perl is 5.10 diff --git a/README.md b/README.md index 41ca0ee..fd1635c 100644 --- a/README.md +++ b/README.md @@ -1,111 +1,107 @@ # repetitive-element-mapping -pipeline for mapping repetitive elements - -# Requirements: -- Bowtie2=2.2.6 -- Tested with perl=5.22.0 and perl=5.10.1 (perl 5.18+ introduces some randomness in -iterating over hashes, which may yield slightly different results). This is -due to the way this pipeline accesses reads via hashes, and determines ties -in quality by selecting the first read it encounters at the de-duplication -step. We have tried to mitigate this randomness by iterating over sorted -hash keys in 0.0.2. See NOTES. -- cwlref-runner=1.0 -- python 2.7 with pandas and numpy installed - -# Installation: -- For Yeo Lab: ```module load ecliprepmap``` -- For all others: - - see the ```DockerRequirement``` from each tool to see the specific requirements for each step. The custom scripts have been tested using the following software/versions: - - python=3.6 - - perl (5.10.1+) - - bowtie2=2.2.6 - - pandas (1.1.3+) - - numpy (1.18+) - - cwltool==1.0.20180306140409 - - cwltest - - galaxy-lib==17.9.3 - - ensure that the ```bin/```, ```bin/perl/```, and ```wf/```, and ```cwl/``` - are correctly in your path. - -# Example data: -- [example reference data for GRCh38 (hg38)](https://external-collaborator-data.s3-us-west-1.amazonaws.com/reference-data/repeat-family-mapping-grch38.tar.gz) -- [example input files from eCLIP for GRCh38 (hg38)](https://external-collaborator-data.s3-us-west-1.amazonaws.com/reference-data/example_data_for_repeat_mapping_hg38.tar.gz) -# Methods: -- (```map_repetitive_elements_/*.cwl``` - ```parse_bowtie2_output_realtime_includemultifamily_/*.pl```) Runs bowtie2 using the following commands: + +Python + Snakemake pipeline for repetitive element mapping with deterministic mini fixtures for validation. + +## What is in this branch +- Python implementation scripts in `bin/python/`. +- Snakemake workflow entrypoint in `Snakefile`. +- Rule modules in `workflow/rules/`. +- Validation scripts in `workflow/scripts/`. +- Mini fixtures and expected outputs in `tests/fixtures/mini/`. + +## Repository layout +- `Snakefile`: top-level workflow entrypoint. +- `config/config.yaml`: runtime file paths for mini validation inputs and expected outputs. +- `bin/python/split_bam_to_subfiles_SEorPE.py`: split SAM/BAM by UMI prefix. +- `bin/python/merge_multiple_parsed_files.simplified_20191022.py`: merge parsed statistics files. +- `workflow/rules/se_foundation.smk`: currently implemented, testable workflow stages. +- `workflow/scripts/verify_split_manifest.py`: checksum validation for split outputs. +- `workflow/scripts/verify_merge_against_expected.py`: checksum validation for merged output. + +## Requirements +- Python 3.11+ +- Snakemake 9+ +- samtools 1.23+ +- bowtie2 2.5+ +- pytest 9+ + +## Installation + +### 1) Clone ```bash -bowtie2 -q --sensitive -a -p 3 --no-mixed --reorder -x $bowtie_db -1 $fastq_file1 -2 $fastq_file2 2> $bowtie_out +git clone https://github.com/YeoLab/repetitive-element-mapping.git +cd repetitive-element-mapping +git checkout codex/python-conversion ``` -where: - - - $fastq_file1 is read 1 of a trimmed CLIPSEQ expt - - $fastq_file2 is read 2 of a trimmed CLIPSEQ expt - - $bowtie_db is a bowtie database created using a manually curated set of repeat elements from RepBase or other. - - For every proper read pair: - - Mismatch score equals the sum of mismatch scores (as determined by the AS: field) for both reads - - Reads are compared on the basis of their mismatch scores and read quality, keeping the best or prioritize if equal. - - priority is based on input repeat database (e.g. primary transcripts are prioritized over pseudogenes). It is based on the ordering of the repeat database file (MASTER_filelist.wrepbaseandtRNA.enst2id.fixed.UpdatedSimpleRepeat) - - Since one read may map to multiple elements, we must compare each element - - If read maps to multiple elements of the same family with equal score: - - Read mapping information (fastq line) is kept for the element with the highest priority. - - Name of all elements is kept - - Note: all reads that map to multiple families (not used for downstream analysis). - - Create a SAM-like file -- (```deduplicate.cwl``` - ```duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.pl```) Merge repeat analysis with unique genomic mapping and remove PCR duplicates - - Use the randomer UMIs to remove duplicates based on quality - - To save memory, both the SAM-like file and the uniquely mapped BAM file - are split based on the first two nucleotides of the randomner umi. De-duplication - is performed serially for AA, AC, AG, AT .. NN. - - Between a read mapping to both unique genomic and repeat family, if - unique mapping to genome is more than 2 mismatches per - read = 2 * 2 * 6 alignment score better than to repeat element, - throw out repeat element and use genome mapping. Otherwise keep the repeat - element mapped read. - -### Determining the most correct assignment among elements within one family: -- Between longer and shorter transcripts: keep the shorter one -- If a read maps to two places on the same transcript, keep the first -- Treat "rRNA extra hash" different. See: ```parse_bowtie2_output_realtime_includemultifamily.pl``` $rRNA_extra_hash - - This is different because the rRNA precusor transcript contains 18S, 28S, 5.8S transcripts which are treated as separate families. -# Outputs: -.parsed file: tabbed file containing 4 comment lines and 4 or 6 columns: -- #READINFO (AllReads): total number of reads mapped -- #READINFO (UsableReads): total number of de-duplicated mapped reads -- #READINFO (GenomicReads): total number of uniquely mapped genomic reads -- #READINFO (RepFamilyReads): total number of repetitive family mapped reads -- total_or_element: this is either TOTAL or ELEMENT - - Total: family (you can create this by summing all of the elements within this family) - - total - - family name - - number of reads - - reads per million - - Element: element - - element - - family name (eg. family1). Can have multiple pipe-delimited families - - number of reads - - reads per million - - family1||transcript1|transcript2|transcript3 (transcript 1/2/3 are all members of family1) - - gene name of the transcripts -.reparsed file: tabbed file with similar structure to .parsed, but without the (Allreads) total. -.nopipes.tsv: tabbed file containing only non-ambiguously mapped families with the following columns: -- element: the repeat element -- IP_read_num: number of reads mapping to the element in IP -- IP_clip_rpr: number of mapped reads / number of total usable mapped reads -- Input_read_num: number of reads mapping to the element in Input. +1 pseudocount if no input reads were mapped. -- Input_clip_rpr: number of mapped input reads / number of total usable mapped input reads -- Fold_enrichment: IP_clip_rpr / Input_clip_rpr -- Information_content: IP_clip_rpr * log2(IP_clip_rpr / Input_clip_rpr) -.withpipes.tsv: tabbed file containing ambiguously and non-ambiguously mapped families - -# Notes: -- Elements (second column) that contain pipes ```|``` are multifamily mapped -which means that the read is ambiguously mapped to each element. These can generally -be excluded from downstream analysis. -- You can sort by information content and log2 fold enrichment. -Information content is calculated as: log2(clip_rpr/input_rpr). -- High fold changes and information content (no guidelines yet to this cutoff) -typically indicate elements enriched in the experiment. - -# References: -- Van Nostrand, E.L., Pratt, G.A., Yee, B.A. et al. Principles of RNA processing from analysis of enhanced CLIP maps for 150 RNA binding proteins. Genome Biol 21, 90 (2020). https://doi.org/10.1186/s13059-020-01982-9 +### 2) Create environment +```bash +mamba create -y -p ./.conda-env -c conda-forge -c bioconda \ + python=3.11 snakemake bowtie2 samtools pandas numpy pytest +``` + +### 3) Activate +```bash +mamba activate ./.conda-env +``` + +## Input specification +The current implemented Snakemake stages use mini fixture inputs configured in `config/config.yaml`: + +- `mini.source_sam_gz`: compressed SAM-like file used for split stage. +- `mini.merge_input_1`: parsed stats input file #1 for merge stage. +- `mini.merge_input_2`: parsed stats input file #2 for merge stage. +- `mini.split_manifest`: expected checksums for 25 split output files. +- `mini.merge_expected`: expected merged parsed output. + +You can update these paths to point to your own test data as long as formats match. + +## Output specification +Running the current workflow stages produces: + +- `results/mini/split/python_tmp/*.tmp`: 25 prefix-split files (`AA`..`NN`). +- `results/mini/split/verified.ok`: split-stage validation success marker. +- `results/mini/merge/merged.python.parsed`: merged parsed output. +- `results/mini/merge/verified.ok`: merge-stage validation success marker. + +## Run instructions (deployment) + +### Local execution +```bash +HOME=$(pwd) ./.conda-env/bin/snakemake -j1 -p all +``` + +`HOME=$(pwd)` keeps Snakemake cache files inside workspace and avoids host cache permission issues. + +### Re-run all stages from scratch +```bash +HOME=$(pwd) ./.conda-env/bin/snakemake -j1 -p -F all +``` + +### Cluster deployment pattern +Use your site profile/launcher as usual, for example: +```bash +HOME=$(pwd) ./.conda-env/bin/snakemake --profile all +``` + +## Testing + +### Unit/integration tests +```bash +./.conda-env/bin/python -m pytest -q tests/test_mini_fixtures_manifest.py +``` + +### Workflow validation run +```bash +HOME=$(pwd) ./.conda-env/bin/snakemake -j1 -p -F all +``` + +## Regenerating expected artifacts +If you intentionally update core Python logic, regenerate mini expected artifacts and commit them: +```bash +python3 scripts/generate_python_expected_artifacts.py +``` +This refreshes: +- `tests/fixtures/mini/expected/split.expected.manifest.tsv` +- `tests/fixtures/mini/expected/merged.expected.parsed` diff --git a/bin/perl/._reparse_samfile_updatedchrM_fixmultenstsort_SE.pl b/bin/perl/._reparse_samfile_updatedchrM_fixmultenstsort_SE.pl deleted file mode 100644 index 236d0f98df63d50fe4723a449d324e270fc46a71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vVqo^a z57EJ}0H|C5O$#HC4;7b6&d=3LEGWoH)yqjNE-5WeO-V^CNmULA2I=v1N{#{1lfPse zgXmE(8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OxIzHb*#u!QkPFGkELJE= zEzU13N={Ws%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB G{|5k7W-6Zm diff --git a/bin/perl/RepElement_pipeline_1dataset.pl b/bin/perl/RepElement_pipeline_1dataset.pl deleted file mode 100755 index 633d91a..0000000 --- a/bin/perl/RepElement_pipeline_1dataset.pl +++ /dev/null @@ -1,173 +0,0 @@ -use warnings; -use strict; - -my $species = "hg38"; -## note - this pipeline right now is specific for hg38 - -my $keep_temp_files_flag = 0; - -## -unless ($ARGV[4]) { - print STDERR "usage: perl RepElement_pipeline_1dataset.pl working_directory fastq1_R1:fastq1_R2::fastq2_R1:fastq2_R2::(etc) genomic_mapping_bam output_prefix se_or_pe_flag\n"; - print STDERR "e.g.\n"; - print STDERR "PE example: perl RepElement_pipeline_1dataset.pl /home/elvannostrand/scratch/20201211_PEtest_204/ /projects/ps-yeolab4/software/eclip/0.7.0/tests/other_examples/204_RBFOX2_GRCh38/results/204_RBFOX2.rep1_clip.A01.r1.fqTrTr.sorted.fq.gz:/projects/ps-yeolab4/software/eclip/0.7.0/tests/other_examples/204_RBFOX2_GRCh38/results/204_RBFOX2.rep1_clip.A01.r2.fqTrTr.sorted.fq.gz::/projects/ps-yeolab4/software/eclip/0.7.0/tests/other_examples/204_RBFOX2_GRCh38/results/204_RBFOX2.rep1_clip.B06.r1.fqTrTr.sorted.fq.gz:/projects/ps-yeolab4/software/eclip/0.7.0/tests/other_examples/204_RBFOX2_GRCh38/results/204_RBFOX2.rep1_clip.B06.r2.fqTrTr.sorted.fq.gz /projects/ps-yeolab4/software/eclip/0.7.0/tests/other_examples/204_RBFOX2_GRCh38/results/204_RBFOX2.rep1_clip.A01.r1.fq.genome-mappedSo.bam::/projects/ps-yeolab4/software/eclip/0.7.0/tests/other_examples/204_RBFOX2_GRCh38/results/204_RBFOX2.rep1_clip.B06.r1.fq.genome-mappedSo.bam 204_01 PE\n"; - print STDERR "SE example: perl RepElement_pipeline_1dataset.pl /home/elvannostrand/scratch/20201211_SEtest/ /projects/ps-yeolab4/software/eclip/0.7.0/tests/other_examples/INV_B_singleNode/results/INV_B.IP.umi.r1.fqTrTr.sorted.fq.gz /projects/ps-yeolab4/software/eclip/0.7.0/tests/other_examples/INV_B_singleNode/results/INV_B.IP.umi.r1.fq.genome-mappedSoSo.bam RBFOX_seCLIP SE\n"; - exit; -} - -my $working_directory = $ARGV[0]; -my $fastqs_input = $ARGV[1]; -my $standard_analysis_bams_input = $ARGV[2]; -my $dataset_label = $ARGV[3]; -my $se_or_pe_flag = $ARGV[4]; -my @fastq_demux_pairs = split(/\:\:/,$fastqs_input); -my @standard_analysis_bams_split = split(/\:\:/,$standard_analysis_bams_input); - -my $rmdup_output_merged_sam = $working_directory.$dataset_label.".combined_w_uniquemap.rmDup.sam"; -my $merged_rmdup = $working_directory.$dataset_label."_merged.rmDup.sam"; -my $parsed_out = $rmdup_output_merged_sam.".parsed"; - -if (-e $parsed_out) { - print STDERR "skipping $dataset_label , $parsed_out already exists\n"; - next; -} - -if (-d $working_directory) { -} else { - system("mkdir $working_directory"); -} -$working_directory =~ s/\/$//; -$working_directory .= "/"; - -my $sh_out = "RM_".$dataset_label.".sh"; -open(SH,">$sh_out"); -print SH "\#\!\/bin\/sh\n"; -print SH "#PBS -N ".$sh_out."\n"; -print SH "#PBS -o ".$sh_out.".out\n"; -print SH "#PBS -e ".$sh_out.".err\n"; -print SH "#PBS -V\n"; -print SH "#PBS -l walltime=8:00:00\n"; -print SH "#PBS -l nodes=1:ppn=4\n"; -print SH "#PBS -A yeo-group\n"; -print SH "#PBS -q condo\n"; -# print SH "#PBS -q home-yeo\n"; -print SH "#PBS -M elvannostrand\@ucsd.edu\n"; -print SH "#PBS -m a\n"; -print SH "cd /home/elvannostrand/data/clip/CLIPseq_analysis/scripts/inline_processing/hg38/\n"; - - -my @unmerged_sams; -my @unmerged_parsed; - -for my $fastq (@fastq_demux_pairs) { - my @fastqpairs = split(/\:/,$fastq); - if (scalar(@fastqpairs) > 2) { - print STDERR "error - this should be either 1 fastq (single-end eCLIP) or 2 (R1 and R2 for original paired-end eCLIP), but got ".scalar(@fastqpairs)." instead\n$fastq\n"; - exit; - } - - foreach (@fastqpairs) { - my @fastq_split = split(/\//,$_); - my $fastq_short = $fastq_split[$#fastq_split]; - my $newpath = $working_directory.$fastq_short; - - print SH "cp $_ $newpath\n"; - print SH "gunzip $newpath\n"; - - $fastq_short =~ s/\.gz$//; - $_ = $working_directory.$fastq_short; - } - my $fastq1 = $fastqpairs[0]; - my $fastq2; - $fastq2 = $fastqpairs[1] if ($se_or_pe_flag eq "PE"); - - my @fastq_fi1_split = split(/\//,$fastq1); - my $fastq_fi1_short = $fastq_fi1_split[$#fastq_fi1_split]; - my $merged_bam_file_standardanalysis = shift(@standard_analysis_bams_split); - my @merged_bam_file_split = split(/\//,$merged_bam_file_standardanalysis); - my $merged_bam_file_standardanalysis_short = $merged_bam_file_split[$#merged_bam_file_split]; - - print SH "perl split_bam_to_subfiles_SEorPE.pl $merged_bam_file_standardanalysis $working_directory $se_or_pe_flag\n"; - -# my $bowtie_db = "/home/elvannostrand/data/clip/CLIPseq_analysis/RNA_type_analysis/MASTER_filelist.wrepbaseandtRNA.fa.fixed.fa.UpdatedSimpleRepeat"; - #hg19 - my $bowtie_db = "/home/elvannostrand/data/clip/CLIPseq_analysis/RNA_type_analysis/MASTER_filelist.wrepbaseandtRNA.fa.fixed.fa.UpdatedSimpleRepeat.20190424"; - if ($species eq "hg38") { - $bowtie_db = "/home/elvannostrand/data/clip/CLIPseq_analysis/RNA_type_analysis/hg38/MASTER_FILELIST.20201203.wrepbaseandtRNA.fa.fixed.fa.UpdatedSimpleRepeat"; - } -# my $bowtie_db = "/home/elvannostrand/data/clip/CLIPseq_analysis/RNA_type_analysis/MASTER_filelist.wrepbaseandtRNA.fa.fixed"; - my @bowtie_db_split = split(/\//,$bowtie_db); - my $bowtie_db_short = $bowtie_db_split[$#bowtie_db_split]; - - my $sam_output = $working_directory.$fastq_fi1_short.".mapped_vs_".$bowtie_db_short.".sam"; - my $sam_output_short = $fastq_fi1_short.".mapped_vs_".$bowtie_db_short.".sam"; - - if ($se_or_pe_flag eq "PE") { - print SH "perl parse_bowtie2_output_realtime_includemultifamily_PE.pl $fastq1 $fastq2 $bowtie_db $working_directory $sam_output $species\n"; - } else { - print SH "perl parse_bowtie2_output_realtime_includemultifamily_SE.pl $fastq1 $bowtie_db $working_directory $sam_output $species\n"; - } - print SH "rm $fastq1\n" unless ($keep_temp_files_flag==1); - if ($se_or_pe_flag eq "PE") { - print SH "rm $fastq2\n" unless ($keep_temp_files_flag==1); - } - - # now split sam file into files separated by first 2 bases of barcode - print SH "perl split_bam_to_subfiles_SEorPE.pl $sam_output $working_directory $se_or_pe_flag\n"; - - print SH "rm $sam_output\n" unless ($keep_temp_files_flag==1); - - my $predup_output = $working_directory.$sam_output_short.".combined_w_uniquemap.prermDup.sam"; - - my $rmdup_output = $working_directory.$sam_output_short.".combined_w_uniquemap.rmDup.sam"; - print SH "rm $predup_output\n"; - print SH "rm $rmdup_output\n"; -# print SH "rm $rmdup_output\n" if (-e $rmdup_output); - - for my $b1 ("A","C","G","T","N") { - for my $b2 ("A","C","G","T","N") { - my $repmapping_fi = $working_directory.$sam_output_short.".".$b1.$b2.".tmp"; - my $genomemapping_fi = $working_directory.$merged_bam_file_standardanalysis_short.".".$b1.$b2.".tmp"; - - print SH "perl duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.pl $repmapping_fi $genomemapping_fi $se_or_pe_flag\n"; - my $tmp_output_fi = $working_directory.$sam_output_short.".".$b1.$b2.".tmp".".combined_w_uniquemap.rmDup.sam"; - my $tmp_parsed_fi = $working_directory.$sam_output_short.".".$b1.$b2.".tmp".".combined_w_uniquemap.rmDup.sam.parsed_v2.20201210.txt"; - my $tmp_predup_fi = $working_directory.$sam_output_short.".".$b1.$b2.".tmp".".combined_w_uniquemap.prermDup.sam"; - - print SH "cat $tmp_output_fi >> $rmdup_output\n"; - print SH "cat $tmp_predup_fi >> $predup_output\n"; - - print SH "rm $repmapping_fi\n" unless ($keep_temp_files_flag==1); - print SH "rm $genomemapping_fi\n" unless ($keep_temp_files_flag==1); - print SH "rm $tmp_output_fi\n" unless ($keep_temp_files_flag==1); - print SH "rm $tmp_predup_fi\n" unless ($keep_temp_files_flag==1); - push @unmerged_parsed,$tmp_parsed_fi; - } - } - - print SH "gzip $predup_output\n"; - push @unmerged_sams,$rmdup_output; -} - -print SH "perl merge_multiple_parsed_files.simplified_20191022.pl $parsed_out ".join(" ",@unmerged_parsed)."\n"; -for my $unmerged_parsed_fi (@unmerged_parsed) { - print SH "rm $unmerged_parsed_fi\n" unless ($keep_temp_files_flag==1); -} - -print SH "rm $rmdup_output_merged_sam\n"; -my $merge_command = "cp $unmerged_sams[0] $rmdup_output_merged_sam\n"; -for (my $i=1;$i families) - - -my %revstrand; -$revstrand{"+"} = "-"; -$revstrand{"-"} = "+"; - -my $genome_hashing_value = 1000; -my %enst2type; -my %enst2ensg; -my %ensg2name; -my %ensg2type; - - -my $gencode_gtf_file = $ARGV[3]; -my $gencode_tablebrowser_file = $ARGV[4]; -my $repmask_bed_fi = $ARGV[5]; -my $filelist_file = $ARGV[6]; - -my %gencode_features; -&read_gencode_gtf($gencode_gtf_file); -&read_gencode($gencode_tablebrowser_file); -# this flag refers to how to count uniquely genomic mapped reads - 5' end only? -my $region_5primeend_only_flag = 1; - - - - -my %enst2gene; -my %convert_enst2type; -my %peaks; -&read_peakfi($repmask_bed_fi); - -my %convert_enst2priorityN; -my %convert_enst2priority; - -&read_in_filelists($filelist_file); - -#&read_in_filelists($filelist_file2); - -#my %mirbase_features; - -#&read_mirbase($mirbase_fi); -my %convert_strand = ("+" => "-", "-" => "+"); - - -my $unique_count = 0; -my ($all_count,$duplicate_count,$unique_count_old,$unique_genomic_count,$unique_repfamily_count) = (0,0,0,0,0); - -# takes in sam file, should be blah.bc.tmp file -my $repfamily_sam = $ARGV[0]; -my @repfamily_sam_split = split(/\//,$repfamily_sam); -my $repfamily_sam_short = $repfamily_sam_split[$#repfamily_sam_split]; - -my $gabe_rmRep_sam = $ARGV[1]; -my $eCLIP_read_type_flag = $ARGV[2]; - - -my %read_hash; -my $output_fi = $repfamily_sam_short.".combined_w_uniquemap.rmDup.sam"; -open(OUT,">$output_fi"); - -my ($total_unique_mapped_read_num,$rep_family_reads,$unique_genomic) = (0,0,0); - -my %count; -my %count_enst; -my $pre_rmdup_fi = $repfamily_sam_short.".combined_w_uniquemap.prermDup.sam"; -open(PREDUP,">$pre_rmdup_fi"); - - -if ($eCLIP_read_type_flag eq "SE") { - print STDERR "running in single-end mode\n"; - &read_rep_family_se($repfamily_sam); - &read_unique_mapped_se($gabe_rmRep_sam); - &run_pcr_duplicate_removal_se(); -} elsif ($eCLIP_read_type_flag eq "PE") { - print STDERR "running in paired-end mode\n"; - &read_rep_family_pe($repfamily_sam); - &read_unique_mapped_pe($gabe_rmRep_sam); - &run_pcr_duplicate_removal_pe(); -} - - - -close(PREDUP); -close(OUT); -my $count_out = $output_fi.".parsed_v2.20201210.txt"; -open(COUNT,">$count_out"); -print COUNT "#READINFO\tAll reads:\t$all_count\tPCR duplicates removed:\t$duplicate_count\tUsable Remaining:\t$unique_count_old\tUsable from genomic mapping:\t$unique_genomic_count\tUsable from family mapping:\t$unique_repfamily_count\n"; -#print COUNT "#READINFO\tAll reads:\t$all_count\nPCR duplicates removed:\t$duplicate_count\nUsable Remainig:\t$unique_count\nUsable from genomic mapping:\t$unique_genomic_count\nUsable from family mapping:\t$unique_repfamily_count\n"; - -#&count_output(); -print COUNT "#READINFO\tUsableReads\t".$total_unique_mapped_read_num."\n"; -if ($total_unique_mapped_read_num > 0) { - print COUNT "#READINFO\tGenomicReads\t".$unique_genomic."\t".sprintf("%.5f",$unique_genomic/$total_unique_mapped_read_num)."\n"; - print COUNT "#READINFO\tRepFamilyReads\t".$rep_family_reads."\t".sprintf("%.5f",$rep_family_reads/$total_unique_mapped_read_num)."\n"; -} else { - print COUNT "#READINFO\tGenomicReads\t".$unique_genomic."\t0\n"; - print COUNT "#READINFO\tRepFamilyReads\t".$rep_family_reads."\t0\n"; -} - -my @sorted_total = sort {$count{$b} <=> $count{$a}} keys %count; -for my $k (@sorted_total) { - print COUNT "TOTAL\t$k\t$count{$k}\t".sprintf("%.5f",$count{$k} * 1000000 / $total_unique_mapped_read_num)."\n"; -} - -my @sorted = sort {$count_enst{$b} <=> $count_enst{$a}} keys %count_enst; -for my $s (@sorted) { - my ($ensttype,$multensts) = split(/\|\|/,$s); - my @multensts_split = split(/\|/,$multensts); - my @genes_final; - my $type = $ensttype; - for my $multensts_group (@multensts_split) { - my @gids = split(/\;\;/,$multensts_group); - - my @genes_short; - for my $gid (@gids) { - if (exists $enst2gene{$gid}) { - push @genes_short,$enst2gene{$gid}; - } else { - push @genes_short,$gid; - } - } - push @genes_final,join(";;",@genes_short); - } - - my ($ensg_primary,$readnum,$rpm,$enst_all,$ensg_all) = ($type,$count_enst{$s},sprintf("%.5f",$count_enst{$s} * 1000000 / $total_unique_mapped_read_num),$s,join("|",@genes_final)); - - - print COUNT "ELEMENT\t".$ensg_primary."\t".$readnum."\t".$rpm."\t".$enst_all."\t".$ensg_all."\n"; -} - - - -close(COUNT); - - - - -my $out_done = $count_out.".done"; -open(DONE,">$out_done"); -print DONE "jobs done\n"; -close(DONE); - - -# now do PCR duplicate removal - -sub run_pcr_duplicate_removal_se { - my %fragment_hash; - -#changed 20171019 to sort reads to be stable across perl versions - my @sorted_reads = sort {$a cmp $b} keys %read_hash; - for my $r1name (@sorted_reads) { -# for my $r1name (keys %read_hash) { - my $r1 = $read_hash{$r1name}{R1}; - - my @tmp_r1 = split(/\t/,$r1); - my ($r1name,$r1bc) = split(/\s+/,$tmp_r1[0]); - - my $r1sam_flag = $tmp_r1[1]; - next if ($r1sam_flag == 4); -# next if ($r1sam_flag == 77 || $r1sam_flag == 141); - - my $frag_strand; -### This section is for only properly paired reads -# if ($r1sam_flag == 99 || $r1sam_flag == 355) { -# $frag_strand = "-"; -# } elsif ($r1sam_flag == 83 || $r1sam_flag == 339) { -# $frag_strand = "+"; -# } elsif ($r1sam_flag == 147 || $r1sam_flag == 403) { -# $frag_strand = "-"; -# } elsif ($r1sam_flag == 163 || $r1sam_flag == 419) { -# $frag_strand = "+"; -# } else { -# next; -# print STDERR "R1 strand error $r1sam_flag\n"; -# } - - if ($r1sam_flag == 16 || $r1sam_flag == 272) { - $frag_strand = "-"; - } elsif ($r1sam_flag eq "0" || $r1sam_flag == 256) { - $frag_strand = "+"; - } else { - next; - print STDERR "R1 strand error $r1sam_flag\n"; - } - - - my @read_name = split(/\_/,$tmp_r1[0]); - my $randommer = pop(@read_name); - - my $r1_cigar = $tmp_r1[5]; - - # 165 = R2 unmapped, R1 rev strand -- frag on fwd strand - - - my $r1_chr = $tmp_r1[2]; - my $r1_start = $tmp_r1[3]; - - my $mismatch_flags = $tmp_r1[14]; - - my %read_regions; - @{$read_regions{"R1"}} = &parse_cigar_string($r1_start,$r1_cigar,$r1_chr,$frag_strand); - - my $hashing_value; - if ($frag_strand eq "+") { - my $r1_firstregion = $read_regions{"R1"}[scalar(@{$read_regions{"R1"}})-1]; - my ($r1_firstchr,$r1_firststr,$r1_firstpos) = split(/\:/,$r1_firstregion); - my ($r1_firststart,$r1_firststop) = split(/\-/,$r1_firstpos); - $hashing_value = $r1_firstchr.":".$r1_firststr.":".$r1_firststart."\t".$r1_firstchr.":".$r1_firststr.":".$r1_firststop; - } elsif ($frag_strand eq "-") { - my $r1_firstregion = $read_regions{"R1"}[0]; - my ($r1_firstchr,$r1_firststr,$r1_firstpos) = split(/\:/,$r1_firstregion); - my ($r1_firststart,$r1_firststop) = split(/\-/,$r1_firstpos); - $hashing_value = $r1_firstchr.":".$r1_firststr.":".$r1_firststart."\t".$r1_firstchr.":".$r1_firststr.":".$r1_firststop; - } else { - print STDERR "strand error $frag_strand $r1\n"; - } - - my $full_frag_position = join("|",@{$read_regions{"R1"}}); - - my $debug_flag = 0; - - my $hashing_value_toprint = $r1_chr."|".$frag_strand."::".$hashing_value.":".$randommer; - print PREDUP "$r1\t".$hashing_value_toprint."\n"; - - my %full_fragment; - $all_count++; - if (exists $fragment_hash{$r1_chr."|".$frag_strand}{$hashing_value.":".$randommer}) { - $duplicate_count++; - delete($read_hash{$r1name}); - next; - } else { - $fragment_hash{$r1_chr."|".$frag_strand}{$hashing_value.":".$randommer} = 1; - - if (exists $read_hash{$r1name}{file1flag} && $read_hash{$r1name}{file1flag} == 1) { - # read is coming from familiy mapping - print OUT "".$r1."\tRepFamily\t$r1_chr\n"; - push @tmp_r1,"RepFamily"; -# push @tmp_r1,$r1_chr; - push @tmp_r1,$read_hash{$r1name}{ensttype}."||".$read_hash{$r1name}{mult_ensts}; - - $unique_repfamily_count++; - } elsif (exists $read_hash{$r1name}{file2flag} && $read_hash{$r1name}{file2flag} == 1) { - # read is coming from genomic mapping - print OUT "".$r1."\tUniqueGenomic\t".$read_hash{$r1name}{ensttype}."||".$read_hash{$r1name}{mult_ensts}."\n"; - push @tmp_r1,"UniqueGenomic"; - push @tmp_r1,$read_hash{$r1name}{ensttype}."||".$read_hash{$r1name}{mult_ensts}; - - $unique_genomic_count++; - } else { - print STDERR "this shouldn't be hit - fi1flag $read_hash{$r1name}{file1flag} fi2flag $read_hash{$r1name}{file2flag} $r1name\n"; - } - } - - $unique_count_old++; - - - my $repmap_info = pop(@tmp_r1); - my $type = pop(@tmp_r1); - my $mult_transcripts = pop(@tmp_r1); - - my ($ensttype,$mult_ensts) = split(/\|\|/,$repmap_info); - - if ($type eq "RepFamily") { - $rep_family_reads++; - } elsif ($type eq "UniqueGenomic") { - if ($r1_chr eq "chrM") { - $ensttype = "chrM_unique_".$frag_strand."strand"; - } - $unique_genomic++; - } else { - print STDERR "error - this shouldn't happen $r1\n"; - } - - if ($ensttype =~ /Simple\_repeat/) { - $ensttype = "Simple_repeat"; - } - - $count{$ensttype}++; - $count_enst{$ensttype."||".$mult_ensts}++; - $total_unique_mapped_read_num++ - - } -} - -sub run_pcr_duplicate_removal_pe { - my %fragment_hash; - -#changed 20171019 to sort reads to be stable across perl versions - my @sorted_reads = sort {$a cmp $b} keys %read_hash; - for my $r1name (@sorted_reads) { -# for my $r1name (keys %read_hash) { - my $r1 = $read_hash{$r1name}{R1}; - my $r2 = $read_hash{$r1name}{R2}; - - my @tmp_r1 = split(/\t/,$r1); - my @tmp_r2 = split(/\t/,$r2); - my ($r1name,$r1bc) = split(/\s+/,$tmp_r1[0]); - my ($r2name,$r2bc) = split(/\s+/,$tmp_r2[0]); - - my $r1sam_flag = $tmp_r1[1]; - my $r2sam_flag = $tmp_r2[1]; - unless ($r1sam_flag) { - print STDERR "error $r1 $r2\n"; - } - next if ($r1sam_flag == 77 || $r1sam_flag == 141); - - my $frag_strand; -### This section is for only properly paired reads - if ($r1sam_flag == 99 || $r1sam_flag == 355) { - $frag_strand = "-"; - } elsif ($r1sam_flag == 83 || $r1sam_flag == 339) { - $frag_strand = "+"; - } elsif ($r1sam_flag == 147 || $r1sam_flag == 403) { - $frag_strand = "-"; - } elsif ($r1sam_flag == 163 || $r1sam_flag == 419) { - $frag_strand = "+"; - } else { - next; - print STDERR "R1 strand error $r1sam_flag\n"; - } - - my @read_name = split(/\:/,$tmp_r1[0]); - my $randommer = $read_name[0]; - - my $r1_cigar = $tmp_r1[5]; - my $r2_cigar = $tmp_r2[5]; - - # 165 = R2 unmapped, R1 rev strand -- frag on fwd strand - - - my $r1_chr = $tmp_r1[2]; - my $r1_start = $tmp_r1[3]; - my $r2_chr = $tmp_r2[2]; - my $r2_start = $tmp_r2[3]; - - my $mismatch_flags = $tmp_r1[14]; - - my %read_regions; - @{$read_regions{"R1"}} = &parse_cigar_string($r1_start,$r1_cigar,$r1_chr,$frag_strand); - @{$read_regions{"R2"}} = &parse_cigar_string($r2_start,$r2_cigar,$r2_chr,$frag_strand); - - my $hashing_value; - if ($frag_strand eq "+") { - my $r1_firstregion = $read_regions{"R1"}[scalar(@{$read_regions{"R1"}})-1]; - my ($r1_firstchr,$r1_firststr,$r1_firstpos) = split(/\:/,$r1_firstregion); - my ($r1_firststart,$r1_firststop) = split(/\-/,$r1_firstpos); - my $r2_firstregion = $read_regions{"R2"}[0]; - my ($r2_firstchr,$r2_firststr,$r2_firstpos) = split(/\:/,$r2_firstregion); - my ($r2_firststart,$r2_firststop) = split(/\-/,$r2_firstpos); - $hashing_value = $r2_firstchr.":".$r2_firststr.":".$r2_firststart."\t".$r1_firstchr.":".$r1_firststr.":".$r1_firststop; - } elsif ($frag_strand eq "-") { - my $r1_firstregion = $read_regions{"R1"}[0]; - my ($r1_firstchr,$r1_firststr,$r1_firstpos) = split(/\:/,$r1_firstregion); - my ($r1_firststart,$r1_firststop) = split(/\-/,$r1_firstpos); - my $r2_firstregion = $read_regions{"R2"}[scalar(@{$read_regions{"R2"}})-1]; - my ($r2_firstchr,$r2_firststr,$r2_firstpos) = split(/\:/,$r2_firstregion); - my ($r2_firststart,$r2_firststop) = split(/\-/,$r2_firstpos); - $hashing_value = $r1_firstchr.":".$r1_firststr.":".$r1_firststart."\t".$r2_firstchr.":".$r2_firststr.":".$r2_firststop; - - } else { - print STDERR "strand error $frag_strand $r1 $r2\n"; - } - my $full_frag_position = join("|",@{$read_regions{"R1"}})."\t".join("|",@{$read_regions{"R2"}}); - my $debug_flag = 0; - - my $hashing_value_toprint = $r1_chr."|".$frag_strand."::".$hashing_value.":".$randommer; - print PREDUP "$r1\t".$hashing_value_toprint."\n$r2\t".$hashing_value_toprint."\n"; - - my %full_fragment; - $all_count++; - if (exists $fragment_hash{$r1_chr."|".$frag_strand}{$hashing_value.":".$randommer}) { - $duplicate_count++; - delete($read_hash{$r1name}); - next; - } else { - $fragment_hash{$r1_chr."|".$frag_strand}{$hashing_value.":".$randommer} = 1; - - if (exists $read_hash{$r1name}{file1flag} && $read_hash{$r1name}{file1flag} == 1) { - # read is coming from familiy mapping - print OUT "".$r1."\tRepFamily\t$r1_chr\n".$r2."\tRepFamily\t$r1_chr\n"; - push @tmp_r1,"RepFamily"; -# push @tmp_r1,$r1_chr; - push @tmp_r1,$read_hash{$r1name}{ensttype}."||".$read_hash{$r1name}{mult_ensts}; - - $unique_repfamily_count++; - } elsif (exists $read_hash{$r1name}{file2flag} && $read_hash{$r1name}{file2flag} == 1) { - # read is coming from familiy mapping - print OUT "".$r1."\tUniqueGenomic\t".$read_hash{$r1name}{ensttype}."||".$read_hash{$r1name}{mult_ensts}."\n".$r2."\tUniqueGenomic\t".$read_hash{$r1name}{ensttype}."||".$read_hash{$r1name}{mult_ensts}."\n"; - push @tmp_r1,"UniqueGenomic"; - push @tmp_r1,$read_hash{$r1name}{ensttype}."||".$read_hash{$r1name}{mult_ensts}; - - $unique_genomic_count++; - } else { - print STDERR "this shouldn't be hit - fi1flag $read_hash{$r1name}{file1flag} fi2flag $read_hash{$r1name}{file2flag} $r1name\n"; - } - } - - $unique_count_old++; - my $repmap_info = pop(@tmp_r1); - my $type = pop(@tmp_r1); - my $mult_transcripts = pop(@tmp_r1); - - my ($ensttype,$mult_ensts) = split(/\|\|/,$repmap_info); - - if ($type eq "RepFamily") { - $rep_family_reads++; - } elsif ($type eq "UniqueGenomic") { - if ($r1_chr eq "chrM") { - $ensttype = "chrM_unique_".$frag_strand."strand"; - } - $unique_genomic++; - } else { - print STDERR "error - this shouldn't happen $r1\n"; - } - - if ($ensttype =~ /Simple\_repeat/) { - $ensttype = "Simple_repeat"; - } - - $count{$ensttype}++; - $count_enst{$ensttype."||".$mult_ensts}++; - $total_unique_mapped_read_num++ - - } -} - - - - -sub read_unique_mapped_pe { - my %deleted; - my $fi2_count=0; - my %read_hash_bam2; - my $gabe_rmRep_sam_file = shift; -# print STDERR "opening $gabe_rmRep_sam_file\n"; - if ($gabe_rmRep_sam_file =~ /\.sam$/ || $gabe_rmRep_sam_file =~ /\.tmp$/) { - open(B,$gabe_rmRep_sam_file) || die "no $gabe_rmRep_sam_file\n"; - } elsif ($gabe_rmRep_sam_file =~/\.bam$/) { - open(B,"samtools view -h $gabe_rmRep_sam_file |") || die "no $gabe_rmRep_sam_file\n"; - } else { - die "couldn't figure out format of $gabe_rmRep_sam_file\n"; - } - while () { - my $r1 = $_; - next if ($r1 =~ /^\@/); - $fi2_count++; - print STDERR "read $fi2_count\n" if ($fi2_count % 100000 == 0); - my $r2 = ; - chomp($r1); - chomp($r2); - - my @tmp_r1 = split(/\t/,$r1); - my @tmp_r2 = split(/\t/,$r2); - my ($r1name,$r1bc) = split(/\s+/,$tmp_r1[0]); - my ($r2name,$r2bc) = split(/\s+/,$tmp_r2[0]); - - unless ($tmp_r1[0] eq $tmp_r2[0]) { - print STDERR "paired end mismatch error: $tmp_r1[0] $tmp_r2[0]\n"; - } - - my $r2sam_flag = $tmp_r2[1]; - my $r1sam_flag = $tmp_r1[1]; - next if ($r1sam_flag == 77 || $r1sam_flag == 141); - - - # 77 = R1, unmapped - # 141 = R2, unmapped - - # 99 = R1, mapped, fwd strand --- frag on rev strand - # 101 = R1 unmapped, R2 mapped rev strand -- frag on rev strand - # 73 = R1, mapped, fwd strand --- frag on rev strand - # 147 = R2, mapped, rev strand -- frag on rev strand - # 153 = R2 mapped (R1 unmapped), rev strand -- frag on rev strand - # 133 = R2 unmapped, R1 mapped fwd strand -- frag on rev strand - - # 83 = R1, mapped, rev strand --- frag on fwd strand - # 69 = R1 unmapped, R2 mapped fwd strand -- frag on fwd strand - # 89 = R1 mapped rev strand, R2 unmapped -- frag on fwd strand - # 163 = R2, mapped, fwd strand -- frag on fwd strand - # 137 = R2 mapped (R1 unmapped), fwd strand -- frag on fwd strand - # 165 = R2 unmapped, R1 rev strand -- frag on fwd strand - - - my $frag_strand; -### This section is for only properly paired reads - if ($r1sam_flag == 99) { - $frag_strand = "-"; - } elsif ($r1sam_flag == 83) { - $frag_strand = "+"; - } elsif ($r1sam_flag == 147) { - $frag_strand = "-"; - ($r1,$r2) = ($r2,$r1); - @tmp_r1 = split(/\t/,$r1); - @tmp_r2 = split(/\t/,$r2); - - } elsif ($r1sam_flag == 163) { - ($r1,$r2) =($r2,$r1); - @tmp_r1 = split(/\t/,$r1); - @tmp_r2 = split(/\t/,$r2); - $frag_strand = "+"; - } else { -# print STDERR "R1 strand error $r1sam_flag\n"; - next; - } - my @read_name = split(/\:/,$tmp_r1[0]); - my $randommer = $read_name[0]; - - my $r1_cigar = $tmp_r1[5]; - my $r2_cigar = $tmp_r2[5]; - - my $r1_chr = $tmp_r1[2]; - my $r1_start = $tmp_r1[3]; - - my $r2_chr = $tmp_r2[2]; - my $r2_start = $tmp_r2[3]; - - - my $flags_r1 = join("\t",@tmp_r1[11..$#tmp_r1]); - my $flags_r2 = join("\t",@tmp_r2[11..$#tmp_r2]); - - my $r1_mismatch; - my $r2_mismatch; - if ($flags_r1 =~ /MD\:Z\:(\S+)\s/ || $flags_r1 =~ /MD\:Z\:(\S+?)$/) { - $r1_mismatch = $1; - } - if ($flags_r2 =~ /MD\:Z\:(\S+)\s/ || $flags_r2 =~ /MD\:Z\:(\S+?)$/) { - $r2_mismatch = $1; - } - - my $r1_phred = $tmp_r1[10]; - my $r2_phred = $tmp_r2[10]; - my $r1_seq = $tmp_r1[9]; - my $r2_seq = $tmp_r2[9]; - my $r1_mmscore = &get_alignment_score($r1_mismatch,$r1_cigar,$r1_phred,$r1_seq); - my $r2_mmscore = &get_alignment_score($r2_mismatch,$r2_cigar,$r2_phred,$r2_seq); - my $total_mmscore = $r1_mmscore+$r2_mmscore; - - if (exists $read_hash{$r1name}{file1flag}) { - unless (exists $read_hash{$r1name}{rep_score}) { - print STDERR "err $r1name\n"; - } - if ($total_mmscore > $read_hash{$r1name}{rep_score} + 24) { - - # if unique mapping to genome is more than 2 mismatches per read = 2 * 2 * 6 alignment score better than to repeat element, throw out repeat element and use genome mapping -# print "deleting $r1name from rep element mapping - $total_mmscore $read_hash{$r1name}{rep_score}\n$r1\n$read_hash{$r1name}{R1}\n----\n"; - $deleted{$read_hash{$r1name}{ensttype}}++; - delete($read_hash{$r1name}) if (exists $read_hash{$r1name}); - - } else { - # repeat mapping exists and is better than unique genome mapping - throw out unique genome mapping - next; - } - } - - my @read_regions = &parse_cigar_string($r2_start,$r2_cigar,$r2_chr,$frag_strand); - my %tmp_hash; - for my $region (@read_regions) { - my ($rchr,$rstr,$rpos) = split(/\:/,$region); - my ($rstart,$rstop) = split(/\-/,$rpos); - - my $verbose_flag = 0; - - my $rx = int($rstart / $genome_hashing_value); - my $ry = int($rstop / $genome_hashing_value); - for my $ri ($rx..$ry) { - - for my $peak (@{$peaks{$rchr}{$rstr}{$ri}}) { - my ($pchr,$ppos,$pstr,$ptype) = split(/\:/,$peak); - my ($pstart,$pstop) = split(/\-/,$ppos); - -# next if ($pstart > $rstop || $pstop < $rstart); -# if ($pstop == $rstart) { -# if ($pstart == $rstop) { -# if ($pstart == $rstart) { -# print "region $region $r1 peak $peak\n"; -# } - next if ($pstart >= $rstop || $pstop <= $rstart); - $tmp_hash{$peak} = 1; - - } - } - } - - my %temp_peak_read_counts; - my %converted_types; - for my $peak (keys %tmp_hash) { - my ($pchr,$ppos,$pstr,$ptype) = split(/\:/,$peak); - $temp_peak_read_counts{$ptype."_uniquegenomic"}++; - $converted_types{$convert_enst2type{$ptype}} = 1; - print STDERR "peak $peak $ptype\n" unless (exists $convert_enst2type{$ptype}); - } - - - my @sorted_types = sort {$a cmp $b} keys %temp_peak_read_counts; - my $all_mapped_ensts = join("|",@sorted_types); - my @sorted_convertedtype = sort {$a cmp $b} keys %converted_types; - my $all_ensttypes = join("|",@sorted_convertedtype); - - if (exists $converted_types{"miRNA"} || exists $converted_types{"miRNA-proximal"}) { - my $final_feature_type; - if (exists $converted_types{"miRNA"}) { - $final_feature_type = "miRNA"; - } elsif (exists $converted_types{"miRNA-proximal"}) { - $final_feature_type = "miRNA-proximal"; - } - - $all_ensttypes = "unique_".$final_feature_type; -#20171019 - changed this to sort to be consistent across perl versions -# $all_mapped_ensts = "unique_".join("|",@sorted_keys); - } else { - - my $read2_start_position; - if ($frag_strand eq "+") { - $read2_start_position = $r2_start; - } elsif ($frag_strand eq "-") { - my $last_region = $read_regions[$#read_regions]; - my ($rchr,$rstr,$rpos) = split(/\:/,$last_region); - my ($rstart,$rstop) = split(/\-/,$rpos); - $read2_start_position = $rstop - 1; - } else { - print STDERR "error $frag_strand\n"; - } - - - unless (scalar(keys %temp_peak_read_counts) >= 1) { - my $feature_flag = 0; - my %tmp_gencode_hash; - - my $rx = int($read2_start_position / $genome_hashing_value); - for my $gencode (@{$gencode_features{$r1_chr}{$frag_strand}{$rx}}) { - my ($gencode_enst,$gencode_type,$gencode_region) = split(/\|/,$gencode); - my ($gencode_start,$gencode_stop) = split(/\-/,$gencode_region); - - next if ($read2_start_position < $gencode_start); - next if ($read2_start_position >= $gencode_stop); - my $gencode_ensg = $enst2ensg{$gencode_enst}; - $tmp_gencode_hash{$gencode_type}{$gencode_ensg}="contained"; - $feature_flag = 1; - - } - my $final_feature_type = "intergenic"; - - if ($feature_flag == 1) { - if (exists $tmp_gencode_hash{"CDS"}) { - my $feature_type_flag = &get_type_flag(\%tmp_gencode_hash,"CDS"); - $final_feature_type = "CDS"; - - } elsif (exists $tmp_gencode_hash{"3utr"} || exists $tmp_gencode_hash{"5utr"}) { - if (exists $tmp_gencode_hash{"3utr"} && exists $tmp_gencode_hash{"5utr"}) { - my $feature_type_flag = &get_type_flag(\%tmp_gencode_hash,"3utr"); - my $feature_type_flag2 = &get_type_flag(\%tmp_gencode_hash,"5utr"); - - unless ($feature_type_flag eq "contained" && $feature_type_flag2 eq "contained") { - $feature_type_flag = "partial"; - } - - $final_feature_type = "5utr_and_3utr"; - } elsif (exists $tmp_gencode_hash{"3utr"}) { - my $feature_type_flag = &get_type_flag(\%tmp_gencode_hash,"3utr"); - $final_feature_type = "3utr"; - } elsif (exists $tmp_gencode_hash{"5utr"}) { - my $feature_type_flag = &get_type_flag(\%tmp_gencode_hash,"5utr"); - $final_feature_type = "5utr"; - } else { - print STDERR "weird shouldn't hit this\n"; - } - } elsif (exists $tmp_gencode_hash{"proxintron"}) { - my $feature_type_flag = &get_type_flag(\%tmp_gencode_hash,"proxintron"); - $final_feature_type = "proxintron"; - } elsif (exists $tmp_gencode_hash{"distintron"}) { - my $feature_type_flag = &get_type_flag(\%tmp_gencode_hash,"distintron"); - $final_feature_type = "distintron"; - } elsif (exists $tmp_gencode_hash{"noncoding_exon"}) { - my $feature_type_flag = &get_type_flag(\%tmp_gencode_hash,"noncoding_exon"); - $final_feature_type = "noncoding_exon"; - } elsif (exists $tmp_gencode_hash{"noncoding_proxintron"}) { - my $feature_type_flag = &get_type_flag(\%tmp_gencode_hash,"noncoding_proxintron"); - $final_feature_type = "noncoding_proxintron"; - } elsif (exists $tmp_gencode_hash{"noncoding_distintron"}) { - my $feature_type_flag = &get_type_flag(\%tmp_gencode_hash,"noncoding_distintron"); - $final_feature_type = "noncoding_distintron"; - } elsif (exists $tmp_gencode_hash{"antisense_gencode"}) { - $final_feature_type = "antisense_gencode"; - } else { - print STDERR "weird - shouldn't hit this? elements of tmp_gencode_hash are ".join("|",keys %tmp_gencode_hash)."\n"; - } - } - -# $read_counts{$final_feature_type}++; - - $all_ensttypes = "unique_".$final_feature_type; - if (exists $tmp_gencode_hash{$final_feature_type}) { - -#20171019 - changed this to sort to be consistent across perl versions - my @sorted_keys = sort {$a cmp $b} keys %{$tmp_gencode_hash{$final_feature_type}}; - $all_mapped_ensts = "unique_".join("|",@sorted_keys); -# $all_mapped_ensts = "unique_".join("|",keys %{$tmp_gencode_hash{$final_feature_type}}); - } else { - $all_mapped_ensts = "unique_".$final_feature_type; - } - } - } -# next unless (scalar(keys %temp_peak_read_counts) >= 1); - - - -# print "keeping new mapping $all_mapped_ensts \t $all_ensttypes\n$r1\n"; - - $read_hash{$r1name}{rep_flag} = 0; - $read_hash{$r1name}{rep_score} = $total_mmscore; - $read_hash{$r1name}{file2flag} = 1; - $read_hash{$r1name}{R1} = $r1; - $read_hash{$r1name}{R2} = $r2; - $read_hash{$r1name}{mult_ensts} = $all_mapped_ensts; - $read_hash{$r1name}{ensttype} = $all_ensttypes; - - } - close(B); -} - - - - - -sub read_unique_mapped_se { - my %deleted; - my $fi2_count=0; - my %read_hash_bam2; - my $gabe_rmRep_sam_file = shift; -# print STDERR "opening $gabe_rmRep_sam_file\n"; - if ($gabe_rmRep_sam_file =~ /\.sam$/ || $gabe_rmRep_sam_file =~ /\.tmp$/) { - open(B,$gabe_rmRep_sam_file) || die "no $gabe_rmRep_sam_file\n"; - } elsif ($gabe_rmRep_sam_file =~/\.bam$/) { - open(B,"samtools view -h $gabe_rmRep_sam_file |") || die "no $gabe_rmRep_sam_file\n"; - } else { - die "couldn't figure out format of $gabe_rmRep_sam_file\n"; - } - while () { - my $r1 = $_; - next if ($r1 =~ /^\@/); - $fi2_count++; - print STDERR "read $fi2_count\n" if ($fi2_count % 100000 == 0); - chomp($r1); - - my @tmp_r1 = split(/\t/,$r1); - my ($r1name,$r1bc) = split(/\s+/,$tmp_r1[0]); - - my $r1sam_flag = $tmp_r1[1]; - next if ($r1sam_flag == 4); - - # 77 = R1, unmapped - # 141 = R2, unmapped - - # 99 = R1, mapped, fwd strand --- frag on rev strand - # 101 = R1 unmapped, R2 mapped rev strand -- frag on rev strand - # 73 = R1, mapped, fwd strand --- frag on rev strand - # 147 = R2, mapped, rev strand -- frag on rev strand - # 153 = R2 mapped (R1 unmapped), rev strand -- frag on rev strand - # 133 = R2 unmapped, R1 mapped fwd strand -- frag on rev strand - - # 83 = R1, mapped, rev strand --- frag on fwd strand - # 69 = R1 unmapped, R2 mapped fwd strand -- frag on fwd strand - # 89 = R1 mapped rev strand, R2 unmapped -- frag on fwd strand - # 163 = R2, mapped, fwd strand -- frag on fwd strand - # 137 = R2 mapped (R1 unmapped), fwd strand -- frag on fwd strand - # 165 = R2 unmapped, R1 rev strand -- frag on fwd strand - - - my $frag_strand; -### This section is for only properly paired reads -# if ($r1sam_flag == 99) { -# $frag_strand = "-"; -# } elsif ($r1sam_flag == 83) { -# $frag_strand = "+"; -# } elsif ($r1sam_flag == 147) { -# $frag_strand = "-"; -# ($r1,$r2) = ($r2,$r1); -# @tmp_r1 = split(/\t/,$r1); -# @tmp_r2 = split(/\t/,$r2); -# } elsif ($r1sam_flag == 163) { -# ($r1,$r2) =($r2,$r1); -# @tmp_r1 = split(/\t/,$r1); -# @tmp_r2 = split(/\t/,$r2); -# $frag_strand = "+"; -# } else { -# print STDERR "R1 strand error $r1sam_flag\n"; -# next; -# } -### - if ($r1sam_flag == 16 || $r1sam_flag == 272) { - $frag_strand = "-"; - } elsif ($r1sam_flag eq "0" || $r1sam_flag == 256) { - $frag_strand = "+"; - } else { -# print STDERR "R1 strand error $r1sam_flag\n"; - next; - } - - - my @read_name = split(/\:/,$tmp_r1[0]); - - my $r1_cigar = $tmp_r1[5]; - my $r1_chr = $tmp_r1[2]; - my $r1_start = $tmp_r1[3]; - my $flags_r1 = join("\t",@tmp_r1[11..$#tmp_r1]); - - my $r1_mismatch; - if ($flags_r1 =~ /MD\:Z\:(\S+)\s/ || $flags_r1 =~ /MD\:Z\:(\S+?)$/) { - $r1_mismatch = $1; - } - - my $r1_phred = $tmp_r1[10]; - my $r1_seq = $tmp_r1[9]; - my $r1_mmscore = &get_alignment_score($r1_mismatch,$r1_cigar,$r1_phred,$r1_seq); - my $total_mmscore = $r1_mmscore; - -#check if read already exists from family mapping - 8/31/16 - this runs REGARDLESS of whether unique mapping overlaps a RepBase element or not - if (exists $read_hash{$r1name}{file1flag}) { - unless (exists $read_hash{$r1name}{rep_score}) { - print STDERR "err $r1name\n"; - } - if ($total_mmscore > $read_hash{$r1name}{rep_score} + 24) { - - # if unique mapping to genome is more than 2 mismatches per read = 2 * 2 * 6 alignment score better than to repeat element, throw out repeat element and use genome mapping -# print "deleting $r1name from rep element mapping - $total_mmscore $read_hash{$r1name}{rep_score}\n$r1\n$read_hash{$r1name}{R1}\n----\n"; - $deleted{$read_hash{$r1name}{ensttype}}++; - delete($read_hash{$r1name}) if (exists $read_hash{$r1name}); - - } else { - # repeat mapping exists and is better than unique genome mapping - throw out unique genome mapping - next; - } - } - - - - my @read_regions = &parse_cigar_string($r1_start,$r1_cigar,$r1_chr,$frag_strand); - -#this section is doing overlaps versus "peaks" = unique genomic repetitive elements = bed file regions from the repmasker run on hg19 - my %tmp_hash; - for my $region (@read_regions) { - my ($rchr,$rstr,$rpos) = split(/\:/,$region); - my ($rstart,$rstop) = split(/\-/,$rpos); - - my $verbose_flag = 0; - - my $rx = int($rstart / $genome_hashing_value); - my $ry = int($rstop / $genome_hashing_value); - for my $ri ($rx..$ry) { - - for my $peak (@{$peaks{$rchr}{$rstr}{$ri}}) { - my ($pchr,$ppos,$pstr,$ptype) = split(/\:/,$peak); - my ($pstart,$pstop) = split(/\-/,$ppos); - -# next if ($pstart > $rstop || $pstop < $rstart); -# if ($pstop == $rstart) { -# if ($pstart == $rstop) { -# if ($pstart == $rstart) { -# print "region $region $r1 peak $peak\n"; -# } - next if ($pstart >= $rstop || $pstop <= $rstart); - $tmp_hash{$peak} = 1; - - } - } - } - - my %temp_peak_read_counts; - my %converted_types; - for my $peak (keys %tmp_hash) { - my ($pchr,$ppos,$pstr,$ptype) = split(/\:/,$peak); - $temp_peak_read_counts{$ptype."_uniquegenomic"}++; - $converted_types{$convert_enst2type{$ptype}} = 1; - print STDERR "peak $peak $ptype\n" unless (exists $convert_enst2type{$ptype}); - } - - my @sorted_types = sort {$a cmp $b} keys %temp_peak_read_counts; - my $all_mapped_ensts = join("|",@sorted_types); - my @sorted_convertedtype = sort {$a cmp $b} keys %converted_types; - my $all_ensttypes = join("|",@sorted_convertedtype); - - -## 20191023 - in my re-parsing, I assign anything that's in a microRNA or microRNA proximal region to those classes regardless of whether they overlap a repbase element or not - copying that to this script for now - - - if (exists $converted_types{"miRNA"} || exists $converted_types{"miRNA-proximal"}) { - my $final_feature_type; - if (exists $converted_types{"miRNA"}) { - $final_feature_type = "miRNA"; - } elsif (exists $converted_types{"miRNA-proximal"}) { - $final_feature_type = "miRNA-proximal"; - } - - $all_ensttypes = "unique_".$final_feature_type; -#20171019 - changed this to sort to be consistent across perl versions -# my @sorted_keys = sort {$a cmp $b} keys %{$tmp_mirbase_hash{$final_feature_type}}; -# $all_mapped_ensts = "unique_".join("|",@sorted_keys); - } else { - - # now throw out reads that uniquely map but don't overlap a RepBase element - removed for now, can add back in later - # clarifying note: what I'm doing here is if it overlaps with >=1 repbase element, it gets counted as THAT; otherwise, it goes through and gets counted as CDS/proxintron/etc - unless (scalar(keys %temp_peak_read_counts) >= 1) { - - my $read1_start_position; - if ($frag_strand eq "+") { - $read1_start_position = $r1_start; - } elsif ($frag_strand eq "-") { - my $last_region = $read_regions[$#read_regions]; - my ($rchr,$rstr,$rpos) = split(/\:/,$last_region); - my ($rstart,$rstop) = split(/\-/,$rpos); - $read1_start_position = $rstop - 1; - } else { - print STDERR "error $frag_strand\n"; - } - - my $feature_flag = 0; - my %tmp_gencode_hash; - - my $rx = int($read1_start_position / $genome_hashing_value); - for my $gencode (@{$gencode_features{$r1_chr}{$frag_strand}{$rx}}) { - my ($gencode_enst,$gencode_type,$gencode_region) = split(/\|/,$gencode); - my ($gencode_start,$gencode_stop) = split(/\-/,$gencode_region); - - next if ($read1_start_position < $gencode_start); - next if ($read1_start_position >= $gencode_stop); - my $gencode_ensg = $enst2ensg{$gencode_enst}; - $tmp_gencode_hash{$gencode_type}{$gencode_ensg}="contained"; - $feature_flag = 1; - - } - - my $final_feature_type = "intergenic"; - - if ($feature_flag == 1) { - if (exists $tmp_gencode_hash{"CDS"}) { - $final_feature_type = "CDS"; - } elsif (exists $tmp_gencode_hash{"3utr"} || exists $tmp_gencode_hash{"5utr"}) { - if (exists $tmp_gencode_hash{"3utr"} && exists $tmp_gencode_hash{"5utr"}) { - $final_feature_type = "5utr_and_3utr"; - } elsif (exists $tmp_gencode_hash{"3utr"}) { - $final_feature_type = "3utr"; - } elsif (exists $tmp_gencode_hash{"5utr"}) { - $final_feature_type = "5utr"; - } else { - print STDERR "weird shouldn't hit this\n"; - } - } elsif (exists $tmp_gencode_hash{"proxintron"}) { - $final_feature_type = "proxintron"; - } elsif (exists $tmp_gencode_hash{"distintron"}) { - $final_feature_type = "distintron"; - } elsif (exists $tmp_gencode_hash{"noncoding_exon"}) { - $final_feature_type = "noncoding_exon"; - } elsif (exists $tmp_gencode_hash{"noncoding_proxintron"}) { - $final_feature_type = "noncoding_proxintron"; - } elsif (exists $tmp_gencode_hash{"noncoding_distintron"}) { - $final_feature_type = "noncoding_distintron"; - } elsif (exists $tmp_gencode_hash{"antisense_gencode"}) { - $final_feature_type = "antisense_gencode"; - } else { - print STDERR "weird - shouldn't hit this? elements of tmp_gencode_hash are ".join("|",keys %tmp_gencode_hash)."\n"; - } - } - -# $read_counts{$final_feature_type}++; - - - - $all_ensttypes = "unique_".$final_feature_type; - if (exists $tmp_gencode_hash{$final_feature_type}) { - -#20171019 - changed this to sort to be consistent across perl versions - my @sorted_keys = sort {$a cmp $b} keys %{$tmp_gencode_hash{$final_feature_type}}; - $all_mapped_ensts = "unique_".join("|",@sorted_keys); -# $all_mapped_ensts = "unique_".join("|",keys %{$tmp_gencode_hash{$final_feature_type}}); - } else { - $all_mapped_ensts = "unique_".$final_feature_type; - } - } - } -# next unless (scalar(keys %temp_peak_read_counts) >= 1); - - - -# print "keeping new mapping $all_mapped_ensts \t $all_ensttypes\n$r1\n"; - - - $read_hash{$r1name}{rep_flag} = 0; - $read_hash{$r1name}{rep_score} = $total_mmscore; - $read_hash{$r1name}{file2flag} = 1; - $read_hash{$r1name}{R1} = $r1; - $read_hash{$r1name}{mult_ensts} = $all_mapped_ensts; - $read_hash{$r1name}{ensttype} = $all_ensttypes; - - } - close(B); -} - - -sub read_rep_family_pe { - my $sam_file_familymapping = shift; -# print STDERR "opening $sam_file_familymapping\n"; - open(BAM,$sam_file_familymapping) || die "can't open $sam_file_familymapping\n"; -#open(BAM,"-|", "samtools view $rmDup_bam"); \ - - - while () { - my $r1 = $_; - chomp($r1); - if ($r1 =~ /^\@/) { - next; - } - - my $r2 = ; - chomp($r2); - - my @tmp_r1 = split(/\t/,$r1); - my @tmp_r2 = split(/\t/,$r2); - - my ($r1name,$r1bc) = split(/\s+/,$tmp_r1[0]); - my ($r2name,$r2bc) = split(/\s+/,$tmp_r2[0]); - - unless ($r1name eq $r2name) { - print STDERR "paired end mismatch error: $sam_file_familymapping r1 $tmp_r1[0] r2 $tmp_r2[0]\n"; - } - - my $r1sam_flag = $tmp_r1[1]; - my $r2sam_flag = $tmp_r2[1]; - unless ($r1sam_flag) { - print STDERR "error $r1 $r2\n"; - } - next if ($r1sam_flag == 77 || $r1sam_flag == 141); - - my $frag_strand; -### This section is for only properly paired reads - if ($r1sam_flag == 99 || $r1sam_flag == 355) { - $frag_strand = "-"; - } elsif ($r1sam_flag == 83 || $r1sam_flag == 339) { - $frag_strand = "+"; - } elsif ($r1sam_flag == 147 || $r1sam_flag == 403) { - ($r1,$r2) =($r2,$r1); - @tmp_r1 = split(/\t/,$r1); - @tmp_r2 = split(/\t/,$r2); - $frag_strand = "-"; - } elsif ($r1sam_flag == 163 || $r1sam_flag == 419) { - ($r1,$r2) =($r2,$r1); - @tmp_r1 = split(/\t/,$r1); - @tmp_r2 = split(/\t/,$r2); - $frag_strand = "+"; - } else { - next; - print STDERR "R1 strand error $r1sam_flag\n"; - } - - my $flags_r1 = join("\t",@tmp_r1[11..$#tmp_r1]); - my $flags_r2 = join("\t",@tmp_r2[11..$#tmp_r2]); - - my $r1_score; - if ($flags_r1 =~ /AS\:i\:(\S+)\s/ || $flags_r1 =~ /AS\:i\:(\S+)$/) { - $r1_score = $1; - } else { - print STDERR "couldn't find score for r1 $r1\n"; - } - my $r2_score; - if ($flags_r2 =~ /AS\:i\:(\S+)\s/ || $flags_r2 =~ /AS\:i\:(\S+)$/) { - $r2_score = $1; - } else { - print STDERR "couldn't find score for r2 $r2\n"; - } - my $total_score = $r1_score + $r2_score; - - my $all_mapped_ensts; - if ($flags_r1 =~ /ZZ\:Z\:(\S+?)\s/ || $flags_r1 =~ /ZZ\:Z\:(\S+?)$/) { - $all_mapped_ensts = $1; - } else { - print STDERR "didn't match? $flags_r1\n"; - } - - # if read has never been seen before, keep first mapping - my $all_info = $tmp_r1[2]; - my ($all_ensttypes,$all_primary_enst) = split(/\|\|/,$all_info); -# my $all_primary_enst = $tmp_r1[2]; - - my @ensttypes = split(/\|/,$all_ensttypes); - my @mapped_ensts = split(/\|/,$all_primary_enst); - $read_hash{$r1name}{rep_flag} = 1; - $read_hash{$r1name}{rep_score} = $total_score; - $read_hash{$r1name}{file1flag} = 1; - $read_hash{$r1name}{R1} = $r1; - $read_hash{$r1name}{R2} = $r2; - - my $sorted_mapped_ensts = &sort_priority($all_mapped_ensts); - $read_hash{$r1name}{mult_ensts} = $sorted_mapped_ensts; - $read_hash{$r1name}{ensttype} = $all_ensttypes; - } - close(BAM); - -} - - -sub read_rep_family_se { - - my $sam_file_familymapping = shift; -# print STDERR "opening $sam_file_familymapping\n"; - open(BAM,$sam_file_familymapping) || die "can't open $sam_file_familymapping\n"; -#open(BAM,"-|", "samtools view $rmDup_bam"); - - while () { - my $r1 = $_; - chomp($r1); - if ($r1 =~ /^\@/) { - next; - } - - my @tmp_r1 = split(/\t/,$r1); - my ($r1name,$r1bc) = split(/\s+/,$tmp_r1[0]); - my $r1sam_flag = $tmp_r1[1]; -# next if ($r1sam_flag == 77 || $r1sam_flag == 141); - next if ($r1sam_flag == 4); - - - my $frag_strand; - if ($r1sam_flag == 16 || $r1sam_flag == 272) { - $frag_strand = "-"; - } elsif ($r1sam_flag eq "0" || $r1sam_flag == 256) { - $frag_strand = "+"; - } else { - next; - print STDERR "R1 strand error $r1sam_flag\n"; - } - - -### This section is for only properly paired reads -# if ($r1sam_flag == 99 || $r1sam_flag == 355) { -# $frag_strand = "-"; -# } elsif ($r1sam_flag == 83 || $r1sam_flag == 339) { -# $frag_strand = "+"; -# } elsif ($r1sam_flag == 147 || $r1sam_flag == 403) { - # ($r1,$r2) =($r2,$r1); -# @tmp_r1 = split(/\t/,$r1); -# @tmp_r2 = split(/\t/,$r2); -# $frag_strand = "-"; -# } elsif ($r1sam_flag == 163 || $r1sam_flag == 419) { - # ($r1,$r2) =($r2,$r1); -# @tmp_r1 = split(/\t/,$r1); -# @tmp_r2 = split(/\t/,$r2); -# $frag_strand = "+"; -# } else { -# next; -# print STDERR "R1 strand error $r1sam_flag\n"; -# } -### - my $flags_r1 = join("\t",@tmp_r1[11..$#tmp_r1]); - - my $r1_score; - if ($flags_r1 =~ /AS\:i\:(\S+)\s/ || $flags_r1 =~ /AS\:i\:(\S+)$/) { - $r1_score = $1; - } else { - print STDERR "couldn't find score for r1 $r1\n"; - } - my $total_score = $r1_score; - - my $all_mapped_ensts; - if ($flags_r1 =~ /ZZ\:Z\:(\S+?)\s/ || $flags_r1 =~ /ZZ\:Z\:(\S+?)$/) { - $all_mapped_ensts = $1; - } else { - print STDERR "didn't match? $flags_r1\n"; - } - - # if read has never been seen before, keep first mapping - my $all_info = $tmp_r1[2]; - my ($all_ensttypes,$all_primary_enst) = split(/\|\|/,$all_info); -# my $all_primary_enst = $tmp_r1[2]; - my @ensttypes = split(/\|/,$all_ensttypes); - my @mapped_ensts = split(/\|/,$all_primary_enst); - $read_hash{$r1name}{rep_flag} = 1; - $read_hash{$r1name}{rep_score} = $total_score; - $read_hash{$r1name}{file1flag} = 1; - $read_hash{$r1name}{R1} = $r1; - - my $sorted_mapped_ensts = &sort_priority($all_mapped_ensts); - $read_hash{$r1name}{mult_ensts} = $sorted_mapped_ensts; - -# $read_hash{$r1name}{mult_ensts} = $all_mapped_ensts; - - $read_hash{$r1name}{ensttype} = $all_ensttypes; - } - close(BAM); - -} - - - -sub read_peakfi { - my $fi = shift; - my $duplicate = 0; - my $lc=0; -# print STDERR "reading peak file $fi\n"; - open(F,$fi) || die "no peak file $fi\n"; - while () { - my $line = $_; - chomp($line); - my @tmp = split(/\t/,$line); - my $chr = shift(@tmp); - my $start = shift(@tmp); - my $stop = shift(@tmp); - my $gene = shift(@tmp); - my $pval = shift(@tmp); - my $strand = shift(@tmp); - -# $gene =~ s/\_$//g; - $gene = uc($gene); - - next if ($chr eq "genoName"); - - my $x = int($start / $genome_hashing_value); - my $y = int($stop / $genome_hashing_value); - - my $peak = $chr.":".$start."-".$stop.":".$strand.":".$gene; -# if (exists $peak_read_counts{$peak}{allpeaks}) { -# $duplicate++; -# } else { -# $lc++; -# } -# $peak_read_counts{$gene}{allpeaks} = 1; -# $peak_read_counts{$gene."_antisense"}{allpeaks} = 1; - - - for my $i ($x..$y) { - push @{$peaks{$chr}{$strand}{$i}},$chr.":".$start."-".$stop.":".$strand.":".$gene; - push @{$peaks{$chr}{$revstrand{$strand}}{$i}},$chr.":".$start."-".$stop.":".$strand.":antisense_".$gene; - } - } - close(F); -# print STDERR "duplciate $duplicate\nlc $lc\n"; -} - -sub sort_priority { - my $enstlist_unsorted = shift; - my @enstlist_split = split(/\|/,$enstlist_unsorted); - - for my $enst (@enstlist_split) { - print "$enst\t".$convert_enst2priorityN{lc($enst)}."\n" unless (exists $convert_enst2priorityN{lc($enst)}); - } - my @sorted_enstlist = sort {$convert_enst2priorityN{lc($a)} <=> $convert_enst2priorityN{lc($b)}} @enstlist_split; - my $joined_sorted_enstlist = join("\|",@sorted_enstlist); - return($joined_sorted_enstlist); -} - -sub read_in_filelists { - my $fi = shift; - my $priority_n = 0; - my %corrected_ensts; - open(F,$fi); - for my $line () { - chomp($line); - my ($allenst,$allensg,$gid,$type_label,$typefile) = split(/\t/,$line); -# my ($allensg,$gid,$allenst) = split(/\t/,$line); - unless ($allenst) { - print STDERR "error missing enst $line $fi\n"; - } - $allenst = uc($allenst); - my @ensts = split(/\|/,$allenst); - $gid =~ s/\?$//; - $gid =~ s/\_$//; - $type_label =~ s/\?$//; - for my $enst (@ensts) { - if ($enst =~ /\_$/) { - $corrected_ensts{$enst}++; -# $enst =~ s/\_$//; - } - $enst2gene{$enst} = $gid; - $enst2gene{"antisense_".$enst} = "antisense_".$gid; -# $convert_enst2type{$enst} = $type_label.":".$priority_n; -# $convert_enst2type{$enst."_antisense"} = $type_label."_antisense:".$priority_n; - $convert_enst2type{$enst} = $type_label; - $convert_enst2type{"antisense_".$enst} = "antisense_".$type_label; - $convert_enst2priority{lc($enst)} = $type_label."|".$priority_n; - $convert_enst2priorityN{lc($enst)} = $priority_n; - $convert_enst2priorityN{lc($enst."_DOUBLEMAP")} = $priority_n+0.25; - $convert_enst2priorityN{"antisense_".lc($enst)} = $priority_n+0.5; - $convert_enst2priorityN{"antisense_".lc($enst."_DOUBLEMAP")} = $priority_n+0.75; - $convert_enst2priority{"antisense_".lc($enst)} = "antisense_".$type_label."|".$priority_n; - - $priority_n++; - } - } - close(F); - # for my $k (keys %corrected_ensts) { -# print "$k\t$corrected_ensts{$k}\n"; -# } -} - -sub min { - my $x = shift; - my $y = shift; - if ($x < $y) { - return($x); - } else { - return($y); - } -} - - - -sub get_alignment_score { - my $md_string = shift; - my $cigar_string = shift; - my $quality_string = shift; - my $read_seq = shift; - my (@insertions) = &parse_cigar_string_foralignmentscore($cigar_string,$quality_string); - my $gap_score = shift(@insertions); - my $mm_score = &parse_mismatch_string_foralignmentscore($md_string,$quality_string,\@insertions,$read_seq); - my $total_score = 0 - $mm_score - $gap_score; - return($total_score); -} - - - - -sub parse_cigar_string { - my $region_start_pos = shift; - my $flags = shift; - my $chr = shift; - my $strand = shift; - - my $current_pos = $region_start_pos; - my @regions; - - while ($flags =~ /(\d+)([A-Z])/g) { - - if ($2 eq "N") { - #read has intron of N bases at location - -# 1 based, closed ended to 0 based, right side open ended fix -# push @regions,$chr.":".$strand.":".$region_start_pos."-".($current_pos-1); - push @regions,$chr.":".$strand.":".($region_start_pos-1)."-".($current_pos-1); - - $current_pos += $1; - $region_start_pos = $current_pos; - } elsif ($2 eq "M") { - #read and genome match - $current_pos += $1; - } elsif ($2 eq "S") { - #beginning of read is soft-clipped; mapped pos is actually start pos of mapping not start of read - } elsif ($2 eq "I") { - #read has insertion relative to genome; doesn't change genome position - } elsif ($2 eq "D") { -# push @read_regions,$chr.":".$current_pos."-".($current_pos+=$1); - $current_pos += $1; - #read has deletion relative to genome; genome position has to increase - } else { - print STDERR "flag $1 $2 $flags\n"; - - } - } - -# 1 based, closed ended to 0 based, right side open ended fix -# $region_start_pos is 1-based, closed ended -> ($region_start_pos-1) is 0-based, closed ended -# ($current_pos-1) is 1-based, closed ended -> ($current_pos-1-1) is 0-based, closed ended -> ($current_pos-1-1+1) is 0-based, open ended - -# push @regions,$chr.":".$strand.":".$region_start_pos."-".($current_pos-1); - push @regions,$chr.":".$strand.":".($region_start_pos-1)."-".($current_pos-1); - - return(@regions); -} - - - - - -sub parse_mismatch_string_foralignmentscore { - my $flags = shift; - my $phred_scores = shift; - my $insertionsref = shift; - my $read_seq = shift; - - my @insertions = @$insertionsref; - my ($next_insertion_pos,$next_insertion_len); - my $insertion_flag = 0; - if (@insertions > 0) { - if ($insertions[0] eq "none") { - $insertion_flag = 0; - } else { - $insertion_flag = 1; - my $next_insertion = shift(@insertions); - ($next_insertion_pos,$next_insertion_len) = split(/\|/,$next_insertion); - } - } else { - $insertion_flag = 0; - } - - if ($flags =~ /^\d+$/) { - return(0); - } - my @phred_scoress = split(//,$phred_scores); - my @quality_scores; - for (my $i=0;$i<@phred_scoress;$i++) { - $quality_scores[$i] = ord($phred_scoress[$i]) - 33; - print STDERR "error quality score out of range $quality_scores[$i] $phred_scoress[$i]\n" if ($quality_scores[$i] < 0 || $quality_scores[$i] > 43); -# $quality_scores[$i] = $convert_phred{$phred_scoress[$i]}; - } - - my $current_pos = 0; - - my $mm_penalty = 0; - my @regions; - my $mn = 2; - my $mx = 6; - - my $current_read_pos = 0; - while ($flags) { - if ($flags =~ /^(\d+)/) { - $current_read_pos += $1; - if ($insertion_flag == 1) { - while ($insertion_flag == 1 && $current_read_pos >= $next_insertion_pos) { - $current_read_pos += $next_insertion_len; - if (@insertions > 0) { - $insertion_flag = 1; - my $next_insertion = shift(@insertions); - ($next_insertion_pos,$next_insertion_len) = split(/\|/,$next_insertion); - } else { - $insertion_flag = 0; - } - } - } - - $flags = substr($flags,length($1)); - } elsif ($flags =~ /^([A-Z]+)/) { - my $len = length($1); - - for my $j (1..$len) { - my $base_score = $quality_scores[$current_read_pos+$j-1]; - unless ($base_score) { - print STDERR "$j $j cur $current_read_pos read $read_seq $phred_scores\n"; - } - my $base = substr($1,$j-1,1); - my $base_seq = substr($read_seq,$current_read_pos+$j-1,1); - my $base_mm_penalty; - if ($base eq "N" || $base_seq eq "N") { - $base_mm_penalty = 1; - } elsif (($base eq "A" || $base eq "C" || $base eq "G" || $base eq "T") && ($base_seq eq "A" || $base_seq eq "C" || $base_seq eq "G" || $base_seq eq "T")) { - $base_mm_penalty = $mn + floor( ($mx-$mn) * (&min($base_score,40)/40) ); - } else { - print STDERR "unexpected base - $base\n"; - } - $mm_penalty += $base_mm_penalty; - } - $current_read_pos += $len; - $flags = substr($flags,length($1)); - } elsif ($flags =~ /^\^([A-Z]+)\d/) { - my $len = length($1); - #insertions aren't penalized here; penalized in gap open/close - $flags = substr($flags,$len+1); - } else { - print STDERR "this is a flag I'm not expecting $flags\n"; - } - } - return($mm_penalty); -} - -sub parse_cigar_string_foralignmentscore { - my $flags = shift; - my $phred_scores = shift; - - if ($flags =~ /^\d+M$/) { - return(0); - } - my @phred_scoress = split(//,$phred_scores); - my @quality_scores; - for (my $i=0;$i<@phred_scoress;$i++) { - $quality_scores[$i] = ord($phred_scoress[$i]) - 33; - print STDERR "error quality score out of range $quality_scores[$i] $phred_scoress[$i]\n" if ($quality_scores[$i] < 0 || $quality_scores[$i] > 43); -# $quality_scores[$i] = $convert_phred{$phred_scoress[$i]}; - } - - my $gap_open = 5; - my $gap_extend = 3; - my $current_pos = 0; - my $mm_penalty = 0; - my @insertions; - my $current_read_pos = 0; - - while ($flags =~ /(\d+)([A-Z])/g) { - if ($2 eq "N") { - # intron - not sure what to do with this for now? I think skip - - $current_read_pos += $1; - $current_pos += $1; - } elsif ($2 eq "M") { - $current_read_pos += $1; - $current_pos += $1; - } elsif ($2 eq "S") { - $current_read_pos += $1; - $mm_penalty += $gap_open + $1 * $gap_extend; - } elsif ($2 eq "I") { - push @insertions,$current_read_pos."|".$1; - $current_read_pos += $1; - $mm_penalty += $gap_open + $1 * $gap_extend; - } elsif ($2 eq "D") { - $current_pos += $1; - $mm_penalty += $gap_open + $1 * $gap_extend; - } else { - print STDERR "flag $1 $2 $flags\n"; - - } - } - return($mm_penalty,@insertions); - -} - - -sub read_gencode { - ## eric note: this has been tested for off-by-1 issues with ucsc brower table output! \ - - my $fi = shift; -# my $fi = "/projects/ps-yeolab/genomes/hg19/gencode_v19/gencodev19_comprehensive"; - print STDERR "reading in $fi\n"; - open(F,$fi) || die "couldn't open gencode $fi\n"; - while () { - chomp($_); - my @tmp = split(/\t/,$_); - my $enst = $tmp[1]; - next if ($enst eq "name"); - my $chr = $tmp[2]; - my $str = $tmp[3]; - my $txstart = $tmp[4]; - my $txstop = $tmp[5]; - my $cdsstart = $tmp[6]; - my $cdsstop = $tmp[7]; - - my @starts = split(/\,/,$tmp[9]); - my @stops = split(/\,/,$tmp[10]); - - my @tmp_features; - - my $transcript_type = $enst2type{$enst}; - unless ($transcript_type) { - print STDERR "error transcript_type $transcript_type $enst\n"; - } - if ($transcript_type eq "protein_coding") { - - for (my $i=0;$i<@starts;$i++) { - if ($str eq "+") { - if ($stops[$i] < $cdsstart) { - # exon is all 5' utr \ - - push @tmp_features,$enst."|5utr|".($starts[$i])."-".$stops[$i]; - } elsif ($starts[$i] > $cdsstop) { - #exon is all 3' utr \ - - push @tmp_features,$enst."|3utr|".($starts[$i])."-".$stops[$i]; - } elsif ($starts[$i] > $cdsstart && $stops[$i] < $cdsstop) { - #exon is all coding \ - - push @tmp_features,$enst."|CDS|".($starts[$i])."-".$stops[$i]; - } else { - my $cdsregion_start = $starts[$i]; - my $cdsregion_stop = $stops[$i]; - - if ($starts[$i] <= $cdsstart && $cdsstart <= $stops[$i]) { - #cdsstart is in exon \ - - my $five_region = ($starts[$i])."-".$cdsstart; - push @tmp_features,$enst."|5utr|".$five_region; - $cdsregion_start = $cdsstart; - } - - if ($starts[$i] <= $cdsstop && $cdsstop <= $stops[$i]) { - #cdsstop is in exon \ - - my $three_region = ($cdsstop)."-".$stops[$i]; - push @tmp_features,$enst."|3utr|".$three_region; - $cdsregion_stop = $cdsstop; - } - my $cds_region = ($cdsregion_start)."-".$cdsregion_stop; - push @tmp_features,$enst."|CDS|".$cds_region; - } - } elsif ($str eq "-") { - if ($stops[$i] < $cdsstart) { - # exon is all 5' utr \ - - push @tmp_features,$enst."|3utr|".($starts[$i])."-".$stops[$i]; - } elsif ($starts[$i] > $cdsstop) { - #exon is all 3' utr \ - - push @tmp_features,$enst."|5utr|".($starts[$i])."-".$stops[$i]; - } elsif ($starts[$i] > $cdsstart &&$stops[$i] < $cdsstop) { - #exon is all coding \ - - push @tmp_features,$enst."|CDS|".($starts[$i])."-".$stops[$i]; - } else { - my $cdsregion_start = $starts[$i]; - my $cdsregion_stop = $stops[$i]; - - if ($starts[$i] <= $cdsstart && $cdsstart <= $stops[$i]) { - #cdsstart is in exon \ - - my $three_region = ($starts[$i])."-".$cdsstart; - push @tmp_features,$enst."|3utr|".$three_region; - $cdsregion_start = $cdsstart; - } - - if ($starts[$i] <= $cdsstop && $cdsstop <= $stops[$i]) { - #cdsstop is in exon \ - - my $five_region = ($cdsstop)."-".$stops[$i]; - push @tmp_features,$enst."|5utr|".$five_region; - $cdsregion_stop = $cdsstop; - } - - my $cds_region = ($cdsregion_start)."-".$cdsregion_stop; - push @tmp_features,$enst."|CDS|".$cds_region; - } - } - } - for (my $i=0;$i 2 * 500) { - push @tmp_features,$enst."|proxintron|".($stops[$i])."-".($stops[$i]+500); - push @tmp_features,$enst."|distintron|".($stops[$i]+500)."-".($starts[$i+1]-500); - push @tmp_features,$enst."|proxintron|".($starts[$i+1]-500)."-".$starts[$i+1]; - } else { - my $midpoint = int(($starts[$i+1]+$stops[$i])/2); - push @tmp_features,$enst."|proxintron|".($stops[$i])."-".($midpoint); - push @tmp_features,$enst."|proxintron|".($midpoint)."-".$starts[$i+1]; - } -## push @tmp_features,$enst."|intron|".($stops[$i])."-".$starts[$i+1]; - } - } else { - - for (my $i=0;$i<@starts;$i++) { - push @tmp_features,$enst."|noncoding_exon|".($starts[$i])."-".$stops[$i]; - } - for (my $i=0;$i 2 * 500) { - push @tmp_features,$enst."|noncoding_proxintron|".($stops[$i])."-".($stops[$i]+500); - push @tmp_features,$enst."|noncoding_distintron|".($stops[$i]+500)."-".($starts[$i+1]-500); - push @tmp_features,$enst."|noncoding_proxintron|".($starts[$i+1]-500)."-".$starts[$i+1]; - } else { - my $midpoint = int(($starts[$i+1]+$stops[$i])/2); - push @tmp_features,$enst."|noncoding_proxintron|".($stops[$i])."-".($midpoint); - push @tmp_features,$enst."|noncoding_proxintron|".($midpoint)."-".$starts[$i+1]; - } - - -# push @tmp_features,$enst."|noncoding_intron|".($stops[$i])."-".$starts[$i+1]; - } - } - - for my $feature (@tmp_features) { - my ($enst,$type,$region) = split(/\|/,$feature); - my ($reg_start,$reg_stop) = split(/\-/,$region); - my $x = int($reg_start/$genome_hashing_value); - my $y = int($reg_stop /$genome_hashing_value); - - for my $j ($x..$y) { - push @{$gencode_features{$chr}{$str}{$j}},$feature; - push @{$gencode_features{$chr}{$revstrand{$str}}{$j}},$enst."|antisense_gencode|".$reg_start."-".$reg_stop; - } - } - } - close(F); - -} - - - -sub read_gencode_gtf { - - my $file = shift; -# my $file = "/projects/ps-yeolab/genomes/hg19/gencode_v19/gencode.v19.chr_patch_hapl_scaff.annotation.gtf"; - print STDERR "Reading in $file\n"; - open(F,$file) || die "couldn't open gencode $file\n"; - for my $line () { - chomp($line); - next if ($line =~ /^\#/); - my @tmp = split(/\t/,$line); - next unless ($tmp[2] eq "transcript"); - - my $stuff = $tmp[8]; - my @stufff = split(/\;/,$stuff); - my ($ensg_id,$gene_type,$gene_name,$enst_id,$transcript_type); - - for my $s (@stufff) { - $s =~ s/^\s//g; - $s =~ s/\s$//g; - - if ($s =~ /gene_id \"(.+?)\"/) { - if ($ensg_id) { - print STDERR "two ensg ids? $line\n"; - } - $ensg_id = $1; - } - if ($s =~ /transcript_id \"(.+?)\"/) { - if ($enst_id) { - print STDERR "two enst ids? $line\n"; - } - $enst_id = $1; - } - if ($s =~ /gene_type \"(.+?)\"/) { - if ($gene_type) { - print STDERR "two gene types $line\n"; - } - $gene_type = $1; - - } - - if ($s =~ /transcript_type \"(.+?)\"/) { - $transcript_type = $1; - } - if ($s =~ /gene_name \"(.+?)\"/) { - $gene_name = $1; - } - } - - if (exists $enst2ensg{$enst_id} && $ensg_id ne $enst2ensg{$enst_id}) { - print STDERR "error two ensgs for enst $enst_id ensgs $ensg_id $enst2ensg{$enst_id}\n$line\n"; - } - $enst2ensg{$enst_id} = $ensg_id; - $ensg2name{$ensg_id}{$gene_name}=1; - $ensg2type{$ensg_id}{$gene_type}=1; - $enst2type{$enst_id} = $transcript_type; - } - close(F); -} - - -sub get_type_flag { - my $ref = shift; - my %feature_hash = %$ref; - my $feature_type = shift; - - my $feature_type_final = "contained"; - for my $ensg (keys %{$feature_hash{$feature_type}}) { - $feature_type_final = "partial" unless ($feature_hash{$feature_type}{$ensg} eq "contained"); - } - return($feature_type_final); -} - - - - -sub reorder_transcripts_by_priority { - my $enst_ref = shift; - my @enst_list = @$enst_ref; - - my %reptype_hash; - for my $enst_id_orig (@enst_list) { - my $enst_id = $enst_id_orig; - $enst_id =~ s/\_DOUBLEMAP$//; - $enst_id =~ s/\_spliced$//; -# $enst_id =~ s/\_$//; - $enst_id = lc($enst_id); - unless (exists $convert_enst2priority{$enst_id} && $convert_enst2priority{$enst_id}) { - print STDERR "err $enst_id $enst_id_orig$convert_enst2priority{$enst_id}\n"; - } - my ($rep_type,$priority_n) = split(/\|/,$convert_enst2priority{$enst_id}); - $reptype_hash{$rep_type}{$enst_id_orig} = $priority_n; - } - - my @sorted_reptypes = sort {$a cmp $b} keys %reptype_hash; - my @sorted_ensts_bytype; - my @sorted_topenst_bytype; - for my $sorted_reptype (@sorted_reptypes) { - my @sorted_ensts_by_priority = sort {$reptype_hash{$sorted_reptype}{$a} <=> $reptype_hash{$sorted_reptype}{$b}} keys %{$reptype_hash{$sorted_reptype}}; - my $reptype_joined = join(";;",@sorted_ensts_by_priority); - push @sorted_ensts_bytype,$reptype_joined; - push @sorted_topenst_bytype,$sorted_ensts_by_priority[0]; - } - my $output_mult_ensts = join("|",@sorted_ensts_bytype); - my $output_top_ensts = join("|",@sorted_topenst_bytype); - my $output_types = join("|",@sorted_reptypes); - - my $primary_output = $output_types."||".$output_top_ensts; - my $full_output = $output_types."||".$output_mult_ensts; - return($primary_output,$full_output); -} - - diff --git a/bin/perl/merge_multiple_parsed_files.simplified_20191022.pl b/bin/perl/merge_multiple_parsed_files.simplified_20191022.pl deleted file mode 100755 index adcf0a2..0000000 --- a/bin/perl/merge_multiple_parsed_files.simplified_20191022.pl +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env perl - -use warnings; -use strict; -use Fcntl qw(:flock); - -my $output_fi = shift(@ARGV); -open(OUT,">$output_fi") || die "can't open output file $output_fi\n"; - -my @files = @ARGV; -my @split_fi1 = split(/\//,$files[0]); -my $short_fi1 = pop(@split_fi1); -my $working_dir = join("/",@split_fi1); -my $failed_jobs_list = $working_dir."/"."failed_jobs_list.txt"; - -print("SHORTFI:".$short_fi1); -print("WORKDIR:".$working_dir); - -my $lock_fi = $failed_jobs_list.".lck"; -open(S,">$lock_fi") || sleep 5; -flock(S, LOCK_EX) || sleep 5; -open(FH,">>$failed_jobs_list") or die "this is weird - shouldn't be hit $failed_jobs_list\n"; - -my %read_sums; -for my $file (@files) { -# my $donefi = $file.".done"; -# my $done_seq = `cat $donefi` if (-e $donefi); -# chomp($done_seq); -# if (-e $donefi) { -# print "donefi exists $donefi\n"; -# print "doneseq $done_seq X\n"; -# } - -# unless (-e $donefi && $done_seq eq "jobs done") { -# next; -# print FH "Failed job $output_fi on $file\n"; -# exit; -# } - &parse_file($file); -} -close(FH); -close(S); - -print OUT "#READINFO\tAllReads\t".$read_sums{all}."\n"; -print OUT "#READINFO\tUsableReads\t".$read_sums{usable}."\t".($read_sums{usable}/$read_sums{all})."\n"; -print OUT "#READINFO\tGenomicReads\t".$read_sums{genomic}."\t".($read_sums{genomic}/$read_sums{usable})."\n"; -print OUT "#READINFO\tRepFamilyReads\t".$read_sums{repfamily}."\t".($read_sums{repfamily}/$read_sums{usable})."\n"; - -my @sorted_total = sort {$read_sums{total}{$b} <=> $read_sums{total}{$a}} keys %{$read_sums{total}}; -for my $element (@sorted_total) { -#for my $element (keys %{$read_sums{total}}) { - print OUT "TOTAL\t$element\t".$read_sums{total}{$element}."\t".($read_sums{total}{$element}/$read_sums{usable})."\n"; -} - -my @sorted_element = sort {$read_sums{element}{$b}{readnum} <=> $read_sums{element}{$a}{readnum}} keys %{$read_sums{element}}; -for my $element (@sorted_element) { -#for my $element (keys %{$read_sums{element}}) { - print OUT "ELEMENT\t".$read_sums{element}{$element}{ensg_primary}."\t".$read_sums{element}{$element}{readnum}."\t".($read_sums{element}{$element}{readnum}/$read_sums{usable})."\t".$element."\t".$read_sums{element}{$element}{ensg_all}."\n"; -} - - - - -sub parse_file { - my $parsed_fi = shift; - open(P,$parsed_fi) || die "can't open $parsed_fi\n"; - while (

) { - chomp($_); - my @tmp = split(/\t/,$_); - if ($tmp[0] eq "#READINFO") { -# print STDERR "tmp0 $tmp[0] $_\n"; - my $line = $_; - if ($_ =~ /All\sreads\:\t(\d+)\tPCR\sduplicates\sremoved\:\t(\d+)\tUsable\sRemaining\:\t(\d+)\tUsable\sfrom\sgenomic\smapping\:\t(\d+)\tUsable\sfrom\sfamily\smapping\:\t(\d+)$/) { - - my $all_reads = $1; - my $pcr_duplicates = $2; - my $usable_reads = $3; - my $genomic_reads = $4; - my $repfamily_reads = $5; - - $read_sums{all} += $all_reads; -# $read_sums{usable} += $usable_reads; -# $read_sums{genomic} += $genomic_reads; -# $read_sums{repfamily} += $repfamily_reads; - -# print STDERR "all $all_reads rep $repfamily_reads genomic $genomic_reads usable $usable_reads\n"; - } elsif ($tmp[1] eq "UsableReads") { - $read_sums{usable} += $tmp[2]; - } elsif ($tmp[1] eq "GenomicReads") { - $read_sums{genomic} += $tmp[2]; - } elsif ($tmp[1] eq "RepFamilyReads") { - $read_sums{repfamily} += $tmp[2]; - } else { - print STDERR "couldn't parse readinfo line $_\n"; - } - } elsif ($tmp[0] eq "#READINFO2") { - } elsif ($tmp[0] eq "TOTAL") { - my ($total,$element,$readnum,$rpm) = @tmp; - - $read_sums{total}{$element} += $readnum; - } else { - my ($ele_delete,$ensg_primary,$readnum,$rpm,$enst_all,$ensg_all) = @tmp; - -# print "ELEMENT ".join("X x",@tmp)."\n"; - print STDERR "error - ensg_all mismatch $ensg_all $read_sums{element}{$enst_all}{ensg_all}\n" if (exists $read_sums{element}{$enst_all}{ensg_all} && ($read_sums{element}{$enst_all}{ensg_all} ne $ensg_all)); - print STDERR "error - ensg_primary mismatch $ensg_primary $read_sums{element}{$enst_all}{ensg_primary}\n" if (exists $read_sums{element}{$enst_all}{ensg_primary} && ($read_sums{element}{$enst_all}{ensg_primary} ne $ensg_primary)); - - $read_sums{element}{$enst_all}{ensg_all} = $ensg_all; - $read_sums{element}{$enst_all}{ensg_primary} = $ensg_primary; - $read_sums{element}{$enst_all}{readnum} += $readnum; - - - } - } - close(P); -} diff --git a/bin/perl/parse_bowtie2_output_realtime_includemultifamily_PE.pl b/bin/perl/parse_bowtie2_output_realtime_includemultifamily_PE.pl deleted file mode 100755 index 0017f3b..0000000 --- a/bin/perl/parse_bowtie2_output_realtime_includemultifamily_PE.pl +++ /dev/null @@ -1,520 +0,0 @@ -#!/usr/bin/env perl - -use warnings; -use strict; - -my %enst2gene; -my %convert_enst2type; -my %multimapping_hash; - -my %rRNA_extra_hash; -my %rRNA_extra_hash_rev; -$rRNA_extra_hash{"RNA28S"} = "RNA45S"; -$rRNA_extra_hash{"RNA18S"} = "RNA45S"; -$rRNA_extra_hash{"RNA5-8S"} = "RNA45S"; -$rRNA_extra_hash{"antisense_RNA28S"} = "antisense_RNA45S"; -$rRNA_extra_hash{"antisense_RNA18S"} = "antisense_RNA45S"; -$rRNA_extra_hash{"antisense_RNA5-8S"} = "antisense_RNA45S"; - -$rRNA_extra_hash_rev{"RNA45S"}{"RNA28S"} = 1; -$rRNA_extra_hash_rev{"RNA45S"}{"RNA18S"} = 1; -$rRNA_extra_hash_rev{"RNA45S"}{"RNA5-8S"} = 1; -$rRNA_extra_hash_rev{"antisense_RNA45S"}{"antisense_RNA28S"} = 1; -$rRNA_extra_hash_rev{"antisense_RNA45S"}{"antisense_RNA18S"} = 1; -$rRNA_extra_hash_rev{"antisense_RNA45S"}{"antisense_RNA5-8S"} = 1; - - - - -#my $working_directory = "/home/elvannostrand/data/clip/CLIPseq_analysis/ENCODE_v9_20151209/PolIII_mapping/"; -# my $working_directory = $ARGV[3]; -# my $species = $ARGV[5]; -my $filelist_file = $ARGV[4]; -#hg19 -# my $filelist_file = "/home/elvannostrand/data/clip/CLIPseq_analysis/RNA_type_analysis/MASTER_filelist.wrepbaseandtRNA.enst2id.fixed.UpdatedSimpleRepeat.20190424"; -# if ($species eq "hg38") { -# $filelist_file = "/home/elvannostrand/data/clip/CLIPseq_analysis/RNA_type_analysis/hg38/MASTER_FILELIST.20201203.wrepbaseandtRNA.enst2id.fixed.UpdatedSimpleRepeat.wmiRs.list"; -# $filelist_file = "/home/elvannostrand/data/clip/CLIPseq_analysis/RNA_type_analysis/hg38/MASTER_FILELIST.20201203.wrepbaseandtRNA.enst2id.fixed.UpdatedSimpleRepeat"; -# } -&read_in_filelists($filelist_file); - -my $print_batch = 10000; -my $read_counter = 0; - -#&read_in_filelists("/home/elvannostrand/data/clip/CLIPseq_analysis/RNA_type_analysis/genelists.RNA5S","RNA5S"); -#my $fastq_file1 = "/home/gpratt/projects/encode/analysis/encode_v9/484_CLIP_S6_L001_R1_001.B06_484_01_POLR2G.adapterTrim.round2.fastq.gz"; -#my $fastq_file2 = "/home/gpratt/projects/encode/analysis/encode_v9/484_CLIP_S6_L001_R2_001.B06_484_01_POLR2G.adapterTrim.round2.fastq.gz"; - -#my $fastq_file1 = "test_r1.fastq"; -#my $fastq_file2 = "test_r2.fastq"; -#my $fastq_file1 = "484_CLIP_S6_L001_R1_001.B06_484_01_POLR2G.adapterTrim.round2.fastq"; -#my $fastq_file2 = "484_CLIP_S6_L001_R2_001.B06_484_01_POLR2G.adapterTrim.round2.fastq"; -#my $fastq_file1 = "484_INPUT_S7_L001_R1_001.unassigned.adapterTrim.round2.fastq"; -#my $fastq_file2 = "484_INPUT_S7_L001_R2_001.unassigned.adapterTrim.round2.fastq"; - -my $fastq_file1 = $ARGV[0]; -my $fastq_file2 = $ARGV[1]; - -my $bowtie_db = $ARGV[2]; -#my $bowtie_db = "/home/elvannostrand/data/clip/CLIPseq_analysis/RNA_type_analysis/filelist_POLIII.combined.Nflank"; -my @bowtie_db_split = split(/\//,$bowtie_db); -my $bowtie_db_short = $bowtie_db_split[$#bowtie_db_split]; - -my @fastq_fi1_split = split(/\//,$fastq_file1); -my $fastq_fi1_short = $fastq_fi1_split[$#fastq_fi1_split]; - -my $output = $ARGV[3]; -#my $output = $working_directory.$fastq_fi1_short.".mapped_vs_".$bowtie_db_short.".sam"; -my $bowtie_out = $output.".bowtieout"; -open(SAMOUT,">$output"); -my $multimapping_out = $output.".multimapping_deleted"; -open(MULTIMAP,">$multimapping_out"); -my $done_file = $output.".done"; - -# -my $command = "stdbuf -oL bowtie2 -q --sensitive -a -p 1 --no-mixed --reorder -x $bowtie_db -1 $fastq_file1 -2 $fastq_file2 2> $bowtie_out"; -#my $command = "/projects/ps-yeolab/software/bowtie-1.1.1/./bowtie -q -1 $fastq_file1 -2 $fastq_file2 $bowtie_db -a -v 2 --best --strata -S 2> $bowtie_out"; -print STDERR "command $command\n"; -#my $pid = open(BOWTIE, "-|", "unbuffer /projects/ps-yeolab/software/bowtie-1.1.1/./bowtie -q -1 $fastq_file1 -2 $fastq_file2 $genelistfi -a -v 2 --best --strata -S 2> $bowtie_out"); -my $pid = open(BOWTIE, "-|", "stdbuf -oL bowtie2 -q --sensitive -a -p 3 --no-mixed --reorder -x $bowtie_db -1 $fastq_file1 -2 $fastq_file2 2> $bowtie_out"); -#my $pid = open(BOWTIE, "-|", "stdbuf -oL /projects/ps-yeolab/software/bowtie-1.1.1/./bowtie -q -1 $fastq_file1 -2 $fastq_file2 $bowtie_db -a -v 2 --best --strata -S 2> $bowtie_out"); -#print "PID $pid\n"; -my %fragment_hash; -my $duplicate_count=0; -my $unique_count=0; -my $all_count=0; -my $prev_r1name = ""; - -my %read_hash; -if ($pid) { - - while () { - my $r1 = $_; - chomp($r1); - if ($r1 =~ /^\@/) { - print SAMOUT "$r1\n"; - next; - } - - my $r2 = ; - chomp($r2); - - my @tmp_r1 = split(/\t/,$r1); - my @tmp_r2 = split(/\t/,$r2); - - my ($r1name,$r1bc) = split(/\s+/,$tmp_r1[0]); - my ($r2name,$r2bc) = split(/\s+/,$tmp_r2[0]); -# $all_count++; -# if ($all_count % 1000 == 0) { -# print STDERR "$all_count\n"; -# } - unless ($r1name eq $r2name) { - print STDERR "paired end mismatch error: r1 $tmp_r1[0] r2 $tmp_r2[0]\n"; - } - - my $debug_flag = 0; -# if ($r1name eq "GCCAGCCTTA:K00180:175:H7W2CBBXX:3:2106:25712:12075") { -# print "READ1\t$r1\n"; -# $debug_flag = 1; -# } - print STDERR "read1 $r1\n" if ($debug_flag == 1); - my $r1sam_flag = $tmp_r1[1]; - my $r2sam_flag = $tmp_r2[1]; - unless ($r1sam_flag) { - print STDERR "error $r1 $r2\n"; - } - next if ($r1sam_flag == 77 || $r1sam_flag == 141); - - my $frag_strand; -### This section is for only properly paired reads - if ($r1sam_flag == 99 || $r1sam_flag == 355) { - $frag_strand = "-"; - } elsif ($r1sam_flag == 83 || $r1sam_flag == 339) { - $frag_strand = "+"; - } elsif ($r1sam_flag == 147 || $r1sam_flag == 403) { - $frag_strand = "-"; - } elsif ($r1sam_flag == 163 || $r1sam_flag == 419) { - $frag_strand = "+"; - } else { - next; - print STDERR "R1 strand error $r1sam_flag\n"; - } -### - # 77 = R1, unmapped - # 141 = R2, unmapped - - # 99 = R1, mapped, fwd strand --- frag on rev strand -> 355 = not primary - # 147 = R2, mapped, rev strand -- frag on rev strand -> 403 = not primary - - # 101 = R1 unmapped, R2 mapped rev strand -- frag on rev strand - # 73 = R1, mapped, fwd strand --- frag on rev strand - # 153 = R2 mapped (R1 unmapped), rev strand -- frag on rev strand - # 133 = R2 unmapped, R1 mapped fwd strand -- frag on rev strand - - # 83 = R1, mapped, rev strand --- frag on fwd strand -> 339 = not primary - # 163 = R2, mapped, fwd strand -- frag on fwd strand -> 419 = not primary - - # 69 = R1 unmapped, R2 mapped fwd strand -- frag on fwd strand - # 89 = R1 mapped rev strand, R2 unmapped -- frag on fwd strand - # 137 = R2 mapped (R1 unmapped), fwd strand -- frag on fwd strand - # 165 = R2 unmapped, R1 rev strand -- frag on fwd strand - - my $flags_r1 = join("\t",@tmp_r1[11..$#tmp_r1]); - my $flags_r2 = join("\t",@tmp_r2[11..$#tmp_r2]); - - my ($mismatch_score_r1,$mismatch_score_r2); - if ($flags_r1 =~ /AS\:i\:(\S+?)\s/) { - $mismatch_score_r1 = $1; - } - if ($flags_r2 =~ /AS\:i\:(\S+?)\s/) { - $mismatch_score_r2 = $1; - } - my $paired_mismatch_score = $mismatch_score_r1 + $mismatch_score_r2; - - - my $mapped_enst = $tmp_r1[2]; - my $mapped_enst_full = $tmp_r1[2]; - if ($mapped_enst =~ /^(.+)\_spliced/) { - $mapped_enst = $1; - } - if ($mapped_enst =~ /^(.+)\_withgenomeflank/) { - $mapped_enst = $1; - } - - unless (exists $convert_enst2type{$mapped_enst}) { - print STDERR "enst2type is missing for $mapped_enst $r1\n"; - } - my ($ensttype,$enstpriority) = split(/\:/,$convert_enst2type{$mapped_enst}); - - if ($frag_strand eq "-") { - $ensttype = "antisense_".$ensttype; - $mapped_enst_full = "antisense_".$mapped_enst_full; - } - - print "mapped $mapped_enst ensttype $ensttype priority $enstpriority\n" if ($debug_flag == 1); - - if ($r1name eq $prev_r1name) { - # current read is same as previous - do nothing - } else { - #current read is different than previous - print and clear hash every 100,000 entries - - $read_counter++; - - if ($read_counter > $print_batch) { - &print_output(); - %read_hash = (); - $read_counter = 0; - } - $prev_r1name = $r1name; - } - - unless (exists $read_hash{$r1name}) { - # if read has never been seen before, keep first mapping - $read_hash{$r1name}{R1}{$ensttype} = $r1; - $read_hash{$r1name}{R2}{$ensttype} = $r2; - $read_hash{$r1name}{flags}{$ensttype} = $enstpriority; - $read_hash{$r1name}{quality} = $paired_mismatch_score; -# push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst; - push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; - $read_hash{$r1name}{enst}{$mapped_enst} = $mapped_enst_full; - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full; - print "read never seen before quality $paired_mismatch_score $ensttype\n" if ($debug_flag == 1); - - } else { - # is score better than previous mapping? - if ($paired_mismatch_score < $read_hash{$r1name}{quality}) { - # new one is worse, skip - print "new match has worse score than previous - skip $paired_mismatch_score\n" if ($debug_flag == 1); - } elsif ($paired_mismatch_score > $read_hash{$r1name}{quality}) { - # new one is better match than previous - old should all be discarded - delete($read_hash{$r1name}); - $read_hash{$r1name}{R1}{$ensttype} = $r1; - $read_hash{$r1name}{R2}{$ensttype} = $r2; - $read_hash{$r1name}{flags}{$ensttype} = $enstpriority; - $read_hash{$r1name}{quality} = $paired_mismatch_score; -# push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst; - push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; - $read_hash{$r1name}{enst}{$mapped_enst} = $mapped_enst_full; - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full; - - print "new match has better quality score - discard all previous $paired_mismatch_score\n" if ($debug_flag == 1); - - } elsif ($paired_mismatch_score == $read_hash{$r1name}{quality}) { - # equal quality, both are good - now do family analysis -# print STDERR "two mapping same quality $r1name priority $enstpriority $read_hash{$r1name}{flags}{$ensttype}\n"; - print "has equal quality, now doing family mapping... \n" if ($debug_flag == 1); - - if (exists $read_hash{$r1name}{flags}{$ensttype}) { - # if mapping within family exists before... - print "mapping exists within family before... \n" if ($debug_flag == 1); - # first - did it already map to this transcript before? - if (exists $read_hash{$r1name}{enst}{$mapped_enst}) { - # is it spliced vs unspliced or tRNA flank vs whole genome? if yes ok - if ($read_hash{$r1name}{enst}{$mapped_enst}."_withgenomeflank" eq $mapped_enst_full || $read_hash{$r1name}{enst}{$mapped_enst}."_spliced" eq $mapped_enst_full) { - #original entry is to shorter transcript - keep that one, skip new one entirely - print "original was to original (non-genome flank version for tRNA or non-spliced for others) - keep old, skip this one\n" if ($debug_flag == 1); - } elsif ($read_hash{$r1name}{enst}{$mapped_enst} eq $mapped_enst_full."_withgenomeflank" || $read_hash{$r1name}{enst}{$mapped_enst} eq $mapped_enst_full."_spliced") { - # original entry is to longer transcript - replace with shorter - $read_hash{$r1name}{R1}{$ensttype} = $r1; - $read_hash{$r1name}{R2}{$ensttype} = $r2; - $read_hash{$r1name}{flags}{$ensttype} = $enstpriority; - -# Can't do this as normal - need to replace old -# unshift @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; - unless (exists $read_hash{$r1name}{"mult_ensts"}{$ensttype}) { - print STDERR "error doesn't exist? $r1name $ensttype \n"; - } - for (my $i=0;$i<@{$read_hash{$r1name}{"mult_ensts"}{$ensttype}};$i++) { - if ($read_hash{$r1name}{mult_ensts}{$ensttype}[$i] eq $read_hash{$r1name}{enst}{$mapped_enst}) { - $read_hash{$r1name}{mult_ensts}{$ensttype}[$i] = $mapped_enst_full; - } - } - $read_hash{$r1name}{enst}{$mapped_enst} = $mapped_enst_full; - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full; - - print "new mapping is the one i want - discard old and keep newer annotation \n" if ($debug_flag == 1); - } else { - # maps to two places in the same transcript - this is probably actually ok for counting purposes, but for now I'm going to flag these as bad - # 7/20/16 - going to comment this out for now - basically just skip the second entry but don't flag as bad -# $read_hash{$r1name}{flags}{"double_maps"} = 1; - - print "double maps - $ensttype prev length of mult_ensts array is ".scalar(@{$read_hash{$r1name}{mult_ensts}{$ensttype}})."\n" if ($debug_flag == 1); - - for (my $i=0;$i<@{$read_hash{$r1name}{"mult_ensts"}{$ensttype}};$i++) { - if ($read_hash{$r1name}{mult_ensts}{$ensttype}[$i] eq $read_hash{$r1name}{enst}{$mapped_enst}) { - $read_hash{$r1name}{mult_ensts}{$ensttype}[$i] = $mapped_enst_full."_DOUBLEMAP"; - } - } - - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full."_DOUBLEMAP"; - - print "double maps - $ensttype length of mult_ensts array is ".scalar(@{$read_hash{$r1name}{mult_ensts}{$ensttype}})."\n" if ($debug_flag == 1); - } - - - } elsif ($enstpriority < $read_hash{$r1name}{flags}{$ensttype}) { - # priority of new mapping is better than old - replace old - print "priority of new mapping is better than old - replace old mapping\n" if ($debug_flag == 1); - $read_hash{$r1name}{R1}{$ensttype} = $r1; - $read_hash{$r1name}{R2}{$ensttype} = $r2; - $read_hash{$r1name}{flags}{$ensttype} = $enstpriority; -# unshift @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst; - unshift @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; -# print STDERR "adding mapped $r1name $mapped_enst\n"; - - $read_hash{$r1name}{enst}{$mapped_enst} = $mapped_enst_full; - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full; - } else { - # Mapping is equal quality, but priority of new mapping is worse than old - keep new enst_full but otherwise discard -# push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst; - push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; - } - } elsif (exists $rRNA_extra_hash{$ensttype} && exists $read_hash{$r1name}{R1}{$rRNA_extra_hash{$ensttype}}) { - - # If old mapping was to rRNA_extra but new mapping is RNA18S, RNA28S, or RNA5-8S, keep new mapping and discard old - my $old_rRNA_label = $rRNA_extra_hash{$ensttype}; - delete($read_hash{$r1name}{R1}{$old_rRNA_label}); - delete($read_hash{$r1name}{R2}{$old_rRNA_label}); - delete($read_hash{$r1name}{flags}{$old_rRNA_label}); - delete($read_hash{$r1name}{master_enst}{$old_rRNA_label}); - delete($read_hash{$r1name}{mult_ensts}{$old_rRNA_label}); - delete($read_hash{$r1name}{enst}{"NR_046235.1"}); - - $read_hash{$r1name}{R1}{$ensttype} = $r1; - $read_hash{$r1name}{R2}{$ensttype} = $r2; - $read_hash{$r1name}{flags}{$ensttype} = $enstpriority; - $read_hash{$r1name}{quality} = $paired_mismatch_score; - $read_hash{$r1name}{enst}{$mapped_enst} = $mapped_enst_full; - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full; - push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; - - print "new mapping is the one i want - discard old and keep newer annotation \n" if ($debug_flag == 1); - } elsif (exists $rRNA_extra_hash_rev{$ensttype}) { - # new mapping is to rRNA_extra - my $rRNA_flag = 0; - for my $rRNA_elements (keys %{$rRNA_extra_hash_rev{$ensttype}}) { - if (exists $read_hash{$r1name}{R1}{$rRNA_elements}) { - # new mapping is to rRNA_extra, but old is to RNA28S, RNA18S, or RNA5-8S - discard new mapping - $rRNA_flag = 1; - } - } - - if ($rRNA_flag == 1) {} else { - # new mapping is to rRNA_extra, but old is to something non-rRNA - do same as multi-family below - $read_hash{$r1name}{R1}{$ensttype} = $r1; - $read_hash{$r1name}{R2}{$ensttype} = $r2; - $read_hash{$r1name}{flags}{$ensttype} = $enstpriority; - $read_hash{$r1name}{quality} = $paired_mismatch_score; - $read_hash{$r1name}{enst}{$mapped_enst} = $mapped_enst_full; - push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full; - - } -# $rRNA_extra_hash_rev{"rRNA_extra"}{"RNA28S"} = 1; - - } else { - print "maps to two families - $ensttype\n" if ($debug_flag == 1); -# hits this if - # 1) read_hash{r1name} already exists (read already seen) - # 2) $paired_mismatch_score == $read_hash{$r1name}{quality} - mapping score is same as previous - # 3) $read_hash{$r1name}{flags}{$ensttype} doesn't exist - read exists but this is a new family - - # read maps to multiple gene lists - discard as not uniquely mapping within family - # 7/19/16 - changed this to KEEP multi-family mapping - - - #my $type1 = "RN7SL"; - #my $type2 = "RN7SL_antisense"; -# if (exists $read_hash{$r1name}{flags}{$type1} && $ensttype eq $type2) { -# print "$type1\t".$read_hash{$r1name}{R1}{$type1}."\n".$read_hash{$r1name}{R2}{$type1}."\n"."$type2\t".$r1."\n".$r2."\n\n"; -# } -# if (exists $read_hash{$r1name}{flags}{$type2} && $ensttype eq $type1) { -# print "$type2\t".$read_hash{$r1name}{R1}{$type2}."\n".$read_hash{$r1name}{R2}{$type2}."\n"."$type1\t".$r1."\n".$r2."\n\n"; -# } - - $read_hash{$r1name}{R1}{$ensttype} = $r1; - $read_hash{$r1name}{R2}{$ensttype} = $r2; - $read_hash{$r1name}{flags}{$ensttype} = $enstpriority; - $read_hash{$r1name}{quality} = $paired_mismatch_score; - $read_hash{$r1name}{enst}{$mapped_enst} = $mapped_enst_full; - push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; - - #adds new master enst to save for below - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full; -# my @tmp_to_sort = split(/\|/,$read_hash{$r1name}{master_enst}); -# push @tmp_to_sort,$mapped_enst_full; -# my @sorted = sort {$a cmp $b} @tmp_to_sort; -# $read_hash{$r1name}{master_enst} = join("|",@sorted); - - } - } else { - # I don't think this should ever be hit - print STDERR "this shouldn't be hit - $paired_mismatch_score $read_hash{$r1name}{quality} $r1name $r1 $r2\n"; - } - - } - # end of line processing - - } -} - -&print_output(); -close(SAMOUT); -for my $multi_key (keys %multimapping_hash) { - print MULTIMAP "$multi_key\t".$multimapping_hash{$multi_key}."\n"; -} -close(MULTIMAP); - -#my $done_file = $output.".done"; -open(DONE,">$done_file"); -print DONE "jobs done\n"; -close(DONE); - - -sub print_output { - my %count; - my %count_enst; - for my $read (keys %read_hash) { - my @ensttype_array = sort {$a cmp $b} keys %{$read_hash{$read}{flags}}; - my $ensttype = $ensttype_array[0]; - my @masterenst_array; - for my $type (@ensttype_array) { - push @masterenst_array,$read_hash{$read}{master_enst}{$type}; - } - my $ensttype_join = join("|",@ensttype_array); - my $masterenst_join = join("|",@masterenst_array); - - $count{$ensttype_join}++; - -# print STDERR "read $read, ensttype $ensttype\n"; - if (scalar(keys %{$read_hash{$read}{flags}}) == 1) { - print STDERR "this shouldn't happen this should be 1 ".scalar(keys %{$read_hash{$read}{R1}})."\n" unless (scalar(keys %{$read_hash{$read}{R1}}) == 1); - - my @r1_split = split(/\t/,$read_hash{$read}{R1}{$ensttype}); - my @r2_split = split(/\t/,$read_hash{$read}{R2}{$ensttype}); - $r1_split[2] = $ensttype_join."||".$masterenst_join; - $r2_split[2] = $ensttype_join."||".$masterenst_join; - my $r1_line = join("\t",@r1_split); - my $r2_line = join("\t",@r2_split); - - print SAMOUT "".$r1_line."\tZZ:Z:".join("|",@{$read_hash{$read}{mult_ensts}{$ensttype}})."\n".$r2_line."\tZZ:Z:".join("|",@{$read_hash{$read}{mult_ensts}{$ensttype}})."\n"; -# print SAMOUT "".$read_hash{$read}{R1}{$ensttype}."\tZZ:Z:".join("|",@{$read_hash{$read}{mult_ensts}{$ensttype}})."\n".$read_hash{$read}{R2}{$ensttype}."\tZZ:Z:".join("|",@{$read_hash{$read}{mult_ensts}{$ensttype}})."\n"; - - my @blah = split(/\t/,$read_hash{$read}{R1}{$ensttype}); - $count_enst{$ensttype."|".$blah[2]}++; -# $count_enst{$ensttype."|".join("|",@{$read_hash{$read}{mult_ensts}{$ensttype}})}++; - - } else { -# print STDERR "this shouldn't happen this should be 1 ".scalar(keys %{$read_hash{$read}{R1}})."\n" unless (scalar(keys %{$read_hash{$read}{R1}}) == 1); - my @all_mult_ensts; - for my $key (@ensttype_array) { - push @all_mult_ensts,join("|",@{$read_hash{$read}{mult_ensts}{$key}}); - } - my $final_mult_ensts = join("|",@all_mult_ensts); - - unless (exists $read_hash{$read}{R1}{$ensttype} && $read_hash{$read}{R1}{$ensttype}) { - print "weird error - $read $ensttype readhash doesn't exist ? ".$read_hash{$read}{flags}{$ensttype}."\n"; - } - - my @r1_split = split(/\t/,$read_hash{$read}{R1}{$ensttype}); - my @r2_split = split(/\t/,$read_hash{$read}{R2}{$ensttype}); - $r1_split[2] = $ensttype_join."||".$masterenst_join; - $r2_split[2] = $ensttype_join."||".$masterenst_join; - - my $r1_line = join("\t",@r1_split); - my $r2_line = join("\t",@r2_split); -# print SAMOUT "".$r1_line."\tZZ:Z:".join("|",@{$read_hash{$read}{mult_ensts}{$ensttype}})."\n".$r2_line."\tZZ:Z:".join("|",@{$read_hash{$read}{mult_ensts}{$ensttype}})."\n"; - print SAMOUT "".$r1_line."\tZZ:Z:".$final_mult_ensts."\n".$r2_line."\tZZ:Z:".$final_mult_ensts."\n"; - my $multimapping_type = join("|",keys %{$read_hash{$read}{flags}}); - $multimapping_hash{$multimapping_type}++; - } - } - - -} - - -#my @sorted = sort {$count{$b} <=> $count{$a}} keys %count; -#for my $k (@sorted) { -# print "$k $count{$k}\n"; -#} - -#my @sorted = sort {$count_enst{$b} <=> $count_enst{$a}} keys %count_enst; -#for my $s (@sorted) { -# my ($type,$geneid) = split(/\|/,$s); -# print "$type\t$geneid\t$count_enst{$s}\t$enst2gene{$geneid}\n"; -# print "$type\t$geneid\t$count_enst{$s}\t$s\n"; -#} - - -#print "unique $unique_count\n duplicate $duplicate_count\n"; - - - - - -sub read_in_filelists { - my $fi = shift; - my $priority_n = 0; -# print STDERR "opening $fi\n"; - open(F,$fi); - for my $line () { - chomp($line); - my ($allenst,$allensg,$gid,$type_label,$typefile) = split(/\t/,$line); - unless ($type_label) { - print "err $line\n"; - } -# my ($allensg,$gid,$allenst) = split(/\t/,$line); - $type_label =~ s/\_$//; - unless ($allenst) { - print STDERR "error missing enst $line $fi\n"; - } - my @ensts = split(/\|/,$allenst); - for my $enst (@ensts) { - $enst2gene{$enst} = $gid; - $convert_enst2type{$enst} = $type_label.":".$priority_n; - $priority_n++; - } - } - close(F); -} diff --git a/bin/perl/parse_bowtie2_output_realtime_includemultifamily_SE.pl b/bin/perl/parse_bowtie2_output_realtime_includemultifamily_SE.pl deleted file mode 100755 index be9c36e..0000000 --- a/bin/perl/parse_bowtie2_output_realtime_includemultifamily_SE.pl +++ /dev/null @@ -1,481 +0,0 @@ -#!/usr/bin/env perl - -use warnings; -use strict; - -my %enst2gene; -my %convert_enst2type; -my %multimapping_hash; - -my %rRNA_extra_hash; -my %rRNA_extra_hash_rev; -$rRNA_extra_hash{"RNA28S"} = "RNA45S"; -$rRNA_extra_hash{"RNA18S"} = "RNA45S"; -$rRNA_extra_hash{"RNA5-8S"} = "RNA45S"; -$rRNA_extra_hash{"antisense_RNA28S"} = "antisense_RNA45S"; -$rRNA_extra_hash{"antisense_RNA18S"} = "antisense_RNA45S"; -$rRNA_extra_hash{"antisense_RNA5-8S"} = "antisense_RNA45S"; - -$rRNA_extra_hash_rev{"RNA45S"}{"RNA28S"} = 1; -$rRNA_extra_hash_rev{"RNA45S"}{"RNA18S"} = 1; -$rRNA_extra_hash_rev{"RNA45S"}{"RNA5-8S"} = 1; -$rRNA_extra_hash_rev{"antisense_RNA45S"}{"antisense_RNA28S"} = 1; -$rRNA_extra_hash_rev{"antisense_RNA45S"}{"antisense_RNA18S"} = 1; -$rRNA_extra_hash_rev{"antisense_RNA45S"}{"antisense_RNA5-8S"} = 1; - - - -# my $species = $ARGV[3]; -#my $working_directory = "/home/elvannostrand/data/clip/CLIPseq_analysis/ENCODE_v9_20151209/PolIII_mapping/"; -# my $working_directory = $ARGV[2]; - -my $filelist_file = $ARGV[3]; -# my $filelist_file = "/home/elvannostrand/data/clip/CLIPseq_analysis/RNA_type_analysis/MASTER_filelist.wrepbaseandtRNA.enst2id.fixed.UpdatedSimpleRepeat.20190424"; -# if ($species eq "hg38") { -# $filelist_file = "/home/elvannostrand/data/clip/CLIPseq_analysis/RNA_type_analysis/hg38/MASTER_FILELIST.20201203.wrepbaseandtRNA.enst2id.fixed.UpdatedSimpleRepeat.wmiRs.list"; -# } - -&read_in_filelists($filelist_file); - -my $print_batch = 10000; -my $read_counter = 0; - -#&read_in_filelists("/home/elvannostrand/data/clip/CLIPseq_analysis/RNA_type_analysis/genelists.RNA5S","RNA5S"); -#my $fastq_file1 = "/home/gpratt/projects/encode/analysis/encode_v9/484_CLIP_S6_L001_R1_001.B06_484_01_POLR2G.adapterTrim.round2.fastq.gz"; -#my $fastq_file2 = "/home/gpratt/projects/encode/analysis/encode_v9/484_CLIP_S6_L001_R2_001.B06_484_01_POLR2G.adapterTrim.round2.fastq.gz"; - -#my $fastq_file1 = "test_r1.fastq"; -#my $fastq_file2 = "test_r2.fastq"; -#my $fastq_file1 = "484_CLIP_S6_L001_R1_001.B06_484_01_POLR2G.adapterTrim.round2.fastq"; -#my $fastq_file2 = "484_CLIP_S6_L001_R2_001.B06_484_01_POLR2G.adapterTrim.round2.fastq"; -#my $fastq_file1 = "484_INPUT_S7_L001_R1_001.unassigned.adapterTrim.round2.fastq"; -#my $fastq_file2 = "484_INPUT_S7_L001_R2_001.unassigned.adapterTrim.round2.fastq"; - -my $fastq_file1 = $ARGV[0]; - -my $bowtie_db = $ARGV[1]; -#my $bowtie_db = "/home/elvannostrand/data/clip/CLIPseq_analysis/RNA_type_analysis/filelist_POLIII.combined.Nflank"; -my @bowtie_db_split = split(/\//,$bowtie_db); -my $bowtie_db_short = $bowtie_db_split[$#bowtie_db_split]; - -my @fastq_fi1_split = split(/\//,$fastq_file1); -my $fastq_fi1_short = $fastq_fi1_split[$#fastq_fi1_split]; - -my $output = $ARGV[2]; -#my $output = $working_directory.$fastq_fi1_short.".mapped_vs_".$bowtie_db_short.".sam"; -my $bowtie_out = $output.".bowtieout"; -open(SAMOUT,">$output"); -my $multimapping_out = $output.".multimapping_deleted"; -open(MULTIMAP,">$multimapping_out"); -my $done_file = $output.".done"; - -# -my $command = "stdbuf -oL bowtie2 -q --sensitive -a -p 1 --no-mixed --reorder -x $bowtie_db -U $fastq_file1 2> $bowtie_out"; -#my $command = "/projects/ps-yeolab/software/bowtie-1.1.1/./bowtie -q -1 $fastq_file1 -2 $fastq_file2 $bowtie_db -a -v 2 --best --strata -S 2> $bowtie_out"; -print STDERR "command $command\n"; -#my $pid = open(BOWTIE, "-|", "unbuffer /projects/ps-yeolab/software/bowtie-1.1.1/./bowtie -q -1 $fastq_file1 -2 $fastq_file2 $genelistfi -a -v 2 --best --strata -S 2> $bowtie_out"); -my $pid = open(BOWTIE, "-|", "stdbuf -oL bowtie2 -q --sensitive -a -p 3 --no-mixed --reorder -x $bowtie_db -U $fastq_file1 2> $bowtie_out"); -#my $pid = open(BOWTIE, "-|", "stdbuf -oL /projects/ps-yeolab/software/bowtie-1.1.1/./bowtie -q -1 $fastq_file1 -2 $fastq_file2 $bowtie_db -a -v 2 --best --strata -S 2> $bowtie_out"); -#print "PID $pid\n"; -my %fragment_hash; -my $duplicate_count=0; -my $unique_count=0; -my $all_count=0; -my $prev_r1name = ""; - -my %read_hash; -if ($pid) { - - while () { - my $r1 = $_; - chomp($r1); - if ($r1 =~ /^\@/) { - print SAMOUT "$r1\n"; - next; - } - - my @tmp_r1 = split(/\t/,$r1); - -# my ($r1name,$r1bc) = split(/\s+/,$tmp_r1[0]); -# my ($r1name,$r1bc) = split(/\_/,$tmp_r1[0]); - my @read_name = split(/\_/,$tmp_r1[0]); - my $r1bc = pop(@read_name); - my $r1name = join("_",@read_name); - -# $all_count++; -# if ($all_count % 1000 == 0) { -# print STDERR "$all_count\n"; -# } - - my $debug_flag = 0; -# if ($r1name eq "K00180:734:H2FYCBBXY:5:1101:12053:6378_TCCCCCCGAC") { -# print "READ1\t$r1\n"; -# $debug_flag = 1; -# } - print STDERR "read1 $r1\n" if ($debug_flag == 1); - my $r1sam_flag = $tmp_r1[1]; - -# unless ($r1sam_flag) { -# print STDERR "error $r1\n"; -# } - next if ($r1sam_flag == 4); - - my $frag_strand; -### This section is for only properly paired reads - if ($r1sam_flag == 16 || $r1sam_flag == 272) { - $frag_strand = "-"; - } elsif ($r1sam_flag eq "0" || $r1sam_flag == 256) { - $frag_strand = "+"; - } else { - next; - print STDERR "R1 strand error $r1sam_flag\n"; - } -### - my $flags_r1 = join("\t",@tmp_r1[11..$#tmp_r1]); - - my ($mismatch_score_r1); - if ($flags_r1 =~ /AS\:i\:(\S+?)\s/) { - $mismatch_score_r1 = $1; - } - my $paired_mismatch_score = $mismatch_score_r1; - - - my $mapped_enst = $tmp_r1[2]; - my $mapped_enst_full = $tmp_r1[2]; - if ($mapped_enst =~ /^(.+)\_spliced/) { - $mapped_enst = $1; - } - if ($mapped_enst =~ /^(.+)\_withgenomeflank/) { - $mapped_enst = $1; - } - - unless (exists $convert_enst2type{$mapped_enst}) { - print STDERR "enst2type is missing for $mapped_enst $r1\n"; - } - my ($ensttype,$enstpriority) = split(/\:/,$convert_enst2type{$mapped_enst}); - - if ($frag_strand eq "-") { - $ensttype = "antisense_".$ensttype; - $mapped_enst_full = "antisense_".$mapped_enst_full; - } - - print "mapped $mapped_enst ensttype $ensttype priority $enstpriority\n" if ($debug_flag == 1); - - if ($r1name eq $prev_r1name) { - # current read is same as previous - do nothing - } else { - #current read is different than previous - print and clear hash every 100,000 entries - - $read_counter++; - - if ($read_counter > $print_batch) { - &print_output(); - %read_hash = (); - $read_counter = 0; - } - $prev_r1name = $r1name; - } - - if ($debug_flag == 1) { - print "r1name $r1name \t paired_mismatch_score $paired_mismatch_score\n"; - if (exists $read_hash{$r1name}) { - print "read has been seen before - $read_hash{$r1name}{quality}\n"; - } else { - print "read never seen before\n"; - } - } - - unless (exists $read_hash{$r1name}) { - # if read has never been seen before, keep first mapping - $read_hash{$r1name}{R1}{$ensttype} = $r1; - $read_hash{$r1name}{flags}{$ensttype} = $enstpriority; - $read_hash{$r1name}{quality} = $paired_mismatch_score; -# push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst; - push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; - $read_hash{$r1name}{enst}{$mapped_enst} = $mapped_enst_full; - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full; - print "read never seen before quality $paired_mismatch_score $ensttype\n" if ($debug_flag == 1); - - } else { - # is score better than previous mapping? - if ($paired_mismatch_score < $read_hash{$r1name}{quality}) { - # new one is worse, skip - print "new match has worse score than previous - skip $paired_mismatch_score\n" if ($debug_flag == 1); - } elsif ($paired_mismatch_score > $read_hash{$r1name}{quality}) { - # new one is better match than previous - old should all be discarded - delete($read_hash{$r1name}); - $read_hash{$r1name}{R1}{$ensttype} = $r1; - $read_hash{$r1name}{flags}{$ensttype} = $enstpriority; - $read_hash{$r1name}{quality} = $paired_mismatch_score; -# push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst; - push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; - $read_hash{$r1name}{enst}{$mapped_enst} = $mapped_enst_full; - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full; - - print "new match has better quality score - discard all previous $paired_mismatch_score\n" if ($debug_flag == 1); - - } elsif ($paired_mismatch_score == $read_hash{$r1name}{quality}) { - # equal quality, both are good - now do family analysis -# print STDERR "two mapping same quality $r1name priority $enstpriority $read_hash{$r1name}{flags}{$ensttype}\n"; - print "has equal quality, now doing family mapping... \n" if ($debug_flag == 1); - - if (exists $read_hash{$r1name}{flags}{$ensttype}) { - # if mapping within family exists before... - print "mapping exists within family before... \n" if ($debug_flag == 1); - # first - did it already map to this transcript before? - if (exists $read_hash{$r1name}{enst}{$mapped_enst}) { - # is it spliced vs unspliced or tRNA flank vs whole genome? if yes ok - if ($read_hash{$r1name}{enst}{$mapped_enst}."_withgenomeflank" eq $mapped_enst_full || $read_hash{$r1name}{enst}{$mapped_enst}."_spliced" eq $mapped_enst_full) { - #original entry is to shorter transcript - keep that one, skip new one entirely - print "original was to original (non-genome flank version for tRNA or non-spliced for others) - keep old, skip this one\n" if ($debug_flag == 1); - } elsif ($read_hash{$r1name}{enst}{$mapped_enst} eq $mapped_enst_full."_withgenomeflank" || $read_hash{$r1name}{enst}{$mapped_enst} eq $mapped_enst_full."_spliced") { - # original entry is to longer transcript - replace with shorter - $read_hash{$r1name}{R1}{$ensttype} = $r1; - $read_hash{$r1name}{flags}{$ensttype} = $enstpriority; - -# Can't do this as normal - need to replace old -# unshift @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; - unless (exists $read_hash{$r1name}{"mult_ensts"}{$ensttype}) { - print STDERR "error doesn't exist? $r1name $ensttype \n"; - } - for (my $i=0;$i<@{$read_hash{$r1name}{"mult_ensts"}{$ensttype}};$i++) { - if ($read_hash{$r1name}{mult_ensts}{$ensttype}[$i] eq $read_hash{$r1name}{enst}{$mapped_enst}) { - $read_hash{$r1name}{mult_ensts}{$ensttype}[$i] = $mapped_enst_full; - } - } - $read_hash{$r1name}{enst}{$mapped_enst} = $mapped_enst_full; - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full; - - print "new mapping is the one i want - discard old and keep newer annotation \n" if ($debug_flag == 1); - } else { - # maps to two places in the same transcript - this is probably actually ok for counting purposes, but for now I'm going to flag these as bad - # 7/20/16 - going to comment this out for now - basically just skip the second entry but don't flag as bad -# $read_hash{$r1name}{flags}{"double_maps"} = 1; - - print "double maps - $ensttype prev length of mult_ensts array is ".scalar(@{$read_hash{$r1name}{mult_ensts}{$ensttype}})."\n" if ($debug_flag == 1); - - for (my $i=0;$i<@{$read_hash{$r1name}{"mult_ensts"}{$ensttype}};$i++) { - if ($read_hash{$r1name}{mult_ensts}{$ensttype}[$i] eq $read_hash{$r1name}{enst}{$mapped_enst}) { - $read_hash{$r1name}{mult_ensts}{$ensttype}[$i] = $mapped_enst_full."_DOUBLEMAP"; - } - } - - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full."_DOUBLEMAP"; - - print "double maps - $ensttype length of mult_ensts array is ".scalar(@{$read_hash{$r1name}{mult_ensts}{$ensttype}})."\n" if ($debug_flag == 1); - } - - - } elsif ($enstpriority < $read_hash{$r1name}{flags}{$ensttype}) { - # priority of new mapping is better than old - replace old - print "priority of new mapping is better than old - replace old mapping\n" if ($debug_flag == 1); - $read_hash{$r1name}{R1}{$ensttype} = $r1; - $read_hash{$r1name}{flags}{$ensttype} = $enstpriority; -# unshift @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst; - unshift @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; -# print STDERR "adding mapped $r1name $mapped_enst\n"; - - $read_hash{$r1name}{enst}{$mapped_enst} = $mapped_enst_full; - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full; - } else { - # Mapping is equal quality, but priority of new mapping is worse than old - keep new enst_full but otherwise discard -# push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst; - push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; - } - } elsif (exists $rRNA_extra_hash{$ensttype} && exists $read_hash{$r1name}{R1}{$rRNA_extra_hash{$ensttype}}) { - - # If old mapping was to rRNA_extra but new mapping is RNA18S, RNA28S, or RNA5-8S, keep new mapping and discard old - my $old_rRNA_label = $rRNA_extra_hash{$ensttype}; - delete($read_hash{$r1name}{R1}{$old_rRNA_label}); - delete($read_hash{$r1name}{flags}{$old_rRNA_label}); - delete($read_hash{$r1name}{master_enst}{$old_rRNA_label}); - delete($read_hash{$r1name}{mult_ensts}{$old_rRNA_label}); - delete($read_hash{$r1name}{enst}{"NR_046235.1"}); - - $read_hash{$r1name}{R1}{$ensttype} = $r1; - $read_hash{$r1name}{flags}{$ensttype} = $enstpriority; - $read_hash{$r1name}{quality} = $paired_mismatch_score; - $read_hash{$r1name}{enst}{$mapped_enst} = $mapped_enst_full; - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full; - push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; - - print "new mapping is the one i want - discard old and keep newer annotation \n" if ($debug_flag == 1); - } elsif (exists $rRNA_extra_hash_rev{$ensttype}) { - # new mapping is to rRNA_extra - my $rRNA_flag = 0; - for my $rRNA_elements (keys %{$rRNA_extra_hash_rev{$ensttype}}) { - if (exists $read_hash{$r1name}{R1}{$rRNA_elements}) { - # new mapping is to rRNA_extra, but old is to RNA28S, RNA18S, or RNA5-8S - discard new mapping - $rRNA_flag = 1; - } - } - - if ($rRNA_flag == 1) {} else { - # new mapping is to rRNA_extra, but old is to something non-rRNA - do same as multi-family below - print STDERR "new mapping is to rRNA_extra, but old is to something non-rRNA - do same as multi-family below\nrRNA_flag $rRNA_flag ensttype $ensttype r1 $r1\n" if ($debug_flag == 1); - $read_hash{$r1name}{R1}{$ensttype} = $r1; - $read_hash{$r1name}{flags}{$ensttype} = $enstpriority; - $read_hash{$r1name}{quality} = $paired_mismatch_score; - $read_hash{$r1name}{enst}{$mapped_enst} = $mapped_enst_full; - push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full; - - } - - - } else { - print "maps to two families - $ensttype\n" if ($debug_flag == 1); -# hits this if - # 1) read_hash{r1name} already exists (read already seen) - # 2) $paired_mismatch_score == $read_hash{$r1name}{quality} - mapping score is same as previous - # 3) $read_hash{$r1name}{flags}{$ensttype} doesn't exist - read exists but this is a new family - - # read maps to multiple gene lists - discard as not uniquely mapping within family - # 7/19/16 - changed this to KEEP multi-family mapping - - - #my $type1 = "RN7SL"; - #my $type2 = "RN7SL_antisense"; -# if (exists $read_hash{$r1name}{flags}{$type1} && $ensttype eq $type2) { -# print "$type1\t".$read_hash{$r1name}{R1}{$type1}."\n".$read_hash{$r1name}{R2}{$type1}."\n"."$type2\t".$r1."\n".$r2."\n\n"; -# } -# if (exists $read_hash{$r1name}{flags}{$type2} && $ensttype eq $type1) { -# print "$type2\t".$read_hash{$r1name}{R1}{$type2}."\n".$read_hash{$r1name}{R2}{$type2}."\n"."$type1\t".$r1."\n".$r2."\n\n"; -# } - - $read_hash{$r1name}{R1}{$ensttype} = $r1; - $read_hash{$r1name}{flags}{$ensttype} = $enstpriority; - $read_hash{$r1name}{quality} = $paired_mismatch_score; - $read_hash{$r1name}{enst}{$mapped_enst} = $mapped_enst_full; - push @{$read_hash{$r1name}{mult_ensts}{$ensttype}},$mapped_enst_full; - - #adds new master enst to save for below - $read_hash{$r1name}{master_enst}{$ensttype} = $mapped_enst_full; -# my @tmp_to_sort = split(/\|/,$read_hash{$r1name}{master_enst}); -# push @tmp_to_sort,$mapped_enst_full; -# my @sorted = sort {$a cmp $b} @tmp_to_sort; -# $read_hash{$r1name}{master_enst} = join("|",@sorted); - - } - } else { - # I don't think this should ever be hit -# print STDERR "this shouldn't be hit - $paired_mismatch_score $read_hash{$r1name}{quality} $r1name $r1 $r2\n"; - print STDERR "this shouldn't be hit - $paired_mismatch_score $read_hash{$r1name}{quality} $r1name $r1\n"; - } - - } - # end of line processing - - } -} - -&print_output(); -close(SAMOUT); -for my $multi_key (keys %multimapping_hash) { - print MULTIMAP "$multi_key\t".$multimapping_hash{$multi_key}."\n"; -} -close(MULTIMAP); - -#my $done_file = $output.".done"; -open(DONE,">$done_file"); -print DONE "jobs done\n"; -close(DONE); - - -sub print_output { - my %count; - my %count_enst; - for my $read (keys %read_hash) { - my @ensttype_array = sort {$a cmp $b} keys %{$read_hash{$read}{flags}}; - my $ensttype = $ensttype_array[0]; - my @masterenst_array; - for my $type (@ensttype_array) { - push @masterenst_array,$read_hash{$read}{master_enst}{$type}; - } - my $ensttype_join = join("|",@ensttype_array); - my $masterenst_join = join("|",@masterenst_array); - - $count{$ensttype_join}++; - -# print STDERR "read $read, ensttype $ensttype\n"; - if (scalar(keys %{$read_hash{$read}{flags}}) == 1) { - print STDERR "this shouldn't happen this should be 1 ".scalar(keys %{$read_hash{$read}{R1}})."\n" unless (scalar(keys %{$read_hash{$read}{R1}}) == 1); - - my @r1_split = split(/\t/,$read_hash{$read}{R1}{$ensttype}); - $r1_split[2] = $ensttype_join."||".$masterenst_join; - my $r1_line = join("\t",@r1_split); - -# print SAMOUT "".$r1_line."\tZZ:Z:".join("|",@{$read_hash{$read}{mult_ensts}{$ensttype}})."\n".$r2_line."\tZZ:Z:".join("|",@{$read_hash{$read}{mult_ensts}{$ensttype}})."\n"; - print SAMOUT "".$r1_line."\tZZ:Z:".join("|",@{$read_hash{$read}{mult_ensts}{$ensttype}})."\n"; - - my @blah = split(/\t/,$read_hash{$read}{R1}{$ensttype}); - $count_enst{$ensttype."|".$blah[2]}++; -# $count_enst{$ensttype."|".join("|",@{$read_hash{$read}{mult_ensts}{$ensttype}})}++; - - } else { -# print STDERR "this shouldn't happen this should be 1 ".scalar(keys %{$read_hash{$read}{R1}})."\n" unless (scalar(keys %{$read_hash{$read}{R1}}) == 1); - my @all_mult_ensts; - for my $key (@ensttype_array) { - push @all_mult_ensts,join("|",@{$read_hash{$read}{mult_ensts}{$key}}); - } - my $final_mult_ensts = join("|",@all_mult_ensts); - - unless (exists $read_hash{$read}{R1}{$ensttype} && $read_hash{$read}{R1}{$ensttype}) { - print "weird error - $read $ensttype readhash doesn't exist ? ".$read_hash{$read}{flags}{$ensttype}."\n"; - } - - my @r1_split = split(/\t/,$read_hash{$read}{R1}{$ensttype}); - $r1_split[2] = $ensttype_join."||".$masterenst_join; - my $r1_line = join("\t",@r1_split); - - print SAMOUT "".$r1_line."\tZZ:Z:".$final_mult_ensts."\n"; -# print SAMOUT "".$r1_line."\tZZ:Z:".$final_mult_ensts."\n".$r2_line."\tZZ:Z:".$final_mult_ensts."\n"; - my $multimapping_type = join("|",keys %{$read_hash{$read}{flags}}); - $multimapping_hash{$multimapping_type}++; - } - } - - -} - - -#my @sorted = sort {$count{$b} <=> $count{$a}} keys %count; -#for my $k (@sorted) { -# print "$k $count{$k}\n"; -#} - -#my @sorted = sort {$count_enst{$b} <=> $count_enst{$a}} keys %count_enst; -#for my $s (@sorted) { -# my ($type,$geneid) = split(/\|/,$s); -# print "$type\t$geneid\t$count_enst{$s}\t$enst2gene{$geneid}\n"; -# print "$type\t$geneid\t$count_enst{$s}\t$s\n"; -#} - - -#print "unique $unique_count\n duplicate $duplicate_count\n"; - - - - - -sub read_in_filelists { - my $fi = shift; - my $priority_n = 0; - open(F,$fi) || die "no $fi\n"; - for my $line () { - chomp($line); - my ($allenst,$allensg,$gid,$type_label,$typefile) = split(/\t/,$line); -# my ($allensg,$gid,$allenst) = split(/\t/,$line); - $type_label =~ s/\_$//; - unless ($allenst) { - print STDERR "error missing enst $line $fi\n"; - } - my @ensts = split(/\|/,$allenst); - for my $enst (@ensts) { - $enst2gene{$enst} = $gid; - $convert_enst2type{$enst} = $type_label.":".$priority_n; - $priority_n++; - } - } - close(F); -} diff --git a/bin/perl/split_bam_to_subfiles_SEorPE.pl b/bin/perl/split_bam_to_subfiles_SEorPE.pl deleted file mode 100755 index df0707e..0000000 --- a/bin/perl/split_bam_to_subfiles_SEorPE.pl +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/env perl - -use warnings; -use strict; - -my $sam_fi = $ARGV[0]; -my @sam_fi_split = split(/\//,$sam_fi); -my $sam_fi_short = $sam_fi_split[$#sam_fi_split]; - -my $se_or_pe_flag = $ARGV[1]; -if ($se_or_pe_flag eq "PE"){ - print STDERR "splitting in paired-end mode\n"; -} elsif ($se_or_pe_flag eq "SE") { - print STDERR "splitting in single-end mode\n"; -} else { - print STDERR "fatal error - SE or PE not defined\n"; - exit; -} - -my %filehandles; -for my $b1 ("A","C","G","T","N") { - for my $b2 ("A","C","G","T","N") { - - my $outfi = $b1.$b2.".".$sam_fi_short.".tmp"; - open(my $fh, '>', $outfi); - $filehandles{$b1.$b2} = $fh; - } -} - - - -if ($sam_fi =~ /\.sam$/) { - open(F,$sam_fi); -} elsif ($sam_fi =~ /\.bam$/) { - open(F,"samtools view -h $sam_fi |") || die "no $sam_fi\n"; -} else { - print STDERR "weird - $sam_fi not either sam or bam file format - exit\n"; - exit; -} - -while () { - my $r1 = $_; - - next if ($r1 =~ /^\@/); - - chomp($r1); - my @tmp_r1 = split(/\t/,$r1); - my ($r1name,$r1bc) = split(/\s+/,$tmp_r1[0]); - my $r1sam_flag = $tmp_r1[1]; - - my $r2 = if ($se_or_pe_flag eq "PE"); - chomp($r2) if ($se_or_pe_flag eq "PE"); - my @tmp_r2 = split(/\t/,$r2) if ($se_or_pe_flag eq "PE"); - my ($r2name,$r2bc) = split(/\s+/,$tmp_r2[0]) if ($se_or_pe_flag eq "PE"); - my $r2sam_flag = $tmp_r2[1] if ($se_or_pe_flag eq "PE"); - - if ($se_or_pe_flag eq "PE") { - unless ($r1name eq $r2name) { - print STDERR "paired end mismatch error: $sam_fi r1 $tmp_r1[0] r2 $tmp_r2[0]\n"; - } - unless ($r1sam_flag) { - print STDERR "error $r1 $r2\n"; - } - } - - - - if ($se_or_pe_flag eq "PE") { - next if ($r1sam_flag == 77 || $r1sam_flag == 141); - } elsif ($se_or_pe_flag eq "SE") { - next if ($r1sam_flag == 4); - } - my $frag_strand; -### This section is for only properly paired reads - if ($se_or_pe_flag eq "PE"){ - if ($r1sam_flag == 99 || $r1sam_flag == 355) { - $frag_strand = "-"; - } elsif ($r1sam_flag == 83 || $r1sam_flag == 339) { - $frag_strand = "+"; - } elsif ($r1sam_flag == 147 || $r1sam_flag == 403) { - $frag_strand = "-"; - @tmp_r1 = split(/\t/,$r2); - @tmp_r2 = split(/\t/,$r1); - } elsif ($r1sam_flag == 163 || $r1sam_flag == 419) { - $frag_strand = "+"; - @tmp_r1 = split(/\t/,$r2); - @tmp_r2 = split(/\t/,$r1); - } else { - next; - print STDERR "R1 strand error $r1sam_flag\n"; - } - my @read_name = split(/\:/,$tmp_r1[0]); - my $randommer = $read_name[0]; - my $first2rand = substr($randommer,0,2); - print { $filehandles{$first2rand} } "".$r1."\n".$r2."\n"; - - - - } elsif ($se_or_pe_flag eq "SE") { - if ($r1sam_flag == 16 || $r1sam_flag == 272) { - $frag_strand = "-"; - } elsif ($r1sam_flag eq "0" || $r1sam_flag == 256) { - $frag_strand = "+"; - } else { - next; - print STDERR "R1 strand error $r1sam_flag\n"; - } - - my @read_name = split(/\_/,$tmp_r1[0]); - my $randommer = pop(@read_name); - my $first2rand = substr($randommer,0,2); - print { $filehandles{$first2rand} } "".$r1."\n"; - - } -### - - # 77 = R1, unmapped - # 141 = R2, unmapped - # 99 = R1, mapped, fwd strand --- frag on rev strand -> 355 = not primary - # 147 = R2, mapped, rev strand -- frag on rev strand -> 403 = not primary - - # 101 = R1 unmapped, R2 mapped rev strand -- frag on rev strand - # 73 = R1, mapped, fwd strand --- frag on rev strand - # 153 = R2 mapped (R1 unmapped), rev strand -- frag on rev strand - # 133 = R2 unmapped, R1 mapped fwd strand -- frag on rev strand - - # 83 = R1, mapped, rev strand --- frag on fwd strand -> 339 = not primary - # 163 = R2, mapped, fwd strand -- frag on fwd strand -> 419 = not primary - - # 69 = R1 unmapped, R2 mapped fwd strand -- frag on fwd strand - # 89 = R1 mapped rev strand, R2 unmapped -- frag on fwd strand - # 137 = R2 mapped (R1 unmapped), fwd strand -- frag on fwd strand - # 165 = R2 unmapped, R1 rev strand -- frag on fwd strand - - - -} -close(F); diff --git a/bin/python/_perl_compat.py b/bin/python/_perl_compat.py deleted file mode 100755 index eb4776a..0000000 --- a/bin/python/_perl_compat.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env python3 -from __future__ import annotations - -import subprocess -import sys -from pathlib import Path - - -def run_perl_script(perl_script: Path, argv: list[str]) -> int: - cmd = ['perl', str(perl_script), *argv] - completed = subprocess.run(cmd) - return completed.returncode - - -def resolve_perl_script(perl_basename: str) -> Path: - here = Path(__file__).resolve().parent - repo = here.parents[1] - return repo / 'bin' / 'perl' / perl_basename - - -def main(perl_basename: str) -> int: - perl_script = resolve_perl_script(perl_basename) - if not perl_script.exists(): - print(f'Could not find perl script: {perl_script}', file=sys.stderr) - return 2 - return run_perl_script(perl_script, sys.argv[1:]) diff --git a/bin/python/duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.py b/bin/python/duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.py deleted file mode 100755 index a91c93b..0000000 --- a/bin/python/duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python3 -from __future__ import annotations - -from _perl_compat import main - - -if __name__ == '__main__': - raise SystemExit( - main('duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.pl') - ) diff --git a/bin/python/parse_bowtie2_output_realtime_includemultifamily_PE.py b/bin/python/parse_bowtie2_output_realtime_includemultifamily_PE.py deleted file mode 100755 index 7957004..0000000 --- a/bin/python/parse_bowtie2_output_realtime_includemultifamily_PE.py +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env python3 -from __future__ import annotations - -from _perl_compat import main - - -if __name__ == '__main__': - raise SystemExit(main('parse_bowtie2_output_realtime_includemultifamily_PE.pl')) diff --git a/bin/python/parse_bowtie2_output_realtime_includemultifamily_SE.py b/bin/python/parse_bowtie2_output_realtime_includemultifamily_SE.py deleted file mode 100755 index 838b2ec..0000000 --- a/bin/python/parse_bowtie2_output_realtime_includemultifamily_SE.py +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env python3 -from __future__ import annotations - -from _perl_compat import main - - -if __name__ == '__main__': - raise SystemExit(main('parse_bowtie2_output_realtime_includemultifamily_SE.pl')) diff --git a/changelog.md b/changelog.md index 28b7bd6..050d5a7 100644 --- a/changelog.md +++ b/changelog.md @@ -48,3 +48,6 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) - Generates repeat-mapped rmDup and preRmDup SAM-like files mapping reads to repeat element families. - README detailing methods and output explanations + +## codex/python-conversion +- removed legacy NOTES file; branch instructions now centralized in README.md diff --git a/config/config.yaml b/config/config.yaml index 7880e4d..111d5f1 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -1,5 +1,6 @@ mini: source_sam_gz: tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz - split_manifest: tests/fixtures/mini/expected/split.perl.manifest.tsv + split_manifest: tests/fixtures/mini/expected/split.expected.manifest.tsv merge_input_1: tests/fixtures/mini/source/merge_input_1.parsed_v2.txt merge_input_2: tests/fixtures/mini/source/merge_input_2.parsed_v2.txt + merge_expected: tests/fixtures/mini/expected/merged.expected.parsed diff --git a/cwl/calculate_fold_change_from_parsed_files.cwl b/cwl/calculate_fold_change_from_parsed_files.cwl deleted file mode 100755 index 9ed2203..0000000 --- a/cwl/calculate_fold_change_from_parsed_files.cwl +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env cwltool - -cwlVersion: v1.0 - -class: CommandLineTool - -requirements: - - class: InlineJavascriptRequirement - -hints: - - class: DockerRequirement - dockerPull: brianyee/repetitive_element_mapping:1.0.0 - -baseCommand: [calculate_fold_change_from_parsed_files.py] - -inputs: - - ip_parsed_file: - type: File - inputBinding: - prefix: --ip_parsed - position: 1 - - input_parsed_file: - type: File - inputBinding: - prefix: --input_parsed - position: 2 - - out_file_nopipes: - type: string - inputBinding: - position: 3 - prefix: --out_file_nopipes - valueFrom: | - ${ - if (inputs.out_file_nopipes == "") { - return inputs.ip_parsed_file.nameroot + ".nopipes.tsv"; - } - else { - return inputs.out_file_nopipes; - } - } - default: "" - - out_file_withpipes: - type: string - inputBinding: - position: 4 - prefix: --out_file_withpipes - valueFrom: | - ${ - if (inputs.out_file_nopipes == "") { - return inputs.ip_parsed_file.nameroot + ".withpipes.tsv"; - } - else { - return inputs.out_file_withpipes; - } - } - default: "" - -outputs: - - out_file_nopipes_file: - type: File - outputBinding: - glob: | - ${ - if (inputs.out_file_nopipes == "") { - return inputs.ip_parsed_file.nameroot + ".nopipes.tsv"; - } - else { - return inputs.out_file_nopipes; - } - } - - out_file_withpipes_file: - type: File - outputBinding: - glob: | - ${ - if (inputs.out_file_withpipes == "") { - return inputs.ip_parsed_file.nameroot + ".withpipes.tsv"; - } - else { - return inputs.out_file_withpipes; - } - } \ No newline at end of file diff --git a/cwl/combine.cwl b/cwl/combine.cwl deleted file mode 100755 index cb9a3f2..0000000 --- a/cwl/combine.cwl +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env cwltool - -cwlVersion: v1.0 - -class: CommandLineTool - -requirements: - - class: InlineJavascriptRequirement - - class: InitialWorkDirRequirement - listing: $(inputs.files) - -hints: - - class: DockerRequirement - dockerPull: brianyee/repetitive_element_mapping:1.0.0 - -baseCommand: [merge_multiple_parsed_files.simplified_20191022.pl] - -inputs: - - outputFile: - type: string - inputBinding: - position: 1 - - files: - type: File[] - inputBinding: - position: 2 - -outputs: - - output: - type: File - outputBinding: - glob: $(inputs.outputFile) - - diff --git a/cwl/concatenate.cwl b/cwl/concatenate.cwl deleted file mode 100755 index 67b1b13..0000000 --- a/cwl/concatenate.cwl +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env cwltool - -cwlVersion: v1.0 - -class: CommandLineTool - -baseCommand: [cat] - -inputs: - - files: - type: File[] - inputBinding: - position: 1 - - concatenated_output: - type: string - -stdout: $(inputs.concatenated_output) - -outputs: - - concatenated: - type: File - outputBinding: - glob: $(inputs.concatenated_output) diff --git a/cwl/deduplicate.cwl b/cwl/deduplicate.cwl deleted file mode 100755 index c07e8e6..0000000 --- a/cwl/deduplicate.cwl +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env cwltool - -cwlVersion: v1.0 - -class: CommandLineTool - -requirements: - - class: ResourceRequirement - ramMin: 32000 - -hints: - - class: DockerRequirement - dockerPull: brianyee/repetitive_element_mapping:1.0.0 - -baseCommand: [duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.pl] - -inputs: - - repFamilySam: - type: File - inputBinding: - position: 1 - label: "input" - doc: "input sam file" - - rmRepSam: - type: File - inputBinding: - position: 2 - label: "rmRep.sam alignment file" - doc: "rmRep sam alignment file" - - se_or_pe: - type: string - inputBinding: - position: 3 - doc: "Either PE or SE (uppercase required)" - - gencodeGTF: - type: File - inputBinding: - position: 4 - label: "gencode GTF File" - doc: "gencode GTF File" - - gencodeTableBrowser: - type: File - inputBinding: - position: 5 - label: "gencode GTF file in UCSC table browser format" - doc: "gencode GTF file in UCSC table browser format" - - repMaskBedFile: - type: File - inputBinding: - position: 6 - label: "repeatmasker bedfile" - doc: "bedfile of repeat regions" - - fileList1: - type: File - inputBinding: - position: 7 - doc: "tsv with 5 fields: ENST/ENSG/name/chrom/genelist.file" - -outputs: - - deduplicatedRmDupSam: - type: File - outputBinding: - glob: "*combined_w_uniquemap.rmDup.sam" - label: "combined unique mapping + rep element mapping sam" - - deduplicatedPreRmDupSam: - type: File - outputBinding: - glob: "*combined_w_uniquemap.prermDup.sam" - label: "combined unique mapping + rep element mapping sam before rmdup" - - parsedFile: - type: File - outputBinding: - glob: "*.parsed_v2.20201210.txt" - label: "combined unique mapping + rep element mapping sam" - - doneFile: - type: File - outputBinding: - glob: "*.done" - label: "done file" \ No newline at end of file diff --git a/cwl/getpair.cwl b/cwl/getpair.cwl deleted file mode 100755 index e68440c..0000000 --- a/cwl/getpair.cwl +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env cwltool - -cwlVersion: v1.0 - -class: ExpressionTool - -requirements: - - class: InlineJavascriptRequirement - - class: ResourceRequirement - ramMin: 1000 - -inputs: - - prefix: - type: string - doc: 'First two letters of barcode ID (AA, AC, ..., NN)' - rep_s: - type: File[] - doc: 'List of repetitive element-mapped sam-like files, split by prefix' - rmrep_s: - type: File[] - doc: 'List of remove-rep BAM files, split by prefix' - -outputs: - - prefixrep: - type: File - prefixrmrep: - type: File - -expression: | - ${ - var prefix = inputs.prefix; - var rep_s = inputs.rep_s; - var rmrep_s = inputs.rmrep_s; - - var prefixrep = ''; - var prefixrmrep = ''; - - for (var i = 0; i < rep_s.length; i++) { - if (rep_s[i].basename.indexOf(prefix) == 0) { - prefixrep = rep_s[i]; - } - if (rmrep_s[i].basename.indexOf(prefix) == 0) { - prefixrmrep = rmrep_s[i]; - } - } - return {'prefixrep': prefixrep, 'prefixrmrep': prefixrmrep} - } - diff --git a/cwl/gzip.cwl b/cwl/gzip.cwl deleted file mode 100755 index 4748cd5..0000000 --- a/cwl/gzip.cwl +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env cwltool - -cwlVersion: v1.0 - -class: CommandLineTool - -baseCommand: [gzip] - -inputs: - - stdout: - type: boolean - inputBinding: - position: 1 - prefix: -c - default: true - - input: - type: File - inputBinding: - position: 2 - -stdout: $(inputs.input.basename).gz - -outputs: - - gzipped: - type: File - outputBinding: - glob: $(inputs.input.basename).gz diff --git a/cwl/map_repetitive_elements_pe.cwl b/cwl/map_repetitive_elements_pe.cwl deleted file mode 100755 index 3391f22..0000000 --- a/cwl/map_repetitive_elements_pe.cwl +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/env cwltool - -cwlVersion: v1.0 - -class: CommandLineTool - -requirements: - - class: InlineJavascriptRequirement - - class: ResourceRequirement - coresMin: 8 - ramMin: 16000 - -hints: - - class: DockerRequirement - dockerPull: brianyee/repetitive_element_mapping:1.0.0 - -# # wrapped perl script for parsing bowtie results inline -baseCommand: [parse_bowtie2_output_realtime_includemultifamily_PE.pl] - - -inputs: - - - #read1 trimmed fastq - read1: - type: File - inputBinding: - position: 1 - - # read2 trimmed fastq" - read2: - type: File - inputBinding: - position: 2 - - bowtie2_db: - type: Directory - - bowtie2_prefix: - type: string - - output_file: - default: "" - type: string - inputBinding: - position: 4 - valueFrom: | - ${ - if (inputs.output_file == "") { - return inputs.read1.nameroot + ".Rep.sam"; - } - else { - return inputs.output_file; - } - } - file_list_file: - type: File - inputBinding: - position: 5 - -arguments: - - valueFrom: $(inputs.bowtie2_db.path + "//" + inputs.bowtie2_prefix) - position: 3 - shellQuote: false - -outputs: - - rep_sam: - type: File - outputBinding: - glob: | - ${ - if (inputs.output_file == "") { - return inputs.read1.nameroot + ".Rep.sam"; - } - else { - return inputs.output_file; - } - } - diff --git a/cwl/map_repetitive_elements_se.cwl b/cwl/map_repetitive_elements_se.cwl deleted file mode 100755 index e386316..0000000 --- a/cwl/map_repetitive_elements_se.cwl +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env cwltool - -cwlVersion: v1.0 - -class: CommandLineTool - -requirements: - - class: InlineJavascriptRequirement - - class: ResourceRequirement - coresMin: 8 - ramMin: 16000 - -hints: - - class: DockerRequirement - dockerPull: brianyee/repetitive_element_mapping:1.0.0 - -# # wrapped perl script for parsing bowtie results inline -baseCommand: [parse_bowtie2_output_realtime_includemultifamily_SE.pl] - - -inputs: - - - #read1 trimmed fastq - read1: - type: File - inputBinding: - position: 1 - - bowtie2_db: - type: Directory - - bowtie2_prefix: - type: string - - output_file: - default: "" - type: string - inputBinding: - position: 3 - valueFrom: | - ${ - if (inputs.output_file == "") { - return inputs.read1.nameroot + ".Rep.sam"; - } - else { - return inputs.output_file; - } - } - file_list_file: - type: File - inputBinding: - position: 4 - -arguments: - - valueFrom: $(inputs.bowtie2_db.path + "//" + inputs.bowtie2_prefix) - position: 2 - shellQuote: false - -outputs: - - rep_sam: - type: File - outputBinding: - glob: | - ${ - if (inputs.output_file == "") { - return inputs.read1.nameroot + ".Rep.sam"; - } - else { - return inputs.output_file; - } - } diff --git a/cwl/splitbam.cwl b/cwl/splitbam.cwl deleted file mode 100755 index 445fc62..0000000 --- a/cwl/splitbam.cwl +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env cwltool - -cwlVersion: v1.0 - -class: CommandLineTool - -hints: - - class: DockerRequirement - dockerPull: brianyee/repetitive_element_mapping:1.0.0 - -baseCommand: [split_bam_to_subfiles_SEorPE.pl] - -requirements: - - class: InlineJavascriptRequirement - -inputs: - - sam_file: - type: File - inputBinding: - position: 1 - se_or_pe: - type: string - inputBinding: - position: 2 - doc: "Either PE or SE (uppercase required)" - -outputs: - - repsam_s: - type: - type: array - items: File - outputBinding: - glob: "*.tmp" diff --git a/cwl/wf_ecliprepmap_pe.cwl b/cwl/wf_ecliprepmap_pe.cwl deleted file mode 100755 index b248163..0000000 --- a/cwl/wf_ecliprepmap_pe.cwl +++ /dev/null @@ -1,278 +0,0 @@ -#!/usr/bin/env cwltool - -cwlVersion: v1.0 -class: Workflow - -requirements: - - class: SubworkflowFeatureRequirement - - class: MultipleInputFeatureRequirement - - class: InlineJavascriptRequirement - - class: StepInputExpressionRequirement - -inputs: - - barcode1r1FastqGz: - type: File - barcode1r2FastqGz: - type: File - barcode1rmRepBam: - type: File - - barcode2r1FastqGz: - type: File - barcode2r2FastqGz: - type: File - barcode2rmRepBam: - type: File - - barcode1Inputr1FastqGz: - type: File - barcode1Inputr2FastqGz: - type: File - barcode1InputrmRepBam: - type: File - - bowtie2_db: - type: Directory - bowtie2_prefix: - type: string - fileListFile1: - type: File - - gencodeGTF: - type: File - gencodeTableBrowser: - type: File - repMaskBEDFile: - type: File - - prefixes: - type: string[] - default: [ - "AA","AC","AG","AT","AN", - "CA","CC","CG","CT","CN", - "GA","GC","GG","GT","GN", - "TA","TC","TG","TT","TN", - "NA","NC","NG","NT","NN" - ] - se_or_pe: - type: string - default: PE - -outputs: - - - ### PRE RMDUPED SAM FILE FINAL OUTPUTS ### - - - output_ip_concatenated_pre_rmDup_sam_file: - type: File - outputSource: step_gzip_preRmDup/gzipped - output_input_concatenated_pre_rmDup_sam_file: - type: File - outputSource: step_ecliprepmap_input/output_concatenated_preRmDup_sam_file - - - ### RMDUPED SAM FILE FINAL OUTPUTS ### - - output_barcode1_concatenated_rmDup_sam_file: - type: File - outputSource: step_gzip_rmDup/gzipped - output_input_concatenated_rmDup_sam_file: - type: File - outputSource: step_ecliprepmap_input/output_concatenated_rmDup_sam_file - - - ### FINAL PARSED STATISTICS FILES ### - - output_ip_parsed: - type: File - outputSource: step_combine_parsed/output - output_input_parsed: - type: File - outputSource: step_ecliprepmap_input/output_combined_parsed_file - output_nopipes: - type: File - outputSource: step_calculate_fold_change_from_parsed_files/out_file_nopipes_file - output_withpipes: - type: File - outputSource: step_calculate_fold_change_from_parsed_files/out_file_withpipes_file - -steps: - -########################################################################### -# Repeat-map paired-end IP (2 barcodes) -########################################################################### - - step_ecliprepmap_barcode1: - run: wf_ecliprepmap_pe_1barcode.cwl - in: - dataset: - source: barcode1r1FastqGz - valueFrom: | - ${ - return self.nameroot + ".barcode1"; - } - r1FastqGz: barcode1r1FastqGz - r2FastqGz: barcode1r2FastqGz - rmRepBam: barcode1rmRepBam - bowtie2_db: bowtie2_db - bowtie2_prefix: bowtie2_prefix - fileListFile1: fileListFile1 - gencodeGTF: gencodeGTF - gencodeTableBrowser: gencodeTableBrowser - repMaskBEDFile: repMaskBEDFile - prefixes: prefixes - se_or_pe: se_or_pe - out: - - output_repeat_mapped_sam_file - - output_rmDup_sam_files - - output_pre_rmDup_sam_files - - output_concatenated_rmDup_sam_file - - output_concatenated_preRmDup_sam_file - - output_parsed_files - - output_combined_parsed_file - - step_ecliprepmap_barcode2: - run: wf_ecliprepmap_pe_1barcode.cwl - in: - dataset: - source: barcode2r1FastqGz - valueFrom: | - ${ - return self.nameroot + ".barcode2"; - } - r1FastqGz: barcode2r1FastqGz - r2FastqGz: barcode2r2FastqGz - rmRepBam: barcode2rmRepBam - bowtie2_db: bowtie2_db - bowtie2_prefix: bowtie2_prefix - fileListFile1: fileListFile1 - gencodeGTF: gencodeGTF - gencodeTableBrowser: gencodeTableBrowser - repMaskBEDFile: repMaskBEDFile - prefixes: prefixes - se_or_pe: se_or_pe - out: - - output_repeat_mapped_sam_file - - output_rmDup_sam_files - - output_pre_rmDup_sam_files - - output_concatenated_rmDup_sam_file - - output_concatenated_preRmDup_sam_file - - output_parsed_files - - output_combined_parsed_file - -########################################################################### -# Repeat-map input sample (1 sample) -########################################################################### - - step_ecliprepmap_input: - run: wf_ecliprepmap_pe_1barcode.cwl - in: - dataset: - source: barcode1Inputr1FastqGz - valueFrom: | - ${ - return self.nameroot + ".input"; - } - r1FastqGz: barcode1Inputr1FastqGz - r2FastqGz: barcode1Inputr2FastqGz - bowtie2_db: bowtie2_db - bowtie2_prefix: bowtie2_prefix - fileListFile1: fileListFile1 - rmRepBam: barcode1InputrmRepBam - gencodeGTF: gencodeGTF - gencodeTableBrowser: gencodeTableBrowser - repMaskBEDFile: repMaskBEDFile - prefixes: prefixes - se_or_pe: se_or_pe - out: - - output_repeat_mapped_sam_file - - output_rmDup_sam_files - - output_pre_rmDup_sam_files - - output_concatenated_rmDup_sam_file - - output_concatenated_preRmDup_sam_file - - output_parsed_files - - output_combined_parsed_file - -########################################################################### -# Combine parsed files and calculate fold change/entropy -########################################################################### - - step_combine_parsed: - doc: "concatenates all final statistics using custom perl script" - run: combine.cwl - in: - files: - source: [ - step_ecliprepmap_barcode1/output_parsed_files, - step_ecliprepmap_barcode2/output_parsed_files - ] - linkMerge: merge_flattened - outputFile: - source: barcode1r1FastqGz - valueFrom: | - ${ - return self.nameroot + ".combined.parsed"; - } - out: - - output - - step_calculate_fold_change_from_parsed_files: - run: calculate_fold_change_from_parsed_files.cwl - in: - ip_parsed_file: step_combine_parsed/output - input_parsed_file: step_ecliprepmap_input/output_combined_parsed_file - out: - - out_file_nopipes_file - - out_file_withpipes_file - - step_concatenate_rmDup: - doc: "concatenates all rmdup sam files using cat" - run: concatenate.cwl - in: - files: - source: - - step_ecliprepmap_barcode1/output_rmDup_sam_files - - step_ecliprepmap_barcode2/output_rmDup_sam_files - linkMerge: merge_flattened - concatenated_output: - source: barcode1r1FastqGz - valueFrom: | - ${ - return self.nameroot + ".rmDup.sam"; - } - out: - - concatenated - - step_gzip_rmDup: - run: gzip.cwl - in: - input: step_concatenate_rmDup/concatenated - out: - - gzipped - - step_concatenate_pre_rmDup: - doc: "concatenates all pre-rmduped sam files using cat" - run: concatenate.cwl - in: - files: - source: - - step_ecliprepmap_barcode1/output_pre_rmDup_sam_files - - step_ecliprepmap_barcode2/output_pre_rmDup_sam_files - linkMerge: merge_flattened - concatenated_output: - source: barcode1r1FastqGz - valueFrom: | - ${ - return self.nameroot + ".preRmDup.sam"; - } - out: - - concatenated - - step_gzip_preRmDup: - run: gzip.cwl - in: - input: step_concatenate_pre_rmDup/concatenated - out: - - gzipped diff --git a/cwl/wf_ecliprepmap_pe_1barcode.cwl b/cwl/wf_ecliprepmap_pe_1barcode.cwl deleted file mode 100755 index 0a67952..0000000 --- a/cwl/wf_ecliprepmap_pe_1barcode.cwl +++ /dev/null @@ -1,213 +0,0 @@ -#!/usr/bin/env cwltool - -cwlVersion: v1.0 -class: Workflow - -requirements: - - class: ScatterFeatureRequirement - - class: InlineJavascriptRequirement - - class: StepInputExpressionRequirement - -inputs: - - dataset: - type: string - - r1FastqGz: - doc: "Read1 after trimming inline barcodes" - type: File - r2FastqGz: - doc: "Read2 after trimming inline barcodes" - type: File - rmRepBam: - doc: "BAM file after removing repetitive elements (after 2nd STAR mapping)" - type: File - - bowtie2_db: - type: Directory - bowtie2_prefix: - type: string - - fileListFile1: - type: File - - gencodeGTF: - type: File - gencodeTableBrowser: - type: File - repMaskBEDFile: - type: File - - prefixes: - type: string[] - default: [ - "AA","AC","AG","AT","AN", - "CA","CC","CG","CT","CN", - "GA","GC","GG","GT","GN", - "TA","TC","TG","TT","TN", - "NA","NC","NG","NT","NN" - ] - - se_or_pe: - type: string - default: PE - -outputs: - - output_repeat_mapped_sam_file: - doc: "first mapped SAM-like file to bowtie2" - type: File - outputSource: step_map_repetitive_elements/rep_sam - - output_rmDup_sam_files: - doc: "duplicate removed SAM-like files, one for each barcode" - type: File[] - outputSource: step_deduplicate/deduplicatedRmDupSam - - output_pre_rmDup_sam_files: - doc: "pre-duplicate removed SAM-like files, one for each barcode" - type: File[] - outputSource: step_deduplicate/deduplicatedPreRmDupSam - - output_concatenated_rmDup_sam_file: - doc: "Final remove duplicate SAM-like file" - type: File - outputSource: step_gzip_rmDup/gzipped - - output_concatenated_preRmDup_sam_file: - doc: "Final duplicated SAM-like file" - type: File - outputSource: step_gzip_preRmDup/gzipped - - output_parsed_files: - doc: "Output file containing read stats for each UMI prefix" - type: File[] - outputSource: step_deduplicate/parsedFile - - output_combined_parsed_file: - doc: "Combined output file containing read stats for all UMI prefixes" - type: File - outputSource: step_combine_parsed/output - -steps: - - step_map_repetitive_elements: - run: map_repetitive_elements_pe.cwl - in: - read1: r1FastqGz - read2: r2FastqGz - bowtie2_db: bowtie2_db - bowtie2_prefix: bowtie2_prefix - file_list_file: fileListFile1 - out: - - rep_sam - - step_splitbam_repsam: - run: splitbam.cwl - in: - sam_file: step_map_repetitive_elements/rep_sam - se_or_pe: se_or_pe - out: - - repsam_s - - step_splitbam_rmrepbam: - run: splitbam.cwl - in: - sam_file: rmRepBam - se_or_pe: se_or_pe - out: - - repsam_s - - step_getpair: - doc: | - Given a prefix (AA, AC, ... NN), return the rep and rmrep pairs - belonging to each prefix. Each file contains reads whose first 2nt - of its umi matches the prefix. - run: getpair.cwl - in: - rep_s: step_splitbam_repsam/repsam_s - rmrep_s: step_splitbam_rmrepbam/repsam_s - prefix: prefixes - scatter: prefix - out: - - prefixrep - - prefixrmrep - - step_deduplicate: - doc: | - Takes the repeat-mapped sam-like file, and the remove-replicate - bam file, and uses UMI information to remove PCR duplicates. - run: deduplicate.cwl - in: - repFamilySam: step_getpair/prefixrep - rmRepSam: step_getpair/prefixrmrep - se_or_pe: se_or_pe - gencodeGTF: gencodeGTF - gencodeTableBrowser: gencodeTableBrowser - repMaskBedFile: repMaskBEDFile - fileList1: fileListFile1 - - scatter: [repFamilySam, rmRepSam] - scatterMethod: dotproduct - - out: - - deduplicatedRmDupSam - - deduplicatedPreRmDupSam - - parsedFile - - doneFile - - step_concatenate_rmDup: - doc: "concatenates all rmdup sam files using cat" - run: concatenate.cwl - in: - files: step_deduplicate/deduplicatedRmDupSam - concatenated_output: - source: dataset - valueFrom: | - ${ - return self + ".rmDup.sam"; - } - out: - - concatenated - - step_concatenate_preRmDup: - doc: "concatenates all pre-rmduped sam files using cat" - run: concatenate.cwl - in: - files: step_deduplicate/deduplicatedPreRmDupSam - concatenated_output: - source: dataset - valueFrom: | - ${ - return self + ".preRmDup.sam"; - } - out: - - concatenated - - step_gzip_rmDup: - run: gzip.cwl - in: - input: step_concatenate_rmDup/concatenated - out: - - gzipped - - step_gzip_preRmDup: - run: gzip.cwl - in: - input: step_concatenate_preRmDup/concatenated - out: - - gzipped - - step_combine_parsed: - doc: "concatenates all final statistics using custom perl script" - run: combine.cwl - in: - files: step_deduplicate/parsedFile - outputFile: - source: dataset - valueFrom: | - ${ - return self + ".parsed"; - } - out: - - output diff --git a/cwl/wf_ecliprepmap_se.cwl b/cwl/wf_ecliprepmap_se.cwl deleted file mode 100755 index 1506207..0000000 --- a/cwl/wf_ecliprepmap_se.cwl +++ /dev/null @@ -1,170 +0,0 @@ -#!/usr/bin/env cwltool - -cwlVersion: v1.0 -class: Workflow - -requirements: - - class: SubworkflowFeatureRequirement - - class: MultipleInputFeatureRequirement - - class: InlineJavascriptRequirement - - class: StepInputExpressionRequirement - -inputs: - - dataset: - type: string - - barcode1r1FastqGz: - type: File - barcode1rmRepBam: - type: File - - barcode1Inputr1FastqGz: - type: File - barcode1InputrmRepBam: - type: File - - bowtie2_db: - type: Directory - bowtie2_prefix: - type: string - fileListFile1: - type: File - - gencodeGTF: - type: File - gencodeTableBrowser: - type: File - repMaskBEDFile: - type: File - - prefixes: - type: string[] - default: [ - "AA","AC","AG","AT","AN", - "CA","CC","CG","CT","CN", - "GA","GC","GG","GT","GN", - "TA","TC","TG","TT","TN", - "NA","NC","NG","NT","NN" - ] - se_or_pe: - type: string - default: SE - -outputs: - - - ### PRE RMDUPED SAM FILE FINAL OUTPUTS ### - - - output_ip_concatenated_pre_rmDup_sam_file: - type: File - outputSource: step_ecliprepmap_barcode1/output_concatenated_preRmDup_sam_file - output_input_concatenated_pre_rmDup_sam_file: - type: File - outputSource: step_ecliprepmap_input/output_concatenated_preRmDup_sam_file - - - ### RMDUPED SAM FILE FINAL OUTPUTS ### - - output_barcode1_concatenated_rmDup_sam_file: - type: File - outputSource: step_ecliprepmap_barcode1/output_concatenated_rmDup_sam_file - output_input_concatenated_rmDup_sam_file: - type: File - outputSource: step_ecliprepmap_input/output_concatenated_rmDup_sam_file - - - ### FINAL PARSED STATISTICS FILES ### - - output_ip_parsed: - type: File - outputSource: step_ecliprepmap_barcode1/output_combined_parsed_file - output_input_parsed: - type: File - outputSource: step_ecliprepmap_input/output_combined_parsed_file - output_nopipes: - type: File - outputSource: step_calculate_fold_change_from_parsed_files/out_file_nopipes_file - output_withpipes: - type: File - outputSource: step_calculate_fold_change_from_parsed_files/out_file_withpipes_file - -steps: - -########################################################################### -# Repeat-map single-end IP (1 sample) -########################################################################### - - step_ecliprepmap_barcode1: - run: wf_ecliprepmap_se_1barcode.cwl - in: - dataset: - source: barcode1r1FastqGz - valueFrom: | - ${ - return self.nameroot + ".barcode1"; - } - r1FastqGz: barcode1r1FastqGz - rmRepBam: barcode1rmRepBam - bowtie2_db: bowtie2_db - bowtie2_prefix: bowtie2_prefix - fileListFile1: fileListFile1 - gencodeGTF: gencodeGTF - gencodeTableBrowser: gencodeTableBrowser - repMaskBEDFile: repMaskBEDFile - prefixes: prefixes - se_or_pe: se_or_pe - out: - - output_repeat_mapped_sam_file - - output_rmDup_sam_files - - output_pre_rmDup_sam_files - - output_concatenated_rmDup_sam_file - - output_concatenated_preRmDup_sam_file - - output_parsed_files - - output_combined_parsed_file - -########################################################################### -# Repeat-map input sample (1 sample) -########################################################################### - - step_ecliprepmap_input: - run: wf_ecliprepmap_se_1barcode.cwl - in: - dataset: - source: barcode1Inputr1FastqGz - valueFrom: | - ${ - return self.nameroot + ".input"; - } - r1FastqGz: barcode1Inputr1FastqGz - bowtie2_db: bowtie2_db - bowtie2_prefix: bowtie2_prefix - fileListFile1: fileListFile1 - rmRepBam: barcode1InputrmRepBam - gencodeGTF: gencodeGTF - gencodeTableBrowser: gencodeTableBrowser - repMaskBEDFile: repMaskBEDFile - prefixes: prefixes - se_or_pe: se_or_pe - out: - - output_repeat_mapped_sam_file - - output_rmDup_sam_files - - output_pre_rmDup_sam_files - - output_concatenated_rmDup_sam_file - - output_concatenated_preRmDup_sam_file - - output_parsed_files - - output_combined_parsed_file - -########################################################################### -# Combine parsed files and calculate fold change/entropy -########################################################################### - - step_calculate_fold_change_from_parsed_files: - run: calculate_fold_change_from_parsed_files.cwl - in: - ip_parsed_file: step_ecliprepmap_barcode1/output_combined_parsed_file - input_parsed_file: step_ecliprepmap_input/output_combined_parsed_file - out: - - out_file_nopipes_file - - out_file_withpipes_file diff --git a/cwl/wf_ecliprepmap_se_1barcode.cwl b/cwl/wf_ecliprepmap_se_1barcode.cwl deleted file mode 100755 index ad37d49..0000000 --- a/cwl/wf_ecliprepmap_se_1barcode.cwl +++ /dev/null @@ -1,209 +0,0 @@ -#!/usr/bin/env cwltool - -cwlVersion: v1.0 -class: Workflow - -requirements: - - class: ScatterFeatureRequirement - - class: InlineJavascriptRequirement - - class: StepInputExpressionRequirement - -inputs: - - dataset: - type: string - - r1FastqGz: - doc: "Read1 after trimming inline barcodes" - type: File - rmRepBam: - doc: "BAM file after removing repetitive elements (after 2nd STAR mapping)" - type: File - - bowtie2_db: - type: Directory - bowtie2_prefix: - type: string - - fileListFile1: - type: File - - gencodeGTF: - type: File - gencodeTableBrowser: - type: File - repMaskBEDFile: - type: File - - prefixes: - type: string[] - default: [ - "AA","AC","AG","AT","AN", - "CA","CC","CG","CT","CN", - "GA","GC","GG","GT","GN", - "TA","TC","TG","TT","TN", - "NA","NC","NG","NT","NN" - ] - - se_or_pe: - type: string - default: SE - -outputs: - - output_repeat_mapped_sam_file: - doc: "first mapped SAM-like file to bowtie2" - type: File - outputSource: step_map_repetitive_elements/rep_sam - - output_rmDup_sam_files: - doc: "duplicate removed SAM-like files, one for each barcode" - type: File[] - outputSource: step_deduplicate/deduplicatedRmDupSam - - output_pre_rmDup_sam_files: - doc: "pre-duplicate removed SAM-like files, one for each barcode" - type: File[] - outputSource: step_deduplicate/deduplicatedPreRmDupSam - - output_concatenated_rmDup_sam_file: - doc: "Final remove duplicate SAM-like file" - type: File - outputSource: step_gzip_rmDup/gzipped - - output_concatenated_preRmDup_sam_file: - doc: "Final duplicated SAM-like file" - type: File - outputSource: step_gzip_preRmDup/gzipped - - output_parsed_files: - doc: "Output file containing read stats for each UMI prefix" - type: File[] - outputSource: step_deduplicate/parsedFile - - output_combined_parsed_file: - doc: "Combined output file containing read stats for all UMI prefixes" - type: File - outputSource: step_combine_parsed/output - -steps: - - step_map_repetitive_elements: - run: map_repetitive_elements_se.cwl - in: - read1: r1FastqGz - bowtie2_db: bowtie2_db - bowtie2_prefix: bowtie2_prefix - file_list_file: fileListFile1 - out: - - rep_sam - - step_splitbam_repsam: - run: splitbam.cwl - in: - sam_file: step_map_repetitive_elements/rep_sam - se_or_pe: se_or_pe - out: - - repsam_s - - step_splitbam_rmrepbam: - run: splitbam.cwl - in: - sam_file: rmRepBam - se_or_pe: se_or_pe - out: - - repsam_s - - step_getpair: - doc: | - Given a prefix (AA, AC, ... NN), return the rep and rmrep pairs - belonging to each prefix. Each file contains reads whose first 2nt - of its umi matches the prefix. - run: getpair.cwl - in: - rep_s: step_splitbam_repsam/repsam_s - rmrep_s: step_splitbam_rmrepbam/repsam_s - prefix: prefixes - scatter: prefix - out: - - prefixrep - - prefixrmrep - - step_deduplicate: - doc: | - Takes the repeat-mapped sam-like file, and the remove-replicate - bam file, and uses UMI information to remove PCR duplicates. - run: deduplicate.cwl - in: - repFamilySam: step_getpair/prefixrep - rmRepSam: step_getpair/prefixrmrep - se_or_pe: se_or_pe - gencodeGTF: gencodeGTF - gencodeTableBrowser: gencodeTableBrowser - repMaskBedFile: repMaskBEDFile - fileList1: fileListFile1 - - scatter: [repFamilySam, rmRepSam] - scatterMethod: dotproduct - - out: - - deduplicatedRmDupSam - - deduplicatedPreRmDupSam - - parsedFile - - doneFile - - step_concatenate_rmDup: - doc: "concatenates all rmdup sam files using cat" - run: concatenate.cwl - in: - files: step_deduplicate/deduplicatedRmDupSam - concatenated_output: - source: dataset - valueFrom: | - ${ - return self + ".rmDup.sam"; - } - out: - - concatenated - - step_concatenate_preRmDup: - doc: "concatenates all pre-rmduped sam files using cat" - run: concatenate.cwl - in: - files: step_deduplicate/deduplicatedPreRmDupSam - concatenated_output: - source: dataset - valueFrom: | - ${ - return self + ".preRmDup.sam"; - } - out: - - concatenated - - step_gzip_rmDup: - run: gzip.cwl - in: - input: step_concatenate_rmDup/concatenated - out: - - gzipped - - step_gzip_preRmDup: - run: gzip.cwl - in: - input: step_concatenate_preRmDup/concatenated - out: - - gzipped - - step_combine_parsed: - doc: "concatenates all final statistics using custom perl script" - run: combine.cwl - in: - files: step_deduplicate/parsedFile - outputFile: - source: dataset - valueFrom: | - ${ - return self + ".parsed"; - } - out: - - output diff --git a/docs/cwl_pipeline_spec.md b/docs/cwl_pipeline_spec.md deleted file mode 100644 index c272b74..0000000 --- a/docs/cwl_pipeline_spec.md +++ /dev/null @@ -1,137 +0,0 @@ -# CWL Pipeline Specification - -## Scope -This document describes the current CWL graph with emphasis on SE (`wf_ecliprepmap_se.cwl`) because conversion priority is SE first, followed by PE. - -## Top-level SE workflow: `cwl/wf_ecliprepmap_se.cwl` - -### Inputs -- `dataset` (string) -- IP sample: - - `barcode1r1FastqGz` (File) - - `barcode1rmRepBam` (File) -- Input/control sample: - - `barcode1Inputr1FastqGz` (File) - - `barcode1InputrmRepBam` (File) -- Reference/config: - - `bowtie2_db` (Directory) - - `bowtie2_prefix` (string) - - `fileListFile1` (File) - - `gencodeGTF` (File) - - `gencodeTableBrowser` (File) - - `repMaskBEDFile` (File) -- Runtime defaults: - - `prefixes` (string[], 25 two-base UMI prefixes from `AA` to `NN`) - - `se_or_pe` (string, default `SE`) - -### Steps -1. `step_ecliprepmap_barcode1` -- Runs subworkflow `wf_ecliprepmap_se_1barcode.cwl` for IP sample. -- Derives internal `dataset` name from input FASTQ nameroot with `.barcode1` suffix. - -2. `step_ecliprepmap_input` -- Runs same subworkflow for Input sample. -- Derives internal `dataset` name from input FASTQ nameroot with `.input` suffix. - -3. `step_calculate_fold_change_from_parsed_files` -- Runs `calculate_fold_change_from_parsed_files.cwl` over combined parsed outputs from IP vs Input. - -### Outputs -- Pre-rmdup SAM-like gz: - - `output_ip_concatenated_pre_rmDup_sam_file` - - `output_input_concatenated_pre_rmDup_sam_file` -- Rmdup SAM-like gz: - - `output_barcode1_concatenated_rmDup_sam_file` - - `output_input_concatenated_rmDup_sam_file` -- Parsed stats and fold-change tables: - - `output_ip_parsed` - - `output_input_parsed` - - `output_nopipes` - - `output_withpipes` - -## One-barcode SE subworkflow: `cwl/wf_ecliprepmap_se_1barcode.cwl` - -### Step graph (execution order) -1. `step_map_repetitive_elements` -> `map_repetitive_elements_se.cwl` -2. `step_splitbam_repsam` -> `splitbam.cwl` -3. `step_splitbam_rmrepbam` -> `splitbam.cwl` -4. `step_getpair` (scatter over 25 `prefixes`) -> `getpair.cwl` -5. `step_deduplicate` (dotproduct scatter over prefix-matched rep/rmrep files) -> `deduplicate.cwl` -6. `step_concatenate_rmDup` -> `concatenate.cwl` -7. `step_concatenate_preRmDup` -> `concatenate.cwl` -8. `step_gzip_rmDup` -> `gzip.cwl` -9. `step_gzip_preRmDup` -> `gzip.cwl` -10. `step_combine_parsed` -> `combine.cwl` - -### Subworkflow outputs -- `output_repeat_mapped_sam_file` (`.Rep.sam`) -- `output_rmDup_sam_files` (array of per-prefix rmdup SAM-like files) -- `output_pre_rmDup_sam_files` (array of per-prefix pre-rmdup SAM-like files) -- `output_concatenated_rmDup_sam_file` (gz) -- `output_concatenated_preRmDup_sam_file` (gz) -- `output_parsed_files` (array of parsed per-prefix files) -- `output_combined_parsed_file` (combined `.parsed`) - -## CommandLineTool contracts used by SE - -### `cwl/map_repetitive_elements_se.cwl` -- Base command: `parse_bowtie2_output_realtime_includemultifamily_SE.pl` -- Positional args: - 1. `read1` - 2. `bowtie2_db.path + "//" + bowtie2_prefix` - 3. `output_file` (default: `.Rep.sam`) - 4. `file_list_file` -- Output: `rep_sam` (SAM-like file) - -### `cwl/splitbam.cwl` -- Base command: `split_bam_to_subfiles_SEorPE.pl` -- Positional args: `sam_file`, `se_or_pe` -- Output glob: `*.tmp` -- Behavior depends on SE/PE flag and input extension (`.sam` vs `.bam`) - -### `cwl/getpair.cwl` (ExpressionTool) -- Inputs: one `prefix`, `rep_s[]`, `rmrep_s[]` -- Returns the file in each array whose basename starts with prefix. -- Outputs: `prefixrep`, `prefixrmrep` - -### `cwl/deduplicate.cwl` -- Base command: `duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.pl` -- Positional args: - 1. `repFamilySam` - 2. `rmRepSam` - 3. `se_or_pe` - 4. `gencodeGTF` - 5. `gencodeTableBrowser` - 6. `repMaskBedFile` - 7. `fileList1` -- Outputs: - - `*combined_w_uniquemap.rmDup.sam` - - `*combined_w_uniquemap.prermDup.sam` - - `*.parsed_v2.20201210.txt` - - `*.done` - -### `cwl/concatenate.cwl` -- Base command: `cat` -- Inputs: `files[]` -- `stdout` redirected to provided `concatenated_output` filename. - -### `cwl/gzip.cwl` -- Base command: `gzip -c ` -- Output filename: `.gz` - -### `cwl/combine.cwl` -- Base command: `merge_multiple_parsed_files.simplified_20191022.pl` -- Args: `outputFile`, then `files[]` -- Output glob: `outputFile` - -### `cwl/calculate_fold_change_from_parsed_files.cwl` -- Base command: `calculate_fold_change_from_parsed_files.py` -- Required args: `--ip_parsed`, `--input_parsed` -- Defaults: - - `--out_file_nopipes`: `.nopipes.tsv` - - `--out_file_withpipes`: `.withpipes.tsv` - -## PE workflow notes (for subsequent conversion phase) -- `cwl/wf_ecliprepmap_pe.cwl` runs `wf_ecliprepmap_pe_1barcode.cwl` for barcode1, barcode2, and input. -- It adds cross-barcode `combine`, `concatenate`, and gzip at top level. -- The one-barcode PE subworkflow mirrors SE structure but uses PE mapping parser (`map_repetitive_elements_pe.cwl`) and PE reads (R1/R2). diff --git a/docs/perl_scripts_spec.md b/docs/perl_scripts_spec.md deleted file mode 100644 index 44c289b..0000000 --- a/docs/perl_scripts_spec.md +++ /dev/null @@ -1,122 +0,0 @@ -# Perl Script Specification (Current Repository) - -## Conversion Scope Decision -Per user-approved scope: -- Convert scripts used by CWL workflow execution path. -- Exclude legacy/non-CWL wrappers if not in workflow path: - - `bin/perl/RepElement_pipeline_1dataset.pl` (excluded) - - `bin/perl/duplicate_removal.pl` (excluded) - -## In-scope scripts - -### `bin/perl/parse_bowtie2_output_realtime_includemultifamily_SE.pl` -Purpose: -- Align SE reads with bowtie2 and emit SAM-like repetitive-element assignments with family/element annotations. - -CLI (from script): -1. `fastq_file1` -2. `bowtie_db` prefix -3. `output` SAM-like file -4. `filelist_file` mapping ENST -> type/priority - -Outputs: -- Main: `` -- Side files: - - `.bowtieout` - - `.multimapping_deleted` - - `.done` - -Behavior highlights: -- Streams bowtie2 output (`--sensitive -a --reorder`). -- Applies family prioritization and special rRNA handling (`RNA45S` vs `RNA18S/28S/5-8S` rules). -- Emits `ZZ:Z:` tag with multiple compatible ENSTs. - -### `bin/perl/parse_bowtie2_output_realtime_includemultifamily_PE.pl` -Purpose: -- Same as SE parser but for paired-end reads. - -CLI: -1. `fastq_file1` -2. `fastq_file2` -3. `bowtie_db` prefix -4. `output` SAM-like file -5. `filelist_file` - -Outputs: -- Main: `` -- Side files: `.bowtieout`, `.multimapping_deleted`, `.done` - -Behavior highlights: -- Reads bowtie2 SAM stream in paired-record chunks. -- Enforces read-name pairing checks. -- Maintains multi-family assignment bookkeeping. - -### `bin/perl/split_bam_to_subfiles_SEorPE.pl` -Purpose: -- Split a SAM/BAM into 25 temporary files by first two UMI nucleotides. - -CLI: -1. `sam_fi` (`.sam` or `.bam`) -2. `se_or_pe_flag` (`SE` or `PE`) - -Outputs: -- `AA..tmp` ... `NN..tmp` in current working dir. - -Behavior highlights: -- For BAM input, uses `samtools view -h` pipe. -- Skips unmapped reads (`flag 4` for SE; `77/141` for PE). -- In PE mode, assumes paired records are adjacent and may reorder interpretation by flag. - -### `bin/perl/duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.pl` -Purpose: -- Merge repeat-mapped SAM-like records with genome-mapped records and remove PCR duplicates. -- Produce rmdup/pre-rmdup SAM-like outputs and parsed count summaries. - -CLI: -1. `repfamily_sam` -2. `gabe_rmRep_sam` -3. `eCLIP_read_type_flag` (`SE`/`PE`) -4. `gencode_gtf_file` -5. `gencode_tablebrowser_file` -6. `repmask_bed_fi` -7. `filelist_file` - -Outputs (derived from input basename): -- `.combined_w_uniquemap.rmDup.sam` -- `.combined_w_uniquemap.prermDup.sam` -- `.parsed_v2.20201210.txt` -- `.done` - -Behavior highlights: -- SE and PE logic diverges after shared annotation loading. -- Uses per-read keys including UMI, strand, coordinates for deduping. -- Produces #READINFO lines + TOTAL/ELEMENT summaries. - -### `bin/perl/merge_multiple_parsed_files.simplified_20191022.pl` -Purpose: -- Merge multiple per-prefix parsed files into one dataset-level parsed file. - -CLI: -1. `output_fi` -2. `parsed_file_1` -3. `parsed_file_2` -4. ... - -Outputs: -- `output_fi` -- Appends to `failed_jobs_list.txt` in inferred working directory using a lock file. - -Behavior highlights: -- Sums readinfo counters across parsed inputs. -- Aggregates `TOTAL` and `ELEMENT` rows, then sorts by descending counts. -- Emits four canonical `#READINFO` lines in merged output. - -## Out-of-scope scripts in this phase - -### `bin/perl/RepElement_pipeline_1dataset.pl` -- Legacy wrapper generating shell/PBS pipeline commands. -- Not called by CWL workflow files. - -### `bin/perl/duplicate_removal.pl` -- Older variant of duplicate-removal logic. -- Not referenced by `cwl/deduplicate.cwl`. diff --git a/docs/python_conversion_roadmap.md b/docs/python_conversion_roadmap.md deleted file mode 100644 index 59a7aab..0000000 --- a/docs/python_conversion_roadmap.md +++ /dev/null @@ -1,109 +0,0 @@ -# Python + Snakemake Conversion Roadmap - -Base branch: `codex/python-conversion` - -## Goals -1. Understand and document CWL pipeline and Perl scripts in this repository. -2. Understand and document the provided inputs in `data/` and the PPA1 example outputs in `data/PPA1_rep1*`. -3. Generate small deterministic test files derived from the PPA1 example. -4. Convert each Perl script in `bin/perl/` to Python. -5. Convert CWL workflow steps to Snakemake incrementally and test each step output vs expected. - -## Current Observations (from repository) -- Main SE workflow path for PPA1 example: - - `cwl/wf_ecliprepmap_se.cwl` - - nested `cwl/wf_ecliprepmap_se_1barcode.cwl` - - tools: `map_repetitive_elements_se.cwl`, `splitbam.cwl`, `getpair.cwl`, `deduplicate.cwl`, `concatenate.cwl`, `gzip.cwl`, `combine.cwl`, `calculate_fold_change_from_parsed_files.cwl` -- Main PE workflow path: - - `cwl/wf_ecliprepmap_pe.cwl`, `cwl/wf_ecliprepmap_pe_1barcode.cwl` -- Perl scripts to convert (`bin/perl/`): - - `RepElement_pipeline_1dataset.pl` - - `duplicate_removal_inline_paired.count_region_other_reads_masksnRNAs_andreparse_SEandPE_20201210_simple.pl` - - `duplicate_removal.pl` - - `merge_multiple_parsed_files.simplified_20191022.pl` - - `parse_bowtie2_output_realtime_includemultifamily_SE.pl` - - `parse_bowtie2_output_realtime_includemultifamily_PE.pl` - - `split_bam_to_subfiles_SEorPE.pl` -- Data location in this workspace: - - `data` is a symlink to `/Volumes/X9Pro/Yeo/repetitive-element-pipeline` - - Example SE run exists at `data/PPA1_rep1/` with `results/*.gz`, input YAML, and workflow log/output JSON. - -## Step-by-Step Execution Plan - -### Step 1: Pipeline + Script Documentation -Deliverables: -- `docs/cwl_pipeline_spec.md`: tool-by-tool and step dependency documentation for SE and PE workflows. -- `docs/perl_scripts_spec.md`: each Perl script CLI contract, inputs, outputs, side effects, and edge-case behavior notes. -- `docs/output_format_spec.md`: `.parsed`, `.reparsed.tsv`, `.nopipes.tsv`, `.withpipes.tsv`, SAM-like and mpileup-short field-level definitions inferred from files + code. - -Validation: -- Cross-check docs against CWL inputs/outputs and real files in `data/PPA1_rep1/results`. - -### Step 2: Input + Example Characterization -Deliverables: -- `docs/data_inventory.md`: every input artifact used by PPA1 example (paths, file types, sample line structure, compression). -- `docs/ppa1_expected_outputs_manifest.tsv`: canonical list of expected files and lightweight fingerprints (size, sha256). - -Validation: -- deterministic fingerprint generation scripts and reproducible inventory command. - -### Step 3: Create Small Test Fixtures -Deliverables: -- `tests/fixtures/mini/` with reduced-size SE inputs derived from PPA1 (small FASTQ/BAM/reference slices). -- `scripts/make_mini_fixtures.py` to regenerate fixtures deterministically. -- `tests/fixtures/mini/expected/` expected outputs for mini run. - -Validation: -- fixture-generation test and manifest checksums. - -### Step 4: Perl -> Python Conversion -Deliverables: -- New Python equivalents under `bin/python/` (one file per Perl script) with CLI parity. -- shared utilities module for parsing SAM/BAM and table records where appropriate. -- regression tests for each converted script on synthetic + mini fixture cases. - -Migration strategy: -- convert one script at a time in this order: - 1) `split_bam_to_subfiles_SEorPE.pl` - 2) `merge_multiple_parsed_files.simplified_20191022.pl` - 3) `parse_bowtie2_output_realtime_includemultifamily_SE.pl` - 4) `parse_bowtie2_output_realtime_includemultifamily_PE.pl` - 5) `duplicate_removal_inline_..._simple.pl` - 6) `duplicate_removal.pl` - 7) `RepElement_pipeline_1dataset.pl` (legacy wrapper) - -Validation: -- script-level golden tests compare normalized outputs with Perl baseline. - -### Step 5: CWL -> Snakemake Conversion (Incremental) -Deliverables: -- `Snakefile`, `workflow/rules/*.smk`, `config/config.yaml`, `workflow/envs/*.yaml`. -- first target scope: SE pipeline matching `wf_ecliprepmap_se.cwl` + `_1barcode` behavior. -- second target scope: PE parity. - -Incremental conversion/testing sequence (SE first): -1. map repetitive elements -2. split rep sam -3. split rmRep bam -4. prefix pairing logic (`getpair` equivalent) -5. deduplicate -6. concatenate + gzip outputs -7. combine parsed files -8. fold-change tables - -Validation at each step: -- compare produced files to expected for mini fixture and (where feasible) PPA1 reference outputs. -- compare row counts, key columns, and checksum (exact when deterministic; tolerant numeric comparison where needed). - -## Branching / PR Execution Strategy -- Keep `codex/python-conversion` as integration base branch. -- For each completed roadmap step, create branch `codex/python-conversion-stepN-` from latest `codex/python-conversion`. -- Commit/push branch and open PR targeting `codex/python-conversion`. -- After PR creation, fast-forward/merge locally into `codex/python-conversion` before starting next step branch. - -## Tooling Gaps Identified Locally -Currently found in PATH: -- present: `perl`, `samtools`, `gzip` -- missing: `snakemake`, `bowtie2`, `cwltool` - -These are required to fully execute conversion/verification end-to-end. diff --git a/docs/snakemake_se_foundation.md b/docs/snakemake_se_foundation.md index 10b2ac6..dce065e 100644 --- a/docs/snakemake_se_foundation.md +++ b/docs/snakemake_se_foundation.md @@ -1,35 +1,28 @@ -# Snakemake SE Foundation (Step 5a) +# Snakemake SE Foundation -## Scope completed in this step -Converted and validated the following SE workflow stages in Snakemake: -1. Split SAM by UMI prefix (`split_bam_to_subfiles_SEorPE`) using Python conversion. -2. Merge parsed per-prefix outputs (`merge_multiple_parsed_files`) using Python conversion. +## Implemented stages +1. Split SAM by UMI prefix (`split_bam_to_subfiles_SEorPE.py`). +2. Merge parsed statistics files (`merge_multiple_parsed_files.simplified_20191022.py`). -## Snakemake files +## Files - `Snakefile` - `config/config.yaml` - `workflow/rules/se_foundation.smk` - `workflow/scripts/verify_split_manifest.py` -- `workflow/scripts/verify_merge_vs_perl.py` +- `workflow/scripts/verify_merge_against_expected.py` -## Validation approach -- Split stage: compare Python split outputs against a Perl-derived manifest - (`tests/fixtures/mini/expected/split.perl.manifest.tsv`). -- Merge stage: run Perl merge and Python merge on same mini parsed inputs and - compare structured outputs with tolerant float checks. +## Validation strategy +- Split stage output files are validated against + `tests/fixtures/mini/expected/split.expected.manifest.tsv`. +- Merge stage output is validated against + `tests/fixtures/mini/expected/merged.expected.parsed`. -## Run command +## Run ```bash -HOME=/Users/brianyee/Documents/github/repetitive-element-mapping \ -/Users/brianyee/Documents/github/repetitive-element-mapping/.conda-env/bin/snakemake -j1 -p -F all +HOME=$(pwd) ./.conda-env/bin/snakemake -j1 -p -F all ``` -Note: setting `HOME` to workspace avoids sandbox cache permission issues for Snakemake. - -## Pending for full SE migration -Still to implement in Snakemake for full SE parity: -- repetitive-element mapping (`parse_bowtie2...SE`) -- split of rmRep BAM + prefix pairing -- deduplication stage wiring -- concatenate/gzip final outputs -- fold-change stage wiring and expected output comparisons +## Next extensions +- Add mapping stage rules. +- Add deduplication stage rules. +- Add full end-to-end stage chaining for production data. diff --git a/documentation/lab_meeting_slides_rep_element_pipeline-20171018.pdf b/documentation/lab_meeting_slides_rep_element_pipeline-20171018.pdf deleted file mode 100644 index 12597416ea7de77a6947b0858d38cb63b5e970f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100077 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

6zO;o=NViK0%qJCI5hb~N= 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 Kk?~6kAp9>5+-`XQ diff --git a/documentation/lab_meeting_slides_rep_element_pipeline.pdf b/documentation/lab_meeting_slides_rep_element_pipeline.pdf deleted file mode 100644 index 12597416ea7de77a6947b0858d38cb63b5e970f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100077 zcmdpdbyQr-moDz^?(QzZJvf8}cWB&cT!MRWcL`2#cXubayF&=>k0kfb@6MaIX1$sD zZ&vr}rt0jo>#I|{zAZ&lDv3)nvNCbNQIc$JPt3q^z_GyD8d|{d^TRQJbh87%F^d@h z4XkWU;g}T+tO1U{FUS};8>kpLnA-v2*x%$ozzGV%F)JCE0^|$~0akxx6r8Lb;k4ea z{?eoZ$1MK#34~+)C93mVUeO6?Wp4APk?psN-}gJd3H+rGU}O9X2j^S+Z#-fS00W?{ z102oED~J?`?c2)~#0msJ`%B$l;#~g_{{#OQtY6?905-pd|D~N-9$;*4AZqLS8y^cC zHyaBaCkM+LE@m-X8{nIuBOLc1$qxWWTPFvjHJ7sIKVMWS{VQV;s7IC<2Sf+ z02@=F865BLLEi3j1inq(8qPKSn~JO~I4cU0Yg(Ls+X1msSF#*c6fYf(07fk^$5eTV zY}umpm6%$mp~dTcek1AS-Qf7K?4Ev|Z)-VyPaNtqTOe#wJD~stKt6tP#zlHXLFMFR(oNgOSt*zh#0}3zcro zuhF%R5RrMD?*igyT!SOr5gE0LDC=ntP#~?zYNtLOrLW|>SAMBWw>ULERg$_&=2sWP z%l~r6{?I(vA_}bXNejMR#1_>bqSNy+tQ}96DD}S>_31k59U4gq%ih9didWO&RFWbi z1_%wEmFC=m&&Fj;Ws4uXd2~Q;#`L+6uW`?$jGS6=_ySL~DRLY#p75h9=7(V6Q-5RHi;s-)S0D zsp31bl34njxGC*U*|fkna>t(K<^^7=J~{Ktvi^Gff7#ftRr$4g?A&aBo8517_|>QN zW<-C9vHr)c^xw2a)?b_8&20Z=jI6)x{H^D2Yy8VN|9jT>TmAo!IkNuQ6#ulxF?CtT zZE+N$;dH35v4Vx|H7pA^+SEc03~ZVK)J2R?J^So#U%w@J<+VVF$R`AE7QF^at((DK zV@hmQX^T430zJJ3cOdL}v{jjvCdYceRsaDpzyyQpasIN}ZS)2>PP@r4s= z$nR<-(OHx5k%4V7?DtTjHoH^vm+Q9PGP|Wh>Pbhf9@p8kwmTz=yC?(J*7g$N%%i>4 zGFn+PXjJT67i)1Sroc(d(fhDN1`3}Pe~q#7%S2J>vLX7Ua+({{YhjnXI61A-uk)cu zOe*;!^n@KL8-h)7QvT~}PsRB|XktQ))XekbSazCeJ5&K1yT+)oL(D&$>~c|z(%J3% z_iwX3wjP>zpzVDfVVo7e=0+J9A>f3m@Z&3SoTl^kQ9JxB<gR{78oH=%s96U%pFEg zN{x1p4QMTO`;pO+RCQm`Emy;m#K@qTMBa|U>=TpX`k?Q&95F+6kw}6De+rrlF)FK+ z6-vP3MTKz?)faO|Kyn&NE4+kF&2LC0Nl7i~Sq0@9VY7^I{xMc7u4y4+PM|&jyt56P zN8AAiX?~tCTcoL%?+Zd0z+p9&>??RQHH>qYK?j6Wmk1FXPEqEy$StZvk!vVy(iUp+ zegvF`0vV5@+mZ+W(~h2`66#k8k1c5JDjHww802r@p@c*~<+mr)X{)0U=(5!z@7RNY zzRd!FFJY9nACIKdeH*)9X8?W77SbHL6*pU67dFR-IX}YQI}&Tnap|iq=0q$hy7&4i zeUt1Q?wK)4vmdz%0jO4&!16I23Ot7E>N?Npd|quRSj{y#I>2KL;U^@WD(9J^S(Vgo zh5Z69x!%aIu6=Wk9jWf|B7wKzm1$-w>W{XXV1!vM0Lp|GU_~{7rPG>ajpnDCBW+PJ zhf9T&myVp>>L0yI2{OD^STf{Wq{~k59gH6{m`CBh?gb3z9afYtUdeOt7QMQlsKBwm z$HD>_fmJOCG{92%rq$YmQMQI+r^%et_LtPevzX^{U%*AJRsE46rTz z$bHa_f+FTGiCU2<$t0@^eNm&h_K)_X&r{h9`~stgjC{poubH*$RFE7PT$V~5Ey)la z70KeU8)M-P+^@-P9;D^xJUFJ>^GvVYz9L;Sg8D+(_)|I+!EMj&&i!eA0ejUmpDwCs z1eZ7mPZ9R|rSx#$`MEJjd)5X`fP3pHD!an*3vGE3+ZP8DI1cd8-11Z76N8sDJZ@$6 z=^o&y9TC=hQP4PkCD#(G%^?)cA}w3Ih?B6!Kk8$TF{ERfbUF^aV1zivsh1Wb5Cg^^4tDS-DyMjhlZF<{!TPSD^EoOy8mu zCqv-xz(>y9#_|{G8Uf#Eot2H9iH(PcgAI<2i;Ibug_Df~j+2v$8~jaA!aE);70 zZ16h{m!a*orJPeP$tS9+GXvkWMjc#uvTdN3kfnOu=KZ6T_t?~+F|f;o>RR1PirU?CXG!C{n!{7GmBzL< zw?Dq3b@CjuV#8L^-%0OH!EJyAJO>18c}(P_-J(Tr>J>qQZ#y2z26mMhve0Ic}FKq zL^UY%Ia)lq4G#ci*7gG~UUTOq$b8ZX^a}H06ui7sFOgT^bjrmi(qsJG?1Q`!G%@3ep<8ZHPXxH;aG(a_4TOMZnJqB5y^XJCtvvSMKqxKN*^?Lip<~ zQ#f{%RR{38;8acQZT&d5gzWArA#Ol~-A~|`qS_5SPWVpv5_LJazEa<|&POy?^>{Or+4RHchVfqfB4;#b>kad(YJ6PH$iUP_ZY zSMI$Q6gM49k3Q{bBQZX~?5k@;s2hOLVyw>Yge=3~<)BDqhJ?aBXrm{FFV*ONHxCHo z-03i0PCGcKY&Jefo(K;4juHT``F=mI0(xp8Z>~}n-??CpzFtMrd9`4cEZ1UNg+IRE zT>!oqCSk3g&02FZ9*MN3hKG+>lgye(B@biT9eq*?Hci?~E7rK_Lwtksk!l4TD6N{; zEoRvXLZTGkdGu*^TMyNQ2!C)@WQr!hv1&;UT zpp-T~v7QCI)VO8BXC{CIJ-!S7ly4#5ga^q5KzZa&L2v9vGSLVEAxyESHeny(N|vDA zpwkA91N$G|tE_V-jS83P``cgttn+8cFYD2+>stM`pfB*47#+>AT8gQPTMw~eMd*WQ zZRf(rrH)xnsh)14)~Wi%mP3eFP@Yx|e?*Kbl>O7Nt?GS!PmXb`UTGMkYoT^l6 zYQD_#*FNQ#RnAIY=0Jz{_NB3P;z!qX(}FsT;(>I2$noK-duNpq+11HYDesl%@-B}i z{dgErO=k2;xoUBbZYbi`y zkD?c19rk@l3Ae~qW=Lpq_|P<(5M}jgzgi}|D3{|_`=I+G11|ay=bkHpDR^=V1dq`o zZJ>sxUf_$M(qVWd^RTW&@Ddhuluz^0QFHg395U-E)cz zEt6i=3_2S|hPd)q5KAv)=l|%Ve)HUKAI0`Y;(z52zd81gkNOwI|1)#^pHci@DZ@V~ z{!g~~H^sC6l`H=@DgJK<`^&xlXB5x=Cz1Xq#kZ+T+oH2#IM0H|ZVF@fhT@ZGhHZQK zqGRfS)|pRZnemdKe57H-xO?5IDU9O?t@+MqyaQNUIQOz0O55ix^s~pSFrDo+i@dm` z6(~%$LoMUhF2wY|RmTWcDJip0EIiFv`vTM);yIl3Oec2{G(i@X&4P$(5Ed8jni z3_3-w(~~E{N}JBT&2LfkeId@#1ZC90X_14y!gS7LZX*b>@hG|#@7xcyEQeg*&6Eu+ z3@4~J9@$q1T1i`HGKimSKo%wkdxuDa5_t$rqt|S5B8Jfn2$HdsY#SFPA*}D%PpD)( z8E;w8BR;mb^=S{`I61NZK0V!GbUX?!Bh|FcG`e)$u?`EtUv$#g_13Lk$%iG(zPNTA zmWC@}$0qkO8k#r`N<*Zb{X&uyRZzU+9Zn^^xX($be?wFhYDJ52Axw%$y1T6ol5SJU z@LGBa;%H*d9w~2X{DIUnHhAlS-^eE2{8Vb%j53wl9FkY~NsUx0;DsYmnz(TcltGQ_ zKzi8OjeXf#%^Ti$N6uC}VNPFy{8@mdDO|=tU>1R~ItwmpRb5RRobE^t3j&)9x^AIW zrsUOdEh7DJ41Y^Sj3H4b`IbpH#j%)C7d*{Zpj11vOVvh^{547-cvsGLVm}$Tn~b)g zali5aI-aPMo2W(siYg$Ew{e&1rU%o&dh1*G74{}^HvhWFnIKIp1!cEbj?DNFeSdl1 zAXrs=&3nw89mzN9e5g& zSVy1F*N=rFnzTRjX~!ZRbvS)P`$VGIb|t!J{H69V9;=lsQ8#Q%pSHmOr`)6_xU>oO z{)EmCbJ~}?dm;S}pQm)2KeIZLtBRpq@RDXq@mM>T*QQRo*4;G9;kxFXp^g!^g?(vh zG12QYKu(~mk;skCFW4qekK`8B@nXe;+FJqlJQ}r%lJa4rY%HXebMMm~#(P(aF>5Ke?c91dTcFOH-Rk)m^4i>$D8FD+(N<*Bzugp^20~0nEBUTF8s@$~I z|Hy~GN#Qpivb2__x&D5#LCXhfaNVc`J?N1ll3j%_}%=i z%)!=31@J2gVSX#tzLjMGu0S|uY3sMbrs!YaVt;*0zhwjenD;-cp}#Qx@0ix_T;%WN z{9iP!zw3&>UFQFq)%v}E{$8y=A72GgI>hJ+`vly zBOJ4Y&0AIcE#rMNa^trI*c|A_`2JUI-O=c6gB#cYf8F)#tbzT{o_R~SKiYn>G5=jk zXaBbYioeO=pO5*!j)zgy*2?(51nLhf{CiOUR!IE|)NdmBZ#^Wjx8n(OfP(_Sf@QRD@=zZmlnFFv7G7VxM zF(|y9!nci09UKdTpltH)7U?Q8*5cA`bxwai=#NrgWmCtB1Eeu(6%Le>si(k0#TH9G z*tDhXC6wNqw2nc+!1GG5J1DW>k#@ng1sAV_}})JWv+%hB;p3K(38vuJxHIRRE$|M?Ys3iKg;k>*$46_uamO zQ1JJv7qJW14%{Xw<9g&46v{D!o4{f>15rmG?KZ&eg zxCwkes_*%!u>(XX^XA+C!@vLYRPR4s!$0o!pKF-j2J888c9F$4)$z z)%b~m?_eqSnT}^GC{~ZJZR?+@9M2plR>yyyOgP%0NW#z-VcHL-*H{3yF77-&`=?5w zq7{zn)$1RoS>h3c-cdZ2YuH_<-k*QtA0{{EAg?vP=yt2wC%W!{L?DEDH<#eoQcOJJgSZystdAP?~&}#(V90Asx^DuKdoV)Hr z0VDg2^lmOEBQS)Qvz4ejU;`p*25HsI z)VP?Qj|c{OhuzqBj5w1cN=y;l5e<7YJ}KTz6ftYt3%TQXMVzbLkich7!(%HV@a#qEs1xUu{b+gy&NrYMJFrFVyo&!QJCRcuOb5=E3UF z)wm)nh5roo3@K$#NfcEWBe;+X}yG@)rxQY5c>%z3R zb#$r>-h?91JHR`_I}q`}9IT?VVZ-G@Z-|90{3*n<`#Jh^;%goUzPlHtX4sjikl1Ul zE&b`5DaCBl$4P@LK~EvcEPYVR1;}*>re2kcFF)FF*8{UUmoI7> z2{RoaKKpfau5W$bV29{ZqhS5;K5Qe6Vr1xgCwNEM0jFJRP;Ey~JA{5~S{qSqg41DM zw3N$1YqKTz5uSJ#`BDRC-?tmQ+o;=l)3lquTUt5ECMM=-Z;`rXq(x{rd$eE_JVhtv z=0r~kWRC?dPs!&f=elOI1!wOOw6l@$fU&G+LBgK59Yqg{oE@IIpV5^wV#oRp^+{#! zCTkm+Jxc1=3R_3{J`B)%W}M>!lfp{@`Cxr?{RcW!rXeI{xqwQU$c z}hbr26Ey&;rbsw{lwvw2y!sGz~RSbqyj%_3H5&AUHE?4AxV7) zKH0F|lc5&=u06$*{KyPj@+(s2J$|`R*4~;hu^q8d=x2iGP&Ip)ERqR3bP)Kr1*Vac z3S7xM*w=<{hdm`FNBJ-@s09)=u(|KUEY}5o;i8RYZ%m-C%y_E?q}LREfzAMVw-!Lu z>v#`&VDm9>K6hejMi|p8z_QnY)klv!{BEo_co}swD{yUg({L2l8;EbSMTFWxdY*SY zX`m}XY(F7(j2xHcXmlUfP0@-%vq4o0T4y|;$Jq^hiE;(q`oZzBn;7z}J`sNqyW5%2 zE+M6J<_65^99qy0l^e^V+lMy^R96lX=>o=+7)-DW9EuSPuY;g*;as_eClHto=?4!! zFB0;ZoE>&-Q1A=UIFsXP9Ia=se!Ccxx+)Ku>Y`yyCbZs20+lq(SA`6Jq-6)mFUO3*9Ja~tXyd0aJp zlUs@e3({>TjXI0wJm_mv4<47(u!L$)Aoh1;!Vlby^##oq8$K@y&kw3!M;_x73S`3K zBmzVIo?2ZQ@L+@eKszRmSy!3F=08d#iu>-vNMe%5lBc0t7w>TiCbaIvwgZKD@##!% zOU!I!g=YsZC(LCzYG%;(v&_3vE<0Qb09oeO>7ird0ww2KF*q@DwS;(?a=;B-^g?jY z`5(qcxu+2R18lDJ{)j&C@SA?UAwRk|L%CMcai+K&X1mA8Q-ga>oh^y6HU7=q#`VN4|u%w>!vP|%v}Pl!ksXt3_?JtPkrfP=?> zRIS}KaEw)}%h~C(KI7nnL^O&rM-Q%(K4A@&sO3Hw?;Q^tAJcj#2mIuynU$8#=dpLi zW#dfl6-13VLAZw1ys3V-!nCr&XZ6s(CS|m;hq@^N+uY)I*)P6aA3Ebf%=i^xM7{!E zPDx3g#vK(PW$PLPJ85 z3Pwy&SGp)Zv+*OR7rm-ew6Q}FN`%h_q!}B0d<;O$liE6kbenVP z$xl@}gC%m@^)V*yUuSsHl4YW5-$}VM*(!ihHISE-LoMxmoXA>6c#vcum=5xPB@W(S z92k&Oh)m%zayRVV+gn+POmSGt^zyWus3Q2jhtHJ}9z!5*NWcg8p0{S-xS3tYc3XBs z(fGYUgIFvmy#}H}gcW-lbJd7sUFDC@Zpu z2)PcU@wjQ+rTc{7A8UwR&27MOq6*}g%2UKZ>1cNA}058TV);R171G(ihS-rAg>$?kRXIxO_f;jb78f$PO<=2yh2My~2 z=B8zuL)~t5(sxSAeXadd{Il|GTue(0a04Ufk!akFPt;_jt+u< zCL5>}-1ZYm#(wbv#fLS4tM?H$NIeJL#)G^=5j?x-uiqZ z_mOa(QHWUsVvC4EFB+ITv=z~b-MQPt^d}57N96>aP2d^wZJ(IIMWRuZEa9iKiQ|mU z=XKc;sVTk(GkOXtu{ee&{!Eju5XIh-dNhzqJ!)hZZnQUFlw(k~_`H}rG~)u#-@Q=A zeT#G;<@o*sOQc?p^Kc2Ipf)MFE|)UgnbIZhMNgsEw2GeVW)nV zN@C*$X4?nBjHQ(cTR5g7Pp#AgdvY;1JEhgV+9>~wbRA6J_If9^XW2NiG%7yL&>AQQ z^vzFfW@T%OwMr#ywBU9hrR>BYJ{9&6a zoh!f_{7V|K>mhcEpWIgK z{zT0c+XoXg2~O6ZbhVI2Mg&3DeC`n~(~uksHmSyRAnSE4s|Y-EHaG}(!w#i%DM!wj zjUmTww&h>U?>s9q+9`g1Oe)yW!h|^OrdU0;f2RW!IYc~09>wwCVMitI`^;N;?mNc* z;#%@|7G6^9L-OnZzz9hs4yb)0ivdhpbVgk*Foo${ugYIL zC0ws55k7TcR5Pw397Lsh)^(u(MdG1mgT!fZVn5{PetcKN1-SM&K_hNYx@2x_TW`i^ zYIMGizQ}{F(B!ofc}kz+n*6#xu!lEGrGPmsxEDBX}1)9MN>48 zC*80z$et9lD}Y?TBxt9eaR6Iy$gpWJE%)8$Pr8R$hfAyr>pxZYCHM>_#?mFjD%wR? zE=9Mg4;|{CPrBW8)QANP_pV_ z*1ZdU3}qjTRJW3Xho9mF$$v|>B7zl{-w8@rHpo^TL2h)R?rMw{Q&fqd5b|T>ELVVU z&e%JMZXnZ#)dtkKm=-}>{9z+fz~g}CG}w^5HdBmJHF>gsZdrcC_s-hR6MsU}tt3=A zW3}ix*vdj;aYC9E`Cs8UDujwaGl}O#ki|(GK8@{GLeI%pnj&&EV-|ZuBbT$E>-~uCYo@)+JF6 z`T<>3BV*6E(-jx6k_`ykX08-|i`7?ou4G?>WK=7?}d@8aKm6H5?|4$kI**cOwbF}Ym0 zJpT^qf_9i82!3SJIj<@{BknF6H%Fo}Z!Uf8ZsT^Ad1^>z*zc?3^JB^z_Q(*$TlcQ1 zM(Ue=Yh#SnG*^?JBW&2$z#*7*fbUd{K^1L#if>AcbQR?^nswy)QD^LXM=Qi8UG4nU zjWrrU3IY9gtQVhF`u5W2A;MF0CTm7QX^?j7!XBtjm&7cj4`zXem{g^Y^feu@5{W4mNTs^o-7j{d7?}O4stjBljSOm{mOy$%8$2!48x58!C(Px7Lvrr!gp;% z;+%3LKp$2-#O%>tpq+3rVBIi^{IOHvdBH}X9WnlTZt6l@o}_P~kmV3nq8LhD9+P** zdrC`%=;^Bi<>&1{OL%X=qic=HVfSn`SV_{XfLl^n8vjTixjrm%ZW($Eea?s?5Kd?I z=IUaRi)6`#ee^;+3{!q0C{JtJ0$8PXy}?2pj9luS{h7Rbdu)QCd2`!KzCqbUh3`r< z%KGlY&om$}>i0LKnna=r7!uQnwfsEMvBZaN*=N^iH^Q>^9wC?Md5L@1F~#@Zno{R& z@HW;iK1$lJ!-nLqS(%cwv4T;8Uj#<+I6mUgwNtb*v{O8*dNVTVlyD!ZXv&Hkb z-_OHSJf=HoggeEn+X4$SzC9jh$SBr7ZRCKnq#xhj321cNCP!hDT0X7u>KC%c0x~4% z$o0U9OenT+ZP_{B*yb#ZJTT7*1xaW5&H%-HT4s|gsI7`kahDm^DDndC=7)Tp&Q$B6 z00KOMh*Z0op9GYN5O6AWJ|g~5vme1{S%)AgVA&9Asg<|#Yw9RI{@fv7xB7h7uSL}N z=(+y9`AsE>|8f|e{Zh|$GxvcvgPZsX_!3LZ-@NE@_sp!9{IcR($TdbJeD956Hv#cY zNdn5-o_M;Z@Y}w52VxAXr(^^fJ!Tq<1}#fBhDPy%_^^z$NzsT*XcdV@{qbSvP#MPC zek3&x5s8VoSgUbiZ-GX><;1p~Lw-7rnI7`cs;;hHf zQ8HRvm0oIaic`yKCt4?PB^Uu^ckNwvS_9*^l1Ta^t$_-4M$0C1Y6gK#6O*rxKbF{++rRBuiP?WYChRC1J#Ru1JHX$>FbT1|z9ZytFN8kk#{ z1L+ohG3ZZ6X#24OQ<`ULhyjl$4sewtxC2GT&>uD(o0VE34ey_6nnCrbR35J{vG&46 zHQMI~3xWL@dF5?#%rY&-lwyFSWrMF6`p~Neh0U+rghrr^;Gvb{UWNyu@4l!-$K_5WXyKH9UR|xNP>DgFDd5n`UdRVrt zHZiUB^MTQjs@che3?|Uwi(Olopi)!sA<95ttqAokE$d6>W_vN}%hQ`p&iDE&LlJYW z%h*G^#HD6_Vtt>!Bi0Cf?kfH$@1)@VUW7)u8b;*Hgks%0t#-SYjV8iY*Tvbaww3$c z*nIr+;dJ-c=h0%1ils{9%~O|Ay-M@Jd@bsV^_OnOQ~#)jvCox?eO>a< z)iB%R9^Qe446Ubg8jf6R&Rl%X$9IKVwr)0j34D(}nARIAqXTRUGC#o3C<8;T`PHH% zh#2x^zWcz;ZW1Lq)@#G>(&$fA5-k(K9cBBh3$mm(_KO9N3xfBf4>^-laQMl^MThU4 zis5`ONT(4R0m&y7-nFq8RXkGTI*SGX}qUM^reKt3CRcp>uNg+d#KCvPpU9?>SI*l_Crlu`e_#jUevuqS zr&emr5p>VpR2QgQP*n2ZM9g(G>R?%}mWHlsp5k|%bo#L&*|i3?6=gm{6=gn>^_IT! zo$nc&3l(|MJQC&yO18Gls3L>TEwgZ;q46hZgqp2EE%AaVsKNZ%4jhQSmBr8oDHpn~A-QqmN(4 zuvfl%XOL1Y+VZLK6S}NF95xf<1o9qjr1l2_-X4ZloS9&ZEbflhRz+friILzKCXhhF zq0LCEARSa^R}_#!2C>3cO3I`7XaAU&lux4f9S8ZIx)_K2VQkh3gDg^4DrIPe@jNc{ z_GhZ1=X-fB^wNj+?%X>0x0AF`iPL-sQ*dU;+X)d)yQNnrPY~?YXuR;p80bO>gBogu z%ea1vK4!~WbTw6}(_*GU9w&tb4>l#DUyL4&aI;3_CwUWay-7HaM22z;M3+>cVSH0u z!WT6^Wp?{^5k>BiNo(^=&LyfyPewt_>AttR1C3pJ=?}Yyx9QmbIj3hm^aP?;>HXt? zmE87TdQZ{yFrnChJxH$Uv+N$E!RPIEH#I?>Pwv@HUE_P8D-?=$FAK62r;a9RUy*g$ z9Hvu2KPIJSJ!`8|wnDo87|Y}}wkPVkNw01vYA{iz@rA;3oMfwItH4}MY`_#Cdy050 zu8Okc_O>Jt8Tk2-JAlp|DhM_FILp3oGO1MezN_YQM$=UdqN2CxppWhN z6P(`Vfa1mX45{^lmeY1>w)K_A4}0Nb&<90=pjQ%(fgIm$AjL`b5-DNr`6*#O4b4Y0 zOcAN2u34DFalgx8XR1N&XhmrbCGY*fvFftpF24tSop?4Ai^MpsZ2HdF^iykeWELdQ>; z2AY#|@6=Hqf!LEXB6vnG+#p+l2!i17G8lvBO?7FCC3=P7V(eGL9>}rBBuW)I_4B1GET!n( zss_QG_OO$fXCli=_*?WbfmGR1Q_>W!=t@nP_I}o^GX{wJL67vNjUCQGkMV$|Fev;p z>N^*Fk1FpVgr}EYDGLjF?nc>>3!8URX{nAWe5uD zq6d-8DmY3*Wb%P%er=i$ThrwU$6OV$ikzAmeuuAd%^B0?9-cAVADN>U zAVSM_)Q4(5=u_rv(MywdZeO)gLtSr?~I}?`Eh&R+?HFJeU+?N z2>+-6i2#Z1erAj~vwe&9GvpRF1ew3VvR*W3{I&F%^a5CddLriJ3u4bM+aW)vhgMr} zOO}-s6j7z@`$0liAI$HV2`Mo3BH2_7UKv4k&yxn&a~llPp!nP-?~}>zRqFS_C|5@0 ztem6GnW+Lyaz23!lP|k?&{&2|@~EkJHKyfK&g2^~FInEIqaVz%D4A5)VsO}$7}>Ul z7B5udP7-IRGIncIirYPcol2S_1N@LJiO)z1kGY=GXCN%`JPtA8TUhrHCd{s5Izrgir4-WyqAL%i2QOXku40R!%*at-EQ6#2Tx?k*3_Pt-AW?k z@#t+;qCn$HTeMhH@c$T-YQ6p2{3NLHm`MuH}BOJSy|k^mYwBq?dQR^KM{Q+P@=oM=ksU_9+?e{fXOE z1Ht0!at&_skL#y*$tQE{-#8q>Ymbow8)D%5>?ZNhos2pTZwExHa3<1P_2A7}Ulu2I z=S!KGFyIE>lTG}Lxc!2xF?HAt+;wm)F-^3UG*fley!yG2krNz>JG9SZ+g<=cphK}S z>gMwS4;{nzBiKh)>brhFW?(mkRHpRzO^HHSA7BpO*49ne$SbzJ4o zZuRs026@}=Ew52cAJNiEIb07sj>O`LN5VVO|~bqx18P? zZj3ds>#iHr@=1t|jE=#T>$@2ZE{C!yXJ`Aot$@{0EpVu7M**Z(xCm*SE;6=Wx+@E& z6GDtEWfnbMO%O@ExVW--bq$1ofy$A}jJSH#agZ@keSM+D(=Vz$H#=v!(-z396ZGG> z9JO3*;0In!U37;9k@nM?7zJ!};Dkdhfu2CaYA*J6j&^O0Q_bymoz)%hN!Pj6O~JE= z6>C2$Mb{PYsDV@a<1lVXxIB?hSJMYsD5~-LGHpuwWwt}CdKbW-hfGXTiAttw%&*+(M zC3v@oSkb{*Z*>G%ELSVgb#zkvX*9T$+l$x{u4 zo+KbS17XnF0i)8@zzD2Ft8qZ$4%X}XwsRjljaSYj7}4^vnZZ`P>&I41eq58Jxyjlt zz~xR`I*cC}8BUnp3;F>`=?Fxc>-lDgOKA&)7MdpiJx{DCK(Ztm!!e)Ie`R)Plaidy zl%jyLFj4y(BUfVM-s67YycstRccU#^1--6vweND-s)3dBI$%xL({jkGAN&j&?4B31 z+16kfUsfXFBXPQDk>d9eWP)hXOCMw$ule4ykQjC8$%8aKO+VRyY~lN?)1|TV(w%*1 z-u{&tB3m8wCx#>GOIk15jtxw4eq5M+f+8?wboN}XykMZkhO4h+! zuf$QV0p+9x-;#NJsW(ho5p4U&&N{6VOPReWyf|uIYquc8FoGo$GWA1ZMZN5Z>CUv7 zM7OncR6*NJvkp2%u_kDYzpD>!;j)17?B>g$3oIT-=QIqgpJa#@bF%4=V>W%SH1gS? z9!(z^igD!ah=ax2WYq*tDgT%ZsDHP2WBFCXnsI*+;daeHe7|&z`V*H^d_kD3#-x9K z)sE*U(9bl3!8ppHBz!9DdK@OtX9bp7Y5WFzlcTff*o=+$%fy2B6^Py5x9}770=nEd z9YSr_L5QZ_Ps^k0#Qod^>e3iE=z=SzBHI#+w{^BFD`9fqEtW@D>! zJXCdDT>FNZX#m&Iyv&q%-|rIIeeGe8EDQgSedy${AtNX zd@|@3UUHxF^SyU%>+o}}-3sGjh^yIANYUL}#^zFq=A+_ae*R3mWw!TKik*6NO1S4n zRmh~6i_(t=H64XwtP9XJM}qx?3@1sKV>ru-|6QC(qZ5m~#J|HL3P<@qz0D#VwN5Ic zNFKB#GYg&E9IFi9(l2vPYlg?bG_gP#z5M46MgyKwz-e?^u&p=1W^Z)4VA zj}^?DjAb{|V42Q9ZmTaVszcU*ca&=2oijB&n%Yqn^Y6pX$rH?X%i~>8gv5z*r}%Wq z6gSg$QkD?rG0wsGqx2Yl1PDqAOH?hX}g^ufX84Eu`JjnHpR;EBH|ugDy{<3WCFJxMsJPSv`xXX@k*! zQ-6(mDzB5V+%^T6n;(Jpur+i0vC$>jFJZ0I7~GpOoU1&;{2{ow87*?w%^ZVFb-#w2 zUtT_Bc1WV?UGn3&j{OnLK`q>tlc16{&mC^Le$m=KVh~fbh=19>s}F~T!p&v3K$}x) zrkX3Lq+8&1stl2gCCSJnLyez49Oj(pNU_NrA z6)8~nf{DlhGRI~5bH5N_$&>QEl-8gv7Yy|Y;L%PJW!11wyhFN}i9C3ogJV5%WOoXa zhItkmeEZ@1H-yc*9J{IgmNrrui!3cBkUJO*0!9oA*Z^G2mncpQkah$(W|S=La@FR$ zK-Zi`rN{R>w3^}7Uqf=q9KuS#=|7^C?5TZ{-w_YYYo&Z|*#yz$Em~P*Nd`q4P=|z8 zh4Bee4mxJ%h{Ry>JV82fsRXTaSAgYXYNqhY*NYvZpcxMaNTVH>cxPE7Kj{hBJVl4C z(12UKa)L~DA{hXR8RX3#JDvX#sEMHPN&da6Ic}|;Z{Qc&+8C&Cd7A#(z_IkO@%1*lVab`= z(FTMLy<-@5`%NUvby^JR*X*5LZjptt2VW>_U?{fNQG$h4dJs9X2qf+du&dHPP$#8> z(`t4KrD*_17{3P*WC)B8+`}v5mQXH#gX>coCYP*jjZ)UtHAR5?-X9dNr@3a#k-*G_ zmB4+wZe?|F`TmF0l<61Y6!b_2fZH5~`@5goi)(|j0BG{ykr$l1N;x8;UJmpiDy2}B zwl&9MD9(7(s6r)?B9ioSnu_x6V>+f?=Hg^3?t=Z1@afX4FAtUv9TA`N1?py*M$;1d zW^;T4Uw)Jc&fk!FZ6%aL%?p$dXlo?>NVW_<#>d`2k}j}2Y~sY#dsoWQTqc@Yb!2ER z#uP(^`S#<{FzwNSeTTj#C1|&CwrcP!)PUM6WZ9v(^^jv;3Z zV*>e1*g-~=fqfr858`6zEk1~`Do&Lr@9|Fc78@=j_KyA(Qh|gcnJYJx(xE#eQByDf z0G~hlk!)6|j-2wlvVZbXyS`cLF^JA6dMuvO0Kf13(9w%ihLf=tVR;_y<{X;)F^ViV zY(hXdT?&=X5b#*0pyVS~2Lln7wC@55+SEk6SVxBB(A9hFnoQh_5CapgnqKCZdvS4W z_8g6{8Xo;0O*~j*TJ=t+z$J*FA+%n_D>LR%#n_iCm69p~S?=@$1>%}ZphvlN)ffif zmxO5)a7aB_?=lk07@iC^XIkg*oSCDMag*&9!l31f4?le{0IAZq70hs zXzv}zZXmOb$SXLY2$(aPB#$x{esO{Ibqb`AIZ%KehJK)*>#k2Nz%?lod#HAaSUaD` zx5kB?Yt~PR3LttZw3wbtqtKwK#gpP$se-iy9>raG87&rqGlTj74QkC?Dn|9t+$*keZM)b~;4A1y zZIC0%q=W96&e7p|+U=CGFKWMah>5kx+Khq|VikCcrqIzUdT0q3_(=))sNJCUc>;zm zZ3Kg7!}v~xuI3pAEsEs{Ap9}9;dnAA%b)>e{2+6#fV6!*y68`699n&Gcw=!pbMD?5 znqGOj-e>K+=ei)MBG7Pg+CxLN6Jx|g*@Ui!uxuKbFcrLW1_f*26O=OD9L-&c#2;K> zY<+(Yw3$oI+7g3L%PW~PV}9c~lKr6Ma8G0xenGocZY-wbp#_Ri()yU{wDtKEILsaI zY26FvLpu+v%B(+WE49(|V(aF)-__3wT{vP;@7cRqPN?+#SnQ}>2jn&--ku$H8AA72 z(Wpe+Bxk6I-U*T4s}0wcEh$TUPuznV(bCUh9NxmdqIT1C8-CK?SK2E5v=#J?^cr)M zs>{R2DTX$ePI4eC$D?3<1qqGAG=#>`kGj{z?9s|Lp{D0W;e*Q=(xycMV^1|{_dhaA z00WrYnKIKaLtMaiDF)irATxogiwmK6(J3=JVEeHR9ni90@bZvOB?w;;{Zkt{Z~ z0T>QxI7!Z3IN}I*sG56%zx3|d{*U`T`){3Cr1@gMg$Z!;;w2r}-ovHwy5E}A3}S^{ z8Ry0)b@%m2$!-yNdnB@BruY5(IZ3v2DE$~E;^GP+O!4oh5MAsrEO2QYoBdipjd>h} z0EWx?QX1z^uCOcf5hnUDDVO;hR?+~hz@B8YaJa9w+g)ok-yf?d;gl~gWx0JfDspXl z>>u{9d>RfW5@Ypk?gk>m&hEu`z3(1$yIy~1f|Uzn0wGf1vCI6Z+apsg`!NWVr_Tl< zGp1~f+albmnqE2z;Q2s_RbjYD40$kUu72vR%YMO!ascKQDhxV6cN-I}gPePujggL= zd!db)jiXCb1Di!y+D8g$(1HLd1FmQajuzF?lCdUjkl{sLBWcFx9-|oEzrsbsszM5X z|G}#VMZk6W&{b?HT@9hGxA&3WCIM|~A1r{v#d$mNt|U2Lxdv?|3}u!fAyJWGqg!Ml z4?qj9xI&+}N&eHANhxu%ee}AQI;Cp&*21*Lx}t@HzhJ3zc%^f#lW@u;%lLN2olm!q zxj5bS3w<5{Hp{@IU@tBIglrgH*R0~orhJ+N^N10;+@x_`AIc?bk`9G27lu}v;UJ{L z!FO=!t$V~P@Wa;!tmArR@3dy^$m-7ax!gqU88b1gZw=TcQtzJ$0cNOk+{aBBnmE<2sE$ z0jJz6+fJ@pg8&JSZ*H=}r-nY~)33|uuhhJ$kHer$MQfC#vFr|bCiW*AK%i=k&rX~= z@?9u9VIt*h1{nNZ9CuYw=_VpcISL|E{BNviN;gLal)8)z)3fr+0h}{;x<(o=i8~_z zop>k(No`pYS?;^ax`yYM`w(RrLzjGGLB!euePU+Z7S)6hs& zi0NE@)N?kxRM40n0Uc;(rH^<+B&EiV-Pl%{$RNF=XoP<;S_kPW-x9i`XpHH`SIvRG zh*=VS%oUxi3SKn5#`;z2HWb|V?FSd9Cfigms}jIaV$YZ68x*lN*a_!S1S`E#CmbSA zoy=+d(YO&fx#_D-+)DBg6kwPUaA{5*^hQJ)Gy!}t4QNGiE+7J@#&Ae9hP-Lj#8E(A zTF}d@D5`k6ZM4m%e!QwuY__T(#^y!rGZ}$o3Dpqt0+EJD*ZAFPA7;NN561?}V1o_W zU^ve*)XKmkRrJQn2D?Hb1kHXi^J;EM(4UoTqZJSViOz^ZZ$zm#qAdU3@K*O`=(;$G z){3>hCoosH1k0pzVZwYGqo`$%R!>4@|7ygxH)%7Jxe@O)I3_rjGq*PtZ!Sd(t@n61 z6D7iQ%OkSngl7nKa@@>|hG+{B96+#^LJlHG!kP-ZpzNNO%D3Pd-T#iW+N)1xyNc|x zqhjsL={|{f$!XU=clX(Jk*dr4elKI$(qq?udNEgsBn3K^t+3`oR`YdD5Y@sx@8NRe z8mjgcMfD|gG;aI(x}d96u@MIEn&sYdwG|q`ujnt&A{K3G;+A~PvJP(3^SiNvpIi|q zfv0_V8Unp-FJOO3c_Y59ooR#mp*@QuRuZ|=Lf%>RcQzy}qd!*D@jj(-)%{$!N*TzR z{&;X2Ypw8!yW|uKb)ULZfx57mp{4u$dcuj4r~2z6`(ebD5>Ht>jT@tQ3P=mcTEGfE z9>RVV@tnOGq-1hc6Y)^e4TKh@U z);%(E!-?OcPzWlrWtT0>Lo@D1vYoSFSn=6^Oj8r1UKzpi#Uv9_kxett7&H6_6c|iT4!5tsHSqX4R;`(GEs3>Q>E$O!xwtrm zdXD-}CUZwHMabDBi)K>?g4t zeC~E^FYfeO32wgJlnmc=Nv_(-ojWPHo0$ByY+Cp)rQ)*Q*u(7RRS|I88+0yRP!CuI#V1oqkh5uhR*zBuRbNwkxw7MtA4hY>bNgG2zd}^jh0$ z04od6YOn9{W(*e0BAt?FZ@F>ZNgAP;T7}|b5_0}A2++EY$!~wEeCd(wHW(D!rZ0E- zn4;KnKI*dU0iyc5fP}1iEl+gc-5<>|S)o&&@KL3-a>;S29M8@drMOfi3t34qT#F1= z6*KBalxT}wHWf2D^O>cuf2?vB@5Ob{a2IWsZ_sxXptb@Mdl*R}30WirMZLnD+T@RxdZUY{$ z#*pg=9`^g+nAXnzQZ6Q}m5slfv=r8^Co0o+I>P4{VGI>C#>#S2y;2tY=W~WPCwu+9nq3s)7U5kjzVw(z}!7L3j zcq{}S)VmwGETooyowONB10bA(2uT)=#c_7p2!vnG6MA3vF>#(EUEAFTM_b~O)aA07 zv1OTqERS=*+DaAD#|S(6l(AV+piwtCQmn_dUgKjhT=bUWm|o(sRPds3Sjy@x*(o=HdYci-ia z?bD@G1GH(l?RThUW(cX;NvLMPHiY}$FoZvZ3twnM4d=}tWlq6xXdR(oGB{tHCX0vS znDxo<8pJ4Ek#PPfF?5~~wL&6wjSy6B8I6oTcFR6=d;1xE!0^QldFWKo81pc1{F3fq zR9G~A7%)hJ{naafLVX+<;@A-aL1rBxn{Z%e!Ej!D7 zrva~7F4uGAmB8!t)4s7LquY0Q^HTA4uhJBz?W_C}Y_w*fl8oEI_UVly`jsiK2!GT3 z1z7ez{=y{mMeWjYOX4y~ZofQ>8Zb%Ia5r>k^TFP`^YZG+nfsL0iMHy=k#f$}%e2OyoRD3o{tp^iSLD&--MKrG>1ekEB7P z)S-E2nEqT=TIm&4kcG;AvVJ3VH_cX>b&SJ)>~ct8j7?w+SP+ayV5#$U-&nF1;sd^l zxzne4b2&QajA{E8+3`2;2QRG=?gcJN8>(e(=|SEr{#6~9QAMvGhO$|6^??Oq3dSmm z9Dk(Uh1H-tRBU1O$Ci|UpyLt@+pr}}R?KeUvW98@<9&brftK355cv=ky8tQ>; zPjv)XwHogW-Zsy9`Mve~8;4&M)7*hXuE#xr^jGn6KSV(uH~se(xgkZC0cwjx?-h1Q zZkg*9bns~t4lEqQT*d21x%;s9aFDPOawsO0Nz-LEOSX%y74^#*m$Xi`F|)9`alw!k z=xer1z?J5y?kn5e`?w!0v|$F_M}eX$T)P!g6aDYA4-ALo?W0zf8A3P}rz?Yr56>pt z@3QNlfgDD69wQMQAoih;o3sW=7CuO#h?OM8v1LeF950Ii@PJwhOsR`)82z-NwYA!D zpp2KbqMXp2C+kpp!a$JZv-H6ngASg-_EPSDX~=6_vyXjmETL^$A20X`36BY1T+^^_ zS>Rz9u##W{$WnRY^=`-br(7;cWQq(bF}X6R5;>=W>Yh4R9V*Q49GGi1Y9;fF8 z33l_jg^O=0Yq`a8FGRb;cB?h=+3sYclF|2s_r68bj+b@QYj2Y8{V;kdzaEPz@>#GK zl5T7m?kAOVW39VC$Iw0&qBVqK+;Jh<9VjU1p>|dabv+9K90W{wG;DMX%b40RlMs_( z1Fb%2)q&=%1F`*q7J?JQ*XT-^97BbN-kHI+3!f>e3@ovc zP($Wrvd}}?m<}S?L1FCR2%|K%fMw5N5i$#knG34Pa`a8&KijJ6r_U!qST4sE57xJvf!19@Qt|I|_v~fSr_NDAn5LonvtNDCV}hUkcN*!n zewVG%^U}dCA%#e};=Db9V?+IRKlK3H_KM*K2YtV%(JxnoTe2Kt<7L_J4$h3B?!Mf^ zGF_jWzPqnj;PW&&h{#SC>7!$n%W5Tgn@LP(a@AoidV_wN&kwZiyc;^ZQn0a;FhOud zKHLzt?_6!yATn3P#g!b2V`*Q8Hw%jjx0>8ap;LaVFob#O_wF}L^iDK%^l~(qe5ro1 zjl6Q>L+Y97fzI?6kI#XfkH`E_WK_%*K#hNT;0yl3d?&nBKc}`g+`Jas%h*T!u*W6k z+OH6t@_LGKKESpO3lUgfcGA2wajndpHjQcVV%@VjbaQ-S-&~)#IW&o3V^bneqoNi! z?YHiM;BS(%HNdtpzO1(C+PYJHw?&BEM5r?uvP}z>F~DV|Fk3Tg{^Fwhdh7m`Wm%o7 zJ9$&#yzuolUx0c(8r%nZpk;nE$VEAZm-QMs!M4=xd}phXb4=^y^AJ($TGf6zIzdPX zhZFjyZ?1W`SbD|F6Xm%xldt>rc;V_R#d5Hw@1Ps({*V`2RiDgjb;~}gcGv$r`tIdJ zLPv?K9*@$0qyRlI`qMBdOu5*qGU}ip2<}b%k2~G(#?Z4K&k_&npet%QIt5Bb6Zf1? zW3JKx9o1v@tFpkaQ4Z$`t5XeGHL1Cq3P+unpot~c_GOFql7rUKKM7XDO~4Mo8Em#`}3np3BsQAI8ct{QmP|H-kSbDk4E+vN?6FfEH- zU7ufXNFGfdtRCc($6L6f@~qqa{FE!7K9x)1RcYpW$W*SIsK<}M#y|Nn2pe}+d+a3O z#7V-rfm|MbAAc}en@NzGa!iRQQv}$#NJl4`eJ&CYiCPfFEIcG;BH|(pD<J7TkxWHrKL_qcd~4u-@` zCE>&{qW%q)2lAm0UmKvritQ8Qw6Z2%RjDwmYm7*39&thV(%>H+gx z*k&>Jn1=jM4V?|{I!AnS^kvRC=puk_1LS5Iq>w8J&ua)F#6_YI8jvPyh>+lL1GYq3 zn?)B_!r^sUO^Tu0<%I35(A;9)_DEhAZ2owFHaBd${7t%-9|T#v^#_Ol2@3WIpDQ`PEDq)NINtv>zydXr15sQ=+dS~D&y|*`S6&JG*qNBnrnmf zNT_9fnk|}DHs@3Peg}KpLdEV)t)Vci4-3)08#? z8X;nd1{RoHzoz43w_2cP%lXdRjo)qb(z%01+)n~Tr_EKnz|3?8(*?IC0iqqipCQ_go z%-`T=ArTzN%*jofAlhMb>m~@4eM9c2;TDx-oKupw;Kss@P0|+0&63=J#V(oiq|TCJ z#PKxw6V=7%1|yUT1mm;%R#G%z`>JX=Caq!%#ub7JOO~>h&CvkneCknsZZlIaTX(B< zuAi%a0u7Z5vh&W6%Y^TgRnlu8H1bps8;D+*{f^6xuci$-o(H0IRDBl~P+B&cJ*RPX z+o`{9h9{tocmxiue$OtXcQiYF=~;;+c`W#;;T3-!fp4|LiI}Hx!B>z%=*H33bD4{D zex5eLp^bOv#dr(A0H=Ws!Kr}YbTA*2WBkVLVE%~+s{q6}Ry7CTC?)j$0sm}N5t?BK z<+NU0=u-=w4s8R1!Bu3$M+_cXoi&I{h@F{MlB_uiv+z%%LIZU>%_{1osC$O6u%Vn4 zr85tj(}DDL70Q`4vJVDB~Jh|nysRGQg|^~;|OA-C<^Mj!jQ<6W7Pp6`%!834kq{j_JK_54r>_sXaV(zp2w{RG)4niNZF3MPWPs){PclwQpvJL1U%88 z0P-Q`Vz=W#;+{;k_MH}!{qBa)8lH8J(aCcL%6|9dhARv@i~TK6ruarWoStYQa{?Gs zMS{RR4$Ri!=H0;g6y#}yD1NEp#8RsuP}|mN`28+-(UF1r$k!H|pQ>NCN{2Q`@Q(qhHbe!-K~a?g z7FaS%ISDmK$9l$*#FH!>3jqy*VW?D1Hfj@A_=qSVjDeqden%G)Ql5b|PB$r%s^}x2 zRzCenmq0VFsBto$WN#Hq(gZ2|V?+^gpig8q)wjsZoe=ZH=F}!4L=M|>tV_LyEM>c# z>k9{hS%Eus$Kx_EW2(!l7GCYejI*^Caxd4k=JTLFA;9jn(mUPqS^3EtswTT3!m6QA z!3pJeq@THt{vvM>wshl#2kQIe+yywK^DyIAv0mucPh7I4@te=$uK8Z01XW~5%V$|G zpY3%;AWeABY#@he0EvmVI7cd2D?|o$3>b^d66#Mnd-KRVBvjPai1z7S!Gb@&}PH?21W1jO_Eh{M^xUZ69LWdop z6D=#1N|@xR4cteLgnXdyQ?cVOyp$LhZGDa{p@kp%i|-0#-R|=eYnU5~cYIg-S&jV?QH;~-BA~Jup8kU54r|1R`(o&8nMM)IfvRqUOG0nrc=UK9_NHk`D zx<|22@Qg97dIozYxP~*U>1=BgZQ@raJ%zt*cy@ikPm>#GltL$C6xT4imbc9Ep)YvU zrm~H|*~6VqZ(kU7JT`TMU7$R5_zd?@b=P7a#dh#LxrCP{w+^9dpH(r7aN%q%9;PkP zh^;X!92|Cy5J@?N@6*~VJOxSZLRY1tPZTqn+_ z=T!1o@?`Qkes4-ru@<~LPw zk`EDO=mIqYC3#l7=(TVm`Mydt3NgC(Py#Ya2c7_R*fwDI0@F_t7@wnR%%>F-gzFLj zp3>QQ{&-9q$TAJ(kklOCQ&K{ITz@Ubp`i5Kc&BRfr}m@7 zY$$`fYTa$qqUMgxFWCtsb)WIpcfPc>-m0Usl}p8$5Y+rVNj z5+5fxuKB->dOnJBGM}{243^v*#9S*Oc>R~Dj2D31Cg7k;TYZozdz?ZRA#W(GYU(8Ri$&JwCGM~1drhs@V&Q~{I+J{rb1nHxa zf+-NhLHvFLb)a$520sH4!GnO~S@7XeSi&N>(Icz?Eq)OeH1H?`Qws&a_b%m?fvYz0 z_G(lsCaV^sTK++$Z@YTpd)hQYPbs_byt>;o1>Ab;Ia+VrYJ8t&WSW|v$hxHMUe*j2 z9t<89a|S<~sSt9TR^{pU6y`?2NWnxAfvT*FXiq67fVso*7 z28yRDR28L*RYz(kIVV~A9Pwt*4f&)vT)PHcYD4Ft7(7MZE$B}`R56Xe^C{hxHk0hG zmqavfHjCPmHKjt+AO^h&N;^J&RLEzbXV=Uh{RIa#NX*Tg!54vCV*ev)UoxRF@icM2 zh?C<>glw!2Nr^1>Ht0aiy>c`TnOjxLT1A`n257d%Sl4x6viZnbApDzxWpujP7vex z-s#e66JIi-gv}&$nP|dw38hXz<3bI`L6)72goKTuC?=*Vp0kHB?3u7JSn8`?zhT^T z1OG{R&pfetz)O(dK*ZeCMO+A%Lh?DJ;hsPP#Q~d*EIT9z6GlKnMW|epnAI^uwAS=- z8!c>fl+0DXHB0Ly6eNt06BdrJ8CFYVC1@^jB!bA|8E5QUlukLM??Y>&$XJCd9WyF+n63-nd<&cpTxj@D9u3Nb-a3Z7@bLBv36X zYSz(Cz3+YumsW&Ua!0HsMM6>nOW_=xvD4XLn!^zD#9OA1sJkZDSF8agZP^H)TI}Rr06i>v{+mDf^rE znYdG!Zr1v}d8jP)7WGNT+j~q%ruM!WiO<7NMBX4i&#xh@V@|Z}EqkAuNa?qdo@>a- zrrj+lmYdP5KW@J=41U9VGHzH?6*`zxL?^e*a*Ilk#K<^7F&g^b)BQ>uTSlOtIHVT*kl+}&0)cBS*#IcfG+O%B)(Eu|G7O@O=IiV z?UJ02+~}RQu%@c^|4?${1#vmUAJ^Xud$YezHQWqcR#O0!%KP0-)Tge0*b;cl_@G?* zz=uzV0`5ruGk{$ZA1uJ2H9UkGSgKg4Nt(0Bw$D*qBj`D`frp&&Krg5fefn;P4(Cv$ z)i%({EKYU?)o5%DA~{(nU_$hB82tq_)Qt0}jY3YmC%r_9VfN=a-0nME9O=W5h!&K#NXgAH0>%lqKIQ>5Ni~Q==0pPrLn!gEJ!wfGzK}Pth)TsU=2J2 zS?~yaMYfioQncmHtgII0rBv8_cf{OMXnr?6E%;RmQl={c?o049l%5amAwNNs;Ik%f zV_vBMmIi#oWttH{~JejnHTwNVUVJv^;u-S?B?vVslb>`8NCJcSqdD23;75>1573QBW z95SjsC4|L9&c6&eD`4I4z=pXlHrPl!V9kIsl*mjA#WkpSnt!k6tlgV+n5U)^-@mrd0F8e6ydf%1`2Y;H2prz*6_-7)Prx% zT0gt@Nou{aQkD(P6FM=yF?SQ>W(Y(2LpwKWakZ6?0M8Ogs$Vh5+osvhlCTto-ncAo z(??ymHRlTr=0|~Xv08mm_kdo_>ITYcUtdaI-P3aXwe%OJ{X8^K^WJYSMm1C6U}JIN1Gc=`G<4_1cQTL-q+Dm~DFA8};w zKP-H}ki--#QfU@{3vdtexE4(~=oT+$828xU2Wv53(c;dacSK(}m*qD+|->0YK(RN2>1Ss|E3_SS)p?>lCcWWolY^D*M*`5&zQ>C4(AW9 z5Z}b>fZ@Ggh6qp-r3Ofc3hRAhm@CNnrP$k~z?wGfmrdgq=|C6u<2hTdGsYr9Yu7Rl zaJZxk+R0T6tG{rV1kbaJB!z}-D8#Ki)6|H+) zD>~OgR|FyS_$k9<9cO|``Ehc!Hc)G}g!Zx?0Zkq;IZD}#JluS;1x}4o6P64{6ujFW zsCJUI9vKoVx*n)IOw7v1z%OH`Oiurb*^DmP(w}%sQmrgt^$X z@AX&@5}%V?A3`&manVHkDorp}alT?p6iahmv#8#9W6pX%0zW1#;LLH4D<1QB^aw7w zggzn9=_h73JZ8Z382WrL8dQ-YuMkIr=MzcJ7yVhbWzN$1u%{2sKk7+N-)I?o!sUD@^Jrm>n?R5abA=cr!In#Vb^TUS!XEDli>Zpfx{8^#Vcrj( zlM9FWVi({1qTT?!j>(kNGYtFXWY^?Cu3Q0HC6cam$rsCnkO{J9_=2btW#gpUpq$}* z*Fg@=D!HqlfZxP|y?ft;v_;#sh4JfeXBfXl<{!$Kch0>p73YR*`+@) zE?BrdFBBVJwVZo*Un%2?!Xk>nf`|D z{|c_wBfb2Bq|ecP=Gh;Qv)uladhWoxMcH%j2TnWkOV#6rxueO$eu5Jk5_AFmgAe(s z##9xn#R&J2IzB$l=TjCm#RziZbeDm)-`UGC0GG1(W+ebR#ZvXOm2j`g1Rf{Kp*M98 zanGCkwSHvbh%L42&H7pxvxt?a)NH_$;jF%x8~kY|$>59RLA^^7QBQm}Rn^mQIq^!h zFIsP+hjfB5dFK^R>$rY>rCHqA1l!7AKvB7Un6)mz7tuW&{`x_4D4L0pM#P`)|H(Q; zOE%Q*ao@2e*bU;yxZkpvX7W&-dS6cyW&UMx7mGvW+n1JM$w=TwwW4{?iqQugGsu^c zGIW{CouaEB^@vycrQXOgr5SWzsx@@^=ZV4Jm!{Z$&vVosR9L)7Z{xlt0$mp-!$&5Sf#UjvZs3GnJG>CRI|^zO~P2}funA-!H4!< zC@K9I4Daw>iS-z&pjXze@}b5ZHoSE!mErW3TMehuw-OfwfKxBB0c-<6$8QCq5y{&= z3N_qkO=$YYgWHJQi2U^lVbapeBal_C6@zjy#dJ>Z{;s8b*!@DvSEcHN1<}`$<*Jan z5B;=x@kB4?;1_`>Wo_!Q^Wp2d@C8;>pdmeO$n~(&fi5N!t3Dot~I?3hly}Lc+LO%s1si_YV;cl1Gb_+x89zpf00J+ZVx>+4eZ0 zrYQvpARMRxpE-*I3Ju_n(sQ_3C5@D2T@35!N^VjelZ)6T#x>?@^9*;`c?jXxp+EFG zu{W_xw@2t<_4ioyu*Ow}&3S8jQNBNvG2c*LT~l?h=6$VeJZ0I2pE+a6q`%^3^^JD9g7&>EePw&D>jzD9lE>I6nSu7zTekG(+MbcbAX zH3k>LaJ_t-d8!!t*2s5(T^dWuPyaByP&l8yS*1rO>VbPYn-R4Y(iFf^#zXORd&=ys z{;axojjXpVNe=KTvc!D1KIkHX(pZoBOy|tNg%5LP@lM1pybA7A@=-cx;GFF01$HKh zMzqYB^bEMMDEZkkr7Q-}>1#(faYA@if^2-?&qsFXoF%4{c_tZT3R_&;CTh|C>nh*h z1@6=m9j0kPv7Hg>bsXT{S;Ea#=td{IN&F>9aek9oB)mvc6tfI3Syo6;$#kDi|BH8j zTK}+X>&dM1SFK5v+#JYngk#9w^>O18##`0$>NdHb`kQ1}Pj%yk8-P?%)%R6+cBQ_6 zv?D$I>%qztO9U}6;!wK^T4ufgz0*dC(o8u5r|3=fk!`f_&&KIE;OFYia05-YNZ$e~ zDBxS)c+sBZWld5H)ru)F;9Hch0A~%djRt<5T!-Xq1dzY?O|1BE@)!pX{Bo%-2@c!0 z4i?~?|0l%V^3W0k+Xn25reo(9paVLwh3;Nu>+ri^u1SWkWxFS~-e)Br0KM8Gl+4W0 z2{)Jyj8m7Gm40BtrrWJ3)gm|%?>7}R|zxeB`5Nhj^8xf!n{Czrr+DKf+ zxxpt26L-6uC%d1MAAs3v-+zFcCLUDJIn=!nck0b7{e6N}msxd#_O)NmJo5O;>E8Q; zTn#D|_m&x@VYAn})w;s2r%yG!K0GfsDg2|8@_~3|eu@0IO9W|Ii$Z(@md6eLeM^|o z`8dASWsCZee9GJd|G7#855Xo^TWCtiCE{x&l#RhWA3>L#JkO!kxYYsi?;evY$h&^@ zCAL|f<~OsNJ=Kb(Zc&ZcIp!!e8*9LW6(7;S>b7bZs^Db}0Xq6(Ll~KQ*N_iYNtG{g z2?DA7r7j^7@JWu1fhB&v?Jnv91vl*qvf$n$a#&buvuTdW+Z9`2-jKy{B zH|PWI2tk_BH~U48A5JaNr%w5FqT${&jy!o18v55hnW?I`>f!udL$ie$PLPh#dFGS9 z$KZ%#b7fxGigUa5t0=Jjd@!ZdJ7dWfg#nAxN$X=>e>jiMn_fIH&)4wtO3gKqC|h*k z9w5pTKL#Qj;|bqX<*r-^)^;Qho2_vi7ZfM?yE8e{?XganR?s#MgYW}=JqXiAMKqNn(AhaL)Zwwh zzkaFkW5nUmEF+K<4H@pJ_^13{o=&T(n{ghZbgjg$b`aS74D*t+m25=m!MNmm!~I%$ zx~(01TA00zbr+pZ@N$vsuxh{Y0rq8rH#KioYzhx?*nn&HCnAkyG^4V9u1a7;c`&bF zuU+0hO7N(IbW|E*&OEYZhRMk0*)#+5dK~tnq*dd6EEoM~bfq7Y$Xa7?s#O{hYjq!T z$yj+R4o#X7z00b~d_#@uSf6s7Pc>g1-v(Zn#cgQ5MLo7_F7HMz#M`mG zs$1;^?AG2Nao|NUHcdCRjETN9R{&znoIA9;_f2Mum~xvz=mcUTVtReuFemlkS7C`SXAb2ZI{+Fma5XbU9-ZpDdOO(mTlMDr6oeF5vvRYy(lX*d0Vv}h&zf(jFzGaA(5k6v5%v})c}Vt1a; z>CcD(E*LPL>zde%JFvyVO;B;rA2{ zx)D#!N>z1PGchyT`>dK-3Qqq*`$O2Y=dV}ie(9M}&j*TwY%Rw!Rc=x-E#Htoe1lzq zP+aWjNiMQA)ATr&Fx_Oo!RRdDw$L(ub=#?WHRy@r0Fk?d=wr)#Sj<_g_62yIaiHY$ zCRdsMb@4&Np@(-W`6fb>J!y7QHAHfV*H((?=2BSPh)t6L^r)q=N++akjN^_!l4Sa9vwd`|%f>``(*6^V<^I=!B>L*3)r3H(e0v+|*jW+9agXABvVn|mI0CLnp)Doz z;^D*9ZUnbM>4{>7Vr_hg`}bXx_DGcg)vJ z$xF@s{&|_t&EvqLJ;2>=@hT})!suYZ2+y{}l~QEIuyq)B_xbNlu%RNk$olu{kOZBa zm(%p0m>(()vqQ%{`-Y-;#J<36sHVSDJJtH{%o$1#@8G8+>rXoW$VGI=EfLt$@x~fV z{& z*r#A1y4e2S&@)_zHyp9t#<|A2MzibtS!&^y%f~fvFw2amF?|Gv`LxO_?A|3y5Tl=z zcfoXzGAQMG+s@vfOQknpT1wqqpl#2mGkM0gTdVYgj5an2IEN6i^kmf^jJ_c6OD!Jk z!N(32b3;0cvjr*mb0u#;S=8CG53vq2Qmd2?18b|_=rUTs@H5LevNHo6S%{ZUBgby_6#mPA1x zRsmrb-L6mXxto6M#_sJkJ{3H{{ipxF;b^Ej8){!WR>o4#D;b`q-|C^oud& z^!pD)(CW+sc8kMyE;6qD?UwljTu!V;%5Pe9<1^RmKp^&#*o+vVL0d7E#66O-5`=8l z@&=<|Mj}ks+>*-H9-^189wHjCoWsnhbvZ3jIgx)^f%wH8E# zj!S6J$$a@ZdAQ`aWY14vFK|u#yraf3mb^dVPJgd$L(l9dK0h&hdK3E!%f37%!QB1^ zuEU)VWa_2;!c|LsCs;zYKX~)PAIIB0P2l5i=Ivde_=0uqN%RdZ`Y@HL?OgBLC8b*H zv~OXv)ga4YQ?PGyzU^Q+;w%s~-j*p8y--_K@I5VQsxDZ_#ox}*@znz2yZa0Kg#Z%7Iq zNdLCD0RFvtAz#{+CoWw`Ty0;nbV^Fn*p0asCS8hBY(y)zXDYwge2N_@%dRD|WOL>Z zEP6C>x;S_~No=MPUx|-)NZiUMcixd)368GG-NvMLswc2X+?I&z#O`mjd}{-cH_HOlGujqThqDEk=Rzuk1LV2RAbD_gaHW7quLb)b~f{Q;FYeUlB}XS zchkHEd1!5cw$r`TXolpa$!&_zTN6_kmK8D%4Pzg_KoJ$teTBL|JZjln4} z>J0Rkc$FP$HFU^oC?(c!X~R?T$Wl;RWG9JXD0+@;D$`8xkdOXu;364a!*{ey7~7sy zPyDmeB^RNm+p%$!!0YH6uS~Z0cvtjs`J{NJTt4KD&AR5&5lcejiZ@l`*n3zU#R*}c zTVdDER^IX!Ow@NG$o*4uFK61I8>Ah3KW@MeMDJ?k@ zd*vi-dPoAD21QDw6jZUnmOq6uH^;)0wz)<&GN(b+bc!nZOF=}rn{s}wtEzprHr~lu zvdVd5>iW-ar3Bn6ziK%hRkA;2x118Dm4o5kWoKhg3B)3_I>{r9jyDw%kP)$&iFmnq z3w(^WdVh>*ktQp*9wmK^ z6%@MFPUyUu^oZA}J|Zb8BhHE#cVZNad-`xJCUk?jz(7r0#L8ok`!_WDwLPChJDgDM z&=3VLf;%1w2>P-q>pQX+PJkj@N=l*Fs+Gz$TFY&+Pp=NeJzLGUbXvpjW)XG{#j{d3 zo?oHJBqZz-5{R?Jt;r?WB@$M_$&4pu8)V4FGqb4C7$_7QGl~0Uo+ZY=OKaO$EsyRy z+b?=5sfr6t2IF*kWz9q`)88p~uh139AkauwF2t1MARde2m+^rVtU0(CZ zml2S&ktV^h3~#juZDc+@(fFGlOy9Z;Z#1-4`^k##S-c#WYj;u zxjQ-;TT9rO*!}~|R5Ug<|3=8ULy`*^*%}yAK+?%M7#TbK1rn002q}Hnm7MMDtcD0<-QP%m`GgMUc22eqkWBvq+tGddR<;$B5SG!m`wz?Tn`Ed4$-=@4NvHPB zFr@!3Y%G7-eDsivY;6A&ZAcc#zaX@47OLhqfs`JS=^KLgPhsbPWMOCeN9k|_U``;A4&FKHBvVKRU z|EK=f;NLFTzoY%tVf$|TYxFOTztUg*e_8*R{db%8cPk|8-!R`5&Hsx3?@U697y~^$%XcDl0)HWvPTyIx|C?y(1WCjA z{S4_Oob;{C4FzmWt&G3(q!ZG&6E`+DHT%|O_?|0D-!oJd^1Dm_#Q0|Deb4HD22%0A z0bsvJ^grO+|BbWv&xHHO^8d0Dy%V)91L=`Nu0BxO&S@h=k*o!R{xDn{;7weB4eT#N zFiAF{eZCDkuGU=S0SuCH;9XIX?bLWtT65K3Z#=XIgtJt$zz%(GGuL50R>QbWNLQ8; z?P$7MfD7hoP5vLw-YGcKF4`LHbka%3wmP8>gQ!PONz7{&8FzL6FZN} zb0z;*!t;Mu^0FJ!U0LLj*Sqp+dGpkn)61-gE0{PK0ZDL`s6D{nT)5vdQ1s`|z-jS# znH)q6Q4^IuRMcM%M*Jm7`K10v+QTk5n5bg7xR@e{DS&7~%J`nI)=IlDgw~AhTc4RH z9tn3~#pR;o*f*mOg5|0SBRaCsIoH{H>fEQfvtq1TVc;m0bZkD_fF(4jT{M) zFPy>`CLq&mj`>j%{MPgrV&2EOh1wz+oEmxo2mUz38C{;nS6w5Yte`i7!o~SItz?>e z`1}%%B-vj$VT4R0Tm+B6+nI26QH)19A|7c!BOVR^%vA@;QlL82xs+Lg8WKp*eYsnFMppRzHyKWMIk}`Xk|E`4z5)bk=cEP4ZCLmd7TiShq=4 zr>y(ZJ9>G+wp0sU!>JtGrEH0N+jHX8-?2ROswix(%zL>qwp6+!xwZtBTEqjdK@IrAf7HYyOtwQujdKK9|=MKiY0?#`%$( zTbg#FcaN%PNmDY%3_|l2VN(BNB4BWPkHQ;LudqwNhkjl2-j%?n@Q{9yx`$C>FT~K9CVeEy^GAH{AeOXj@V#PV! zWsQ(Eb!8&ZlIPQx)5V29asFcS4)Pi9So>GkL-Vo@PK{1QPi1?lc3~M~A$oQULWnI4 z5AtKlv;URKc_ir7$sC3FmCJkx^d6-TXTa71}HKBjO{) zCsZNv{c<|&7OIIeO%INP=9ukHYxdRZd2?d>5O_E9!WLQTtOibgm+Y02KVN;J!mH42 z8M`iaSrw~NR*q&`s?Md9m2b1uVl`tfcCY9Ys$1u0NzGR4@ZMgdw!tTel8Flynwj4T zXFjhIKgiSc%M*a?bj?Woihl3ThdV@F{8u_P$`{_WNSy?GVA=@1KEs+rtIyUDdsW98 z+6#rK7o#np=lIT%H$ZNm>4nAn7a$in2&DZ)@{0mY!51BmNv0;&-K$J1mXaS+r5V6L zCzFh`#9w%tWZh=ohC0f>D04(>NU3&KKrdA-axI1}=A7v@J2mO;yG1=FFIRr3a8=|i zw&zxsork=VysCZ(39*4=s0>r?%j{c;@kp6<&))rTdETW^588ZY&CRDZ2}_9YQ;zH# zy<>n!uBYrNWh4pqxC!^Zr%5O)zX?=gQ&}bI@xLtnypU^BK8C6;?8w7f^YR9~Qu75p zHgKjE@)m2Cc26={a8=K7_JjdV2Q0|w4wGI)LsmzuseE930D-m!X@6gua&S$BR+p^* zXi3`L5}W+&43(^*(KeBFMdK1Y0r`;45kQ}x`K<4|$HRr%EE25(g!ovNZqOIOFF;(t zJ7-%gqu1L)RnIZ2XEe_~SxKmOYgRXwsK-&%{{hVF73D~Wq2iarE7cVe-Sgniy9yMA z4kY5iOep{r`2K=x{!%wkH)%pWw`I+VK)qvVI*=F?x%gS_jBYK#pz4AuQ-JBrQoZF# zWp2~tYo}u|Rif7GmHl8kvSwNxZfc)AANAawuw`IX4>$Av;_$gBXAa&xZ#FsdSA$`B zz`!Paw6zSd#;Z;`#u*Wi< z#2i?n$g^xMw|cYtD1KCwdKkYYT768`z#7{ttIh9M+=^*7hA}5%z8&C6NpM_2{_)53 z`l%X{f=R#GYwj4MH4JtSdNwyA(>7?yQY3GyNbZk~)MFLfh2XEO=#HL}J9BVN41Ser z5T5j&?KD98^vjP~bYM(*&2e=$7*gdCYvW5|L@$KkMs+ej0 zyYF2mx+n%|P5lfXD~`9T4~1n^H?6xZXr@V(JW2>qsCELMj;y3(tc;Lxh&=Vzz$_UK zm(hK;_mku!@(m63k>Vt0o2t&tR@ODH`YHp&uQmF0(eL+>exOmg;8MKLC= zMN69T7C%J_+C5zKBovrl%_tOeBgK9tVowiY6)6HY^?;GFdk%~kQFaDoXs`J8MI?Xx z(l1ePF`CS7Ph*{5l~&=7F{4-v3o5f&SlSA|MF~)(rz`FB#|F}2t`8D~u-G{Y=PL9q zRfk6PB~?RC1mwr?IBZ1gEwvv;Bbz2CGXu8-SoaF6PX)%Y@S?}kM9hP&Nz3DYWBtwO z#bLnGL^eO!?C`W{Oe@+i;N_Q1-kqPB4sDgWz6;bf`7k-9{>$H%( zMC9Z2ld!|{A(Fq|McZZMpY%<2g#hl(;abs|YMkJL6~W**BuLY6T}=htU#mG|{%GN7 zO75Nv4I&ZAO_G3oCM);li>0(h14~6U2#fcWjF^fF)2QY=MKN$yx$5b0nA8%JCFv@0 zJMsLb{W@z&22hH!W0ZT_>*3H}8#@sVpjRic0U4JbjKon<@`ul^W8XS0)s6WGeZ3+e z_r;vhMp(pnOb~NtQQ!p_zLpqmflTy7PJz>iE>+z^!W}#CmTOzpy=Qj6vEp5xqZX7( z*C;$&p0JSw3dk-iL*K>O)AR5zmZZwV8GbrN^1>zEeE#Z2XSoB>c-Z>!dr(Xz{<0~P zAOykBv^0H(Wr|crjJVBO+l3u3|I{MJ80}~U%p+&iBIbZt7KvkmkmK^gMPv3LhdBFj zFrTRGLoS+)!uQ~UKp^#=X^m;%B?b8}<%moLT(q{1*+h%uo<)QGXZ|BM7fLj~LQSy) z*Wdz526RbRes_Jia%Yew>*tALg&7zsd5N@sfP#SC=E-&Aa7xBY68BVS5vWq5i?F?f zW90XFWiS4DdQ(s~BzKkO@pvQ+x;vVsr|fuYh^{$BJdUc-WhbdE8jY8(s`P@a(>?Ib*pp|dzS zV4<54n)kDf!SI&ly`PHS{8@Hduw!m=V$ywnF%1a%NV;AOaG!4k3 zx~}S3`(%Ea-l9k;wCaTv*CUeAkkPQ_PS1`(1}b?jp;Uy7BCoZZxf3mPVUQZw;+Y=d zjnM8c3-dz3FG8MEsM|G~7Ds6{(xkAKKHwAeT2PxcR6yj6z%xVjJ#`r!Z zc6_V@!$TTlb-S$TfFP;+Tz8Bq)vD8rHGnYN4gZBrBPA2Mhx>s7U31#DGYrYfklO`{YQhOUwls$8#Hfny?4RiJY!dyy15pwter3Px0>9L9AZ(Sl$IiiJ~og_a6TBFB1m zNno!mbgF79jV~hu%2&g*tI%97Gd%DB8Zy~4~%i%)Bk*E;Evb;7t2b#(N0 zbi@Oe7+ZE zDsixc#>5yfm=@L%mu5ULcaEU8C8yKzB%Mkns+6FWG~N&Xn*xtwco$75&^M^Ik<77)pAu|r(?yS}bjdTOcaZ`hrTDK0Cy?CAKn zO1=uyvXo?t|wcK;)_WcJD}J!+rfl46Xs&fwwDq zv*WaXr+lLBh1!|>ehs}9a%?k_X$0}a8l{G5#@@VgcXWCG9gAw-RUgw_R%9wv#(|@; z=r^x=NxxVpd89}QcwtoGlsSo}3wXM^I|7Q{!oihQoMg2bNA)~|m{eS7S_}WhPXD?G zeK$?9MokQ65DP~4u(AZ!9)!`dmAv>|KA+IM5E7{G&-{JH*uwJM)Rg zGmgN#+ZYIBYRsuTQfymDsTsbMPcMwGwK(bAwa*7;66FI-=|_EI);6PSBWt5n&x+DS zoEYM#=4$3Fnd6|~OHfM*xYI+*z?p`%xPZ4t%`G{JXK@gV0M%I0gd&A}VvLwSIikpz z@^3(!YO*?g9wEEd%Q@F(o}r1jxIKWCRwP5sP}9X=I!Y#0$)d8hVj<+^#CYl=wUjt5 z!PH`9lgYZT%$=2sX1A-bQkumqYi)cG6|ff%Vt0(HMlftB|BL(XR9M&V>+b2b{HNz7nzhF+-(MxiybSrAS|iluGdVf~?p2Dgld_zZW! zREM#!{biAuPG=r%-4rdsfYd z3@Zyz4j81&?OZnSkZ=c`R>`ST>z-Tdnd7U52CMms+!dZE&}8OK~}Q?S<%Eb@m^*bt-;9?Q_kMn6vVX zcccfyW9t<{-x5pZYsuz*jZ@AUhup?>lV|OaTqIs$8V5L+6c3n?PL=N_oa9!SWz8ZO zHup3vUt4y{24kpWL?>EiuF764g{XsAlKX(1M`4ZxZXrnvi3Cr4-P}{;&v=3UOwe-2 zC;>`M^|xM&hy5zy^56b}EjIY5;3iY6at(jgpOpir)T)bM-?c&Vgi5tN7)PbTKgwfU zbXVAc-6wiErYKvavT~hOh7iphJ#5vo14v}4Cc^>dRL=DMv6A!sGqjYEX;ed>PPztOUbg1H_Gx5fZd#_SveYuq?hKju1D|@iowumcAU(Za zuk?XnH^}w2ILn`*<^J?<&9`D_2E2ze$d&`?>J-#TL$zj|4!JC=xwE^oZv}CJU;Z~w z6nS{~CA54E!apL_gLroSJo;l~%eST{*{;~SS=-xPm&2L5<1mEMt+<6aIb=7mKSmCo zFRH|`N>A%Mo6_FKvA}U0^1)7*jdgT)x-P$nPyK4QV z9Qquy0t#W6ifD^?jWmXjV0hvkh=a`Bo!F3(dBqc&aILcD)3`Tmw?a8z^4$#j zeja_oKE%8T38sZy!EEAYLND;Xy~UeokO8;|x)2QJ00Zktj_TH?=bBQ2QF0tgM(9>{ z7TmO~T_w7;)5fGPOpzBi7MNS{XhsE)(}Mu;wJ@rb)c+%#o>TR-+irLS@?Xnd&?{becK0 zhVtK^FyyP44isN0CMtTJ4iNaT)JR_CCV6dlzPBwz$!!m!`VZD(~?=w+tncb{kT6wi>NxiX@Fw?5#mB{N|nSoxdNy=20dj5R|-;&NAe{z zTsvF`z{MB%x?Izp-+kcO_d(kYiT#-R#`L;+`mc7Y%*KspXRC(QqEjcXT~9g3XYoq2 zfNG~ls#~LT!li1%;LQ;3C}MfY+KW-7Y$uWM2XZn+M^^)dbq;H0M8E13LIb%Dfobm_ zjuM_g5l)jhjDLVW3$DBf#b*9SmBr!#92TviqhC<%pkQvCz2pG~H~K`hv5q9dBJJ57 z24FbTU||ClqV1b4yMjcK*kQkyYRqfN2To^kLks$B4&@as`bT&B-qHF6SsDo!P-pX^ zJ?E)WxWEgq{O!#+q#|P7t1Bps)-9EMY-}nhY?^z*7qD8ybl=n-@%#)AlMF*LuomWI zb7Ti?X;)}f?cAS<@$M``qM)!*;m0wuFxUH`w#{sD4%YZI>Sl*$@9ZbH!nz|>dblHK zFj%ebBTNldvAxqQ&EtbU7X>RH#GKTXzf{qcP*s#*RFqI@aNz7ye{hT@``d<-3@Hl* zge#ZY4^<={Io6M6;o)SEkdqi+xEhTk$$4wZi(l#?FA#EfR_!t9F%GA%|& zZ&l-Gh@+-vEfh;L@w8AcNZ;-4O3{p2A3@_O!MZh7wW>3WCZVh)77E)X(@zDL+xj@+ zcueQcvG_ibvW?JM7!)z{NRV7DHjq>o!#(bW5|WDnx+W{eE`p3%Sv@Ro{~42Tlx%0; zhVzAj_I3?4_ghTEkHG!@g3+?(O~q|ldM|2zfe0SppyTUG$A)HF{niWG6^DMP*US^2 zAkSDe5{1{z(j$^pNar8ght2xy(cI5?42LmWhY_kFAuc%`%rU+6P<_SmAvLJVOyBiF zZ_tR0Y~RE`@Be9Cn)3B(<&{a5(sVIvrl2c?>En0#At&2&UdorF#M0_W*lFKu#sjXZ zmd*4xk1f(~^>|v#Qk4hMQrGK};}ld0r%05gHrvt1#MAYU&%e=vf|dP9pY{?VGW27Z z3kGDx3@{t=AlBkpzA1+#1{MbviAJNN!6}K3bvKjo%XinOyRBm%zq_78u3~&goJhXp z=Nvpfa$otqH3u`YnA@ec!%d7ltaumSLXcMWiS9#04TViW=eB zkv$|y?vFwdNy%0u2_r+PLN|sK?eu}RRdPm!Wa;E0-*bAkPW?7z<6nueq>37(sG?E) z&PVF*N);BOrh<}|F7B^`n6fy#w{dvW=wWT^pf9^jIOgtB*| z3k8p`K3DDL7ui*5x|%Fh2_y&jJ`eIIPN~k%8F4S@L&&7H+m8pscgJX-H<+md%I*Sd z@DV<~gvM+#S9hoEov4FLCoHv@ZDSHiJ}lqTo?O}6961l0sV@6M$w*J}gNezFDNs*q z5vUYy>^YFL8=^FnD&=)#a3A>)N2^%j|Si}djhZRE5eJ-pz9FB zj@FqZV1CVq=AgNUNlXN`XTZbk-e#+2U8r_*dUI~70#58F_SDRxSo^T+2G&R0r~4Un zE&8Ti`5Sy|2S9)*m8-9=MZS^wO7K24_-fi_rlRYt&al-6xNWZS3Lg5;2i?kPc7b zjO0nEq@gM0^&5+}PMtPqrLIw9&gpXuBnWLbh_`Z`=gPKS*J0%c@Z=rL(#sFSd@ zr$7uuEKTn4kQHykMR^K6;vfyiWa>qAfA+bIl&;I+kyWtfL88JR9NnXH%1W9h%KN)F zfWz=);G6Y;gt-Ru0$kyw-1q6D7B-|!UYd5598;)B_2f0jSD*X2fIikAZ?hrqv(N=( zb-GNMA7_;%M52@E$71+sy=2!9N#$$Qc=>;IEqk%UYZTI6n8RL^{x z*Xm)6IJxkcC^aPZC`6(ud6?{MWF#F4VTD?pumzZV^0i&#)FciiA3?vQjwf=B%@r$5ee1>jo!D}N_ENZ1N{+ zRjt+A&!FMLM7G}B*unfEnr~?t!iHML1&zaliEIJ0DyOTHylC*s*12Ar}WwR~62I3?9ivlrWxJrG4@wCHFHz2xNB;-vh?yqid7;S9T>K zGP&%UqilCJM==^Nc7d(EbdN$m&6MFZ3xOJyjVd3^o(_#l8_~efY4X*`WE|0iT=~e? zpxjlP4Yl=0nJFYfA5dx|TI_W}kDXc(Ep?wOVV*Ia!en+yZxRhu?_#6kI>HHDd8j*5 z_Ve4+L!0qVJ-<=+*^l(kbguO8H+O!y-*+K*mGL*qTM!vUmfbK==~N)MU&}^P1(`T#Zxk7E~nJE z7F>-^j*dgJ3*yOCF?Eg7@=iZqbD|2{O*!PD?ni0HSi-Uu6w}`{uOQkbrEB@zG-?Ig z1O63iQ>jhKoW3Yn3tu64r*r`;5m&Qmn3>X7HuFv-BR%WeV4ZY=BMQ684BXf;EGeh?m1R z(x^qqMitX^LTk4?oa120xn0``7H93Bg2HMc$Ako7yS9TbKM7y6wvGaaZCt#ab5p0! zQpXyidr4WHCPf84wYG<}<@P3%oK~r#xO$hR%!z)SL(q(7JpAFxa+iYFu{s~{@p@7~ zWraEP-Ew+3hsad#4!c2h#Av$*nJ6YS&8?H;RmpYs#^${>;tcv-DQ2X^oI+N2KL>}8 zqhi>NYdhc0{@<0Y>(##B%9hiW6aFIHS)QmDzGGMaS2f?c`&JE&bM<_k19^iYbWvhR zIFd4vL4AT|nrhzg0(XXUrWPwu{cQ-k53(u;!fuFTgbTW794Bww(rWORm$w8?s7M54 z@=~{$tZP4op2_=JOU#!cNkLjq8^!&lC0g6%-wE69hi};5Tw(NaISHZrLiK#avO4F{ zYPH>JbE(1rX3o|vZZPQ5z5nH!;tkpp8@X#kGO@qkc}{GCI;=iv+@qTBk#mw=CTo4O z8i@uj;HdLe%rh_r`U66I>SXqCPNoRiYTfX}h6=y9Mf zWj_toSV+@zn;W8HXjWko{QBJ-5*xCG$x?9{KR@5}E!-8>VjU=0`$rLcyupseYpa%_ zEKFwB)B>8NguZs2X+sIWtRtJj7Lc`l((#RqNAV5#4X&FOLu zShNF|R;H8D1qV}Oea0nl#i(U`?5HvJPa$675qmxqT@G%^jk7A^%A=)*-u;&+r%H~A z`=lhPB-WCv3Hgg8)Kcnc^=!N1fufLG!Tf>>fssL@s98j&^^EKYL^zb&4J7I{d!FaU z&#n_*%CE#>hhC~EJU>7&HfA0rEHQE7!FG#brP0g;ap2xYOdo(Nd|at|OW!opxn3=H zuXZ!-miEbaZUCbS%jwVA!NZqR3*h4!o2~J-)|%DZb{k(4)NMQ7xldpw=tRq$G%wxb z-s%SPP(|5ENf&cVqS`RtLFm1Z;ZixVBME8mX5dUpQo6XIC6B~>PY7;fUW1*iSf_zg zJrUf|vxOUR7dz)#^ZGRi2}IB&47^wG4@Bi@+}nd}sn(nU#rORQQN69G66;LnkA9oh zn<;|r&kUgvTJB!WhCZWg*^7=KdRaEF?F%V|NfAyr%uJ@3M0Yk8RVfyv>`m;a09F&&qbqfW|Va zmCZD8%Yp2o6KUU4)^+xY_VikLbSpLXI(r(|y8M(gD4Pl20EGg$S(W_v@3?s9i4furRrnlTr|FbTve8j5NM;>F?Nm~@DYCy2I+BZ4)2#3&H9 z00=DU*K&n@W9l*YeCc%G4KgD8Ed>S8-ujWLOLtLIG1l>3&mwXxWjD;XsO|T3db(|p zoClDx%3{N82OAS}9C%pJ=xE)1Y_oxh_M=RLLg?@`kQUmbTX~$tV6<6SxQBDy*?TT5 zxmD(JIO1nrlN*z+=?)4Eb0N98DB{$T)l$mA$h2_<93=B>aZ*6lL~`3c2&z)L661<4 z+$okE?P2zPLbMU^qzvACVsH5L#OrJuw%d`WlAQ>?N2$;EcaOBV8$2HW?#32+YCE(Z z*l6g94S%V)lH{3wU@2vgZh8&@Jy%R+nyUu8l!h1<3SE-j!=+kJUS{se>R)#|Zzw#6 z9!A(bJ3--D(ZKMdvlzu-}&RllZ>A-hwn>P8d1y**%83ug##U&uIr}GPkl*Y3hA`LUzf; z6P6edGmqrEaNB3}RyLgMyD#oAS|{D=txWm#*h{4%gwN;uZk&~d!&7WxkSKJEIUsmE z|Cg!Ustm&_gfK7E0 z-1Xq>__v7fB0G0PzC8U3CuzuwukaLDumN;<66f7-An83cmiz@x@9M z`r!ufMmXU9)cy77dZJ~f?T2-w6f!S2ormGXOrH#p93V)G$4Gl@c&Pco477>1V#}{! zDz6KwwmC7&Xh~xIqYINPIZ0M(TiiabFxe;DAqj}N65+h*>17x{(vz>ul>sFHST6eE z(IdO?Qau=io&-I76W4rTbgp|>g3=0X(1{!n8wWj`Pg=2z=b}*kbnFIC2gS7hL5uz& z^cEs`l>TJ5b})-C@5;Acfx@5V3mMJBUDt&0ekYHfbQye1APsV$_cMbRiu)Hg%_~B{ zA`|xCTASi)o8^`K8-B`b%6i=sYz zXv?csM=Lvg_~Ia*XYdQZSUn4?<7b=;8V$RJ&(JzZoJj>sWc4T?K1CR03zTqAXf&x} zkbUAW1zQP~tGO1vO7bNOFBWpfc{v_o1-A*6M@3FD)#D6hR+}mZ)V(&WirJn!C3M1Q zMa_lLF7H`7kX>Y#SA^vF%AA(mPPGqboNHZ4PGm6jpy%oFT=1>cd1G9f6!DH6sojAm z!fd}W-d0J>&qZChj2q&vQXMx(I;-B&OKn==ECzMwTkc30-$BoWiW?jcZlP0bXSnVFP+Rux z=HUR6N*69U5GWuatD=6`!Ha8|00yRCHRM4_ws{F;X??4>`-C(Oh*t zayGCVj19SjUKR04tLQ{;<*7oA)?Th<)KQOzyqp^AAoF#DubsiAMO%DPJ}T8hCPd4) z2NAESRa&QNXJJinK5+`J!3#@}&b9RsXN18Ca9OmsMaeFVeqFCDG>Uf!TTq_pLucSL z^LdEe%Tx2sGD^x^3CZ~3~*c9o*LiPm3O5P=B5pT^RrNg5>G5c zt6?;qxM$iTS>J{+F8V%GsN&yJeeXh;KkoLN@T<3NGUJ6R<0q;W1Mwl{N`6YO*u~v3 zw^=8aVNqAk2mQQ0LKWcF5!O`!(@yD%SC#+jzCs>uIGnAKY8H{IfhC`O)*9CkKH_>* zeer4H6zj*%=*#nx6nXSIM9Xov93)V(pAc$mCs#&;HD@&W}iZ3129cHmg;m7o~WIMm#Er-V40?nXA2Ed~|21_NOLu z@s_h7~IH7(g-0%R048m^Pb_I{8KRH(ee248Q*Is?hO} zz_FrnhtFGd!h@hjemZ0ecR06Tc8Rd|u{3wwpi;Rf>1_sTN(9uTo%muuPccOk^iwsn zfOQ^bNN^S6ACwPR-mg09^{+6WFs?9R(sEaaL^c99$T73#XYJR2E3Eu3_*%^PIUQvDcYrn-$XPPr#tR{(U zXs~B|gHHa0uOHXM*Ky*yV&Sg7)ZIjja@9Jx`_ ze09BFhJK&Gdm!NFBv5h3km74>G51N{+Bi49 zN3ql`lka5w2f^L+>F+cs;k}&WhqS$NH(4>^`#(R6(xpKj@V_beVvYFde>oQzb^Br1 z**%rfCrJJ&Q#cd8KODdxcA-Osy7nAo`}2i7j%pq!SIiBfp!(zQ6q0|n8{{=Sg%Uqz zT-VLtclrQ0#~L(870q9D2WfZ6b9d8spt_2AK|Gv4@;nGjTuX6RtdCtbIA{!|e5<9) znicMqTt2@b)w$?E>3+<7)wO`~n1Sj1>H^EVf_=soc&>cf&3=H=ky~s@JQ-XNCM)ZQ zGl1uP`8`ickPZ4u*BjQvk-r)vdm+|_=VAA=?q}8#b4ULpl@bCz=8=upY%LwvB;9lD zzy=4ypGiN%U-szzejxcKWVye(f8Apz!w1%Zqww~Q9p;mStAWghCHaYXWBB`g9U$x= z`1|GtV>|stcz^m470h=_bUgc|@rryL=a&`={86s@ntft-%rpp)A-a2kZo1PTV*COK z6PZQe%WJ`1zv!Z!*gw9kG06rS@&Z~NP@WZaOq%=3n2YgY^;BQ~_4_qd+_yeS_$98n zMJ7URYdqKWyPfDf>D4`ozOX>tcm>6N8{oP0WBJUxO85%l zajA~s$U%_EGbwWNEr_}Lne(*wg#u`D`$~Jd&08(vx?1?!bT`h6>*a`!`~`#j!RmLC z=K2WgOYte?d*z1(yl`_4XZ!sw-4pHhC`EWP{Veba??QJmQ*78RGHbEmH@S#K*BsyBYCB?Hp_5j4{(n$@ie-*T*YVh-jU1BI!tQ_NJ)87W?&5Q&)UzX}kbOsse#|pygb)`%BfEfIp4GMze+*R3 z*5eD*@eVl3?$~c!zbDl=`sva7PMZVG#RqM+*M26pJaCH}3ojNkK?GDd*j&eb>`Z2M zU^Din*!ob9TYYj$g2jLAtFuVdmEAn>3cuEQhe_@h|0i?f7wN|*wngw}t@-DwY|yvl zc#LOwVHeNiw|o&?zHYDn8_&|qxWi(%$Zc%`&{$Sp-Y1we%FUqG#yRTlSI1Dm4LjMw zrYPrTjjk+PXXq?=SeuY+*@Gb<@}er<=S1x4b5O@L4$dvpaWco}=NbT{zAC7O26rRo znnRSIb$aqKn(JKzn<}(BImh*#uP`ESp+U3%? zSj)tIXfxR^iROADnMXUAe^ly`A7pC)mJfQh96oZjA^qu-%_9E@bmWA%V^RH=VL>%o zR$F@Go%NvYh50Of8+${iXr>nBTeYSCLVPG7mRCsgG|F0duhL$ST9V`T(+e=qPd zec|MR&Z@f&7w#n%H7ul>m;G~Dm8)8A@zPw1zvrnjx6vVuQ})a(vL?&o%uTt%HiZ+} z41gT1umURR`Y<~O!g>_tW_SCMTdb&>Cv;V1QH@j7mbC%b9patrb?~wClJGZ{G1I&{ zu;Uz?^OT6n1 z6&QT^WC-&*spNB%{+>G4Iv>E!-INZ(u%p-p36k`r^2eql5DW2Bc)ok^&A}7FEAj}PX zKI}`J&$sfQ+{1p^yb~wrDaRM+$8&{eand7JdF;M*3B@Osm zdOxrO9LoNz|3$j=qnorH=|I`7w&z?=2JF55 z+T0U0QC*CvyA?`9?+IPH;zK=gCBt;|+Q#)8C3}A>DTN%G^~JVEG{~_3ntMW+{#@=h z$fH=ao^X_E+hol~u0hG~o!0Xhr=5*rC)0)TIzjSk4nl^cw61AtcOows&~0AzHS_7L zcjNRdN>vPn!-sQe3*P=?-Nr4~e>HJ;uzle5fQiIYAJ-M}%%?D7dQt%4dWUsJu^taJ zIf?>mRMYey%WoAs{G4AgPw{eTUxn8;laJvA^Wl`NDCe7chOSwnL)lIn<)Ir-k9i)t z<{IQ;3_|0$Drg?w7*#Vzd8|TAxF20p1uXw<+Co7sh&56+>I%HKBA1dXp`Oc~%Nxv@ z?iJs-1YY5z9cyy{1>I`l_l^|)oJa>(t6W^sdh>9f zqR+Ag0n^C9;XyC%Q#a?r1m1`z_dOk~vv&Dcy@3W6C()63HM(Ln{geB@eI{%!kzQ(Q9eX49^a&aYoJ zEzp7ZLQg^-M{!$Ou>X5BY4go^+OU6NHK-coVyC?_w{8jn+8ktl$OdzbzObGye8r1y zZEhRB)$qxEO>r?dgbuN(@ZH7&m{5UXVWNBLd39j~-W=z2h|cb@qK}Qb@1l7TJig1 z_X*-LN1Lnp<92#`H@lFnPwp-3a>TR$Dbl(7o%Psk_7iqxWm)ZY1((8__)pL23&Y8# zd@XjuP5DF0%?Sl1fZ-YQge?##dO_!VP89|qDggtz_t3#u-tTql<@2ZWC(TzeSXR5$ zQ`52YDX9gDH@H=&9Vg+x_1Jd#vaNSxUrGyp3zZB@ozPYLznAWs{m9FKu^xy$b&S@F z>b^F+L2m-J>vO&HbydD{%ch5-N#>-Tcituc)?PeYst+n>LG>z$1p z7)>^PLg9LEx53`i?X(N$CIkaXzFVD6?3ZRq?z2#t?9UWaHU`9rrr1_bl zw}OT%-VUEwcI|wJT6^$+=mk7MKW8V&`e+fIA$;avMbb{6tqBq~Y%Yb*zN3-g^hpE`c%J=_MfI9B4ZS>j zpAQh*zl67vHk7>*z^&L68ghjvno%kTHS)FN`gpZvcntgopH`Ck%?jh$H>S|Gk)!M) zQhav3?B0B}Lm#>qMV?2SU*Po{j0n^*o?|dJ=Rd;U{d7gUrQro8Q z^Q~BX;a_1uWlq1&8>wx_cg1%IpuX>}PsVG)L(_FZ2rdhw@aj6myM%!Hj}B`Bpw5XR z>G(%3eqW{!{M!KJ?S@;Sg}9vmhon3p>9v(m8~^>z+T)n=>gb&7ohOXtTE`3$puA?n zLw1q<4wrC{bEtuPWjV0{vdl6kPaPhnS2a>DkmJ}^N zHR3vtJJ!*!NwqGaJQoLj^H3)BM9~&y#LQ} z{DF_1yht~ef~N$g4X_9xsi=uHjZdk8u?#k-sCg;UyxP1BZKu3GVCpLVHBn;%^RFk9-tyQWZm zHMt2t8~XeG>Jh7BX;^k{D}W|qw!&c4M|1QhzbPf!(geHSp=IlIz7Fx2%fWRO%@^Gu z?}N~+omi{Y)6lxr0AHJ;=dShXjc3m%D(3Ci0UI&hoahV9oz&h}Fyy6JJ7K5Zo4=|) z-Sy+Cxz~4tpR?_YXNl-H!|R-u8+z|1?v@>Q?-x(&LYPAu;pG5w^8^Jp_*MufZ_Sl! z=NEKc^#x-6Hq*P92d;+{I*$|j%x6P5TTfe9fifaM1 z&Po55)bqU`x<&x4^M9crddFFy_A}I}OX#0Xi@`b4w(JsBM znp@K&-Sx-lAkzxahB*0ST3KKX!VZd2*zixbpIQE8KX7r^W$}NY<&$fr z(8LtIm+yioqbTL(bNlaRxc7jo`v-3E`8RO$>#b8zdb;Q(Ezo2F=~R zRzbSJ&6&|>Wc+`T|F#j>LfachJKPej+t#{LyecU9p>|b_LHfBru4*Ebq&9vOTbllC z*!ZvNpQOrJusv^|gar6fXr|Sk7*6T#X=7w*4{Ve_+Bd zEHXC|g|FLe!-JAN+stSw!Jsm_dJd??_P-cRN*ysx67)2FuEX9F&ce)|j>ANzelTYl zb`4F;>S9KwQA8w%T{x0NL<&$PD@!H~p|N`QUs79NtW{wU;T1d^Ct#3dO7i1I&VAFK zU#Ln`yr;-alg|NCVzvhN$Wp9OgOKDcF(pafjB=H=(>2m?#s*2voNqcDTNx1tvVS)` z&xwIk=#f%&R3oCMj8GD#I7caj zpR*-PQ(Usjs7455$heAf9d)ToFKKXyCJC!xJ`Lk+k(onOV&U^244`dzA^}VD*eN2< z9n0|0gkcY9YgyZcgbDAxH}4s9$}gF*p1tA+w<)5%71Ge4Mb<=qiNI3^T<{C%>+kgOx2J9Y0R0sbdB5_BsUc?__KX5?C{>RvZ5&su`n=o`7U3>Sw-IV_^zrxfU-4EZX!N5j* z?JpqygEXACz6SjNK+o}iGRINa$=!#3KPPnSFMdtvj{QZa_Uii&Nd9le>jb)(o_*02 zvK~bp{P&jXbxU9?YFABSt4igHApbRZA0n6-0*=7g{}_8PlK-M_Gh%9Q4gMdb;$-zT zVEzXhj@GG>od^gxU+s#YBT55)BbB(TRxgaHWT%R+g7YNzEyZd|LB)U)i2uXdJpf74 zybGfr+qP}nw!LH9+Ocih_KvL`+dIaNZTHOFdC&izd+&G7xu4>T=%|XWs;4GQa%@rYjf@S*1Hj0p=Evc@Ey}C<0MC3GDwDnNDCZkx z@oKw-KY^5=iG3W^7A(9ODQCR;BJiATcC}=CX^q5}Qo>d2=Ri?&u=DT`Yc7oGGn6 zkid~YlXvPD!_sgg;q%Vk^?qMr!CK(K`TVtdW2D5_oe=Ae{m6UzYcv2B2I1xSefCN5 zKK}WSIcd+lf1rQ-3B_`Qb?=9hKROK`Z1I@=Lw@EKT^HAcf9cM{@f#%M6V&TMfnyIS z>=P8Ul2iNRc7j9wg?ZtAG6YAHR#Upukd{S`0~}`CF{Wni!mP?l%=tgg=+oW&x^#y>SCEyLPFl zRlyr9)2xR@q6>6v^wpQ30Y?tEqS9cc#I3nZ&5gCyhPE$+5A)z z9YF;dCS2fR%&Wg*MUq`c3d#^Q>*MsD?S=JU1&j%yD> z1xDi{iO5hi+-{4ES@b8(nFFEPth7P0jWi(ezWE=C7Z&2~J2g=dUhW4&XJHo8ndq^; z)4ilkW$H_8si_+2`70|`Ppwt5{w0kn%GxcK)inUg#z}GaOv`HBW_5;j8rDhEAEd`n zJ@r-gj&qK;J5I9eL&dstd!5ZwS$opkZ$=`8Kf=u4(n>B>BJD~m09ggRHl9p4NZR0s z;D;oz=W?b$6YxwdUen;FCfKG&SX$2< zD()}8dhtaZFfV+%R$d$5z!RaN%V*nY2joJ27+@Lwuw)&d3QeNcmF8OcZy?UFZ7jvfTRD60sR9%8M}UiQr|ky|Aa0@FXCWpDzEl$2mhZZrntU~sPb>;{$C}g z^uDE{Z&K*nB;x#bivGnyF>}Fui$ve_68HC}f0(8JMvD4(AL{>AqW+^1^^XGe583qX zG5y~{)Hhl0fgvI_3-SjV3is_qY`sbj3;HZBgQU8cV9RCPZ|3a$%S^jhAKkI*r z@xAl=*}qFv|E#&b4Xl5`P^|y9@7ss^N6}*a-u%7%e#yVy>7Qc!>onga)VH4Xze7U( zQz8HPD)=9hQ2$Th|7#bDh4b5m;{2An{^de_N8x|hg<}8zaiRXHivO<*#r6*p^zWbK zzpDxTqk#Pf7fN-~`Zp6&_dBht9OA$Vtu!%~j0|zOfaN-(V~Lw}g&8StIKbCTKIsS; zV^ynoZEdZEL$5afPu-dJ+a7LHVP0x#Q(mX}HT*C7OPX}Y0b8@TeTH6ny=G~gAkOf* za<9t?3T+1MH*AEiZNk-qagHBeQVSjqcEUi9m2 zMHFcx4X5j2_f>*&qEmwV=W{5iPP0ZMY-ydXOb4)S#ip5|sZEEnT0cc*wsR~Z*3(uY z22Ydo6{ZyTisRsTv?&_#nj^la1_g3NH`^k#PK}DwTMoBV&632zHe9w-{Yj)4F0JTA zMTfCws_`Tk0PmL!z}dwp0B#4;B7v=;Miqt*N9j>HOjUNWQ5&qlh!CG_#<>m+!H%3c z9rlC)7wwFpMw7|AokTlh2+hiciM5Sf{i|jPb__HR7VBkU86=PvN-#70va?WO(cAvO zwz*_fFk@o)v>gr|p^91m>3B*jc|2g7?H&;|ODNWl8ULSKsDHbQ{-+}P&pq_tM)acR zr>ENT7LdCK3o46m&IMEEu{{lt_hJ+el|Y1-Pb| zU14pJh5>XmmJ)33%6h1b-as$QUWPzI%1*1%`INlR^K~6#OfWRz?2l}^LCe7^ zCL%A=Uq(?&2LJiL;+Vbay?bmT(GEcZEttZASA;LZ?S2Gx!I*l^YpH@Y?MGdXzF5Se z7OzpT7=;G;?~)9(k#xN>wzLA?Ih43iaahZS3*xA6jNqHtPQ_Db~KY<6#eKOq_iaQ!k;d@q%E}N z*X;|bH`$EAWVR&46sg|_c}C`FiZ7bHeS9&v5W({2k4dn2LgSgEb7l3?!l&hn9h4GF zFR+={JCR(C_z0DSg-k@z-rK$mm4vM?5LfC#hu`}$?&>&)!7V(tb*1jaz3hjsi+{fy z+qvh&&_L4{^>W2sk8xWa?FU0k99*lwTQ0`q!Tiwo@}hH8Ck+J{!2B=*P+5m2)`fR% zhx&y+6)WD50eCPq3iud2Vfz@ngVid)-?qcGU+z}pDfcO{ao=g)!BvQOvp{-g#iQp{ znn7ws;s>6oGY*+^2DJGiGlw2n+E|{M85^G+|2XZ0=XMbAha(?3f<=4c)$jc= zY^gJ@pCrwQ2b$doTc6jiz|8ZYzgVJmU4fj38es}1_XO`n5Dekm^L?qGlD)vQr+HR3 zlHQ{bBlrV%ekh7wfh~~%`u@(g9_KE6{jGxHGd<(v1RuWxyI{C*XB%~`xvbi(xm^@r z;BKyMF22fr=7(m(3R3eKcvjyW4>HAAi1?vNE*h2|7rdU}tafzGDH<&q6t&Hla|KZT zmAys0>3J!C>AP8c`3b<7VI`kRwx#z*>`MNfGqyF_lf!xFpGG)ANZX9*1yjEFIwQ$h z^aFU^FN_0p=rUj)VUPNSjt`Zw-WRj&2bAYOLx_?I`_?+WoEB3qm)rV9-~XV1GU{mN|-GeMu9HxFrvkP-w_tglr* z4#Mh==o7H2-(RGR7zh}j&>6G^SpA1^{gpQJJONq6tCc&TU{~Qieu%z6OeH{`tb0TV z`=>9uKA<%Z^bISB`}qUU&;dF0o>0BBzdaZ~*|!m^zc>V9c77We1L;#tkr|B~v&d%H zWQ=BFW?*LWRh#J90cQD~;df=F4Uz}jbru#A>5oXHS~da2KqcV8qPP;H~$-e{QfEUvK=NUTE824!p{ey z``QLL+2}ptrKM+`uL*32TgBL zr39oG_6!^{AW7`3<%BS|Q5y2({LK7ic=da94$Yi2_a5I9c|D{WX!~i;We(#ANprFX zNQno#VF|j{f?37~z5nPpTsVP=KE&!4j3)cO&ez;PI$>owEkD$6X1+(1~f52MgYgcu^apzG zaNh1jfC=95X4Df%vLGQo)s$EtXw-1iby4NX?2CH=uIfDRY7_wt9iu4_&NI4~VIF5; z^qj7E^&seyCvp?shf0g|Yh9zXcI{A9H997ZIdvKJI+|OQwRq}axg%8!482FpJ8WD2 zJNPryGid)7nC8gonn$3Yy%}diTNCZ-scoD*kX)yB+-uG&}n%OR$@BL?O-VK;NHWEA9eHT#1=cKT{+r z=b38eekk?9@*^<0gP)1sr?@C#UU*9C3 z??^i;gN}uNbX${?@8n698#0-fQa2OlLW6tp4f?as;K7aWp4~E~V$E?YAsVS)zFeU$ z13t=vHM|a*{2nskxI=`AAeW0n`6p0ZslifLc&7kJJbBiZmFi*Md@z$<+_K|@tyun(L5@*ocknovK&0!VNP3Xy z3UwWl(!g&%>#0|oXO3pc*7RtMkIEdjR~T*H326+@0Srnbk4Hh77gsan{= zQ02XVlqpiqC;`5OvD2}^`v~wP&5&PDNq{?KhY2=AC>9tQJVIp`w0>d-k!lxAFQ^o=5Mq+D1JOcXo~rm;GI$AxFa3hS{=VS%3$Q^vH@7$x6!-E za(^EN>CkO5Z((Y;Is)9b2%tPa^kdDXL(5M%!|?wn|wK1K6DMyNob>}+@wQN!&S-WeAkQUrqx| zEQ%yR*q2!lD;7b51dKt=t|5_W6vHbwc9en8_z7I&4uq`1r@~vn_1sEsFzemNRMUYF zW&YKXnTyG#*Ok8DUT-5IBjyQ?#ka)V;a8b0LnSuVN{st8EYSC5Dz-?4s}?T#71Q0) z{82O_Z2Li2g(>^EXbxF6t;=L!X|PCHf7#4!p)39PSnTF(-_UF)aBh5nw{L7kFZ8#g zICgy4=Yt3{NRT}A05)9B8c19xD0Dp7XGe|tYW~gVYg9orbiV{sex!4J5zjUz?oFj=)VbSkS<#Tj=gd@w?ijo#t!n{BBGHzasf4LO=2R9iTFL}vNUz!tb2RPMjf-~!|T*;RA{ zskQDB9Fi$exzUao(;vpX!%R#7D}*qggM`pen1WP*_67tmYICLsY%r@-I44;_qX$&R zNS1KM?wbG)Hxrkz-mnYeJcoG|XiwLi3s+-0oiz?@beGl39vub)dJG9B&|r>fV^(XU z(fW*@=vvY6?*3=@fY%F%fpIWaC;*Gi$p&bL$E7;LA-BiylYv0(?8ouc4g`qrkDZ~s zTH%W9K3O0E8QIKv6=(7US~mFKB(^3?%@ZxMVwM3b&dmY(223Hy^s1PXOr3@ii4&eW z5QL4yb}mQpqcWWZ{7xkJOc7EEvglA`Fz8uCUMW@k{fX$CP8e3HQTue0T7ghPi*F=gG8yqW=LLPOKyG#**WC!YS1=x%2#Uc>jNHBZGj?rcC z#O%U$gp&22?HamfS!Qu}S=vX|wO(o5#Uf2pv8!8qF?aVoIm_#7_%kuq*5OUa-W1-& zfX(r3>&u++?HKC`QwP#GHg&OAS5@(r*0M^H;;cEf`3SoaA_PCILwSm}jr~ZmqN4ev z=#lCcoayeLF2`ky%c85)WvnzUUQZX?F4op8CBhWjP$BkbOVp|qa!ee5M-XRGesukK z*U@Yxu;<^dvaRLaVjH4c<#=6=QcTxPI&jAO4Zj!O zHv4r&?42UG?EQCWtTK_5FIKs+?Nm%~HwAzn8F#4Y>%z>&>367_JIHR8ke3n|P?cen zN>j?Ri)g{>R%)T2P|{jfR+m9tTU%XQx}`>^JEn~eYx3*4l*ffWw}@FPDFz?68QWtS zY@~N!#;LOgDZ77lA-6-QAe?Yy3*xuW-+{@LD>+#t<1UID}B3zwTX*dbz>~xl8MUQ(goPb zXjq306)~a~m8Z;&3B9hgj&_4E<1NI)vP$K!k$bA{?x`^@HIMU_S6%W(x`sXL!HxZy zms7!*!9{;%LeAQ4olBLpYJj~fvxO=QepW)PnjiI*tUddc*qZJFoxS11r+99R4PkG3 z7ADneesAU^{3d;tN=kOv-d0G?=vrZnHNOB`RPH+q6mrIGRuaVsSgsiBgxlYlsELW0 z87l!`rJv@LNG{t=SBfh*oH*F~_U7!y8NA|6>lL@wooux1xa{F<6X)z&tZJ)WTW4dI zVK;}y<81Lx=FSvNjz=SzQ&U?n&Zb5)sIqftMlh_0$$_12ZgTk8G=p^L^3*B1*_$b* zniP=9ax{_2v#cIKGF!ozBp~k9Z{FEq;hMQ8gaoITgxHZ!GU>koSf=dAmUvh3Ahr^U zV&TQoUQT3Q#_fMhTiGA#SU5AL;FqbFqP^dLEmH)-1akPdli=OZPSSBy!+%17Rh8V? za_AD5VlUvF)v%v-uG^N8=mPtLft;6Av6%0qNOx}}SXxGCvQw2YT=!`qrER_~HQ%>6 zP&m$S;lrzQvXO~cRS&z!pI0?m13qO50BhP7{LZ+QNBW_uO9woZ?nl`$!ZVaV*r5WD2w@=ja6{HzlJQS^>jjSNZagzL6bc%3 zn$7~#L|Tb?tn0Nb)-}qIi}70cNU@KV6n4JCDzkI)RC#2FRLAks?Fh;R-SH}1It~w} zg(=Pp3Y&(mK!>Oh>j|8dKhX0O78jrICUr*{ZE<|B_b*fyMt%?}+tg>+L|+Qv?v9|i zQ0jt%eep?);YNAAHStY3emS}E@dA)NH`Sq{bkT9d_;-S_l=x7^l&9;#QDMI+0 zQ3-148W!``ZaP%EQ`T8ja4=0xavxP@P<`F0bkFasW46f)AR9OuxMh?@)$o6MLgd-m zg)UUv2~7&Z?|4=wCZ|$kY8tc-AO({b3m_}s- zNp;Yq(FRZTq+kz>2U9N82Ok5^ga3rJC)Cj(!7D&-qxfjQCn>PY^J3CVMh72@OHz7P?vU+)mE5^fTzq$AlnjGIZ(;NUjl`g+Sgr8j`;)C^r92{ht2(Gd(1UMoQa zjd2W}xZkMq!N`zOD2&fN)U2^>aZpxc8<$-VSw_j!GOkV2i3`}ScBn+A&cI9}Awk97 zqq3vW>aa>(DJ;gVC5X^7iPn47W-0RycHQ>8@L3&u1;!#u76T3b?qBpS&&MjG`{1XV zfJe;6!C?|y*h~P!z9#!ZIWs_ywO2=R3Zk3(!OQkNVTH7pVqFxY2lMe+LR0{{)mK|A z0tg9ynaZY$ey|HgFw7tOj{IDK(U4@vuKPAgmUoatls(`!inIQGxv#uNzjbzziGRt`=%M<#o&3f6L$D*v!z$_V#hI ze&SF(A%rGq|E32A1lKp+XU4P3wF@A+%M|r)HKBI-Wfi&K^)fMb_-nb0kjp-58*c-t zLr|lLDV2*2S-fUj?HI|4c2Q$tLXmyimMp|R~T z;TLyRMg#RgP)7`N5V(M zM|&3h_{LhUks2%+9b!unUcbZ+?;(Q<9mUPitq)7x$AWoayc1DHu!3NN(1QrPPGwU} zB+!3q&4caZ45OG&y{Xht-?|cwbL~6x;F~N)jL0d6VH@|7TK`N2H$REcP*0Q{fIiuG z%`lFO$z_%VjN#prl8$85$fBSE@R8kc`ew^Re{wx#hGh^a{}yMAW&tu(Kah#e>1I9A zJvqpk1-6g}iof{DF`;GYCO43}o&LMEj?wna79{ znuUGUDi!8|R9!VW1d_KX5k(-F3PjBN-3oNK8x6goo~rtl>S3cn4iBBn4p&oOwb*1; z{HJIZjLvI3uM6tzAgTi~<_kBVU+qUxXxb6aVjEv4wuioCJMm43MA)O~LV#knrvW`R z$XXTZPQHOe$xlqfF|U3kU~wggFQEf<2tL_ZJO#~;jeT?^0z^oY)^_8{lT)TQ7IqRk zE%>#atPDX>29^U7)cb7Cw}$!SNBRf52mCu~DURdwph;1IQbjfkU(u;&abGqRRY?;C z_I)+naG3Bm??G%SNHIH_T;Mro9MwHy^G{YU<y=oFuFw5m`k{+jkIhV&{_D56Mz(W3BOB*+1o5u*}=>rqu6EnxufL zr_-WW|F&%L*7dw@r}rGyD6OMJmQZM}D1aVX{=Uq1T>DTLd%6XZV1SING0Vf0jWu$3 zQKGkzU?FA7l#Q;?gdy9Yw-(2zEu=95VT@7vQV=<<<;s)ND7R^BX{k^b>_zAxP7x&v ziq;?X%_U9oZu!-KEzA_wUHILP)6CS&>`GNa zl1?@m3N`W0Y;N2sG&O#*G~(>=voVK0W&aMN7~&oW_<;xmEnimLPQ=v|)hXgHnCT!D zaK9-OY)hriuhy>CdJUsG{K3{-E-aXVb>!x@l(MPpsVSX%0@g*d5p&6{nrtdyqNsQ| zkQdc}qoQIBS1gwn&=r&jTZjlcuZVzFspednb7cXqqP8z72SKGsBfk*Gbo~>698~jf zU8y5vwnII(Er<|O8e~{!R8Ep1&?1zG0&0{(d=x!xvI+R;97)$dNo6f1R`ganvRNxh z<}Gvj_B7-L-iZV}oTtL$$ysv1Dhdkf&Q&R@;K*2;3CL15jFEg~&dD3EQe?48B=P_L zh&2q05z_INJ|I?pz!l&R(5J|+>CcD)R7>v5Vlm5wQ#Y6VW%;*Bit#m@eg#IechvI@aRqN9kX%p^64J_t9wEXcB}+r}vPok1W%sse$C)2Kwszl_O+=(|C5qv0`V;~}I^Z@ZU?C>p zP;;2RF*N}t&Whqm=L~*9o4tvfvImfTcG10{ezHw)-4A7X1W9Rzz@z-M;ga;URNjP< zIzdX97nYf{>{JihElNO7(SbNj6Yem(iAgJNKcpI(%&-Cpw#wW&+D%dM4{vqP-t>8Jhw?v@kP9zeP#~ zk#3u^w0UKWj@mh+heR~5g-odkck5F0fP~0ENkfH^ps}Z{N*XzEx)`EGk)T|tYnFS+ zaw5?JsZ|d_MSSTfK~4lBLK&B4py4`8%quO-aTQi}kW;o6X_T`~X_`OCvoeo0C7KuE z&LScBz~@bu{gnf`lbgu^uRwv=TAjaoK_0txuuD7H8AjIO$2a$f%k*VNdhGTj-i|;t z0v|teO!ui=mwE`N*2bIWVo8k1wX(G&S{LoVmaIrk@U>{+%#}M{&^rya64zm~a)KU(K)}hV((Hn8gRJ`r;7i-tU|hUeX*{U`TDMMj|GILM?@sc20ZH z+_*X;Z#^k}K%xv=32DAUSH9qxpp1-BPL>!XX4KIuqHyYIKGrU6#~rCl_C}GVkcjdg zl|hv$Z*5n`BrcY%Ykh~VtV*MtX-ZyZX=Yx2z)Q{I2OVLSulytZ9Dv$^cB7yJhw0X$ z2X^0E5)rLH}fa&yht}DYldwqgem&P!`7D~NFSPMcqG$i3NMN1YTJTzWyabw zjrM-xyA*(Cnsuiz<#zSdqfZ2493?q52aNU=sHOxlHz0KhWO^RCIM`AtZoI^RnHP;Z zPl1KI0Hu)x!Yr|MfW~^((m(}GjQ!#dxN>-T@E>~4l7fjs_ekwuO zh~Ib}UY=aw6b<&SB9!~8c{@IBt3oVmaajG___P@1T@GJ}QeGSP{D%C-x}ffpWF~=j z$5*h$NHvwU$?t!$iW7qlr#U3%N4*T-j;3Sqhxv&7QUmo&uF6x1t&V&xV9Bkdu*tMa zS=h9d$`p(~bPpf4_gGc(vc@R~w@kw*l-CJ?uv#FpYZC^|F6K#X-Am!(?LuBs5>x31 z{o$r#*X(VSe_{P&B+JPhPmbO7U2SPEqqDIn2+F)6JiP7E%!=iQOlPTSV+z~6>HAPC zob+(#TNs>0+bU!8j?Ipdps}ElruK#KJKno|^Dg;2uDjb@ULeRqkZ#pQL%Q^xRzWQp zwK7mFdFB*(CfTxo2=I;{VX#lP;!UYfj$+Nkn@}poD;x?GW~jYZ2m=~DUbk}2Y94b` zqLw-RjjqYU7#2Qz-xeLK6wQZt;2e_m;tm_gonbPln1E85X2yrB06lw8P45}cg#0ZkCd1CdB#}XOEDk7N;H}f&! z6cS`RWs#W111&~!j7vWQljx70>JwwJK8h-gSJIJUxLY}xX$Z&mWRysMw<8@LXi)%d ztI_=qugl}w3I^3z3Z9JoyCrTm&g(o@Vj9-on3uVBA~45DDbG<*;{E|&Pt^^lJ?pcD zS`eOPGFBJjPPwO2Q{jQ|esJme<)(`M%W;o{i zHq!D*kV>t;>TZ=7Ra&XPx%Zr*8Ol_D#F&N=V`L;T?>d8cvatv}Svf43lz@=922zEVOJM0g5G`_}{_> z`8uzm1T1!TR%$;sc2?@%ab5I3wLW_vXZN7u`1%C=4Li(f*zhvaHiU;FwcwArt%n}y_qr@zH|~oRT=%n` z2304uS*qdt-+4N-rn7vrkjwe%wC7cnnzNO8>Agg?4X@|Ms>T+h_Ay&{eSPjOmkfL8 z!Zr~&##OFVII-+Ql#o38_aGLMn2^1=o@}kGPuUr_Z>xwVaw76z3=%35L4g4t0ExK3 z!Mu7AkTKe?Y6SzjWpAGD@t0VAzR~EOkXE4QP*+QDc~WV@?Myif{iG_fUv};z-tvIH zzl=j`?W<|Au&Rv>uTDkZlij7qCD3Fkpem)wmYzB@it~b$$#BTwD2U<_Pk(Qqp2GEn zy(g$O_wRxR<_4yN*cuvmG&AxbnH4MjGI8g4tA_&?mPLMeN~4_+v;k8Vrv}l3 zZ#tW8P6M@tj~9Cnr~aU~mXH)W1A8F}kbncuSpWTwTU0V%eenW+(52 z&Z*U77eC(?)4;d6XocOu)-NsmaB@+x(|FhsxAEDX0Zu zndV3dF;**(+rrAq(;tthYy3lO*5gKgZDCg=TYVc98iS#y6uE`PN*y@n$=8&b2FUWm zFy0R!7s{+%iWgB>qLDiktFv>MVab5wJpW-qMVcM!Pat1Q&v?PJpNyYIDlG!N#IG0v z{e-TB4|q3Ky~*v%4Os^Gee@jz4SAYwxHB9KG0)g(IGRJL0HwY5_C@>&EYFB3X?d0G zCGy8{lmW7gP?Z6a6zCQG-*|rZ-JBg$4Iu_725ERK7c#vO{>Ps^&z$4wSzkejojbR^ z8vyZ5S~aLtkyIq)A`!Yw84b$C@hnq{%;j<#mDI{AH8OPhVdqL+H-_BmaWiLaUxnnw zBUf(UIx;hvOx03q*(y4-%LP}fE?2#`I+R}`H6`vDCqo&_x@K?`N4T>Jn^~Sjg=`4u z3fEGOeCeBdT<`^MIuAqKXrn$&i4IRVeEPw>nGq%)Nm_PLc*;^x)M_kTxHAbowH(rz z?%pH#RA?RLMr!fM_XT~BTGH=pZwoYBYf%SpeWq|$_k(G%n&KmF1j{6MUcrhA&>r^ws zxJzt0v?B@0ZAPDFj8-A%;>?%6YMd zx^Tp*`toCJ2@z71yPpsxhehVXd=`8l%0V)7I;t~N3l%jv7oxq2>;@?0i6*Jw0f5nDooaC=U)|@J!CRP*wCotpR56 zBl~npG^G<7lwC^WcO0xS$LyTPJc1`<>>Qs?{-P#z_r6HY**7_WdwEpnTt?R;I`Uio z*%6xV+x^bA4%hd5hg<&GfIa?Bxt+PyKj@tE&Xyha_T5hLC~KSTTIiaoCiy$s zO07*3iiOj3#Np7Eu6?|9ZB{Y0z|Ol*K!b;V8R$4tgRyj*<6WDbz0WOaH~}eyP69H5 z(4)_7KxKY_5|$Q$PNvC_1cMkWomcqN{PXcpONs392M8U%xXfA(b`MnIZ_&~{x5JAO zXI;PO^6t%jC(mvcLEQav17T}^gvp~2t~VHLnD}1`hUuGs)=H6AO9|q!8)vb+vL#CF zdAuNh_|Qt<#F66aqZ+s<6z` z7?-kKMHmHK>VQHBvQk!|5=aFGTafz+E{RHrq|Ha{AW3yy0TeqhMnv+DkOYz4_qfvu zYXd%2dbAdl3^6KRz?fnYP~?O(ccFumvl)Xv^a0EW)+)qlTW0@g^@oteJ9*V{=?JXL zj98pav}9L_pSqx>l~}_E#4n6^)|6@)S!(R+Wcbr5LUQUcS=TT2*RL$GZVp}-R{zIn zPp&_&vI&mme-i4mS_P76m5PhvTKQo;;5nAwX{)XAc;; z3J$n~&0-LWGbE~8aqRSeER0~-uC5ee8{ZYFUyg#n%{(xJPVtzdvW{Jt zsljpIwee2S(eu=Elx`Jm75l1t%T+J&T>O2GvL275@N#5z4jEd4MSei;4}3Ngr1PFH zdWeyy+GFK0cBQ3u=9BxGn@6Laf{+AvYi$IDBQig4M_#6zSQ;9YX0Vbz+^a0y0`~>= zC4E=HlYTn8BeIflx%~{ZRUiKJ>(jf!vJMT9^(1^GOMts&NopuuZOn(xE0ThDSUCZ+Xco>(JhUF! zPp`Vo_;+t#?X_z*t>o76x{5}^stZsxG2OHkhA9j6(+ zmb@wm*@nFu!f0=O!~{KFziIJ5^c5bZvsXTKr0VJ|W^3^Nztkvkg2_=)W*TA{UHCdV z`T|IU!`sF%9l$Lgrb}hK9{&w|#^2Um1)tBLPFvBWtKvD?R z4C`nheHyhfyJz|ZdZal(L6FGTC=mz5mfQx019eiZ?Z^cv}?p%Mkdzu^Tcfbv1Jl^7R38%&W#dZdz6 zc#IGr@FZ1F^u@Sxhg>5KY-ykBR5JvNR-%}Z50iQR>U3_qs5Q+iVMnt{#fH|GoM(=` zTZnBIBi0i9WM@iWi4N-`CUk6utH%ekFTr4-{s8fI^aZ4TTXc$RKCY!PG(pFjoR^q? zod5zbfy{?Ro~%=Zr8TPrw_XRr+%RZ}kRhtCW)whWdFSo4s&$$wAIiBIz;mQaey5I{ zD^OGo=cw-G0Ce7*;Q&J2tVR1mXC{&)hu}Ym2>KiTfAktQP>tHsf!#Zlkp#gy>wb>i)tqxO)P>}XxTbisV6sfo_bK<* z@)>gPz6kwXa$dS+JSw>}I9g2e_ZCFNvPo4? zJlUiHucn3fVtOo%Vl!V#Vmh6Lt9Y)?+_$diU$K}Xn9nU;HFpIKd^DVA-8EYAYOsLX z7^Xv+26oN?&b+I^G$K6{sV8X_;$wLnfopIcM-NO8&!4UO>(f2MI`m*Cs(BKzi<*&B zeA>(;z4sYtc+`M!p0l@$P9*abnWn;=@R(LdXC^a@Vp6t*e5R!^KrS>R; zFLY{|l9A#asp{{VK@k$}B^Iuj)JB)80+U>3)i1YbmnuH-uILpr#5sNd^gVQ`>M6RE zVax3RN1{Z&y$V5%o)v%u~qh$YD9=gu-#P0+8 zI=z>XrZ*-pBEM!u9ci<^ECq-K9aIRRDpF1x1iK5X!Z}jfLkI+%a|CXZI%TMxfs^8^J0hBhQM$T&U#T(Z-|Dv>Ovdk5B=E}!6rR9-T| z!KCg~N`d8EWe^@tr3_I)gmCW9i746Ltt5b%QO1)f>aD7q>q_1)RiLCw?{K-!G(a{r z9CY=NFIWI8C>6c1Dxio3%8i)pPb?|I8i^B=c8UoB+3EU)r!jM$M1yL)YLw&5eL5j| zW?!zydyw@C z4*%uic$DZO)PzgwUHHcnlX)kp;8dCFMv-xp%M@Zi#59)dt*h1PZhm(T`Q-&u8ubr$ zXGZB6omdI}ZD(?6lLe!vRi+AkmLKZn2d%t(_>WRpgNhLnJ`0!oYU-(}6sU+r%z-fa zTcrcEz)T3JLY86zDwa~E5LLh0a5Q;wI@993_-+>>mHWsXr6E4{P=9l450ElG8lfJx z6TQZGY!lB2U{9o~8_+VY8($$i*#2mJO~QUslRXyXai$)9FudE8#(Y)^&qJ&nMJ!!| zQT5Z|VtXu{y#Evb_V*UczfCs6{P-AhB=wi3QewI=XanY=A)}UBoc<hL$VGATIpiBP^?VPQ>;%Y~ z1OJ&Jgream+T(Jj$Y0fXlj@Zy(%ByXyp-43iblZegNxOo!Bf0ptX zFIgD6qZ2@y;)^3MNanr9A~i6(3mL)ei3*u zd~kFyl<5y-(Wj6ne#Co;V#WjXZ>bF>KH+v{RKdWB&b^Bf=v6MG#Sl?c1Vt_Z;ai&N zhGv#lqP%P(j$;78C< zki3TI@nVjECIXs)JQ5D0arlEwChm$Ngjfwu`C*iHql`}Os77PtORJ)7+M%56;XpB>l;f#0o8Vx zw=esyeepe)?1N#FUvdLi8tEzF55(ys`x5r?I)`&>o2#|%o!Z`!i?P(_WSnFI$ed%& zDsgnIC$gWw5mnL$n6XD`)+mP+VK(;ItdjE#rXX{11oOf$Q1@5v(b4)2!D`kUh^DQE zVWX*C&J~%XdwZH-0q>3_1#=Q@$GRofq9`fxd+?mBZzMWekfBuBzgC7N4kvL*-Ye+5Q=v) z*J%ZRGB>C4nr%v*3=kAt)|C_Th$C`qgmQG}Y>KZL=Aqr2c^H4E@AutM#f-fVSQsrD7rbs?xXe& zF%vQ6+D4GY$5KPj(m><0;xF^G`PQr~0cRD1c^Va_O`nODdGB0R^UDKGdHmw7*wQk| z5GgRe1fEwMH#Dx5$&tXhdifIVa*Y>eO8dAG4s>Im%58(pQU^dnenzf{C5SA6XUqw$ z1SJVcdrTxHz5t-lVxewEGjdw;XETGa<30|g^KfPG(!=nn%vTlTnAQ;96} zHJ0KtAqh@65$;$u2~JL?m~royQt;<)SV@1RB@n!_M}bb}ZBZm8L|$HjhB$d9WC^gA zGdYG|FrN?FiLn)mFMSNa>!b0K$qH+Wy+|2FX0Wq^cKKtw^A~7W+ zTz=a_NVg1Zd7fKD;d53$J5sWB1W5Xg$ntNjJMTeX68u&85?=Ou7Ol3!E7J~KBkF`J ztyX=3`(!Mi8z*0%xIIF0x{Fu|8wY2~@8`VjZ6|Y}Z+Z{MY1a-;6P^eBnaM+bwqK3P zyHq(S^gjIIlS+1w91R-X38u|An$q}acKaV{$cA+M-iLOV(z?i3=U=3W3O72It6OUU^ZYJB8SkNyU}%oexrTS*T)Qsu)f}D>QG=!n5+6I2whh0C^pY z-hK;X&K8v}q6~thO#bW%c=D>tHo7^sMRKQ(!Xflq9+#pUPcI5IMZu)URX` zb%kd>!L`YfLCQdIMANn0h7jaYl@xw%NP!H8v&eoP@4tSYMrVs7ks``VtO^sR1wF*Z zn|S!~m(^Ws1|1Y*U0HVBaMy8QX75Mxa`*)rZoR20Zj(O6_-`doIgu`TE!`cyZu^QL z;FIz2duQnNl+gDeH()j}p3`eKNGY@wUdi#qul#XixJ^ESxzt>|w&X44&ErdAHm{S+ zn=7@TQfwNfP)j#5-qEUWs)K)!4P zR;lM1KBgD)8qcdg*mNxKN~dAjE^TIe$UGkx?tX^!u=->hfnv#mT3g8o)`(~+p**NR z#vmua>s>1n&mr|h3Ud}DDc;3DHxE^+NSaw&2P#2Plx=SDaQ*Do*j^=B6e>@VZQpfh zNyJ8Vwq8Zv$gJSMjK1R$r?kjKNgE*O_9-e>9mFUb`cRJtFWi&)c96&kzJfn5 zI&z4NC_^gW@uBd^hFxJ`Ku>JadvoFs^{Qc_oUlxF@JsgQay+1ZIa@RN-*R==Kd-ZVa$Zhm(|nd`uUswaHv=zhd^N( z$~n*DNWZ3~9|UP9`tUHX!&GPO6{n_TFz(#ydP2E~s=`3UvuNJj#l^+zcrFG?`w*;D zvSqbQlcXKZ&YtaA3|UCd+OgDI$SvapM*R;RHe_2;dIDsQM9Z8%4y;sXIb_WO-V&2X zdn3T@lrT9t#g2YU3AB2cao+lzsk%8v<3$s8Gj@xaJ2^2ZFlz8$gzadCseHm%>-g3S z=&zhv9Yvw|7Ym@r3|ap@%jyYB%WPNTTd8Mu~*ew z)o>%kAtS9nhkWgAL)shyrBitAdegX)C7cw>`4>^E3A)^M6U#?d5i0Eo+Oay}y2MEx z;+wRqKD+)&YrR{5T9PzxO+G^AvP6P~EbK67mUO7Hzal7wx^~}pgXG`&>>$hmreZ8_NLluf15eRfEI8JX* zoh^E{#h_0_8xd{$LK(OKDz2j5vJII>!nK4e+0wu!R;0G5A~GqKdgP38MypWe12wBh zxrf|c%=|XS?zqG5gBYUu&MNTv@In!p^al3 z7AA=wjgF1A&0Clnv>y=h*;rSj-pWO40rPHT)PDJVEXWeYN@6ha;I^DVr+q?Xh`@ZQ z=wibp7lP(&$3|3$H3KH%wDZLyZLgcUysmL+{mfxfUl1~B&ZIm427Qoj(P?K0)G-ZU zOa56sbPDJ%7Oo}YnlRDRj$5U0xgT~1Lk3JLMUk$E9hj>T^_dgaQj3t1;GlCNnjnBW z69qPdr_kGwSqEMQ&U22tw2yhb+4#*7;Z z?sJIbC(8Z?C=ehv`IlRiT>mD3Rg-b1%B_&G~cbt*Dtn5Ir2+@Pn)OX7vsPd z`FKK6jWnKk;n^LAu`R1uKqY4SluN)Uhx4_3s!(ym*HJIByOqMToU$5UcjKH+2FV3V%LhT!>%K)?mXrQ z4zHnmj&x(bSbf&)fZU!^>>oF0@&4w}a}V*^u1sBr@uGbP?uvXBom}sGC@vs9iy+;m zn<;kEc&L2149I-Y%(B>jat{Fc=r{>@h3jMV5VupyX2v$L24=MgYv0Na80lcB%8d^x zD%N+lBM53HqZJ$Lhj1TPMi-YDcgb7ru=muVqFLBm(}-2U&evz2z?rtQPdEl{=)@H9 zo%d!iWe#>}W5i_aJabW~xtK0A!>fKH#!3~9}R_U8#8OASSC1`f~7llPwuhe3P zIHHXIq{Ql~GkB;t!6G{SE9`ChsM?I=bX*EfSMg;uEcfNl8n`tJgcNh~;24=GD}c@= z)kk5R!iP95-h1r^@115vA?W1|w@N|9tjUAngX)LsP&9Aw2lWTi1Gf(fk3Vjx9fd|T zYi`C2-~)hGSM>9)C)9NTB{O(eh|3SjftHw%Ep7`+o+?5pRw~a(VK=Ma-prAuJgEJA zmfDEsqwEIG2sBeS_WtD941`BzB>+!=CpdP7av^{;{~e#50?=BF4S5Tc!bRt&PBfk!>_P(1}7& zZGiYm=MniApl-Q6F*|r=l&v6yX@Q0viQ`_L&6A%;VHe`TGAm&pzcct__m82#Pi+r$ z!I`oHXa%KCqRJs{QMLlI>GE^(KiOlcc2Dv0nS4{bkL_40CjlRz)P^M+@stJO;C|hB zYkjHA)+G6W*P@-*;Xzz`zLdBDKkb&(p~(c0wP$~^rB^}Iey~j>M)^AXe+-B4?X0$9 zMh54^=|1FkFd_^QSBa>hA!&IqkYf3ZPzSEGwV(<=l|QD7T!qoeWa zZ$xDbDvgz{<5W8ZY#Jm5n63?gv-tNB1U+3~ zxuLaq&O?W*J=uZ$Ln!3w{e-tmVwb`H`OlpJ{-dAN^}r_@fXipYjs5QSi$o_v7py9g zp>AV}L0R?{a^G*XD6yM+gH#cc9r9N`Vfo&fX?czXQGM|5AeCJLW*l!n!dBGmci0a| zes@TdjS$e(*987w#RC!20^X^?8{81y^yfg_B@ojO>_x!PdUdEnOL>r-z`0O%d~kEf zva>v?!N|d`dZNnk)geBG#?aY{aOh95{pZ00eq^;C!QUYz*Zxg}pX>(5t;b>uvoa68;UEC?`nZ z){N`4OrF(wlL34$l$$x+!$JPVfSL#tB!!@mHXPt_{QaKG<@bB^S5VY=q23p$pm7xP zMIZ!6H#$_cI)uBcxPTib!M7JhP#ki9Y$is&eo#EUj`Js5kh4OmI%)6(7sO(B!0%5k z1vBp8-}7+r7GJk&W^E98;lL0w5%>#R;WLQ@6i(bRGY`;$OjAOo=h{Ig*>U|^Uwpg& z(Y{>)8?BCDXR1;qvQ%xS^%p!x+Nyy10% z?I8LYAS{SStd|8>$d}3EQfP9CgOEW`5Ak&%c4tl&H6XAEtOD$?1AxM`FnD%;Jha3$eorXs(QZdA?7qnlG#k`oIEv!!~?iI}54((g*0r z4;p~i!@-xWC%PHT8R#WyRK^Q(hJWgP)DeFkuX3h`HD>^#5uHJW2;A5BgE~xLw)2!@ zn_=hcfi{_#YIbz+G*tZXr2^%Nm~D*{9Su)LaDeY5pa!K61wyiMG{_pA{lryQmB+9t ziF*oS z0Z2kWSh8+`b*jy~$!aLu?hH1X$98g(lfQiERFe6nBy0O;KI8B~ful=Y_IUKvio^QP zya|VO{Cs1k%DB0>?56|eNLfm8j#Y+sLv>TcCkSeF>?gd-osioG9AH#C0j_R6Y(FVP zApDcy3Y6SVDV75Uf)*&}cG?jgl)miBL8djq<|C6dH8O#`F0zPx<~w`4(CHYvMn7 zb@LG!#SsA-ZxhGC{6a-qPASisOxv$V-cu9VaGu5k^`6}o0lblv?B~>`S%;Mkna;^! z`O$go79tdhBFYn5#z&OKUYj38?_}g=B3MH93lR#XciBYqAJMo6Fa^flMb9ZAG@;hN z4X_edz(|&SHnn;!1v*i0GBGa;Y?PwlvS0 z6Gw9KA0HXnGJT;@&)q z4LjTu@Q_y8o=mTVCAYOH3KgkDm;Owf1wDus_$OJ8O^k0Vi zMb{D$UW7rsllSvR*f9}Z6pXxrt5%9no{kp{$;_iYfS-kY;WtSQTN}3Di56v7x60?0 zOkx#hFR?ZH^qhUhHJ8UL2P*37>=cvyEsOWJ;=Q zPsOQ-W%;XNkXGIoQ}AZ4Gbr#`#`sXO26fM?lQri{in^RL(>zxkr{cb5$jB+888-`U zEialv%*B43h&_CjiDvYLt1VVMc&POmj*FzBr5orFePKDau>8OgKJ=h$62J+urjjVA zu9R1E))4O~>sxs=!(wz6`#6uBT*ODo(>!tZlJX^foxBg{{uOhKlAYr2(+i_b+D@qI zoYthP(gLqLA9g&;pv0f@o5b}Pa+$S&54xLsw)i(L=&S02`2+7>1@$UyL7^MWPjYji zk4RUcDM8i(T`t7h6N_jbeOa*@msdFcKao^Uu}M@tz& z^8{v#WDCdS7MxHZzmN^``TGKWgM9tEmD|bb{c!|8kY31cejNCJ_Wt8EvT6P~X$8dx z{4s(btS~G9xF2vY!jAxV0PH}11i=177yi*tNQ}0(Z~GrZ@YVhB{aX` z9WyrWr(%nWcA`Q1eYZPqcHFx^V#mdn`w?6W_%PCs0)ImPGYs92v2a}qs3uT{EjVBX zf|L9zkSGQ|8z=mf?`_7%iT{VE6z_1xPxx(S3btE5n3WS(|Brq`-Tys|NB=-I zwEkwipP@7=Q+^0lek5aI7=oErtP)a|#-k(}0(n}fuvV6;a%RBuI4hXNEKg@y7U5Ao zP%OEpB$b8x_ntnR=*&b6xZ*2dv1b(1RPCJE64&I?Q%yf4$)$eJMP+O3ZK+`jb!mOD zeYw8fL&dydt@TQ(s+#Nmwe}H{GbURIYo>tw#qRHn6o&I zCP|7W19$et+qkXbS6+UR=*YS3(}LfkP?I+Fsv5z#IyCwi<&;{rLO zf^e$`w4t6wWDH-KsB=c$U z_kvtywxUn1wevaLxMuCO)<$PhPm1#735=Yi3u~=sKFMaO=jV7H;b+-VpNY4k+va-r zVKWTdqzhnSUyXXtQ&FiWllB1;PhjnKBiA|Sj|rQm?%HF@s0GGzx+nW{xF^^OGux&u zXaf>UjpAgD;Y$G$Vdh$Sr@B)k)UJaoui~00 zj97vK+~n~3`aSamT}ykR>d-6I6}jiX84k(7K{9x!jR9e4MrVRDPkeLJ3A zg)-E5!1y*>GrlC=c?ms3jG_6myB8L_S&-xAs9J~UegWJ&zvc;v1$^y{WbU#>Iiaj$ zw(m7`CFo|+$%4&y!Du&F)O(tKUl>^wRxD(kUD~j(BynBGkPctl@Z}jl;s8Y)@nMHf7%jTz8M7w*wdnVr`*%i8dP#q>6IO$Nv;k*ao zYq6IUui?@8T{AA;G-zLBX9eWeBgl0Pw82nN`~5Z{o1?+2|M(t1s7qf@+_2Y%+C>0~ zfwKUGBV2|-r}{6R?hmo|$N9nU z{%o~>jFL-ecJ{x-;{G4~`!^Z)hhO{8c@h+~b^AFe4KwQx7?*_ul8v4L zl7apQQLGI~C*Wvk{BtH*f55(U{~Y2UhlY`!9go)Ui|>YzDpo>@9%(nAw9fS5WOxOC9>tY6jET#RlruAM=NEHx~-p+C1Q z^;j-6uOUZ9a;J8ObddWzf_YiGTHUr) z0aZUuc?*HN7)dB0Pw*pQ@=!hJbLuf9(?}uRU9!^%P2%kvI`o1V$cD~#`S(%4=&a%h zyCbUf-IdfvKvcGkkSQs%fdKE`jKE=h7I8mG2;~qXNC+@T-QT~(9sinh6SY#@uo{Dz zQ*d5W(qci0Z?CdT=WwgohgqC6ql)f}BAp0p)5#efhjOPq9*Cg!auKEy4445!NC~nKe0#`k5Hq2| zgDHL90>94No^@*2)PNe+?SHhX?mq|DynamlPkwFxke&a>7x2FvwSR{9KaN^q*Do(* zku`c9*>3DVI6UhxrT5W)Zma&e%TASnTTf-SbzYQkKoh}ON)>fv&? zASvLVOPx*yM73Mx8|?{Uw)}(8lDED|cZmlnLHM3+&$lnBqP8jC+$JZVds?EW9Is6`21Llt^AK(C`wYxX4F`25C&pwWs&;62cv zrb?^wEwwLn5`i?MtKoIK@prmL7lr>slCII#h)*o63)p?<#MFd(QY6|;hc>d(?AO@d`HWENPpMnX87?zg4Vm;bkaw2;QV>;otQ%W- zj7($3b|{Wn9d<(rS-8W=L2yUG+%FiDkY;ApKktCo2D;Oeg1-He2Ru*a52R;*2~dq~ zC#ohkGdkdkpUL;fKUh@LG$9I#b7h?{+EK6cC_Dfz`*4idSJO0MpBG@CYe9HIw|ak} z)@6l>nF?HQ=XK1oJ`k=&^77~CN71xG(EYvM`J_x-&DzZ3;$fp|fru70%?~%DXneCn zj>Vr(HJ?zNcu(^+hCBMOyBht6z}gO0C0H>F_Q3lF{szG$EJvC^F`+mT7*b$vhB|SC z*;+C@dwv42w1>$JJ^o_yLEQG!!w$d_wF5s4?1G7}%M+c{d9fKLGq$zRtq?~aIL9$P z1hN}sFWPR{?I7RS>%rI^vfKF=%X~sSdT2-BcgT0=r>;z1SGg5=PXlQP{VAxPwHohi z#Ae(xe&m4Vu-Vpgw57D83BGI&3Q;&~;1mv2S7n!#GE4A4@`g~IHw4(a%;1L2eZ6V- z1^fb%n~WMFscb%vCOoA4sXAFe`$kt(4C%}z;=bI0rB-+jmqyxapkM!=_}-+tGz2Yk{|6vpML7RAA*K_%)#8$i?d;75i> zOv$yd&G9@L+Wp<-21<@fu4PxsmnvPwZ<3Q`C1`Gg60kscM>2P4&B5w^O9kOU`rU-S zWRowP4%pvmFE_e77Q7~eOn(~VNri75dd3trrvGNS;cJ2F>=mJ%=~x-M|6pnULX{4EI$`iEyAn1NaVF17@;0rD7+ zFrH{UM3a&^@-)Py+l()cDf>TgUUuxHQ+syJThZi*fhJUtUU?ve(gwQhxN*pD@cdra zZyrS16vy&caJchI%3tB;{>qqte>5@e-0>zmY?JXO8FO~6RJzXM$Flb z_I~ddgQD`m^gH;QFbe)O0a7rvc|WB>>Fq!623jlQ6Of#?Mbh2JOZK_5ayJ&pvK*fdcJz1REyNQ%U&6c#b}K}3zgRuOuv`o zQqWoiqht?UPyR>Ebki;Um?KVyz63o_JDtx3 zWV51izxVZcrvmMd3!w785aWI?=brn2rQ~V)gKq@mir6NQjRZ=^Z3ya+rX;+c2t5$o zQxfev&iJ@+bbw?<6Ph75_a&VJN&=$0T3+F_YB1aZJl6nHf_6@OXL-^+tC`ScUdy*W zb1e|fE}y9=1(EI;R$^5gAS4_rjo%y<>;Ir?n^+c=lTb$Q>gR+d?B%&pql1J5D0ZIR zd2D76k+EH{Y!9hT5@vIk%~>o^#^IwR#X{FPi>}m6*|4BuF%(6|chi0|IP!~_wty&G z2fjN=Wl6G`+sR>gWb+l4WL{G|KM!UuM5T{Q7R~CHc}|zsE(DgyScHC97xd#OxYoqu z)f}i&xg#9}3ZUahyG&w{IPc4vJGrhO-m64iVS|>eo6WR@Xda)9OU{aR0oH?!ICBj| zvKg2{sW1+5c&vy9G?KQK*|@qboY*jMM{EhOA>r^i%03TDTo#DA2lU0%&)IBna&cE+ z1&g_8B1)nylxr1hZmw0y(-KXV$OWoMVoAAHwKjzcHE<#gaqMz1O02C;!MWUgA#E)b&I#gG{(3zM5t~n+f-17nb~AF@ih$w*WWGY#JgKY*$k?!P z*Sx}ah)q_Jwt)lhP|UU)o{-;)c4^$JtYD3-Cx*45pxPW!zennrwW2VJD)vun`?Qvn zJ(YFbpE}D?m%b+V;=~tjVb%=bGKU*rVwo|r0oGvX0Br9o0Ujv5;sE&by4k)og|b1f zAvf$=k*}quaZ3aQ4e{*5)M{dqCyI0EBg`yyTZp%q+eNpXCGM1x_#1h)5lDI$S2NMU zTK)8p$H>QxfvgX(7)~arEo+s5`qw-jv;siQ#h+Pfawod1pS8YHX33^V@d@EEHggi1 zE{{#@#WTr8-ZY;BTmycin()eZIGbx~-#NiZRt3i}=R^H9%+r%Cv0Pl-HgkaRep)bPp-wmE{1Ga!F){t3yvPl8oiQ5U{cnb zTF0qgYk6>B-{S&2ZA4Cq4(uG2b{U%kh=JoWfn$L-)2#viSSE%>8wci8DktDgO@QDU zb@?>ZO;sma3=L#0PAY19{Z!5VK!}=kZce6n!k!N6svhm@HkW>(siC2O&4|nnhUnXj z<^@r<9G)8QthG6XnxrkZK#Rpqjz+^n5RFZ?3Gner8gsf*QiwEp_UQE9NMhoel52mnmUMO44bA;AH=Z49y3moFJ_t-_l!kYSk7R=Xau6w zo&*hEa1vC^*b~=v?BF&d!B`SW?O52XhPfads382w>hjONf_FtH8Gcq#(G#mpZpwOL zQg=8^g4pM2lj{?H$4!eb#nfJqVwtjKiblMbYAHPj%KU_O( z@3`UIBzm#mY&cQ>p!Csx#^sIbS-=_KJIw^cVSU(HZe|QYW!7E}Wb2cWS?-QAqQCEM z0>55)>7?qzkumj%eZm!#cw^T-Wj6aB^IqI<=RD+13rusY!mTJJgTuHmsVI&3u=P}G zM8_!~&NP`d02uKCoBj-ru=tkvSTM;x8CZAZ!zXohQcP=h3xd59X)7SlerH46IUf0Z zSFcewT}mH)+K>wy|EwJ~r7a+mbl@A=HAq^Q|HfmL`eA#!Y6s6VjQ1tO=Go&A&s7^UQ#KNlbDo7%YPC}_t9i12FKywV2 zm50a4*H$X)!p#}J{^h3T%&me<6_Yfm*3?(Zb{3^kFjT6*R2RoWNHltsY%hqDB#)7i zXupD(SSJ=lY(kwR&*4uDh$o#O{L2fGEjOeeoDKQ|fGrM3rAJ13^;5-kOcJT@`dBe9 zd&6EmM0(?@NpNo$AAu&0eX@*RX3wP$ghL#i>%s7&lR&vRR5+I-M;m%B!HbBCz_5-B z*hvXrf|;5O7z5-X|gcCEZ#+|HV#wq?*Tv1D|*r z6_&X(?s`)~zS)5@>h;n6k+AC|=ge8NU7ZE zj^ai0m?8$-0yg|A2gJ6c9!~y?5p?|6M>_bCed6ClK2)&+8+A^$Oev>_F+hkcB_5u2 zNv^Dfv`m?{((Uxm`?H&YkVz=yRs5@%6Z4M0^N!DQm6h@H+CAzqrF>e}bJY12sf~M@ z&Z+ZtsOtG}_?FH0wQ0AGjHssMBUK_LDgx710GMuhXB2>>uoerQ9o`*rg#`buA)NKi zx12>k?Gm8a{ZR_p(lQP<#hO{*J5-P>G>JO2xSzbuh_s>gX*`+T!x^F>;Y6xIvxtTv zv9fO+%&8sz6wxo(QqTd8K{@e1c*9O1Os z6}AN}ECI9^F`G#FK0&{VR4n62g=`%9ta4UjXW_IHfaP@WGsuLSrbg7W?pr21zvovT z#vAagaLA{aplU;^*MXux3QQxw zouBpJEHc=1R4%3XJuQ#oh%c*-hbQrqJU^BzlTaZ(OFfI?Nps^U>msQmb`jgFuTp+ezK@NRm%2c*rD*2sPS7;d9-*x> z8y4O6%@ge-vSlbMCzG11*{Lxr&n2Q;b41Ud#pfTuc;sgz$}w6|NSM{^Wyf}=8?6=2 z7o>~JkSRZq-xt6QkWnr(R9GJy>L7q!72Y%3GY(4iVQk`^OIIJN zl(5u=u`zo&T*|IOcPq3AbRA>V8^$tBDOGewJAapCNx>2?z9PIONU+Ew;2LUWc}+z@ z6m;VpB?-8CR6DuXFW2w!*bTSGK`|2(o1()M``f5r17e%*A}&lmUUNw_IB=B{U)~P5 z8=5uUrlNP<_oOwMA_B5!{aaAyWE)O`=#KgYUdB+;{qY-sPtZ>k3x2R8s>!SNh($9X zgQXy$b}^3C-ZAt&UUi>{`gN9(in`ZT73fq^RT)>AI-YrsI+rqA&Jy0vMIv`W^ahP4 zed@X-!Jnu|25v%bQUS3`SSs~jX8GCr5`v~N=3Iewsh+81CS}k{q*RJYRz)kVRsirr z&p;qUri@N+D4#TZ@3JD{z$mi*fQzU62YL3JAq~UMV!h;RA)Rfutm>C$o>y20)`o2P-43XpWkwR;gyrH-dYWJohCzY)74k%52`V(V~75=Tr40uh%a`+yjx$hG-OmG@IPrZ1d32_vD9}TJ05R z;${3izrh4*J^-5@0#fC!ZLg-0$;By15xrqPAC;J?A{R`6A-5-NI7V?Az|AJJFIq7q$6J`Q0DpVH z=Q>gFmw|cHMm+4E}8?AO2qdu5+7N{QqKC=pv&cp3LLpOLTciHP-EJcidP zC{3Uw>pa@0MouvSikph$t=eh zJ_yk)@+6KwP}l&8;n-Y3!xxG_6$e{?B`f#DipFyzLLTo74sF12T|uoCWW zUn5rjT~4FiT3+2*PN{xXv1kcwUp*1>DT`J+P~RT!7i$=h{e#3|RB`p8Nqy`qO#^f` z?51A5WK}>kcK*5_A0PifCvuhIHkk!$6sCgJZ8n3zQp|+jASl1?b1E){m%!y5og$}G zj8e47z5~9DblU12L2KO%WZ#6~K_A=3M_HLIYODFp@DbslYaIbhXwVUcpAwV+yKLrKV)w()vjUCR}1W7SPrsr`vsX zX{dlu4G!N?J8y!>3@|&*|N4ShO6j+iG9GW$MroBO9k1;`+$G@~S-z&GUt?F;N%5Ul zu2Nu?g0tU=Ng&7UI+O>S(9bLRm(LS_-J07hBp5+!%OXU=g|+Q5n3 zxp)jYD9lUR4iRon!;mE_h4T9xq!vWvbP3p7OU52v{#M9&U`tWMx5otSE7K*wdtR%Q zv<0pX3XT%!OE$fphAgPB9qUtG@&v%95%$QMIE|=8+qjzZIZWKy+Sz;4yzi8V7J?St zUgTyCf$9K-Xle90#?53f2EkToow~Hz!|8DWa|uy$p=mLyl&8eO^{nQu8bL#DM3IA! zx#w;w-E<7M=AG~%r~Z54v_h0nX_aj{T;SeHROg~9S+ATVM@=Cw6+vP3j8Q>8WPD6T zH91LH=}nSS9v9Mto?Lk`5I`TGITc*kJ~f$ah`Nryl5l7cksuh{RO#|J0RVzAzvYs*cOL8yK4&?n#10HIIcSP4tZs;d6*BTmx7N2~ud0X^Mf8 zL?DC>h>W+CyQfMq%E z0o~J8$Us*G)c~GxQ^@z#z zCP9qccf2ZMm2ml#2#?}2pX@SPXnT0E)j%0j(YBMKoa4w@`Z#sfOy2D=R{h8XVH^%G zr_0IGcK9qJikXph``SVjkp*yW1a=0Q1!@CSD$^*J{F!2q27@b=#X_bl(ky0*PweE4 z#fgME+r+i`V9|x(wpsW!yx3tHnQb}oQBe4j^66Js3Y?cYC4C6*xJtC`d7l)*y{}o0 zQF|?koxMo+XhIuJV+mfNx9zyQ^xZSZwQ^r5{?H}Og$%J=^1M%QKK!4pw;7zE@$OFx z$gd*b4Pi>$OFZ!IZSSwe-fw-jRbQZT$~I%8ArDt^8}%Yd^azp-GXD0jdkyg?E;*7j zGYAX*t@}-mc@G-j1evCyysWIexbzwimZY$x(x6cl@rc14^D(NmvIp53RS8LSM9>15Um;6WC%Ty~R z?Qo>!9;2>hcumB0BwiGre>?77_{9zA4Yah%Zda<_ghv-OL1j&-76}wVoc3>NGDL0KtJ(|?=tPZj6XQE(SvZO@+(g0b zJ3z-$CjFmV+Z6M0?O%(|8&^T+iB23rX1-Z#;Bdgio#@2AXt4V?WoFHo&z{*nTfy8j zY2N-Fs`8y*qVw|>=5MGrebKh^`IY91BQG#L;NmI6Oe6kzjFgI!PgG;iejbuZhkk$A z08mr*L>SSp)Q(ZQ4wM66)GlxJ`UWs7A>-2`-5XXRk+EbB{**zWp`@UqkVtyV^Hey^ zDluWgjKBQk?;il)<25O0z67hzqsh94xIZgWk2yg)hz4&4$hNE6<_r(~U7*QEO;iU>X)y z&v2rvnP?2#W;>U1mn?ZKVw+bGTmItY@q11-baU`&Y}(c=J{!f^NGZ1fX9qp}&*Dr68nzfD(1G2aauwKL1F$-fdC z2>F18C5V<--WF+Y;A(S99)3?J4206*!{~w54X+ z=j{b|BiZ|Nzo!0re-^og6__jyHj_ANYzATVZ@YTzP%IED9A21*1y2FbI^r85?^eRQ z$`P&O_ms@u8sa79^BMp~`Se$P*6-Dt>|{z6LG;&xPLlYDIPpQyAwl~EAjn!Sbudao zvSd82)9$l-{JBSM3&)Z_g1ZP9N4$jR)N$z46r2pfNypz?ak-W_Ffgs>$U|;;fK-vV zvjM~O*n^uwRdzG%-EL#VOA zRGKDy{Kr`y)&0E zd0bo&`RqF_=RM>xm$>O9Hkk(RQ=R|fhx9h-<)^#zg?a(2{d^6$?4i(0Y!2MTo50zO zr(c2u+=0)qD3r{7>VB*ZIF(Bo^U*e6h6sGPH*@A2lYVV0_SyS-wr#gvn_D;1(D2$0 z5n09Kd!Ia#h}BK<4m@cv1SguRSeEguZ9eSALr&UwHMl$ohr%S?hQaJ*jr-*i_p4w= z%whEAjENhme11_Cf(>eXW1OdjwHm98Pul`ZfLxNBcdzcxH76XGuagD$1A%pQd-ew3 zVN8$~cjxG3edz_naz+JZzqC8dBdaEiL1kOp5T-RtrO~+RkY#?KN(g8_9Hs2>+X?hH zA>VDs`h|QOBWlbj5h@BDg^u!v-YwJLas&H^&vpBqLVvce-*jOX!EsR8C%mdoV2ND; z-$QB7+XvnpNhnTLc#2@W3**vV)UX{nGf9rd?LziqePSw#YDS@LHIp^BG ziLM5VLOq(VcCQ#&$F}GUP5U>xeC>Z^ExV0}f#JB9S=;xnTBdoPvr5`mQR#xGJbljG zy4@Ei${WgoRch$E_c|ACscUj&bbseOwE4Q}^^HJ%z`D9kq-OX$6E04u0BW;QeLOrn zgo~I~7R5})vHcd)o))esFY1=gAYbsuAqjE+{Rt8GXC)AgXWU+eFB7P~e$YK(OZHla z&hoan6RDG_Gtxgj`xf`cqDxn_Oj0IAC59Ev%K-8nYtQN6+^f}JEYTH7A)6e>$0#@0@#cB1G|XcURwkP zqQK;-XZ#R?peYPZu6a6?i$FH|a(cs9sYTo-1cy>c#-mLXDBH&?57_jl`8 z!VF&s?ma?*0cKl5x&Q<162>~3p<&&gFttkjO)%m}F11w$ zs(Gyl(hT*SpRv3&GiJyOGzhrJnp^v{>gC<5a0=at181+#!vHW4O$Vah0H?M~$^0R* zfOYW}mjSFhE*d-iPkwGI&@Mn(5`v4Qspus;N#U+%JTOb(Qy6`u)tymY+}+7ILgB@1#6^8Ao(#=6*j45LWZ=NIqYsPd|TW=C1SNGM*Rov5c9-m?n?l&dOSK}HhB{a zxqaelb^NIBUonY7*BW+yf6u_q`u+Zz_*Y|3V^4WceUD>^Rk>}PN!%kM-*m6N3g@i^ zZhf4V#7c76M^0tTQ?^H)mTh`!hp7mTw6R%%IbYNvWG;0h$E7v5fm;q|@tgMqqCsXQ zHfZbvlXL7t2Gc>79`Y}tG_0RT;{F=oA`Kgzwy3%rc>j&#&-#VhmY!E+x7IX2>eI`)$D zz#*K7-&2Qf^vEXY4I1pdxTQI}ABm4;XBcmZot=d(+4!mv`s;-hb7lz$9uW(tX z*j{|E&`C%QI#IZlF=^ZH?9IGJV&p)jXi*dX+N>f0wM1VrHW`w>Ql}qSQMCMC>Dc_D z!3qFwrHbmEdSdfYWE%jbmqbZe3e-Ea4blg#oR9UUv~7-1s4iCb7{uKse7f}}Q6e@C z5OL)suyliKz**Fib#(``Fl*}Xa%gh-a<1|PdoV_{0vUkky<|5l0s7RPYGTKpLH!R2 zbS8o|$RTQ3{fB$<1;IrZL`L@3%jq6Z3MXT-n5F`!l}5%J{s=o6ytcq-=%E0A4!Li% zHS5~|=S1vjeCW=CH|XWtJu+(!buf;6Fu2o)N1E~EFGu813(F}S^)gy6bB!i)6D1tq zv@`$I4TP~Mm!CHS@5Nt#yFQF-u4hRt8G@y5b)dhSM$)8nV;>eZ=Jym%xj~#C>jp{s z#%}~wCwxO*Nk{VJmiki2&2_Crlys5JnRJ1In2$3^vf7>usW05@<7CqHPiE0J1P zo-sE-jmniza@urpj$GzTQ+_L`bZSZt45r4TqYtZ=nM{`aA!W_@U0xugZ<`6h8)e)i zpFc(}6QbB4M~?b>Cr=5>q`GVPx;4hA-UDi6ftYX|P4KXVu}&`--?^45ly?tGf#!=y zW;WYXc*ybjbrAYSg>)`j+K6TX9i@M8*$gK`8oUq^FR$R@9iIKZ?L^_QpVPNsrldDQ z->>9aEsiLyY_Lj^PHP{NwBOA<-LtkcY{HW`o4B`YWxiYAwH{xQRa(hlu-W9AtUcCG znoTHEDOie@-%Ne0bUaZPXD$V>se z?@l*PV<2>3d(ayPYkm81AJX_?1R_~5q4D6S8CF8Lafks2OG&RDPn+`y5U>8~1{};2 zi5#e7VEOFit>6>tgj|jeNaNrV{dwWLwc3KVDJF)7#9SITS7fDmq-@gM>mJ}<=;~w8 z_^5q7-dmWsJ&1d#x-kD>86T#=aiP>f7GK-#lAWX`+m!yWbVf0N+oxINR()13Vved5 zE7^Z!1jPE`@0~`xWN3@=vP6eEqe0$}y0JO}H>scgmQ-Kv_CD&4z!-mTS(C}CsOdHO zRJPm=%kbtb8&(B!P&9Bpp({9o0VWcy5o?o@aP6W;rktk_`L8grj^hi{3 zn;8Q|&B&NJn6~rtQtaOL{^_Kn^*Ue?sJ%O;j7x^UJ&|O%%zD}?9zu23uy9d7{;Pgv zfQC+^M)ykox-yenCG|7g#I}e?W@2s&^cIxa zjuer}%5+;qw>>UmOE`sQPCLLqxW|}(8-0+f`0pTAZQT2|^WA!y@|;78)iQF*a&^ib#tYe4f$IpYd5eA#UaXzseR5 zlYcmj&^CXJzyN|X{t?+y)kEbG>1B_6Mx(P}bW%zVAgZhdFzOIgr&NT!ZbR|^;@ov$n;JNka z3AbDz3On{*tRsVz=(`zC`@@S`tO;oKcWo{3RaWqmQ>lB@TlzTqJ~2C>OD4x7r`<*h zgGTFEpK^|Eo{Kr$+4Y%|E={bcIGNrM$m((1xv}D>laVJzv_lC~oelnY=Sw8B-xXHe z16Qzj8qo2_l0Uf{^)%k5h1O=D_umV5vSN{@YNGyBRL@LWXxcX2#fB9e*3j>WACPd}Iyl zO|N{-cET-2=f`fs;_P^_=$b52t+GJU3dx_vm{aUR0BqqQ;_}{?gT(X89VoXbonhS1 zHtrZVnysWRq79(mt-MpV0xN366)nWW-Yu6uRk`;Y_8*3GKgGSBZ>&#PeAr)_el$7k zSEwfS($>0!Nx@+;0%1|qCryzwU{U74eIw@t%b;1PSaydTa2~pP0ZJVhmCiOG(D9e^ zeTA>7t;HJMiAsIq2gqBCU}H-X6c$ZH2t{|!!t}vz~0n6&;2F=j!6lFuHt@Tl~ zfALewNmS$!eCoG&7mrJYkY-fJwgV1~>o^0(sbo(EKw#>-<5PD=x)ysUn(E7r5piO0 zUa>0$D7ntEJQxsNSTuZini;@X7`QapI~&B4`MtRkxOx#jqHQbO1`R=rlW|4d3_09bU*R0J^bSbx z_7No63kk-I9h4X=eyErf+I=0iWLO9eOa0%2+UnYQN`rftMnpZb-`2 zkq%Koej0oN#qbILf=>rABIVqh6m;?PycKof&Q>jcS$7u$-`;^cV;&KsqP~i&hPi>G zfoB2Vz|sHOAH_e+ceX@H7HIpvjC#Raz!ZYPQ~e?fSvodxFJ#REuZlAsT7oY!V zVN{$;^ZL?6P4LUj)TlZai*H@ z#MH^8JhU>LEm-4WVcn*UU{a>4BO8hN+|ZIB+H@y z9J8en5sd<*=}7$Az9u*0P_)+buW5KP3H+%#qKTVl#IBZ9P*7Ny_YS0$JA z5ca_NFq`D~rkZ*+hQfZrV{CB0^yM@`&q_IYQ38+YZSA(#DQb^Lc03QOhQm?dhPM}L z34*?lhMn72|JH=}`A(55ZmxE0JND)Z%tGFAZ79G}DVHORSdh721`qNKx4kj2!8-weEG>dzzX ze#2Q6(j+V@0V`~S4fApZx^5%*OZrF)mX2V})K$4sPurXD$!WS)-CbKlwP3LBK^Sw> zSN+Fs-m)l(2L?}BFFNq;SnR>2n9rFW&qZqT$__bC8{;@FzQ)K=L!3%%dZrVVa$iAZ z{P0B47*EdP%Hol{b0tBY+ZK$80(J%WO|GFbi(U_Ji5W}IVif<&F1{bgqwY5&xavb2 z!;|MI>8%@@(m?Rjp%aYKT0P+Eb=#JNd96^lX^M`QHX;z)Oz5~&a_RYVf)Wh|_1hJJkJEO3EXRfRUg-fck1aA9p$uCL1) zpIo+~oVmOq&V=qVZ;x4iX*6+ki3&&FugasQ%@z4wd;6SL3K|M}w&iujg&P-q=O)Pby6`7u$s)ymR0*1qe{{^_kmj4e8kdgpTjjl7Dp%? zN2u+b9Gwin6oq^7r<_&+@`*P^Vd5JKgt7o{9Vp35rGXNAoJb9?C> z8tGDCon;lJqQ3d#`;_h&wmF&HA9He0FpDXktfG;z9R~Hs0M1f?fvREW2B&~|^4v`c_mJnY35^(w?I6W;W z=7|0J)IYk*VkHgrL#u^-)r_%Dx$Ly9q($`rSfH5IhT+49HYKRR8v2}q=W(yx?A+nR zmj&in4P9UM+#fN{>owb|sD2e_KEHijHFVGq)7l?WpGo9Ci-UV|UU|AlCP?+*DY2ov z6li7p6eSzuBC3n$QK=twf*#2-*b0Gm$)6>93L?Xd!+pwI%6tykBCJDMf6n15coHiH zB*<*x3>FS>YzYg{Isqa9Q9RNYcVE6}h+yAL!v_6EP1EDU(U!Fy8{0Txfy_#b;`3=@ z3!E;&K{pD{)8z}nFkPI??D=#{+w^b;vyYY!TZa(S2=5-+wq($`a7$*oJ>C8t7U!J5 z3n7mzhKf&s{H<(`;?|R)E*F=PE9xRRB^ziGA``bvC2SJDZMhH?r+$AeT9$yxQ+p}y z_ZtJr3S#MbXmS7QSo1pIaiG9{e7Mo>xKp*fcDroPZ2)lxARhg*?A&s>-tzMB{z_)~ zZOhSHPjxJ^Q|x&uVn?&6%+h#bO`ptD;|s&#ap|p3%!lQ;gtXN>cwN^Rmfh z!cL>5*PJmW^a2_0H~NE@MNd8SF=>zkV}9}c8r0hA^r5+4cE9$xBPlM-vTE1OXfqS~?N%5<FGwK(G2m2eIbi-IA~Qw^$FvG>Ee`W zQ`v0q{X@wmb9(nLcW4tyaMG>gi0aWxU(N!ZANiAL+bewFdS54Wt_4X)db@c3oiuuvD++RH- zyM*e?3vHizoAERHXTh^>ds5Z3;M4fk&l8P)L6YVw{JdM8jkoioiN6HSV3Sm&Dt826 z&5&D1*RX4W6;%cSoeYyKh1wqNe&UL(YReT3+Ro!7SKKNr++Gbxt@&N6sh9Mmmpi75RXVz-F&y-ev6Wp|g_HP@tC7|_F z;}XJk$7*>AWL5yDH!vm=ss~)FE6qrUAy{pKWiLj^oUHhfU7rYZyU~elv|k_jvinII zD_auw34{#)NOQ2Zab65C$sz0&UCN=|GqZjp6_w5Cxlbl^6Cs5zQv_jCr{a%t4)UQ} zw=l7QpMVK>_m!8<%+-mJL=Y_s4jqSkq!quyX}rE&*zS2d!HLjQ)v19pQO{1w>?-M! zwxdwkwq^<4ql6!iFYX|Olha{ujZDc03=W==c6gtcaR4jYCprwx1m@%x1R!#X!v-pa zA2nAPFKIg>Kttgi?m95&D}kcQ6Rz@QgN715H|;~@-mrheXrJV zw-1`qmidCiZ|Jm`9xyG*L36)HYj~h}&Kz|DnN@UE4^zs%G!ma~_Hp?WTWV?wvmr?K4|dcs}bQMqch ztca?3VqQGCpY*ZbbZ}hcWU&z)Yv7Z}LPE9VFL~O89n}EubwxFS$O@TRfaJC{$AB&z z6JnRzBVcGuY(SGc_t;D(+?XDT^tq; z*e*Rw;9ZrfDu?O!nPu`x@Gf=b$xGv!B7M{_A0Br5`OX{$=myE|`S3={|7IcE?-EJB zmV-y@4lpzE>(f=C!t%q0>2!}F4aZRb`Orc+A7r~@Ft+ued*NXmYBSXL`JuX#TQ`>D z%X9{#p3NCfNLYTc+y|kE_l`>gTtr-J2SoF}v=X$$c*?{DAAX{0pd-U8^VR>fi)!>8 zEmH{yv1bn!VpQD-?&_Q^Vea^uW=B3eSf8owuM+xNo=>9a4>C-qK%#dr-IF2MfavLKs3wL`i)8$0CIE zQa%V`Qg@7U(_#)wwW(p_h_mu_yJfczQxe&~Tg=Z@&Gwz}Lm;x3>{s|jpW89+M><-m z5R~2jBPRcDZTI(+6Nm9Y&(TB=JWh1Nlqpkn)AuTaC#<5Zh}unS`;M-7soVO zhgj3MpHh&`$Hw=x4^=`S3`oyrDp!`_5M&Y)JW|7%?gIHOIM^B;?q2t3>=Cayu4^jO zcn9AND6*nnM}IXL z>9LySD&Hwux#L4(G`~~7mMZE(d`sqLd8@?a&A;YntD>W`Pk>hIOXUQz}v6+J*2Os zTN&NY!bgZnA#ritviNz41ZqwECXE!Gqw&NjNWTza zVKSus-iU#Bj!JVdAWdon6<_WHKjF64*u`w1SkgWvL+r}#qX-?_U%dNZA9Z))P|$0c zfR)OFpU!7T%*qx?Cl1~+VoUkJA_&dts=koc#8%ff`a=zzz7zd5W|>SFdi{xol;NoN zi`GKvpj$ivZzcgM+mmfncI~ENn!QbYenzWP=3}dq3s%?5%`wTp1UCHc1TO=|H(|OI z^8592bB}u6OW%h2xu5pkgAgJde)VxIg_qqSxgof?Q-}F|m#1e_EpVY(9^+^m&Snr- z*>9Xe&k{Cm4Di7tExdRPjVI@8lr+gL{Vb!8$xVwlIhB{=0xQ^LWp>zmxHK@E+iX{D z<}Fr(9r;mQqV{cAo)sHm?W1X$>n&w~tlv>?yB>EFkwLYm`870IaLlavEPh{qcG>dn zB8KX_<#2am9iOY=9qK8(gVrYYXkVU;LevKvhZq3{fX+2edGQvv9yuTM)&N%F*caOS z;}VdhyZ|4fTqQ=qeZ5y+-pRR5pPyO-O*8{cN@dLyM=L33*!&Y3aK~)jOc#89!nGe$ zMFXy$v3P4<-lR28;6irc(ev(iuj1(xHLm;o;&|Dzo(Q#NEh3~I7tyl}?^QA4?PFRv z1-gXXmpIx@KrsJmG?M)0W{iB=*BJ3Q6g%nMsm*pZJFL+k-5+g|0TKsd)Jb7r3srex z-zmE9-BGJfTpy5Qe8E+D)Kqw70qsOI;q+||9rN#tykVDuBc_Vi?1czT&YTX!Em)

6zO;o=NViK0%qJCI5hb~N= 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 Kk?~6kAp9>5+-`XQ diff --git a/scripts/generate_python_expected_artifacts.py b/scripts/generate_python_expected_artifacts.py new file mode 100755 index 0000000..16ac2c2 --- /dev/null +++ b/scripts/generate_python_expected_artifacts.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import csv +import gzip +import hashlib +import shutil +import subprocess +from pathlib import Path + + +REPO = Path(__file__).resolve().parents[1] +SOURCE_GZ = REPO / 'tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz' +MERGE_IN1 = REPO / 'tests/fixtures/mini/source/merge_input_1.parsed_v2.txt' +MERGE_IN2 = REPO / 'tests/fixtures/mini/source/merge_input_2.parsed_v2.txt' +SPLIT_MANIFEST = REPO / 'tests/fixtures/mini/expected/split.expected.manifest.tsv' +MERGED_EXPECTED = REPO / 'tests/fixtures/mini/expected/merged.expected.parsed' + + +def sha256_file(path: Path) -> str: + h = hashlib.sha256() + with path.open('rb') as fh: + while True: + chunk = fh.read(1024 * 1024) + if not chunk: + break + h.update(chunk) + return h.hexdigest() + + +def main() -> None: + tmp = REPO / 'results/.expected_tmp' + if tmp.exists(): + shutil.rmtree(tmp) + tmp.mkdir(parents=True) + + sam = tmp / 'ip.preRmDup.sam.mini.sam' + with gzip.open(SOURCE_GZ, 'rt', encoding='utf-8', errors='replace') as src, sam.open('w', encoding='utf-8') as out: + out.write(src.read()) + + split_dir = tmp / 'split' + split_dir.mkdir() + subprocess.run( + ['python3', str(REPO / 'bin/python/split_bam_to_subfiles_SEorPE.py'), str(sam), 'SE'], + cwd=split_dir, + check=True, + ) + + SPLIT_MANIFEST.parent.mkdir(parents=True, exist_ok=True) + with SPLIT_MANIFEST.open('w', encoding='utf-8', newline='') as fh: + writer = csv.writer(fh, delimiter='\t') + writer.writerow(['filename', 'size_bytes', 'sha256']) + for path in sorted(split_dir.glob('*.tmp')): + writer.writerow([path.name, path.stat().st_size, sha256_file(path)]) + + MERGED_EXPECTED.parent.mkdir(parents=True, exist_ok=True) + subprocess.run( + [ + 'python3', + str(REPO / 'bin/python/merge_multiple_parsed_files.simplified_20191022.py'), + str(MERGED_EXPECTED), + str(MERGE_IN1), + str(MERGE_IN2), + ], + check=True, + ) + + shutil.rmtree(tmp) + + +if __name__ == '__main__': + main() diff --git a/scripts/generate_split_manifest_from_perl.py b/scripts/generate_split_manifest_from_perl.py deleted file mode 100755 index 526c0e1..0000000 --- a/scripts/generate_split_manifest_from_perl.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python3 -from __future__ import annotations - -import csv -import gzip -import hashlib -import shutil -import subprocess -from pathlib import Path - - -REPO = Path(__file__).resolve().parents[1] -SOURCE_GZ = REPO / 'tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz' -MANIFEST = REPO / 'tests/fixtures/mini/expected/split.perl.manifest.tsv' - - -def sha256_file(path: Path) -> str: - h = hashlib.sha256() - with path.open('rb') as fh: - while True: - chunk = fh.read(1024 * 1024) - if not chunk: - break - h.update(chunk) - return h.hexdigest() - - -def main() -> None: - tmp = REPO / 'results/.split_manifest_tmp' - if tmp.exists(): - shutil.rmtree(tmp) - tmp.mkdir(parents=True) - - sam = tmp / 'ip.preRmDup.sam.mini.sam' - with gzip.open(SOURCE_GZ, 'rt', encoding='utf-8', errors='replace') as src, sam.open('w', encoding='utf-8') as out: - out.write(src.read()) - - subprocess.run(['perl', str(REPO / 'bin/perl/split_bam_to_subfiles_SEorPE.pl'), str(sam), 'SE'], cwd=tmp, check=True) - - files = sorted(tmp.glob('*.tmp')) - MANIFEST.parent.mkdir(parents=True, exist_ok=True) - with MANIFEST.open('w', encoding='utf-8', newline='') as fh: - writer = csv.writer(fh, delimiter='\t') - writer.writerow(['filename', 'size_bytes', 'sha256']) - for path in files: - writer.writerow([path.name, path.stat().st_size, sha256_file(path)]) - - shutil.rmtree(tmp) - - -if __name__ == '__main__': - main() diff --git a/tests/fixtures/mini/expected/merged.expected.parsed b/tests/fixtures/mini/expected/merged.expected.parsed new file mode 100644 index 0000000..6f389ba --- /dev/null +++ b/tests/fixtures/mini/expected/merged.expected.parsed @@ -0,0 +1,8 @@ +#READINFO AllReads 300 +#READINFO UsableReads 240 0.8 +#READINFO GenomicReads 90 0.375 +#READINFO RepFamilyReads 150 0.625 +TOTAL RNA28S 90 0.375 +TOTAL RNA18S 60 0.25 +ELEMENT RNA28S 53 0.22083333333333333 RNA28S||ENST2 GENE2 +ELEMENT RNA18S 37 0.15416666666666667 RNA18S||ENST1 GENE1 diff --git a/tests/fixtures/mini/expected/split.perl.manifest.tsv b/tests/fixtures/mini/expected/split.expected.manifest.tsv similarity index 100% rename from tests/fixtures/mini/expected/split.perl.manifest.tsv rename to tests/fixtures/mini/expected/split.expected.manifest.tsv diff --git a/tests/test_python_shims.py b/tests/test_python_shims.py deleted file mode 100644 index 3f53f61..0000000 --- a/tests/test_python_shims.py +++ /dev/null @@ -1,29 +0,0 @@ -from __future__ import annotations - -import importlib.util -from pathlib import Path - - -REPO = Path(__file__).resolve().parents[1] -SHIM = REPO / 'bin/python/_perl_compat.py' - - -def load_module(path: Path): - spec = importlib.util.spec_from_file_location('perl_compat_test', path) - assert spec is not None and spec.loader is not None - mod = importlib.util.module_from_spec(spec) - spec.loader.exec_module(mod) - return mod - - -def test_resolve_perl_script_path() -> None: - mod = load_module(SHIM) - resolved = mod.resolve_perl_script('split_bam_to_subfiles_SEorPE.pl') - assert resolved.exists() - assert resolved.name == 'split_bam_to_subfiles_SEorPE.pl' - - -def test_missing_perl_script_returns_nonzero() -> None: - mod = load_module(SHIM) - rc = mod.main('__definitely_missing__.pl') - assert rc == 2 diff --git a/tests/test_split_merge_parity.py b/tests/test_split_merge_parity.py deleted file mode 100644 index e8cf067..0000000 --- a/tests/test_split_merge_parity.py +++ /dev/null @@ -1,143 +0,0 @@ -from __future__ import annotations - -import gzip -import hashlib -import math -import subprocess -from pathlib import Path - - -REPO = Path(__file__).resolve().parents[1] -PERL_SPLIT = REPO / 'bin/perl/split_bam_to_subfiles_SEorPE.pl' -PY_SPLIT = REPO / 'bin/python/split_bam_to_subfiles_SEorPE.py' -PERL_MERGE = REPO / 'bin/perl/merge_multiple_parsed_files.simplified_20191022.pl' -PY_MERGE = REPO / 'bin/python/merge_multiple_parsed_files.simplified_20191022.py' - - -def sha256_file(path: Path) -> str: - h = hashlib.sha256() - with path.open('rb') as fh: - while True: - chunk = fh.read(1024 * 1024) - if not chunk: - break - h.update(chunk) - return h.hexdigest() - - -def unzip_to(src_gz: Path, dst: Path) -> None: - with gzip.open(src_gz, 'rt', encoding='utf-8', errors='replace') as src, dst.open('w', encoding='utf-8') as out: - out.write(src.read()) - - -def test_split_script_parity(tmp_path: Path) -> None: - sam_src = REPO / 'tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz' - sam = tmp_path / 'ip.preRmDup.sam' - unzip_to(sam_src, sam) - - perl_dir = tmp_path / 'perl_split' - py_dir = tmp_path / 'py_split' - perl_dir.mkdir() - py_dir.mkdir() - - subprocess.run(['perl', str(PERL_SPLIT), str(sam), 'SE'], cwd=perl_dir, check=True) - subprocess.run(['python3', str(PY_SPLIT), str(sam), 'SE'], cwd=py_dir, check=True) - - perl_files = sorted(perl_dir.glob('*.tmp')) - py_files = sorted(py_dir.glob('*.tmp')) - - assert len(perl_files) == 25 - assert len(py_files) == 25 - assert [p.name for p in perl_files] == [p.name for p in py_files] - - for p_perl, p_py in zip(perl_files, py_files): - assert sha256_file(p_perl) == sha256_file(p_py), f'mismatch: {p_perl.name}' - - -def parse_merged(path: Path): - headers: dict[str, tuple[int, float | None]] = {} - totals: dict[str, int] = {} - elements: dict[str, tuple[str, int, str]] = {} - - with path.open('r', encoding='utf-8', errors='replace') as fh: - for raw in fh: - line = raw.rstrip('\n') - cols = line.split('\t') - if cols[0] == '#READINFO': - key = cols[1] - count = int(float(cols[2])) - frac = float(cols[3]) if len(cols) > 3 else None - headers[key] = (count, frac) - elif cols[0] == 'TOTAL': - totals[cols[1]] = int(float(cols[2])) - elif cols[0] == 'ELEMENT': - # ELEMENT primary readnum frac element_id gene_id - elements[cols[4]] = (cols[1], int(float(cols[2])), cols[5]) - - return headers, totals, elements - - -def test_merge_script_parity(tmp_path: Path) -> None: - ip_parsed = tmp_path / 'ip.prefix.parsed_v2.20201210.txt' - input_parsed = tmp_path / 'input.prefix.parsed_v2.20201210.txt' - - ip_parsed.write_text( - '\n'.join( - [ - '#READINFO\tAll reads:\t100\tPCR duplicates removed:\t20\tUsable Remaining:\t80\tUsable from genomic mapping:\t30\tUsable from family mapping:\t50', - '#READINFO\tUsableReads\t80', - '#READINFO\tGenomicReads\t30\t0.375', - '#READINFO\tRepFamilyReads\t50\t0.625', - 'TOTAL\tRNA18S\t20\t250000', - 'TOTAL\tRNA28S\t30\t375000', - 'ELEMENT\tRNA18S\t12\t150000\tRNA18S||ENST1\tGENE1', - 'ELEMENT\tRNA28S\t18\t225000\tRNA28S||ENST2\tGENE2', - ] - ) - + '\n', - encoding='utf-8', - ) - input_parsed.write_text( - '\n'.join( - [ - '#READINFO\tAll reads:\t200\tPCR duplicates removed:\t40\tUsable Remaining:\t160\tUsable from genomic mapping:\t60\tUsable from family mapping:\t100', - '#READINFO\tUsableReads\t160', - '#READINFO\tGenomicReads\t60\t0.375', - '#READINFO\tRepFamilyReads\t100\t0.625', - 'TOTAL\tRNA18S\t40\t250000', - 'TOTAL\tRNA28S\t60\t375000', - 'ELEMENT\tRNA18S\t25\t156250\tRNA18S||ENST1\tGENE1', - 'ELEMENT\tRNA28S\t35\t218750\tRNA28S||ENST2\tGENE2', - ] - ) - + '\n', - encoding='utf-8', - ) - - perl_out = tmp_path / 'merged.perl.parsed' - py_out = tmp_path / 'merged.py.parsed' - - subprocess.run( - ['perl', str(PERL_MERGE), str(perl_out), str(ip_parsed), str(input_parsed)], - check=True, - ) - subprocess.run( - ['python3', str(PY_MERGE), str(py_out), str(ip_parsed), str(input_parsed)], - check=True, - ) - - perl_h, perl_t, perl_e = parse_merged(perl_out) - py_h, py_t, py_e = parse_merged(py_out) - - assert perl_t == py_t - assert perl_e == py_e - - assert perl_h.keys() == py_h.keys() - for key in perl_h: - p_count, p_frac = perl_h[key] - y_count, y_frac = py_h[key] - assert p_count == y_count - if p_frac is None or y_frac is None: - assert p_frac == y_frac - else: - assert math.isclose(p_frac, y_frac, rel_tol=1e-12, abs_tol=1e-12), key diff --git a/tests/test_split_merge_python_expected.py b/tests/test_split_merge_python_expected.py new file mode 100644 index 0000000..455aa2a --- /dev/null +++ b/tests/test_split_merge_python_expected.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +import csv +import gzip +import hashlib +import subprocess +from pathlib import Path + + +REPO = Path(__file__).resolve().parents[1] +PY_SPLIT = REPO / 'bin/python/split_bam_to_subfiles_SEorPE.py' +PY_MERGE = REPO / 'bin/python/merge_multiple_parsed_files.simplified_20191022.py' + + +def sha256_file(path: Path) -> str: + h = hashlib.sha256() + with path.open('rb') as fh: + while True: + chunk = fh.read(1024 * 1024) + if not chunk: + break + h.update(chunk) + return h.hexdigest() + + +def unzip_to(src_gz: Path, dst: Path) -> None: + with gzip.open(src_gz, 'rt', encoding='utf-8', errors='replace') as src, dst.open('w', encoding='utf-8') as out: + out.write(src.read()) + + +def test_split_matches_expected_manifest(tmp_path: Path) -> None: + sam_src = REPO / 'tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz' + sam = tmp_path / 'ip.preRmDup.sam.mini.sam' + unzip_to(sam_src, sam) + + out_dir = tmp_path / 'split' + out_dir.mkdir() + subprocess.run(['python3', str(PY_SPLIT), str(sam), 'SE'], cwd=out_dir, check=True) + + manifest = REPO / 'tests/fixtures/mini/expected/split.expected.manifest.tsv' + with manifest.open('r', encoding='utf-8') as fh: + rows = list(csv.DictReader(fh, delimiter='\t')) + + for row in rows: + p = out_dir / row['filename'] + assert p.exists(), f'missing file: {p.name}' + assert str(p.stat().st_size) == row['size_bytes'] + assert sha256_file(p) == row['sha256'] + + +def test_merge_matches_expected_output(tmp_path: Path) -> None: + in1 = REPO / 'tests/fixtures/mini/source/merge_input_1.parsed_v2.txt' + in2 = REPO / 'tests/fixtures/mini/source/merge_input_2.parsed_v2.txt' + expected = REPO / 'tests/fixtures/mini/expected/merged.expected.parsed' + produced = tmp_path / 'merged.parsed' + + subprocess.run(['python3', str(PY_MERGE), str(produced), str(in1), str(in2)], check=True) + + assert produced.stat().st_size == expected.stat().st_size + assert sha256_file(produced) == sha256_file(expected) diff --git a/wf/eCLIP_repelement_PE b/wf/eCLIP_repelement_PE deleted file mode 100755 index eff6064..0000000 --- a/wf/eCLIP_repelement_PE +++ /dev/null @@ -1,275 +0,0 @@ -#!/usr/bin/env bash - - -#set -o xtrace - - -# # Debugging settings -# #################### -# Print commands and their arguments as they are executed. -#set -o xtrace -#Exit immediately if a command exits with a non-zero status. -set -o errexit -#the return value of a pipeline is the status of -#the last command to exit with a non-zero status, -#or zero if no command exited with a non-zero status -set -o pipefail - - - -CWLRUNNER=cwltool # either: cwltool cwltoil or cwltorq -WORKFLOW=wf_ecliprepmap_pe # the prefix of the workflow cwl (without .cwl extension) - -PIPELINE=REPELEMENTMAPPING # workflow prefix -PIPELINEVERSION=1.0.0 # workflow version - -FULLPATHCOMMAND=$0 -JOB_FILE=$1 - -# get the ecliprepmap yaml file name without extension -JOB_BASENAME=${JOB_FILE##*/} -JOB_NAME="${JOB_BASENAME%.*}" -# TODO the same could be achieved with: JOB_NAME=$(basename "${JOB_FILE}" ".rnaseq") - -# if no parameter, initialize current directory with template files and show help -################# -# FIXME following this usage for * instead of *.cwl does not work -if [[ -z ${JOB_FILE} ]]; then - echo "welcome to rnaseq (torque version)" - # - wf_rnaseqse.usage - exit 0 -fi - - -# from now on, parameter was given (jobfile): -############################################# - -# get the cwlrunner and workflow type -##################################### - -# TODO: harcoded in CWLRUNNER and WORKFLOW vars above - -# remove the path at the beginning of full path command -# CWLRUNNER_WORKFLOW=${FULLPATHCOMMAND##*/} -# echo "FULL PATH COMMAND" -# echo $CWLRUNNER_WORKFLOW; - -# if command was 'rnaseqse' then will use the default cwlrunner and the default workflow -# if [ $CWLRUNNER_WORKFLOW = 'rnaseqse' ] -# then -# #echo default cwlrunner and workflow -# CWLRUNNER=cwltool -# WORKFLOW=wf_rnaseqcore_se -# else -# # remove cwlto+6 chars from beginning -# # WORKFLOW=${CWLRUNNER_WORKFLOW#cwlto??} # ?? matches either OL or IL or RQ # TODO caution: no .cwl extension ! -# WORKFLOW=wf_rnaseqcore_se_cwltoil -# # get those cwl+6 chars that were removed above -# # CWLRUNNER=${CWLRUNNER_WORKFLOW%$WORKFLOW} # FIXME: don't know what this does -# CWLRUNNER=cwltorq # FIXME: hardcoded for now... -# if [ -z $WORKFLOW ] -# then -# WORKFLOW=wf_rnaseqcore_se_cwltorq -# fi -# fi - - - -# initialize directories -######################## - -# get this script full directory name no matter where it is called from -WORKFLOW_HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../" && pwd )" # TODO move this one level up (include final /../) - - -#export ECLIPREPMAP_DOCUMENTATION=${WORKFLOW_HOME}/../documentation -#export WORKFLOW_HOME=${WORKFLOW_HOME}/../init -# get the eclipjob.yaml full directory name -JOB_HOME="$( cd "$( dirname "${BASH_SOURCE[1]}" )" && pwd )" - -# create temporary intermediates directory # TODO only needed for cwltool -INTERM=${JOB_HOME}/${JOB_NAME}/.tmp/cwltool_interm -mkdir -p ${INTERM} - -# create temp work directory # TODO should be absolute path for toil, is it ? -WORKDIR=${JOB_HOME}/${JOB_NAME}/.tmp/workdir -mkdir -p ${WORKDIR} -echo "WORKDIR: ${WORKDIR}" - -# define jobstore directory, but do not create it -JOBSTORE=${JOB_HOME}/${JOB_NAME}/.tmp/cwltoil_jobstore -#mkdir -p ${JOBSTORE}; -JOBSTOREEXITSLETSRESTART= -# if jobstore exists set arguments to restart toil -if [ -d $JOBSTORE ] -then echo jobstore exists; JOBSTOREEXITSLETSRESTART="--restart" -fi - -# create outdir directory -OUTDIR=${JOB_HOME}/${JOB_NAME}/.tmp/outdir -mkdir -p ${OUTDIR} - -# create toillogs directory -TOILLOGS=${JOB_HOME}/${JOB_NAME}/.tmp/toillogs -mkdir -p ${TOILLOGS} - -# create results directory -RESULTSDIR=${JOB_HOME}/${JOB_NAME}/results -mkdir -p ${RESULTSDIR} - - -# copy job file and log ecliprepmap version in output directory -######################################################### -# TODO softcode version nb -JOBCOPYFILEPATH="${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_INPUT.yaml" -cp ${JOB_FILE} ${JOBCOPYFILEPATH} -chmod -x ${JOBCOPYFILEPATH} -touch ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_VERSION-${PIPELINEVERSION} -# TODO: does not do anything -# touch ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_PIPELINE-rnaseqse -touch ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_WORKFLOW-${WORKFLOW} - -echo -echo ======================================================================== -echo PATHS -echo ======================================================================== -echo -echo "PATH:" $PATH -echo "which conda:" `which conda` -# echo "which rnaseqse:" `which rnaseqse` -echo "JOB_HOME:" $JOB_HOME -echo "OUTDIR:" $OUTDIR -echo "RESULTSDIR:" $RESULTSDIR - - -# execute -########## -echo -echo ======================================================================== -echo EXECUTING CWL JOB -echo ======================================================================== -echo - -if [ $CWLRUNNER == cwltool ] -then - cwltool --debug \ - --outdir ${OUTDIR} \ - --cachedir ${INTERM} \ - ${WORKFLOW_HOME}/cwl/${WORKFLOW}.cwl \ - ${JOB_FILE} \ - 2>${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_LOG.txt | tee ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_OUTPUT.json - - #2>&1 | tee ${JOB_HOME}/${JOB_NAME}/ECLIPREPMAP-JOB-LOG.txt - -elif [ $CWLRUNNER == cwltoil -o $CWLRUNNER == cwltorq ] -then - if [ $CWLRUNNER == cwltorq ]; then - BATCHSYSTEM="torque --disableCaching" - export TOIL_TORQUE_ARGS="-q home-yeo" # home-yeo - export TOIL_TORQUE_REQS="walltime=12:00:00" # walltime=8:00:00 - else - BATCHSYSTEM="single_machine" - fi - echo - echo CWLRUNNER : $CWLRUNNER - echo BATCHSYSTEM: $BATCHSYSTEM - echo - # For more robust logging options (default is INFO), - # use --logDebug - # or more generally, use --logLevel=, which may be set to either - # OFF (or CRITICAL), ERROR, WARN (or WARNING), INFO or DEBUG. - # Logs can be directed to a file with --logFile=. - # --logLevel DEBUG \ - # --logLevel=critical \ - # --logLevel=error \ - # --logLevel=warning \ - # --logLevel=info \ - # --logLevel=debug \ - # - # The defaults for cores (1), disk (2G), and memory (2G), can all be changed - # using --defaultCores, --defaultDisk, and --defaultMemory. - # Standard suffixes like K, Ki, M, Mi, G or Gi are supported. - - -# ${WORKFLOW_HOME}/repo/cwl/${WORKFLOW}.cwl \ - - cwltoil ${JOBSTOREEXITSLETSRESTART} \ - --batchSystem ${BATCHSYSTEM} \ - --stats \ - --writeLogs ${TOILLOGS} \ - --jobStore file:${JOBSTORE} \ - --workDir ${WORKDIR} \ - --outdir ${OUTDIR} \ - --clean never \ - --cleanWorkDir onSuccess \ - --logInfo \ - --clusterStats \ - --realTimeLogging \ - --stats \ - --defaultMemory 64.0G \ - --no-container \ - ${WORKFLOW_HOME}/cwl/${WORKFLOW}.cwl \ - ${JOB_FILE} \ - 2>${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_LOG.txt | tee ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_OUTPUT.json -fi - -#--defaultCores 1.0 \ -#--defaultMemory 8.0G \ -#--clusterStats \ -#--logDebug \ -#--realTimeLogging \ -#--stats \ -#--maxCores= --maxMemory=8.0Ei --maxDisk 8.0Ei \ -#--maxLogFileSize -1 \ - -# error when using option --maxLogFileSize -1 -# h2b = lambda x : human2bytes(str(x)) -#File "/projects/ps-yeolab/software/eclipconda/envs/ecliplesspeakstoil/lib/python2.7/site-packages/bd2k/util/humanize.py", line 111, in human2bytes -# num = float(num) - -############################################ -#rmdir ${JOB_HOME}/${JOB_NAME}/intermediates?????? - - -# Stop printing commands and their arguments as they are executed. -set +x - - - -echo -echo ======================================================================== -echo UPDATING RESULTS -echo ======================================================================== -echo -echo tmp output dir: ${OUTDIR} -echo results dir: ${RESULTSDIR} - -mv ${OUTDIR}/* ${RESULTSDIR}/ - -echo "Moving tmp to outdir done." - -cd ${JOB_HOME}/${JOB_NAME} - -if grep -q "permanentFail" ${PIPELINE}_${JOB_NAME}_LOG.txt -then - echo "Not good (failures found, check log). Keeping intermediates for now." # code if found -else - echo "All good (no failures)! Removing intermediate tmp folder." # code if not found - rm -rf ./.tmp/; - rm -rf ${RESULTSDIR}/out_tmp* ${RESULTSDIR}/tmp* -fi - -# TODO this now commented out, so to finish inside job folder -#cd - - -# Stop printing commands and their arguments as they are executed. - -echo -echo "*********************************************************************" -echo "* SUCCESS: ${JOB_NAME} PROCESSED WITH ${PIPELINEVERSION} *" -echo "*********************************************************************" -echo -echo Bye! -echo - diff --git a/wf/eCLIP_repelement_PE_singleNode b/wf/eCLIP_repelement_PE_singleNode deleted file mode 100755 index 0d6de73..0000000 --- a/wf/eCLIP_repelement_PE_singleNode +++ /dev/null @@ -1,275 +0,0 @@ -#!/usr/bin/env bash - - -#set -o xtrace - - -# # Debugging settings -# #################### -# Print commands and their arguments as they are executed. -#set -o xtrace -#Exit immediately if a command exits with a non-zero status. -set -o errexit -#the return value of a pipeline is the status of -#the last command to exit with a non-zero status, -#or zero if no command exited with a non-zero status -set -o pipefail - - - -CWLRUNNER=cwltool # either: cwltool cwltoil or cwltorq -WORKFLOW=wf_ecliprepmap_pe # the prefix of the workflow cwl (without .cwl extension) - -PIPELINE=REPELEMENTMAPPING # workflow prefix -PIPELINEVERSION=0.1.0 # workflow version - -FULLPATHCOMMAND=$0 -JOB_FILE=$1 - -# get the ecliprepmap yaml file name without extension -JOB_BASENAME=${JOB_FILE##*/} -JOB_NAME="${JOB_BASENAME%.*}" -# TODO the same could be achieved with: JOB_NAME=$(basename "${JOB_FILE}" ".rnaseq") - -# if no parameter, initialize current directory with template files and show help -################# -# FIXME following this usage for * instead of *.cwl does not work -if [[ -z ${JOB_FILE} ]]; then - echo "welcome to rnaseq (torque version)" - # - wf_rnaseqse.usage - exit 0 -fi - - -# from now on, parameter was given (jobfile): -############################################# - -# get the cwlrunner and workflow type -##################################### - -# TODO: harcoded in CWLRUNNER and WORKFLOW vars above - -# remove the path at the beginning of full path command -# CWLRUNNER_WORKFLOW=${FULLPATHCOMMAND##*/} -# echo "FULL PATH COMMAND" -# echo $CWLRUNNER_WORKFLOW; - -# if command was 'rnaseqse' then will use the default cwlrunner and the default workflow -# if [ $CWLRUNNER_WORKFLOW = 'rnaseqse' ] -# then -# #echo default cwlrunner and workflow -# CWLRUNNER=cwltool -# WORKFLOW=wf_rnaseqcore_se -# else -# # remove cwlto+6 chars from beginning -# # WORKFLOW=${CWLRUNNER_WORKFLOW#cwlto??} # ?? matches either OL or IL or RQ # TODO caution: no .cwl extension ! -# WORKFLOW=wf_rnaseqcore_se_cwltoil -# # get those cwl+6 chars that were removed above -# # CWLRUNNER=${CWLRUNNER_WORKFLOW%$WORKFLOW} # FIXME: don't know what this does -# CWLRUNNER=cwltorq # FIXME: hardcoded for now... -# if [ -z $WORKFLOW ] -# then -# WORKFLOW=wf_rnaseqcore_se_cwltorq -# fi -# fi - - - -# initialize directories -######################## - -# get this script full directory name no matter where it is called from -WORKFLOW_HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../" && pwd )" # TODO move this one level up (include final /../) - - -#export ECLIPREPMAP_DOCUMENTATION=${WORKFLOW_HOME}/../documentation -#export WORKFLOW_HOME=${WORKFLOW_HOME}/../init -# get the eclipjob.yaml full directory name -JOB_HOME="$( cd "$( dirname "${BASH_SOURCE[1]}" )" && pwd )" - -# create temporary intermediates directory # TODO only needed for cwltool -INTERM=${JOB_HOME}/${JOB_NAME}/.tmp/cwltool_interm -mkdir -p ${INTERM} - -# create temp work directory # TODO should be absolute path for toil, is it ? -WORKDIR=${JOB_HOME}/${JOB_NAME}/.tmp/workdir -mkdir -p ${WORKDIR} -echo "WORKDIR: ${WORKDIR}" - -# define jobstore directory, but do not create it -JOBSTORE=${JOB_HOME}/${JOB_NAME}/.tmp/cwltoil_jobstore -#mkdir -p ${JOBSTORE}; -JOBSTOREEXITSLETSRESTART= -# if jobstore exists set arguments to restart toil -if [ -d $JOBSTORE ] -then echo jobstore exists; JOBSTOREEXITSLETSRESTART="--restart" -fi - -# create outdir directory -OUTDIR=${JOB_HOME}/${JOB_NAME}/.tmp/outdir -mkdir -p ${OUTDIR} - -# create toillogs directory -TOILLOGS=${JOB_HOME}/${JOB_NAME}/.tmp/toillogs -mkdir -p ${TOILLOGS} - -# create results directory -RESULTSDIR=${JOB_HOME}/${JOB_NAME}/results -mkdir -p ${RESULTSDIR} - - -# copy job file and log ecliprepmap version in output directory -######################################################### -# TODO softcode version nb -JOBCOPYFILEPATH="${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_INPUT.yaml" -cp ${JOB_FILE} ${JOBCOPYFILEPATH} -chmod -x ${JOBCOPYFILEPATH} -touch ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_VERSION-${PIPELINEVERSION} -# TODO: does not do anything -# touch ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_PIPELINE-rnaseqse -touch ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_WORKFLOW-${WORKFLOW} - -echo -echo ======================================================================== -echo PATHS -echo ======================================================================== -echo -echo "PATH:" $PATH -echo "which conda:" `which conda` -# echo "which rnaseqse:" `which rnaseqse` -echo "JOB_HOME:" $JOB_HOME -echo "OUTDIR:" $OUTDIR -echo "RESULTSDIR:" $RESULTSDIR - - -# execute -########## -echo -echo ======================================================================== -echo EXECUTING CWL JOB -echo ======================================================================== -echo - -if [ $CWLRUNNER == cwltool ] -then - cwltool --debug \ - --outdir ${OUTDIR} \ - --cachedir ${INTERM} \ - ${WORKFLOW_HOME}/cwl/${WORKFLOW}.cwl \ - ${JOB_FILE} \ - 2>${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_LOG.txt | tee ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_OUTPUT.json - - #2>&1 | tee ${JOB_HOME}/${JOB_NAME}/ECLIPREPMAP-JOB-LOG.txt - -elif [ $CWLRUNNER == cwltoil -o $CWLRUNNER == cwltorq ] -then - if [ $CWLRUNNER == cwltorq ]; then - BATCHSYSTEM="torque --disableCaching" - export TOIL_TORQUE_ARGS="-q home-yeo" # home-yeo - export TOIL_TORQUE_REQS="walltime=12:00:00" # walltime=8:00:00 - else - BATCHSYSTEM="single_machine" - fi - echo - echo CWLRUNNER : $CWLRUNNER - echo BATCHSYSTEM: $BATCHSYSTEM - echo - # For more robust logging options (default is INFO), - # use --logDebug - # or more generally, use --logLevel=, which may be set to either - # OFF (or CRITICAL), ERROR, WARN (or WARNING), INFO or DEBUG. - # Logs can be directed to a file with --logFile=. - # --logLevel DEBUG \ - # --logLevel=critical \ - # --logLevel=error \ - # --logLevel=warning \ - # --logLevel=info \ - # --logLevel=debug \ - # - # The defaults for cores (1), disk (2G), and memory (2G), can all be changed - # using --defaultCores, --defaultDisk, and --defaultMemory. - # Standard suffixes like K, Ki, M, Mi, G or Gi are supported. - - -# ${WORKFLOW_HOME}/repo/cwl/${WORKFLOW}.cwl \ - - cwltoil ${JOBSTOREEXITSLETSRESTART} \ - --batchSystem ${BATCHSYSTEM} \ - --stats \ - --writeLogs ${TOILLOGS} \ - --jobStore file:${JOBSTORE} \ - --workDir ${WORKDIR} \ - --outdir ${OUTDIR} \ - --clean never \ - --cleanWorkDir onSuccess \ - --logInfo \ - --clusterStats \ - --realTimeLogging \ - --stats \ - --defaultMemory 64.0G \ - --no-container \ - ${WORKFLOW_HOME}/cwl/${WORKFLOW}.cwl \ - ${JOB_FILE} \ - 2>${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_LOG.txt | tee ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_OUTPUT.json -fi - -#--defaultCores 1.0 \ -#--defaultMemory 8.0G \ -#--clusterStats \ -#--logDebug \ -#--realTimeLogging \ -#--stats \ -#--maxCores= --maxMemory=8.0Ei --maxDisk 8.0Ei \ -#--maxLogFileSize -1 \ - -# error when using option --maxLogFileSize -1 -# h2b = lambda x : human2bytes(str(x)) -#File "/projects/ps-yeolab/software/eclipconda/envs/ecliplesspeakstoil/lib/python2.7/site-packages/bd2k/util/humanize.py", line 111, in human2bytes -# num = float(num) - -############################################ -#rmdir ${JOB_HOME}/${JOB_NAME}/intermediates?????? - - -# Stop printing commands and their arguments as they are executed. -set +x - - - -echo -echo ======================================================================== -echo UPDATING RESULTS -echo ======================================================================== -echo -echo tmp output dir: ${OUTDIR} -echo results dir: ${RESULTSDIR} - -mv ${OUTDIR}/* ${RESULTSDIR}/ - -echo "Moving tmp to outdir done." - -cd ${JOB_HOME}/${JOB_NAME} - -if grep -q "permanentFail" ${PIPELINE}_${JOB_NAME}_LOG.txt -then - echo "Not good (failures found, check log). Keeping intermediates for now." # code if found -else - echo "All good (no failures)! Removing intermediate tmp folder." # code if not found - rm -rf ./.tmp/; - rm -rf ${RESULTSDIR}/out_tmp* ${RESULTSDIR}/tmp* -fi - -# TODO this now commented out, so to finish inside job folder -#cd - - -# Stop printing commands and their arguments as they are executed. - -echo -echo "*********************************************************************" -echo "* SUCCESS: ${JOB_NAME} PROCESSED WITH ${PIPELINEVERSION} *" -echo "*********************************************************************" -echo -echo Bye! -echo - diff --git a/wf/eCLIP_repelement_SE b/wf/eCLIP_repelement_SE deleted file mode 100755 index 9a467ea..0000000 --- a/wf/eCLIP_repelement_SE +++ /dev/null @@ -1,275 +0,0 @@ -#!/usr/bin/env bash - - -#set -o xtrace - - -# # Debugging settings -# #################### -# Print commands and their arguments as they are executed. -#set -o xtrace -#Exit immediately if a command exits with a non-zero status. -set -o errexit -#the return value of a pipeline is the status of -#the last command to exit with a non-zero status, -#or zero if no command exited with a non-zero status -set -o pipefail - - - -CWLRUNNER=cwltool # either: cwltool cwltoil or cwltorq -WORKFLOW=wf_ecliprepmap_se # the prefix of the workflow cwl (without .cwl extension) - -PIPELINE=REPELEMENTMAPPING # workflow prefix -PIPELINEVERSION=1.0.0 # workflow version - -FULLPATHCOMMAND=$0 -JOB_FILE=$1 - -# get the ecliprepmap yaml file name without extension -JOB_BASENAME=${JOB_FILE##*/} -JOB_NAME="${JOB_BASENAME%.*}" -# TODO the same could be achieved with: JOB_NAME=$(basename "${JOB_FILE}" ".rnaseq") - -# if no parameter, initialize current directory with template files and show help -################# -# FIXME following this usage for * instead of *.cwl does not work -if [[ -z ${JOB_FILE} ]]; then - echo "welcome to rnaseq (torque version)" - # - wf_rnaseqse.usage - exit 0 -fi - - -# from now on, parameter was given (jobfile): -############################################# - -# get the cwlrunner and workflow type -##################################### - -# TODO: harcoded in CWLRUNNER and WORKFLOW vars above - -# remove the path at the beginning of full path command -# CWLRUNNER_WORKFLOW=${FULLPATHCOMMAND##*/} -# echo "FULL PATH COMMAND" -# echo $CWLRUNNER_WORKFLOW; - -# if command was 'rnaseqse' then will use the default cwlrunner and the default workflow -# if [ $CWLRUNNER_WORKFLOW = 'rnaseqse' ] -# then -# #echo default cwlrunner and workflow -# CWLRUNNER=cwltool -# WORKFLOW=wf_rnaseqcore_se -# else -# # remove cwlto+6 chars from beginning -# # WORKFLOW=${CWLRUNNER_WORKFLOW#cwlto??} # ?? matches either OL or IL or RQ # TODO caution: no .cwl extension ! -# WORKFLOW=wf_rnaseqcore_se_cwltoil -# # get those cwl+6 chars that were removed above -# # CWLRUNNER=${CWLRUNNER_WORKFLOW%$WORKFLOW} # FIXME: don't know what this does -# CWLRUNNER=cwltorq # FIXME: hardcoded for now... -# if [ -z $WORKFLOW ] -# then -# WORKFLOW=wf_rnaseqcore_se_cwltorq -# fi -# fi - - - -# initialize directories -######################## - -# get this script full directory name no matter where it is called from -WORKFLOW_HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../" && pwd )" # TODO move this one level up (include final /../) - - -#export ECLIPREPMAP_DOCUMENTATION=${WORKFLOW_HOME}/../documentation -#export WORKFLOW_HOME=${WORKFLOW_HOME}/../init -# get the eclipjob.yaml full directory name -JOB_HOME="$( cd "$( dirname "${BASH_SOURCE[1]}" )" && pwd )" - -# create temporary intermediates directory # TODO only needed for cwltool -INTERM=${JOB_HOME}/${JOB_NAME}/.tmp/cwltool_interm -mkdir -p ${INTERM} - -# create temp work directory # TODO should be absolute path for toil, is it ? -WORKDIR=${JOB_HOME}/${JOB_NAME}/.tmp/workdir -mkdir -p ${WORKDIR} -echo "WORKDIR: ${WORKDIR}" - -# define jobstore directory, but do not create it -JOBSTORE=${JOB_HOME}/${JOB_NAME}/.tmp/cwltoil_jobstore -#mkdir -p ${JOBSTORE}; -JOBSTOREEXITSLETSRESTART= -# if jobstore exists set arguments to restart toil -if [ -d $JOBSTORE ] -then echo jobstore exists; JOBSTOREEXITSLETSRESTART="--restart" -fi - -# create outdir directory -OUTDIR=${JOB_HOME}/${JOB_NAME}/.tmp/outdir -mkdir -p ${OUTDIR} - -# create toillogs directory -TOILLOGS=${JOB_HOME}/${JOB_NAME}/.tmp/toillogs -mkdir -p ${TOILLOGS} - -# create results directory -RESULTSDIR=${JOB_HOME}/${JOB_NAME}/results -mkdir -p ${RESULTSDIR} - - -# copy job file and log ecliprepmap version in output directory -######################################################### -# TODO softcode version nb -JOBCOPYFILEPATH="${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_INPUT.yaml" -cp ${JOB_FILE} ${JOBCOPYFILEPATH} -chmod -x ${JOBCOPYFILEPATH} -touch ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_VERSION-${PIPELINEVERSION} -# TODO: does not do anything -# touch ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_PIPELINE-rnaseqse -touch ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_WORKFLOW-${WORKFLOW} - -echo -echo ======================================================================== -echo PATHS -echo ======================================================================== -echo -echo "PATH:" $PATH -echo "which conda:" `which conda` -# echo "which rnaseqse:" `which rnaseqse` -echo "JOB_HOME:" $JOB_HOME -echo "OUTDIR:" $OUTDIR -echo "RESULTSDIR:" $RESULTSDIR - - -# execute -########## -echo -echo ======================================================================== -echo EXECUTING CWL JOB -echo ======================================================================== -echo - -if [ $CWLRUNNER == cwltool ] -then - cwltool --debug \ - --outdir ${OUTDIR} \ - --cachedir ${INTERM} \ - ${WORKFLOW_HOME}/cwl/${WORKFLOW}.cwl \ - ${JOB_FILE} \ - 2>${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_LOG.txt | tee ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_OUTPUT.json - - #2>&1 | tee ${JOB_HOME}/${JOB_NAME}/ECLIPREPMAP-JOB-LOG.txt - -elif [ $CWLRUNNER == cwltoil -o $CWLRUNNER == cwltorq ] -then - if [ $CWLRUNNER == cwltorq ]; then - BATCHSYSTEM="torque --disableCaching" - export TOIL_TORQUE_ARGS="-q home-yeo" # home-yeo - export TOIL_TORQUE_REQS="walltime=12:00:00" # walltime=8:00:00 - else - BATCHSYSTEM="single_machine" - fi - echo - echo CWLRUNNER : $CWLRUNNER - echo BATCHSYSTEM: $BATCHSYSTEM - echo - # For more robust logging options (default is INFO), - # use --logDebug - # or more generally, use --logLevel=, which may be set to either - # OFF (or CRITICAL), ERROR, WARN (or WARNING), INFO or DEBUG. - # Logs can be directed to a file with --logFile=. - # --logLevel DEBUG \ - # --logLevel=critical \ - # --logLevel=error \ - # --logLevel=warning \ - # --logLevel=info \ - # --logLevel=debug \ - # - # The defaults for cores (1), disk (2G), and memory (2G), can all be changed - # using --defaultCores, --defaultDisk, and --defaultMemory. - # Standard suffixes like K, Ki, M, Mi, G or Gi are supported. - - -# ${WORKFLOW_HOME}/repo/cwl/${WORKFLOW}.cwl \ - - cwltoil ${JOBSTOREEXITSLETSRESTART} \ - --batchSystem ${BATCHSYSTEM} \ - --stats \ - --writeLogs ${TOILLOGS} \ - --jobStore file:${JOBSTORE} \ - --workDir ${WORKDIR} \ - --outdir ${OUTDIR} \ - --clean never \ - --cleanWorkDir onSuccess \ - --logInfo \ - --clusterStats \ - --realTimeLogging \ - --stats \ - --defaultMemory 64.0G \ - --no-container \ - ${WORKFLOW_HOME}/cwl/${WORKFLOW}.cwl \ - ${JOB_FILE} \ - 2>${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_LOG.txt | tee ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_OUTPUT.json -fi -# --defaultMemory 64.0G \ -#--defaultCores 1.0 \ -#--defaultMemory 8.0G \ -#--clusterStats \ -#--logDebug \ -#--realTimeLogging \ -#--stats \ -#--maxCores= --maxMemory=8.0Ei --maxDisk 8.0Ei \ -#--maxLogFileSize -1 \ - -# error when using option --maxLogFileSize -1 -# h2b = lambda x : human2bytes(str(x)) -#File "/projects/ps-yeolab/software/eclipconda/envs/ecliplesspeakstoil/lib/python2.7/site-packages/bd2k/util/humanize.py", line 111, in human2bytes -# num = float(num) - -############################################ -#rmdir ${JOB_HOME}/${JOB_NAME}/intermediates?????? - - -# Stop printing commands and their arguments as they are executed. -set +x - - - -echo -echo ======================================================================== -echo UPDATING RESULTS -echo ======================================================================== -echo -echo tmp output dir: ${OUTDIR} -echo results dir: ${RESULTSDIR} - -mv ${OUTDIR}/* ${RESULTSDIR}/ - -echo "Moving tmp to outdir done." - -cd ${JOB_HOME}/${JOB_NAME} - -if grep -q "permanentFail" ${PIPELINE}_${JOB_NAME}_LOG.txt -then - echo "Not good (failures found, check log). Keeping intermediates for now." # code if found -else - echo "All good (no failures)! Removing intermediate tmp folder." # code if not found - rm -rf ./.tmp/; - rm -rf ${RESULTSDIR}/out_tmp* ${RESULTSDIR}/tmp* -fi - -# TODO this now commented out, so to finish inside job folder -#cd - - -# Stop printing commands and their arguments as they are executed. - -echo -echo "*********************************************************************" -echo "* SUCCESS: ${JOB_NAME} PROCESSED WITH ${PIPELINEVERSION} *" -echo "*********************************************************************" -echo -echo Bye! -echo - diff --git a/wf/eCLIP_repelement_SE_singleNode b/wf/eCLIP_repelement_SE_singleNode deleted file mode 100755 index 9a467ea..0000000 --- a/wf/eCLIP_repelement_SE_singleNode +++ /dev/null @@ -1,275 +0,0 @@ -#!/usr/bin/env bash - - -#set -o xtrace - - -# # Debugging settings -# #################### -# Print commands and their arguments as they are executed. -#set -o xtrace -#Exit immediately if a command exits with a non-zero status. -set -o errexit -#the return value of a pipeline is the status of -#the last command to exit with a non-zero status, -#or zero if no command exited with a non-zero status -set -o pipefail - - - -CWLRUNNER=cwltool # either: cwltool cwltoil or cwltorq -WORKFLOW=wf_ecliprepmap_se # the prefix of the workflow cwl (without .cwl extension) - -PIPELINE=REPELEMENTMAPPING # workflow prefix -PIPELINEVERSION=1.0.0 # workflow version - -FULLPATHCOMMAND=$0 -JOB_FILE=$1 - -# get the ecliprepmap yaml file name without extension -JOB_BASENAME=${JOB_FILE##*/} -JOB_NAME="${JOB_BASENAME%.*}" -# TODO the same could be achieved with: JOB_NAME=$(basename "${JOB_FILE}" ".rnaseq") - -# if no parameter, initialize current directory with template files and show help -################# -# FIXME following this usage for * instead of *.cwl does not work -if [[ -z ${JOB_FILE} ]]; then - echo "welcome to rnaseq (torque version)" - # - wf_rnaseqse.usage - exit 0 -fi - - -# from now on, parameter was given (jobfile): -############################################# - -# get the cwlrunner and workflow type -##################################### - -# TODO: harcoded in CWLRUNNER and WORKFLOW vars above - -# remove the path at the beginning of full path command -# CWLRUNNER_WORKFLOW=${FULLPATHCOMMAND##*/} -# echo "FULL PATH COMMAND" -# echo $CWLRUNNER_WORKFLOW; - -# if command was 'rnaseqse' then will use the default cwlrunner and the default workflow -# if [ $CWLRUNNER_WORKFLOW = 'rnaseqse' ] -# then -# #echo default cwlrunner and workflow -# CWLRUNNER=cwltool -# WORKFLOW=wf_rnaseqcore_se -# else -# # remove cwlto+6 chars from beginning -# # WORKFLOW=${CWLRUNNER_WORKFLOW#cwlto??} # ?? matches either OL or IL or RQ # TODO caution: no .cwl extension ! -# WORKFLOW=wf_rnaseqcore_se_cwltoil -# # get those cwl+6 chars that were removed above -# # CWLRUNNER=${CWLRUNNER_WORKFLOW%$WORKFLOW} # FIXME: don't know what this does -# CWLRUNNER=cwltorq # FIXME: hardcoded for now... -# if [ -z $WORKFLOW ] -# then -# WORKFLOW=wf_rnaseqcore_se_cwltorq -# fi -# fi - - - -# initialize directories -######################## - -# get this script full directory name no matter where it is called from -WORKFLOW_HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../" && pwd )" # TODO move this one level up (include final /../) - - -#export ECLIPREPMAP_DOCUMENTATION=${WORKFLOW_HOME}/../documentation -#export WORKFLOW_HOME=${WORKFLOW_HOME}/../init -# get the eclipjob.yaml full directory name -JOB_HOME="$( cd "$( dirname "${BASH_SOURCE[1]}" )" && pwd )" - -# create temporary intermediates directory # TODO only needed for cwltool -INTERM=${JOB_HOME}/${JOB_NAME}/.tmp/cwltool_interm -mkdir -p ${INTERM} - -# create temp work directory # TODO should be absolute path for toil, is it ? -WORKDIR=${JOB_HOME}/${JOB_NAME}/.tmp/workdir -mkdir -p ${WORKDIR} -echo "WORKDIR: ${WORKDIR}" - -# define jobstore directory, but do not create it -JOBSTORE=${JOB_HOME}/${JOB_NAME}/.tmp/cwltoil_jobstore -#mkdir -p ${JOBSTORE}; -JOBSTOREEXITSLETSRESTART= -# if jobstore exists set arguments to restart toil -if [ -d $JOBSTORE ] -then echo jobstore exists; JOBSTOREEXITSLETSRESTART="--restart" -fi - -# create outdir directory -OUTDIR=${JOB_HOME}/${JOB_NAME}/.tmp/outdir -mkdir -p ${OUTDIR} - -# create toillogs directory -TOILLOGS=${JOB_HOME}/${JOB_NAME}/.tmp/toillogs -mkdir -p ${TOILLOGS} - -# create results directory -RESULTSDIR=${JOB_HOME}/${JOB_NAME}/results -mkdir -p ${RESULTSDIR} - - -# copy job file and log ecliprepmap version in output directory -######################################################### -# TODO softcode version nb -JOBCOPYFILEPATH="${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_INPUT.yaml" -cp ${JOB_FILE} ${JOBCOPYFILEPATH} -chmod -x ${JOBCOPYFILEPATH} -touch ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_VERSION-${PIPELINEVERSION} -# TODO: does not do anything -# touch ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_PIPELINE-rnaseqse -touch ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_WORKFLOW-${WORKFLOW} - -echo -echo ======================================================================== -echo PATHS -echo ======================================================================== -echo -echo "PATH:" $PATH -echo "which conda:" `which conda` -# echo "which rnaseqse:" `which rnaseqse` -echo "JOB_HOME:" $JOB_HOME -echo "OUTDIR:" $OUTDIR -echo "RESULTSDIR:" $RESULTSDIR - - -# execute -########## -echo -echo ======================================================================== -echo EXECUTING CWL JOB -echo ======================================================================== -echo - -if [ $CWLRUNNER == cwltool ] -then - cwltool --debug \ - --outdir ${OUTDIR} \ - --cachedir ${INTERM} \ - ${WORKFLOW_HOME}/cwl/${WORKFLOW}.cwl \ - ${JOB_FILE} \ - 2>${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_LOG.txt | tee ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_OUTPUT.json - - #2>&1 | tee ${JOB_HOME}/${JOB_NAME}/ECLIPREPMAP-JOB-LOG.txt - -elif [ $CWLRUNNER == cwltoil -o $CWLRUNNER == cwltorq ] -then - if [ $CWLRUNNER == cwltorq ]; then - BATCHSYSTEM="torque --disableCaching" - export TOIL_TORQUE_ARGS="-q home-yeo" # home-yeo - export TOIL_TORQUE_REQS="walltime=12:00:00" # walltime=8:00:00 - else - BATCHSYSTEM="single_machine" - fi - echo - echo CWLRUNNER : $CWLRUNNER - echo BATCHSYSTEM: $BATCHSYSTEM - echo - # For more robust logging options (default is INFO), - # use --logDebug - # or more generally, use --logLevel=, which may be set to either - # OFF (or CRITICAL), ERROR, WARN (or WARNING), INFO or DEBUG. - # Logs can be directed to a file with --logFile=. - # --logLevel DEBUG \ - # --logLevel=critical \ - # --logLevel=error \ - # --logLevel=warning \ - # --logLevel=info \ - # --logLevel=debug \ - # - # The defaults for cores (1), disk (2G), and memory (2G), can all be changed - # using --defaultCores, --defaultDisk, and --defaultMemory. - # Standard suffixes like K, Ki, M, Mi, G or Gi are supported. - - -# ${WORKFLOW_HOME}/repo/cwl/${WORKFLOW}.cwl \ - - cwltoil ${JOBSTOREEXITSLETSRESTART} \ - --batchSystem ${BATCHSYSTEM} \ - --stats \ - --writeLogs ${TOILLOGS} \ - --jobStore file:${JOBSTORE} \ - --workDir ${WORKDIR} \ - --outdir ${OUTDIR} \ - --clean never \ - --cleanWorkDir onSuccess \ - --logInfo \ - --clusterStats \ - --realTimeLogging \ - --stats \ - --defaultMemory 64.0G \ - --no-container \ - ${WORKFLOW_HOME}/cwl/${WORKFLOW}.cwl \ - ${JOB_FILE} \ - 2>${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_LOG.txt | tee ${JOB_HOME}/${JOB_NAME}/${PIPELINE}_${JOB_NAME}_OUTPUT.json -fi -# --defaultMemory 64.0G \ -#--defaultCores 1.0 \ -#--defaultMemory 8.0G \ -#--clusterStats \ -#--logDebug \ -#--realTimeLogging \ -#--stats \ -#--maxCores= --maxMemory=8.0Ei --maxDisk 8.0Ei \ -#--maxLogFileSize -1 \ - -# error when using option --maxLogFileSize -1 -# h2b = lambda x : human2bytes(str(x)) -#File "/projects/ps-yeolab/software/eclipconda/envs/ecliplesspeakstoil/lib/python2.7/site-packages/bd2k/util/humanize.py", line 111, in human2bytes -# num = float(num) - -############################################ -#rmdir ${JOB_HOME}/${JOB_NAME}/intermediates?????? - - -# Stop printing commands and their arguments as they are executed. -set +x - - - -echo -echo ======================================================================== -echo UPDATING RESULTS -echo ======================================================================== -echo -echo tmp output dir: ${OUTDIR} -echo results dir: ${RESULTSDIR} - -mv ${OUTDIR}/* ${RESULTSDIR}/ - -echo "Moving tmp to outdir done." - -cd ${JOB_HOME}/${JOB_NAME} - -if grep -q "permanentFail" ${PIPELINE}_${JOB_NAME}_LOG.txt -then - echo "Not good (failures found, check log). Keeping intermediates for now." # code if found -else - echo "All good (no failures)! Removing intermediate tmp folder." # code if not found - rm -rf ./.tmp/; - rm -rf ${RESULTSDIR}/out_tmp* ${RESULTSDIR}/tmp* -fi - -# TODO this now commented out, so to finish inside job folder -#cd - - -# Stop printing commands and their arguments as they are executed. - -echo -echo "*********************************************************************" -echo "* SUCCESS: ${JOB_NAME} PROCESSED WITH ${PIPELINEVERSION} *" -echo "*********************************************************************" -echo -echo Bye! -echo - diff --git a/workflow/rules/se_foundation.smk b/workflow/rules/se_foundation.smk index 1aee9ad..82f16cf 100644 --- a/workflow/rules/se_foundation.smk +++ b/workflow/rules/se_foundation.smk @@ -47,14 +47,11 @@ rule merge_parsed_python: 'python3 {workflow.basedir}/bin/python/merge_multiple_parsed_files.simplified_20191022.py {output} {input[0]} {input[1]}' -rule verify_merge_against_perl: +rule verify_merge_against_expected: input: - py='results/mini/merge/merged.python.parsed', - in1=config['mini']['merge_input_1'], - in2=config['mini']['merge_input_2'], + produced='results/mini/merge/merged.python.parsed', + expected=config['mini']['merge_expected'], output: 'results/mini/merge/verified.ok' - params: - perl_script=workflow.basedir + '/bin/perl/merge_multiple_parsed_files.simplified_20191022.pl' script: - '../scripts/verify_merge_vs_perl.py' + '../scripts/verify_merge_against_expected.py' diff --git a/workflow/scripts/verify_merge_against_expected.py b/workflow/scripts/verify_merge_against_expected.py new file mode 100644 index 0000000..20ab9e9 --- /dev/null +++ b/workflow/scripts/verify_merge_against_expected.py @@ -0,0 +1,26 @@ +import hashlib +from pathlib import Path + + +def sha256_file(path: Path) -> str: + h = hashlib.sha256() + with path.open('rb') as fh: + while True: + chunk = fh.read(1024 * 1024) + if not chunk: + break + h.update(chunk) + return h.hexdigest() + + +produced = Path(snakemake.input['produced']) +expected = Path(snakemake.input['expected']) +out_ok = Path(snakemake.output[0]) + +assert produced.exists(), f'missing produced file: {produced}' +assert expected.exists(), f'missing expected file: {expected}' +assert produced.stat().st_size == expected.stat().st_size, 'size mismatch' +assert sha256_file(produced) == sha256_file(expected), 'sha mismatch' + +out_ok.parent.mkdir(parents=True, exist_ok=True) +out_ok.write_text('ok\n', encoding='utf-8') diff --git a/workflow/scripts/verify_merge_vs_perl.py b/workflow/scripts/verify_merge_vs_perl.py deleted file mode 100644 index 8ae2ef4..0000000 --- a/workflow/scripts/verify_merge_vs_perl.py +++ /dev/null @@ -1,49 +0,0 @@ -import math -import subprocess -from pathlib import Path - - -def parse_merged(path: Path): - headers = {} - totals = {} - elements = {} - - with path.open('r', encoding='utf-8', errors='replace') as fh: - for raw in fh: - cols = raw.rstrip('\n').split('\t') - if cols[0] == '#READINFO': - key = cols[1] - count = int(float(cols[2])) - frac = float(cols[3]) if len(cols) > 3 else None - headers[key] = (count, frac) - elif cols[0] == 'TOTAL': - totals[cols[1]] = int(float(cols[2])) - elif cols[0] == 'ELEMENT': - elements[cols[4]] = (cols[1], int(float(cols[2])), cols[5]) - return headers, totals, elements - - -py_out = Path(snakemake.input['py']) -in1 = Path(snakemake.input['in1']) -in2 = Path(snakemake.input['in2']) -out_ok = Path(snakemake.output[0]) - -perl_out = py_out.parent / 'merged.perl.parsed' -perl_script = Path(snakemake.params['perl_script']) -subprocess.run(['perl', str(perl_script), str(perl_out), str(in1), str(in2)], check=True) - -perl_h, perl_t, perl_e = parse_merged(perl_out) -py_h, py_t, py_e = parse_merged(py_out) - -assert perl_t == py_t -assert perl_e == py_e -assert perl_h.keys() == py_h.keys() -for key in perl_h: - p_count, p_frac = perl_h[key] - y_count, y_frac = py_h[key] - assert p_count == y_count - if p_frac is not None and y_frac is not None: - assert math.isclose(p_frac, y_frac, rel_tol=1e-12, abs_tol=1e-12) - -out_ok.parent.mkdir(parents=True, exist_ok=True) -out_ok.write_text('ok\n', encoding='utf-8') From b01721203512f9bbb292213b7b599e6c931064d0 Mon Sep 17 00:00:00 2001 From: Brian Yee Date: Thu, 19 Mar 2026 15:52:30 -0700 Subject: [PATCH 8/9] Implement native SE parser in Python and align config keys to CWL schema --- .gitignore | 1 + README.md | 9 + ...2_output_realtime_includemultifamily_SE.py | 308 ++++++++++++++++++ config/config.yaml | 46 ++- docs/config_mapping.md | 30 ++ tests/test_parse_se_python.py | 49 +++ workflow/rules/se_foundation.smk | 10 +- 7 files changed, 447 insertions(+), 6 deletions(-) create mode 100755 bin/python/parse_bowtie2_output_realtime_includemultifamily_SE.py create mode 100644 docs/config_mapping.md create mode 100644 tests/test_parse_se_python.py diff --git a/.gitignore b/.gitignore index de6956e..7dfdb35 100644 --- a/.gitignore +++ b/.gitignore @@ -112,6 +112,7 @@ tests/* !tests/fixtures/** !tests/test_mini_fixtures_manifest.py !tests/test_split_merge_python_expected.py +!tests/test_parse_se_python.py tests/__pycache__/ tests/*.pyc diff --git a/README.md b/README.md index fd1635c..8d1a984 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,15 @@ mamba activate ./.conda-env ``` ## Input specification + +## CWL Input Alignment +This branch uses CWL-compatible keys directly in `config/config.yaml` (top-level), including: +- `barcode1r1FastqGz`, `barcode1rmRepBam` +- `barcode1Inputr1FastqGz`, `barcode1InputrmRepBam` +- `bowtie2_db`, `bowtie2_prefix`, `fileListFile1`, `gencodeGTF`, `gencodeTableBrowser`, `repMaskBEDFile` + +The separate `mini_validation` block is only for deterministic fixture tests while conversion is in progress. +See `docs/config_mapping.md` for the one-to-one mapping details. The current implemented Snakemake stages use mini fixture inputs configured in `config/config.yaml`: - `mini.source_sam_gz`: compressed SAM-like file used for split stage. diff --git a/bin/python/parse_bowtie2_output_realtime_includemultifamily_SE.py b/bin/python/parse_bowtie2_output_realtime_includemultifamily_SE.py new file mode 100755 index 0000000..920fd09 --- /dev/null +++ b/bin/python/parse_bowtie2_output_realtime_includemultifamily_SE.py @@ -0,0 +1,308 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import argparse +import subprocess +import sys +from collections import defaultdict +from dataclasses import dataclass, field +from pathlib import Path +from typing import Dict, List + + +RRNA_EXTRA_HASH = { + 'RNA28S': 'RNA45S', + 'RNA18S': 'RNA45S', + 'RNA5-8S': 'RNA45S', + 'antisense_RNA28S': 'antisense_RNA45S', + 'antisense_RNA18S': 'antisense_RNA45S', + 'antisense_RNA5-8S': 'antisense_RNA45S', +} +RRNA_EXTRA_HASH_REV = { + 'RNA45S': {'RNA28S', 'RNA18S', 'RNA5-8S'}, + 'antisense_RNA45S': {'antisense_RNA28S', 'antisense_RNA18S', 'antisense_RNA5-8S'}, +} + + +@dataclass +class ReadRecord: + r1: Dict[str, str] = field(default_factory=dict) + flags: Dict[str, int] = field(default_factory=dict) + quality: int = 0 + mult_ensts: Dict[str, List[str]] = field(default_factory=lambda: defaultdict(list)) + enst: Dict[str, str] = field(default_factory=dict) + master_enst: Dict[str, str] = field(default_factory=dict) + + +def read_in_filelists(filelist_file: Path) -> tuple[dict[str, str], dict[str, str]]: + enst2gene: dict[str, str] = {} + convert_enst2type: dict[str, str] = {} + priority_n = 0 + with filelist_file.open('r', encoding='utf-8', errors='replace') as fh: + for raw in fh: + line = raw.rstrip('\n') + if not line: + continue + parts = line.split('\t') + if len(parts) < 4: + continue + allenst, _allensg, gid, type_label = parts[:4] + type_label = type_label.rstrip('_') + if not allenst: + print(f'error missing enst {line} {filelist_file}', file=sys.stderr) + continue + for enst in allenst.split('|'): + enst2gene[enst] = gid + convert_enst2type[enst] = f'{type_label}:{priority_n}' + priority_n += 1 + return enst2gene, convert_enst2type + + +def parse_as_score(tags: list[str]) -> int: + for tag in tags: + if tag.startswith('AS:i:'): + try: + return int(tag[5:]) + except ValueError: + pass + return -10**9 + + +def print_output(read_hash: dict[str, ReadRecord], samout, multimapping_hash: dict[str, int]) -> None: + for read_name, rec in read_hash.items(): + ensttype_array = sorted(rec.flags.keys()) + if not ensttype_array: + continue + ensttype = ensttype_array[0] + masterenst_array = [rec.master_enst[t] for t in ensttype_array if t in rec.master_enst] + ensttype_join = '|'.join(ensttype_array) + masterenst_join = '|'.join(masterenst_array) + + if len(rec.flags) == 1: + r1_cols = rec.r1[ensttype].split('\t') + r1_cols[2] = f'{ensttype_join}||{masterenst_join}' + r1_line = '\t'.join(r1_cols) + zz = '|'.join(rec.mult_ensts.get(ensttype, [])) + samout.write(f'{r1_line}\tZZ:Z:{zz}\n') + else: + all_mult_ensts: list[str] = [] + for key in ensttype_array: + all_mult_ensts.append('|'.join(rec.mult_ensts.get(key, []))) + final_mult_ensts = '|'.join(all_mult_ensts) + if ensttype not in rec.r1: + print(f"weird error - {read_name} {ensttype} readhash doesn't exist ? {rec.flags.get(ensttype)}", file=sys.stderr) + continue + r1_cols = rec.r1[ensttype].split('\t') + r1_cols[2] = f'{ensttype_join}||{masterenst_join}' + r1_line = '\t'.join(r1_cols) + samout.write(f'{r1_line}\tZZ:Z:{final_mult_ensts}\n') + multimapping_type = '|'.join(rec.flags.keys()) + multimapping_hash[multimapping_type] = multimapping_hash.get(multimapping_type, 0) + 1 + + +def stream_sam_lines(args: argparse.Namespace): + if args.sam_input: + with Path(args.sam_input).open('r', encoding='utf-8', errors='replace') as fh: + for line in fh: + yield line + return + + bowtie_out = f'{args.output}.bowtieout' + cmd = [ + 'bowtie2', + '-q', + '--sensitive', + '-a', + '-p', + str(args.threads), + '--no-mixed', + '--reorder', + '-x', + args.bowtie_db, + '-U', + args.fastq_file1, + ] + print('command ' + ' '.join(cmd) + f' 2> {bowtie_out}', file=sys.stderr) + with Path(bowtie_out).open('w', encoding='utf-8') as err: + proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=err, text=True) + assert proc.stdout is not None + for line in proc.stdout: + yield line + ret = proc.wait() + if ret != 0: + raise RuntimeError(f'bowtie2 failed with exit code {ret}') + + +def main() -> int: + ap = argparse.ArgumentParser(description='Python port of parse_bowtie2_output_realtime_includemultifamily_SE.pl') + ap.add_argument('fastq_file1') + ap.add_argument('bowtie_db') + ap.add_argument('output') + ap.add_argument('filelist_file') + ap.add_argument('--sam-input', default=None, help='Optional SAM input stream file for testing/debugging') + ap.add_argument('--threads', type=int, default=3) + args = ap.parse_args() + + _enst2gene, convert_enst2type = read_in_filelists(Path(args.filelist_file)) + + output_path = Path(args.output) + multimapping_out = Path(args.output + '.multimapping_deleted') + done_file = Path(args.output + '.done') + + read_hash: dict[str, ReadRecord] = {} + multimapping_hash: dict[str, int] = {} + print_batch = 10000 + read_counter = 0 + prev_r1name = '' + + with output_path.open('w', encoding='utf-8') as samout: + for raw in stream_sam_lines(args): + r1 = raw.rstrip('\n') + if r1.startswith('@'): + samout.write(r1 + '\n') + continue + + cols = r1.split('\t') + if len(cols) < 12: + continue + + read_name_parts = cols[0].split('_') + if len(read_name_parts) > 1: + r1name = '_'.join(read_name_parts[:-1]) + else: + r1name = cols[0] + + try: + r1sam_flag = int(cols[1]) + except ValueError: + continue + if r1sam_flag == 4: + continue + + if r1sam_flag in (16, 272): + frag_strand = '-' + elif r1sam_flag in (0, 256): + frag_strand = '+' + else: + continue + + paired_mismatch_score = parse_as_score(cols[11:]) + + mapped_enst = cols[2] + mapped_enst_full = cols[2] + if mapped_enst.endswith('_spliced'): + mapped_enst = mapped_enst[: -len('_spliced')] + if mapped_enst.endswith('_withgenomeflank'): + mapped_enst = mapped_enst[: -len('_withgenomeflank')] + + if mapped_enst not in convert_enst2type: + print(f'enst2type is missing for {mapped_enst} {r1}', file=sys.stderr) + continue + ensttype, enstpriority_s = convert_enst2type[mapped_enst].split(':', 1) + enstpriority = int(enstpriority_s) + + if frag_strand == '-': + ensttype = 'antisense_' + ensttype + mapped_enst_full = 'antisense_' + mapped_enst_full + + if r1name != prev_r1name: + read_counter += 1 + if read_counter > print_batch: + print_output(read_hash, samout, multimapping_hash) + read_hash = {} + read_counter = 0 + prev_r1name = r1name + + if r1name not in read_hash: + rec = ReadRecord() + rec.r1[ensttype] = r1 + rec.flags[ensttype] = enstpriority + rec.quality = paired_mismatch_score + rec.mult_ensts[ensttype].append(mapped_enst_full) + rec.enst[mapped_enst] = mapped_enst_full + rec.master_enst[ensttype] = mapped_enst_full + read_hash[r1name] = rec + continue + + rec = read_hash[r1name] + if paired_mismatch_score < rec.quality: + continue + if paired_mismatch_score > rec.quality: + newrec = ReadRecord() + newrec.r1[ensttype] = r1 + newrec.flags[ensttype] = enstpriority + newrec.quality = paired_mismatch_score + newrec.mult_ensts[ensttype].append(mapped_enst_full) + newrec.enst[mapped_enst] = mapped_enst_full + newrec.master_enst[ensttype] = mapped_enst_full + read_hash[r1name] = newrec + continue + + if ensttype in rec.flags: + if mapped_enst in rec.enst: + old_full = rec.enst[mapped_enst] + if old_full + '_withgenomeflank' == mapped_enst_full or old_full + '_spliced' == mapped_enst_full: + pass + elif old_full == mapped_enst_full + '_withgenomeflank' or old_full == mapped_enst_full + '_spliced': + rec.r1[ensttype] = r1 + rec.flags[ensttype] = enstpriority + for i, v in enumerate(rec.mult_ensts.get(ensttype, [])): + if v == old_full: + rec.mult_ensts[ensttype][i] = mapped_enst_full + rec.enst[mapped_enst] = mapped_enst_full + rec.master_enst[ensttype] = mapped_enst_full + else: + for i, v in enumerate(rec.mult_ensts.get(ensttype, [])): + if v == old_full: + rec.mult_ensts[ensttype][i] = mapped_enst_full + '_DOUBLEMAP' + rec.master_enst[ensttype] = mapped_enst_full + '_DOUBLEMAP' + elif enstpriority < rec.flags[ensttype]: + rec.r1[ensttype] = r1 + rec.flags[ensttype] = enstpriority + rec.mult_ensts[ensttype].insert(0, mapped_enst_full) + rec.enst[mapped_enst] = mapped_enst_full + rec.master_enst[ensttype] = mapped_enst_full + else: + rec.mult_ensts[ensttype].append(mapped_enst_full) + elif ensttype in RRNA_EXTRA_HASH and RRNA_EXTRA_HASH[ensttype] in rec.r1: + old_rrna = RRNA_EXTRA_HASH[ensttype] + rec.r1.pop(old_rrna, None) + rec.flags.pop(old_rrna, None) + rec.master_enst.pop(old_rrna, None) + rec.mult_ensts.pop(old_rrna, None) + rec.enst.pop('NR_046235.1', None) + rec.r1[ensttype] = r1 + rec.flags[ensttype] = enstpriority + rec.quality = paired_mismatch_score + rec.enst[mapped_enst] = mapped_enst_full + rec.master_enst[ensttype] = mapped_enst_full + rec.mult_ensts[ensttype].append(mapped_enst_full) + elif ensttype in RRNA_EXTRA_HASH_REV: + rna_flag = any(el in rec.r1 for el in RRNA_EXTRA_HASH_REV[ensttype]) + if not rna_flag: + rec.r1[ensttype] = r1 + rec.flags[ensttype] = enstpriority + rec.quality = paired_mismatch_score + rec.enst[mapped_enst] = mapped_enst_full + rec.mult_ensts[ensttype].append(mapped_enst_full) + rec.master_enst[ensttype] = mapped_enst_full + else: + rec.r1[ensttype] = r1 + rec.flags[ensttype] = enstpriority + rec.quality = paired_mismatch_score + rec.enst[mapped_enst] = mapped_enst_full + rec.mult_ensts[ensttype].append(mapped_enst_full) + rec.master_enst[ensttype] = mapped_enst_full + + print_output(read_hash, samout, multimapping_hash) + + with multimapping_out.open('w', encoding='utf-8') as mm: + for key, count in multimapping_hash.items(): + mm.write(f'{key}\t{count}\n') + + done_file.write_text('jobs done\n', encoding='utf-8') + return 0 + + +if __name__ == '__main__': + raise SystemExit(main()) diff --git a/config/config.yaml b/config/config.yaml index 111d5f1..004a4c0 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -1,4 +1,48 @@ -mini: +# CWL-compatible input names for SE pipeline wiring +# Fill these with real dataset paths for production runs. +dataset: seCLIP_example +barcode1r1FastqGz: "" +barcode1rmRepBam: "" +barcode1Inputr1FastqGz: "" +barcode1InputrmRepBam: "" + +bowtie2_db: "" +bowtie2_prefix: "" +fileListFile1: "" +gencodeGTF: "" +gencodeTableBrowser: "" +repMaskBEDFile: "" + +prefixes: + - AA + - AC + - AG + - AT + - AN + - CA + - CC + - CG + - CT + - CN + - GA + - GC + - GG + - GT + - GN + - TA + - TC + - TG + - TT + - TN + - NA + - NC + - NG + - NT + - NN +se_or_pe: SE + +# Mini validation fixture configuration (used by currently implemented rules) +mini_validation: source_sam_gz: tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz split_manifest: tests/fixtures/mini/expected/split.expected.manifest.tsv merge_input_1: tests/fixtures/mini/source/merge_input_1.parsed_v2.txt diff --git a/docs/config_mapping.md b/docs/config_mapping.md new file mode 100644 index 0000000..795783d --- /dev/null +++ b/docs/config_mapping.md @@ -0,0 +1,30 @@ +# Config Mapping: CWL YAML to Snakemake config.yaml + +## Why they looked different +The previous `config/config.yaml` only covered mini validation fixtures for staged conversion tests. +It did not yet expose the full CWL-style runtime inputs. + +## Current mapping approach +`config/config.yaml` now includes CWL-compatible key names at top level. + +CWL YAML key -> Snakemake key: +- `dataset` -> `dataset` +- `barcode1r1FastqGz` -> `barcode1r1FastqGz` +- `barcode1rmRepBam` -> `barcode1rmRepBam` +- `barcode1Inputr1FastqGz` -> `barcode1Inputr1FastqGz` +- `barcode1InputrmRepBam` -> `barcode1InputrmRepBam` +- `bowtie2_db` -> `bowtie2_db` +- `bowtie2_prefix` -> `bowtie2_prefix` +- `fileListFile1` -> `fileListFile1` +- `gencodeGTF` -> `gencodeGTF` +- `gencodeTableBrowser` -> `gencodeTableBrowser` +- `repMaskBEDFile` -> `repMaskBEDFile` +- `prefixes` -> `prefixes` +- `se_or_pe` -> `se_or_pe` + +## Validation-only section +The `mini_validation` subsection is separate and only used for deterministic fixture testing of currently implemented stages. + +## Practical note +For production runs, populate the top-level CWL-compatible keys with real file paths. +For conversion regression tests, keep using `mini_validation`. diff --git a/tests/test_parse_se_python.py b/tests/test_parse_se_python.py new file mode 100644 index 0000000..dcb60fb --- /dev/null +++ b/tests/test_parse_se_python.py @@ -0,0 +1,49 @@ +from __future__ import annotations + +import subprocess +from pathlib import Path + + +REPO = Path(__file__).resolve().parents[1] +PARSER = REPO / 'bin/python/parse_bowtie2_output_realtime_includemultifamily_SE.py' + + +def test_parse_se_runs_on_sam_input(tmp_path: Path) -> None: + filelist = tmp_path / 'filelist.tsv' + filelist.write_text( + 'ENST0001|ENST0002\tENSGX\tGENEX\tRNA28S\tx\n' + 'ENST0003\tENSGY\tGENEY\tRNA5S\tx\n', + encoding='utf-8', + ) + + sam = tmp_path / 'in.sam' + sam.write_text( + '@HD\tVN:1.0\n' + 'READ1_AA\t0\tENST0001\t1\t255\t10M\t*\t0\t0\tAAAAAAAAAA\tIIIIIIIIII\tAS:i:5\n' + 'READ1_AA\t0\tENST0002\t1\t255\t10M\t*\t0\t0\tAAAAAAAAAA\tIIIIIIIIII\tAS:i:5\n' + 'READ2_TT\t16\tENST0003\t1\t255\t10M\t*\t0\t0\tCCCCCCCCCC\tIIIIIIIIII\tAS:i:4\n', + encoding='utf-8', + ) + + out = tmp_path / 'out.sam' + subprocess.run( + [ + 'python3', + str(PARSER), + 'dummy.fastq.gz', + 'dummy_bowtie_idx', + str(out), + str(filelist), + '--sam-input', + str(sam), + ], + check=True, + ) + + assert out.exists() + assert (tmp_path / 'out.sam.done').exists() + assert (tmp_path / 'out.sam.multimapping_deleted').exists() + + body = [l for l in out.read_text(encoding='utf-8').splitlines() if not l.startswith('@')] + assert body, 'expected emitted mapped lines' + assert all('ZZ:Z:' in l for l in body) diff --git a/workflow/rules/se_foundation.smk b/workflow/rules/se_foundation.smk index 82f16cf..a0da631 100644 --- a/workflow/rules/se_foundation.smk +++ b/workflow/rules/se_foundation.smk @@ -6,7 +6,7 @@ rule all: rule unzip_mini_sam: input: - config['mini']['source_sam_gz'] + config['mini_validation']['source_sam_gz'] output: 'results/mini/split/ip.preRmDup.sam.mini.sam' shell: @@ -30,7 +30,7 @@ rule split_mini_sam_python: rule verify_split_against_manifest: input: split_dir='results/mini/split/python_tmp', - manifest=config['mini']['split_manifest'], + manifest=config['mini_validation']['split_manifest'], output: 'results/mini/split/verified.ok' script: @@ -39,8 +39,8 @@ rule verify_split_against_manifest: rule merge_parsed_python: input: - config['mini']['merge_input_1'], - config['mini']['merge_input_2'], + config['mini_validation']['merge_input_1'], + config['mini_validation']['merge_input_2'], output: 'results/mini/merge/merged.python.parsed' shell: @@ -50,7 +50,7 @@ rule merge_parsed_python: rule verify_merge_against_expected: input: produced='results/mini/merge/merged.python.parsed', - expected=config['mini']['merge_expected'], + expected=config['mini_validation']['merge_expected'], output: 'results/mini/merge/verified.ok' script: From 068f9bfba0d24a95f9a1bb1345cd874e4a3854c4 Mon Sep 17 00:00:00 2001 From: Brian Yee Date: Thu, 19 Mar 2026 16:01:55 -0700 Subject: [PATCH 9/9] Support CWL-style YAML job input in Snakemake config --- .gitignore | 1 + README.md | 28 ++++++++--- Snakefile | 6 +++ docs/config_mapping.md | 21 +++++++- tests/fixtures/mini/cwl_job_example.yaml | 38 ++++++++++++++ tests/test_cwl_yaml_adapter.py | 35 +++++++++++++ workflow/config_adapter.py | 64 ++++++++++++++++++++++++ 7 files changed, 184 insertions(+), 9 deletions(-) create mode 100644 tests/fixtures/mini/cwl_job_example.yaml create mode 100644 tests/test_cwl_yaml_adapter.py create mode 100644 workflow/config_adapter.py diff --git a/.gitignore b/.gitignore index 7dfdb35..cc724e8 100644 --- a/.gitignore +++ b/.gitignore @@ -113,6 +113,7 @@ tests/* !tests/test_mini_fixtures_manifest.py !tests/test_split_merge_python_expected.py !tests/test_parse_se_python.py +!tests/test_cwl_yaml_adapter.py tests/__pycache__/ tests/*.pyc diff --git a/README.md b/README.md index 8d1a984..bc38fa8 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ git checkout codex/python-conversion ### 2) Create environment ```bash mamba create -y -p ./.conda-env -c conda-forge -c bioconda \ - python=3.11 snakemake bowtie2 samtools pandas numpy pytest + python=3.11 snakemake bowtie2 samtools pandas numpy pyyaml pytest ``` ### 3) Activate @@ -47,21 +47,33 @@ mamba activate ./.conda-env ## Input specification -## CWL Input Alignment -This branch uses CWL-compatible keys directly in `config/config.yaml` (top-level), including: +## CWL-style YAML Input Alignment +This branch supports two equivalent ways to provide run configuration: + +1) Populate top-level keys in `config/config.yaml`. +2) Pass an existing CWL-style job YAML at runtime: +```bash +HOME=$(pwd) ./.conda-env/bin/snakemake -j1 -p all \ + --config cwl_input_yaml=/absolute/path/to/job.yaml +``` + +Supported CWL-compatible keys: - `barcode1r1FastqGz`, `barcode1rmRepBam` - `barcode1Inputr1FastqGz`, `barcode1InputrmRepBam` - `bowtie2_db`, `bowtie2_prefix`, `fileListFile1`, `gencodeGTF`, `gencodeTableBrowser`, `repMaskBEDFile` +- `dataset`, `prefixes`, `se_or_pe` + +For `class: File` / `class: Directory` objects, the `path` value is extracted. Relative `path` values are resolved relative to the YAML file location. The separate `mini_validation` block is only for deterministic fixture tests while conversion is in progress. See `docs/config_mapping.md` for the one-to-one mapping details. The current implemented Snakemake stages use mini fixture inputs configured in `config/config.yaml`: -- `mini.source_sam_gz`: compressed SAM-like file used for split stage. -- `mini.merge_input_1`: parsed stats input file #1 for merge stage. -- `mini.merge_input_2`: parsed stats input file #2 for merge stage. -- `mini.split_manifest`: expected checksums for 25 split output files. -- `mini.merge_expected`: expected merged parsed output. +- `mini_validation.source_sam_gz`: compressed SAM-like file used for split stage. +- `mini_validation.merge_input_1`: parsed stats input file #1 for merge stage. +- `mini_validation.merge_input_2`: parsed stats input file #2 for merge stage. +- `mini_validation.split_manifest`: expected checksums for 25 split output files. +- `mini_validation.merge_expected`: expected merged parsed output. You can update these paths to point to your own test data as long as formats match. diff --git a/Snakefile b/Snakefile index d6c3137..fc73a14 100644 --- a/Snakefile +++ b/Snakefile @@ -1,3 +1,9 @@ configfile: 'config/config.yaml' +from workflow.config_adapter import merge_cwl_job_yaml_into_config + + +if config.get('cwl_input_yaml'): + config = merge_cwl_job_yaml_into_config(config, config['cwl_input_yaml']) + include: 'workflow/rules/se_foundation.smk' diff --git a/docs/config_mapping.md b/docs/config_mapping.md index 795783d..09ec940 100644 --- a/docs/config_mapping.md +++ b/docs/config_mapping.md @@ -5,7 +5,14 @@ The previous `config/config.yaml` only covered mini validation fixtures for stag It did not yet expose the full CWL-style runtime inputs. ## Current mapping approach -`config/config.yaml` now includes CWL-compatible key names at top level. +`config/config.yaml` includes CWL-compatible key names at top level. +You can also pass an existing CWL-style job YAML via: + +```bash +snakemake --config cwl_input_yaml=/path/to/job.yaml ... +``` + +When `cwl_input_yaml` is provided, mapped keys from that file override defaults in `config/config.yaml`. CWL YAML key -> Snakemake key: - `dataset` -> `dataset` @@ -25,6 +32,18 @@ CWL YAML key -> Snakemake key: ## Validation-only section The `mini_validation` subsection is separate and only used for deterministic fixture testing of currently implemented stages. +## `class/path` object handling +For any supported key with a value like: + +```yaml +someKey: + class: File + path: relative/or/absolute/path +``` + +the adapter uses `path` as the runtime value. +Relative paths are resolved relative to the job YAML file directory. + ## Practical note For production runs, populate the top-level CWL-compatible keys with real file paths. For conversion regression tests, keep using `mini_validation`. diff --git a/tests/fixtures/mini/cwl_job_example.yaml b/tests/fixtures/mini/cwl_job_example.yaml new file mode 100644 index 0000000..abfb70b --- /dev/null +++ b/tests/fixtures/mini/cwl_job_example.yaml @@ -0,0 +1,38 @@ +dataset: fixture_dataset + +barcode1r1FastqGz: + class: File + path: source/ip.preRmDup.sam.mini.gz + +barcode1rmRepBam: + class: File + path: /abs/path/ip.bam + +barcode1Inputr1FastqGz: + class: File + path: source/input.preRmDup.sam.mini.gz + +barcode1InputrmRepBam: + class: File + path: /abs/path/input.bam + +bowtie2_db: + class: Directory + path: refs/bowtie2_index + +bowtie2_prefix: MASTER_FILELIST +fileListFile1: + class: File + path: refs/filelist.tsv +gencodeGTF: + class: File + path: refs/gencode.gtf +gencodeTableBrowser: + class: File + path: refs/gencode.table.tsv +repMaskBEDFile: + class: File + path: refs/repmask.bed + +prefixes: [AA, AC, TT] +se_or_pe: SE diff --git a/tests/test_cwl_yaml_adapter.py b/tests/test_cwl_yaml_adapter.py new file mode 100644 index 0000000..6d861a4 --- /dev/null +++ b/tests/test_cwl_yaml_adapter.py @@ -0,0 +1,35 @@ +from __future__ import annotations + +from pathlib import Path + +from workflow.config_adapter import map_cwl_job_to_config, merge_cwl_job_yaml_into_config + + +def test_map_cwl_job_to_config_normalizes_path_objects() -> None: + base = Path('tests/fixtures/mini') + mapped = map_cwl_job_to_config( + { + 'barcode1r1FastqGz': {'class': 'File', 'path': 'source/ip.preRmDup.sam.mini.gz'}, + 'bowtie2_db': {'class': 'Directory', 'path': 'refs/bowtie2_index'}, + 'se_or_pe': 'SE', + 'unrelated': 123, + }, + base_dir=base, + ) + + assert mapped['barcode1r1FastqGz'].endswith('tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz') + assert mapped['bowtie2_db'].endswith('tests/fixtures/mini/refs/bowtie2_index') + assert mapped['se_or_pe'] == 'SE' + assert 'unrelated' not in mapped + + +def test_merge_cwl_job_yaml_into_config_uses_fixture() -> None: + merged = merge_cwl_job_yaml_into_config( + {'dataset': 'base_dataset', 'mini_validation': {'source_sam_gz': 'x'}}, + Path('tests/fixtures/mini/cwl_job_example.yaml'), + ) + + assert merged['dataset'] == 'fixture_dataset' + assert merged['barcode1r1FastqGz'].endswith('tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz') + assert merged['barcode1rmRepBam'] == '/abs/path/ip.bam' + assert merged['mini_validation']['source_sam_gz'] == 'x' diff --git a/workflow/config_adapter.py b/workflow/config_adapter.py new file mode 100644 index 0000000..6f57986 --- /dev/null +++ b/workflow/config_adapter.py @@ -0,0 +1,64 @@ +from __future__ import annotations + +from pathlib import Path +from typing import Any + +import yaml + + +# Keys accepted from CWL-style job YAML and merged into Snakemake config. +CWL_COMPAT_KEYS = { + 'dataset', + 'barcode1r1FastqGz', + 'barcode1rmRepBam', + 'barcode1Inputr1FastqGz', + 'barcode1InputrmRepBam', + 'bowtie2_db', + 'bowtie2_prefix', + 'fileListFile1', + 'gencodeGTF', + 'gencodeTableBrowser', + 'repMaskBEDFile', + 'prefixes', + 'se_or_pe', +} + + +def _normalize_value(value: Any, *, base_dir: Path) -> Any: + if isinstance(value, dict): + if 'path' in value and isinstance(value['path'], str): + candidate = Path(value['path']) + if candidate.is_absolute(): + return str(candidate) + return str((base_dir / candidate).resolve()) + return {k: _normalize_value(v, base_dir=base_dir) for k, v in value.items()} + if isinstance(value, list): + return [_normalize_value(v, base_dir=base_dir) for v in value] + return value + + +def load_yaml(path: str | Path) -> dict[str, Any]: + yaml_path = Path(path) + with yaml_path.open('r', encoding='utf-8') as fh: + data = yaml.safe_load(fh) or {} + if not isinstance(data, dict): + raise ValueError(f'Expected mapping at YAML root: {yaml_path}') + return data + + +def map_cwl_job_to_config(job_data: dict[str, Any], *, base_dir: str | Path) -> dict[str, Any]: + based = Path(base_dir) + mapped: dict[str, Any] = {} + for key, value in job_data.items(): + if key in CWL_COMPAT_KEYS: + mapped[key] = _normalize_value(value, base_dir=based) + return mapped + + +def merge_cwl_job_yaml_into_config(config: dict[str, Any], cwl_job_yaml: str | Path) -> dict[str, Any]: + yaml_path = Path(cwl_job_yaml) + job_data = load_yaml(yaml_path) + mapped = map_cwl_job_to_config(job_data, base_dir=yaml_path.parent) + merged = dict(config) + merged.update(mapped) + return merged

%>ba33%`v6Zk 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 z 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%0Axh#|c79FrIYIX_7A~DJPf58=1E3`U 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 N0|2i%^HsXo5de-RQz!rc literal 0 HcmV?d00001 diff --git a/tests/fixtures/mini/manifest.tsv b/tests/fixtures/mini/manifest.tsv new file mode 100644 index 0000000..d424f47 --- /dev/null +++ b/tests/fixtures/mini/manifest.tsv @@ -0,0 +1,9 @@ +relative_path size_bytes sha256 +tests/fixtures/mini/expected/input.parsed.mini.gz 6492 63a47234eff4e54612065eb4386bb24c2a817165884c15b3aebb5245e199148d +tests/fixtures/mini/expected/input.rmDup.sam.mini.gz 174824 479a3774b8867e41292aff93a23c539cd220549522a2244a49e1b6d509f7f4a1 +tests/fixtures/mini/expected/ip.parsed.mini.gz 6292 fdc33e2b6f6a6b7df23f21c5bbffc87bfcd0e682d1309e541d703edf9e5c74dd +tests/fixtures/mini/expected/ip.reparsed.nopipes.mini.tsv.gz 7188 ab76d446267a23dad0f5d815ef0db2bc8d152155cbd7ac5d6ecf0be089ec5c72 +tests/fixtures/mini/expected/ip.reparsed.withpipes.mini.tsv.gz 12851 db976f71def48a10632aeaaa71226a6c19260c254da85c7f9e0afb0de3339255 +tests/fixtures/mini/expected/ip.rmDup.sam.mini.gz 185900 920ce5732417fcb46d9fbcf3c348e2dbf99f4d8fd74fe8c3248231f9855d77e8 +tests/fixtures/mini/source/input.preRmDup.sam.mini.gz 198136 24f3307ebfce353325bdea0813a54b2201ef83da12059af8aa3292a4fe705f2b +tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz 204694 f6749227444bc327255cd98fe7e54be5c7c19daaacc90dd15ec2fbb996f9f9e6 diff --git a/tests/fixtures/mini/source/input.preRmDup.sam.mini.gz b/tests/fixtures/mini/source/input.preRmDup.sam.mini.gz new file mode 100644 index 0000000000000000000000000000000000000000..eafe17ae8a88d145f10fc704ce9700b2eef452a5 GIT binary patch literal 198136 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz b/tests/fixtures/mini/source/ip.preRmDup.sam.mini.gz new file mode 100644 index 0000000000000000000000000000000000000000..f50c874f91a7a6e1d40baacb59554b8f5a656823 GIT binary patch literal 204694 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