![]() |
Python¥Ð¥¤¥ª/¥Ä¡¼¥ë/VarCall-DRR006760http://pepper.is.sci.toho-u.ac.jp/pepper/index.php?Python%A5%D0%A5%A4%A5%AA%2F%A5%C4%A1%BC%A5%EB%2FVarCall-DRR006760 |
![]() |
Python¥Ð¥¤¥ª?¡¡Python¥Ð¥¤¥ª/¥Ä¡¼¥ë?
3773¡¡¡¡¡¡2019-06-19 (¿å) 16:57:45
»²¾È
¸µ¸¦µæ¤Ï¡¢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
¤Þ¤º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¤Ë¤è¤ë¥¢¥é¥¤¥ó¥á¥ó¥È¤ò¤ä¤Ã¤Æ¤ß¤ë¡£
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_genes.txt ¤Ï¥¿¥Ö¶èÀÚ¤ê¤Ç¾å¿Þ¤ËÂбþ¤¹¤ë¥Ç¡¼¥¿¤¬ÊѰۤ´¤È¤Ëɽ¤Ë¤µ¤ì¤Æ¤¤¤ë¡£
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
GATK¤Ç¤Î¥Õ¥£¥ë¥¿¤ËÈæ¤Ù¤ë¤È¾¯¤·Â¿¤¯»Ä¤Ã¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤ë¡£ ²¿¤«¤¦¤Þ¤¯¹Ô¤Ã¤Æ¤¤¤Ê¤¤¡£
¥Þ¥Ã¥Ô¥ó¥°
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