У меня есть файл 23andMe со списком SNP в виде:
rsid chromosome position genotype rsXXXXX 1 PPPPPP CT rsXXXXX 1 PPPPPP GG
Поля разделены TAB, и каждая строка соответствует одному SNP. Для каждого SNP предоставляются четыре поля данных.
Эталонный геном представляет собой сборку 37 сборки человека (также известную как выпуск аннотаций 104).
Как мне объединить SNP в эталонный геном?
Например, возьмем первую строку в моем файле SNP:
rsXXXXX 1 PPPPPP CT
Я вижу, что мне нужно заменить нуклеотид в положении PPPPPP на хромосоме 1 эталонного генома на нуклеотид из поля генотипа, но какой нуклеотид я должен использовать? С или Т? И почему?
С чего я должен начать отсчет эталонного генома? Глядя на хромосому 1 сборки человеческой сборки 37, первые ~ 10 000 символов (исключая описание в первой строке) — это N
. Является ли первый N номером 1? например. Если бы PPPPPP было равно 100 000, заменил бы я 100 000-й символ в эталонном геноме правильным нуклеотидом из части 1 этого вопроса? Или я должен начать считать с первого символа, отличного от N, в файле fasta?
Во-первых, вам нужно знать, к какой последовательности генома относится файл SNP. Они, должно быть, упомянули референсную последовательность, которую они использовали.
Как уже упоминалось, случай CT
гетерозиготности. Если вы просто хотите отметить изменения, отбросьте остаток, который уже присутствует в эталонном геноме, и используйте другой аллель. Тем не менее, вы хотите отслеживать гаплотип, тогда вам нужно убедиться, что набор SNP происходит из одной и той же хроматиды. Это сложно - вы все еще можете узнать это для SNP, которые достаточно близки, чтобы их можно было отобразить одним считыванием, но это почти невозможно для SNP, которые достаточно хорошо разделены.
Как сказал Эндре, нужно начинать с первого нуклеотида. Тем не менее, кажется сомнительным, что вы получаете в начале хромосомы 1. Полно собранные хромосомы таких участков не имеют. Ниже приведены первые 10 строк файла fasta хромосомы 1. Посмотреть на себя.
>gi|568815364|ref|NT_077402.3| Homo sapiens chromosome 1 genomic scaffold, GRCh38 Primary Assembly HSCHR1_CTG1
TAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAAC
CCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCAACCCTAACCCTAACCCTAACCCTAACCCTAA
CCCTAACCCCTAACCCTAACCCTAACCCTAACCCTAACCTAACCCTAACCCTAACCCTAACCCTAACCCT
AACCCTAACCCTAACCCTAACCCCTAACCCTAACCCTAAACCCTAAACCCTAACCCTAACCCTAACCCTA
ACCCTAACCCCAACCCCAACCCCAACCCCAACCCCAACCCCAACCCTAACCCCTAACCCTAACCCTAACC
CTACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCCTAACCCCTAACCCTAACCCTAACCCTA
ACCCTAACCCTAACCCTAACCCCTAACCCTAACCCTAACCCTAACCCTCGCGGTACCCTCAGCCGGCCCG
CCCGCCCGGGTCTGACCTGAGGAGAACTGTGCTCCGCCTTCAGAGTACCACCGAAATCTGTGCAGAGGAC
AACGCAGCTCCGCCCTCGCGGTGCTCTCCGGGTCTGTGCTGAGGAGAACGCAACTCCGCCGTTGCAAAGG
Как заменить Остаток - довольно простая задача. Но это вопрос программирования, а не предмет обсуждения на этом форуме. Предполагая, что вы решили проблему части 1 и имеете отсортированный файл, разделенный табуляцией, например:
chromosome position residue
1 79989 G
1 100232 T
3 341342 A
Этот скрипт может быть не самым лучшим, но он будет работать в терминале linux/*nix/Cygwin, чтобы заменить остатки (убедитесь, что у вас есть gawk version >=4.0
):
gawk -F "\t" '(FNR==1){x++} (x==1){a[$1][$2]=$3;next} (x==2){if($0~/>/){h=$0;sub(/^.*chromosome /,"",h);sub(/ .*/,"",h)} else{seq[h]=seq[h]$0}} END{for(i in a){s=0; for(j in a[i]){m=m substr(seq[i],s,j-1) a[i][j];s=j+1} m=m substr(seq[i],s); print ">Chr"i"\n"m}}' SNP_file Genome.fa | fold -w 60
Генетика 101, у вас есть 2 копии всей вашей ДНК в каждой позиции, одна копия от вашей матери, одна от вашего отца. Итак, для «CT» у вас есть одна копия с буквой C и одна с буквой T.
И да, первые несколько тысяч или миллионов букв — это нормально. Геном здесь повторяющийся и неприятный, но он все равно учитывается для целей нумерации.
Честно говоря, я бы не стал делать это с гигантским текстовым файлом генома. Просто найдите свой SNP на ensembl.org, используя номер rs, и вы получите SNP, некоторую фланкирующую последовательность и некоторый контекст. Поищите его в PubMed, если хотите узнать, появлялся ли он когда-либо в какой-либо публикации.
Часть 1:
По словам Лиора Пахтера , данные 23andme не поэтапны. Это означает, что для каждой записи в поле генотипа вы не знаете, из какой копии хромосомы она произошла. Это происходит потому, что современные платформы микрочипов не могут определить, из какой из двух копий хромосомы произошел snp.
Вы можете решить эту проблему для большинства snps, сравнив ваши аллели с эталонным геномом, но это потребует некоторых навыков программирования. Вы можете использовать https://github.com/endrebak/qc_gwas в качестве примера, который делает то же самое, но для файлов plink.
Часть 2:
Я предполагаю, что вы хотели бы сделать это программно, а не путем копирования и вставки snps в эталонный геном.
Короткий ответ: первый N — это первый нуклеотид. Но вам лучше использовать пакет, такой как Biopython , чтобы сделать подсчет за вас, он может быть более запутанным, чем вы думаете (например, вам нужно настроить окончания строк в файле fasta).
WYSIWYG
Субарнс2
WYSIWYG