2016-06-01 2 views
1

Я пытаюсь сделать Участок из двух списков, один раз должен иметь время, измеренное с помощью timeit, а другое количество раз, которое я пропустил через цикл. Я получаю пустой сюжет, поэтому я понял, что что-то не так. Может ли кто-нибудь, возможно, сказать мне, где ошибка? Функции не очень важны, но я буду публиковать все это, чтобы обеспечить контекст. Вот код:Списки составления списков в Python

import random 
import timeit 
import matplotlib.pyplot as plt 

def generateSequences(n): 

    RandomSequences = [] 
    dna = ["A","G","C","T"] 
    for i in range(int(n)): 

     randseq='' 

     for i in range(50): 
      randseq+=random.choice(dna) 

     RandomSequences.append(randseq) 

    return RandomSequences 

def generatePrefixes(p, RandomSequences): 

    First20Chars = [x[:20] for x in RandomSequences] 
    RandomChoices = [] 
    for i in range(p): 
     randomPrefix = random.choice(First20Chars) 
     RandomChoices.append(randomPrefix) 

    return First20Chars, RandomChoices 

def searchReadsInList(RandomSequences, RandomChoices): 

    start_time = timeit.default_timer() 
    Matches_RS_RC = [] 
    for i in RandomChoices: 
     for j in RandomSequences: 
      if i in j: 
       Matches_RS_RC.append(j) 
    elapsed_sRL = timeit.default_timer() - start_time 
    return Matches_RS_RC, elapsed_sRL 



if __name__ == "__main__": 
    count = 10 
    while count < 1000: 
     RandomSequences = generateSequences(count) 
     First20Chars, RandomChoices = generatePrefixes(5, RandomSequences) 
     Matches_RS_RC, elapsed_sRL = searchReadsInList(RandomSequences, RandomChoices) 
     ListCounts = [] 
     ListCounts.append(count) 
     ListTime = [] 
     ListTime.append(elapsed_sRL) 
     count = count + 10 

    plt.plot(ListTime, count) 
    plt.xlabel('Time') 
    plt.ylabel('# of Reads') 
    plt.savefig("TimePlot.pdf") 
    plt.show() 
+0

Ваш списки хранить только 2 значения: [990] и [0,0012807846069335938]. Когда в сюжете используется 'plt.plot (ListTime, ListCounts)'. – Serenity

ответ

1

Я улучшить основную функцию, вы очистили списки на каждой итерации:

if __name__ == "__main__": 
    count = 10 
    ListCounts = [] 
    ListTime = [] 

    while count < 1000: 
     RandomSequences = generateSequences(count) 
     First20Chars, RandomChoices = generatePrefixes(5, RandomSequences) 
     Matches_RS_RC, elapsed_sRL = searchReadsInList(RandomSequences, RandomChoices) 
     ListCounts.append(count) 
     ListTime.append(elapsed_sRL) 
     count = count + 10 

    print ListCounts 
    print ListTime 

    plt.plot(ListTime, ListCounts) 
    plt.xlabel('Time') 
    plt.ylabel('# of Reads') 
    plt.savefig("TimePlot.pdf") 
    plt.show() 

enter image description here

Смежные вопросы