dbSNP identifiants are not always filled in in clinvar
WHKJYYZX7Y2VYHEX4NAKKV4DHI3RBHY3XJMIGPYBPCD3DNWZUHDQC
O7PJBEOQJXLMWWW7DM3ER6BMKXXXW35UWGYKLY73Y76GWLUHWMEQC
CXW37WKZDOFBTPGZQGQVWDWGA7YWGGJ47SSD4KYEXD6MPERELGGAC
SQAG5QHQNITVNTIDS74F2EYBFIQV24HFZ4D3A2UY2Y4SG7KT4HNQC
RHWQQAAHNHFO3FLCGVB3SIDKNOUFJGZTDNN57IQVBMXXCWX74MKAC
JCN2NFYRDY2Z6X73BIGMUTT7FLNOAKE3F7KOA5BRO7N2PCY3GBAQC
6XUWY7T2ITWJYRUHDWSG66N7DYCBBXHRHQAAS7GGINDYUJHGMARQC
3ZXSF6LXHYWPRATRVITIZETB7FTSP3HYWHV7AIS3B65Y6ID3EWXQC
4NRMFG5JDCIHFLH5WFKP36ZD2XBLUHBSXJNRILIW3XSHAK23ESDAC
WXXVA2RG5DAZMQVHHYXI3BDVPU2XOT2DGKXEZG777DZJI44OOFVAC
JC7WIPNKI5INKLTOLR4OACIUFNKDXOOYXAEXSE4VK2NDK7H7GIPAC
OWD5YD74S7L5FUCGYECRJIJ7LQJ6Z6JRMGLUQD5XKVAGF4EDLFWAC
IRZ3N4E67WSWRGS5F77WEB27CLBG6IEW32GFSOYHFCC23TDGRU2AC
XIPIZZFWHUNPWKNRBB3WAFT64IUEITOCVY2YCHFMB7ZP2NGUGA7QC
3T3UVFLPTUAEZXWKN3IMLTETZWENQMY74EJCMGI4AYAUO3PFNGDQC
******* DONE Test: variants dbSNP étiquettés "clinvar"
CLOSED: [2022-10-23 Sun 18:55]
$ zgrep CLNSIG dbSNP_common.vcf.gz | wc -l
57997
******* KILL Utiliser directement le numéro dbSNP dans clinvar ? Non
CLOSED: [2022-11-20 Sun 19:51]
Ex: chr20
#+begin_src sh :dir ~/code/bisonex/test_isec
bcftools query -f 'rs%INFO/RS \n' -i 'INFO/RS != "." & INFO/CLNSIG="Pathogenic"' clinvar_chr20.vcf.gz | sort > ID_clinvar_patho.txt
bcftools query -f '%ID\n' dbSNP_common_chr20.vcf.gz | sort > ID_of_common_snp.txt
comm -23 ID_of_common_snp.txt ID_clinvar_patho.txt > ID_of_common_snp_not_clinvar_patho.txt
wc -l ID_of_common_snp_not_clinvar_patho.txt
# sort ID
#+end_src
Donc il faut vraiment faire l'intersection des VCF
soit avec vcftools (naïve) soit avec rtgtools (gères les synonymes)
Version d'alexis
#+begin_src sh :dir ~/code/bisonex/test_isec
snp=dbSNP_common_chr20.vcf.gz
clinvar=clinvar_chr20_notremapped.vcf.gz
python ../script/pythonScript/clinvar_sbSNP.py \
--clinvar $clinvar \
--chrm_name_table ../database/RefSeq/refseq_to_number_only_consensual.txt \
--dbSNP $snp --output prod.txt
wc -l prod.txt
zgrep '^NC' dbSNP_common_chr20.vcf.gz | wc -l
#+end_src
#+RESULTS:
| 518832 | prod.txt |
| 518846 | |
******* DONE Essai bedtools intersect
#+begin_src sh
bedtools intersect -a dbSNP_common.vcf.gz -b clinvar.vcf.gz
#+end_src
$ wc -l intersect.vcf
220206 intersect.vcf
******* DONE Valider avec Alexis : bcftool isec
CLOSED: [2022-11-07 Mon 21:42]
******* TODO Pourquoi nombre de lignes différentes avec la version d'Alexis
******** DONE Valider avec Alexis : bcftool isec
CLOSED: [2022-11-07 Mon 21:42 ]
******** DONE Pourquoi nombre de lignes différentes avec la version d'Alexis -> isec ne gère pas plusieurs ALT
CLOSED: [2022-11-20 Sun 17:56]
********* Tester sur chromosome 20
#+begin_src sh :dir ~/code/bisonex/test_isec
bcftools view --regions NC_000020.11 ../database/dbSNP/dbSNP_common.vcf.gz -o dbSNP_common_chr20.vcf.gz
bcftools view --regions 20 ../database/clinvar/clinvar.vcf.gz -o clinvar_chr20.vcf.gz
tabix dbSNP_common_chr20.vcf.gz
tabix clinvar_chr20.vcf.gz
#+end_src
#+RESULTS:
Attention à bien renommer clinvar !
#+begin_src sh :dir ~/code/bisonex/test_isec
mv clinvar_chr20.vcf.gz clinvar_chr20_notremapped.vcf.gz
bcftools annotate --rename-chrs chromosome_mapping.txt clinvar_chr20_notremapped.vcf.gz -o clinvar_chr20.vcf.gz
#+end_src
#+RESULTS:
On teste l'intersection dbsnp et clinvar patho ainsi que le complémentaire
*ATTENTION*: sans indexer les vcf, les fichiers seront *VIDES*
*ATTENTION*: il faut include tous les variants de SNP avec loption -i- (par défaut les filtres s'appliquent sur les 2)
#+begin_src sh :dir ~/code/bisonex/test_isec
snp=dbSNP_common_chr20.vcf.gz
clinvar=clinvar_chr20.vcf.gz
bcftools isec -i 'INFO/CLNSIG="Pathogenic"' -p test $snp $clinvar
for i in test/*; do echo $i; grep '^NC' $i | wc -l; done
#+end_src
#+RESULTS:
| test/0000.vcf |
| 0 |
| test/0001.vcf |
| 1787 |
| test/0002.vcf |
| 0 |
| test/0003.vcf |
| 0 |
| test/README.txt |
| 0 |
| test/sites.txt |
| 1787 |
A priori, pas de clinvar patho dans dbSNP sur ce chromosome...
Clinvar stocke le numéro dbSNP donc on pourrait vérifier mais il faudrait aller voir si le SNP est bien "common"
Si on utilise la version d'Alexis
#+begin_src sh :dir ~/code/bisonex/test_isec
snp=dbSNP_common_chr20.vcf.gz
clinvar=clinvar_chr20_notremapped.vcf.gz
python ../script/pythonScript/clinvar_sbSNP.py \
--clinvar $clinvar \
--chrm_name_table ../database/RefSeq/refseq_to_number_only_consensual.txt \
--dbSNP $snp --output prod.txt
wc -l prod.txt
zgrep '^NC' dbSNP_common_chr20.vcf.gz | wc -l
#+end_src
#+RESULTS:
| 518832 | prod.txt |
| 518846 | |
On devrait donc avoir 14 common snp clinvar patho...
Test :
#+begin_src sh :dir ~/code/bisonex/test_isec
bcftools query -f '%ID\n' dbSNP_common_chr20.vcf.gz | sort > chr20_id.txt
sort prod.txt > prod_sorted.txt
comm -23 chr20_id.txt prod_sorted.txt
#+end_src
#+RESULTS:
| rs1044396 |
| rs1131695 |
| rs146917730 |
| rs1799990 |
| rs1801138 |
| rs1801545 |
| rs181943893 |
| rs2424926 |
| rs35873579 |
| rs35938843 |
| rs36106901 |
| rs3827075 |
| rs373200654 |
| rs79338570 |
Si on prend le premier
#+begin_src sh :dir ~/code/bisonex/test_isec
bcftools query -f '%CHROM %POS %ID %REF %ALT\n' -i 'ID="rs1044396"' dbSNP_common_chr20.vcf.gz
bcftools query -f '%CHROM %POS %ID %REF %ALT\n' -i 'INFO/RS="1044396"' clinvar_chr20.vcf.gz
#+end_src
#+RESULTS:
| NC_000020.11 | 63349782 | rs1044396 | G | A,C |
| NC_000020.11 | 63349782 | 93427 | G | A |
| NC_000020.11 | 63349782 | 857384 | G | C |
isec ne gère donc pas la représentation des allèles alternatifs...
#+begin_src sh :dir ~/code/bisonex/test_isec
snp=dbSNP_common_chr20.vcf.gz
clinvar=clinvar_chr20.vcf.gz
bcftools isec -i- -i 'INFO/CLNSIG="Pathogenic"' -c none -p test $snp $clinvar
for i in test/*; do echo $i; grep '^NC' $i | wc -l; done
#+end_src
#+RESULTS:
| test/0000.vcf |
| 518846 |
| test/0001.vcf |
| 1787 |
| test/0002.vcf |
| 0 |
| test/0003.vcf |
| 0 |
| test/README.txt |
| 0 |
| test/sites.txt |
| 520633 |
******* DONE Essai bedtools intersect
#+begin_src sh
bedtools intersect -a dbSNP_common.vcf.gz -b clinvar.vcf.gz
#+end_src
$ wc -l intersect.vcf
220206 intersect.vcf
***** TODO ID commo snp not clinvar patho
Résoudre [[*Pourquoi nombre de lignes différentes avec la version d'Alexis][Pourquoi nombre de lignes différentes avec la version d'Alexis]]
***** STRT ID commo snp not clinvar patho
- isec : [[*Pourquoi nombre de lignes différentes avec la version d'Alexis -> isec ne gère pas plusieurs ALT][Pourquoi nombre de lignes différentes avec la version d'Alexis -> isec ne gère pas plusieurs ALT]]
- utiliser directement l'identifiant dbSNP dans clinvar ?
- rtgtools ?