@@ -85,6 +85,7 @@ def __init__(
85
85
discard_soft : bool = False ,
86
86
add_dotfile : bool = False ,
87
87
disable_progressbar : bool = False ,
88
+ add_convert_modifier : bool = False ,
88
89
opts = None ,
89
90
** kwargs ,
90
91
):
@@ -143,6 +144,7 @@ def __init__(
143
144
:param bam_conversion: Optional: set True to convert bam files [Works with raw data]
144
145
:param picard_path: Specify a path to the picard jar, if you want to convert fastq to bam
145
146
[Default: $PICARD:" + safe_echo("PICARD") + "] [Works with raw data]
147
+ :param add_convert_modifier: Add looper SRA convert modifier to config file.
146
148
147
149
:param skip: Skip some accessions. [Default: no skip].
148
150
:param opts: opts object [Optional]
@@ -244,7 +246,7 @@ def __init__(
244
246
self .discard_soft = discard_soft
245
247
self .add_dotfile = add_dotfile
246
248
self .disable_progressbar = disable_progressbar
247
-
249
+ self . add_convert_modifier = add_convert_modifier
248
250
self ._LOGGER .info (f"Metadata folder: { self .metadata_expanded } " )
249
251
250
252
# Some sanity checks before proceeding
@@ -638,15 +640,15 @@ def _download_raw_data(self, run_name: str) -> NoReturn:
638
640
# converting sra to bam using
639
641
# TODO: sam-dump has a built-in prefetch. I don't have to do
640
642
# any of this stuff... This also solves the bad sam-dump issues.
641
- self ._sra_bam_conversion1 (bam_file , run_name )
643
+ self ._sra_to_bam_conversion_sam_dump (bam_file , run_name )
642
644
643
645
# checking if bam_file converted correctly, if not --> use fastq-dump
644
646
st = os .stat (bam_file )
645
647
if st .st_size < 100 :
646
648
self ._LOGGER .warning (
647
649
"Bam conversion failed with sam-dump. Trying fastq-dump..."
648
650
)
649
- self ._sra_bam_conversion2 (bam_file , run_name , self .picard_path )
651
+ self ._sra_to_bam_conversion_fastq_damp (bam_file , run_name , self .picard_path )
650
652
651
653
except FileNotFoundError as err :
652
654
self ._LOGGER .info (
@@ -1145,9 +1147,15 @@ def _create_config_raw(self, proj_meta, proj_root_sample, subanot_path_yaml):
1145
1147
]
1146
1148
modifiers_str = "\n " .join (d for d in meta_list_str )
1147
1149
# Write project config file
1150
+ geofetchdir = os .path .dirname (__file__ )
1148
1151
if not self .config_template :
1149
- geofetchdir = os .path .dirname (__file__ )
1150
1152
self .config_template = os .path .join (geofetchdir , CONFIG_RAW_TEMPLATE_NAME )
1153
+ if self .add_convert_modifier :
1154
+ sra_convert_path = os .path .join (geofetchdir , CONFIG_SRA_TEMPLATE )
1155
+ with open (sra_convert_path , "r" ) as template_file :
1156
+ sra_convert_template = template_file .read ()
1157
+ else :
1158
+ sra_convert_template = ""
1151
1159
with open (self .config_template , "r" ) as template_file :
1152
1160
template = template_file .read ()
1153
1161
template_values = {
@@ -1157,13 +1165,15 @@ def _create_config_raw(self, proj_meta, proj_root_sample, subanot_path_yaml):
1157
1165
"pipeline_samples" : self .file_pipeline_samples ,
1158
1166
"pipeline_project" : self .file_pipeline_project ,
1159
1167
"additional_columns" : modifiers_str ,
1168
+ "sra_convert" : sra_convert_template ,
1160
1169
}
1161
1170
for k , v in template_values .items ():
1162
1171
placeholder = "{" + str (k ) + "}"
1163
1172
template = template .replace (placeholder , str (v ))
1164
1173
return template
1165
1174
1166
- def _check_sample_name_standard (self , metadata_dict : dict ) -> dict :
1175
+ @staticmethod
1176
+ def _check_sample_name_standard (metadata_dict : dict ) -> dict :
1167
1177
"""
1168
1178
Standardizing sample name and checking if it exists
1169
1179
(This function is used for raw data)
@@ -1291,7 +1301,7 @@ def _download_SRA_file(self, run_name: str):
1291
1301
)
1292
1302
time .sleep (t * 2 )
1293
1303
1294
- def _sra_bam_conversion1 (self , bam_file : str , run_name : str ) -> NoReturn :
1304
+ def _sra_to_bam_conversion_sam_dump (self , bam_file : str , run_name : str ) -> NoReturn :
1295
1305
"""
1296
1306
Converting of SRA file to BAM file by using samtools function "sam-dump"
1297
1307
:param str bam_file: path to BAM file that has to be created
@@ -1315,7 +1325,7 @@ def _sra_bam_conversion1(self, bam_file: str, run_name: str) -> NoReturn:
1315
1325
self ._LOGGER .info (f"Conversion command: { cmd } " )
1316
1326
run_subprocess (cmd , shell = True )
1317
1327
1318
- def _sra_bam_conversion2 (
1328
+ def _sra_to_bam_conversion_fastq_damp (
1319
1329
self , bam_file : str , run_name : str , picard_path : str = None
1320
1330
) -> NoReturn :
1321
1331
"""
0 commit comments