Python¥Ð¥¤¥ª?¡¡Python¥Ð¥¤¥ª/¥Ä¡¼¥ë?
3773¡¡¡¡¡¡2019-06-19 (¿å) 16:57:45

Variant Calling ¶µ²Ê½ñ¸þ¤±¥µ¥ó¥×¥ë¡¡DRR006760

»²¾È

¥µ¥ó¥×¥ë¥Ç¡¼¥¿¤Î¥À¥¦¥ó¥í¡¼¥É

¸µ¸¦µæ¤Ï¡¢Shimazaki H., Honda J, Naoi T., Namekawa M., Nakano I., Yazaki M., Nakamura K., Yoshida K., Ikeda S., Ishiura H., Fukuda Y., Takahashi Y., Goto J., Tsuji S. and Takiyama Y.: Autosomal-recessive complicated spastic paraplegia with a novel lysosomal trafficking regulator gene mutation. J Neurol Neurosurg Psychiatry. 2014 Sep;85(9):1024-8

DRY²òÀ϶µËÜ¡¡p161 ¤Ç»È¤¦DRR006760¤ò¥À¥¦¥ó¥í¡¼¥É

¥¢¥¯¥»¥¹¤Ï¡¢ÅÐÏ¿¥Ç¡¼¥¿¤Î¸¡º÷¡¡Web¾å¤Ç

http://trace.ddbj.nig.ac.jp/DRASearch/submission?acc=DRA000961

ɽ¼¨¤µ¤ì¤¿±¦Â¦¤ÎRUN¤«¤éSRA¤ò¥¯¥ê¥Ã¥¯¤·¤Æ

/ddbj_database/dra/sralite/ByExp/litesra/DRX/DRX005/DRX005949/DRR006760/DRR006760.sra

¤ò¥À¥¦¥ó¥í¡¼¥É¡£¡¡¡¡FASTQ¤ò¥¯¥ê¥Ã¥¯¤·¤Æ£²¤Ä¤ÎFASTQ¥Õ¥¡¥¤¥ë¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤â¤è¤µ¤½¤¦¤À¡£

¥À¥¦¥ó¥í¡¼¥É¤·¤¿DRR006760.sra¥Õ¥¡¥¤¥ë¤ò¡¢dump-fastq¤Ç²òÅàʬ²ò¡£--split-files¤ò˺¤ì¤º¤Ë¡£

dump-fastq --split-files DRR006760.sra

·ë²Ì¤Ï

DRR006760_1.fastq
DRR006760_2.fastq

¸å¤Ç»È¤¦¤¿¤á¤Ë¡¢¤½¤ì¤¾¤ì¤ò°µ½Ì¡£gzip¤Ç¤âbgzip¤Ç¤â¤è¤µ¤½¤¦¡£

gzip -c DRR006760_1.fastq
gzip -c DRR006760_2.fastq

¥ì¥Õ¥¡¥ì¥ó¥¹¥²¥Î¥à¤Î¥À¥¦¥ó¥í¡¼¥É

DRY²òÀ϶µËÜ¡¡p151 ¤Ë½¾¤Ã¤Æ¡¢broadinstitute¤«¤éhuman_g1k_v37_decoy¤ò¥À¥¦¥ó¥í¡¼¥É¤¹¤ë

wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/b37/human_g1k_v37_decoy.dict.gz
wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/b37/human_g1k_v37_decoy.fasta.fai.gz
wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/b37/human_g1k_v37_decoy.fasta.gz

¥¤¥ó¥¿¡¼¥Ð¥ë¥ê¥¹¥È¡¢´ûÃΤΥХꥢ¥ó¥È¥Ç¡¼¥¿¤Î¥À¥¦¥ó¥í¡¼¥É

¥¤¥ó¥¿¡¼¥Ð¥ë¥ê¥¹¥È

wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/b37/Broad.human.exome.b37.interval_list.gz

´ûÃΤΥХꥢ¥ó¥È¥Ç¡¼¥¿

wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/b37/dbsnp_138.b37.vcf.gz
wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/b37/dbsnp_138.b37.vcf.idx.gz
wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/b37/1000G_phase1.indels.b37.vcf.gz
wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/b37/1000G_phase1.indels.b37.vcf.idx.gz
wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/b37/Mills_and_1000G_gold_standard.indels.b37.vcf.gz
wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/b37/Mills_and_1000G_gold_standard.indels.b37.vcf.idx.gz

¥¯¥ª¥ê¥Æ¥£¥Á¥§¥Ã¥¯

fastqc --nogroup DRR006760_1.fastq.gz
fastqc --nogroup DRR006760_2.fastq.gz

¥È¥ê¥ß¥ó¥°

java -jar -Xmx512m /usr/local/Trimmomatic/trimmomatic-0.38.jar \
  PE                     \
  -threads 32         \
  -phred33               \
  -trimlog log_DRR006760.txt \
  DRR006760_1.fastq.gz  \
  DRR006760_2.fastq.gz  \
  paired_DRR006760_1.trim.fastq.gz   \
  unpaired_DRR006760_1.trim.fastq.gz \
  paired_DRR006760_2.trim.fastq.gz   \
  unpaired_DRR006760_2.trim.fastq.gz \
  ILLUMINACLIP:TruSeq3-PE-2.fa:2:30:10 \
  LEADING:20 \
  TRAILING:20 \
  SLIDINGWINDOW:4:15 \
  MINLEN:50

MINLEN¤ò50¤Ë¤·¤Æ¤¤¤ë¡ÊDRY²òÀϤǤÎÃͤòÍøÍѡˡ£ILLUMINACLIP¤ÎÂÅÅöÀ­¤ÏÉÔÌÀ¡£DRY²òÀϤǤϻØÄꤷ¤Æ¤¤¤Ê¤¤¡£Illumina Adapter Sequences Document¡¢¡¡Illumina Adapter Sequences

¥¢¥é¥¤¥ó¥á¥ó¥È

¥ì¥Õ¥¡¥ì¥ó¥¹¥²¥Î¥à¡¡human_g1k_v37_decoy¤Ë¥¢¥é¥¤¥ó¥á¥ó¥È¤¹¤ë¡£¥Þ¥Ë¥å¥¢¥ë:ttps://ccb.jhu.edu/software/hisat2/manual.shtml

HISAT-2¤Ç¥¢¥é¥¤¥ó¥á¥ó¥È¤¹¤ë¾ì¹ç

¤Þ¤ºhisat2-build¤Ç¥ì¥Õ¥¡¥ì¥ó¥¹¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºî¤ë

nohup hisat2-build human_g1k_v37_decoy.fasta.gz human_g1k_v37_decoy-build.fasta &> nohup-hisat2-build.out

¥ê¥Õ¥¡¥ì¥ó¥¹¤ÎÆþÎϤò°µ½ÌºÑ¤ßgz¤ÇÍ¿¤¨¤¿¤È¤³¤í¡¢¼¡¤Î¥¨¥é¡¼¤ÇºîÀ®¤Ç¤­¤º¡£

Calculating joined length
Writing header
Reserving space for joined string
Joining reference sequences
Reference file does not seem to be a FASTA file
  Time to join reference sequences: 00:00:01
Total time for call to driver() for forward index: 00:50:11
Error: Encountered internal HISAT2 exception (#1)

¥ê¥Õ¥¡¥ì¥ó¥¹¤ÎÆþÎϤò°µ½ÌÁ°¤Î¥Õ¥¡¥¤¥ë¤Ë¤¹¤ë¤Èưºî¡£

nohup hisat2-build human_g1k_v37_decoy.fasta human_g1k_v37_decoy-build.fasta &>nohup-hisat2-build-2.out &

¥Þ¥Ã¥Ô¥ó¥°¤Ï¡¢

nohup hisat2 -p 32 --dta-cufflinks -x human_g1k_v37_decoy-build.fasta -1 paired_DRR006760_1.trim.fastq.gz -2 paired_DRR006760_2.trim.fastq.gz -S DRR006760_hisat2.sam >& nohup-hisat2-align.out

¥½¡¼¥È¡¦¥¤¥ó¥Ç¥Ã¥¯¥¹ÉÕ¤± Samtools document

samtools sort -@16 -m4G DRR006760_hisat2.sam > DRR006760_hisat2_sorted.bam
samtools index DRR006760_hisat2_sorted.bam  DDR006760_hisat2_sorted.bai

GATK/picard¤Ë¤è¤ë¥ê¡¼¥É¥Ú¥¢¾ðÊó¤Î½¤Éü GATK document

gatk FixMateInformation -I DRR006760_hisat2_sorted.bam -O DRR006760_hisat2_fixmate_sorted.bam -SO coordinate -AS true --CREATE_INDEX

½ÅÊ£¥ê¡¼¥É¤Î½üµî¡£GATK/picard¤Ç¹Ô¤¦

gatk MarkDuplicates -I DRR006760_hisat2_fixmate_sorted.bam -M DRR006760_hisat2_fixmate.duplicated.metrics -O DRR006760_hisat2_fixmate_dedup_sorted.bam --ASSUME_SORTED TRUE --REMOVE_DUPLICATES TRUE
samtools index DRR006760_hisat2_fixmate_dedup_sorted.bam DRR006760_hisat2_fixmate_dedup_sorted.bai

¤³¤ì¤«¤é¡¢bcftools¤Çmpileup¤·¡¢VFC¥Õ¥¡¥¤¥ë¤òºî¤ë

bcftools mpileup -Ou -f human_g1k_v37_decoy.fasta DRR006760_hisat2_fixmate_dedup_sorted.bam | bcftools call -Ou -mv -o DRR006760_hisat2.call.vcf

DRY¶µËÜÄ̤êBWA¤Ç¥¢¥é¥¤¥ó¥á¥ó¥È¤¹¤ë¾ì¹ç

DRY¶µËÜÄ̤ê¤Îbwa¤Ë¤è¤ë¥¢¥é¥¤¥ó¥á¥ó¥È¤ò¤ä¤Ã¤Æ¤ß¤ë¡£

bwa index -p human_g1k_v37_decoy human_g1k_v37_decoy.fasta.gz

bwa mem -t16 -M \
 -R "@RG\tID:FLOWCELLID\tSM:DDR006760\tPL:illumina\tLB:DRR006760_library_1" \
 human_g1k_v37_decoy.fasta \
 paired_DRR006760_1.trim.fastq.gz paired_DRR006760_2.trim.fastq.gz | \
 samtools view -@4 -bS - > DRR006760_aligned_reads.bam

·ë²Ì¤ÏDRR006760_aligned_reads.bam¤ËÆÀ¤é¤ì¤Æ¤¤¤ë¡£¤³¤ì¤òsort¤·index¤·¤Æ¤ª¤¯¡£

samtools sort -@16 -m4G DRR006760_aligned_reads.bam > DRR006760_aligned_reads_sorted.bam
samtools index DRR006760_aligned_reads_sorted.bam  DDR006760_aligned_reads_sorted.bai

GATK/picard¤Ë¤è¤ë¥ê¡¼¥É¥Ú¥¢¾ðÊó¤Î½¤Éü

gatk FixMateInformation -I DRR006760_aligned_reads_sorted.bam -O DRR006760_aligned_reads_fixmate_sorted.bam -SO coordinate -AS true --CREATE_INDEX

¹¹¤ËGATK/picard¤Ë¤è¤ë½ÅÊ£¥ê¡¼¥É¤Î½üµî

gatk MarkDuplicates -I DRR006760_aligned_reads_fixmate_sorted.bam -M DRR006760_aligned_reads_fixmate_duplicate.metrics -O DRR006760_aligned_reads_fixmate_dedup_sorted.bam --ASSUME_SORTED TRUE --REMOVE_DUPLICATES TRUE
samtools index DRR006760_aligned_reads_fixmate_dedup_sorted.bam DRR006760_aligned_reads_fixmate_dedup_sorted.bai

DRY²òÀ϶µËܤǤϤ³¤Î¼¡¤Ë¡Ö¥í¡¼¥«¥ë¥ê¥¢¥é¥¤¥ó¥á¥ó¥È¡×¤ÇGATK¤ÎRealignerTargetCreator¤ÈIndelRealigner¤¬É¬ÍפȤ·¤Æ¤¤¤ë¤¬¡¢GATK4¤Ç¤Ï³°¤µ¤ì¤Æ¤¤¤ë¤¦¤¨¡¢FORUM FORUM¤Ç¤Ï¡ÖÍפé¤Ê¤¤¤Î¤ÇBest Practice¤«¤é³°¤·¤¿¡£Just skip¡×¤È½ñ¤¤¤Æ¤¢¤ë¡£

¤³¤ì¤«¤é¡¢bcftools¤Çmpileup¤·¡¢VFC¥Õ¥¡¥¤¥ë¤òºî¤ë

bcftools mpileup -Ou -f human_g1k_v37_decoy.fasta DRR006760_aligned_reads_fixmate_dedup_sorted.bam | bcftools call -Ou -mv -o DRR006760_aligned_reads.call.vcf

¤³¤Î¾õÂ֤ǤÏBGZF ¡Ê¥Ö¥í¥Ã¥¯¥ì¥Ù¥ë¤Ç°µ½Ì¡Ë¤·¤Æ¤¢¤ë¤Î¤Ç¡¢ÌÜ¤ÇÆÉ¤ß¤¿¤±¤ì¤Ð¿­Ä¹¤¹¤ëɬÍ×¥¢¥ê¡£

bctools view -o DRR006760_aligned_reads.call.readable.vcf DRR006760_aligned_reads.call.vcf

¥·¡¼¥±¥ó¥¹¥¯¥ª¥ê¥Æ¥£¤ÎºÆÉ¾²Á¡¡BaseRecalibrator

knownSites¤È¤·¤Ædbsnp_138.b37.vcf¤ÈMills_and_1000G_gold_standard.indels.b37.vcf¤ò»È¤Ã¤Æ¡¢ºÆÉ¾²Á¤¹¤ë¡£human_g1k_v37_decoy.dict¡¢dbsnp_138.b37.vcf¡¢Mills_and_1000G_gold_standard_indels.b37.vcf¤Ï²òÅष¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¤é¤·¤¤¡£

gatk BaseRecalibrator -I DRR006760_aligned_reads_fixmate_dedup_sorted.bam -R human_g1k_v37_decoy.fasta  --known-sites dbsnp_138.b37.vcf --known-sites Mills_and_1000G_Gold_standard.indels.b37.vcf -O DRR006760_recal.table

¼¡¤ÎPrintReads¤Ï¡¢GATK4¤Ç¤ÏApplyBQSR¤ËÃÖ¤­´¹¤¨¤é¤ì¤Æ¤¤¤ë¤é¤·¤¤¡£FORUM

gatk ApplyBQSR -R human_g1k_v37_decoy.fasta -I DRR006760_aligned_reads_fixmate_dedup_sorted.bam --bqsr-recal-file DRR006760_recal.table -O DRR006760_aligned_reads_fixmate_dedup_recal_sorted.bam
samtools index DRR006760_aligned_reads_fixmate_dedup_recal_sorted.bam DRR006760_aligned_reads_fixmate_dedup_recal_sorted.bai

¤¤¤è¤¤¤èHaplotypeCaller¤Ç¥Ð¥ê¥¢¥ó¥È¸¡½Ð¤·¡¢GVCF¥Õ¥¡¥¤¥ë¤òºî¤ë¡¡¡ÊDRY²òÀÏÆþÌçp172¡Ë
½àÈ÷¤Ç¡¢Broad.human.exome.b37.interval.list.gz ¤òungzip¤·¤Æ¤ª¤¯¡£

gunzip -c Broad.human.exome.b37.interval.list.gz > Broad.human.exome.b37.interval.list
gatk --java-options "-Xmx4g" HaplotypeCaller -R human_g1k_v37_decoy.fasta -I DRR006760_aligned_reads_fixmate_dedup_recal_sorted.bam -L Broad.human.exome.b37.interval.list --dbsnp dbsnp_138.b37.vcf -ERC GVCF -O DRR006760_raw_variants.g.vcf.gz -bamout bamout.bam

Ê£¿ô¥µ¥ó¥×¥ë¤Î½¸Ìó½èÍý¡¡¡Ê¤³¤³¤Ç¤Ï£±¼ïÎà¤À¤±¤À¤¬¡¢¤È½ñ¤¤¤Æ¤¢¤ë¡Ë

gatk --java-options "-Xmx4g" GenotypeGVCFs -R human_g1k_v37_decoy.fasta -V DRR006760_raw_variants.g.vcf.gz -O DRR006760_combined_genotyped.vcf.gz

¥Õ¥£¥ë¥¿¥ê¥ó¥°½èÍý¤Î¤¿¤á¤Ë¡¢SelectVariants¤òÍѤ¤¤ÆSNVÉôʬ¤À¤±¤òÃê½Ð¤¹¤ë

gatk SelectVariants -R human_g1k_v37_decoy.fasta -V DRR006760_combined_genotyped.vcf.gz --select-type-to-include SNP -O DRR006760_combined_genotyped_raw_snps.vcf

¤³¤ì¤Ï¡¢pyVCF¤Ç´Êñ¤Ë¤Ç¤­¤ë

import vcf
infile = 'DRR006760_combined_genotyped.vcf'
outvcffile = 'DRR006760_combined_genotyped.snpsimple.vcf'

vcf_reader = vcf.Reader(open(infile, 'r'))
vcf_writer = vcf.Writer(open(outvcffile, 'w'), vcf_fh);
for i, snp_record in enumerate(vcf_reader):
    if snp_record.is_snp:
        vcf_writer.write_record(snp_record)
vcf_writer.close()
print('complete')

¤³¤Îis_snp¤ÎÆâÍÆ¤Ï¡¢vcf.model._Record¤Î¥½¡¼¥¹¥³¡¼¥É¤Ë¤è¤ë¤È

   def is_snp(self):
       """ Return whether or not the variant is a SNP """
       if len(self.REF) > 1:
           return False
       for alt in self.ALT:
           if alt is None or alt.type != "SNV":
               return False
           if alt not in ['A', 'C', 'G', 'T', 'N', '*']:
               return False
       return True

ƱÍͤˡ¢is_indel¤äis_sv (structureal variant)¡¢var_type¡Êvariant type¡Ë¡¢var_subtype¤Ê¤É¤¬¤¢¤ë¡£

SNVÉôʬ¤Î¥Õ¥£¥ë¥¿¥ê¥ó¥°¤ò¹Ô¤¦¡£GATK¤Î¥Õ¥£¥ë¥¿¥ê¥ó¥°¤Ï¡¢FILTER¥Õ¥£¡¼¥ë¥É¤Ë¥Þ¡¼¥¯¤òÉÕ¤±¤ëVariantFiltering¤È¡¢¼ÂºÝ¤Ë¥Ç¡¼¥¿Ã椫¤é¥ì¥³¡¼¥É¤òºï½ü¤¹¤ëSelectVariants¤Î£²Ãʳ¬¤Ç¹Ô¤¨¤ë¡£¡Ê¤½¤¦¤Ç¤Ê¤¯¡¢Ä¾ÀÜSelectVariants¤ÇºÙ¤«¤¤¾ò·ï¤ò½ñ¤¤¤Æ¤·¤Þ¤¦¤³¤È¤â¤Ç¤­¤½¤¦¤À¡Ë¤³¤³¤Ç¤ÏDRY²òÀ϶µËÜÄ̤ê¤Ë¤ä¤Ã¤Æ¤ß¤ë¡£

gatk VariantFiltration -R human_g1k_v37_decoy.fasta \
  -V DRR006760_combined_genotyped_raw_snps.vcf \
  -O DRR006760_combined_genotyped_filtered_snps.vcf \
  --cluster-size 3 --cluster-window-size 10 \
  --filter-name "LowQD" --filter-expression "QD < 2.0" \
  --filter-name "HighFisherStrand" --filter-expression "FS > 60.0" \
  --filter-name "HighHaplotypeScore" --filter-expression "HaplotypeScore > 13.0" \
  --filter-name "LowRMSMappingQuality" --filter-expression "MQ < 40.0" \
  --filter-name "LowMQRankSum"  --filter-expression "MQRankSum < -12.5" \
  --filter-name "LowReadPosRankSum" --filter-expression "ReadPosRankSum < -8.0" \
  --filter-name "HardToValidate" \
     --filter-expression "MQ0 > 4 && ((MQ0 / (1.0 * DP)) > 0.1)" \
  --filter-name "VeryLowQual" --filter-expression "Qual < 30.0" \
  --filter-name "LowQual" --filter-expression "QUAL >= 30.0 && QUAL < 50.0" 

INDELÉôʬ¤À¤±¤Î¥Õ¥£¥ë¥¿¥ê¥ó¥°½èÍý¤ò¤¹¤ë¤¿¤á¡¢INDELÉôʬ¤ò¼è½Ð¤¹

gatk SelectVariants -R human_g1k_v37_decoy.fasta -V DRR006760_combined_genotyped.vcf.gz --select-type-to-include INDEL -O DRR006760_combined_genotyped_raw_indels.vcf.gz

¾å¤ÈƱÍͤˡ¢VariantFilteration¤Ç¥¯¥ª¥ê¥Æ¥£¤ÎÄ㤤¥Ð¥ê¥¢¥ó¥È¤Ë¥Þ¡¼¥¯ÉÕ¤±¤ò¤¹¤ë¡£

gatk VariantFiltration -R human_g1k_v37_decoy.fasta \
  -V DRR006760_combined_genotyped_raw_indels.vcf.gz \
  -O DRR006760_combined_genotyped_filtered_indels.vcf.gz \
  --filter-name "LowQD" --filter-expression "QD < 2.0" \
  --filter-name "HighFisherStrand" --filter-expression "FS > 200.0" \
  --filter-name "LowReadPosRankSum" --filter-expression "ReadPosRankSum < -20.0"\

CombineVariants¤ò»È¤Ã¤Æ¡¢SNV¤Î¥Õ¥£¥ë¥¿·ë²Ì¤ÈINDEL¤Î¥Õ¥£¥ë¥¿·ë²Ì¤ò·ë¹ç¤¹¤ë¡£CombineVariants¤Ïgatk¤Ç¸Æ¤Ù¤ë¥µ¥Ö¥³¥Þ¥ó¥É¤ËÆþ¤Ã¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢Ä¾ÀÜjava¤«¤éµ¯Æ°¤¹¤ë¡£

java -Xmx4g -jar /usr/local/src/gatk-4.1.2.0/gatk-package-4.1.2.0-local.jar \
  -T CombineVariants -R human_g1k_v37_decoy.fasta  \
  --assumeIdenticalSamples \
  -V:SNP DRR006760_combined_genotyped_filtered_snps.vcf.gz \
  -V:INDEL DRR006760_combined_genotyped_filtered_indels.vcf.gz \
  -oDRR006760_combined_genotyped_filtered_snps_indels_mixed.vcf.gz \
  -genotypeMergeOptions UNIQUIFY

¾åµ­¤Ï¤¦¤Þ¤¯Æ°¤«¤Ê¤¤¤è¤¦¤À¡£Âå¤ï¤ê¤Ë°Ê²¼¤ò»È¤¦¡£

gatk MergeVcfs -I DRR006760_combined_genotyped_filtered_snps.vcf \
  -I DRR006760_combined_genotyped_filtered_indels.vcf \
  -O DRR006760_combined_genotyped_filtered_snps_indels_mixed.vcf.gz

¡Êgz¤Ï½èÍý¤Ç¤­¤Ê¤¤¤Î¤Çungzip¤·¤Æ¤ª¤¯¡Ë

SelectVariants¤Ç¥Þ¡¼¥¯¤·¤¿¥Ç¡¼¥¿¤ò½üµî¤¹¤ë¡£

gatk SelectVariants -R human_g1k_v37_decoy.fasta \
  -V DRR006760_combined_genotyped_filtered_snps_indels_mixed.vcf.gz \
  --exclude-filtered --exclude-non-variants \
  -O DRR006760_combined_genotyped_filtered_snps_indels_mixed.PASS.vcf

p182 ¥Ð¥ê¥¢¥ó¥È¤Î¥¢¥Î¥Æ¡¼¥·¥ç¥ó Annovar¤ò»È¤Ã¤Æ¤¤¤ë¡£

Âå¤ï¤ê¤Ë¡¢SpnEff¤ò»È¤Ã¤Æ¤ß¤è¤¦¡£Java¥Ù¡¼¥¹¡£¥Þ¥Ë¥å¥¢¥ë

java -Xmx4g -jar /usr/local/snpEff.jar GRCh37.75 DRR006760_combined_genotyped_filtered_snps_indels_mixed.PASS.vcf > DRR006760_PASS.ann.vcf

À¸À®¤µ¤ì¤¿DRR006760_PASS.ann.vcf¤ÎÀèÆ¬Éôʬ

4       190878597       .       C       T       1554.6  PASS    AC=1;AF=0.500;AN=2;BaseQRankSum=-4.162e+00;DP=235;ExcessHet=3.0103;FS=120.742;MLEAC=1;MLEAF=0.500;MQ=43.66;MQRankSum=-1.121e+01;QD=6.64;ReadPosRankSum=3.14;SOR=5.283;ANN=T|synonymous_variant|LOW|FRG1|ENSG00000109536|transcript|ENST00000226798|protein_coding|6/9|c.477C>T|p.Cys159Cys|699/1074|477/777|159/258||,T|synonymous_variant|LOW|FRG1|ENSG00000109536|transcript|ENST00000524583|protein_coding|5/7|c.93C>T|p.Cys31Cys|540/755|93/308|31/101||WARNING_TRANSCRIPT_INCOMPLETE,T|synonymous_variant|LOW|FRG1|ENSG00000109536|transcript|ENST00000531991|protein_coding|7/7|c.288C>T|p.Cys96Cys|678/738|288/348|96/115||WARNING_TRANSCRIPT_NO_STOP_CODON,T|upstream_gene_variant|MODIFIER|FRG1|ENSG00000109536|transcript|ENST00000507103|nonsense_mediated_decay||c.-3306C>T|||||3306|WARNING_TRANSCRIPT_NO_START_CODON,T|upstream_gene_variant|MODIFIER|FRG1|ENSG00000109536|transcript|ENST00000505327|processed_transcript||n.-3640C>T|||||3640|,T|downstream_gene_variant|MODIFIER|FRG1|ENSG00000109536|transcript|ENST00000533157|nonsense_mediated_decay||c.*15543C>T|||||2292|,T|non_coding_transcript_exon_variant|MODIFIER|FRG1|ENSG00000109536|transcript|ENST00000514482|processed_transcript|6/7|n.463C>T||||||  GT:AD:DP:GQ:PL  0/1:161,73:234:99:1562,0,5571
6       41774685        .       C       G       229.6   PASS    AC=1;AF=0.500;AN=2;BaseQRankSum=-2.290e+00;DP=51;ExcessHet=3.0103;FS=69.864;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.00;QD=4.59;ReadPosRankSum=-5.193e+00;SOR=5.992;ANN=G|missense_variant|MODERATE|USP49|ENSG00000164663|transcript|ENST00000373009|protein_coding|1/5|c.37G>C|p.Ala13Pro|37/2067|37/2067|13/688||,G|missense_variant|MODERATE|USP49|ENSG00000164663|transcript|ENST00000394253|protein_coding|3/7|c.37G>C|p.Ala13Pro|367/9034|37/2067|13/688||,G|missense_variant|MODERATE|USP49|ENSG00000164663|transcript|ENST00000373010|protein_coding|6/10|c.37G>C|p.Ala13Pro|532/2446|37/1758|13/585||,G|missense_variant|MODERATE|USP49|ENSG00000164663|transcript|ENST00000373006|protein_coding|4/7|c.37G>C|p.Ala13Pro|259/3177|37/1923|13/640||,G|missense_variant|MODERATE|USP49|ENSG00000164663|transcript|ENST00000297229|protein_coding|2/5|c.37G>C|p.Ala13Pro|145/3062|37/1923|13/640||,G|missense_variant|MODERATE|USP49|ENSG00000164663|transcript|ENST00000437061|protein_coding|2/2|c.37G>C|p.Ala13Pro|477/553|37/113|13/36||WARNING_TRANSCRIPT_INCOMPLETE,G|missense_variant|MODERATE|USP49|ENSG00000164663|transcript|ENST00000423567|protein_coding|4/4|c.37G>C|p.Ala13Pro|744/752|37/45|13/14||WARNING_TRANSCRIPT_NO_STOP_CODON,G|upstream_gene_variant|MODIFIER|USP49|ENSG00000164663|transcript|ENST00000448078|nonsense_mediated_decay||c.-1203G>C|||||1202|WARNING_TRANSCRIPT_NO_START_CODON       GT:AD:DP:GQ:PL  0/1:31,19:50:99:237,0,831
6       71187020        .       A       C       260.6   PASS    AC=1;AF=0.500;AN=2;BaseQRankSum=-4.040e+00;DP=88;ExcessHet=3.0103;FS=122.727;MLEAC=1;MLEAF=0.500;MQ=60.00;MQRankSum=0.00;QD=2.96;ReadPosRankSum=-4.470e+00;SOR=7.222;ANN=C|missense_variant|MODERATE|FAM135A|ENSG00000082269|transcript|ENST00000418814|protein_coding|8/22|c.527A>C|p.His176Pro|1141/6415|527/4548|176/1515||,C|missense_variant|MODERATE|FAM135A|ENSG00000082269|transcript|ENST00000370479|protein_coding|7/22|c.398A>C|p.His133Pro|916/5676|398/3909|133/1302||,C|missense_variant|MODERATE|FAM135A|ENSG00000082269|transcript|ENST00000505769|protein_coding|7/22|c.527A>C|p.His176Pro|934/4806|527/3288|176/1095||,C|missense_variant|MODERATE|FAM135A|ENSG00000082269|transcript|ENST00000515323|protein_coding|7/14|c.527A>C|p.His176Pro|938/1926|527/1515|176/504||WARNING_TRANSCRIPT_NO_STOP_CODON,C|missense_variant|MODERATE|FAM135A|ENSG00000082269|transcript|ENST00000457062|protein_coding|6/21|c.398A>C|p.His133Pro|668/5282|398/3909|133/1302||,C|missense_variant|MODERATE|FAM135A|ENSG00000082269|transcript|ENST00000361499|protein_coding|8/22|c.527A>C|p.His176Pro|871/5042|527/3960|176/1319||,C|missense_variant|MODERATE|FAM135A|ENSG00000082269|transcript|ENST00000505868|protein_coding|5/18|c.527A>C|p.His176Pro|527/5173|527/4410|176/1469||,C|synonymous_variant|LOW|FAM135A|ENSG00000082269|transcript|ENST00000194672|nonsense_mediated_decay|6/21|c.393A>C|p.Thr131Thr|437/5198|393/444|131/147||,C|upstream_gene_variant|MODIFIER|FAM135A|ENSG00000082269|transcript|ENST00000425415|retained_intron||n.-4816A>C|||||4816|,C|non_coding_transcript_exon_variant|MODIFIER|FAM135A|ENSG00000082269|transcript|ENST00000393299|retained_intron|5/12|n.484A>C||||||     GT:AD:DP:GQ:PL  0/1:52,36:88:99:268,0,1339

¤³¤Î¥Ç¡¼¥¿¤òpyVCF¤ÇÆÉ¤ó¤Ç¤ß¤ë¡£

import vcf
# SnpEff¤ÇÆÀ¤é¤ì¤¿¡¡DRR006760_PASS.ann.vcf¡¡¤òpyVCF¤ÇÆÉ¤ó¤Ç¤ß¤ë
infile = 'DRR006760_PASS.ann.vcf'
outfile = 'mydata.txt'
with open(outfile, 'w') as outfh:
    vcf_fh = vcf.Reader(open(infile, 'r'))
    for i, snp_record in enumerate(vcf_fh):
        if i>5:
            break
        pl_list = []
        print(dir(snp_record))
        print('INFO', snp_record.INFO)
        print('ANN', snp_record.INFO['ANN'])
        for sample in snp_record.samples:
            #print(dir(sample.data))
            pl_list.append(str(sample['PL']))
        print(pl_list)
            
        new_record = [str(snp_record.CHROM),
                        str(snp_record.POS),
                        str(snp_record.ID),
                        str(snp_record.REF),
                        str(snp_record.ALT)]
            
        new_record.extend(pl_list)
            
        #outfh.write('\t'.join(new_record) + '\n')
print('complete')

¤Þ¤¿¡¢¥Õ¥¡¥¤¥ë¡¡snpEff_summary.html¡¡¤È¡¡snpEff_genes.txt¡¡¤¬ÆÀ¤é¤ì¤¿¡£

snpEff_summary.html¤ÏWebɽ¼¨¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢

SnpEff_html1.png
SnpEff_html2.png
SnpEff_html3.png
SnpEff_html4.png
SnpEff_html5.png
SnpEff_html6.png
SnpEff_html7.png
SnpEff_html8.png
SnpEff_html9.png
SnpEff_html10.png
SnpEff_html10-2.png
SnpEff_html11.png

snpEff_genes.txt ¤Ï¥¿¥Ö¶èÀÚ¤ê¤Ç¾å¿Þ¤ËÂбþ¤¹¤ë¥Ç¡¼¥¿¤¬ÊѰۤ´¤È¤Ëɽ¤Ë¤µ¤ì¤Æ¤¤¤ë¡£

SnpEff_genes2.png

VCF¤Î¥Õ¥£¥ë¥¿¥ê¥ó¥°¤ò¼«Ê¬¥Ð¡¼¥¸¥ç¥ó¤Ç

import vcf

# pyVCF¤ÇSNPÃê½Ð¤·¡¢¥Õ¥£¥ë¥¿¤ò³Ý¤±¤Æ¤ß¤ë¡£pyVCF¤Î¥Æ¥ó¥×¥ì¡¼¥È¤Ë¥Õ¥£¥ë¥¿¤ò­¤¹ÊýË¡¤â¤¢¤ë¤¬¡¢¤³¤³¤Ï¼«Á°¤È¤¹¤ë¡£
# DRY²òÀ϶µËܤ˽ФƤ¤¤ë¥Õ¥£¥ë¥¿¡Ê°Ê²¼¤ÎÄ̤ê¡Ë¤ÈƱ¤¸¤³¤È¤ò¤¹¤ë
# gatk VariantFiltration -V DRR006760_combined_genotyped_raw_snps.vcf -O DRR006760_combined_genotyped_filtered_snps.vcf \
#   --cluster-size 3 --cluster-window-size 10 \
#   --filter-name "LowQD" --filter-expression "QD < 2.0" \  QD¤ÏQuolity Score(6ÎóÌÜ)/NumberOfReads
#   --filter-name "HighFisherStrand" --filter-expression "FS > 60.0" \
#   --filter-name "HighHaplotypeScore" --filter-expression "HaplotypeScore > 13.0" \  
#   --filter-name "LowRMSMappingQuality" --filter-expression "MQ < 40.0" \
#   --filter-name "LowMQRankSum" --filter-expression "MQRankSum < -12.5" \
#   --filter-name "LowReadPosRankSum" --filterExpression "ReadPosRankSum < -8.0" \
#   --filter-name "HardToValidate" --filter-expression "MQ0 > 4 && ((MQ0 / (1.0 * DP)) > 0.1)" \
#   --filter-name "VeryLowQual" --filter-expression "Qual < 30.0" \
#   --filter-name "LowQual" --filter-expression "QUAL >= 30.0 && QUAL < 50.0" 
# GATK¤Î¥Ú¡¼¥¸https://software.broadinstitute.org/gatk/documentation/article?id=6925¤Ç¤Ï
#    QD, FS, MQ, MQRankSum and ReadPosRankSum.¤ò»È¤¦¤È½ñ¤¤¤Æ¤¤¤ë¡£
def filtered1(rec):
# ¤â¤·¥Õ¥£¥ë¥¿¾ò·ï¤òËþ¤¿¤»¤Ð¥Ñ¥¹¡ÊTrue¡Ë¡¢Ëþ¤¿¤µ¤Ê¤±¤ì¤Ð¥É¥í¥Ã¥×¡ÊFalse¡Ë
    
   if 'QD' in rec.INFO.keys():
       QD = (rec.INFO['QD'] < 2.0)
   else:
       QD = False  # QDµ­½Ò¤¬¤Ê¤±¤ì¤Ðfilter¤·¤Ê¤¤
   if 'FS' in rec.INFO.keys():
       FS = (rec.INFO['FS'] > 60.0)
   else:
       FS = False
   if 'HighHaplotypeScore' in rec.INFO.keys():
       HighHaplotypeScore = (rec.INFO['HighHaplotypeScore'] > 60.0)
   else:
       HighHaplotypeScore = False
   if 'MD' in rec.INFO.keys():
       MQ = (rec.INFO['MQ'] < 40.0)
   else:
       MQ = False
   if 'MQRankSum' in rec.INFO.keys():
       MQRankSum = (rec.INFO['MQRankSum'] < -12.0)
   else:
       MQRankSum = False
   if 'ReadPosRankSum' in rec.INFO.keys():
       ReadPosRankSum = (rec.INFO['ReadPosRankSum'] < -8.0)
   else:
       ReadPosRankSum = False
   LowQual = (rec.QUAL < 50)

   filter = QD or FS or HighHaplotypeScore or MQ or MQRankSum or ReadPosRankSum or LowQual
   return(filter)

def filtered2(rec):
# ¤â¤·¥Õ¥£¥ë¥¿¾ò·ï¤òËþ¤¿¤»¤Ð¥Ñ¥¹¡ÊTrue¡Ë¡¢Ëþ¤¿¤µ¤Ê¤±¤ì¤Ð¥É¥í¥Ã¥×¡ÊFalse¡Ë
    
    if 'QD' in rec.INFO.keys():
        QD = (rec.INFO['QD'] < 2.0)
    else:
        QD = False  # QDµ­½Ò¤¬¤Ê¤±¤ì¤Ðfilter¤·¤Ê¤¤
    if 'FS' in rec.INFO.keys():
        FS = (rec.INFO['FS'] > 200.0)
    else:
        FS = False
    if 'ReadPosRankSum' in rec.INFO.keys():
        ReadPosRankSum = (rec.INFO['ReadPosRankSum'] < -20.0)
    else:
        ReadPosRankSum = False
    filter = QD or FS or ReadPosRankSum
    return(filter)

infile = 'DRR006760_combined_genotyped.vcf'
#outfile = 'DRR006760_combined_genotyped.vcf.txt'
outvcffile = 'DRR006760_combined_genotyped.snpsimple.vcf'

vcf_fh = vcf.Reader(open(infile, 'r'))
vcfwriter = vcf.Writer(open(outvcffile, 'w'), vcf_fh);
for i, snp_record in enumerate(vcf_fh):
    #if (not snp_record.is_snp) or filtered(snp_record):
    #    print(i, snp_record)
    if (snp_record.is_snp and not filtered1(snp_record)) or (snp_record.is_indel and not filtered2(snp_record)):
        vcfwriter.write_record(snp_record)
vcfwriter.close()
#vcf_fh.close()
print('complete')

¤³¤Î½ÐÎϤò

java -Xmx4g -jar /usr/local/snpEff.jar GRCh37.75 DRR006760_combined_genotyped.snpsimple.vcf > DRR006760_snpsimple.ann.vcf

·ë²Ì¤Ï¡¢

wc -l snpEff_genes-0609.txt
64936 snpEff_genes-0609.txt
¤ËÂФ·¤Æ
wc -l snpEff_genes-0609-snpsimple.txt
65735 snpEff_genes-0609-snpsimple.txt
SnpEff-snpsimple_html1.png
SnpEff-snpsimple_html7.png

GATK¤Ç¤Î¥Õ¥£¥ë¥¿¤ËÈæ¤Ù¤ë¤È¾¯¤·Â¿¤¯»Ä¤Ã¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤ë¡£ ²¿¤«¤¦¤Þ¤¯¹Ô¤Ã¤Æ¤¤¤Ê¤¤¡£

Äɲá¡2019-06-12

¥Þ¥Ã¥Ô¥ó¥°

NIG¤Î¥Þ¥Ã¥Ô¥ó¥°¥Ä¡¼¥ëÈæ³Ó (2013/6¤Ë¤ª¤±¤ë¥ª¥×¥·¥ç¥óÈæ³Ó)

¥Ð¥ê¥¢¥ó¥È¥³¡¼¥ë¡¦¥Ñ¥¤¥×¥é¥¤¥ó¤Î¥µ¡¼¥Ù¥¤/Èæ³Ó

ÏÀʸ¡§ A Comparison of Variant Calling Pipelines Using Genome in a Bottle as a Reference
Hindawi Publishing Corporation BioMed Research International Volume 2015, Article ID 456479, 11 pages http://dx.doi.org/10.1155/2015/456479

ÏÀʸ¡§ A beginners guide to SNP calling from high-throughput DNA-sequencing data
Altmann A, Weber P, Bader D, Preuss M, Binder EB, Müller-Myhsok B. Hum Genet. 2012 Oct;131(10):1541-54.

ÆüËܸìÍ×Ìó¡¡review articleÍ×Ìó¡¡SNPs calling¥Ó¥®¥Ê¡¼¥º¥¬¥¤¥É - mac¤Ç¥¤¥ó¥Õ¥©¥Þ¥Æ¥£¥¯¥¹

FreeBayes ¥³¡¼¥ê¥ó¥°¥½¥Õ¥È

FreeBayes ekg/freebayes: Bayesian haplotype-based genetic polymorphism discovery and genotyping.
[1207.3907v2] Haplotype-based variant detection from short-read sequencing (2012 version)
Haplotype-based variant detection from short-read sequencing (2016 version, slightly updated)

freebayes ¥¤¥ó¥¹¥È¡¼¥ë ´Êñ¤Ê»È¤¤Êý – ¥Ð¥¤¥ª¥¤¥ó¥Õ¥© Æ»¾ì [bioinfo-Dojo]

²òÀâ

¥Ï¥×¥í¥¿¥¤¥×²òÀϤˤª¤±¤ë¿äÄꡦ¥Ö¥í¥Ã¥¯Æ±Äꤪ¤è¤Ó´ØÏ¢²òÀÏ¡ÊÉÚÅÄ À¿¡Ë

Base Quality Score Recalibration (BQSR)
Unfortunately the scores produced by the machines are subject to various sources of systematic (non-random) technical error, leading to over- or under-estimated base quality scores in the data. Some of these errors are due to the physics or the chemistry of how the sequencing reaction works, and some are probably due to manufacturing flaws in the equipment.

VCF¤ä¾¤Î¥¢¥Î¥Æ¡¼¥·¥ç¥ó¤ò·ë¹ç¤·¤Æ¥¢¥Î¥Æ¡¼¥·¥ç¥ó¤òºî¤ë¡©

Vcfanno: fast, flexible annotation of genetic variants (2016)
brentp/vcfanno: annotate a VCF with other VCFs/BEDs/tabixed files


źÉÕ¥Õ¥¡¥¤¥ë: fileSnpEff-snpsimple_html7.png 873·ï [¾ÜºÙ] fileSnpEff-snpsimple_html1.png 847·ï [¾ÜºÙ] fileSnpEff_html10-2.png 819·ï [¾ÜºÙ] fileSnpEff_genes2.png 786·ï [¾ÜºÙ] fileSnpEff_html11.png 788·ï [¾ÜºÙ] fileSnpEff_html10.png 790·ï [¾ÜºÙ] fileSnpEff_html9.png 816·ï [¾ÜºÙ] fileSnpEff_html8.png 751·ï [¾ÜºÙ] fileSnpEff_html7.png 808·ï [¾ÜºÙ] fileSnpEff_html6.png 754·ï [¾ÜºÙ] fileSnpEff_html5.png 741·ï [¾ÜºÙ] fileSnpEff_html4.png 706·ï [¾ÜºÙ] fileSnpEff_html3.png 736·ï [¾ÜºÙ] fileSnpEff_html2.png 790·ï [¾ÜºÙ] fileSnpEff_html1.png 780·ï [¾ÜºÙ]

¥È¥Ã¥×   ÊÔ½¸ Åà·ë º¹Ê¬ ¥Ð¥Ã¥¯¥¢¥Ã¥× źÉÕ Ê£À½ ̾Á°Êѹ¹ ¥ê¥í¡¼¥É   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS
Last-modified: 2019-06-19 (¿å) 16:57:45 (1379d)