[Python] Iterare una sequenza

Giuseppe Costanzi giuseppecostanzi a gmail.com
Dom 26 Nov 2017 10:20:53 CET


salve a tutti,

ho una sequenza del tipo

ACTGATCGATTACGTATAGTAGAATTCTATCATACATATATATCGATGCGTTCAT

scorrendola devo trovare una sequenza target GAATTC

ACTGATCGATTACGTATAGTA  "GAATTC"  TATCATACATATATATCGATGCGTTCAT


quindi dividere la sequenza da G, la prima lettera della sequenza target,
e calcolarmi la lunghezza dei due frammenti risultanti

ACTGATCGATTACGTATAGTAG

e di questa

GAATTCTATCATACATATATATCGATGCGTTCAT

io avrei fatto

seq = "ACTGATCGATTACGTATAGTAGAATTCTATCATACATATATATCGATGCGTTCAT"
target = "GAATTCT"

s = []

for i,base in enumerate(seq):

    s.append(base)

    if len(s)==8:

        s.pop(0)

        if ''.join(s) == target:
             print i-5
             print len(seq)-(i-5)
             break

funziona ma non e' che ne sia proprio convinto,
avete suggerimenti su come iterare la sequenza?

saluti
beppe


p.s.

e' un esercizio che ho trovato su p4b, python for biologist


"Let's start this exercise by solving the problem manually. If we look
through the
DNA sequence we can spot the EcoRI site at position 21. Here's the sequence with
the base positions labelled above and the EcoRI motif in bold:

in bold sarebbe questa GAATTCT

0123456789012345678901234567890123456789012345678901234
ACTGATCGATTACGTATAGTAGAATTCTATCATACATATATATCGATGCGTTCAT
Since the EcoRI enzyme cuts the DNA between the G and first A, we can figure out
that the first fragment will run from position 0 to position 21, and the second
fragment from position 22 to the last position, 54. Therefore the
lengths of the two
fragments are 22 and 33."


Maggiori informazioni sulla lista Python