11rule compile_fail_sites_vcf :
22 params :
3- header = ("#CHROM" , "POS" , "ID" , "REF" , "ALT" , "QUAL" , "FILTER" , "INFO" ),
4- filter_text = "mask" ,
3+ filter_text = "fail_site" ,
54 sub_text = "NA" ,
6- exc_text = "site_qual"
5+ exc_text = "site_qual" ,
76 input :
87 sites = OUTDIR / f"{ OUTPUT_NAME } .fail_sites.tsv" ,
98 output :
109 sites = temp (OUTDIR / f"{ OUTPUT_NAME } .fail_sites.vcf" ),
1110 run :
1211 import pandas as pd
12+ HEADER = ["#CHROM" , "POS" , "ID" , "REF" , "ALT" , "QUAL" , "FILTER" , "INFO" ]
1313 sites = (
1414 pd .read_table (input .sites , sep = "\t " )
1515 .drop_duplicates (subset = ("CHROM" , "POS" , "REF" ))
@@ -20,28 +20,27 @@ rule compile_fail_sites_vcf:
2020 sites ["QUAL" ] = "."
2121 sites ["FILTER" ] = params .filter_text
2222 sites ["INFO" ] = f"SUB={ params .sub_text } ;EXC={ params .exc_text } "
23- sites [list ( params . header ) ].to_csv (output .sites , sep = "\t " , index = False )
23+ sites [HEADER ].to_csv (output .sites , sep = "\t " , index = False )
2424
2525
26- rule merge_sites :
27- params :
28- header = ("#CHROM" , "POS" , "ID" , "REF" , "ALT" , "QUAL" , "FILTER" , "INFO" )
26+ rule merge_mask_sites_vcf :
2927 input :
3028 lambda wildcards : select_problematic_vcf (),
3129 OUTDIR / f"{ OUTPUT_NAME } .fail_sites.vcf" ,
3230 output :
3331 sites = temp (OUTDIR / "all_mask_sites.vcf" ),
3432 run :
3533 import pandas as pd
34+ HEADER = ["#CHROM" , "POS" , "ID" , "REF" , "ALT" , "QUAL" , "FILTER" , "INFO" ]
3635 (
3736 pd .concat (
38- [pd .read_table (path , sep = "\t " , comment = "#" , names = params . header ) for path in input ],
37+ [pd .read_table (path , sep = "\t " , comment = "#" , names = HEADER , dtype = { "POS" : "int64" } ) for path in input ],
3938 axis = "rows" ,
4039 ignore_index = True
4140 )
42- .drop_duplicates (subset = ("#CHROM" , "POS" , "FILTER" ), keep = "first" )
43- .sort_values (list ( params . header ) )
44- .to_csv (output .sites , sep = "\t " , index = False )
41+ .drop_duplicates (subset = ("#CHROM" , "POS" , "FILTER" ), keep = "first" )
42+ .sort_values (by = [ "#CHROM" , "POS" ] )
43+ .to_csv (output .sites , sep = "\t " , index = False )
4544 )
4645
4746
@@ -52,7 +51,7 @@ rule extract_afwdist_variants:
5251 position_col = "POS" ,
5352 sequence_col = "ALT" ,
5453 frequency_col = "ALT_FREQ" ,
55- mask_class = ["mask" ],
54+ mask_class = ["mask" , "fail_site" ],
5655 input :
5756 variants = OUTDIR / f"{ OUTPUT_NAME } .variants.tsv" ,
5857 mask_vcf = OUTDIR / "all_mask_sites.vcf" ,
0 commit comments