Пожалуйста, помогите мне прочитать файл genbank с диска и преобразовать его в fastta
Пожалуйста, помогите мне преобразовать последовательность GenBank в эквивалентный ей формат FASTA, используя biosmalltalk (издание Pharo). Я уже разобрался, чтобы прочитать файл GenBank с диска: | файл x y m | x:= время миллисекунды ClockValue . file:= BioFile on: (FileStream readOnlyFileNamed: BioObject testFilesDirectoryName asFileReference / 'AF165912.gbk'). m:=BioParser tokenizeMultiFasta: содержимое файла. y:= время миллисекунды ClockValue. Стенограмма открыта. Стенограмма понятна. Стенограмма шоу: м.; кр. Теперь я хочу получить его эквивалент FASTA.
1 ответ
Формат GenBank является (должен быть) читаемым человеком форматом, но на самом деле его не так просто проанализировать. Много усилий было потрачено и до сих пор в библиотеках программирования для анализа плоского формата GenBank, когда формат XML был недоступен или вообще не использовался. Одна из целей BioSmalltalk - сосредоточиться на снижении сложности, что подразумевает использование правильных инструментов. По этой причине не включен синтаксический анализатор GenBank, который рассчитывает на использование XML-формата GenBank.
Чтобы попробовать сначала установите последнюю версию BioSmalltalk в чистом Pharo 3.0, используя следующую команду:
$ pharo Pharo.image "config" "http://smalltalkhub.com/mc/hernan/BioSmalltalk" "ConfigurationOfBioSmalltalk" --printVersion --install=development
или его эквивалентность изнутри изображения:
Gofer it
smalltalkhubUser: 'hernan' project: 'BioSmalltalk';
configuration;
loadDevelopment.
Чтобы проанализировать файл в формате GenBank XML, я настоятельно рекомендую вам повторно загрузить файлы в формате XML воспроизводимым способом. Если вы загрузили свои файлы из NCBI, вы можете использовать клиент Entrez e-Utils BioSmalltalk (в настоящее время NCBI удалил опцию загрузки XML с веб-страницы):
Следующий скрипт загружает две записи GenBank в XML, фильтрует узлы по определению последовательности и строке последовательности и экспортирует их в формате FASTA. Последовательность находится в узле GBSeq_sequence.
| gbReader fastaCollection seqsWithDefs |
fastaCollection := BioFastaMultiRecord new.
gbReader := (BioEntrezClient new nuccore
uids: #(57240072 57240071);
setModeXML;
fetch) reader.
seqsWithDefs := gbReader
selectNodes: #('GBSeq_definition' 'GBSeq_sequence')
in: gbReader contents.
(seqsWithDefs at: 'GBSeq_definition') with: (seqsWithDefs at: 'GBSeq_sequence') do: [ : defs : seqs |
fastaCollection addFastaRecord: (BioFastaRecord named: defs value sequence: seqs value) ].
BioFASTAFormatter new exportFrom: fastaCollection sequences.
Если вы начинаете с Smalltalk, помните, что у вас есть чистые объекты, и почти все можно обнаружить с помощью инструментов инспектора / проводника.