File: test_cigar-utils.R

package info (click to toggle)
r-bioc-genomicalignments 1.0.6-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 2,980 kB
  • ctags: 54
  • sloc: ansic: 1,493; makefile: 4; sh: 3
file content (136 lines) | stat: -rw-r--r-- 4,675 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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
###

test_cigarRangesAlongReferenceSpace <- function()
{
    cigar <- c("30M5000N10M", "50M4S", "90=10X5I50M10D40M", "18M10I22M", "99I")
    pos <- c(101, 201, 1001,  301, 2001)
    seqlevels <- c("chr2", "chr6")
    rname <- factor(c("chr6", "chr6", "chr2", "chr6", "chr2"),
                    levels=seqlevels)

    ops <- c("M", "=", "X", "I", "D")
    current <- as.list(cigarRangesAlongReferenceSpace(cigar, pos=pos, f=rname,
                                                      ops=ops))
    ir2 <- IRanges(start=c(1001, 1091, 1101, 1101, 1151, 1161, 2001),
                   end=c(1090, 1100, 1100, 1150, 1160, 1200, 2000))
    ir6 <- IRanges(start=c(101, 5131, 201, 301, 319, 319),
                   end=c(130, 5140, 250, 318, 318, 340))
    target <- list(chr2=ir2, chr6=ir6)
    checkIdentical(target, current)

    current <- as.list(cigarRangesAlongReferenceSpace(cigar, pos=pos, f=rname,
                                                      ops=ops,
                                                      reduce.ranges=TRUE))
    ir2b <- c(reduce(ir2[1:6]), reduce(ir2[7]))
    ir6b <- c(reduce(ir6[1:2]), reduce(ir6[3]), reduce(ir6[4:6]))
    target <- list(chr2=ir2b, chr6=ir6b)
    checkIdentical(target, current)

    current <- as.list(extractAlignmentRangesOnReference(cigar, pos=pos,
                                                         f=rname))
    checkIdentical(target, current)

    current <- as.list(cigarRangesAlongReferenceSpace(cigar, pos=pos, f=rname,
                                                      ops=setdiff(ops, "D")))
    ir2 <- ir2[-5]
    target <- list(chr2=ir2, chr6=ir6)
    checkIdentical(target, current)

    current <- as.list(cigarRangesAlongReferenceSpace(cigar, pos=pos, f=rname,
                                                      ops=setdiff(ops, "D"),
                                                      reduce.ranges=TRUE))
    ir2 <- c(reduce(ir2[1:5]), reduce(ir2[6]))
    ir6 <- c(reduce(ir6[1:2]), reduce(ir6[3]), reduce(ir6[4:6]))
    target <- list(chr2=ir2, chr6=ir6)
    checkIdentical(target, current)

    current <- as.list(extractAlignmentRangesOnReference(cigar, pos=pos,
                                                         drop.D.ranges=TRUE,
                                                         f=rname))
    checkIdentical(target, current)
}

test_cigarQNarrow <- function()
{
    cigar <- c("25M4D10M", "6S17M6I3M3S")

    ans <- cigarQNarrow(cigar)
    ans0 <- cigar
    attr(ans0, "rshift") <- c(0L, 0L)
    checkIdentical(ans, ans0)

    ans <- cigarQNarrow(cigar, start=3, end=-3)
    ans0 <- c("23M4D8M", "4S17M6I3M1S")
    attr(ans0, "rshift") <- c(2L, 0L)
    checkIdentical(ans, ans0)

    ans <- cigarQNarrow(cigar, start=7, end=-4)
    ans0 <- c("19M4D7M", "17M6I3M")
    attr(ans0, "rshift") <- c(6L, 0L)
    checkIdentical(ans, ans0)

    ans <- cigarQNarrow(cigar, start=8, end=-5)
    ans0 <- c("18M4D6M", "16M6I2M")
    attr(ans0, "rshift") <- c(7L, 1L)
    checkIdentical(ans, ans0)

    ans <- cigarQNarrow(cigar, start=25)
    ans0 <- c("1M4D10M", "5I3M3S")
    attr(ans0, "rshift") <- c(24L, 17L)
    checkIdentical(ans, ans0)

    ans <- cigarQNarrow(cigar, start=26)
    ans0 <- c("10M", "4I3M3S")
    attr(ans0, "rshift") <- c(29L, 17L)
    checkIdentical(ans, ans0)

    ans <- cigarQNarrow(cigar, start=26, end=-8)
    ans0 <- c("3M", "3I")
    attr(ans0, "rshift") <- c(29L, 17L)
    checkIdentical(ans, ans0)

    ans <- cigarQNarrow(cigar, start=26, end=-10)
    ans0 <- c("1M", "1I")
    attr(ans0, "rshift") <- c(29L, 17L)
    checkIdentical(ans, ans0)
}

test_cigarNarrow <- function()
{
    cigar <- c("25M4D10M", "6S17M6I3M3S")

    ans <- cigarNarrow(cigar)
    ans0 <- c("25M4D10M", "17M6I3M")
    attr(ans0, "rshift") <- c(0L, 0L)
    checkIdentical(ans, ans0)

    ans <- cigarNarrow(cigar, start=3, end=-3)
    ans0 <- c("23M4D8M", "15M6I1M")
    attr(ans0, "rshift") <- c(2L, 2L)
    checkIdentical(ans, ans0)

    ans <- cigarNarrow(cigar, start=7, end=-4)
    ans0 <- c("19M4D7M", "11M")
    attr(ans0, "rshift") <- c(6L, 6L)
    checkIdentical(ans, ans0)

    ans <- cigarNarrow(cigar, start=8, end=-5)
    ans0 <- c("18M4D6M", "9M")
    attr(ans0, "rshift") <- c(7L, 7L)
    checkIdentical(ans, ans0)

    ans <- cigarNarrow(cigar[1], start=26, end=-10)
    ans0 <- "1M"
    attr(ans0, "rshift") <- 29L
    checkIdentical(ans, ans0)
}

test_refLocs2queryLocs <- function() {
  cigar <- "66S42M2I20M8I18D15M43243N5M1D38M1D85M1D115M139S"
  pos <- 525842L
  ref <- 43425L + pos - 1L
  query <- 238L
  ans <- .Call("ref_locs_to_query_locs", ref, cigar, pos, FALSE,
               PACKAGE="GenomicAlignments")
  checkIdentical(ans, query)
}