From b9652ca7e9429e303c501ea9994ede077b9b964d Mon Sep 17 00:00:00 2001 From: Bryce Turner <40504111+bryce-turner@users.noreply.github.com> Date: Thu, 19 Aug 2021 13:10:48 -0700 Subject: [PATCH 01/10] Adding option to produce only the mutational matrix --- required_scripts/sigprofiler.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/required_scripts/sigprofiler.py b/required_scripts/sigprofiler.py index dc23bbb..7f56a89 100644 --- a/required_scripts/sigprofiler.py +++ b/required_scripts/sigprofiler.py @@ -34,6 +34,9 @@ def parse_arguments(): parser.add_argument('-t', '--threads', default=-1, type=int, help='Set number of threads, default will use all threads') + parser.add_argument('-m', '--matrix_only', default=False, action="store_true", + help='Stop after mutational matrix generation') + # prints help message when 0 arguments are entered if len(sys.argv) == 1: parser.print_help(sys.stderr) @@ -76,6 +79,10 @@ def main(): matrices = matGen.SigProfilerMatrixGeneratorFunc(args.project, args.genome, args.vcfpath, plot=True, exome=args.exome, bed_file=None, chrom_based=False, tsb_stat=False, seqInfo=False, cushion=100) + if args.matrix_only: + print("User requested matrix generation only, exiting before submitting to SigProfilerExtractor...\n") + sys.exit(0) + num_tasks = 0 sig_list = [] From d78cc9e243e2fbfe4e7adae91f1ce70015e38131 Mon Sep 17 00:00:00 2001 From: bryce-turner Date: Thu, 26 Aug 2021 09:46:13 -0700 Subject: [PATCH 02/10] Adding arguments to stop the process early, e.g. do not run decompose if we do not want it --- required_scripts/sigprofiler.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/required_scripts/sigprofiler.py b/required_scripts/sigprofiler.py index 7f56a89..9a2f9ca 100644 --- a/required_scripts/sigprofiler.py +++ b/required_scripts/sigprofiler.py @@ -34,8 +34,11 @@ def parse_arguments(): parser.add_argument('-t', '--threads', default=-1, type=int, help='Set number of threads, default will use all threads') - parser.add_argument('-m', '--matrix_only', default=False, action="store_true", - help='Stop after mutational matrix generation') + parser.add_argument('--matrix_only', default=False, action="store_true", + help='Stop after mutational matrix generation') + + parser.add_argument('--extract_only', default=False, action="store_true", + help='Stop after SigProfilerExtractor') # prints help message when 0 arguments are entered if len(sys.argv) == 1: @@ -53,7 +56,8 @@ def extractSignatures(output, sigClass='SBS', sigContext='96', exome=False, - threads=-1): + threads=-1, + extract_only=False): """Extracts signatures from a matrix generated by SigProfilerMatrixGenerator""" sigType = sigClass + sigContext @@ -65,13 +69,14 @@ def extractSignatures(output, sig.sigProfilerExtractor("matrix", output, input_data, reference_genome=genome, opportunity_genome = genome, context_type=sigType ,minimum_signatures=1, maximum_signatures=10, cpu=threads) - from SigProfilerExtractor import decomposition as decomp - signatures = output+"/"+sigType+"/Suggested_Solution/"+sigType+"_De-Novo_Solution/Signatures/"+sigType+"_De-Novo_Signatures.txt" - activities = output+"/"+sigType+"/Suggested_Solution/"+sigType+"_De-Novo_Solution/Activities/"+sigType+"_De-Novo_Activities_refit.txt" - samples = output+"/"+sigType+"/Samples.txt" + if not extract_only: + from SigProfilerExtractor import decomposition as decomp + signatures = output+"/"+sigType+"/Suggested_Solution/"+sigType+"_De-Novo_Solution/Signatures/"+sigType+"_De-Novo_Signatures.txt" + activities = output+"/"+sigType+"/Suggested_Solution/"+sigType+"_De-Novo_Solution/Activities/"+sigType+"_De-Novo_Activities_refit.txt" + samples = output+"/"+sigType+"/Samples.txt" - #to get all cosmic signatures without filtering - decomp.decompose(signatures, activities, samples, output, genome_build=genome, verbose=False, nnls_add_penalty=0.0, nnls_remove_penalty=0.0, initial_remove_penalty=0.0, de_novo_fit_penalty=0.02) + #to get all cosmic signatures without filtering + decomp.decompose(signatures, activities, samples, output, genome_build=genome, verbose=False, nnls_add_penalty=0.0, nnls_remove_penalty=0.0, initial_remove_penalty=0.0, de_novo_fit_penalty=0.02) def main(): # Parse and validate arguments @@ -135,7 +140,7 @@ def main(): cpus_per_task = max(int(args.threads/num_tasks),1) with ThreadPoolExecutor(max_workers=3) as e: for sigClass, sigContext in sig_list: - e.submit(extractSignatures, args.output, args.vcfpath, args.genome, args.project, sigClass, sigContext, args.exome, cpus_per_task) + e.submit(extractSignatures, args.output, args.vcfpath, args.genome, args.project, sigClass, sigContext, args.exome, cpus_per_task, args.extract_only) if __name__ == '__main__': main() From 0941843cd275cdb63f6beae65f23f8e271ee7b4a Mon Sep 17 00:00:00 2001 From: TGenJetstream Date: Thu, 13 Oct 2022 11:13:37 -0700 Subject: [PATCH 03/10] Updated capture kits for phoenix and tempe --- phoenix/capture_kits.csv | 4 +++- tempe/capture_kits.csv | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/phoenix/capture_kits.csv b/phoenix/capture_kits.csv index c5efc64..9326b36 100644 --- a/phoenix/capture_kits.csv +++ b/phoenix/capture_kits.csv @@ -4,6 +4,7 @@ CR2,Agilent_SureSelect_CREv2,Agilent_SureSelect_CREv2_cliRes_hs37d5_all_hg38.bed E61,E61_TruSeqExome_aka_NexteraExpandedExome,nexterarapidcapture_expandedexome_targetedregions_b38.bed,nexterarapidcapture_expandedexome_targetedregions_b38.bed IE2,IDT_xGen_Exome_Research_Panel_v2,xgen-exome-research-panel-v2-targets-hg38.bed,xgen-exome-research-panel-v2-probes-hg38.bed KHE,KAPA_HyperExome,KAPA_HyperExome_hg38_capture_targets.bed,KAPA_HyperExome_hg38_capture_targets.bed +NE3,SeqCap_EZ_Exome_v3_hg38_primary_targets.bed,SeqCap_EZ_Exome_v3_hg38_primary_targets.bed S4U,Agilent_SureSelect_DNA_SureSelectXT_Human_All_Exon_V4_UTR,S03723424_S4U_hg19_to_hg38_liftover_results.bed,S03723424_S4U_hg19_to_hg38_liftover_results.bed S5U,Agilent_SureSelect_DNA_SureSelectXT_Human_All_Exon_V5_UTRs,S04380219_Regions.bed,S04380219_Regions.bed S5X,Agilent_SureSelect_DNA_SureSelectXT_Human_All_Exon_V5,S04380110_Regions.bed,S04380110_Regions.bed @@ -19,9 +20,10 @@ STX,Agilent_SureSelect_DNA_SureSelect_V5_Strexome,STX_Agilent_SureSelect_DNA_Sur TB1,Twist_Custom_Barthel_1,clean_targets.bed,clean_targets.bed TC1,Twist_Custom_CHIP_Panel1,TC1_TE-99640003_merged_targets.bed,TC1_TE-99640003_merged_probes.bed TCE,Twist_Comprehensive_Exome,Twist_ComprehensiveExome_targets_hg38.bed,Twist_ComprehensiveExome_targets_hg38.bed -TOE,Twist_Core_Exome,Twist_Core_Exome_targets_hg38.bed,Twist_Core_Exome_targets_hg38.bed +TE2,hg38_Twist_exome_2_1_annotated_targets.bed,hg38_Twist_exome_2_1_annotated_targets.bed TK1,Twist_Custom_Keats_1_MM_R_ISS,concat_1X_4X_hg38_revised_cleaned_merged_d120_padded60bp.bed,concat_1X_4X_hg38_revised_cleaned_merged_d120_padded60bp.bed TK2,Twist_Custom_Keats_2_MM_R_ISS_v2,TK2_TE-92573302_merged_targets.bed,TK2_TE-92573302_merged_probes.bed +TOE,Twist_Core_Exome,Twist_Core_Exome_targets_hg38.bed,Twist_Core_Exome_targets_hg38.bed TS1,TS1_Illumina_TruSeqDNA_Exome_v1.2,truseq-dna-exome-target-regions-hg19-liftover2-hg38.bed,Exome-Probes-Manifest-v1-2_hg19-liftover2-hg38.bed TSC,Agilent_Custom_SureSelect_DNA_SureSelect_Human_All_Exon_V6,agilent_custom_sureselect_all_exon_v6_tsc_grch38.bed,agilent_custom_sureselect_all_exon_v6_tsc_grch38.bed UTJ,TCE_CustomCaptureTwist_UTJMM,TCE_CCT_UTJMM_SMM_validation_v1.bed,TCE_CCT_UTJMM_SMM_validation_v1.bed diff --git a/tempe/capture_kits.csv b/tempe/capture_kits.csv index 9d9e8df..9326b36 100644 --- a/tempe/capture_kits.csv +++ b/tempe/capture_kits.csv @@ -4,6 +4,7 @@ CR2,Agilent_SureSelect_CREv2,Agilent_SureSelect_CREv2_cliRes_hs37d5_all_hg38.bed E61,E61_TruSeqExome_aka_NexteraExpandedExome,nexterarapidcapture_expandedexome_targetedregions_b38.bed,nexterarapidcapture_expandedexome_targetedregions_b38.bed IE2,IDT_xGen_Exome_Research_Panel_v2,xgen-exome-research-panel-v2-targets-hg38.bed,xgen-exome-research-panel-v2-probes-hg38.bed KHE,KAPA_HyperExome,KAPA_HyperExome_hg38_capture_targets.bed,KAPA_HyperExome_hg38_capture_targets.bed +NE3,SeqCap_EZ_Exome_v3_hg38_primary_targets.bed,SeqCap_EZ_Exome_v3_hg38_primary_targets.bed S4U,Agilent_SureSelect_DNA_SureSelectXT_Human_All_Exon_V4_UTR,S03723424_S4U_hg19_to_hg38_liftover_results.bed,S03723424_S4U_hg19_to_hg38_liftover_results.bed S5U,Agilent_SureSelect_DNA_SureSelectXT_Human_All_Exon_V5_UTRs,S04380219_Regions.bed,S04380219_Regions.bed S5X,Agilent_SureSelect_DNA_SureSelectXT_Human_All_Exon_V5,S04380110_Regions.bed,S04380110_Regions.bed @@ -16,10 +17,14 @@ ST2,Agilent_SureSelect_DNA_SureSelect_V6_Strexome,ST2_Agilent_SureSelect_DNA_Sur STA,STA_MM_CustomCaptureBriskin_STAMINA,STA_MM_CustomCaptureBriskin_STAMINA.targets.bed,STA_MM_CustomCaptureBriskin_STAMINA.targets.bed STL,Agilent_SureSelect_DNA_SureSelect_V5_StrexomeLite,S0653324_Covered_GRCh38.bed,S0653324_Covered_GRCh38.bed STX,Agilent_SureSelect_DNA_SureSelect_V5_Strexome,STX_Agilent_SureSelect_DNA_SureSelect_V5_Strexome_Covered.GRCh38.bed,STX_Agilent_SureSelect_DNA_SureSelect_V5_Strexome_Covered.GRCh38.bed +TB1,Twist_Custom_Barthel_1,clean_targets.bed,clean_targets.bed TC1,Twist_Custom_CHIP_Panel1,TC1_TE-99640003_merged_targets.bed,TC1_TE-99640003_merged_probes.bed TCE,Twist_Comprehensive_Exome,Twist_ComprehensiveExome_targets_hg38.bed,Twist_ComprehensiveExome_targets_hg38.bed -TOE,Twist_Core_Exome,Twist_Core_Exome_targets_hg38.bed,Twist_Core_Exome_targets_hg38.bed +TE2,hg38_Twist_exome_2_1_annotated_targets.bed,hg38_Twist_exome_2_1_annotated_targets.bed TK1,Twist_Custom_Keats_1_MM_R_ISS,concat_1X_4X_hg38_revised_cleaned_merged_d120_padded60bp.bed,concat_1X_4X_hg38_revised_cleaned_merged_d120_padded60bp.bed +TK2,Twist_Custom_Keats_2_MM_R_ISS_v2,TK2_TE-92573302_merged_targets.bed,TK2_TE-92573302_merged_probes.bed +TOE,Twist_Core_Exome,Twist_Core_Exome_targets_hg38.bed,Twist_Core_Exome_targets_hg38.bed TS1,TS1_Illumina_TruSeqDNA_Exome_v1.2,truseq-dna-exome-target-regions-hg19-liftover2-hg38.bed,Exome-Probes-Manifest-v1-2_hg19-liftover2-hg38.bed +TSC,Agilent_Custom_SureSelect_DNA_SureSelect_Human_All_Exon_V6,agilent_custom_sureselect_all_exon_v6_tsc_grch38.bed,agilent_custom_sureselect_all_exon_v6_tsc_grch38.bed UTJ,TCE_CustomCaptureTwist_UTJMM,TCE_CCT_UTJMM_SMM_validation_v1.bed,TCE_CCT_UTJMM_SMM_validation_v1.bed V6C,Agilent_SureSelect_DNA_SureSelect_Human_All_Exon_V6_COSMIC,S07604715_Regions.bed,S07604715_Regions.bed From f1d103c696c1767ae110a1bc055a10b374abbb64 Mon Sep 17 00:00:00 2001 From: TGenJetstream Date: Thu, 13 Oct 2022 11:43:37 -0700 Subject: [PATCH 04/10] Fixing recent definitions to have capture title --- phoenix/capture_kits.csv | 4 ++-- tempe/capture_kits.csv | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/phoenix/capture_kits.csv b/phoenix/capture_kits.csv index 9326b36..8102c55 100644 --- a/phoenix/capture_kits.csv +++ b/phoenix/capture_kits.csv @@ -4,7 +4,7 @@ CR2,Agilent_SureSelect_CREv2,Agilent_SureSelect_CREv2_cliRes_hs37d5_all_hg38.bed E61,E61_TruSeqExome_aka_NexteraExpandedExome,nexterarapidcapture_expandedexome_targetedregions_b38.bed,nexterarapidcapture_expandedexome_targetedregions_b38.bed IE2,IDT_xGen_Exome_Research_Panel_v2,xgen-exome-research-panel-v2-targets-hg38.bed,xgen-exome-research-panel-v2-probes-hg38.bed KHE,KAPA_HyperExome,KAPA_HyperExome_hg38_capture_targets.bed,KAPA_HyperExome_hg38_capture_targets.bed -NE3,SeqCap_EZ_Exome_v3_hg38_primary_targets.bed,SeqCap_EZ_Exome_v3_hg38_primary_targets.bed +NE3,SeqCap_EZ_Exome_v3,SeqCap_EZ_Exome_v3_hg38_primary_targets.bed,SeqCap_EZ_Exome_v3_hg38_primary_targets.bed S4U,Agilent_SureSelect_DNA_SureSelectXT_Human_All_Exon_V4_UTR,S03723424_S4U_hg19_to_hg38_liftover_results.bed,S03723424_S4U_hg19_to_hg38_liftover_results.bed S5U,Agilent_SureSelect_DNA_SureSelectXT_Human_All_Exon_V5_UTRs,S04380219_Regions.bed,S04380219_Regions.bed S5X,Agilent_SureSelect_DNA_SureSelectXT_Human_All_Exon_V5,S04380110_Regions.bed,S04380110_Regions.bed @@ -20,7 +20,7 @@ STX,Agilent_SureSelect_DNA_SureSelect_V5_Strexome,STX_Agilent_SureSelect_DNA_Sur TB1,Twist_Custom_Barthel_1,clean_targets.bed,clean_targets.bed TC1,Twist_Custom_CHIP_Panel1,TC1_TE-99640003_merged_targets.bed,TC1_TE-99640003_merged_probes.bed TCE,Twist_Comprehensive_Exome,Twist_ComprehensiveExome_targets_hg38.bed,Twist_ComprehensiveExome_targets_hg38.bed -TE2,hg38_Twist_exome_2_1_annotated_targets.bed,hg38_Twist_exome_2_1_annotated_targets.bed +TE2,Twist_Exome2.0,hg38_Twist_exome_2_1_annotated_targets.bed,hg38_Twist_exome_2_1_annotated_targets.bed TK1,Twist_Custom_Keats_1_MM_R_ISS,concat_1X_4X_hg38_revised_cleaned_merged_d120_padded60bp.bed,concat_1X_4X_hg38_revised_cleaned_merged_d120_padded60bp.bed TK2,Twist_Custom_Keats_2_MM_R_ISS_v2,TK2_TE-92573302_merged_targets.bed,TK2_TE-92573302_merged_probes.bed TOE,Twist_Core_Exome,Twist_Core_Exome_targets_hg38.bed,Twist_Core_Exome_targets_hg38.bed diff --git a/tempe/capture_kits.csv b/tempe/capture_kits.csv index 9326b36..8102c55 100644 --- a/tempe/capture_kits.csv +++ b/tempe/capture_kits.csv @@ -4,7 +4,7 @@ CR2,Agilent_SureSelect_CREv2,Agilent_SureSelect_CREv2_cliRes_hs37d5_all_hg38.bed E61,E61_TruSeqExome_aka_NexteraExpandedExome,nexterarapidcapture_expandedexome_targetedregions_b38.bed,nexterarapidcapture_expandedexome_targetedregions_b38.bed IE2,IDT_xGen_Exome_Research_Panel_v2,xgen-exome-research-panel-v2-targets-hg38.bed,xgen-exome-research-panel-v2-probes-hg38.bed KHE,KAPA_HyperExome,KAPA_HyperExome_hg38_capture_targets.bed,KAPA_HyperExome_hg38_capture_targets.bed -NE3,SeqCap_EZ_Exome_v3_hg38_primary_targets.bed,SeqCap_EZ_Exome_v3_hg38_primary_targets.bed +NE3,SeqCap_EZ_Exome_v3,SeqCap_EZ_Exome_v3_hg38_primary_targets.bed,SeqCap_EZ_Exome_v3_hg38_primary_targets.bed S4U,Agilent_SureSelect_DNA_SureSelectXT_Human_All_Exon_V4_UTR,S03723424_S4U_hg19_to_hg38_liftover_results.bed,S03723424_S4U_hg19_to_hg38_liftover_results.bed S5U,Agilent_SureSelect_DNA_SureSelectXT_Human_All_Exon_V5_UTRs,S04380219_Regions.bed,S04380219_Regions.bed S5X,Agilent_SureSelect_DNA_SureSelectXT_Human_All_Exon_V5,S04380110_Regions.bed,S04380110_Regions.bed @@ -20,7 +20,7 @@ STX,Agilent_SureSelect_DNA_SureSelect_V5_Strexome,STX_Agilent_SureSelect_DNA_Sur TB1,Twist_Custom_Barthel_1,clean_targets.bed,clean_targets.bed TC1,Twist_Custom_CHIP_Panel1,TC1_TE-99640003_merged_targets.bed,TC1_TE-99640003_merged_probes.bed TCE,Twist_Comprehensive_Exome,Twist_ComprehensiveExome_targets_hg38.bed,Twist_ComprehensiveExome_targets_hg38.bed -TE2,hg38_Twist_exome_2_1_annotated_targets.bed,hg38_Twist_exome_2_1_annotated_targets.bed +TE2,Twist_Exome2.0,hg38_Twist_exome_2_1_annotated_targets.bed,hg38_Twist_exome_2_1_annotated_targets.bed TK1,Twist_Custom_Keats_1_MM_R_ISS,concat_1X_4X_hg38_revised_cleaned_merged_d120_padded60bp.bed,concat_1X_4X_hg38_revised_cleaned_merged_d120_padded60bp.bed TK2,Twist_Custom_Keats_2_MM_R_ISS_v2,TK2_TE-92573302_merged_targets.bed,TK2_TE-92573302_merged_probes.bed TOE,Twist_Core_Exome,Twist_Core_Exome_targets_hg38.bed,Twist_Core_Exome_targets_hg38.bed From 09c9aa8bc410e26b46c3dc81328ffdacbefed212 Mon Sep 17 00:00:00 2001 From: Bryce Turner Date: Mon, 24 Oct 2022 12:45:08 -0700 Subject: [PATCH 05/10] Adding some more dynamism to the reporting tools. Also reduced the point size. --- reporting_tools/collect_study_timing.sh | 30 +++++-- reporting_tools/report_cpu_usage.py | 39 ++++++--- reporting_tools/study_summary_Graphs.R | 16 ++-- reporting_tools/summarize_project_runtime.R | 95 ++------------------- 4 files changed, 65 insertions(+), 115 deletions(-) diff --git a/reporting_tools/collect_study_timing.sh b/reporting_tools/collect_study_timing.sh index 1d0abfc..7ce0b6d 100755 --- a/reporting_tools/collect_study_timing.sh +++ b/reporting_tools/collect_study_timing.sh @@ -2,18 +2,28 @@ # usage: collect_study_timing.sh -# Requires: jetstream in the user path? +# Requires: jetstream installed to whichever version of python is used +# Potential enhancements: +# - singularity would benefit from dynamic arguments, especially for binding + +set -e + +trap "echo jetstream not found" ERR + +jetstreams_python=$(head -n1 $(which jetstream) | grep -o "/.*") + +# Unsetting the trap since it is no longer valid +trap - ERR # Load needed modules -#module load R/3.4.4 (using native R on merck as there is an X11/ciaro error with this version), and merckx doesn't see the phoenix version with fix -module load python/3.6.0 +module load singularity/3.7.1-phoenix # make folder for summary mkdir -p timing_summary # enter summary folder and create initial study template files cd timing_summary -echo -e Project"\t"Group"\t"Tasks"\t"Total_CPU_Hours"\t"Max_Task_CPU_Hours"\t"Total_Elapsed_Hours"\t"Max_Task_Elapsed_Hours"\t"PCT_CPU_Hours"\t"PCT_Elapsed_Hours > study_task_summary.txt +echo -e Project"\t"Tags"\t"Tasks"\t"Total_CPU_Hours"\t"Max_Task_CPU_Hours"\t"Total_Elapsed_Hours"\t"Max_Task_Elapsed_Hours"\t"PCT_CPU_Hours"\t"PCT_Elapsed_Hours > study_task_summary.txt echo -e Project"\t"Tasks"\t"Total_CPU_Hours"\t"Total_Elapsed_Hours > study_project_summary.txt echo @@ -28,11 +38,14 @@ do cd ../${project} # Generate timing result - python3 /home/tgenjetstream/git_repositories/jetstream_resources/reporting_tools/report_cpu_usage.py > ../timing_summary/${project}_timing.txt + $jetstreams_python /home/tgenjetstream/git_repositories/jetstream_resources/reporting_tools/report_cpu_usage.py > ../timing_summary/${project}_timing.txt # return to project summary to run R scripts cd ../timing_summary - Rscript --vanilla \ + # Singularity command needs to be more dynamic + # Example for gemini PMED - singularity exec -e -B /coh_labs/PMED docker://ghcr.io/tgen/jetstream_containers/r-with_modules:3.6.1 Rscript --vanilla + # This does ping ghcr.io, so a local image might be preferred. + singularity exec /home/tgenref/containers/r-with_modules_3.6.1.sif Rscript --vanilla \ /home/tgenjetstream/git_repositories/jetstream_resources/reporting_tools/summarize_project_runtime.R \ --project ${project} \ --time_summary ${project}_timing.txt \ @@ -46,9 +59,10 @@ echo # Summarize the overall study results echo "##################################################" -echo "Summarizing overal study timing results" +echo "Summarizing overall study timing results" -Rscript --vanilla \ +# See comment above for singularity usage caveat +singularity exec /home/tgenref/containers/r-with_modules_3.6.1.sif Rscript --vanilla \ /home/tgenjetstream/git_repositories/jetstream_resources/reporting_tools/study_summary_Graphs.R \ --study_name $2 diff --git a/reporting_tools/report_cpu_usage.py b/reporting_tools/report_cpu_usage.py index 96a991f..fd85f20 100644 --- a/reporting_tools/report_cpu_usage.py +++ b/reporting_tools/report_cpu_usage.py @@ -1,13 +1,12 @@ #!/usr/bin/env python3 -### -# Copied from Ryan Richholt Toolkit -### - -# Usage: report_cpu_usage.py +# Usage: report_cpu_usage.py --project --ignore_tags +# Arguments are optional # Generates a report of CPU Usage from a Jetstream project -# Future improvements : leverage tags for subsummary by subtype, RG_SM, Individual Tools + +# Author: Ryan Richolt +# Updated by: Bryce Turner - bturner@tgen.org import argparse import logging @@ -23,7 +22,8 @@ def arg_parser(): parser = argparse.ArgumentParser(description='Report CPU hours for a project') - parser.add_argument('project', nargs='*') + parser.add_argument('--project', nargs='*') + parser.add_argument('--ignore_tags', nargs='+') return parser @@ -40,30 +40,43 @@ def summarize_task_cpuhs(t): return cpus, fElapsed, cpuh -def report(project): +def report(project, ignore_tags): total_cpu_hours = 0 - print('CPUs\tElapsed\tHours\tCumulative\tTask') + print('CPUs\tElapsed\tHours\tCumulative\tTask\tTags') workflow = project.load_workflow() log.critical(f'Reporting on: {workflow}') - for name, t in project.load_workflow().tasks.items(): + for name, t in workflow.tasks.items(): cpus, task_elapsed, task_cpu_hours = summarize_task_cpuhs(t) total_cpu_hours += task_cpu_hours - print(f'{cpus}\t{task_elapsed}\t{round(task_cpu_hours, 2)}\t{round(total_cpu_hours, 2)}\t{t}') + tags = t.directives.get('tags', ['Untagged']) + ignore_tags_re_string = '|'.join(f'({tag})' for tag in ignore_tags).replace("-", "_") + cleanre = re.compile(ignore_tags_re_string) + # We perform a regex search because we expect the ignore tags to be partial + # for example may want to ignore 'stats' tags, 'stats' may not be an actual tag + # but it could be part of a tag, e.g. stats2json or stats2lims + clean_tags = [tag for tag in tags if not re.search(cleanre, tag.replace("-", "_")) ] + tags_string = '_'.join(clean_tags).replace(" ", "_") + print(f'{cpus}\t{task_elapsed}\t{round(task_cpu_hours, 2)}\t{round(total_cpu_hours, 2)}\t{name}\t{tags_string}') def main(): parser = arg_parser() args = parser.parse_args() + if args.ignore_tags: + ignore_tags = args.ignore_tags + else: + ignore_tags = [] + if args.project: for p in args.project: try: - report(jetstream.Project(path=p)) + report(jetstream.Project(path=p), ignore_tags) except Exception as e: log.exception(f'Failed to generate report for "{p}"') else: - report(jetstream.Project()) + report(jetstream.Project(), ignore_tags) if __name__ == '__main__': diff --git a/reporting_tools/study_summary_Graphs.R b/reporting_tools/study_summary_Graphs.R index 813c8fe..bb50a3c 100644 --- a/reporting_tools/study_summary_Graphs.R +++ b/reporting_tools/study_summary_Graphs.R @@ -26,23 +26,23 @@ if (is.null(opt$study_name)){ tasks <- read_tsv("study_task_summary.txt") projects <- read_tsv("study_project_summary.txt") -ggplot(tasks, aes(x=Group, y=Total_CPU_Hours)) + - geom_jitter() + +ggplot(tasks, aes(x=Tags, y=Total_CPU_Hours)) + + geom_jitter(size=0.5) + coord_flip() ggsave(file=paste(opt$study_name, "_TotalCPUhours_by_Group_per_Project.png", sep=""), dpi=150) -ggplot(tasks, aes(x=Group, y=Total_Elapsed_Hours)) + - geom_jitter() + +ggplot(tasks, aes(x=Tags, y=Total_Elapsed_Hours)) + + geom_jitter(size=0.5) + coord_flip() ggsave(file=paste(opt$study_name, "_TotalElapsedHours_by_Group_per_Project.png", sep=""), dpi=150) -ggplot(tasks, aes(x=Group, y=Max_Task_Elapsed_Hours)) + - geom_jitter() + +ggplot(tasks, aes(x=Tags, y=Max_Task_Elapsed_Hours)) + + geom_jitter(size=0.5) + coord_flip() ggsave(file=paste(opt$study_name, "_MaxTaskElapsedHours_by_Group_per_Project.png", sep=""), dpi=150) -ggplot(tasks, aes(x=Group, y=Max_Task_CPU_Hours)) + - geom_jitter() + +ggplot(tasks, aes(x=Tags, y=Max_Task_CPU_Hours)) + + geom_jitter(size=0.5) + coord_flip() ggsave(file=paste(opt$study_name, "_MaxTaskCPUhours_by_Group_per_Project.png", sep=""), dpi=150) diff --git a/reporting_tools/summarize_project_runtime.R b/reporting_tools/summarize_project_runtime.R index 0449c66..8dec338 100644 --- a/reporting_tools/summarize_project_runtime.R +++ b/reporting_tools/summarize_project_runtime.R @@ -63,103 +63,26 @@ project_name <- opt$project ## Update the tibble table -# Remove "" from the TASK column -data <- data %>% mutate_if(is.character, str_replace_all, pattern = '<', replacement = "") -data <- data %>% mutate_if(is.character, str_replace_all, pattern = "[(]", replacement = "") -data <- data %>% mutate_if(is.character, str_replace_all, pattern = '[)]', replacement = "") -data <- data %>% mutate_if(is.character, str_replace_all, pattern = 'Taskcomplete: ', replacement = "") -data <- data %>% mutate_if(is.character, str_replace_all, pattern = '[>]', replacement = "") - # Parse the Elapsed time into hours, minutes, seconds data <- data %>% separate(Elapsed, into = c("hours", "minutes", "seconds"), sep = ":", convert = TRUE, remove = FALSE) -# Add Summary Columns -data <- data %>% mutate(Group = case_when(str_detect(Task, "^copy_fastqs") ~ "Copy_Fastq", - str_detect(Task, "^split_fastq") ~ "Split_Fastq", - str_detect(Task, "^chunked_bwa_mem_samtools_fixmate") ~ "BWA_Align", - str_detect(Task, "^chunked_bwa_mem2_samtools_fixmate") ~ "BWA2_Align", - str_detect(Task, "^chunked_samtools_merge_rg_bams") ~ "Samtools_Merge", - str_detect(Task, "^samtools_markdup") ~ "Samtools_MarkDup", - str_detect(Task, "^bam_to_cram") ~ "Samtools_BamCram", - str_detect(Task, "^gatk_collectwgsmetrics") ~ "Picard_Metric", - str_detect(Task, "^gatk_collectwgsmetricswithnonzerocoverage") ~ "Picard_Metric", - str_detect(Task, "^gatk_collectrawwgsmetrics") ~ "Picard_Metric", - str_detect(Task, "^gatk_collectmultiplemetrics") ~ "Picard_Metric", - str_detect(Task, "^gatk_convertsequencingarrtifacttooxog") ~ "Picard_Metric", - str_detect(Task, "^gatk_collecthsmetrics") ~ "Picard_Metric", - str_detect(Task, "^gatk_collectrnaseqmetrics") ~ "Picard_Metric", - str_detect(Task, "^samtools_stats") ~ "Samtools_Metric", - str_detect(Task, "^samtools_flagstat") ~ "Samtools_Metric", - str_detect(Task, "^samtools_idxstats") ~ "Samtools_Metric", - str_detect(Task, "^verifybamid2") ~ "Random_Stat", - str_detect(Task, "^freebayes_sex_check") ~ "Random_Stat", - str_detect(Task, "^snpsniffer_geno") ~ "Random_Stat", - str_detect(Task, "^hmmcopy_make_wig_bwa") ~ "iChor_CNA", - str_detect(Task, "^ichor_cna_bwa") ~ "iChor_CNA", - str_detect(Task, "^haplotypecaller_gvcf") ~ "HaplotypeCaller", - str_detect(Task, "^haplotypecaller_gvcf_merge") ~ "HaplotypeCaller", - str_detect(Task, "^manta") ~ "Manta_Strelka", - str_detect(Task, "^strelka2_filter_variants") ~ "Variant_Filter", - str_detect(Task, "^strelka2") ~ "Manta_Strelka", - str_detect(Task, "^deepvariant_make_examples") ~ "Deepvariant", - str_detect(Task, "^deepvariant_call_variants") ~ "Deepvariant", - str_detect(Task, "^deepvariant_postprocess_variants") ~ "Deepvariant", - str_detect(Task, "^deepvariant_filter_variants") ~ "Deepvariant", - str_detect(Task, "^lancet_merge_chunks") ~ "Variant_Merge", - str_detect(Task, "^lancet_filter_variants") ~ "Variant_Filter", - str_detect(Task, "^lancet") ~ "Lancet", - str_detect(Task, "^octopus_merge_chunks") ~ "Variant_Merge", - str_detect(Task, "^octopus_filter_variants") ~ "Variant_Filter", - str_detect(Task, "^octopus") ~ "Octopus", - str_detect(Task, "^vardict_merge_chunks") ~ "Variant_Merge", - str_detect(Task, "^vardict_filter_variants") ~ "Variant_Filter", - str_detect(Task, "^vardict") ~ "VarDictJava", - str_detect(Task, "^mutect2_merge_chunks") ~ "Variant_Merge", - str_detect(Task, "^mutect2_filter_variants") ~ "Variant_Filter", - str_detect(Task, "^mutect2_filter_calls") ~ "Mutect", - str_detect(Task, "^mutect2_calculate_contamination") ~ "Mutect", - str_detect(Task, "^mutect2_merge_pileup_summaries") ~ "Mutect", - str_detect(Task, "^mutect2_learn_readorientationmodel") ~ "Mutect", - str_detect(Task, "^mutect2_merge_stats") ~ "Mutect", - str_detect(Task, "^mutect2_merge_pileup_summaries") ~ "Mutect", - str_detect(Task, "^mutect2_GetPileupSummaries") ~ "Mutect", - str_detect(Task, "^mutect2") ~ "Mutect", - str_detect(Task, "^vcfmerger2") ~ "VCFmerger", - str_detect(Task, "^bcftools_annotate") ~ "Annotation", - str_detect(Task, "^snpeff") ~ "Annotation", - str_detect(Task, "^vep") ~ "Annotation", - str_detect(Task, "^bcftools_annotate") ~ "Annotation", - str_detect(Task, "^bcftools_annotate") ~ "Annotation", - str_detect(Task, "^delly") ~ "Delly", - str_detect(Task, "^gatk_call_cnv") ~ "GATK_CNV", - str_detect(Task, "^add_matched_rna") ~ "RNA_Steps", - str_detect(Task, "^add_rna_header_to_vcf") ~ "RNA_Steps", - str_detect(Task, "^salmon_quant_cdna") ~ "RNA_Steps", - str_detect(Task, "^star_quant") ~ "RNA_Steps", - str_detect(Task, "^star_fusion") ~ "RNA_Steps", - str_detect(Task, "^fixmate_sort_star") ~ "RNA_Steps", - str_detect(Task, "^markduplicates_star_gatk") ~ "RNA_Steps", - str_detect(Task, "^rna_getBTcellLociCounts") ~ "RNA_Steps", - TRUE ~ "Misc" - ) - ) - +data <- data %>% select("Tags", everything()) # Plot -ggplot(data, aes(x=Group, y=Elapsed, color=as.factor(CPUs))) + - geom_jitter() + +ggplot(data, aes(x=Tags, y=Elapsed, color=as.factor(CPUs))) + + geom_jitter(size=0.5) + scale_color_discrete() + coord_flip() ggsave(file=paste(project_name, "_ElapsedTime_by_Task_per_Group.png", sep=""), dpi=150) -ggplot(data, aes(x=Group, y=Hours)) + - geom_jitter() + +ggplot(data, aes(x=Tags, y=Hours)) + + geom_jitter(size=0.5) + coord_flip() ggsave(file=paste(project_name, "_CPUhours_by_Task_per_Group.png", sep=""), dpi=150) # Group and summarize to get realtime and CPU hours by task Group task_summary <- data %>% - group_by(Group) %>% + group_by(Tags) %>% summarise(Tasks = n(), Total_CPU_Hours = sum(Hours), Max_Task_CPU_Hours = max(Hours), @@ -171,15 +94,15 @@ task_summary <- data %>% # Add column with project task_summary <- task_summary %>% - add_column(Project = project_name, .before = "Group") + add_column(Project = project_name, .before = "Tags") # Plot Summary Data -ggplot(task_summary, aes(x=Group, y=Total_Elapsed_Hours)) + +ggplot(task_summary, aes(x=Tags, y=Total_Elapsed_Hours)) + geom_bar(stat="identity") + coord_flip() ggsave(file=paste(project_name, "_ElapsedHours_by_TaskGroup.png", sep=""), dpi=150) -ggplot(task_summary, aes(x=Group, y=Total_CPU_Hours)) + +ggplot(task_summary, aes(x=Tags, y=Total_CPU_Hours)) + geom_bar(stat="identity") + coord_flip() ggsave(file=paste(project_name, "_CPUhours_by_TaskGroup.png", sep=""), dpi=150) From 18a2646d71df8d4c744e3f6e659e626eb8c9f0e2 Mon Sep 17 00:00:00 2001 From: Bryce Turner Date: Wed, 22 Mar 2023 16:20:52 -0700 Subject: [PATCH 06/10] Updated scripts for generating bwa indexes (bwa and bwa-mem2) to fix our handling of the alt file --- .../create_bwa_genome_index.sh | 1 + tempe/create_bwa_genome_index.sh | 14 +- tempe/create_bwa_mem2_genome_index.sh | 125 ++++++++++++++++++ 3 files changed, 133 insertions(+), 7 deletions(-) create mode 100644 tempe/create_bwa_mem2_genome_index.sh diff --git a/shared_resource_creation_scripts/create_bwa_genome_index.sh b/shared_resource_creation_scripts/create_bwa_genome_index.sh index 660c33d..737984a 100755 --- a/shared_resource_creation_scripts/create_bwa_genome_index.sh +++ b/shared_resource_creation_scripts/create_bwa_genome_index.sh @@ -54,6 +54,7 @@ else cd tool_resources fi +# Create directory for BWA version if [ -e "bwa_${BWA_VERSION}" ] then echo "The BWA directory exists, exiting to prevent overwriting existing index" diff --git a/tempe/create_bwa_genome_index.sh b/tempe/create_bwa_genome_index.sh index e23bef0..f434e08 100755 --- a/tempe/create_bwa_genome_index.sh +++ b/tempe/create_bwa_genome_index.sh @@ -80,18 +80,18 @@ echo >> README echo "BWA Index creation details:" >> README echo >> README +# Determine the expected FASTA sequence filename based on the download link +FASTA=$REFERENCE_DNA_GENOME_NAME + +# Create a symbolic link to the reference genome +ln -s ../../genome_reference/${FASTA} ${FASTA} + # Copy in the .alt file from bwa.kit echo "Copy in the .alt file from bwa.kit" >> README -cp ../../genome_reference/downloads/bwa.kit/resource-GRCh38/hs38DH.fa.alt GRCh38tgen_decoy_alts_hla.fa.alt +cp ../../genome_reference/downloads/bwa.kit/resource-GRCh38/hs38DH.fa.alt ${FASTA}.alt fc -ln -1 >> README echo >> README -# Create a symbolic link to the reference genome -ln -s ../../genome_reference/GRCh38tgen_decoy_alts_hla.fa GRCh38tgen_decoy_alts_hla.fa - -# Set variable for genome fasta -FASTA=GRCh38tgen_decoy_alts_hla.fa - # Create bwa index files # shellcheck disable=SC1020 if [ ${ENVIRONMENT} == "TGen" ] diff --git a/tempe/create_bwa_mem2_genome_index.sh b/tempe/create_bwa_mem2_genome_index.sh new file mode 100644 index 0000000..13fb523 --- /dev/null +++ b/tempe/create_bwa_mem2_genome_index.sh @@ -0,0 +1,125 @@ +#!/usr/bin/env bash + +# Usage: create_bwa_genome_index.sh + +### Setting as an interactive BASH session and forcing history to capture commands to a log/README file +HISTFILE=~/.bash_history +set -o history +set -ue + +# Check resources.ini was provided on the command line +if [ -n "$1" ] +then + echo "Required ini file detected" +else + echo "Input INI file not provided, exiting due to missing requirement" + exit 1 +fi + +# Read required variables from configuration file +. ${1} + +#################################### +## Navigate Directory Structure +################################### + +# Check top level directory if not available +if [ -e ${TOPLEVEL_DIR} ] +then + echo "Top level directory: ${TOPLEVEL_DIR} exists, moving into it" + cd ${TOPLEVEL_DIR} +else + echo "Top level directory NOT found, IT IS REQUIRED, EXITING" + exit 1 +fi + +# Check that the reference genome was created successfully +if [ -e GENOME_FASTA_GENERATION_COMPLETE ] +then + echo "Genome fasta exists, moving forward" +else + echo "Genome fasta generation complete flag NOT found" + echo "Try again later as this is required" + exit 2 +fi + +# Create directory for tool resources +if [ -e tool_resources ] +then + echo "tool_resources directory exists, moving into it" + cd tool_resources +else + echo "tool_resources directory NOT found, creating and moving into it now" + mkdir tool_resources + cd tool_resources +fi + +# Create directory for BWA version +if [ -e "bwa_${BWA_MEM2_VERSION}" ] +then + echo "The BWA directory exists, exiting to prevent overwriting existing index" + exit 2 +else + echo "The BWA directory was NOT found, creating and moving into it now" + mkdir bwa_${BWA_MEM2_VERSION} + cd bwa_${BWA_MEM2_VERSION} +fi + +#################################### +## Generate BWA index +#################################### + +# Initialize a bwa index README +touch README +echo >> README +echo "For details on file creation see the associated github repository:" >> README +echo "https://github.com/tgen/jetstream_resources/${WORKFLOW_NAME}" >> README +echo "Created and downloaded by ${CREATOR}" >> README +date >> README +echo >> README +echo "BWA Index creation details:" >> README +echo >> README + +# Determine the expected FASTA sequence filename based on the download link +FASTA=$REFERENCE_DNA_GENOME_NAME + +# Create a symbolic link to the reference genome +ln -s ../../genome_reference/${FASTA} ${FASTA} +ln -s ../../genome_reference/${FASTA}.fai ${FASTA}.fai + +# Copy in the .alt file from bwa.kit +echo "Copy in the .alt file from bwa.kit" >> README +cp ../../genome_reference/downloads/bwa.kit/resource-GRCh38/hs38DH.fa.alt ${FASTA}.alt +fc -ln -1 >> README +echo >> README + +# Create bwa index files +# shellcheck disable=SC1020 +if [ ${ENVIRONMENT} == "TGen" ] +then + # Submit index generation job to the slurm scheduler + sbatch --export ALL,FASTA="${FASTA}",BWA_MEM2_VERSION="${BWA_MEM2_VERSION}" ${PATH_TO_REPO}/utility_scripts/bwa_mem2_index.sh + fc -ln -1 >> README +elif [ ${ENVIRONMENT} == "LOCAL" ] +then + echo + echo "BWA Index will be created on the local compute" + + # Generate BWA Index Files + bwa-mem2 index ${FASTA} + + # Error Capture + if [ "$?" = "0" ] + then + echo "PASSED_BWA_INDEX" >> README + else + touch FAILED_BWA_INDEX + echo "FAILED_BWA_INDEX" >> README + exit 1 + fi +else + echo "Unexpected Entry in ${WORKFLOW_NAME}_resources.ini Enviroment Variable" + touch FAILED_BWA_INDEX + echo "FAILED_BWA_INDEX" >> README + exit 1 +fi From 19f7fc4cd5eacb5ecbea4152e3749133c3cb4db1 Mon Sep 17 00:00:00 2001 From: Bryce Turner Date: Wed, 22 Mar 2023 16:23:26 -0700 Subject: [PATCH 07/10] Updated readme to denote correct script usage order --- tempe/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tempe/README.md b/tempe/README.md index e9bc45e..3e08cbf 100644 --- a/tempe/README.md +++ b/tempe/README.md @@ -11,7 +11,8 @@ while the reference used for RNA does not have ALT-contigs as STAR is not ALT-aw ## Script Usage Order * sbatch tempe/create_genome_reference.sh tempe/tempe_resources.ini - * bash shared_resource_creation_scripts/create_bwa_genome_index.sh tempe/tempe_resources.ini + * bash tempe/create_bwa_genome_index.sh tempe/tempe_resources.ini + * bash tempe/create_bwa_mem2_genome_index.sh tempe/tempe_resources.ini * bash shared_resource_creation_scripts/create_gatk_cnv_interval_list.sh tempe/tempe_resources.ini * bash tempe/create_samtools_stats_non_N_region_file.sh tempe/tempe_resources.ini * bash tempe/create_gene_model.sh tempe/tempe_resources.ini From 1b8630f8e9d810816400fa62860ac052829321ec Mon Sep 17 00:00:00 2001 From: Bryce Turner Date: Wed, 22 Mar 2023 17:36:08 -0700 Subject: [PATCH 08/10] Adding comment to bwa_index order lines --- tempe/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tempe/README.md b/tempe/README.md index 3e08cbf..979ab2c 100644 --- a/tempe/README.md +++ b/tempe/README.md @@ -11,8 +11,8 @@ while the reference used for RNA does not have ALT-contigs as STAR is not ALT-aw ## Script Usage Order * sbatch tempe/create_genome_reference.sh tempe/tempe_resources.ini - * bash tempe/create_bwa_genome_index.sh tempe/tempe_resources.ini - * bash tempe/create_bwa_mem2_genome_index.sh tempe/tempe_resources.ini + * bash tempe/create_bwa_genome_index.sh tempe/tempe_resources.ini # this uses a slightly more custom script to make sure we have an alt aware index + * bash tempe/create_bwa_mem2_genome_index.sh tempe/tempe_resources.ini # this uses a slightly more custom script to make sure we have an alt aware index * bash shared_resource_creation_scripts/create_gatk_cnv_interval_list.sh tempe/tempe_resources.ini * bash tempe/create_samtools_stats_non_N_region_file.sh tempe/tempe_resources.ini * bash tempe/create_gene_model.sh tempe/tempe_resources.ini From 007eb23179465849be25df38641e7bdb433012b9 Mon Sep 17 00:00:00 2001 From: TGenJetstream Date: Thu, 23 Mar 2023 12:21:22 -0700 Subject: [PATCH 09/10] updated capture kits --- coyote/capture_kits.csv | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/coyote/capture_kits.csv b/coyote/capture_kits.csv index 1aecdce..00f1f8f 100644 --- a/coyote/capture_kits.csv +++ b/coyote/capture_kits.csv @@ -1,2 +1,3 @@ SC2,Agilent_SureSelect_Canine_Exon_V2,agilent_canine_exonV2_targets_sorted.bed,agilent_canine_exonV2_targets_sorted.bed -XT2,Agilent_SureSelect_XT2_Vidium_v1.0,Vidium_v1.0_exome_Covered_nochr_noheader.bed,Vidium_v1.0_exome_Covered_nochr_noheader.bed \ No newline at end of file +XT2,Agilent_SureSelect_XT2_Vidium_v1.0,Vidium_v1.0_exome_Covered_nochr_noheader.bed,Vidium_v1.0_exome_Covered_nochr_noheader.bed +ACE,Twist_Alliance_Canine_Exome,Twist_Alliance_Canine_Exome_canFam3_all_targets_covered_nochr_subMT_chrUnMod.bed,Twist_Alliance_Canine_Exome_canFam3_all_targets_covered_nochr_subMT_chrUnMod.bed From 81a47b7ac799478eaa67f925f9e21370e7f92f19 Mon Sep 17 00:00:00 2001 From: TGenJetstream Date: Thu, 23 Mar 2023 12:24:59 -0700 Subject: [PATCH 10/10] Adding execute permissions to shell scripts --- bastien/create_canfam3toRosCfam_liftover_chain.sh | 0 bastien/create_genderCheck_SNP_list.sh | 0 bastien/create_samtools_stats_non_N_region_file.sh | 0 bastien/create_snp_database.sh | 0 coyote/create_samtools_stats_non_N_region_file.sh | 0 coyote/create_snp_database.sh | 0 monte/create_canfam3tocanfam6_liftover_chain.sh | 0 monte/create_genderCheck_SNP_list.sh | 0 monte/create_samtools_stats_non_N_region_file.sh | 0 monte/create_snp_database.sh | 0 phoenix/create_disease_specific_resources.sh | 0 shared_resource_creation_scripts/create_bwa_mem2_genome_index.sh | 0 shared_resource_creation_scripts/create_ichor_gc_wig.sh | 0 shared_resource_creation_scripts/create_padded_cds_beds.sh | 0 shared_resource_creation_scripts/create_sequenza_resources.sh | 0 sonoran/create_genome_reference.sh | 0 sonoran/create_samtools_stats_non_N_region_file.sh | 0 sonoran/create_snp_database.sh | 0 suncity/create_mappability_file.sh | 0 tempe/create_bwa_mem2_genome_index.sh | 0 tempe/create_disease_specific_resources.sh | 0 utility_scripts/bwa_mem2_index.sh | 0 utility_scripts/create_CNV_panel_of_normals.sh | 0 utility_scripts/sequenza_gc_wiggle.sh | 0 24 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 bastien/create_canfam3toRosCfam_liftover_chain.sh mode change 100644 => 100755 bastien/create_genderCheck_SNP_list.sh mode change 100644 => 100755 bastien/create_samtools_stats_non_N_region_file.sh mode change 100644 => 100755 bastien/create_snp_database.sh mode change 100644 => 100755 coyote/create_samtools_stats_non_N_region_file.sh mode change 100644 => 100755 coyote/create_snp_database.sh mode change 100644 => 100755 monte/create_canfam3tocanfam6_liftover_chain.sh mode change 100644 => 100755 monte/create_genderCheck_SNP_list.sh mode change 100644 => 100755 monte/create_samtools_stats_non_N_region_file.sh mode change 100644 => 100755 monte/create_snp_database.sh mode change 100644 => 100755 phoenix/create_disease_specific_resources.sh mode change 100644 => 100755 shared_resource_creation_scripts/create_bwa_mem2_genome_index.sh mode change 100644 => 100755 shared_resource_creation_scripts/create_ichor_gc_wig.sh mode change 100644 => 100755 shared_resource_creation_scripts/create_padded_cds_beds.sh mode change 100644 => 100755 shared_resource_creation_scripts/create_sequenza_resources.sh mode change 100644 => 100755 sonoran/create_genome_reference.sh mode change 100644 => 100755 sonoran/create_samtools_stats_non_N_region_file.sh mode change 100644 => 100755 sonoran/create_snp_database.sh mode change 100644 => 100755 suncity/create_mappability_file.sh mode change 100644 => 100755 tempe/create_bwa_mem2_genome_index.sh mode change 100644 => 100755 tempe/create_disease_specific_resources.sh mode change 100644 => 100755 utility_scripts/bwa_mem2_index.sh mode change 100644 => 100755 utility_scripts/create_CNV_panel_of_normals.sh mode change 100644 => 100755 utility_scripts/sequenza_gc_wiggle.sh diff --git a/bastien/create_canfam3toRosCfam_liftover_chain.sh b/bastien/create_canfam3toRosCfam_liftover_chain.sh old mode 100644 new mode 100755 diff --git a/bastien/create_genderCheck_SNP_list.sh b/bastien/create_genderCheck_SNP_list.sh old mode 100644 new mode 100755 diff --git a/bastien/create_samtools_stats_non_N_region_file.sh b/bastien/create_samtools_stats_non_N_region_file.sh old mode 100644 new mode 100755 diff --git a/bastien/create_snp_database.sh b/bastien/create_snp_database.sh old mode 100644 new mode 100755 diff --git a/coyote/create_samtools_stats_non_N_region_file.sh b/coyote/create_samtools_stats_non_N_region_file.sh old mode 100644 new mode 100755 diff --git a/coyote/create_snp_database.sh b/coyote/create_snp_database.sh old mode 100644 new mode 100755 diff --git a/monte/create_canfam3tocanfam6_liftover_chain.sh b/monte/create_canfam3tocanfam6_liftover_chain.sh old mode 100644 new mode 100755 diff --git a/monte/create_genderCheck_SNP_list.sh b/monte/create_genderCheck_SNP_list.sh old mode 100644 new mode 100755 diff --git a/monte/create_samtools_stats_non_N_region_file.sh b/monte/create_samtools_stats_non_N_region_file.sh old mode 100644 new mode 100755 diff --git a/monte/create_snp_database.sh b/monte/create_snp_database.sh old mode 100644 new mode 100755 diff --git a/phoenix/create_disease_specific_resources.sh b/phoenix/create_disease_specific_resources.sh old mode 100644 new mode 100755 diff --git a/shared_resource_creation_scripts/create_bwa_mem2_genome_index.sh b/shared_resource_creation_scripts/create_bwa_mem2_genome_index.sh old mode 100644 new mode 100755 diff --git a/shared_resource_creation_scripts/create_ichor_gc_wig.sh b/shared_resource_creation_scripts/create_ichor_gc_wig.sh old mode 100644 new mode 100755 diff --git a/shared_resource_creation_scripts/create_padded_cds_beds.sh b/shared_resource_creation_scripts/create_padded_cds_beds.sh old mode 100644 new mode 100755 diff --git a/shared_resource_creation_scripts/create_sequenza_resources.sh b/shared_resource_creation_scripts/create_sequenza_resources.sh old mode 100644 new mode 100755 diff --git a/sonoran/create_genome_reference.sh b/sonoran/create_genome_reference.sh old mode 100644 new mode 100755 diff --git a/sonoran/create_samtools_stats_non_N_region_file.sh b/sonoran/create_samtools_stats_non_N_region_file.sh old mode 100644 new mode 100755 diff --git a/sonoran/create_snp_database.sh b/sonoran/create_snp_database.sh old mode 100644 new mode 100755 diff --git a/suncity/create_mappability_file.sh b/suncity/create_mappability_file.sh old mode 100644 new mode 100755 diff --git a/tempe/create_bwa_mem2_genome_index.sh b/tempe/create_bwa_mem2_genome_index.sh old mode 100644 new mode 100755 diff --git a/tempe/create_disease_specific_resources.sh b/tempe/create_disease_specific_resources.sh old mode 100644 new mode 100755 diff --git a/utility_scripts/bwa_mem2_index.sh b/utility_scripts/bwa_mem2_index.sh old mode 100644 new mode 100755 diff --git a/utility_scripts/create_CNV_panel_of_normals.sh b/utility_scripts/create_CNV_panel_of_normals.sh old mode 100644 new mode 100755 diff --git a/utility_scripts/sequenza_gc_wiggle.sh b/utility_scripts/sequenza_gc_wiggle.sh old mode 100644 new mode 100755