Cadre basé sur ExAC pour fournir des variantes de fréquences spécifiques à l'étude. Les dépendances et les instructions d'installation sont presque identiques à ExAC comme décrit dans https://github.com/konradjk/exac_browser/blob/master/README.md
Créez un répertoire pour y mettre tous ces éléments. Cela servira de répertoire parent du référentiel canvar_browser actuel.
mkdir canvar
cd canvar
Tout d'abord (car cela peut s'exécuter en parallèle), récupérez les ensembles de données utilisés par le navigateur et placez-les dans un répertoire « exac_data ». Tous les fichiers requis peuvent être trouvés à l'adresse suivante :
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
Pour le fichier 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
Clonez maintenant le dépôt :
git clone https://github.com/danchubb/CanVar.git
Vous avez besoin de Python et de pip installés
Suivez ces instructions pour installer Python et Homebrew sur votre Mac : http://docs.python-guide.org/en/latest/starting/install/osx/
Pour les systèmes Linux
http://docs.python-guide.org/en/latest/starting/install/linux/
Installez MongoDB sur Mac :
brew install mongodb
# or
sudo port install mongodb
Alternativement, si vous êtes sur un système Linux :
https://docs.mongodb.com/v3.0/tutorial/install-mongodb-on-linux/
Créez un répertoire pour contenir vos fichiers de base de données mongo :
mkdir database
Dans un onglet séparé, démarrez le serveur de base de données mongo :
mongod --dbpath database
Ce serveur local doit être opérationnel à tout moment lorsque vous travaillez sur le site. Vous pouvez le faire en arrière-plan si vous souhaitez ou configurer un service de démarrage, ou au sein d'une session d'écran si vous ne souhaitez pas garder une fenêtre de terminal active ouverte.
Enfin, vous souhaiterez peut-être conserver le système dans un virtualenv, pour installer :
Pour Mac :
sudo port install py27-virtualenv # Or whatever version
Pour Linux :
sudo apt-get install virtualenv
or sudo pip install virtualenv
Vous pouvez ensuite créer un environnement virtuel python dans lequel vivra le navigateur :
mkdir canvar_env
virtualenv canvar_env
source canvar_env/bin/activate
Installez la configuration requise pour Python :
pip install -r requirements.txt
Certains packages nécessiteront des en-têtes Python (python-dev sur certains systèmes).
Le code fourni ici est principalement utilisé pour produire le fichier VCF du site et le fichier de couverture requis par le framework. D'autres scripts ont été modifiés pour supprimer les références codées en dur à ExAC et aux populations qu'il contient, en les remplaçant par des groupes arbitraires tels que l'état pathologique.
####Création de sites vcf et fichiers de couverture
VCF -> sites vcf :
python vcf_to_site_canvar.py --infile /path/to/file.vcf --phenotypes /path/to/phenotypes.csv --pops populations.csv
phenotype.csv contient des données phénotypiques pour chaque échantillon dans le fichier vcf, il doit avoir les colonnes :
sample phenotype sex
où sample est l'ID de l'échantillon comme indiqué dans la ligne d'en-tête du VCF, le phénotype est l'état de la maladie (ou autre) que vous souhaitez définir en tant que population et le sexe est spécifié comme M ou F.
populations.csv contient toutes les "populations" présentes. Ceux-ci correspondent aux différents phénotypes. Par exemple, la population atteinte d'un cancer colorectal, elle doit comporter les colonnes :
code phenotype
où code est la forme abrégée du phénotype qui apparaîtra dans les sites.vcf par exemple CRC Colorectal
Pour générer un fichier de couverture
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 contient les chemins d'accès à tous les fichiers BAM pour lesquels vous souhaitez calculer la couverture.
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
dans cet exemple, cover_file_list contiendrait le chemin vers list.coverage.gz. Si vous divisez votre commande GATK DepthOfCoverage en différents ensembles d'échantillons, chaque fichier de couverture tabixé va sur une ligne différente. Un fichier .cov est produit avec la couverture moyenne pour chaque position sur tous les échantillons.
bgzip -c coverage_file_list.cov > all_coverage.txt.gz
tabix -s 1 -b 2 -e 2 all_coverage.txt.gz
all_coverage.txt.gz est ensuite utilisé dans le script canvar.py comme fichier de couverture. Il peut également être divisé par chromosome et ajouté selon le code exac.py original.
####Fichiers exac adaptés
Les autres fichiers et répertoires restants sont presque identiques à ceux disponibles sur : https://github.com/konradjk/exac_browser/blob/master/README.md
/static contient les fichiers .js, les fichiers CSS, les images et les polices requis pour le site Web. Le module .js widget-columnSelector.js est ajouté pour activer l'outil de sélection de colonne sur la page de résultats du gène.
/templates contient les modèles HTML pour les différentes pages Web.
canvar.py majorité du code important. Appelle d'autres fonctions Python, importe des données et doit être exécuté pour démarrer le framework Web Flask
lookups.py extrait les données de mongodb
manage.py appelé pour charger les données dans mongodb
Parsing.py appelé lors du chargement des fichiers d'entrée dans mongodb. Les populations telles qu'elles seront affichées sur le site Internet doivent être redéfinies ici.
Modules supplémentaires utils.py requis lors de l'analyse et de la récupération des données
####Chargement des données
Maintenant, la base de données est chargée à partir des fichiers plats : il s'agit d'une seule commande, mais cela peut prendre un certain temps (vous pouvez profiter des chargements parallèles en modifiant LOAD_DB_PARALLEL_PROCESSES dans exac.py) :
python manage.py load_db
Vous n'aurez pas à exécuter cette opération souvent : la plupart des modifications ne nécessiteront pas de reconstruire la base de données. Cela dit, c'est (et restera) idempotent, vous pouvez donc l'exécuter à nouveau à tout moment si vous pensez que quelque chose ne va pas - cela rechargera la base de données à partir de zéro. Vous pouvez également recharger des parties de la base de données à l'aide de l'une des commandes suivantes :
python manage.py load_variants_file
python manage.py load_dbsnp_file
python manage.py load_base_coverage
python manage.py load_gene_models
Puis exécutez :
python manage.py precalculate_metrics
Ensuite, vous devez créer un cache à des fins de saisie semi-automatique et de gène volumineux :
python manage.py create_cache
Tous les gènes contenus dans le fichier genes_to_cache.txt seront pré-mis en cache. Vous pouvez ajouter autant d'ID de transcription que vous le souhaitez, jusqu'à chaque transcription de la base de données afin de mettre entièrement en cache les données.
Notez que si vous revisitez le site après une pause, assurez-vous que votre virtualenv est activate
.
Vous pouvez exécuter le serveur de développement avec :
python canvar.py
Et visitez sur votre navigateur :
http://localhost:5000
http://localhost:5000/gene/ENSG00000237683
http://localhost:5000/variant/20-76735-A-T
Pour tester, vous pouvez ouvrir un shell interactif avec :
python manage.py shell