You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- _align() referenced an undefined in the single-end + bwa branch
paired chain (minus filter_pair) for both --keep and no-keep paths:
pm.run([cmd1, cmd2, cmd3, cmd4], <target>). (#299)
- Fix missing pm.fail_pipeline in the unmap_fq1 branch of the
filter_paired_fq.pl handle check; previously a stuck filter on R1
set an error string that was never raised. Reworked the error
message into a shared template that points at the underlying psutil
introspection issue and recommends both --keep and --noFIFO as
workarounds. (#234)
- Add --skip-dedup flag for protocols where duplicates are
biologically meaningful (CUT&Tag, CUT&RUN). When set: copy
mapping_genome_bam to _sort_dedup.bam so downstream peak calling
finds the expected path; report Duplicate_reads=0 and pass through
Dedup_aligned_reads/Dedup_alignment_rate/Dedup_total_efficiency
from the pre-dedup metrics. Plumbed through
sample_pipeline_interface.yaml so it can be set per-sample. (#249)
- Drop redundant Time/Success keys from pepatac_output_schema.yaml
(both samples: and project: blocks). These are pipestat's auto-
tracked status fields and the duplicate declaration triggered
"SchemaError: Overlap between project- and sample-level keys" on
newer pipestat. (#322, #305)
- Fix _LOGGER NameError in tools/bamQC.py and bamSitesToWig.py: the
variable was only defined inside , so
pararead workers re-importing the module under multiprocessing
'spawn' (macOS default) hit NameError when class methods logged.
Added a module-level fallback logger above each class definition.
(#266)
- Fix peakCounts() ref-peaks ignored when *_peaks_coverage.bed.gz
coexists with *_ref_peaks_coverage.bed: the shared variable
preferred .bed.gz from the regular peaks file and then looked for
a non-existent _ref_peaks_coverage.bed.gz, falling through to the
"not derived from a singular reference peak set" warning. Detect
ref vs regular extensions independently. (#218, #219)
- Guard refgenie[sample.genome] lookups in
sample_pipeline_interface.yaml with ,
so projects with non-refgenie genomes (e.g. galGal6, bosTau9) no
longer crash the Jinja template with an attmap AttributeError;
instead they fall through to the per-sample paths or error
cleanly from pepatac.py. (#231)
- Fix plotAnno() empty-input fallback path bug: was constructing
file.path(<output_file>, "<sample>_partition_dist.pdf") (treating
the output pdf as a directory) and quit()ing the R session.
Replaced with return(ggplot()), matching the function's other
empty-data branches; the caller writes a clean blank placeholder
at the expected target. (#232)
Closes#299, #234, #249, #322, #305, #266, #218, #219, #231, #232.
Copy file name to clipboardExpand all lines: sample_pipeline_interface.yaml
+10-9Lines changed: 10 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -12,15 +12,15 @@ sample_interface:
12
12
{% if sample.read2 is defined %} --input2 { sample.read2 } {% endif %}
13
13
--single-or-paired { sample.read_type }
14
14
--genome { sample.genome }
15
-
{% if sample.chrom_sizes is defined %} --chrom-sizes { sample.chrom_sizes } {% elif refgenie[sample.genome].fasta is defined %} --chrom-sizes { refgenie[sample.genome].fasta.chrom_sizes } {% endif %}
16
-
{% if sample.TSS_name is defined %} --TSS-name { sample.TSS_name } {% elif refgenie[sample.genome].refgene_anno is defined %} --TSS-name { refgenie[sample.genome].refgene_anno.refgene_tss } {% endif %}
17
-
{% if sample.blacklist is defined %} --blacklist { sample.blacklist } {% elif refgenie[sample.genome].blacklist is defined %} --blacklist { refgenie[sample.genome].blacklist.blacklist } {% endif %}
18
-
{% if sample.anno_name is defined %} --anno-name { sample.anno_name } {% elif refgenie[sample.genome].feat_annotation is defined %} --anno-name { refgenie[sample.genome].feat_annotation.feat_annotation } {% endif %}
15
+
{% if sample.chrom_sizes is defined %} --chrom-sizes { sample.chrom_sizes } {% elif sample.genome in refgenie and refgenie[sample.genome].fasta is defined %} --chrom-sizes { refgenie[sample.genome].fasta.chrom_sizes } {% endif %}
16
+
{% if sample.TSS_name is defined %} --TSS-name { sample.TSS_name } {% elif sample.genome in refgenie and refgenie[sample.genome].refgene_anno is defined %} --TSS-name { refgenie[sample.genome].refgene_anno.refgene_tss } {% endif %}
17
+
{% if sample.blacklist is defined %} --blacklist { sample.blacklist } {% elif sample.genome in refgenie and refgenie[sample.genome].blacklist is defined %} --blacklist { refgenie[sample.genome].blacklist.blacklist } {% endif %}
18
+
{% if sample.anno_name is defined %} --anno-name { sample.anno_name } {% elif sample.genome in refgenie and refgenie[sample.genome].feat_annotation is defined %} --anno-name { refgenie[sample.genome].feat_annotation.feat_annotation } {% endif %}
19
19
{% if sample.trimmer is defined %} --trimmer { sample.trimmer } {% else %} --trimmer "skewer" {% endif %}
20
20
{% if sample.aligner is defined %} --aligner { sample.aligner } {% set aligner = sample.aligner %} {% else %} --aligner "bowtie2" {% set aligner = "bowtie2" %} {% endif %}
21
-
{% if aligner == "bowtie2" or sample.aligner == "bowtie2" %} {% if sample.genome_index is defined %} --genome-index { sample.genome_index } {% elif refgenie[sample.genome].bowtie2_index is defined %} --genome-index { refgenie[sample.genome].bowtie2_index.dir } {% endif %} {% else %} {% if sample.genome_index is defined %} --genome-index { sample.genome_index } {% elif refgenie[sample.genome].bwa_index is defined %} --genome-index { refgenie[sample.genome].bwa_index.dir } {% endif %} {% endif %}
21
+
{% if aligner == "bowtie2" or sample.aligner == "bowtie2" %} {% if sample.genome_index is defined %} --genome-index { sample.genome_index } {% elif sample.genome in refgenie and refgenie[sample.genome].bowtie2_index is defined %} --genome-index { refgenie[sample.genome].bowtie2_index.dir } {% endif %} {% else %} {% if sample.genome_index is defined %} --genome-index { sample.genome_index } {% elif sample.genome in refgenie and refgenie[sample.genome].bwa_index is defined %} --genome-index { refgenie[sample.genome].bwa_index.dir } {% endif %} {% endif %}
22
22
{% if sample.prealignment_index is defined %} --prealignment-index { sample.prealignment_index } {% endif %}
23
-
{% if sample.prealignment_names is defined %} {% if aligner == "bowtie2" or sample.aligner == "bowtie2" %} --prealignment-index {% for p in sample.prealignment_names %} { p ~ '=' ~ refgenie[p].bowtie2_index.dir } {% endfor %} {% else %} --prealignment-index {% for p in sample.prealignment_names %} { p ~ '=' ~ refgenie[p].bwa_index.dir } {% endfor %} {% endif %} {% endif %}
23
+
{% if sample.prealignment_names is defined %} {% if aligner == "bowtie2" or sample.aligner == "bowtie2" %} --prealignment-index {% for p in sample.prealignment_names %} {% if p in refgenie %} { p ~ '=' ~ refgenie[p].bowtie2_index.dir } {% endif %} {% endfor %} {% else %} --prealignment-index {% for p in sample.prealignment_names %} {% if p in refgenie %} { p ~ '=' ~ refgenie[p].bwa_index.dir } {% endif %} {% endfor %} {% endif %} {% endif %}
24
24
{% if sample.deduplicator is defined %} --deduplicator { sample.deduplicator } {% endif %}
25
25
{% if sample.peak_caller is defined %} --peak-caller { sample.peak_caller } {% else %} --peak-caller "macs3" {% endif %}
26
26
{% if sample.peak_type is defined %} --peak-type { sample.peak_type } {% else %} --peak-type "fixed" {% endif %}
@@ -29,15 +29,16 @@ sample_interface:
29
29
{% if sample.frip_ref_peaks is defined %} --frip-ref-peaks { sample.frip_ref_peaks } {% endif %}
30
30
{% if sample.motif is defined %} --motif {% endif %}
31
31
{% if sample.sob is defined %} --sob {% endif %}
32
-
{% if sample.sob is defined %} {% if refgenie[sample.genome].tallymer_index is defined %} --search-file { refgenie[sample.genome].tallymer_index.search_file } {% endif %} {% endif %}
33
-
{% if sample.sob is defined %} {% if refgenie[sample.genome].fasta is defined %} --fasta { refgenie[sample.genome].fasta.fasta } {% endif %} {% endif %}
34
-
{% if sample.fasta is defined %} --fasta { sample.fasta } {% elif refgenie[sample.genome].fasta is defined %} --fasta { refgenie[sample.genome].fasta.fasta } {% endif %}
32
+
{% if sample.sob is defined %} {% if sample.genome in refgenie and refgenie[sample.genome].tallymer_index is defined %} --search-file { refgenie[sample.genome].tallymer_index.search_file } {% endif %} {% endif %}
33
+
{% if sample.sob is defined %} {% if sample.genome in refgenie and refgenie[sample.genome].fasta is defined %} --fasta { refgenie[sample.genome].fasta.fasta } {% endif %} {% endif %}
34
+
{% if sample.fasta is defined %} --fasta { sample.fasta } {% elif sample.genome in refgenie and refgenie[sample.genome].fasta is defined %} --fasta { refgenie[sample.genome].fasta.fasta } {% endif %}
35
35
{% if sample.no_scale is defined %} --no-scale {% endif %}
36
36
{% if sample.prioritize is defined %} --prioritize {% endif %}
37
37
{% if sample.keep is defined %} --keep {% endif %}
38
38
{% if sample.no_fifo is defined %} --noFIFO {% endif %}
39
39
{% if sample.lite is defined %} --lite {% endif %}
40
40
{% if sample.skipqc is defined %} --skipqc {% endif %}
41
+
{% if sample.skip_dedup is defined %} --skip-dedup {% endif %}
0 commit comments