File: vg_sim_pos_compare.py

package info (click to toggle)
vg 1.30.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 267,848 kB
  • sloc: cpp: 446,974; ansic: 116,148; python: 22,805; cs: 17,888; javascript: 11,031; sh: 5,866; makefile: 4,039; java: 1,415; perl: 1,303; xml: 442; lisp: 242
file content (33 lines) | stat: -rwxr-xr-x 1,140 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/python3

### positional comparison script useful for tagging alignments with their true position

# length.bp       unaligned.bp    known.nodes     known.bp        novel.nodes     novel.bp

import sys

threshold = int(sys.argv[1])

for line in sys.stdin:
    fields = line.split(' ')
    # every input has a true position, and if it has less than the expected number of fields we assume alignment failed
    aln_name = fields[0]
    if len(fields) != 13:
        print(aln_name, 0, 0, 0, 0, 0, 0, 0, 0, 0)
        continue
    aln_chr = fields[1]
    aln_pos = int(fields[2])
    aln_mapq = int(fields[3])
    aln_score = 0
    try: aln_score = int(fields[4])
    except: pass
    true_chr = fields[5]
    true_pos = int(fields[6])
    length = int(fields[7])
    unaligned = int(fields[8])
    known_nodes = int(fields[9])
    known_bp = int(fields[10])
    novel_nodes = int(fields[11])
    novel_bp = int(fields[12])
    aln_correct = 1 if aln_chr == true_chr and abs(true_pos - aln_pos) < threshold else 0
    print(aln_name, aln_correct, aln_mapq, aln_score, length, unaligned, known_nodes, known_bp, novel_nodes, novel_bp)