Mercurial > repos > artbio > varscan_vaf
diff varscan_vaf.py @ 0:0b6ec297a6bc draft default tip
planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/master/tools/varscan_vaf commit ff9426700b78da43ad64bf4905d358ee4986127b
author | artbio |
---|---|
date | Mon, 28 Nov 2022 21:59:34 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/varscan_vaf.py Mon Nov 28 21:59:34 2022 +0000 @@ -0,0 +1,56 @@ +#!/usr/bin/python3 + +import argparse + + +def Parser(): + the_parser = argparse.ArgumentParser() + the_parser.add_argument( + '--input', action="store", type=str, + help="varscan vcf file with normal and tumor genotypes \ + (columns 10 and 11)") + the_parser.add_argument( + '--output', action="store", type=str, + help="vcf with computed VAFs") + args = the_parser.parse_args() + return args + + +def main(input, output): + with open(input, 'r') as f: + myinput = f.read() + mylines = myinput.split('\n') + entete = [i for i in mylines[:-1] if i[0] == '#'] + variant = [i for i in mylines[:-1] if i[0] != '#'] + out = open(output, 'w') + out.write('\n'.join(entete[:-1]) + '\n') + out.write('##FORMAT=<ID=VAF,Number=R,Type=float,Description="Variant' + 'Allele Frequency">\n') + out.write(entete[-1] + '\n') + for i in variant: + fields = i.split('\t')[9:11] + af_normal = fields[0].split(':')[3] + vac_normal = af_normal.split(',') + af_tumor = fields[1].split(':')[3] + vac_tumor = af_tumor.split(',') + vaf_normal = int( + vac_normal[1]) / (int(vac_normal[0]) + int(vac_normal[1])) + vaf_tumor = int( + vac_tumor[1]) / (int(vac_tumor[0]) + int(vac_tumor[1])) + normal_list = fields[0].split(':') + normal_list.append(f'{vaf_normal:.3f}') + tumor_list = fields[1].split(':') + tumor_list.append(f'{vaf_tumor:.3f}') + normal_string = ':'.join(normal_list) + tumor_string = ':'.join(tumor_list) + fields = i.split('\t')[0:9] + fields[8] += ':VAF' + fields.append(normal_string) + fields.append(tumor_string) + out.write('\t'.join(fields) + '\n') + out.close() + + +if __name__ == "__main__": + args = Parser() + main(args.input, args.output)