Использование файла .fasta для вычисления относительного содержания последовательностей - PullRequest
1 голос
/ 15 марта 2012

Так что я, будучи «нубом», который недавно познакомился с программированием через Perl, я все еще привыкаю ко всему этому. У меня есть файл .fasta, который я должен использовать, хотя я не уверен, смогу ли я открыть его или мне нужно работать с ним «вслепую», так сказать.

В любом случае, файл, который у меня есть, содержит последовательности ДНК для трех генов, записанные в этом формате .fasta.

Видимо, это что-то вроде этого:

>label
sequence
>label
sequence
>label
sequence

Моя цель - написать скрипт для открытия и чтения файла, который я уже освоил, но я должен прочитать каждую последовательность, вычислить относительное количество 'G' и 'C' в каждой последовательности и затем я должен записать в файл с разделителями TAB имена генов и их содержание «G» и «C».

Кто-нибудь сможет дать какое-нибудь руководство? Я не уверен, что такое файл с разделителями TAB, и я все еще пытаюсь выяснить, как открыть файл .fasta, чтобы увидеть содержимое. До сих пор я работал с файлами .txt, которые я могу легко открыть, но не .fasta.

Я прошу прощения за звучание совершенно сбитым с толку. Буду признателен за ваше терпение. Я не такой, как вы, профи !!

Ответы [ 3 ]

2 голосов
/ 15 марта 2012

Советую проверить ссылки ниже:

fast perl на stackoverflow

BioPerl HowTo

Авария в Perl и ДНК

0 голосов
/ 07 июня 2014

Вот подход с использованием утилиты 'awk', которую можно использовать из командной строки. Следующая программа выполняется путем указания ее пути и использования awk -f <path> <sequence file>

#NR>1 means only look at lines above 1 because you said the sequence starts on line 2 
NR>1{
#this for-loop goes through all bases in the line and then performs operations below:
    for (i=1;i<=length;i++)
#for each position encountered, the variable "total" is increased by 1 for total bases        
       total++
    } 
    {
    for (i=1;i<=length;i++)
#if the "substring" i.e. position in a line == c or g upper or lower (some bases are
#lowercase in some fasta files), it will carry out the following instructions:
        if(substr($0,i,1)=="c" || substr($0,i,1)=="C")
#this increments the c count by one for every c or C encountered, the next if statement does
#the same thing for g and G:            
            c++; else
        if(substr($0,i,1)=="g" || substr($0,i,1)=="G")
            g++
    }
    END{
#this "END-block" prints the gene name and C, G content in percentage, separated by tabs       
        print "Gene name\tG content:\t"(100*g/total)"%\tC content:\t"(100*c/total)"%"
    }
0 голосов
/ 15 марта 2012

Я понимаю, что это сбивает с толку, но вы действительно должны попытаться ограничить свой вопрос одной конкретной проблемой, см. https://stackoverflow.com/faq#questions

Я понятия не имею, что такое файл ".fasta"или 'G' и 'C' - это ... но это, вероятно, не имеет значения.

Обычно:

  • Открыть входной файл

  • Чтение и анализ данных.Если это какой-то странный формат, который вы не можете проанализировать, отправляйтесь на поиски модуля http://metacpan.org.Если вам повезет, кто-то уже выполнил для вас сложную часть.

  • Вычислите все, что вы пытаетесь вычислить

  • Печать на экран(стандартный выход) или другой файл.

Файл "TAB-delimite" - это файл со столбцами (например, в Excel), где каждый столбец разделен вкладкой ("\ t")персонаж.Как сказал бы быстрый поиск в google или stackoverflow ..

...