Открытие файла python с помощью метода readlines () - PullRequest
0 голосов
/ 22 ноября 2018

Папка с этим проектом содержит простой текстовый файл с последовательностью ДНК в формате fasta ('MYH7.fasta').

Заполните ячейку ниже, чтобы открыть и прочитать файл, используя метод readlines ()и сохранить последовательность в строку с именем DNAsequence.

NB. Заполняемые части обозначены «...».Другие части не должны быть изменены.

inFile = ...

DNAsequence = ''

for ... in ...:

 if not(">" in Line):

if (len(Line) > 0):

 DNAsequence = DNAsequence + Line

print(DNAsequence)

print(len(DNAsequence))

1 Ответ

0 голосов
/ 23 ноября 2018

Я подозреваю, что ответ, который они ищут -

inFile = open("MYH7.fasta", "r").readlines()

В Perl конкатенационный код является стандартным (пример ниже).Я не уверен здесь, потому что inFile.readlines () должен создать массив, основанный на возвратах каретки, а неизменяемый код в вашем вопросе не позволяет использовать его функциональность.Следующий код отвечает на ваш вопрос, оставляя дескриптор файла открытым, и опускает readlines ().

#!/usr/local/bin/python3
inFile = open("MYH7.fasta", "r")

DNAsequence = ''

for Line in inFile:
    if not(">" in Line):
        if (len(Line) > 0):
            DNAsequence = DNAsequence + Line

print(DNAsequence)

print(len(DNAsequence))

Версия Perl показывает, как несколько команд могут быть объединены в одну строку.

#!/usr/bin/perl
my $DNAsequence;
open (IN, "<MYH7.fasta");
while (my $line = <IN>){
    chomp $line;
    next if $line =~ m/>/;
    $line =~ m/[ACGT]{10}/i ? $DNAsequence .= $line : next;
   }
close IN;
print $DNAsequence, "\n", length($DNAsequence) . " and Python s\*\*ks\n";

Входной файл MYH7.fasta будет иметь формат

>example_sequence
ACGCGTAGACGTATAG

Я думаю, что в вашем коде есть ошибка, потому что если в последовательности присутствуют возврат каретки, они будут перенесены в переменную DNAsequence.В Perl они удаляются с помощью "chomp" или могут быть явно удалены с помощью $ _ = ~ s / \ n // (или в этом случае, например, $ line = ~ s / \ n //;).Наличие \ n может усложнить последующий анализ.

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