Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v2.1.0 #26

Merged
merged 100 commits into from
Apr 2, 2024
Merged
Show file tree
Hide file tree
Changes from 98 commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
0036de6
Added MosaicHunter to the workflow
BasMonkey Jul 24, 2023
4a6899b
Changed the mosaichunter docker url
BasMonkey Jul 24, 2023
d645819
Refactor file name mosaichunter.nf to MosaicHunter.nf
BasMonkey Jul 24, 2023
74aa077
Refactor of double quoutes to single
BasMonkey Jul 25, 2023
de70e96
Refactor input declaration for MosaicHunter
BasMonkey Jul 26, 2023
936a09f
Added dockerfile
BasMonkey Jul 26, 2023
f2f4779
Refactor of script block to shell block with right variables
BasMonkey Jul 31, 2023
63d6502
Set the output of MH step two to optional
BasMonkey Aug 1, 2023
7d8cabe
Fix for MH second step config file
BasMonkey Aug 3, 2023
1ada9ee
Fix for input of step specific config files
BasMonkey Aug 3, 2023
c6421ae
Added rename functionality of output file to include sampleID
BasMonkey Aug 9, 2023
d95745c
Swapped publishDir to process with file rename functionality to add s…
BasMonkey Aug 9, 2023
72e9c22
Refactor of single quotes to double quotes for publishdir
BasMonkey Aug 9, 2023
a07e74a
Refactor removal of accolades for publishdir
BasMonkey Sep 1, 2023
0ef5fe1
Refactor for output dir with rename of output files MosaicHunter
BasMonkey Oct 26, 2023
a2da773
Refactor of MosiacHunter process names to include an underscore
BasMonkey Dec 7, 2023
226a224
added gendercheck
melferink Dec 13, 2023
901729d
refactor
melferink Dec 13, 2023
60e0d19
refactor
melferink Dec 13, 2023
e0c7b36
added
melferink Dec 13, 2023
d1579af
added
melferink Dec 13, 2023
962c0ef
removed
melferink Dec 13, 2023
4ce083e
fix
melferink Dec 13, 2023
a462418
included closing bracket
melferink Dec 13, 2023
e232dab
flake8 refactor
melferink Dec 13, 2023
344abf6
refactor + translation
melferink Dec 14, 2023
5eed5da
refactor
melferink Dec 14, 2023
635722f
fix
melferink Dec 14, 2023
e34186d
general update to one process
melferink Dec 14, 2023
09b33da
removed
melferink Dec 14, 2023
7c47138
removed
melferink Dec 14, 2023
f9b5f22
support for single file input of same QC. changes made by Ellen
melferink Dec 18, 2023
81921c2
Wrapped individual variables in tuples in val()
BasMonkey Jan 17, 2024
79af65c
Added second config file for MosaicHunter
BasMonkey Jan 26, 2024
e916c39
refactor
melferink Feb 7, 2024
d41901b
added tests
melferink Feb 7, 2024
2931749
permission same as other files
melferink Feb 7, 2024
3f8c0f9
refactor
melferink Feb 7, 2024
531e845
Merge branch 'develop' into feature/gender_checkY
melferink Feb 7, 2024
128a830
refactor
melferink Feb 7, 2024
80feefc
chmod
melferink Feb 7, 2024
043b98f
Merge remote-tracking branch 'origin/develop' into feature/nextflow_u…
BasMonkey Feb 9, 2024
7528eae
Refactor of MosaicHunter process names, tags and labels
BasMonkey Feb 14, 2024
3e4f629
Updated comments
BasMonkey Feb 14, 2024
19de978
Refactor of process name in the input of MosicHunter Mosaic Variant C…
BasMonkey Feb 14, 2024
f7ef6f3
Removed config files from CustomModules
BasMonkey Feb 16, 2024
c85c0d3
Fixed indents for input and output
BasMonkey Feb 19, 2024
be6ca52
Removed redundant tag declaration
BasMonkey Feb 19, 2024
7d17582
Refactor of process "docstring" comments
BasMonkey Feb 19, 2024
05d2084
Refactor of process metadata
BasMonkey Feb 19, 2024
e1ea4cb
Fixed typo
BasMonkey Feb 19, 2024
be0e2ea
refactor
melferink Feb 26, 2024
4dd1bc0
renamed
melferink Feb 26, 2024
170de6a
fixed typo
melferink Feb 26, 2024
577f69c
added test. Removed double tests
melferink Feb 26, 2024
67a5f6e
refactor mark.parametrize
melferink Feb 26, 2024
d4a28f9
refactor
melferink Feb 26, 2024
1463a34
changed into male/female only based on 1 threshold
melferink Feb 29, 2024
cb48fb1
Merge pull request #17 from UMCUGenetics/feature/gender_checkY
melferink Mar 5, 2024
f5301d6
Merge branch 'develop' into feature/MosaicHunter
BasMonkey Mar 5, 2024
ccf4ad2
Added gender parsing step to MosaicHunter
BasMonkey Mar 8, 2024
ecf6ae8
Restored acidentially removed new line at end of file
BasMonkey Mar 8, 2024
3d078c1
Fixed in- and output of gender data
BasMonkey Mar 8, 2024
7fa1bb8
Added get gender from bam python script to mosaic hunter
BasMonkey Mar 8, 2024
c516530
Changed baseDir to projectDir
BasMonkey Mar 8, 2024
a85dade
Refactor of all baseDir to projectDir
BasMonkey Mar 8, 2024
dbd936b
Merge remote-tracking branch 'origin/develop' into feature/nextflow_u…
BasMonkey Mar 8, 2024
c42d365
Added forced field to tsv file
BasMonkey Mar 8, 2024
069ef41
Added docstrings
BasMonkey Mar 8, 2024
2ba5ba5
Added docstring
BasMonkey Mar 8, 2024
338a6f5
Refactor of baseDir to projectDir
BasMonkey Mar 8, 2024
0043ee4
Added dockerfile for gendercheck image
BasMonkey Mar 8, 2024
be1a1a6
Refactor of pysamimage to new selfhosted image
BasMonkey Mar 8, 2024
e71f8cc
Refactor of write gender data to file method
BasMonkey Mar 11, 2024
9f9f7ec
Added unit tests for MosaicHunter get gender data methods
BasMonkey Mar 11, 2024
6cd2340
PEP8 refactor
BasMonkey Mar 11, 2024
051a53d
refactor due to renaming sample_udf_dx function in clarity_epp
melferink Mar 11, 2024
86fa5b2
renamed to SampleUDFDx
melferink Mar 11, 2024
c9a0de7
Fixed the assertions + params in test
BasMonkey Mar 11, 2024
9570808
Fixed the returns of the get gender
BasMonkey Mar 11, 2024
34f53e1
Added requirements for python test for MosaicHunter getgender
BasMonkey Mar 11, 2024
bebdfcd
Removed redundant comment
BasMonkey Mar 12, 2024
f82e912
Indentation Fix
BasMonkey Mar 12, 2024
8af8781
Refactor of container name
BasMonkey Mar 13, 2024
5b55ac0
Removed redundant comment
BasMonkey Mar 13, 2024
09dba80
Refactor of single quotes to double quotes
BasMonkey Mar 15, 2024
882d59e
Refactor for in and outputs of MH steps
BasMonkey Mar 15, 2024
2290b37
Added missing file extension
BasMonkey Mar 15, 2024
8531d55
Fixed in and outputs
BasMonkey Mar 19, 2024
196e5d8
Added indents for shell script of MosaicHunter
BasMonkey Mar 20, 2024
d78e272
Merge pull request #20 from UMCUGenetics/feature/MosaicHunter
BasMonkey Mar 27, 2024
cc603d1
Merge pull request #23 from UMCUGenetics/feature/nextflow_upgrade_23_…
BasMonkey Mar 27, 2024
227538e
Merge pull request #25 from UMCUGenetics/develop
melferink Mar 27, 2024
50cb86a
Merge pull request #24 from UMCUGenetics/feature/gender_checkY
melferink Mar 27, 2024
cf3e64f
Merge pull request #27 from UMCUGenetics/develop
melferink Mar 27, 2024
91258ad
Removed DSL 2 preview line
BasMonkey Mar 28, 2024
c9a7fdb
Added missing val()
BasMonkey Mar 28, 2024
dd4391d
refactor to include val()
melferink Mar 28, 2024
5a935d9
flake8 changes. Moved comments
melferink Mar 29, 2024
f9d9c0f
refactor flake8
melferink Apr 2, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CheckFingerprintVCF/CheckFingerprintVCF.nf
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ process CheckFingerprintVCF {

script:
"""
python ${baseDir}/CustomModules/CheckFingerprintVCF/check_fingerprint_vcf.py -o logbook.txt ${vcf_files}
python ${projectDir}/CustomModules/CheckFingerprintVCF/check_fingerprint_vcf.py -o logbook.txt ${vcf_files}
"""
}
2 changes: 1 addition & 1 deletion CheckQC/CheckQC.nf
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ process CheckQC {

script:
"""
python ${baseDir}/CustomModules/CheckQC/check_qc.py ${params.qc_settings_path} '.' ${identifier} ${input_files}
python ${projectDir}/CustomModules/CheckQC/check_qc.py ${params.qc_settings_path} '.' ${identifier} ${input_files}
"""
}
14 changes: 7 additions & 7 deletions ClarityEpp/SampleIndications.nf → ClarityEpp/SampleUDFDx.nf
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
process SampleIndications {
// Custom process to run clarity_epp export sample_indications
tag {"ClarityEpp SampleIndications ${sample_id}"}
process SampleUDFDx {
melferink marked this conversation as resolved.
Show resolved Hide resolved
// Custom process to run clarity_epp export sample_udf_dx
tag {"ClarityEpp SampleUDFDx ${sample_id}"}
label 'ClarityEpp'
label 'ClarityEpp_SampleIndications'
label 'ClarityEpp_SampleUDFDx'
shell = ['/bin/bash', '-eo', 'pipefail']
cache = false //Disable cache to force a clarity export restarting the workflow.

Expand All @@ -15,7 +15,7 @@ process SampleIndications {
script:
"""
source ${params.clarity_epp_path}/venv/bin/activate
python ${params.clarity_epp_path}/clarity_epp.py export sample_indications \
-a ${sample_id} | cut -f 2 | grep -v 'Indication' | tr -d '\n'
python ${params.clarity_epp_path}/clarity_epp.py export sample_udf_dx \
-a ${sample_id} -u '$params.udf' -c '$params.column_name' | cut -f 2 | grep -v $params.column_name | tr -d '\n'
"""
}
}
27 changes: 27 additions & 0 deletions GenderCheck/CompareGender.nf
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
process CompareGender {
// Custom process to check gender of sample with known status
tag {"CompareGender ${sample_id}"}
label 'CompareGender'
label 'CompareGender_Pysam'
container = 'ghcr.io/umcugenetics/custommodules_gendercheck:1.0.0'
shell = ['/bin/bash', '-eo', 'pipefail']

input:
tuple(val(sample_id), val(analysis_id), path(bam_file), path(bai_file), val(true_gender))

output:
tuple(path("*gendercheck.txt"), emit: gendercheck_qc)

script:
"""
python ${projectDir}/CustomModules/GenderCheck/calculate_gender.py \
${sample_id} \
${analysis_id} \
${bam_file} \
./ \
${true_gender} \
$params.gendercheck_ratio_y \
$params.gendercheck_mapping_qual \
$params.gendercheck_locus_y
"""
}
11 changes: 11 additions & 0 deletions GenderCheck/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
################## BASE IMAGE ######################
FROM --platform=linux/amd64 python:3.11

################## METADATA ######################
LABEL base_image="python:3.11"
LABEL version="1.0.0"
LABEL extra.binaries="pysam,pytest"

################## INSTALLATIONS ######################
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
64 changes: 64 additions & 0 deletions GenderCheck/calculate_gender.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#! /usr/bin/env python3

import argparse
import pysam


def is_valid_read(read, mapping_qual):
"""Check if a read is properly mapped."""
if (read.mapping_quality >= mapping_qual and read.reference_end and read.reference_start):
return True
return False


def get_gender_from_bam(bam, mapping_qual, locus_y, ratio_y):
with pysam.AlignmentFile(bam, "rb") as bam_file:
y_reads = float(
sum([is_valid_read(read, mapping_qual) for read in bam_file.fetch(region=locus_y)])
)
total_reads = float(bam_file.mapped)
y_ratio_perc = (y_reads / total_reads) * 100
if y_ratio_perc <= ratio_y:
return "female"
else:
return "male"


def compare_gender(sample_id, analysis_id, test_gender, true_gender):
if test_gender == true_gender or true_gender == "unknown": # if gender if unknown/onbekend in database, pass
qc = "PASS"
else: # not_detected in database considered failed
qc = "FAIL"
return f"{sample_id}\t{analysis_id}\t{test_gender}\t{true_gender}\t{qc}\n"


def write_qc_file(sample_id, analysis_id, comparison, outputfolder):
with open(f"{outputfolder}/{sample_id}_{analysis_id}_gendercheck.txt", 'w') as write_file:
melferink marked this conversation as resolved.
Show resolved Hide resolved
write_file.write("sample_id\tanalysis_id\ttest_gender\ttrue_gender\tstatus\n")
write_file.write(comparison)


if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('sample_id', help='sample_id')
parser.add_argument('analysis_id', help='analysis_id')
parser.add_argument('bam', help='path to bam file')
parser.add_argument('outputfolder', help='path to output folder')
parser.add_argument('true_gender', help='gender regarded as the truth')
parser.add_argument(
"ratio_y",
type=float,
help="maximunum chromosome Y ratio for females [float]"
)
parser.add_argument('mapping_qual', type=int, help='minimum mapping quality of reads to be considered [int]')
parser.add_argument('locus_y', help='Coordinates for includes region on chromosome Y (chr:start-stop)')
args = parser.parse_args()

translation = {"Man": "male", "Vrouw": "female", "Onbekend": "unknown", "unknown": "not_detected"}
true_gender = args.true_gender
if true_gender in translation:
true_gender = translation[true_gender]

test_gender = get_gender_from_bam(args.bam, args.mapping_qual, args.locus_y, args.ratio_y)
comparison = compare_gender(args.sample_id, args.analysis_id, test_gender, true_gender)
write_qc_file(args.sample_id, args.analysis_id, comparison, args.outputfolder)
5 changes: 5 additions & 0 deletions GenderCheck/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
iniconfig==2.0.0
packaging==23.2
pluggy==1.4.0
pysam==0.22.0
pytest==8.0.2
Binary file added GenderCheck/test_bam.bam
Binary file not shown.
Binary file added GenderCheck/test_bam.bam.bai
Binary file not shown.
53 changes: 53 additions & 0 deletions GenderCheck/test_calculate_gender.py
melferink marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import calculate_gender

import pytest


class TestIsValidRead():


class MyObject:
def __init__(self, qual, start, end):
self.mapping_quality = qual
self.reference_start = start
self.reference_end = end


@pytest.mark.parametrize("read,mapping_qual,expected", [
(MyObject(19, True, True), 20, False), # mapping quality is below the threshold
(MyObject(20, True, True), 20, True), # mapping quality is equal to the threshold
(MyObject(20, True, True), 19, True), # mapping quality is higher than the threshold
(MyObject(20, False, True), 20, False), # reference_end is false
(MyObject(20, True, False), 20, False), # reference_start is false
])
def test_is_valid_read(self, read, mapping_qual, expected):
assert expected == calculate_gender.is_valid_read(read, mapping_qual)


class TestGetGenderFromBam():
@pytest.mark.parametrize("bam,mapping_qual,locus_y,ratio_y,expected", [
("./test_bam.bam", 20, "Y:2649520-59034050", 0.02, "male"), # output male below
("./test_bam.bam", 20, "Y:2649520-59034050", 0.22, "female"), # output female
])
def test_get_gender_from_bam(self, bam, mapping_qual, locus_y, ratio_y, expected):
assert expected == calculate_gender.get_gender_from_bam(bam, mapping_qual, locus_y, ratio_y)


class TestCompareGender():
@pytest.mark.parametrize("sample_id,analysis_id,test_gender,true_gender,expected", [
("test_sample", "test_analyse", "male", "male", "test_sample\ttest_analyse\tmale\tmale\tPASS\n"), # test_gender and true_gender identical, PASS
("test_sample", "test_analyse", "male", "female", "test_sample\ttest_analyse\tmale\tfemale\tFAIL\n"), # test_gender and true_gender not identical , FAIL
("test_sample", "test_analyse", "male", "unknown", "test_sample\ttest_analyse\tmale\tunknown\tPASS\n"), # true_gender unknown, PASS
("test_sample", "test_analyse", "male", "not_detected", "test_sample\ttest_analyse\tmale\tnot_detected\tFAIL\n"), # true_gender not_detected, FAIL
])
def test_compare_gender(self, sample_id, analysis_id, test_gender, true_gender, expected):
assert expected == calculate_gender.compare_gender(sample_id, analysis_id, test_gender, true_gender)


def test_write_qc_file(tmp_path):
path = tmp_path / "qc_folder"
path.mkdir()
qc_file = path / "test_sample_test_analyse_gendercheck.txt"
calculate_gender.write_qc_file("test_sample", "test_analyse", "test_sample\ttest_analyse\tmale\tmale\tPASS\n", path)
message = "sample_id\tanalysis_id\ttest_gender\ttrue_gender\tstatus\ntest_sample\ttest_analyse\tmale\tmale\tPASS\n"
assert message in qc_file.read_text()
2 changes: 1 addition & 1 deletion Kinship/Kinship.nf
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ process Kinship {
plink --file out --make-bed --noweb
king -b plink.bed --kinship
cp king.kin0 ${analysis_id}.kinship
python ${baseDir}/CustomModules/Kinship/check_kinship.py ${analysis_id}.kinship ${ped_file} > ${analysis_id}.kinship_check.out
python ${projectDir}/CustomModules/Kinship/check_kinship.py ${analysis_id}.kinship ${ped_file} > ${analysis_id}.kinship_check.out
"""
}
17 changes: 17 additions & 0 deletions MosaicHunter/1.0.0/Dockerfile
bioinformatica-genetica marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
FROM --platform=linux/amd64 ubuntu:latest

RUN apt-get update && \
apt-get -y install openjdk-8-jdk-headless && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN apt-get update
RUN apt-get install -y git
RUN apt-get install -y git-lfs
RUN git lfs install
RUN apt-get install libcurl4

RUN apt-get install -y rsync
RUN rsync -aP hgdownload.soe.ucsc.edu::genome/admin/exe/linux.x86_64/blat/ ./../usr/bin

RUN git clone https://github.com/zzhang526/MosaicHunter
124 changes: 124 additions & 0 deletions MosaicHunter/1.0.0/MosaicHunter.nf
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
#!/usr/bin/env nextflow

process MosaicHunterGetGender {
tag {"MosaicHunterGetGender ${sample_id}"}
label 'MosaicHunterGetGender'
container = 'ghcr.io/umcugenetics/custommodules_gendercheck:1.0.0'
shell = ['/bin/bash', '-eo', 'pipefail']

/*
Define inputs.
- Tuple consisting of a sample_id, a path to the .bam file, a path to the .bai file
*/
input:
tuple(val(sample_id), path(bam_files), path(bai_files))

/*
Define outputs.
- A tuple containing respectively the number for the alpha and beta found in the sample.
*/
output:
tuple(val(sample_id), path("gender_data_${sample_id}.tsv"))

// The command to execute MosaicHunter Get Gender
script:
"""
python ${workflow.projectDir}/CustomModules/MosaicHunter/1.0.0/get_gender_from_bam_chrx.py \
${sample_id} \
${bam_files} \
./ \
$params.mh_gender_ratio_x_threshold_male \
$params.mh_gender_ratio_x_threshold_female \
$params.mh_gender_mapping_qual \
$params.mh_gender_locus_x
"""
}

process MosaicHunterQualityCorrection {
// Step 1: Process input files
tag {"MosaicHunterQualityCorrection ${sample_id}"}
label 'MosaicHunterQualityCorrection'
container = 'docker://umcugenbioinf/mosaic_hunter:1.0.0'
shell = ['/bin/bash', '-euo', 'pipefail']

/*
Define inputs.
- Tuple consisting of a sample_id, a path to the .bam file, a path to the .bai file
- Path to the reference file
- Path to the MosaicHunter common site filter bed file
- Path to the MosaicHunter config file for the Quality Correction step
*/
input:
tuple(val(sample_id), path(bam_files), path(bai_files), path(gender_data))
path(mh_reference_file)
path(mh_common_site_filter_bed_file)
path(mh_config_file_one)

/*
Define outputs.
- A tuple containing respectively the number for the alpha and beta found in the sample.
*/
output:
tuple(val(sample_id), env(MHALPHA), env(MHBETA))

// The command to execute MosaicHunter
shell:
'''
SEX_STRING=$(awk 'NR>1 {print $2}' gender_data_!{sample_id}.tsv)

java -Xmx!{task.memory.toGiga()-4}G -jar /MosaicHunter/build/mosaichunter.jar \
-C !{mh_config_file_one} \
-P input_file=!{bam_files} \
-P mosaic_filter.sex=$SEX_STRING \
-P reference_file=!{mh_reference_file} \
-P common_site_filter.bed_file=!{mh_common_site_filter_bed_file} \
-P output_dir=./
export MHALPHA="\$(grep -Po "(?<=alpha:\\s)\\w+" ./stdout*)"
export MHBETA="\$(grep -Po "(?<=beta:\\s)\\w+" ./stdout*)"
'''
}

process MosaicHunterMosaicVariantCalculation {
// Caclulate the Mosaic Variants
tag {"MosaicHunterMosaicVariantCalculation ${sample_id}"}
label 'MosaicHunterMosaicVariantCalculation'
container = 'docker://umcugenbioinf/mosaic_hunter:1.0.0'
shell = ['/bin/bash', '-euo', 'pipefail']

publishDir "QC/MosaicHunter", saveAs: { filename -> "${sample_id}_$filename" }, mode: 'copy'

/*
Define inputs.
- Tuple consisting of a sample_id, a path to the .bam file, a path to the .bai file
- Path to the reference file
- Path to the MosaicHunter common site filter bed file
- Path to the MosaicHunter config file for the Mosaic Variant Calculation step
- The output of the MosaicHunterQualityCorrection step. This makes the environment variables available in this process
- A tuple containing respectively the number for the alpha and beta found in the
sample, which are stored in an environment variable.
*/
input:
tuple(val(sample_id), path(bam_files), path(bai_files), path(gender_data), env(MHALPHA), env(MHBETA))
path(mh_reference_file)
path(mh_common_site_filter_bed_file)
path(mh_config_file_two)

output:
path('final.passed.tsv')

// The command to execute step two of MosaicHunter
// First get the SEX_STRING from the sample
shell:
'''
SEX_STRING=$(awk 'NR>1 {print $2}' gender_data_!{sample_id}.tsv)

java -Xmx!{task.memory.toGiga()-8}G -jar /MosaicHunter/build/mosaichunter.jar \
-C !{mh_config_file_two} \
-P mosaic_filter.alpha_param=$MHALPHA -P mosaic_filter.beta_param=$MHBETA \
-P input_file=!{bam_files} \
-P mosaic_filter.sex=$SEX_STRING \
-P reference_file=!{mh_reference_file} \
-P common_site_filter.bed_file=!{mh_common_site_filter_bed_file} \
-P output_dir=./
'''
}
Loading