2012-07-13 10 views
5

Ho cercato di eseguire una ricerca della stringa mediana per una sequenza nel genoma ACGT. Il problema che ho sta per dire AAAAAAAA a AAAAAAAC e così via fino a quando non avrò provato ogni possibile combinazione.Python Iterate attraverso i caratteri

Fondamentalmente ho iniziato a fare la forza bruta creando due elenchi, uno contenente A, C, G, T e l'altro la sequenza di 8 caratteri, e dopo ogni ricerca che itera e scambia i caratteri. Il problema è che non eseguo il test di tutte le combinazioni perché quando due iterano allo stesso tempo salta una lettera.

C'è un modo per andare AAAAAAAA - AAAAAAAC - AAAAAAAG - AAAAAAAT - AAAAAACA e così via facilmente?

+0

vedere itertools.combinations http://docs.python.org/library/itertools.html#itertools.combinations –

risposta

10

Utilizzando itertools

itertools.product("ACGT", repeat=8) 
+2

+1 Ero in ritardo. :) – Tauquir

+1

@Tauquir non eri l'unico in ritardo .. :) +1 anche da me – Levon

2

Come sopra itertools Modo d'uso,

itertools.product("ACGT", repeat=8) # will work in your case. 
1

Utilizzando la regex inverter dalla pagina Esempi pyparsing wiki, Inverti regex: [ACGT]{8}. Puoi anche provare lo online inverter at the UtilityMill, ma questo server si spegnerà durante la generazione di stringhe di 8 caratteri, ma sono riuscito a ottenere fino a 6 caratteri entro il tempo consentito.