From 977a62ad911226f52230467f3ec743daa850c272 Mon Sep 17 00:00:00 2001 From: nservant <nservant@curie.fr> Date: Fri, 4 Oct 2019 13:13:41 +0200 Subject: [PATCH] Change output of mapped_3hic_fragments.py --- CHANGELOG.md | 3 +-- bin/mapped_2hic_fragments.py | 17 +++++++++++------ conf/hicpro.config | 1 + main.nf | 22 +++++++++++++++------- 4 files changed, 28 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 39ad52a..6c7922a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,9 @@ # nf-core/hic: Changelog - ## v1.1dev +* Add --saveInteractionBAM option * Fix bug for reads extension _1/_2 (#30) - * Update manual (#28) ## v1.0 - 2019-05-06 diff --git a/bin/mapped_2hic_fragments.py b/bin/mapped_2hic_fragments.py index efa32e6..d4790ee 100755 --- a/bin/mapped_2hic_fragments.py +++ b/bin/mapped_2hic_fragments.py @@ -53,7 +53,7 @@ def get_args(): "minInsertSize=", "maxInsertSize", "minFragSize", "maxFragSize", "minDist", - "gatg", "samOut", "verbose", "all", "help"]) + "gatg", "sam", "verbose", "all", "help"]) except getopt.GetoptError: usage() sys.exit(-1) @@ -442,7 +442,7 @@ def get_interaction_type(read1, read1_chrom, resfrag1, read2, # If returned InteractionType=None -> Same restriction fragment # and same strand = Dump interactionType = None - + if not read1.is_unmapped and not read2.is_unmapped and resfrag1 is not None and resfrag2 is not None: # same restriction fragment if resfrag1 == resfrag2: @@ -501,9 +501,9 @@ if __name__ == "__main__": minInsertSize = arg elif opt in ("-l", "--longestInsertSize"): maxInsertSize = arg - elif opt in ("-t", "--shortestFragmentSize"): + elif opt in ("-t", "--shortestFragmentLength"): minFragSize = arg - elif opt in ("-m", "--longestFragmentSize"): + elif opt in ("-m", "--longestFragmentLength"): maxFragSize = arg elif opt in ("-d", "--minCisDist"): minDist = arg @@ -613,6 +613,7 @@ if __name__ == "__main__": r2_chrom = None if r1_resfrag is not None or r2_resfrag is not None: + interactionType = get_interaction_type(r1, r1_chrom, r1_resfrag, r2, r2_chrom, r2_resfrag, verbose) dist = get_PE_fragment_size(r1, r2, r1_resfrag, r2_resfrag, interactionType) cdist = get_cis_dist(r1, r2) @@ -724,10 +725,14 @@ if __name__ == "__main__": if or1_resfrag is not None: or1_fragname = or1_resfrag.value['name'] - + else: + or1_fragname = 'None' + if or2_resfrag is not None: or2_fragname = or2_resfrag.value['name'] - + else: + or2_fragname = 'None' + cur_handler.write( or1.qname + "\t" + or1_chrom + "\t" + diff --git a/conf/hicpro.config b/conf/hicpro.config index 0a2c9b9..01b755a 100644 --- a/conf/hicpro.config +++ b/conf/hicpro.config @@ -38,5 +38,6 @@ params { saveReference = false saveAlignedIntermediates = false + saveInteractionBAM = false } diff --git a/main.nf b/main.nf index 1bd5a3a..31f73a8 100644 --- a/main.nf +++ b/main.nf @@ -32,6 +32,8 @@ def helpMessage() { --fasta Path to Fasta reference --chromosome_size Path to chromosome size file --restriction_fragments Path to restriction fragment file (bed) + --saveReference Save reference genome to output folder. Default: False + --saveAlignedIntermediates Save intermediates alignment files. Default: False Options: --bwt2_opts_end2end Options for bowtie2 end-to-end mappinf (first mapping step). See hic.config for default. @@ -43,8 +45,9 @@ def helpMessage() { --max_restriction_framgnet_size Maximum size of restriction fragmants to consider. Default: None --min_insert_size Minimum insert size of mapped reads to consider. Default: None --max_insert_size Maximum insert size of mapped reads to consider. Default: None + --saveInteractionBAM Save BAM file with interaction tags (dangling-end, self-circle, etc.). Default: False - --dnase Run DNase Hi-C mode. All options related to restriction fragments are not considered. Default: false + --dnase Run DNase Hi-C mode. All options related to restriction fragments are not considered. Default: False --min_cis_dist Minimum intra-chromosomal distance to consider. Default: None --rm_singleton Remove singleton reads. Default: true @@ -65,10 +68,10 @@ def helpMessage() { Step options: - --skip_maps Skip generation of contact maps. Useful for capture-C. Default: false - --skip_ice Skip ICE normalization. Default: false - --skip_cool Skip generation of cool files. Default: false - --skip_multiQC Skip MultiQC. Default: false + --skip_maps Skip generation of contact maps. Useful for capture-C. Default: False + --skip_ice Skip ICE normalization. Default: False + --skip_cool Skip generation of cool files. Default: False + --skip_multiQC Skip MultiQC. Default: False AWSBatch options: --awsqueue The AWSBatch JobQueue that needs to be set when running on AWSBatch @@ -154,7 +157,7 @@ if ( params.splitFastq ){ raw_reads_full = raw_reads.concat( raw_reads_2 ) raw_reads = raw_reads_full.splitFastq( by: params.splitFastq , file: true) }else{ - raw_reads = raw_reads.concat( raw_reads_2 ) + raw_reads = raw_reads.concat( raw_reads_2 ).dump(tag: "data") } @@ -599,6 +602,10 @@ if (!params.dnase){ output: set val(sample), file("*.validPairs") into valid_pairs set val(sample), file("*.validPairs") into valid_pairs_4cool + set val(sample), file("*.DEPairs") into de_pairs + set val(sample), file("*.SCPairs") into sc_pairs + set val(sample), file("*.REPairs") into re_pairs + set val(sample), file("*.FiltPairs") into filt_pairs set val(sample), file("*RSstat") into all_rsstat script: @@ -612,9 +619,10 @@ if (!params.dnase){ if ("$params.max_insert_size".isInteger()) opts="${opts} -l ${params.max_insert_size}" if ("$params.min_restriction_fragment_size".isInteger()) opts="${opts} -t ${params.min_restriction_fragment_size}" if ("$params.max_restriction_fragment_size".isInteger()) opts="${opts} -m ${params.max_restriction_fragment_size}" + if (params.saveInteractionBAM) opts="${opts} --sam" """ - mapped_2hic_fragments.py -f ${frag_file} -r ${pe_bam} ${opts} + mapped_2hic_fragments.py -f ${frag_file} -r ${pe_bam} --all ${opts} """ } } -- GitLab