Сопоставление элементов в списке значений в словаре и извлечение совпадений из другого файла - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь сравнить некоторые идентификаторы OTU со значениями в моем словаре с заголовками в файле и создать отдельный файл для каждого ключа в словаре, если значение соответствует OTU в шапке. У меня есть следующий файл и файл:

  1. Словарь с некоторыми ключами и списком элементов в качестве значений.

header_dict = {'nem.35_Desmoscolex': ['OTU134265,1.0,CL:0.730', 'OTU133750,1.0,CL:0.770', 'OTU129715,1.0,CL:0.750', 'OTU121577,1.0,CL:0.720', 'OTU100169,1.0,CL:0.810', 'AY854235.1.1409,1.0,CL:1.000'], 'nem.153_Spirinia': ['OTU269240,8287.0,CL:1.000', 'OTU175662,1685.0,CL:1.000', 'OTU12936,882.0,CL:1.000', 'OTU14847,318.0,CL:0.850']})

  1. Файл, содержащий заголовок и последовательность ДНК для каждого заголовка, называемый repfile.

->OTU12936 TGTAGTAGCCGTTTCTCAGGCTGCTTCTC ->OTU133750 TGTGGTAGCCGTTTCTCAGGCTCCCTCTC ->OTU134265 TGTAGTAGCCGTTTCTCAGGCTGCTTCTC ->OTU99971 TGTGGTAGCTGTTTCTCAGGCTCCCTCT

  1. Пока что я написал

repfile = open(args.reps, "r") for key in header_dict: print(key) outFile = open(os.path.join(args.output, key + ".fna"), "w") #outFile.write("{0}".format(key)) for value in header_dict[key]: print(value) for eachLine in repfile: eachLine = eachLine.rstrip() flag = False if eachLine.startswith(">"): if value.split(",")[0] == eachLine.split(" ")[0][1:]: outFile.write("{0} {1}".format(eachLine, value)) flag = True else: if flag: outFile.write("{0}\n".format(eachLine))

Мои outFiles либо пусты, либо содержат только одну последовательность. Я не могу найти глюк. Любые предложения, пожалуйста?

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