from Bio import SeqIO
from Bio import Seq
count = 0
sequence = []
for seq_record in SeqIO.parse(r"C:...\\drosophila.csv", 'fasta'):
if (count < 6):
sequence.append(seq_record)
print("ID: " + id(seq_record) + "\t" + "Length: " +
str("{:,d}".format(len(seq_record))))
print(repr(Seq(seq_record)) + "\n")
count += 1
Я не получаю никаких ошибок в коде во время его запуска, но я также не получаю выходных данных.
Id: chr2L Length: 23,513,712
Seq('Cgacaatgcacgacagaggaagcagaacagatatttagattgcctctcattttc...gag', SingleLetterAlphabet())
Id: chr2R Length: 25,286,936
Seq('CTCAAGATAccttctacagattatttaaagctagtgcacaacaacaataaattg...ttc', SingleLetterAlphabet())
Id: chr3L Length: 28,110,227
Seq('TAGGGAGAAATATGATCgcgtatgcgagagtagtgccaacatattgtgctcttt...tat', SingleLetterAlphabet())
Id: chr3R Length: 32,079,331
Seq('acgggaccgagtatagtaccagtacgcgaccagtacgggagcagtacggaacca...ttc', SingleLetterAlphabet())
Id: chr4 Length: 1,348,131
Seq('ttattatattattatattattatattattatattattatattattatattatta...GAA', SingleLetterAlphabet())
Id: chrM Length: 19,524
Seq('AATGAATTGCCTGATAAAAAGGATTACCTTGATAGGGTAAATCATGCAGTTTTC...ATT', SingleLetterAlphabet())
Я ожидал такого вывода.
Возможно, вы сможете решить эту проблему самостоятельно, если проработаете свою программу с помощью отладчика. См. Что такое отладчик и как он может помочь мне диагностировать проблемы? для получения дополнительной информации.
Обновил его для объекта Seq
.
Я попробую отладить его по вашему предложению @AndrewYim. Я действительно не знаю, как это сделать, так что лучше бы этому научиться
Можете ли вы поделиться своим файлом .csv и/или fasta через ссылку google.drive или любую другую общедоступную платформу для обмена файлами?
Конечно, можно сюда drive.google.com/file/d/1FN03f2rFONpsfTOQBUtnmQUWFyJpthAX/…
SeqIO.parse не может проанализировать входной файл. Если вы отлаживаете свой код, вы заметите, что цикл for никогда не вводится. Вы уверены, что ваш входной файл имеет правильный формат?
Ты прав. Я изменил файл на fa, и теперь он, по крайней мере, входит в цикл. Обновление: СПАСИБО! я изменил формат набора данных, и после удаления одной или двух ошибок ЭТО РАБОТАЕТ!
Я загрузил ваш CSV-файл и, во-первых, считаю, что SeqIO не может анализировать CSV, поэтому я преобразовал его в fasta на этом сайте . Однако я считаю, что с вашими данными что-то не так, поскольку последовательность генов отсутствует и записываются только идентификаторы генов (вы можете открыть файл CSV и убедиться в этом сами). тем не менее, вы можете получить доступ к описанию гена, используя идентификатор гена, используя внешние веб-сайты. Коды ниже выполняют вашу задачу, но я считаю, что из-за проблемы с исходным набором данных правильно печатаются только идентификаторы генов. наконец, обратите внимание, что Seq(seq_record.seq) не может быть вызван, поскольку набор данных ошибочно возвращает идентификатор гена вместо последовательности гена с помощью seq_record.seq
. Также обратите внимание, что Seq
следует импортировать из Bio.Seq
, а не из Bio
. Надеюсь, это помогло вашей работе.
from Bio import SeqIO
from Bio.Seq import Seq
sequence = []
for i, seq_record in enumerate((SeqIO.parse('drosophila.fasta', 'fasta'))):
sequence.append(seq_record)
print("ID: " + str(seq_record.id) + "\t" + "Length: " + str("{:,d}".format(len(seq_record))))
print((seq_record.seq) + "\n")
if i == 6:
break
выше распечатки:
# ID: FBgn0085804.1 Length: 13
# FBgn0085804.1
# ID: FBgn0267431.1 Length: 13
# FBgn0267431.1
# ID: FBgn0039987.1 Length: 13
# FBgn0039987.1
# ID: FBgn0058182.1 Length: 13
# FBgn0058182.1
# ID: FBgn0267430.1 Length: 13
# FBgn0267430.1
# ID: FBgn0266747.1 Length: 13
# FBgn0266747.1
# ID: FBgn0266747.1 Length: 13
# FBgn0266747.1
Большое спасибо. Я тоже подумал, что использую неправильный набор данных. Поменял на фасту и теперь работает. И да, ваш код намного чище, поэтому я попробую реализовать его.
Это хорошие новости! рад, что смог помочь.
Пожалуйста, сделайте минимально воспроизводимый пример. Вам не хватает примера содержимого CSV, а что такое
Seq
в коде?