Я пытаюсь сравнить некоторые идентификаторы OTU со значениями в моем словаре с заголовками в файле и создать отдельный файл для каждого ключа в словаре, если значение соответствует OTU в шапке. У меня есть следующий файл и файл:
- Словарь с некоторыми ключами и списком элементов в качестве значений.
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']})
- Файл, содержащий заголовок и последовательность ДНК для каждого заголовка, называемый repfile.
->OTU12936
TGTAGTAGCCGTTTCTCAGGCTGCTTCTC
->OTU133750
TGTGGTAGCCGTTTCTCAGGCTCCCTCTC
->OTU134265
TGTAGTAGCCGTTTCTCAGGCTGCTTCTC
->OTU99971
TGTGGTAGCTGTTTCTCAGGCTCCCTCT
- Пока что я написал
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 либо пусты, либо содержат только одну последовательность. Я не могу найти глюк. Любые предложения, пожалуйста?