Marco basado en ExAC para proporcionar frecuencias variantes específicas del estudio. Las dependencias y las instrucciones de instalación son casi idénticas a ExAC como se describe en https://github.com/konradjk/exac_browser/blob/master/README.md
Cree un directorio para colocar todo esto. Esto servirá como directorio principal del repositorio canvar_browser real.
mkdir canvar
cd canvar
Primero (ya que esto puede ejecutarse en paralelo), obtenga los conjuntos de datos que utiliza el navegador y colóquelos en un directorio 'exac_data'. Todos los archivos necesarios se pueden encontrar en:
wget https://personal.broadinstitute.org/konradk/exac_browser/omim_info.txt.gz
wget https://personal.broadinstitute.org/konradk/exac_browser/canonical_transcripts.txt.gz
wget https://personal.broadinstitute.org/konradk/exac_browser/dbNSFP2.6_gene.gz
wget https://personal.broadinstitute.org/konradk/exac_browser/gencode.gtf.gz
wget https://personal.broadinstitute.org/konradk/exac_browser/omim_info.txt.gz
Para el archivo dbsnp:
wget http://hgdownload.soe.ucsc.edu/goldenPath/hg19/database/snp141.txt.gz
gzcat snp141.txt.gz | cut -f 1-5 | bgzip -c > snp141.txt.bgz
tabix -0 -s 2 -b 3 -e 4 snp141.txt.bgz
zcat b142_SNPChrPosOnRef_105.bcp.gz | awk '$3 != ""' | perl -pi -e 's/ +/t/g' | sort -k2,2 -k3,3n | bgzip -c > dbsnp142.txt.bgz
tabix -s 2 -b 3 -e 3 dbsnp142.txt.bgz
Ahora clona el repositorio:
git clone https://github.com/danchubb/CanVar.git
Necesitas Python y pip instalados
Siga estas instrucciones para instalar Python y Homebrew en su Mac: http://docs.python-guide.org/en/latest/starting/install/osx/
Para sistemas Linux
http://docs.python-guide.org/en/latest/starting/install/linux/
Instale MongoDB en Mac:
brew install mongodb
# or
sudo port install mongodb
Alternativamente, si estás en un sistema Linux:
https://docs.mongodb.com/v3.0/tutorial/install-mongodb-on-linux/
Cree un directorio para contener los archivos de su base de datos mongo:
mkdir database
En una pestaña separada, inicie el servidor de base de datos mongo:
mongod --dbpath database
Este servidor local debe estar ejecutándose en todo momento mientras trabaja en el sitio. Puede hacer esto en segundo plano si lo desea o configurar algún servicio de inicio, o dentro de una sesión de pantalla si no desea mantener abierta una ventana de terminal activa.
Finalmente, es posible que desees mantener el sistema en un entorno virtual para instalar:
Para Mac:
sudo port install py27-virtualenv # Or whatever version
Para Linux:
sudo apt-get install virtualenv
or sudo pip install virtualenv
Luego puede crear un entorno virtual de Python donde vivirá el navegador:
mkdir canvar_env
virtualenv canvar_env
source canvar_env/bin/activate
Instale los requisitos de Python:
pip install -r requirements.txt
Algunos paquetes requerirán encabezados de Python (python-dev en algunos sistemas).
El código proporcionado aquí se utiliza principalmente para producir el archivo VCF y el archivo de cobertura del sitio requeridos por el marco. Se han modificado otros scripts para eliminar las referencias codificadas a ExAC y las poblaciones que contiene, reemplazándolas con grupos arbitrarios como el estado de la enfermedad.
####Creación de sitios vcf y archivos de cobertura
VCF -> sitios vcf:
python vcf_to_site_canvar.py --infile /path/to/file.vcf --phenotypes /path/to/phenotypes.csv --pops populations.csv
phenotype.csv contiene datos de fenotipo para cada muestra en el archivo vcf, debe tener las columnas:
sample phenotype sex
donde muestra es el ID de la muestra como se indica en la línea de encabezado del VCF, fenotipo es el estado de enfermedad (u otro) que desea definir como población y el sexo se especifica como M o F.
poblaciones.csv contiene todas las "poblaciones" presentes. Estos corresponden a los diferentes fenotipos. por ejemplo, la población con cáncer colorrectal, debe tener las columnas:
code phenotype
donde código es la forma abreviada del fenotipo que aparecerá en los sitios.vcf, por ejemplo, CRC colorrectal
Para generar archivo de cobertura
java -jar GenomeAnalysisTK.jar -T DepthOfCoverage -R human_g1k_v37.fasta -I bams.list -L capture.bed --omitIntervalStatistics --omitLocusTable --omitPerSampleStats -nt n -o list.coverage
bams.list contiene las rutas a todos los archivos BAM para los que desea calcular la cobertura.
perl prepare_coverage_for_tabix.pl list.coverage | bgzip -c > list.coverage.gz
tabix -s 1 -b 2 -e 2 list.coverage.gz
python average_coverage_calculate.py coverage_file_list capture.bed
en este ejemplo, cover_file_list contendría la ruta a list.coverage.gz. Si divide su comando GATK DepthOfCoverage en diferentes conjuntos de muestra, cada archivo de cobertura tabulado irá en una línea diferente. Se genera un archivo .cov con la cobertura promedio para cada posición en todas las muestras.
bgzip -c coverage_file_list.cov > all_coverage.txt.gz
tabix -s 1 -b 2 -e 2 all_coverage.txt.gz
Luego, all_coverage.txt.gz se usa en el script canvar.py como archivo de cobertura. También se puede dividir por cromosoma y agregar según el código exacto original.
####Archivos exactos adaptados
Los demás archivos y directorios restantes son casi idénticos a los disponibles en: https://github.com/konradjk/exac_browser/blob/master/README.md
/static contiene los archivos .js, archivos css, imágenes y fuentes necesarios para el sitio web. El módulo .js widget-columnSelector.js se agrega para habilitar la herramienta de selección de columnas en la página de resultados del gen.
/templates contiene las plantillas HTML para las distintas páginas web.
canvar.py la mayor parte del código importante. Llama a otras funciones de Python, importa datos y debe ejecutarse para iniciar el marco web de flask.
lookups.py extrae datos de mongodb
Se llama a Manage.py para cargar los datos en mongodb.
Se llama a Parsing.py al cargar los archivos de entrada en mongodb. Aquí es necesario redefinir las poblaciones tal como se mostrarán en el sitio web.
Se requieren módulos adicionales de utils.py al analizar y recuperar datos
####Cargando datos
Ahora la base de datos se carga desde los archivos planos: este es un solo comando, pero puede tardar un poco (puede aprovechar las cargas paralelas modificando LOAD_DB_PARALLEL_PROCESSES en exac.py):
python manage.py load_db
No tendrá que ejecutar esto con frecuencia; la mayoría de los cambios no requerirán reconstruir la base de datos. Dicho esto, esto es (y seguirá siendo) idempotente, por lo que puede ejecutarlo nuevamente en cualquier momento si cree que algo puede estar mal; recargará la base de datos desde cero. También puede recargar partes de la base de datos usando cualquiera de los siguientes comandos:
python manage.py load_variants_file
python manage.py load_dbsnp_file
python manage.py load_base_coverage
python manage.py load_gene_models
Luego ejecuta:
python manage.py precalculate_metrics
Luego, debe crear un caché para fines de autocompletar y genes grandes:
python manage.py create_cache
Todos los genes contenidos en el archivo genes_to_cache.txt se almacenarán previamente en caché. Puede agregar tantas ID de transcripción como desee, hasta cada transcripción dentro de la base de datos para almacenar en caché todos los datos.
Tenga en cuenta que si vuelve a visitar el sitio después de un descanso, asegúrese de que su entorno virtual esté activate
.
Puede ejecutar el servidor de desarrollo con:
python canvar.py
Y visita en tu navegador:
http://localhost:5000
http://localhost:5000/gene/ENSG00000237683
http://localhost:5000/variant/20-76735-A-T
Para realizar pruebas, puede abrir un shell interactivo con:
python manage.py shell