Skip to content

Commit

Permalink
Merge pull request #67 from maxplanck-ie/fix_python3
Browse files Browse the repository at this point in the history
Fix python3 compatibillity of sample_qc_report_{SE,PE}.py
  • Loading branch information
dpryan79 authored Nov 14, 2017
2 parents b2f8e04 + f7b4d67 commit 1c65858
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 22 deletions.
4 changes: 2 additions & 2 deletions shared/common_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ def get_sample_names(infiles, ext, reads):
x = os.path.basename(x).replace(ext, "")
try:
x = x.replace(reads[0], "").replace(reads[1], "")
except:
except IndexError:
pass
s.append(x)
return sorted(list(set(s)))
Expand Down Expand Up @@ -145,7 +145,7 @@ def get_fragment_length(infile):
try:
median = next(f).split()[0]
return int(median)
except:
except TypeError:
print("ERROR: File", infile, "is NOT a proper Picard CollectInsertSizeMetrics metrics file.\n")
exit(1)
# no match in infile
Expand Down
4 changes: 2 additions & 2 deletions shared/rules/ChIP_qc_report.snakefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ if paired:
benchmark:
"QC_report/.benchmark/qc_report.{sample}.benchmark"
shell:
"python " + os.path.join(workflow_tools, "sample_qc_report_PE.py") + " "
os.path.join(workflow_tools, "sample_qc_report_PE.py") + " "
"{input.alignment_summary_metrics} {input.mark_duplicates_metrics} {input.insert_size_metrics} {input.macs2_xls} {input.macs2_qc_txt} "
">{output} 2>{log} "
else:
Expand All @@ -36,7 +36,7 @@ else:
benchmark:
"QC_report/.benchmark/qc_report.{sample}.benchmark"
shell:
"python " + os.path.join(workflow_tools, "sample_qc_report_SE.py") + " "
os.path.join(workflow_tools, "sample_qc_report_SE.py") + " "
"{input.alignment_summary_metrics} {input.mark_duplicates_metrics} {input.macs2_xls} {input.macs2_qc_txt} "
">{output} 2>{log} "

Expand Down
18 changes: 9 additions & 9 deletions shared/tools/sample_qc_report_PE.py
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python3


# paired-end ONLY!
Expand All @@ -19,7 +19,7 @@
try:
infile_MACS2_xls = sys.argv[4] # sample_name.filtered.BAM_peaks.xls (optional)
infile_MACS2_qc_txt = sys.argv[5] # ample_name.filtered.BAM_peaks.qc.txt (optional)
except:
except IndexError:
pass


Expand All @@ -28,7 +28,7 @@
with open(infile_AlignmentSummaryMetrics) as f:
lines = f.readlines()

columns = filter(lambda x: x.startswith("PAIR"), lines)[0].strip().split("\t")
columns = list(filter(lambda x: x.startswith("PAIR"), lines))[0].strip().split("\t")

# PF_READS: The number of PF reads where PF is defined as passing Illumina's filter.
total_reads = int(columns[2])
Expand All @@ -49,21 +49,21 @@
fmapped_pairs = 1.0 * mapped_pairs / read_pairs
fmapped_singletons = 1.0 * (mapped_reads - mapped_reads_in_pairs) / total_reads

except:
except OSError:
exit("ERROR! Unable to read: {}".format(infile_AlignmentSummaryMetrics))


# read Picard MarkDuplicates results #########################################
try:
with open(infile_MarkDuplicates) as f:
lines = f.readlines()
columns = filter(lambda x: x.startswith("Unknown Library"), lines)[0].strip().split("\t")
columns = list(filter(lambda x: x.startswith("Unknown Library"), lines))[0].strip().split("\t")

dup_mapped_pairs = int(columns[5])
fdup_mapped_pairs = 1.0 * dup_mapped_pairs / mapped_pairs
dupfree_mapped_pairs = mapped_pairs - dup_mapped_pairs
fdupfree_mapped_pairs = 1.0 * dupfree_mapped_pairs / read_pairs
except:
except OSError:
exit("ERROR! Unable to read: {}".format(infile_MarkDuplicates))


Expand All @@ -79,11 +79,11 @@
elif os.path.isfile(infile_MACS2_xls):
with open(infile_MACS2_xls) as f:
lines = f.readlines()
columns = filter(lambda x: x.startswith("# d"), lines)[0].strip()
columns = list(filter(lambda x: x.startswith("# d"), lines))[0].strip()
fragment_size = int(columns.split(" = ")[1])
else:
fragment_size = "NA"
except:
except OSError:
fragment_size = "NA"


Expand All @@ -94,7 +94,7 @@
peak_count = int(columns[0])
frip = round(float(columns[1]), 3)
peak_genome_coverage = round(columns[2], 3)
except:
except OSError:
peak_count = "NA"
frip = "NA"
peak_genome_coverage = "NA"
Expand Down
18 changes: 9 additions & 9 deletions shared/tools/sample_qc_report_SE.py
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python3


# single-end ONLY!
Expand All @@ -16,15 +16,15 @@
try:
infile_MACS2_xls = sys.argv[3] # sample_name.filtered.BAM_peaks.xls (optional)
infile_MACS2_qc_txt = sys.argv[4] # ample_name.filtered.BAM_peaks.qc.txt (optional)
except:
except IndexError:
pass


# read Picard AlignmentSummaryMetrics results ################################
try:
with open(infile_AlignmentSummaryMetrics) as f:
lines = f.readlines()
columns = filter(lambda x: x.startswith("UNPAIRED"), lines)[0].strip().split("\t")
columns = list(filter(lambda x: x.startswith("UNPAIRED"), lines))[0].strip().split("\t")

# PF_READS: The number of PF reads where PF is defined as passing Illumina's filter.
total_reads = int(columns[2])
Expand All @@ -37,15 +37,15 @@

# fraction of high-quality mapped reads (MAPQ >=20)
fhq_mapped_reads = 1.0 * int(columns[8]) / total_reads
except:
except OSError:
exit("ERROR! Unable to read: {}\n".format(infile_AlignmentSummaryMetrics))


# read Picard MarkDuplicates results #########################################
try:
with open(infile_MarkDuplicates) as f:
lines = f.readlines()
columns = filter(lambda x: x.startswith("Unknown Library"), lines)[0].strip().split("\t")
columns = list(filter(lambda x: x.startswith("Unknown Library"), lines))[0].strip().split("\t")

# UNPAIRED_READ_DUPLICATES: The number of fragments that were marked as duplicates.
dup_mapped_reads = int(columns[4])
Expand All @@ -58,17 +58,17 @@

# fraction of duplication free mapped reads
fdupfree_mapped_reads = 1.0 * dupfree_mapped_reads / total_reads
except:
except OSError:
exit("ERROR! Unable to read: {}".format(infile_MarkDuplicates))


# get fragment size from Picard CollectInsertSizeMetrics/MACS2 output ########
try:
with open(infile_MACS2_xls) as f:
lines = f.readlines()
columns = filter(lambda x: x.startswith("# d"), lines)[0].strip()
columns = list(filter(lambda x: x.startswith("# d"), lines))[0].strip()
fragment_size = int(columns.split(" = ")[1])
except:
except OSError:
fragment_size = "NA"


Expand All @@ -79,7 +79,7 @@
peak_count = int(columns[0])
frip = round(float(columns[1]), 3)
peak_genome_coverage = round(columns[2], 3)
except:
except OSError:
peak_count = "NA"
frip = "NA"
peak_genome_coverage = "NA"
Expand Down

0 comments on commit 1c65858

Please sign in to comment.