VCFART

Give it a transcript and a range. It blows out every variant. 전사체와 구간만 주세요. 가능한 변이를 전부 뿜어냅니다.

VCFART reads HGVS ranges such as c.5075-100_c.5152+100, follows the transcript on your hg19 or hg38 FASTA, and writes every SNV, indel or codon swap as a sorted, normalized VCF that SpliceAI, ANNOVAR and VEP take as is.

VCFART는 c.5075-100_c.5152+100 같은 HGVS 구간을 읽고, hg19·hg38 FASTA 위에서 전사체를 따라가며, 가능한 모든 SNV·indel·코돈 치환을 정렬·정규화된 VCF로 씁니다. SpliceAI, ANNOVAR, VEP에 그대로 넣으면 됩니다.

python -m pip install vcfart
Source on GitHubGitHub에서 보기

Hover a cell, or tab into the map and use the arrow keys.칸 위에 마우스를 올리거나, Tab으로 들어가 화살표 키로 움직여 보세요.

HGVS c.
 
HGVS p.
 
Consequence
 
VCF recordVCF 레코드
 

What a run looks like실행하면 이렇게 나옵니다

Every step is logged with what it found, and the consequences come back as a coloured bar chart before the files are written. Colour switches off when you pipe the output or set NO_COLOR.단계마다 찾은 내용을 보여주고, 파일을 쓰기 전에 consequence 분포를 색깔 막대그래프로 보여줍니다. 출력을 파이프로 넘기거나 NO_COLOR를 설정하면 색은 꺼집니다.

$ vcfart generate -f demo.fa -a demo_refGene.txt -t NM_DEMO.1 -r ex3=exon3:30 -m snv,del,ins -o out/demo_ex3
 ██╗   ██╗ ██████╗███████╗ █████╗ ██████╗ ████████╗
 ██║   ██║██╔════╝██╔════╝██╔══██╗██╔══██╗╚══██╔══╝
 ██║   ██║██║     █████╗  ███████║██████╔╝   ██║
 ╚██╗ ██╔╝██║     ██╔══╝  ██╔══██║██╔══██╗   ██║
  ╚████╔╝ ╚██████╗██║     ██║  ██║██║  ██║   ██║
   ╚═══╝   ╚═════╝╚═╝     ╚═╝  ╚═╝╚═╝  ╚═╝   ╚═╝
   💨 뿌뿡  artificial VCFs for MAVE / SGE / DMS   v1.0.0

   reference | 🧬 demo.fa
  annotation | 📚 demo_refGene.txt
  transcript | 📍 NM_DEMO.1 DEMO1  chrDemo:501-2,843 (-)  5 exons  CDS 603 bp
      region | 🎯 ex3  c.181-30_342+30  chrDemo:1,752-1,973  222 bp  intron2 → intron3
    generate | 💨 1,772 raw edits → 1,487 unique variants
       types | 🧪 SNV 666   INS 664   DEL 157
 consequence | 📊 frameshift_variant                  ██████████████████████ 581
             |    missense_variant                    █████████████ 348
             |    intron_variant                      █████████ 227
             |    synonymous_variant                  ████ 118
             |    splice_region_variant               ███ 87
             |    splice_polypyrimidine_tract_variant ██ 56
             |    stop_gained                         █ 38
             |    splice_donor_variant                █ 11
             |    splice_acceptor_variant             █ 11
             |    splice_donor_5th_base_variant       █ 10
       write | 💾 out/demo_ex3.vcf
             | 💾 out/demo_ex3.tsv

  💨 뿌뿡!  1,487 variants → out/demo_ex3.vcf

What comes out출력 파일

Three plain-text files per run. The lines below are copied unedited from the run shown above, on the demo gene bundled in examples/.실행할 때마다 텍스트 파일 세 개가 나옵니다. 아래 줄들은 위 터미널 화면의 실행(examples/에 들어 있는 demo 유전자)에서 그대로 가져왔습니다.

PREFIX.vcf

Every variant, sorted and left-normalized, REF checked against your FASTA. The ID column carries the c. description.

모든 변이를 정렬하고 left-normalize하며, REF는 FASTA로 확인합니다. ID 열에 c. 표기가 들어갑니다.

#CHROM  POS   ID          REF ALT ... INFO
chrDemo 1944  c.181-1G>A  C   T   ... VA_HGVSc=c.181-1G>A;VA_CSQ=splice_acceptor_variant&intron_variant;
                                    VA_REGION=intron2;VA_TYPE=SNV;VA_ORIGIN=snv;VA_SET=ex3

PREFIX.tsv

One row per variant: HGVS c., predicted HGVS p., consequence, exon or intron, and which range produced it.

변이 한 줄씩: HGVS c., 예측 HGVS p., consequence, 엑손/인트론 위치, 어느 구간에서 나왔는지.

set  pos   ref alt hgvs_c                 hgvs_p      consequence       region
ex3  1936  G   A   NM_DEMO.1:c.188C>T     p.Pro63Leu  missense_variant  exon3

PREFIX.oligos.fa

With --oligo: the mutant window for each variant in transcript orientation, with your adapters attached.

--oligo를 주면: 변이마다 transcript 방향의 mutant 서열, 어댑터까지 붙여서.

>ex3|WT
…CTTTTCCTTTTTTTTCTCCAGACAACCCCCCCCATTTACGA…
>ex3|c.181-1G>A
…CTTTTCCTTTTTTTTCTCCAAACAACCCCCCCCATTTACGA…

Ranges, written the way you already write them구간은 평소 쓰던 대로

BRCA1, NM_007294.4, hg38. Exon numbers follow the transcript model in your annotation file.BRCA1, NM_007294.4, hg38 기준. 엑손 번호는 annotation 파일의 전사체 모델을 따릅니다.

You type입력VCFART readsVCFART가 읽는 구간
-r c.5075-100_c.5152+100chr17:43,063,774–43,064,051 (278 bp: intron 16, exon 17, intron 17)(278 bp: 인트론 16, 엑손 17, 인트론 17)
-r exon17:100the same 278 bp: exon 17 plus 100 bp on each side같은 278 bp: 엑손 17 + 양쪽 100 bp
-r int16=c.5075-100_c.5075-1the 3′ end of intron 16, labelled int16 in the output인트론 16의 3′ 끝, 출력에 int16 라벨로 표시
-r c.5075-1chr17:43,063,952 (the splice acceptor of exon 17)(엑손 17의 splice acceptor)
-r cds --exonic-onlyevery coding base from c.1 to the stop codon, introns left outc.1부터 stop codon까지 코딩 염기만, 인트론 제외

Four ways to mutate변이를 만드는 네 가지 방법

Combine them in one run, for example -m snv,del,codon. Variants that are the same at the sequence level are written once.한 번에 섞어 쓸 수 있습니다(예: -m snv,del,codon). 서열상 같은 변이는 한 번만 기록됩니다.

-m snv
All three alternative bases at every position. This is the default.모든 위치에서 나머지 염기 3개로 치환합니다. 기본값입니다.
-m del --del-sizes 1,3
Deletions of the lengths you list. Deleting any C of a CCCCCC run gives one record, named by the 3′ rule.지정한 길이의 결실. CCCCCC 중 어느 C를 지워도 한 줄로 합쳐지고, 3′ rule로 이름 붙습니다.
-m ins --ins-sizes 1
Every k-mer inserted between every pair of bases. Insertions that copy the neighbouring sequence are reported as dup.모든 염기 사이에 가능한 모든 k-mer 삽입. 옆 서열을 복제하는 삽입은 dup으로 표기됩니다.
-m codon
Deep-mutational-scanning codon swaps: one codon per amino acid plus Ter and a synonymous control, all 63 codons, or NNK.DMS 방식 코돈 치환: 아미노산마다 코돈 하나 + Ter + 동의 코돈 대조군, 63개 전부, 또는 NNK.

Checked against real data실제 데이터로 검증

Run on hg38 with the ANNOVAR hg38_refGene.txt transcript table.hg38과 ANNOVAR hg38_refGene.txt 전사체 테이블로 실행했습니다.

Target대상Variants변이 수Result결과
444-bp intron–exon–intron target, minus-strand gene444 bp 인트론–엑손–인트론 구간, minus strand 유전자1,332 SNVsPositions, alleles and c. labels identical to the authors’ original in-house MAVE scripts기존 in-house MAVE 스크립트와 위치, 염기, c. 표기 모두 동일
DRC1 coding sequence, NM_145038, plus strandDRC1 코딩 서열, NM_145038, plus strand6,669 SNVsc. and p. identical to ANNOVAR refGene for all 6,669, including start and stop changes6,669개 전부 ANNOVAR refGene과 c./p. 일치(start·stop 변화 포함)
Test suite: synthetic genes on both strands, indel normalization, protein edge cases테스트: 양쪽 strand 합성 유전자, indel 정규화, 단백질 예외 사례49 testsAll pass모두 통과

Start in four commands명령 네 개로 시작하기

Python 3.9 or newer, nothing else to install. Your FASTA gets a .fai index on first use if it has none.Python 3.9 이상이면 끝, 다른 설치는 없습니다. FASTA에 .fai가 없으면 처음 실행할 때 만듭니다.

  1. Install설치

    python -m pip install vcfart
  2. Look up the transcript전사체 확인

    vcfart info -f hg38.fa -a humandb/hg38_refGene.txt -t NM_007294.4
  3. Generate the variants변이 생성

    vcfart generate -f hg38.fa -a humandb/hg38_refGene.txt -t NM_007294.4 \
        -r exon17:100 -m snv,del -o BRCA1_ex17
  4. Score them점수 매기기

    spliceai -I BRCA1_ex17.vcf -O BRCA1_ex17.spliceai.vcf -R hg38.fa -A grch38