/
tests.py
90 lines (74 loc) · 2.19 KB
/
tests.py
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
"""Testing functions to verify local .2bit file usage is equivalent
to UCSC Genome Browser usage.
"""
import uuid
from pclass import Primer
import sequenceutils
import fileutils
import genomebrowser
import webprimer3
__author__ = "Joe Carli"
__copyright__ = "Copyright 2014"
__credits__ = ["Joe Carli"]
__license__ = "GPL"
__version__ = "0.0.1"
__maintainer__ = "Joe Carli"
__email__ = "jrcarli@gmail.com"
__status__ = "Development"
def testGetSequence(genomeFilePath):
chrom = 'chr1'
seq = '808984'
seqlen = 1
seqStart = int(seq) - seqlen - 500
seqEnd = seqStart + seqlen + 1000
genome = sequenceutils.loadGenome(genomeFilePath)
seqA = sequenceutils.getSequence(genome,chrom,seqStart,seqEnd)
seqA = seqA.upper()
print seqA
print "~"*50
# get sesion id
print "Getting sesion id ..."
hgsid = genomebrowser.gb_getSessionId()
print hgsid
if hgsid == "":
print "blank hgsid. quitting"
sys.exit(1)
seqB = genomebrowser.gb_getSequence(hgsid)
print seqB
print "~"*50
if seqA == seqB:
print "Sequences match!"
else:
print "Sequences do not match :("
bseqA = sequenceutils.bracketSequence(seqA)
bseqB = sequenceutils.bracketSequence(seqB)
if bseqA != bseqB:
print "Bracketed sequences do not match!"
sys.exit(1)
primerA = webprimer3.getPrimer(bseqA,chrom,int(seq))
primerB = webprimer3.getPrimer(bseqB,chrom,int(seq))
if primerA.fSeq != primerB.fSeq \
or primerA.rSeq != primerB.rSeq \
or primerA.size != primerB.size:
print "Primer mismatch"
print "primerA:"
print primerA
print "primerB:"
print primerB
sys.exit(1)
else:
print "Primer match"
print primerA
primerList = [primerA,primerB]
outfile = "/tmp/"+str(uuid.uuid4())+".csv"
fileutils.primersToCsv(primerList,outfile)
print "Wrote %s"%(outfile)
def getSequence():
with open('sequence.txt','rb') as f:
seq = f.read()
return seq
if __name__=="__main__":
genomePath = 'genomes'
genomeFile = 'hg19.2bit'
genomeFilePath = "/".join([genomePath,genomeFile])
testGetSequence(genomeFilePath)