2013-06-14 3 views
0

j'ai cette chaînechaînes d'une chaîne en python

str = CTGGCATAACAAGACAAAAACAAAAGCAATAAATGCTGAAAAAACAAAATGCCGTGATCGTTTGTAATACTGGAACATAGTCATGATGAATGAAGGTTTCTGAACCTGAAGAACGACCTGAAAAAGTCAAACCGCAAGAATATCACGACGCAGTGAACCAGAATAGCAACGACGAAAATGTCCAGGAAAAATCCTGGAGTCAGATTCAGGGTTATTCGTTAGTGGCAGGATTACGAAGCGTGGGGCACAGGAGATACATCTCCAGTAAGATGGCAACGTAATCGCGGGCTTCTTTTTTAAGATCAAAAGATTGCGGGGCAAAGAGCCAGTTTTCCATCAGGCCGGAAATATAGCCGCGCATAATAATTGCTGCGCGACGCGTCATTAAATCCGCAGGCAACATTTTCGCTTCAATACAATGTTTTAACGTTTGTTCTATACGGTCATAACTTTCCAGACAGAGATTACGTTGTGCCTGTTGCACAACAGCCATTTCTCCGACAAATTCGCATTTGTGGAATATAATCTCCATCAATAATCGACGCCGTTCTTCTGTCACCGTGGATTCAAGAACATGAATTAATATCTCTCTTAATACTGAGAGTGGATCGCCAGGGAATTTTGCCTGATACTCAAGCTCTAGTTCACCAATATTGGATTCTGACAGTTCCCAGATCTCACTGAACAAATCCGACTTGTCTTTAAAATGCCAGTAGATTGCACCGCGCGTAACGCCAGCTGCTTTTGCAATCTCGCCCAGCGAGGTGGATGATACCCCCTGCTGTGAGAAAAGACGTAGAGCCACATCGAGGATGTGTTGGCGCGTTTCTTGCGCTTCTTGTTTGGTTTTTCGTGCCATATGTTCGTGAATTTACAGGCGTTAGATTTACATACATTTGTGAATGTATGTACCATAGCACGACGATAATATAAACGCAGCAATGGGTTTATTAACTTTTGACCATTGACCAATTTGAAATCGGACACTCGAGGTTTACATA 

Je voudrais couper cette chaîne dans plusieurs sous-chaînes comme str [00:19] str [01:20] str [02:21] str [3:22] ..... etc jusqu'à la fin.

+3

Alors qu'avez-vous essayé jusqu'à présent avec votre code? :) – summea

+0

Juste par curiosité, comment allez-vous continuer à traiter cette séquence d'ADN avec Python? Je ne l'ai jamais utilisé pour la bioinformatique moi-même;) –

+0

Voulez-vous que toutes les sous-chaînes soient de longueur == 19? –

Répondre

1
chopped_str = [] 
for i in range(0, len(str)-19): 
    chopped_str.append(str[i:i+19]) 
3

Utilisez le découpage de la chaîne:

>>> strs = "CTGGCATAACAAGACAAAAACAAAAGCAATAAATGCTGAAAAAACAAAATGCCGTGATCGTTTGTAATACTGGAACATAGTCATGATGAATGAAGGTTTCTGAACCTGAAGAACGACCTGAAAAAGTCAAACCGCAAGAATATCACGACGCAGTGAACCAGAATAGCAACGACGAAAATGTCCAGGAAAAATCCTGGAGTCAGATTCAGGGTTATTCGTTAGTGGCAGGATTACGAAGCGTGGGGCACAGGAGATACATCTCCAGTAAGATGGCAACGTAATCGCGGGCTTCTTTTTTAAGATCAAAAGATTGCGGGGCAAAGAGCCAGTTTTCCATCAGGCCGGAAATATAGCCGCGCATAATAATTGCTGCGCGACGCGTCATTAAATCCGCAGGCAACATTTTCGCTTCAATACAATGTTTTAACGTTTGTTCTATACGGTCATAACTTTCCAGACAGAGATTACGTTGTGCCTGTTGCACAACAGCCATTTCTCCGACAAATTCGCATTTGTGGAATATAATCTCCATCAATAATCGACGCCGTTCTTCTGTCACCGTGGATTCAAGAACATGAATTAATATCTCTCTTAATACTGAGAGTGGATCGCCAGGGAATTTTGCCTGATACTCAAGCTCTAGTTCACCAATATTGGATTCTGACAGTTCCCAGATCTCACTGAACAAATCCGACTTGTCTTTAAAATGCCAGTAGATTGCACCGCGCGTAACGCCAGCTGCTTTTGCAATCTCGCCCAGCGAGGTGGATGATACCCCCTGCTGTGAGAAAAGACGTAGAGCCACATCGAGGATGTGTTGGCGCGTTTCTTGCGCTTCTTGTTTGGTTTTTCGTGCCATATGTTCGTGAATTTACAGGCGTTAGATTTACATACATTTGTGAATGTATGTACCATAGCACGACGATAATATAAACGCAGCAATGGGTTTATTAACTTTTGACCATTGACCAATTTGAAATCGGACACTCGAGGTTTACATA" 
>>> substrings = [strs[i:i+19] for i in xrange(len(strs))] 
>>> substrings 
['CTGGCATAACAAGACAAAA', 'TGGCATAACAAGACAAAAA', 'GGCATAACAAGACAAAAAC',...] 
+0

Mais ne reviendrait-il pas des chaînes de plus petite longueur (moins de 19) à la fin? –

+0

@AnkurAnkan J'ai demandé à l'OP à ce sujet, si c'est le cas, alors votre réponse est correcte. –

+0

merci cela aide – user2486984

1

Si vous recherchez d'extraire toutes les séquences de 19 nucléotides de la chaîne ce sera le faire:

>>> SEQ_LEN = 20 
>>> [strs[i:i+SEQ_LEN] for i in xrange(len(strs)-SEQ_LEN)] 

Cependant, il est peu mémoire efficace puisque si produira la liste de toutes les sous-séquences. Pourquoi est-ce?


Une autre approche pour le traitement de chaque sous-séquence de nucléotides N pourrait être:

for seq in (strs[i:i+SEQ_LEN] for i in xrange(len(strs)-SEQ_LEN)): 
    do_something_with(seq) 

Pour votre problème, do_something_with sera la plupart du temps mise à jour le PWM avec les positions de nucléotides. Si vous avez des difficultés avec cela, n'hésitez pas à poster une autre question;)

+0

J'ai besoin de toutes les séquences, parce que je veux tester ces séquences avec une matrice (pwm) et calculer un score avec chacune, et une de ces séquences est un vrai positif et je veux connaître le score avec tous les autres, puis classffy – user2486984

+0

Je ne sais pas si la séquence que vous avez postée dans votre question est la "vraie" - mais pour des séquences (beaucoup) plus longues, il faudrait plus de mémoire pour traiter les sous-séquences une à une pour construire le PWM - - au lieu de tous les extraire d'abord. –