0

私はこのrev_comp()機能を持っています

>>> 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 は、反転して補完したい文字列です。

基本的に、エクソンを ' gtacgtgtacgt' に反転し、次のすべてのインスタンスを置換する必要があります。

g -> c, t -> a, c -> g, and a ->t

rev_comp(exon)'<code>catgcacatgca'</p> を返す必要があります

>>> exon = "tgcatgtgcatg"
>>> rev_comp(exon)
'tgcatgtgcatg'

pdbで実行したところ、次のすべてが吐き出されました。

>>> 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

それは私にとってほとんど意味がありません。

私が渡しているシーケンスが定義されていないと思う理由を誰かが理解するのを手伝ってくれますか?

4

1 に答える 1

3

reverseとの戻り値を無視していますcomplement。これを試して:

sequence = reverse(sequence)
sequence = complement(sequence)
return sequence
于 2012-07-06T19:11:04.093 に答える