python скрипт перестает работать на терминале через 1 минуту - PullRequest
0 голосов
/ 27 мая 2020

У меня проблема с моим python скриптом. Я использую Ubuntu на своей машине в качестве второй операционной системы, и я написал код python для вывода различной информации о некоторых белках. после того, как я дал мне выход для первого белка, он сильно замедляется в середине процесса для второго белка и в какой-то момент больше не реагирует. когда я набираю control + c, я получаю это сообщение:

Traceback (most recent call last):
File "testPerf.py", line 185, in <module>
uniqueDict(args.input,args.output)

File "testPerf.py", line 73, in uniqueDict

keyName = '%s_%s' %(hmm[i],cassetteId[i])

File "/home/t/anaconda3/envs/crispr-env/lib/python3.7/site-packages/pandas/core/series.py",
line 1071, in __getitem__

result = self.index.get_value(self, key)

File "/home/t/anaconda3/envs/crispr-env/lib/python3.7/site-packages/pandas/core/indexes>>/base.py", line 4708, in get_value

s = getattr(series, "_values", series)

File "/home/t/anaconda3/envs/crispr-env/lib/python3.7/site-packages/pandas/core/series.py", line 562, in _values

Часть кода, когда он останавливается, выглядит следующим образом:

 with open(crisprOutputFile, "r") as file1:
            data = pd.read_csv(file1)
            hmm  = data.HMM
            cassetteId = data.cassette_id
            list1 = data.predicted_label
            i = 0
            while i < len(hmm):
                predictedL = list1[i][7:20]
                predictedL =  predictedL.replace( ')','')
                predictedL =  predictedL.replace( ']','')
                predictedL =  predictedL.replace( "'","")
                predictedL =  predictedL.replace( ',','')
                keyName = '%s_%s' %(hmm[i],cassetteId[i])
                if keyName not in dict1:
                    dict1[keyName] = predictedL
                    i+=1

Это фрагмент кода считывает содержимое из файл с именем crisprOutputFile и пытается вывести некоторые данные в словарь, довольно просто ... Впоследствии этот словарь объединяется с некоторыми другими словарями, чтобы получить выходной словарь, содержащий данные о белках. Пожалуйста, помогите.

1 Ответ

2 голосов
/ 27 мая 2020

В данном фрагменте, если keyName находится в dict1, i не увеличивается. Если i остается неизменным, текущая итерация будет такой же, как и предыдущая итерация, поэтому она станет бесконечной l oop.

Если вы действительно хотели обновлять i на каждой итерации (что делает больше смысла), понизьте уровень интеграции i+=1 вот так

with open(crisprOutputFile, "r") as file1:
            data = pd.read_csv(file1)
            hmm  = data.HMM
            cassetteId = data.cassette_id
            list1 = data.predicted_label
            i = 0
            while i < len(hmm):
                predictedL = list1[i][7:20]
                predictedL =  predictedL.replace( ')','')
                predictedL =  predictedL.replace( ']','')
                predictedL =  predictedL.replace( "'","")
                predictedL =  predictedL.replace( ',','')
                keyName = '%s_%s' %(hmm[i],cassetteId[i])
                if keyName not in dict1:
                    dict1[keyName] = predictedL
                i+=1

Как было предложено @ run-out в комментариях, я бы рекомендовал вам использовать for l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...