Ask My DNA

Orientación de bienestar genómico personalizada

Blog Ask My DNA

9 min de lectura
1,994 palabras

Bioinformática Genómica: Herramientas y Técnicas para Análisis de Datos de ADN

Palabras clave: bioinformática genómica, análisis datos ADN, herramientas bioinformáticas, procesamiento genoma, pipeline genómico, software genética, análisis secuencias ADN, genómica computacional

La bioinformática genómica constituye la intersección crítica entre biología molecular y ciencias computacionales, proporcionando las herramientas y metodologías necesarias para extraer conocimiento meaningful de vastos datasets genómicos. Con la explosión de datos de secuenciación, dominar las técnicas bioinformáticas se ha vuelto esencial para cualquier análisis genético moderno, desde investigación básica hasta aplicaciones clínicas personalizadas.

Fundamentos de la Bioinformática Genómica

Tipos de Datos Genómicos

Datos de Secuenciación:

  • Reads crudos: Archivos FASTQ
  • Secuencias ensambladas: Archivos FASTA
  • Alineamientos: Archivos SAM/BAM
  • Variantes: Archivos VCF
  • Anotaciones: Archivos GFF/GTF

Características de Big Data:

Escala Datos Genómicos:
- Genoma humano completo: ~3GB datos comprimidos
- Exoma: ~100MB datos procesados
- Transcriptoma (RNA-seq): Variable 50MB-2GB
- Epigenoma: Múltiples GB según cobertura
- Meta-genómica: Terabytes potenciales

Infraestructura Computacional

Requerimientos Hardware:

  • CPU: Múltiples cores (16-64 threads típico)
  • RAM: 32-256GB según aplicación
  • Almacenamiento: SSD para análisis activo, HDD para archivo
  • Red: Alto throughput para transferencias datos

Computación en la Nube:

Plataformas Principales:
- AWS (Amazon Web Services)
- Google Cloud Platform
- Microsoft Azure
- Terra.bio (análisis biomédico)
- Galaxy Project (interfaz web)

Pipeline de Análisis Genómico

Preprocesamiento de Datos

Control de Calidad (QC):

FastQC Analysis:

# Análisis calidad reads crudos
fastqc sample_R1.fastq.gz sample_R2.fastq.gz

# Métricas clave evaluadas:
- Per-base sequence quality
- Per-sequence quality scores
- Per-base sequence content
- Per-sequence GC content
- Sequence length distribution
- Sequence duplication levels
- Adapter content

Trimming y Filtrado:

Trimmomatic Example:

# Eliminación adapters y bases baja calidad
java -jar trimmomatic-0.39.jar PE -phred33 \
    sample_R1.fastq.gz sample_R2.fastq.gz \
    sample_R1_paired.fastq.gz sample_R1_unpaired.fastq.gz \
    sample_R2_paired.fastq.gz sample_R2_unpaired.fastq.gz \
    ILLUMINACLIP:TruSeq3-PE.fa:2:30:10 \
    LEADING:3 TRAILING:3 SLIDINGWINDOW:4:15 MINLEN:36

Alineamiento de Secuencias

BWA (Burrows-Wheeler Aligner):

Comando Típico:

# Indexado genoma referencia
bwa index reference_genome.fasta

# Alineamiento paired-end
bwa mem -t 8 -R "@RG\tID:sample\tSM:sample\tPL:ILLUMINA" \
    reference_genome.fasta \
    sample_R1_paired.fastq.gz \
    sample_R2_paired.fastq.gz > sample.sam

# Conversión SAM a BAM y ordenamiento
samtools view -bS sample.sam | samtools sort -o sample_sorted.bam
samtools index sample_sorted.bam

Evaluación Alineamiento:

# Estadísticas alineamiento
samtools flagstat sample_sorted.bam

# Profundidad cobertura
samtools depth sample_sorted.bam | awk '{sum+=$3} END {print "Average depth:", sum/NR}'

# Cobertura por región
bedtools coverage -a target_regions.bed -b sample_sorted.bam

Llamado de Variantes

GATK Best Practices:

Preparación Datos:

# Marcado duplicados PCR
gatk MarkDuplicates \
    -I sample_sorted.bam \
    -O sample_dedup.bam \
    -M sample_metrics.txt

# Recalibración calidad bases
gatk BaseRecalibrator \
    -I sample_dedup.bam \
    -R reference_genome.fasta \
    --known-sites dbsnp.vcf.gz \
    -O sample_recal_data.table

gatk ApplyBQSR \
    -I sample_dedup.bam \
    -R reference_genome.fasta \
    --bqsr-recal-file sample_recal_data.table \
    -O sample_recal.bam

HaplotypeCaller:

# Llamado variantes germinal
gatk HaplotypeCaller \
    -R reference_genome.fasta \
    -I sample_recal.bam \
    -O sample_raw_variants.vcf.gz \
    --native-pair-hmm-threads 4 \
    --emit-ref-confidence GVCF

Filtrado y Anotación Variantes

Filtrado Calidad:

# Variantes SNPs
gatk SelectVariants \
    -R reference_genome.fasta \
    -V sample_raw_variants.vcf.gz \
    --select-type-to-include SNP \
    -O sample_raw_snps.vcf.gz

gatk VariantFiltration \
    -R reference_genome.fasta \
    -V sample_raw_snps.vcf.gz \
    -O sample_filtered_snps.vcf.gz \
    --filter-expression "QD < 2.0" --filter-name "QD2" \
    --filter-expression "QUAL < 30.0" --filter-name "QUAL30" \
    --filter-expression "SOR > 3.0" --filter-name "SOR3" \
    --filter-expression "FS > 60.0" --filter-name "FS60" \
    --filter-expression "MQ < 40.0" --filter-name "MQ40"

Anotación con SnpEff:

# Descarga base datos anotación
java -jar snpEff.jar download GRCh38.99

# Anotación efectos variantes
java -jar snpEff.jar -v GRCh38.99 sample_filtered.vcf.gz > sample_annotated.vcf

# Estadísticas anotación
java -jar snpEff.jar -csvStats sample_stats.csv GRCh38.99 sample_filtered.vcf.gz > sample_annotated.vcf

Herramientas Bioinformáticas Especializadas

Análisis Variantes Estructurales

Manta (Illumina):

# Configuración análisis
python ${MANTA_INSTALL_PATH}/bin/configManta.py \
    --normalBam sample.bam \
    --referenceFasta reference.fasta \
    --runDir manta_analysis

# Ejecución pipeline
python manta_analysis/runWorkflow.py -m local -j 8

LUMPY-SV:

# Extracción reads discordant y split
samtools view -b -F 1294 sample.bam > discordants.unsorted.bam
samtools view -h sample.bam | extractSplitReads_BwaMem -i stdin | samtools view -Sb - > splitters.unsorted.bam

# Llamado SV
lumpy -mw 4 -tt 0 -pe discordants.bam -sr splitters.bam > sample.vcf

Análisis Copy Number Variations

CNVkit:

# Análisis CNV exoma/panel
cnvkit.py batch tumor.bam --normal normal.bam \
    --targets targets.bed --annotate refFlat.txt \
    --fasta reference.fasta --access access.bed \
    --output-reference reference.cnn --output-dir cnvkit_output/

# Segmentación y plot
cnvkit.py segment cnvkit_output/tumor.cnr -o tumor.cns
cnvkit.py scatter cnvkit_output/tumor.cnr -s tumor.cns -o tumor_scatter.pdf

Análisis Ancestría y Estructura Poblacional

ADMIXTURE:

# Convertir VCF a PLINK format
plink --vcf sample.vcf.gz --make-bed --out sample

# Análisis ancestry K=3
for K in 1 2 3 4 5; do admixture --cv sample.bed $K | tee log${K}.out; done

# Selección K óptimo
grep -h CV log*.out

PLINK Population Stratification:

# Principal Component Analysis
plink --bfile sample --pca 10 --out sample_pca

# Identity by descent
plink --bfile sample --genome --out sample_ibd

Interpretación y Visualización

Análisis Estadístico Variantes

R/Bioconductor Framework:

# Cargar librerías
library(VariantAnnotation)
library(BSgenome.Hsapiens.UCSC.hg38)
library(TxDb.Hsapiens.UCSC.hg38.knownGene)

# Lectura archivo VCF
vcf <- readVcf("sample_annotated.vcf.gz", "hg38")

# Análisis estadísticos básicos
info_data <- info(vcf)
summary(info_data$DP)  # Profundidad cobertura
hist(info_data$QUAL)   # Distribución calidad

# Filtrado por MAF
maf <- info_data$AF
high_quality_vars <- vcf[info_data$QUAL > 50 & maf > 0.01]

Python/Pandas Analysis:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# Lectura datos variantes
variants_df = pd.read_csv('variants_table.txt', sep='\t')

# Análisis distribuciones
plt.figure(figsize=(12, 8))

# Distribución tipos variantes
plt.subplot(2, 2, 1)
variants_df['Variant_Type'].value_counts().plot(kind='bar')
plt.title('Variant Type Distribution')

# Quality score distribution
plt.subplot(2, 2, 2)
plt.hist(variants_df['QUAL'], bins=50)
plt.title('Quality Score Distribution')

# Depth coverage
plt.subplot(2, 2, 3)
plt.hist(variants_df['DP'], bins=50)
plt.title('Depth Coverage Distribution')

plt.tight_layout()
plt.show()

Visualización Genómica

IGV (Integrative Genomics Viewer):

  • Visualización alineamientos y variantes
  • Soporte múltiples formatos datos
  • Interfaz gráfica intuitiva
  • Scripting para análisis batch

Genome Browser UCSC:

# Conversión tracks personalizados
bedToBigBed variants.bed chrom.sizes variants.bb
wigToBigWig coverage.wig chrom.sizes coverage.bw

# Upload tracks UCSC Browser
# Custom tracks interface

Análisis Funcional y Pathway

Enriquecimiento Genético

DAVID (Database Annotation, Visualization, Integrated Discovery):

# Análisis enriquecimiento GO
library(RDAVIDWebService)
david <- DAVIDWebService$new(email="user@email.com")
result <- addList(david, gene_list, idType="ENSEMBL_GENE_ID",
                  listName="DEGs", listType="Gene")
getFunctionalAnnotationChart(david, threshold=0.1, count=2)

Reactome Pathway Analysis:

library(ReactomePA)
library(clusterProfiler)

# Enriquecimiento pathways
ego <- enrichPathway(gene=gene_list,
                     pvalueCutoff=0.05,
                     pAdjustMethod="BH",
                     readable=TRUE)
dotplot(ego, showCategory=20)

Network Analysis

STRING Database Integration:

import requests
import json

# Query STRING API
string_api_url = "https://string-db.org/api"
output_format = "json"
method = "network"

# Construcción query
request_url = "/".join([string_api_url, output_format, method])
params = {
    "identifiers" : "%0d".join(gene_list),
    "species" : 9606,  # Human
    "required_score" : 400,
    "network_flavor" : "confidence"
}

response = requests.post(request_url, data=params)
network_data = json.loads(response.text)

Automatización y Reproducibilidad

Workflow Management

Nextflow Pipeline:

#!/usr/bin/env nextflow

// Pipeline parámetros
params.reads = "data/*{1,2}.fastq.gz"
params.genome = "reference/genome.fasta"
params.outdir = "results"

// Proceso QC
process fastqc {
    publishDir "${params.outdir}/fastqc", mode: 'copy'

    input:
    tuple val(sample_id), path(reads)

    output:
    path "*.html"
    path "*.zip"

    script:
    """
    fastqc ${reads}
    """
}

// Proceso alineamiento
process bwa_align {
    publishDir "${params.outdir}/aligned", mode: 'copy'

    input:
    tuple val(sample_id), path(reads)
    path genome

    output:
    tuple val(sample_id), path("${sample_id}.bam")

    script:
    """
    bwa mem -t ${task.cpus} ${genome} ${reads} | \
    samtools view -bS - | \
    samtools sort -o ${sample_id}.bam
    samtools index ${sample_id}.bam
    """
}

workflow {
    reads = Channel.fromFilePairs(params.reads)

    fastqc(reads)
    bwa_align(reads, params.genome)
}

WDL (Workflow Description Language):

version 1.0

workflow GenomicAnalysis {
    input {
        Array[File] fastq_files
        File reference_genome
        String sample_name
    }

    call QualityControl { input: fastqs = fastq_files }
    call Alignment {
        input:
            fastqs = QualityControl.cleaned_fastqs,
            reference = reference_genome
    }
    call VariantCalling {
        input:
            bam = Alignment.aligned_bam,
            reference = reference_genome
    }

    output {
        File final_vcf = VariantCalling.variants_vcf
        File qc_report = QualityControl.report
    }
}

task QualityControl {
    input {
        Array[File] fastqs
    }

    command {
        fastqc ${sep=' ' fastqs}
        trimmomatic PE ${fastqs[0]} ${fastqs[1]} \
            output_R1.fastq output_R1_unpaired.fastq \
            output_R2.fastq output_R2_unpaired.fastq \
            TRAILING:3 SLIDINGWINDOW:4:15 MINLEN:36
    }

    output {
        Array[File] cleaned_fastqs = ["output_R1.fastq", "output_R2.fastq"]
        File report = "fastqc_report.html"
    }

    runtime {
        cpu: 4
        memory: "8 GB"
        docker: "quay.io/biocontainers/fastqc:0.11.9--0"
    }
}

Control de Versiones y Reproducibilidad

Docker Containers:

FROM ubuntu:20.04

# Instalación herramientas básicas
RUN apt-get update && apt-get install -y \
    wget \
    bzip2 \
    build-essential \
    zlib1g-dev \
    libbz2-dev \
    liblzma-dev

# Instalación BWA
RUN wget https://github.com/lh3/bwa/releases/download/v0.7.17/bwa-0.7.17.tar.bz2 && \
    tar -xjf bwa-0.7.17.tar.bz2 && \
    cd bwa-0.7.17 && make && \
    cp bwa /usr/local/bin/

# Instalación SAMtools
RUN wget https://github.com/samtools/samtools/releases/download/1.12/samtools-1.12.tar.bz2 && \
    tar -xjf samtools-1.12.tar.bz2 && \
    cd samtools-1.12 && \
    ./configure --prefix=/usr/local && make && make install

WORKDIR /data
CMD ["/bin/bash"]

Aplicaciones Especializadas

Análisis Cáncer/Somático

MuTect2 (GATK):

# Llamado mutaciones somáticas
gatk Mutect2 \
    -R reference.fasta \
    -I tumor.bam \
    -I normal.bam \
    -normal normal_sample_name \
    --germline-resource gnomad.vcf.gz \
    --panel-of-normals pon.vcf.gz \
    -O somatic_mutations.vcf.gz

# Filtrado contaminación
gatk FilterMutectCalls \
    -R reference.fasta \
    -V somatic_mutations.vcf.gz \
    --contamination-table contamination.table \
    -O filtered_somatic.vcf.gz

Análisis Farmacogenómico

PharmGKB Integration:

import pandas as pd
import requests

def get_pharmgkb_annotations(variant_list):
    """Obtener anotaciones farmacogenómicas"""
    annotations = []

    for variant in variant_list:
        # Query PharmGKB API
        url = f"https://api.pharmgkb.org/v1/data/variant/{variant}"
        response = requests.get(url)

        if response.status_code == 200:
            data = response.json()
            annotations.append({
                'variant': variant,
                'gene': data.get('gene'),
                'drugs': data.get('relatedDrugs'),
                'phenotypes': data.get('relatedPhenotypes')
            })

    return pd.DataFrame(annotations)

Análisis Metagenómico

Kraken2 Taxonomic Classification:

# Construcción base datos
kraken2-build --standard --db kraken2_db

# Clasificación taxonómica
kraken2 --db kraken2_db --threads 8 --output sample.kraken \
        --report sample.report sample_R1.fastq sample_R2.fastq

# Visualización Krona
ktImportTaxonomy -q 2 -t 3 sample.kraken -o sample.krona.html

Consideraciones de Performance

Optimización Computacional

Paralelización:

# GNU Parallel para múltiples muestras
parallel -j 8 "bwa mem reference.fasta {1} {2} > {1/.}.sam" ::: *_R1.fastq ::: *_R2.fastq

# SLURM job submission
sbatch --array=1-100 --cpus-per-task=8 --mem=32G genomic_analysis.sh

Gestión Memoria:

# Monitoreo uso recursos
htop
iostat -x 1
free -h

# Configuración Java heap GATK
export JAVA_OPTS="-Xmx32G"
gatk --java-options "-Xmx32G" HaplotypeCaller ...

Almacenamiento y Archivo

Compresión Datos:

# Compresión BAM files
samtools view -Cb input.sam > output.bam

# Compresión VCF
bgzip variants.vcf
tabix -p vcf variants.vcf.gz

# Compresión FASTQ
pigz -p 8 *.fastq  # Parallel gzip

Futuro de la Bioinformática Genómica

Machine Learning Genómica

Deep Learning Applications:

import tensorflow as tf
from tensorflow.keras import layers

# CNN para predicción efectos variantes
model = tf.keras.Sequential([
    layers.Conv1D(64, 3, activation='relu', input_shape=(sequence_length, 4)),
    layers.MaxPooling1D(2),
    layers.Conv1D(128, 3, activation='relu'),
    layers.GlobalAveragePooling1D(),
    layers.Dense(64, activation='relu'),
    layers.Dense(1, activation='sigmoid')  # Binary classification
])

model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])

Análisis Tiempo Real

Nanopore Real-time Analysis:

# MinKNOW real-time basecalling
guppy_basecaller --input_path fast5_files/ \
                 --save_path basecalled/ \
                 --config dna_r9.4.1_450bps_hac.cfg \
                 --device cuda:0

# Real-time variant calling
samtools view -h stream.bam | \
gatk HaplotypeCaller -R reference.fasta -I /dev/stdin -O /dev/stdout

Cloud Computing Integration

Terra.bio Workflows:

{
  "GenomicAnalysis.fastq_files": ["gs://bucket/sample_R1.fastq", "gs://bucket/sample_R2.fastq"],
  "GenomicAnalysis.reference_genome": "gs://bucket/reference.fasta",
  "GenomicAnalysis.sample_name": "sample_001"
}

Conclusión

La bioinformática genómica representa el motor computacional que transforma datos genómicos brutos en conocimiento médico accionable. El dominio de estas herramientas y técnicas es esencial para cualquiera involucrado en genética moderna, desde investigadores básicos hasta clínicos aplicando medicina personalizada.

La evolución continua del campo, impulsada por avances en algoritmos de machine learning, computación en la nube y tecnologías de secuenciación, promete análisis cada vez más sofisticados y accesibles. Sin embargo, los principios fundamentales de control de calidad, reproducibilidad y interpretación cuidadosa permanecen constantes.

El futuro de la bioinformática genómica se dirige hacia análisis más integrativos que combinen múltiples tipos de datos ómicos, predicciones más precisas mediante inteligencia artificial, y pipelines completamente automatizados que democraticen el acceso a análisis genómico de alta calidad para investigadores y clínicos globalmente.


Recursos Adicionales:

  • Repositorios software bioinformático (Bioconductor, BioPython)
  • Cursos online análisis genómico (Coursera, edX)
  • Documentación pipelines estándar (GATK, nf-core)
  • Comunidades bioinformática (Biostars, Stack Overflow)

Disclaimer: Las herramientas y pipelines bioinformáticos evolucionan rápidamente. Siempre verificar versiones actuales, mejores prácticas y validaciones apropiadas para aplicaciones específicas. El análisis bioinformático debe complementarse con expertise biológico y clínico para interpretación apropiada de resultados.

Referencias

  1. 1.
    . NIH.
  2. 3.
    . NIH.

Todas las referencias provienen de revistas revisadas por pares, agencias gubernamentales de salud y bases de datos médicas autorizadas.

Usamos analíticas basadas en consentimiento

Los píxeles de marketing (Meta, Google, LinkedIn, TikTok, Twitter) solo se activan si aceptas. Puedes rechazar y el sitio seguirá funcionando sin seguimiento.