Mercurial > repos > mheinzl > variant_analyzer2
comparison mut2sscs.py @ 43:d21960b45a6b draft
planemo upload for repository https://github.com/Single-Molecule-Genetics/VariantAnalyzerGalaxy/tree/master/tools/variant_analyzer commit ee4a8e6cf290e6c8a4d55f9cd2839d60ab3b11c8
| author | mheinzl |
|---|---|
| date | Tue, 02 Mar 2021 15:32:41 +0000 |
| parents | 84a1a3f70407 |
| children | 6ccff403db8a |
comparison
equal
deleted
inserted
replaced
| 42:da224c392a54 | 43:d21960b45a6b |
|---|---|
| 9 and extracts all tags of reads that carry the mutation. | 9 and extracts all tags of reads that carry the mutation. |
| 10 Calculates statistics about number of ab/ba/duplex per mutation. | 10 Calculates statistics about number of ab/ba/duplex per mutation. |
| 11 | 11 |
| 12 ======= ========== ================= ================================ | 12 ======= ========== ================= ================================ |
| 13 Version Date Author Description | 13 Version Date Author Description |
| 14 2.0.0 2020-10-30 Gundula Povysil - | 14 0.2.1 2019-10-27 Gundula Povysil - |
| 15 ======= ========== ================= ================================ | 15 ======= ========== ================= ================================ |
| 16 | 16 |
| 17 USAGE: python mut2sscs.py DCS_Mutations.tabular SSCS.bam SSCS_counts.json | 17 USAGE: python mut2sscs.py DCS_Mutations.tabular SSCS.bam SSCS_counts.json |
| 18 | 18 |
| 19 """ | 19 """ |
| 23 import argparse | 23 import argparse |
| 24 import json | 24 import json |
| 25 import os | 25 import os |
| 26 import sys | 26 import sys |
| 27 | 27 |
| 28 import numpy as np | |
| 28 import pysam | 29 import pysam |
| 29 from cyvcf2 import VCF | 30 from cyvcf2 import VCF |
| 30 | 31 |
| 31 | 32 |
| 32 def make_argparser(): | 33 def make_argparser(): |
| 53 | 54 |
| 54 if os.path.isfile(file2) is False: | 55 if os.path.isfile(file2) is False: |
| 55 sys.exit("Error: Could not find '{}'".format(file2)) | 56 sys.exit("Error: Could not find '{}'".format(file2)) |
| 56 | 57 |
| 57 # read SSCS bam file | 58 # read SSCS bam file |
| 59 # pysam.index(file2) | |
| 58 bam = pysam.AlignmentFile(file2, "rb") | 60 bam = pysam.AlignmentFile(file2, "rb") |
| 59 | 61 |
| 60 # get tags | 62 # get tags |
| 61 mut_pos_dict = {} | 63 mut_pos_dict = {} |
| 62 ref_pos_dict = {} | 64 ref_pos_dict = {} |
| 64 for variant in VCF(file1): | 66 for variant in VCF(file1): |
| 65 chrom = variant.CHROM | 67 chrom = variant.CHROM |
| 66 stop_pos = variant.start | 68 stop_pos = variant.start |
| 67 #chrom_stop_pos = str(chrom) + "#" + str(stop_pos) | 69 #chrom_stop_pos = str(chrom) + "#" + str(stop_pos) |
| 68 ref = variant.REF | 70 ref = variant.REF |
| 69 alt = variant.ALT[0] | 71 if len(variant.ALT) == 0: |
| 72 continue | |
| 73 else: | |
| 74 alt = variant.ALT[0] | |
| 70 chrom_stop_pos = str(chrom) + "#" + str(stop_pos) + "#" + ref + "#" + alt | 75 chrom_stop_pos = str(chrom) + "#" + str(stop_pos) + "#" + ref + "#" + alt |
| 71 | 76 |
| 72 if len(ref) == len(alt): | 77 if len(ref) == len(alt): |
| 78 | |
| 73 for pileupcolumn in bam.pileup(chrom, stop_pos - 1, stop_pos + 1, max_depth=1000000000): | 79 for pileupcolumn in bam.pileup(chrom, stop_pos - 1, stop_pos + 1, max_depth=1000000000): |
| 74 if pileupcolumn.reference_pos == stop_pos: | 80 if pileupcolumn.reference_pos == stop_pos: |
| 75 count_alt = 0 | 81 count_alt = 0 |
| 76 count_ref = 0 | 82 count_ref = 0 |
| 77 count_indel = 0 | 83 count_indel = 0 |
| 129 json.dump((mut_pos_dict, ref_pos_dict), f) | 135 json.dump((mut_pos_dict, ref_pos_dict), f) |
| 130 | 136 |
| 131 | 137 |
| 132 if __name__ == '__main__': | 138 if __name__ == '__main__': |
| 133 sys.exit(mut2sscs(sys.argv)) | 139 sys.exit(mut2sscs(sys.argv)) |
| 140 |
