Первое, что я вижу здесь, это проблема объема. Вы вызываете линию в общем объеме, но линия доступна только в oop области действия calcG C. В python область видимости определяется идентификатором.
Теперь второе, что я вижу здесь и не понимаю, - это использование .startswith()
метода. Он будет возвращать Боллеан, а не seqID ... может быть, добавить здесь оператор if?
Еще одна последняя вещь: вы должны использовать оператор with
для открытия файла, он закроет файл для вас и дать вам генератор.
Для этого ответа я просто предлагаю вам сначала исправить исправление. Попробуйте этот код:
def main():
calcGC()
def calcGC():
with open("Sequences.fasta", 'r') as fp :
# using the enumerate here will give you both the index and the line itself. I assume here that the seqID you wanted to use is the Line index....
for seqID, line in enumerate(fp):
if line.startswith(">"):
seq = line[0:]
gc_count = float((seq.count("G") + seq.count("C"))) / len(seq) * 100
print(seqID + " " + gc_count)
main()