I have this rev_comp() function
>>> def rev_comp(sequence):
... def reverse(s):
... letters = list(s)
... letters.reverse()
... return ''.join(letters)
... def complement(s):
... basecomplement = {'A': 'T', 'C': 'G', 'T': 'A', 'G': 'C', 'a': 't', 'c': 'g', 't': 'a', 'g': 'c'}
... letters = list(s)
... letters = [basecomplement[base] for base in letters]
... return ''.join(letters)
... reverse(sequence)
... complement(sequence)
... return sequence
...
exon is the string I want to reverse and compliment.
essentially it should reverse exon to ‘gtacgtgtacgt‘ then replace every instance of:
g -> c, t -> a, c -> g, and a ->t
rev_comp(exon) should return ‘catgcacatgca’
>>> exon = "tgcatgtgcatg"
>>> rev_comp(exon)
'tgcatgtgcatg'
I ran it with pdb and it spit out all this:
>>> pdb.run(rev_comp(exon))
> <string>(1)<module>()->None
(Pdb) n
NameError: "name 'tgcatgtgcatg' is not defined"
> <string>(1)<module>()->None
(Pdb) n
--Return--
> <string>(1)<module>()->None
(Pdb) >>> def rev_comp(sequence):
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) ... def reverse(s):
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) ... letters = list(s)
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) ... letters.reverse()
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) ... return ''.join(letters)
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) ... def complement(s):
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) ... basecomplement = {'A': 'T', 'C': 'G', 'T': 'A', 'G': 'C', 'a': 't', 'c': 'g', 't': 'a', 'g': 'c'}
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) ... letters = list(s)
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) ... letters = [basecomplement[base] for base in letters]
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) ... return ''.join(letters)
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) ... reverse(sequence)
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) ... complement(sequence)
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) ... return sequence
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) ...
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) >>> exon = "tgcatgtgcatg"
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) >>> rev_comp(exon)
*** SyntaxError: invalid syntax (<stdin>, line 1)
(Pdb) 'tgcatgtgcatg'
'tgcatgtgcatg'
(Pdb) n
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/pdb.py", line 1238, in run
Pdb().run(statement, globals, locals)
File "/usr/lib/python2.7/bdb.py", line 387, in run
exec cmd in globals, locals
File "<string>", line 1, in <module>
NameError: name 'tgcatgtgcatg' is not defined
which means little to me.
Can anyone help me figure out why it thinks the sequence I’m passing in is not defined?
You’re ignoring the return values of
reverseandcomplement. Try this: