File: ca_test.py

package info (click to toggle)
sra-sdk 2.10.9%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 38,576 kB
  • sloc: ansic: 211,129; cpp: 54,855; perl: 7,788; sh: 6,988; makefile: 5,174; python: 3,840; java: 2,363; yacc: 786; lex: 416; ruby: 329; lisp: 268; xml: 55
file content (80 lines) | stat: -rwxr-xr-x 2,432 bytes parent folder | download
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/python3
from sam import *

def dump( acc ) :
    print("%s.SEQ"%(acc))
    vdb_dump( acc, "-C SPOT_ID,READ -l0 -f tab" )
    print("%s.PRIM"%( acc ))
    vdb_dump( acc, "-T PRIMARY_ALIGNMENT -C ALIGN_ID,READ -l0, -f tab" )
    print("%s.SEC"%( acc ))
    vdb_dump( acc, "-T SECONDARY_ALIGNMENT -C ALIGN_ID,READ -l0 -f tab" )

REF   = "NC_011752.1"
ALIAS = "c1"
CSRA1 = "AFTER_BAM_LOAD.CSRA"
CSRA2 = "AFTER_SRA_SORT.CSRA"

def load_sort( L ) :
    R1 = bam_load( L, CSRA1, "--make-spots-with-secondary -L 3 -E0 -Q0" )
    if R1 == 1 :
        print("bam-load = OK")
        R2 = sra_sort( CSRA1, CSRA2 )
        if R2 == 1 :
            print("sra-sort = OK")
        else :
            print("sra-sort = FAILED")
    else :
        print("bam-load = FAILED")
        
def load_sort_print( L ) :
    load_sort( L )
    dump( CSRA1 )
    dump( CSRA2 )


def test1() :
    print("test #1 --------------------------------------------------")
    print("...having a single recondary alignmnet without a primary it belongs to")
    A1 = make_prim( "A1", 0, REF, ALIAS, 17000, 20, "60M" )
    A2 = make_prim( "A2", 0, REF, ALIAS, 12500, 20, "50M" )
    A1.pair_with( A2 )

    A3 = make_prim( "A3", 0, REF, ALIAS, 33000, 20, "60M" )
    U1 = make_unaligned( "U1", 0, "ACTTTAGTAAGGGGTTNN" )

    A4 = make_sec( "A4", 0, REF, ALIAS, 19000, 20, "60M" )
    A4.link_to( A1 )

    A5 = make_sec( "A5", 0, REF, ALIAS, 22000, 20, "30M" )
    
    load_sort_print( [ A1, A2, A3, A4, U1, A5 ] )

# the resulting X.CSRA and S.CSRA produce errors in seq_restore_read_impl2
def test2() :
    print("test #2 --------------------------------------------------")
    print("...having a pair of a prim. and a sec. alignment")
    print("= SEQUENCE-table cannot reconstruct READ")
    A1 = make_prim( "A1", 0, REF, ALIAS, 17000, 20, "60M" )
    A2 = make_sec( "A2", 0, REF, ALIAS, 12500, 20, "50M" )
    A1.pair_with( A2 )

    load_sort_print( [ A1, A2 ] )

# the resulting X.CSRA produces errors in seq_restore_read_impl2
# but S.CSRA sefaults in vdb-dump!
def test3() :
    print("test #3 --------------------------------------------------")
    A1 = make_prim( "A1", 0, REF, ALIAS, 1000, 20, "53M" )
    A2 = make_sec( "A2", 0, REF, ALIAS, 3500, 20, "50M" )
    A1.pair_with( A2 )

    A3 = make_sec( "A3", 0, REF, ALIAS, 6800, 20, "55M" )
    A3.flags |= FLAG_NEXT_UNMAPPED

    load_sort_print( [ A3, A1, A2 ] )


test1()
test2()
test3()