@@ -40,51 +40,118 @@ def verify_args(arg_dict):
4040
4141 # check that tumor purity and tumor ploidy is set correctly
4242 if arg_dict ['tumor_purity' ] is not None :
43- if not (arg_dict ['tumor_purity' ] > 0 and arg_dict ['tumor_purity' ] <= 1 ):
43+ if not (float ( arg_dict ['tumor_purity' ]) > 0 and float ( arg_dict ['tumor_purity' ]) <= 1 ):
4444 err_msg = f"Tumor purity value ('--tumor_purity' = { arg_dict ['tumor_purity' ]} ) must be within (0, 1]"
4545 error_message (err_msg , logger )
4646
4747 if arg_dict ['tumor_ploidy' ] is not None :
48- if not arg_dict ['tumor_ploidy' ] > 0 :
48+ if not float ( arg_dict ['tumor_ploidy' ]) > 0 :
4949 err_msg = f"Tumor ploidy value ('--tumor_ploidy' = { arg_dict ['tumor_ploidy' ]} ) must be > 0"
5050 error_message (err_msg , logger )
5151
52- # check that minimum/maximum depth/allelic fractions are set correctly
53- if int ( arg_dict ['tumor_dp_min' ]) < 0 :
54- err_msg = f"Minimum sequencing depth tumor ('tumor_dp_min' = { arg_dict ['tumor_dp_min' ]} ) must be >= 0 "
52+ ## check that allelic support tags are set correctly when minimum/maximum depth/allelic fractions are set
53+ if arg_dict ['tumor_dp_tag' ] == "_NA_" and arg_dict [ ' tumor_dp_min' ] is not None :
54+ err_msg = f"Minimum sequencing depth tumor ('tumor_dp_min' = { arg_dict ['tumor_dp_min' ]} ) requires '--tumor_dp_tag' to be set "
5555 error_message (err_msg , logger )
56-
57- if float (arg_dict ['tumor_af_min' ]) < 0 or float ( arg_dict ['tumor_af_min' ]) > 1 :
58- err_msg = f"Minimum AF tumor ('tumor_af_min' = { arg_dict ['tumor_af_min' ]} ) must be within [0, 1] "
56+
57+ if arg_dict [ 'tumor_af_tag' ] == "_NA_" and (arg_dict ['tumor_af_min' ] is not None or arg_dict ['tumor_ad_min' ] is not None ) :
58+ err_msg = f"Minimum AF/AD tumor ('tumor_af_min' = { arg_dict ['tumor_af_min' ]} , 'tumor_ad_min' = { arg_dict [ 'tumor_ad_min' ] } ) requires '--tumor_af_tag' to be set "
5959 error_message (err_msg , logger )
60-
61- if int ( arg_dict ['control_dp_min' ]) < 0 :
62- err_msg = f"Minimum sequencing depth control ('control_dp_min' = { arg_dict ['control_dp_min' ]} ) must be >= 0 "
60+
61+ if arg_dict ['control_dp_tag' ] == "_NA_" and arg_dict [ ' control_dp_min' ] is not None :
62+ err_msg = f"Minimum sequencing depth control ('control_dp_min' = { arg_dict ['control_dp_min' ]} ) requires '--control_dp_tag' to be set "
6363 error_message (err_msg , logger )
64-
65- if float (arg_dict ['control_af_max' ]) < 0 or float ( arg_dict ['control_af_max' ]) > 1 :
66- err_msg = f"Maximum AF control ('control_af_max' = { arg_dict ['control_af_max' ]} ) must be within [0, 1] "
64+
65+ if arg_dict [ 'control_af_tag' ] == "_NA_" and (arg_dict ['control_af_max' ] is not None or arg_dict ['control_ad_max' ] is not None ) :
66+ err_msg = f"Maximum AF/AD control ('control_af_max' = { arg_dict ['control_af_max' ]} , 'control_ad_max' = { arg_dict [ 'control_ad_max' ] } ) requires '--control_af_tag' to be set "
6767 error_message (err_msg , logger )
68+
69+ # check that minimum/maximum depth/allelic fractions are set correctly
70+ dp_tumor_set = False
71+ if arg_dict ['tumor_dp_min' ] is not None :
72+ dp_tumor_set = True
73+ if int (arg_dict ['tumor_dp_min' ]) <= 0 :
74+ err_msg = f"Minimum sequencing depth tumor ('tumor_dp_min' = { arg_dict ['tumor_dp_min' ]} ) must be > 0"
75+ error_message (err_msg , logger )
76+
77+ if arg_dict ['tumor_af_min' ] is not None :
78+ if (float (arg_dict ['tumor_af_min' ]) > 1 or float (arg_dict ['tumor_af_min' ]) < 0 ):
79+ err_msg = f"Minimum AF tumor ('tumor_af_min' = { arg_dict ['tumor_af_min' ]} ) must be within [0, 1]"
80+ error_message (err_msg , logger )
81+
82+ dp_control_set = False
83+ if arg_dict ['control_dp_min' ] is not None :
84+ dp_control_set = True
85+ if int (arg_dict ['control_dp_min' ]) <= 0 :
86+ err_msg = f"Minimum sequencing depth control ('control_dp_min' = { arg_dict ['control_dp_min' ]} ) must be > 0"
87+ error_message (err_msg , logger )
88+
89+ if arg_dict ['tumor_ad_min' ] is not None :
90+ err = 0
91+ if int (arg_dict ['tumor_ad_min' ]) <= 0 :
92+ err = 1
93+ if dp_tumor_set is True and int (arg_dict ['tumor_ad_min' ]) > int (arg_dict ['tumor_dp_min' ]):
94+ err = 1
95+ if err == 1 :
96+ err_msg = (
97+ f"Minimum allelic depth tumor - ('tumor_ad_min' = { arg_dict ['tumor_ad_min' ]} ) must be > 0 "
98+ f"and less than or equal to minimum sequencing depth tumor ('tumor_dp_min' = { arg_dict ['tumor_dp_min' ]} )"
99+ )
100+ error_message (err_msg , logger )
101+
102+ if arg_dict ['control_af_max' ] is not None :
103+ if float (arg_dict ['control_af_max' ]) < 0 or float (arg_dict ['control_af_max' ]) > 1 :
104+ err_msg = f"Maximum AF control ('control_af_max' = { arg_dict ['control_af_max' ]} ) must be within [0, 1]"
105+ error_message (err_msg , logger )
68106
107+ if arg_dict ['control_ad_max' ] is not None :
108+ err = 0
109+ if int (arg_dict ['control_ad_max' ]) < 0 :
110+ err = 1
111+ if dp_control_set is True and int (arg_dict ['control_ad_max' ]) > int (arg_dict ['control_dp_min' ]):
112+ err = 1
113+ if err == 1 :
114+ err_msg = (
115+ f"Maximum allelic depth control - ('control_ad_max' = { arg_dict ['control_ad_max' ]} ) must be >= 0 "
116+ f"and less than or equal to minimum sequencing depth control ('control_dp_min' = { arg_dict ['control_dp_min' ]} )"
117+ )
118+ error_message (err_msg , logger )
69119
70- # TMB: check that minimum/maximum depth/allelic fractions are set correctly
71- if int (arg_dict ['tmb_dp_min' ]) < 0 :
72- err_msg = f"Minimum sequencing depth tumor - TMB calculation ('tmb_dp_min' = { arg_dict ['tmb_dp_min' ]} ) must be >= 0"
73- error_message (err_msg , logger )
74-
75- if int (arg_dict ['tmb_dp_min' ]) > 0 and (int (arg_dict ['tmb_dp_min' ]) < int (arg_dict ['tumor_dp_min' ])):
76- err_msg = f"Minimum sequencing depth (tumor) for TMB calculation ('tmb_dp_min' = { str (arg_dict ['tmb_dp_min' ])} ) must be "
77- err_msg += f"greater or equal to minimum sequencing depth tumor { str (arg_dict ['tumor_dp_min' ])} (i.e. filter for variant inclusion in report)"
78- error_message (err_msg , logger )
120+ # TMB: check that minimum/maximum depth/allelic fractions are set correctly
121+ if arg_dict ['tmb_dp_min' ] is not None :
122+ if int (arg_dict ['tmb_dp_min' ]) <= 0 :
123+ err_msg = f"Minimum sequencing depth tumor - TMB calculation ('tmb_dp_min' = { arg_dict ['tmb_dp_min' ]} ) must be > 0"
124+ error_message (err_msg , logger )
125+ if dp_tumor_set is True and (int (arg_dict ['tmb_dp_min' ]) < int (arg_dict ['tumor_dp_min' ])):
126+ err_msg = f"Minimum sequencing depth (tumor) for TMB calculation ('tmb_dp_min' = { str (arg_dict ['tmb_dp_min' ])} ) must be "
127+ err_msg += f"greater or equal to minimum sequencing depth tumor { str (arg_dict ['tumor_dp_min' ])} (i.e. global filter for variant inclusion in report)"
128+ error_message (err_msg , logger )
129+
130+ if arg_dict ['tmb_ad_min' ] is not None :
131+ if int (arg_dict ['tmb_ad_min' ]) <= 0 :
132+ err_msg = f"Minimum allelic depth tumor - TMB calculation ('tmb_ad_min' = { arg_dict ['tmb_ad_min' ]} ) must be > 0"
133+ error_message (err_msg , logger )
134+ if arg_dict ['tumor_ad_min' ] is not None :
135+ if int (arg_dict ['tmb_ad_min' ]) > 0 and int (arg_dict ['tumor_ad_min' ]) > 0 :
136+ if int (arg_dict ['tmb_ad_min' ]) < int (arg_dict ['tumor_ad_min' ]):
137+ err_msg = f"Minimum allelic depth (tumor) for TMB calculation ('tmb_ad_min' = { str (arg_dict ['tmb_ad_min' ])} ) must be "
138+ err_msg += f"greater or equal to minimum allelic depth tumor { str (arg_dict ['tumor_ad_min' ])} (i.e. global filter for variant inclusion in report)"
139+ error_message (err_msg , logger )
140+ if dp_tumor_set is True and (int (arg_dict ['tmb_ad_min' ]) > int (arg_dict ['tmb_dp_min' ]) and int (arg_dict ['tmb_dp_min' ]) > 0 ):
141+ err_msg = f"Minimum allelic depth (tumor) for TMB calculation ('tmb_ad_min' = { str (arg_dict ['tmb_ad_min' ])} ) must be "
142+ err_msg += f"less than or equal to minimum sequencing depth (tumor) for TMB calculation ('tmb_dp_min' = { str (arg_dict ['tmb_dp_min' ])} )"
143+ error_message (err_msg , logger )
79144
80- if float (arg_dict ['tmb_af_min' ]) < 0 or float (arg_dict ['tmb_af_min' ]) > 1 :
81- err_msg = f"Minimum AF (tumor) for TMB calculation ('tmb_af_min' = { arg_dict ['tmb_af_min' ]} ) must be within [0, 1]"
82- error_message (err_msg , logger )
145+ if arg_dict ['tmb_af_min' ] is not None :
146+ if float (arg_dict ['tmb_af_min' ]) < 0 or float (arg_dict ['tmb_af_min' ]) > 1 :
147+ err_msg = f"Minimum AF (tumor) for TMB calculation ('tmb_af_min' = { arg_dict ['tmb_af_min' ]} ) must be within [0, 1]"
148+ error_message (err_msg , logger )
83149
84- if float (arg_dict ['tmb_af_min' ]) > 0 and (float (arg_dict ['tmb_af_min' ]) < float (arg_dict ['tumor_af_min' ])):
85- err_msg = f"Minimum AF (tumor) for TMB calculation ('tmb_af_min' = { str (arg_dict ['tmb_af_min' ])} ) must be "
86- err_msg += f"greater or equal to minimum AF tumor { str (arg_dict ['tumor_dp_min' ])} (i.e. filter for variant inclusion in report)"
87- error_message (err_msg , logger )
150+ if arg_dict ['tumor_af_min' ] is not None :
151+ if float (arg_dict ['tmb_af_min' ]) > 0 and (float (arg_dict ['tmb_af_min' ]) < float (arg_dict ['tumor_af_min' ])):
152+ err_msg = f"Minimum AF (tumor) for TMB calculation ('tmb_af_min' = { str (arg_dict ['tmb_af_min' ])} ) must be "
153+ err_msg += f"greater or equal to minimum AF tumor ({ str (arg_dict ['tumor_af_min' ])} , i.e. global filter for variant inclusion in report)"
154+ error_message (err_msg , logger )
88155
89156 # Check that coding target size region of sequencing assay is set correctly
90157 if float (arg_dict ['effective_target_size_mb' ]) < 0 or float (arg_dict ['effective_target_size_mb' ]) > float (pcgr_vars .CODING_EXOME_SIZE_MB ):
0 commit comments