¿Cómo se fusionan los datos de SNP con un genoma de referencia?

Mis datos

Tengo un archivo 23andMe que enumera los SNP en el formulario:

rsid chromosome position genotype rsXXXXX 1 PPPPPP CT rsXXXXX 1 PPPPPP GG

Los campos están separados por TAB y cada línea corresponde a un solo SNP. Para cada SNP, se proporcionan cuatro campos de datos.

  1. Un identificador (un rsid o un id interno)
  2. Su ubicación en el genoma de referencia.
    • El cromosoma en el que se encuentra.
    • La posición dentro del cromosoma se encuentra en.
  3. La llamada del genotipo se orientó con respecto a la hebra positiva de la secuencia de referencia humana.

El genoma de referencia es la compilación de ensamblaje humano 37 (también conocida como Annotation Release 104).

Mi pregunta

¿Cómo fusiono los SNP en el genoma de referencia?

Por ejemplo, tome la primera línea en mi archivo SNP:

rsXXXXX 1 PPPPPP CT

Parte 1

Puedo ver que necesito reemplazar el nucleótido en la posición PPPPPP en el cromosoma 1 del genoma de referencia con un nucleótido del campo del genotipo, pero ¿qué nucleótido se supone que debo usar? ¿C o T? ¿Y por qué?

Parte 2

¿Desde dónde se supone que debo empezar a contar con el genoma de referencia? Mirando el cromosoma 1 de la compilación 37 del ensamblaje humano, los primeros ~10,000 caracteres (excluyendo la descripción de la primera línea) son N. ¿Es el primer N número 1? p.ej. Si PPPPPP fuera 100 000, ¿reemplazaría el carácter número 100 000 en el genoma de referencia con el nucleótido correcto de la Parte 1 de esta pregunta? ¿O debería comenzar a contar desde el primer carácter que no sea N en el archivo fasta?

Respuestas (3)

Primero, necesita saber a qué secuencia del genoma se refiere el archivo SNP. Deben haber mencionado la secuencia de referencia que usaron.

Como otros mencionaron, el caso de CTes heterocigosidad. Si solo desea marcar los cambios, deseche el residuo que ya está presente en el genoma de referencia y use el otro alelo. Sin embargo, si desea realizar un seguimiento del haplotipo, debe asegurarse de que un conjunto de SNP provenga de la misma cromátida. Esto es difícil: es posible que aún pueda saberlo para los SNP que están lo suficientemente cerca como para ser mapeados por una sola lectura, pero es casi imposible para los SNP que están lo suficientemente separados.

Como dijo Endre, hay que empezar desde el primer nucleótido. Sin embargo, parece dudoso que esté recibiendo   ( norte norte norte norte ) norte en el comienzo del cromosoma 1. Los cromosomas ensamblados completos no tienen tales tramos. A continuación se muestran las primeras 10 líneas del archivo fasta del cromosoma 1. Ver por ti mismo.

>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

como reemplazar norte t h residuo es una tarea bastante sencilla. Pero esa es una cuestión de programación y no el alcance de este foro. Suponiendo que ha resuelto el problema de la parte 1 y tiene un archivo ordenado separado por tabulaciones como este:

chromosome  position    residue
 1           79989           G
 1           100232          T
 3           341342          A

Es posible que este script no sea el mejor, pero funcionaría en una terminal linux/*nix/Cygwin, para reemplazar los residuos (asegúrese de tener 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
Desafortunadamente, no puedo explicar cómo funciona el script en este foro.
"TAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAAC" blats a la posición 10,000 según UCSC. Y míralo, como dije, es repetitivo y horrible. El OP solo tiene una secuencia enmascarada.
Hmm... sí... no me di cuenta de eso... sin embargo, el comienzo es del residuo #1...

Genética 101, tienes 2 copias de todo tu ADN en cada posición, una copia de tu madre, una de tu padre. Entonces, para el "CT", tiene una copia con una C y otra con una T.

Y sí, es normal que los primeros miles o millones de letras sean N. El genoma es repetitivo y asqueroso allí, pero de todos modos se cuenta con fines de numeración.

Honestamente, no haría esto con un archivo de texto gigante del genoma. Simplemente busque su SNP en ensembl.org usando el número rs, y obtendrá el SNP, y alguna secuencia de acompañamiento, y algo de contexto. Búscalo en PubMed si quieres ver si alguna vez aparece en alguna publicación.

Parte 1:

Según Lior Pachter , los datos de 23andme no están escalonados. Lo que significa que para cada entrada en el campo de genotipo, no sabe de qué copia del cromosoma proviene. Esto sucede porque las modernas plataformas de microarrays no pueden decir de cuál de las dos copias de un cromosoma proviene un snp.

Puede resolver este problema para la mayoría de los snps comparando sus alelos con el genoma de referencia, pero esto requeriría algunas habilidades de programación. Podría usar https://github.com/endrebak/qc_gwas como ejemplo, que hace lo mismo, pero para archivos plink.

Parte 2:

Supongo que le gustaría hacer esto programáticamente, y no copiando y pegando los snps en el genoma de referencia.

La respuesta corta es que la primera N es el primer nucleótido. Pero, debería usar un paquete como Biopython para hacer el conteo por usted, podría ser más complicado de lo que piensa (necesita ajustar los finales de línea en el archivo fasta, por ejemplo).