diff --git a/.codacy.yaml b/.codacy.yaml new file mode 100644 index 00000000..f790a750 --- /dev/null +++ b/.codacy.yaml @@ -0,0 +1,20 @@ +--- +# Codacy configuration. https://docs.codacy.com/repositories-configure/codacy-configuration-file/ +# +# pydocstyle has two pairs of mutually-exclusive rules: +# D203 vs D211 (blank line before class docstring; codebase follows D203) +# D212 vs D213 (multi-line summary line; codebase follows D212) +# Both rules in each pair are enabled in Codacy's default profile, which produces +# unavoidable noise — pick one and silence the other. Settings here also apply to +# any local pydocstyle invocation that reads `.pydocstyle`. + +engines: + pydocstyle: + enabled: true + settings: + add_ignore: ["D211", "D213"] + +exclude_paths: + - "docs/stylesheets/**" + - "docs/plans/**" + - "pgatk/tests/**" diff --git a/.codacy.yml b/.codacy.yml deleted file mode 100644 index 45babfd5..00000000 --- a/.codacy.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -exclude_paths: - - "docs/stylesheets/**" - - "docs/plans/**" - - "pgatk/tests/**" diff --git a/.gitignore b/.gitignore index 3e8faadc..4372c6af 100644 --- a/.gitignore +++ b/.gitignore @@ -119,7 +119,7 @@ pgatk/config/private/ # Test-generated output files (produced by pgatk tests) pgatk/testdata/proteindb_from_*.fa pgatk/testdata/output_decoy.fa -pgatk/testdata/test_cbioportal_data_mutations_mskcc_proteindb*.fa +pgatk/testdata/test_cbioportal_*_proteindb*.fa pgatk/testdata/test_cosmic_mutations_proteindb*.fa pgatk/testdata/test_blast_psms_out.tsv pgatk/testdata/test_blast_validate_psms_out.tsv @@ -135,3 +135,14 @@ pgatk/testdata/Meleagris_gallopavo* .DS_Store .codacy/ .cursor/ + +# Internal working docs (implementation plans, scratch notes) +docs/plans/ +use-cases/ +# BioPython SeqIO.index_db SQLite indexes — built lazily on first use, +# rebuilt automatically when the source FASTA changes (mtime check). +*.fa.idx +*.fasta.idx + +# gffutils / SeqIO SQLite databases — auto-generated, never committed +pgatk/testdata/*.db diff --git a/.pydocstyle b/.pydocstyle new file mode 100644 index 00000000..bd70be3d --- /dev/null +++ b/.pydocstyle @@ -0,0 +1,6 @@ +[pydocstyle] +# D211 conflicts with D203 (codebase follows D203: one blank line before class docstring). +# D213 conflicts with D212 (codebase follows D212: multi-line summary on the first line). +# Disabling the rules we don't follow stops the mutually-exclusive-pair noise from +# static analysers (pydocstyle, Codacy). +add-ignore = D211,D213 diff --git a/docs/index.md b/docs/index.md index f6e58a2e..87026a3b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -23,6 +23,7 @@ See the [Installation](installation.md) page for more options (Bioconda, Docker, | [Introduction](introduction.md) | Overview of the proteogenomics field | | [Installation](installation.md) | How to install pgatk (pip, Bioconda, Docker, source) | | [pgatk CLI](pgatk-cli.md) | Full command-line reference for all tools | +| [Validations](validations.md) | Tests and validations to ensure correctness of the modules| | [Use Cases](use-cases.md) | End-to-end workflows and recipes for common scenarios | | [File Formats](formats.md) | BED, GTF, GCT format specifications | | [Changelog](changelog.md) | Version history and release notes | diff --git a/docs/pgatk-cli.md b/docs/pgatk-cli.md index f36971ac..b4aa897f 100644 --- a/docs/pgatk-cli.md +++ b/docs/pgatk-cli.md @@ -15,14 +15,16 @@ Options: Commands: cbioportal-downloader Command to download the the cbioportal studies cbioportal-to-proteindb Command to translate cbioportal mutation data into proteindb - clinvar-to-proteindb Generate protein database from ClinVar VCF + RefSeq GTF + clinvar-to-proteindb Generate protein database from ClinVar VCF + RefSeq GFF3 cosmic-downloader Command to download the cosmic mutation database cosmic-to-proteindb Command to translate Cosmic mutation data into proteindb digest-mutant-protein Digest mutant proteins and filter against canonical proteome dnaseq-to-proteindb Generate peptides based on DNA sequences ensembl-check Command to check ensembl database for stop codons, gaps ensembl-downloader Command to download the ensembl information + gencode-downloader Download GENCODE GTF and genome FASTA generate-decoy Create decoy protein sequences using multiple methods + gnomad-vcf-downloader Download gnomAD per-chromosome VCF files in parallel map-peptide2genome Map peptides to genomic coordinates (GFF3 output) ncbi-downloader Download NCBI RefSeq and ClinVar reference files threeframe-translation Command to perform 3'frame translation @@ -53,14 +55,14 @@ Usage: pgatk ensembl-downloader [OPTIONS] This tool enables to download from ENSEMBL ftp the FASTA, GTF and VCF files - Required parameters: - -c, --config_file TEXT Configuration file for the ensembl data downloader pipeline - -o, --output_directory TEXT Output directory for the peptide databases - Optional parameters: - -l, --list_taxonomies TEXT List the available species from Ensembl - -fp, --folder_prefix_release TEXT Output folder prefix to download the data + -c, --config_file TEXT Configuration file for the ensembl data downloader pipeline + -o, --output_directory TEXT Output directory for the downloaded files -t, --taxonomy TEXT Taxonomy identifiers (comma separated) + -fp, --folder_prefix_release TEXT Output folder prefix to download the data + -en, --ensembl_name TEXT Override the species/assembly directory name on the FTP + --grch37 Download files from a previous GRCh37 release (flag) + --url_file TEXT Write the resolved download URLs to this file instead of downloading -sv, --skip_vcf Skip the vcf file during the download -sg, --skip_gtf Skip the gtf file during the download -sp, --skip_protein Skip the protein fasta file during download @@ -68,25 +70,28 @@ Usage: pgatk ensembl-downloader [OPTIONS] -sn, --skip_ncrna Skip the ncRNA file download -sdn, --skip_cdna Skip the cDNA file download -sd, --skip_dna Skip the DNA file download + --generate-transcripts Run gffread after download to produce transcripts.fa + with CDS= headers (requires gffread in PATH and + the genome assembly; no effect with --skip_gtf) -h, --help Show this message and exit. ``` #### Examples -- List all species without downloading any data: +- Download all files for Turkey (species id=9103), skipping the genome DNA: ```bash - pgatk ensembl-downloader -l -sv -sg -sp -sc -sd -sn + pgatk ensembl-downloader -t 9103 -sd -o ensembl_files ``` -- Download all files except cDNA for Turkey (species id=9103): +- Resolve and write the file URLs without downloading them: ```bash - pgatk ensembl-downloader -t 9103 -sd -o ensembl_files + pgatk ensembl-downloader -t 9103 --url_file ensembl_urls.tsv ``` !!! note - By default the command `ensembl-downloader` downloads all datasets for all species from the latest ENSEMBL release. To limit the download to a particular species specify the species identifier using the `-t` option. To list all available species run the command with `-l` (`--list_taxonomies`) option. + By default the command `ensembl-downloader` downloads all datasets for all species from the latest ENSEMBL release. To limit the download to a particular species specify the species identifier using the `-t` option. !!! note Any of the file types can be skipped using the corresponding option. For example, to avoid downloading the protein sequence fasta file, use the argument `--skip_protein`. Also, note that not all file types exist for all species so the downloaded files depend on availability of the dataset in ENSEMBL. @@ -112,8 +117,10 @@ Usage: pgatk cosmic-downloader [OPTIONS] -p, --password TEXT Password for cosmic database Optional parameters: - -c, --config_file TEXT Configuration file for the ensembl data downloader pipeline - -o, --output_directory TEXT Output directory for the peptide databases + -c, --config_file TEXT Configuration file for the COSMIC data downloader pipeline + -o, --output_directory TEXT Output directory for the downloaded files + -P, --products TEXT Limit the download to specific COSMIC products (repeatable) + --url_file TEXT Write the resolved download URLs to this file instead of downloading -h, --help Show this message and exit. ``` @@ -139,10 +146,12 @@ $ pgatk cbioportal-downloader -h Usage: pgatk cbioportal-downloader [OPTIONS] Parameters: - -c, --config_file TEXT Configuration file for the ensembl data downloader pipeline - -o, --output_directory TEXT Output directory for the peptide databases + -c, --config_file TEXT Configuration file for the cBioPortal downloader pipeline + -o, --output_directory TEXT Output directory for the downloaded files -l, --list_studies Print the list of all the studies in cBioPortal -d, --download_study TEXT Download a specific Study from cBioPortal (use "all" to download all) + -th, --multithreading Enable multithreaded download of multiple files + --url_file TEXT Write the resolved download URLs to this file instead of downloading -h, --help Show this message and exit. ``` @@ -179,8 +188,8 @@ git lfs pull -I public --include "data_mutations_mskcc.txt" Downloading NCBI RefSeq annotations and ClinVar variants for human (GRCh38) is performed using the command `ncbi-downloader`. The tool downloads four files: -- RefSeq gene annotations (GTF) -- RefSeq transcript nucleotide sequences (FASTA) +- RefSeq gene annotations (GFF3) — required for gffread transcript generation +- RefSeq genomic sequence (FASTA) - Assembly report (chromosome name mapping) - ClinVar variant calls (VCF) @@ -196,6 +205,13 @@ Usage: pgatk ncbi-downloader [OPTIONS] Optional parameters: -c, --config_file TEXT Configuration YAML file --force Re-download files even if they exist + --grch37 Download GRCh37 reference files instead of GRCh38 (flag) + --generate-transcripts After download, run gffread to extract transcript sequences + with CDS= coordinate headers (required for + clinvar-to-proteindb; needs gffread in PATH) + --generate-cds After download, run gffread to extract CDS-only sequences + into refseq_cds.fa (required for cbioportal-to-proteindb + when matching RefSeq transcript IDs) -h, --help Show this message and exit. ``` @@ -213,6 +229,93 @@ Usage: pgatk ncbi-downloader [OPTIONS] pgatk ncbi-downloader -o ncbi_data --force ``` +### Downloading GENCODE Data + +Downloading GENCODE human annotation and genome FASTA for use with gnomAD VCFs is performed using the `gencode-downloader` command. It downloads two files and optionally runs `gffread` to produce a `CDS=`-annotated transcript FASTA required by `vcf-to-proteindb`. + +#### Command Options + +```bash +$ pgatk gencode-downloader -h +Usage: pgatk gencode-downloader [OPTIONS] + + Required parameters: + -o, --output-dir TEXT Output directory for downloaded files + + Optional parameters: + --release INTEGER GENCODE release number (e.g. 39, 44). Default: 44 + --generate-transcripts Run gffread to produce transcripts.fa with CDS= headers + --force Re-download files even if they exist + -h, --help Show this message and exit. +``` + +The command downloads: + +- `gencode.v.annotation.gtf` — gene annotation +- `GRCh38.primary_assembly.genome.fa` — primary assembly genome FASTA + +With `--generate-transcripts`, it also runs `gffread -F` to produce `transcripts.fa` with `CDS=start-end` coordinate headers. This file is required by `vcf-to-proteindb` when processing gnomAD VCFs; without it the pipeline falls back to 3-frame exon translation, which is incorrect for transcripts with a 5′ UTR. + +!!! note "GENCODE version must match the gnomAD VCF" + gnomAD v4.1.x VCFs were annotated with GENCODE v39. Use `--release 39` when downloading + data for gnomAD v4.1.1 exomes. Check the VCF header with + `zcat file.vcf.bgz | grep gencode_version | head -1` to confirm the correct release. + +#### Examples + +- Download GENCODE v39 GTF and genome FASTA for use with gnomAD v4.1.1: + + ```bash + pgatk gencode-downloader -o gencode_data --release 39 + ``` + +- Download and immediately generate `transcripts.fa` with CDS= headers: + + ```bash + pgatk gencode-downloader -o gencode_data --release 39 --generate-transcripts + ``` + +### Downloading gnomAD VCF Data + +Downloading gnomAD per-chromosome VCF files in parallel is performed using the `gnomad-vcf-downloader` command. It downloads one `.vcf.bgz` + `.vcf.bgz.tbi` pair per chromosome from the gnomAD Google Cloud Storage bucket. + +#### Command Options + +```bash +$ pgatk gnomad-vcf-downloader -h +Usage: pgatk gnomad-vcf-downloader [OPTIONS] + + Required parameters: + -o, --output-dir TEXT Output directory for downloaded files + + Optional parameters: + --version TEXT gnomAD release version (e.g. 3.1.2, 4.1.1). Default: 3.1.2 + --dataset [genomes|exomes] Dataset type. Use 'genomes' for v3.x, 'exomes' for v4.x. Default: genomes + --chromosomes TEXT Comma-separated chromosome list (e.g. chr1,chr22,chrX). Default: all + --workers INTEGER Number of parallel download threads. Default: 4 + --force Re-download files even if they exist + -h, --help Show this message and exit. +``` + +!!! note "Version and dataset selection" + - gnomAD v3.x: use `--dataset genomes`, annotated with GENCODE v35 (GRCh38) + - gnomAD v4.1.x: use `--dataset exomes`, annotated with GENCODE v39 (GRCh38) + - Download a single chromosome for testing before committing to the full genome. + +#### Examples + +- Download gnomAD v4.1.1 exomes, chr22 only (testing): + + ```bash + pgatk gnomad-vcf-downloader -o gnomad_vcf --version 4.1.1 --dataset exomes --chromosomes chr22 + ``` + +- Download all chromosomes in parallel (8 threads): + + ```bash + pgatk gnomad-vcf-downloader -o gnomad_vcf --version 4.1.1 --dataset exomes --workers 8 + ``` + ## Generate Protein Databases The **pgatk** framework provides a set of tools to generate protein databases in `FASTA` format from DNA sequences, variants, and mutations. Multiple commands are available depending on the data type provided by the user and the public data providers (cBioPortal, COSMIC and ENSEMBL). @@ -255,12 +358,12 @@ The output of the tool is a protein fasta file and is written in the path specif - Generate cell-line specific protein databases: ```bash - pgatk cosmic-to-proteindb -in CosmicCLP_MutantExport.tsv -fa All_CellLines_Genes.fasta -out cosmicCLP_proteinDB.fa --split_by_filter_column --filter_column 'Sample name' + pgatk cosmic-to-proteindb -in CosmicCLP_MutantExport.tsv -fa All_CellLines_Genes.fasta -out cosmicCLP_proteinDB.fa --split_by_filter_column --filter_column SAMPLE_NAME ``` ### cBioPortal Mutations to Protein Sequences -The cBioPortal for Cancer Genomics provides visualization, analysis and download of large-scale cancer genomics data sets. The available datasets can be viewed at [https://www.cbioportal.org/datasets](https://www.cbioportal.org/datasets). The command `cbioportal-to-proteindb` converts the cBioPortal mutations file into a protein sequence database file. +The cBioPortal for Cancer Genomics provides visualization, analysis and download of large-scale cancer genomics data sets. The available datasets can be viewed at [https://www.cbioportal.org/datasets](https://www.cbioportal.org/datasets). The command `cbioportal-to-proteindb` converts the cBioPortal mutations MAF file into a protein sequence database. #### Command Options @@ -269,35 +372,79 @@ $ pgatk cbioportal-to-proteindb -h Usage: pgatk cbioportal-to-proteindb [OPTIONS] Required parameters: - -c, --config_file TEXT Configuration for cBioportal - -in, --input_mutation TEXT Cbioportal mutation file - -fa, --input_cds TEXT CDS genes from ENSEMBL database - -out, --output_db TEXT Protein database including the mutations + -in, --input_mutation TEXT cBioPortal MAF mutation file + -fa, --input_fasta TEXT Transcript FASTA with CDS= and gene_biotype= headers + (from ncbi-downloader --generate-transcripts) + -out, --output_db TEXT Output protein FASTA database Optional parameters: - -f, --filter_column TEXT Column in the VCF file to be used for filtering or splitting mutations - -a, --accepted_values TEXT Limit mutations to specific groups (tissue type, sample name, etc) - -s, --split_by_filter_column Generate a proteinDB per group as specified in the filter_column - -cl, --clinical_sample_file TEXT Clinical sample file with cancer type per sample identifier - -h, --help Show this message and exit. + -c, --config_file TEXT Configuration YAML for cBioPortal tool + -f, --filter_column TEXT Column used for filtering or splitting (default: CANCER_TYPE) + -a, --accepted_values TEXT Limit to specific group values (tissue type, sample name, etc.) + -s, --split_by_filter_column Generate one proteinDB per group defined by filter_column + -cl, --clinical_sample_file TEXT Clinical sample file mapping sample IDs to groups + (required when -s or -a is used) + --include_biotypes TEXT Comma-separated biotypes to translate (default: protein_coding; + use "all" to include all biotypes) + --exclude_biotypes TEXT Comma-separated biotypes to exclude (default: none) + --skip_including_all_cds Apply biotype filter to CDS-defined transcripts too + (default: CDS transcripts are always included) + --include_variant_classifications TEXT Comma-separated Variant_Classification values to include + (default: all) + --exclude_variant_classifications TEXT Comma-separated Variant_Classification values to exclude + (default: Nonsense_Mutation) + --gff TEXT GFF3 annotation file for coordinate-based fallback when + HGVSc is absent (from ncbi-downloader; indexed as .db + on first use) + -w, --workers INTEGER Number of parallel worker processes for translation + (default: 1 = sequential) + -h, --help Show this message and exit. ``` !!! note - The clinical sample file for each mutation file can be found under the same directory as the mutation file downloaded from cBioportal (It should have at least two columns named: Cancer Type and Sample Identifier). The file is only needed when generating tissue type databases (when `-s` or `-a` is given). - -The file input of the tool `-in` (`--input_mutation`) is the cBioPortal mutation data file. An example is given in [cBioPortal downloader](#downloading-cbioportal-data) showing how to obtain the mutations file for a particular study. The CDS sequence for all genes input file `-fa` (`--input_genes`) can be obtained using the ENSEMBL CDS files, see [ENSEMBL downloader](#downloading-ensembl-data). + The clinical sample file ships alongside the mutation file in each cBioPortal study directory (typically `data_clinical_sample.txt`). It must contain at least `SAMPLE_ID` and `CANCER_TYPE` columns. It is only required when generating per-tissue databases (`-s`) or filtering by group (`-a`). !!! note - The cBioPortal mutations are aligned to the hg19 assembly, make sure that the correct genome assembly is selected for the download. + cBioPortal returns **RefSeq** transcript IDs (`NM_...`). The `-fa` FASTA must therefore be generated with `ncbi-downloader --generate-transcripts` (not the ENSEMBL downloader). Both GRCh37 and GRCh38 assemblies are supported. #### Examples -- Translate mutations from `Bladder` samples in studyID `blca_mskcc_solit_2014`: +- Translate all mutations from a TCGA study (sequential): + + ```bash + pgatk cbioportal-to-proteindb \ + --input_mutation brca_tcga/data_mutations.txt \ + --input_fasta ncbi_grch37/transcripts.fa \ + --gff ncbi_grch37/GRCh37_latest_genomic.gff \ + --output_db brca_proteins.fa + ``` + +- Same study, translated in parallel across 8 workers: + + ```bash + pgatk cbioportal-to-proteindb \ + --input_mutation brca_tcga/data_mutations.txt \ + --input_fasta ncbi_grch37/transcripts.fa \ + --gff ncbi_grch37/GRCh37_latest_genomic.gff \ + --output_db brca_proteins.fa \ + --workers 8 + ``` + +- Generate one proteinDB per cancer type (split by `CANCER_TYPE` column): ```bash - pgatk cbioportal-to-proteindb --config_file config/cbioportal_config.yaml --input_cds human_hg19_cds.fa --input_mutation data_mutations_mskcc.txt --clinical_sample_file data_clinical_sample.txt --output_db bladder_proteindb.fa + pgatk cbioportal-to-proteindb \ + --input_mutation brca_tcga/data_mutations.txt \ + --input_fasta ncbi_grch37/transcripts.fa \ + --gff ncbi_grch37/GRCh37_latest_genomic.gff \ + --clinical_sample_file brca_tcga/data_clinical_sample.txt \ + --split_by_filter_column \ + --output_db brca_proteins.fa \ + --workers 4 ``` + This writes `brca_proteins.fa` (all mutations) plus one `brca_proteins_.fa` per group. + ### Variants (VCF) to Protein Sequences Variant Calling Format (VCFv4.1) is a text file representing genomic variants. The `vcf-to-proteindb` command takes a VCF file and a GTF (Gene annotations) file to translate the genomic variants in the VCF that affect protein-coding transcripts. @@ -309,39 +456,40 @@ $ pgatk vcf-to-proteindb -h Usage: pgatk vcf-to-proteindb [OPTIONS] Required parameters: + -v, --vcf TEXT VCF file containing the genomic variants + -g, --gene_annotations_gtf TEXT Gene models in GTF (or GFF) format + -f, --input_fasta TEXT Fasta sequences for the transcripts referenced by the GTF + + Optional parameters: -c, --config_file TEXT Configuration for VCF conversion parameters - -v, --vcf VCF file containing the genomic variants - -g, --gene_annotations_gtf Gene models in the GTF format - -f, --input_fasta Fasta sequences for the transcripts in the GTF file - -o, --output_proteindb Output file to write the resulting variant protein sequences - - Options: - --translation_table INTEGER Translation table (Default 1) - --mito_translation_table INTEGER Mito_trans_table (default 2) - --var_prefix TEXT String to add as prefix for the variant peptides + (defaults to the bundled ensembl_config.yaml) + -o, --output_proteindb TEXT Output file to write the resulting variant protein sequences + -t, --translation_table INTEGER Translation table (Default 1) + -m, --mito_translation_table INT Mitochondrial translation table (default 2) + -p, --protein_prefix TEXT String to add as prefix for the variant peptides (default: var) --report_ref_seq Also report the reference peptide from overlapping transcripts --annotation_field_name TEXT Annotation field name in INFO column (default: CSQ) --af_field TEXT Field name for variant allele frequency (default: none) --af_threshold FLOAT Minimum allele frequency threshold - --transcript_index INTEGER Index of transcript ID in annotation columns (default: 3) - --consequence_index INTEGER Index of consequence in annotation columns (default: 1) - --include_consequences TEXT Consider variants with these consequences (default: all) - --exclude_consequences TEXT Exclude these consequences (default: downstream_gene_variant, - upstream_gene_variant, intergenic_variant, intron_variant, - synonymous_variant) - --skip_including_all_cds Disable automatic translation of transcripts with defined CDS + --transcript_str TEXT Field name for transcript ID in the annotation header (default: FEATURE) + --consequence_str TEXT Field name for consequence in the annotation header (default: Consequence) + --biotype_str TEXT Field name for biotype in the annotation header (default: transcript_biotype) + --include_biotypes TEXT Include only these biotypes (default: all) + --exclude_biotypes TEXT Exclude these biotypes + --include_consequences TEXT Consider variants with these consequences (default: all) + --exclude_consequences TEXT Exclude these consequences (default: downstream_gene_variant, + upstream_gene_variant, intergenic_variant, intron_variant, + synonymous_variant, regulatory_region_variant) + -s, --skip_including_all_cds Disable automatic translation of transcripts with defined CDS --ignore_filters Parse all variants regardless of FILTER field --accepted_filters TEXT Accepted filters for variant parsing + -w, --workers INTEGER Parallel worker processes (default: cpu_count()) -h, --help Show this message and exit. ``` The file input `--vcf` is a VCF file that can be provided by the user or obtained from ENSEMBL using the [ensembl-downloader](#downloading-ensembl-data). The `--gene_annotations_gtf` file can also be obtained with the ensembl-downloader. -The `--input_fasta` file contains the `CDS` and DNA sequences for all genes present in the GTF file. This file can be generated from the GTF file using the [gffread](http://ccb.jhu.edu/software/stringtie/gff.shtml#gffread) tool as follows: - -```bash -gffread -F -w input_fasta.fa -g genome.fa gene_annotations_gtf -``` +The `--input_fasta` file contains the `CDS` and DNA sequences for all genes present in the GTF file. Generate it with `ensembl-downloader --generate-transcripts` (or `gencode-downloader --generate-transcripts` for GENCODE annotation). The output of the tool is a protein fasta file written to the path specified by `--output_proteindb`. @@ -364,27 +512,33 @@ The output of the tool is a protein fasta file written to the path specified by - By default `vcf-to-proteindb` considers transcripts that have a coding sequence that includes all protein_coding genes. - By default all consequences are accepted except those given with `--exclude_consequences`. See the list of consequences generated by VEP: [https://www.ensembl.org/info/genome/variation/prediction/predicted_data.html](https://www.ensembl.org/info/genome/variation/prediction/predicted_data.html) -- Translate human *missense* variants or *inframe_insertion* from gnomAD VCFs that have a minimum 1% allele frequency in control samples: +- Translate human missense and inframe variants from a gnomAD v4.1.1 exome VCF with minimum 1% allele frequency in the African population: ```bash pgatk vcf-to-proteindb \ - --vcf gnomad_genome.vcf \ - --input_fasta gencode.fa \ - --gene_annotations_gtf gencode.gtf \ - --include_consequences missense_variant,frameshift_insert \ + --vcf gnomad.exomes.v4.1.1.sites.chr22.vcf.bgz \ + --input_fasta gencode_data/transcripts.fa \ + --gene_annotations_gtf gencode_data/gencode.v39.annotation.gtf \ --annotation_field_name vep \ + --transcript_str Feature \ + --consequence_str Consequence \ + --biotype_str BIOTYPE \ + --include_biotypes protein_coding \ + --af_field AF_afr \ --af_threshold 0.01 \ - --af_field control_af \ - --transcript_index 6 + --include_consequences missense_variant,inframe_insertion,inframe_deletion \ + --output_proteindb gnomad_afr_proteins.fa ``` !!! tip "Hint" - - `vcf-to-proteindb` considers transcripts that have a coding sequence which includes all *protein_coding* transcripts. - - The provided VCF file has some specific properties: the annotation field is specified with the string *vep* hence the `--annotation_field_name` parameter, the transcript is at the sixth position in the annotation field, and since gnomAD collects variants from many sources it provides allele frequencies across many sub-populations. In this case we use only variants common within control samples therefore the `--af_field` is set to `control_af`. - - Since gnomAD uses GENCODE gene annotations, you need to change the default `biotype_str` from *transcript_biotype* to *transcript_type* (as written in the GTF file). + - `vcf-to-proteindb` considers transcripts that have a coding sequence, which includes all *protein_coding* transcripts. + - gnomAD uses `vep` (not `CSQ`) as the annotation field name, so `--annotation_field_name vep` is required. + - gnomAD v4.x VEP headers name the columns `Feature` (transcript ID), `Consequence`, and `BIOTYPE`; pass these explicitly with `--transcript_str`, `--consequence_str`, and `--biotype_str`. + - gnomAD provides ancestry-stratified allele frequencies: `AF_afr` (African), `AF_eas` (East Asian), `AF_sas` (South Asian), `AF_nfe` (Non-Finnish European), `AF_amr` (Latino). + - The `transcripts.fa` input must be generated with `gffread -F` (using `gencode-downloader --generate-transcripts`) to embed `CDS=` headers; without them the pipeline falls back to slower 3-frame exon translation. !!! note - When ENSEMBL data is used, the default options should work. However, for other data sources such as variants from gnomAD, GTF from GENCODE and others one or more of the following parameters need to be changed: `--af_field`, `--annotation_field_name`, `--transcript_index`, `--consequence_index`. + When ENSEMBL data is used, the default options should work. However, for other data sources such as variants from gnomAD, GTF from GENCODE and others one or more of the following parameters need to be changed: `--af_field`, `--annotation_field_name`, `--transcript_str`, `--consequence_str`, `--biotype_str`. - Translate human variants from a custom VCF obtained from sequencing of a sample: @@ -409,8 +563,8 @@ Usage: pgatk clinvar-to-proteindb [OPTIONS] Required parameters: -v, --vcf TEXT ClinVar VCF file path - -g, --gtf TEXT NCBI RefSeq GTF file path - -f, --fasta TEXT RefSeq transcript nucleotide FASTA file path + -g, --gff TEXT NCBI RefSeq GFF3 annotation file path + -f, --fasta TEXT RefSeq transcript nucleotide FASTA file path (with CDS= headers) -a, --assembly-report TEXT NCBI assembly report file path -o, --output TEXT Output protein FASTA file path @@ -419,17 +573,24 @@ Usage: pgatk clinvar-to-proteindb [OPTIONS] -h, --help Show this message and exit. ``` -The input files can be downloaded using the [ncbi-downloader](#downloading-ncbi--clinvar-data) command. +The input files are produced by the [ncbi-downloader](#downloading-ncbi-clinvar-data) command. Use `--generate-transcripts` with `ncbi-downloader` to produce `transcripts.fa` (with `CDS=` headers) from the GFF3 annotation. + +> **Note:** The GFF3 file (`GRCh38_latest_genomic.gff`) is required — the NCBI RefSeq GTF leaves the `transcript_id` attribute empty for many records, which prevents gffread from linking CDS features to their parent transcripts. GFF3 uses explicit `ID=`/`Parent=` linkage that avoids this problem entirely. #### Examples -- Generate a protein database from ClinVar variants: +- Download reference files and generate transcripts, then build the protein database: ```bash + # Step 1: download GFF3, genome FASTA, assembly report, ClinVar VCF + # and produce transcripts.fa with CDS= headers + pgatk ncbi-downloader -o ncbi_data --generate-transcripts + + # Step 2: generate variant protein sequences pgatk clinvar-to-proteindb \ --vcf ncbi_data/clinvar.vcf.gz \ - --gtf ncbi_data/GRCh38_latest_genomic.gtf.gz \ - --fasta ncbi_data/GRCh38_latest_rna.fna.gz \ + --gff ncbi_data/GRCh38_latest_genomic.gff \ + --fasta ncbi_data/transcripts.fa \ --assembly-report ncbi_data/GRCh38_latest_assembly_report.txt \ --output clinvar_proteins.fa ``` @@ -438,11 +599,7 @@ The input files can be downloaded using the [ncbi-downloader](#downloading-ncbi- DNA sequences given in a FASTA format can be translated using the `dnaseq-to-proteindb` tool. This tool allows for translation of all kinds of transcripts (coding and noncoding) by specifying the desired biotypes. -The most suited `--input_fasta` file can be generated from a given GTF file using the `gffread` command as follows: - -```bash -gffread -F -w transcript_sequences.fa -g genome.fa gene_annotations_gtf -``` +The most suited `--input_fasta` file can be generated from the downloaded GTF and genome FASTA using `ensembl-downloader --generate-transcripts` (or `gencode-downloader --generate-transcripts` for GENCODE annotation). The FASTA file generated from the GTF file would contain DNA sequences for all transcripts regardless of their biotypes. It also specifies the CDS positions for the protein coding transcripts. The `dnaseq-to-proteindb` command recognizes features such as biotype and expression values in the FASTA header that are taken from the GTF INFO field (if available). However, it is not required to have those in the FASTA header but their presence enables the user to filter by biotype and expression values during the translation step. @@ -453,13 +610,14 @@ $ pgatk dnaseq-to-proteindb -h Usage: pgatk dnaseq-to-proteindb [OPTIONS] Required parameters: - -c, --config_file TEXT Configuration for VCF conversion parameters - --input_fasta Fasta sequences for the transcripts - --output_proteindb Output file to write the resulting protein sequences + --input_fasta TEXT Fasta sequences for the transcripts + --output_proteindb TEXT Output file to write the resulting protein sequences Optional parameters: + -c, --config_file TEXT Configuration for translation parameters + (defaults to the bundled ensembl_config.yaml) --translation_table INTEGER Translation Table (default 1) - --num_orfs INTEGER Number of ORFs (default 0) + --num_orfs INTEGER Number of ORFs (default 3) --num_orfs_complement INTEGER Number of ORFs from the reverse side (default 0) --skip_including_all_cds Disable automatic translation of transcripts with defined CDS --include_biotypes TEXT Translate sequences with specified biotypes (default: protein coding) @@ -467,7 +625,7 @@ Usage: pgatk dnaseq-to-proteindb [OPTIONS] --biotype_str TEXT String used to identify gene/transcript biotype (default: transcript_biotype) --expression_str TEXT String for extracting expression value (default: None) --expression_thresh FLOAT Threshold for expression value filtering (default: 5) - --var_prefix TEXT Prefix to be added to fasta headers (default: none) + --protein_prefix TEXT Prefix to be added to fasta headers (default: none) -h, --help Show this message and exit. ``` @@ -489,7 +647,7 @@ Usage: pgatk dnaseq-to-proteindb [OPTIONS] --config_file config/ensembl_config.yaml \ --input_fasta transcript_sequences.fa \ --output_proteindb proteindb_from_lincRNA_canonical_sequences.fa \ - --var_prefix lincRNA_ \ + --protein_prefix lincRNA_ \ --include_biotypes lincRNA ``` @@ -500,7 +658,7 @@ Usage: pgatk dnaseq-to-proteindb [OPTIONS] --config_file config/ensembl_config.yaml \ --input_fasta transcript_sequences.fa \ --output_proteindb proteindb_from_processed_pseudogene.fa \ - --var_prefix pseudogene_ \ + --protein_prefix pseudogene_ \ --include_biotypes processed_pseudogene,transcribed_processed_pseudogene,translated_processed_pseudogene \ --skip_including_all_cds ``` @@ -512,7 +670,7 @@ Usage: pgatk dnaseq-to-proteindb [OPTIONS] --config_file config/ensembl_config.yaml \ --input_fasta transcript_sequences.fa \ --output_proteindb proteindb_from_altORFs.fa \ - --var_prefix altorf_ \ + --protein_prefix altorf_ \ --include_biotypes altORFs \ --skip_including_all_cds ``` @@ -541,23 +699,24 @@ Usage: pgatk dnaseq-to-proteindb [OPTIONS] $ pgatk generate-decoy -h Usage: pgatk generate-decoy [OPTIONS] - Required parameters: - -c, --config_file TEXT Configuration file for decoy generation - -o, --output TEXT Output file for decoy database - -i, --input TEXT FASTA file of target protein sequences (*.fasta|*.fa) - Optional parameters: - -s, --cleavage_sites TEXT Amino acids at which to cleave (Default: KR) - -a, --anti_cleavage_sites TEXT Amino acids at which not to cleave if following cleavage site - -p, --cleavage_position TEXT Cleavage position [c, n] (Default: c) - -l, --min_peptide_length INTEGER Minimum peptide length to compare (Default: 5) - -n, --max_iterations INTEGER Max shuffle iterations (Default: 100) - -x, --do_not_shuffle TEXT Turn OFF shuffling of decoy peptides (Default: false) - -w, --do_not_switch TEXT Turn OFF switching of cleavage site (Default: false) + -c, --config_file TEXT Configuration file for decoy generation + -in, --input_database TEXT FASTA file of target protein sequences (*.fasta|*.fa) + -out, --output_database TEXT Output file for decoy database + -m, --method TEXT Decoy generation method (default: protein-reverse) -d, --decoy_prefix TEXT Accession prefix for decoy proteins (Default: DECOY_) - -t, --temp_file TEXT Temporary file for decoys prior to shuffling - -b, --no_isobaric TEXT Do not make decoy peptides isobaric (Default: false) - -m, --memory_save TEXT Slower but uses less memory (Default: false) + -e, --enzyme TEXT Cleavage enzyme name (Default: Trypsin) + --cleavage_position [c|n] Cleavage position (Default: c) + -s, --max_missed_cleavages INT Maximum allowed missed cleavages + --min_peptide_length INTEGER Minimum peptide length (Default: 5) + --max_peptide_length INTEGER Maximum peptide length (Default: 100) + --max_iterations INTEGER Maximum shuffle iterations + --do_not_shuffle Turn OFF shuffling of decoy peptides (flag) + --do_not_switch Turn OFF cleavage-site switching (flag) + --temp_file TEXT Temporary file for decoys prior to shuffling + --no_isobaric Do not make decoy peptides isobaric (flag) + --keep_target_hits Keep peptides duplicated in target and decoy (flag) + --memory_save Slower but uses less memory (flag) -h, --help Show this message and exit. ``` @@ -566,7 +725,7 @@ Usage: pgatk generate-decoy [OPTIONS] - Generate decoy sequences for a protein database: ```bash - pgatk generate-decoy -c config/protein_decoy.yaml --input proteindb.fa --output decoy_proteindb.fa + pgatk generate-decoy -c config/protein_decoy.yaml --input_database proteindb.fa --output_database decoy_proteindb.fa ``` ## Post-Processing Utilities diff --git a/docs/plans/2026-03-01-pgatk-graph-engine-design.md b/docs/plans/2026-03-01-pgatk-graph-engine-design.md deleted file mode 100644 index 9048e998..00000000 --- a/docs/plans/2026-03-01-pgatk-graph-engine-design.md +++ /dev/null @@ -1,270 +0,0 @@ -# pgatk Evolution: Graph-Based Transcript Modeling & Feature Parity - -**Date:** 2026-03-01 -**Status:** Approved -**Authors:** Yasset Perez-Riverol, Claude (AI assistant) - ---- - -## 1. Executive Summary - -This document describes the research and implementation plan to evolve pgatk from a linear, one-variant-at-a-time proteogenomics database generator into a graph-based transcript modeling engine capable of multi-variant co-occurrence, gene fusions, RNA editing, and circular RNA support. The plan includes a prerequisite infrastructure cleanup phase and a phased feature rollout with performance optimization. - ---- - -## 2. Current State Assessment - -### What pgatk does well - -- Only Python tool with native one-command downloaders for ENSEMBL, COSMIC, and cBioPortal -- Integrated decoy generation (4 methods: protein-reverse, protein-shuffle, DecoyPyrat, pgdbdeep) -- Spectrum-level validation via SpectrumAI (unique among database generators) -- Aho-Corasick exact matching + sliding-window mismatch search (BlastGetPosition) -- Published benchmark: 43,501 non-canonical peptides across 64 human cell lines (Umer et al. 2022) -- Pangenome proteogenomics demonstrated (Wang et al. 2024 preprint): 4,991 novel peptides from HPRC - -### Critical gaps vs. the field (2024-2026) - -| Gap | Impact | Solved by | -|---|---|---| -| No multi-variant co-occurrence | Transcript with N SNPs produces 1 sequence instead of up to 2^N | moPepGen (DAG), vcf2prot (phased VCF) | -| No gene fusions | Major cancer event type missed entirely | moPepGen | -| No RNA editing | A-to-I editing creates novel peptides invisible to DNA-only | moPepGen | -| No circular RNA | Emerging class of translated non-coding RNA | moPepGen | -| No ClinVar/NCBI support | Open issue #24 since 2019 | Manual workaround only | -| pandas iterrows in VCF processing | ~100x slower than vectorized operations | Internal bottleneck | -| No transcript feature caching | Redundant gffutils DB queries per variant | Internal bottleneck | - -### Competitive landscape - -**moPepGen** (Nature Biotechnology, June 2025): Graph-based (DAG per transcript), handles all event types, ~4x more non-canonical peptides than prior methods. The algorithmic benchmark to match. - -**vcf2prot** (ElAbd et al. 2022, bioRxiv): Rust-based Sequence Intermediate Representation (SIR) approach. ~1000x faster than PrecisionProDB. Processes 99,254 variants across 8,192 patients in ~11 minutes. Demonstrates the performance ceiling achievable with systems-level optimization. Limited to phased VCFs with BCFtools/csq annotation. - -**PG2** (J. Proteome Research 2023): Snakemake pipeline integrating genome + transcriptome. Handles splicing and fusions but requires heavy infrastructure. - -**pXg** (MCP 2024): RNA-Seq + proteomics + de novo sequencing for immunopeptidomics. - -**NeoDisc** (Nature Biotechnology 2024): End-to-end clinical neoantigen pipeline. - -**PepCentric** (bioRxiv 2025): Repository-scale validation against 2.3B spectra. Complementary to database generators. - -### Key code quality findings - -- `get_altseq()` (ensembl.py): 60-line heart of variant processing, handles SNP/ins/del but only one variant at a time -- `vcf_to_proteindb()` (ensembl.py): ~260 lines, main bottleneck is `vcf_reader.iterrows()` + per-row gffutils DB lookups -- No `pathlib`, no `dataclasses`, inconsistent type hints -- `db/` standalone scripts use `sys.argv` at import time (not importable as modules) -- Variable shadowing bug in `protein_database_decoy.py` (`decoy_sequence` variable shadows the imported `pyteomics.fasta.decoy_sequence` function) -- Broad `except Exception` in several places suppresses unexpected errors -- Mixed `print()` and logger usage for error reporting -- Repetitive 3-layer config fallback pattern across all service classes - ---- - -## 3. Architecture: TranscriptGraph Engine - -### Core Concept - -Each transcript is modeled as a directed acyclic graph (DAG): - -- **Nodes** represent sequence segments (reference sequence between variant positions) -- **Edges** represent either the reference path or an alternative (variant) path -- **Traversal** of all root-to-leaf paths generates all combinatorial protein sequences - -``` -Reference: ──[seg1]──[seg2]──[seg3]──[seg4]── - │ │ -Variant A: └─[alt_A]─┘ │ -Variant B: └─[alt_B]─┘ - -Paths: ref, A only, B only, A+B → 4 protein sequences -``` - -### Module Structure - -``` -pgatk/ - graph/ # NEW module - __init__.py - transcript_graph.py # TranscriptGraph class (DAG builder + traverser) - variant_nodes.py # Node types: SNP, Insertion, Deletion, Fusion, RNAEdit, CircRNA - graph_enumerator.py # Path enumeration with combinatorial explosion controls - event_parsers/ # Input parsers for each event type - __init__.py - vcf_parser.py # VCF → graph edges (replaces current get_altseq) - fusion_parser.py # Gene fusion calls → cross-transcript edges - rnaedit_parser.py # RNA editing sites → substitution edges - circrna_parser.py # Back-splice junctions → circular edges - clinvar_parser.py # ClinVar VCF → graph edges (issue #24) - filters/ - __init__.py - allele_frequency.py # AF-based pruning - consequence.py # VEP consequence filtering - expression.py # Expression-level filtering - max_variants.py # Cap combinatorial explosion -``` - -### Key Classes - -```python -@dataclass -class VariantNode: - """Base class for all genomic events.""" - position: int # CDS position - ref_allele: str - alt_allele: str - event_type: EventType # SNP, INS, DEL, FUSION, RNA_EDIT, CIRC_RNA - metadata: dict # AF, consequence, source, etc. - - -class TranscriptGraph: - """DAG representing a transcript with all its variants.""" - - def __init__(self, transcript_id: str, reference_seq: str, strand: str) -> None: ... - def add_variant(self, variant: VariantNode) -> None: ... - def add_fusion(self, partner_graph: 'TranscriptGraph', breakpoints: tuple) -> None: ... - def enumerate_paths(self, max_paths: int = 1000) -> Iterator[ProteinSequence]: ... - def to_fasta(self, output: TextIO) -> int: ... # returns count written -``` - -### Combinatorial Explosion Controls - -With N variants, naive enumeration produces 2^N sequences. Controls: - -1. **Max variants per transcript** (default: 10) — skip transcripts exceeding this -2. **Max paths per transcript** (default: 1000) — stop enumeration after limit -3. **Allele frequency pruning** — only include variants above a threshold -4. **Phasing support** — if phased VCF, only enumerate haplotype-consistent paths -5. **Consequence filtering** — only include protein-altering consequences - -### Integration Strategy - -The graph engine sits alongside existing modules (no replacement): - -- **Downloaders** remain unchanged -- **New CLI commands** (`graph-vcf-to-proteindb`, etc.) use the graph engine -- **Existing commands** continue working for backward compatibility -- **Shared infrastructure** (`toolbox/`, `config/`) is reused - ---- - -## 4. Phased Implementation Plan - -### Phase 0 — Infrastructure & Code Quality - -**Goal:** Fix existing issues so the graph engine is built on solid ground. - -**Deliverables:** - -1. Fix variable shadowing bug in `protein_database_decoy.py` -2. Convert `db/digest_mutant_protein.py` and `db/map_peptide2genome.py` from `sys.argv`/`getopt` import-time execution to proper Click CLI commands -3. Add `conftest.py` with proper fixtures; remove relative path dependencies in tests -4. Replace `print()` error reporting with proper logger usage across all modules -5. Add type hints to all public APIs -6. Use `dataclasses` for data models (`SNP` in `cgenomes/models.py`, new models) -7. Use `pathlib.Path` for file operations (replace string concatenation) -8. Replace broad `except Exception` with specific exception handling -9. Standardize the 3-layer config fallback pattern (DRY up repetitive `get_*_parameters()` methods) -10. Expand unit test coverage for core functions: `get_altseq()`, `get_mut_pro_seq()`, `revswitch()` -11. Replace `pathos` with `concurrent.futures.ProcessPoolExecutor` (stdlib) - ---- - -### Phase 1 — Graph Core + SNP/Indel Support - -**Goal:** Working graph engine for basic variants, producing a superset of current output. - -**Deliverables:** - -1. `TranscriptGraph` class with add/enumerate/serialize -2. `VariantNode` dataclass hierarchy (SNP, Insertion, Deletion) -3. `vcf_parser.py` — reads VCF (VEP-annotated or unannotated) into graph edges -4. `graph_enumerator.py` — path enumeration with explosion controls -5. New CLI command: `graph-vcf-to-proteindb` -6. Transcript feature caching (eliminate redundant gffutils queries) -7. Vectorized VCF grouping (replace `iterrows()`) -8. Unit tests for graph operations + integration tests -9. Benchmark against current `vcf_to_proteindb()` on test VCFs - -**Validation:** Graph engine must produce a superset of sequences from the linear approach. - ---- - -### Phase 2 — Cancer Genomics + ClinVar - -**Goal:** Bring cancer mutation sources into the graph model and add ClinVar (issue #24). - -**Deliverables:** - -1. `clinvar_parser.py` — parse ClinVar VCF into graph edges -2. Refactor `CancerGenomesService.get_mut_pro_seq()` to produce `VariantNode` objects -3. Graph-aware COSMIC processing (multiple mutations on same gene → combinatorial) -4. Graph-aware cBioPortal processing -5. New CLI commands: `clinvar-to-proteindb`, `graph-cosmic-to-proteindb` -6. Tests with real COSMIC data (multiple mutations per transcript) - ---- - -### Phase 3 — Novel Event Types: Fusions, RNA Editing, Circular RNA - -**Goal:** Add the event types that differentiate moPepGen from other tools. - -**Deliverables:** - -1. `fusion_parser.py` — parse gene fusion calls (STAR-Fusion, Arriba, FusionCatcher formats) -2. `rnaedit_parser.py` — parse RNA editing databases (REDIportal, DARNED) or user sites -3. `circrna_parser.py` — parse back-splice junction files (CIRCexplorer, CIRI) -4. Extended `TranscriptGraph` for cross-transcript fusions and circular paths -5. New CLI commands: `fusion-to-proteindb`, `rnaedit-to-proteindb`, `circrna-to-proteindb` -6. Combined command: `multi-event-to-proteindb` (merges all event types per transcript) - ---- - -### Phase 4 — Performance Optimization - -**Goal:** Make the graph engine fast enough for genome-scale datasets. - -**Deliverables:** - -1. Profile Phases 1-3 on real-world datasets (gnomAD, TCGA) -2. Identify hot paths via `cProfile` / `py-spy` -3. Optimize graph traversal (topological sort, memoization of shared subpaths) -4. Replace remaining `pathos` usage with `concurrent.futures` -5. Optional: C extension (via `cffi` or `cython`) for innermost graph traversal — only if profiling shows it's the bottleneck -6. Benchmark against moPepGen and vcf2prot on same datasets - ---- - -### Phase Dependencies - -``` -Phase 0 (Infrastructure & Quality) - └── Phase 1 (Graph Core + SNP/Indel) - ├── Phase 2 (Cancer + ClinVar) - │ └── Phase 3 (Fusions, RNA Edit, CircRNA) - │ └── Phase 4 (Performance) - └── (ongoing quality improvements) -``` - ---- - -## 5. References - -### Primary pgatk publication -- Umer HM, Audain E, Zhu Y, Pfeuffer J, Sachsenberg T, Lehtiö J, Branca RM, Perez-Riverol Y. Generation of ENSEMBL-based proteogenomics databases boosts the identification of non-canonical peptides. *Bioinformatics*. 2022;38(5):1470-1472. doi:10.1093/bioinformatics/btab838 - -### Pangenome proteogenomics -- Wang D, Bouwmeester R, Zheng P, Dai C, Sanchez A, Shu K, Bai M, Umer HM, Perez-Riverol Y. Proteogenomics analysis of human tissues using pangenomes. *bioRxiv*. 2024. doi:10.1101/2024.05.24.595489 - -### Competing tools -- moPepGen: Graph-based proteogenomic database generation. *Nature Biotechnology*. June 2025. doi:10.1038/s41587-025-02701-0 -- vcf2prot: ElAbd H, Degenhardt F, Lenz TL, Franke A, Wendorff M. VCF2Prot: An efficient and parallel tool for generating personalized proteomes from VCF files. *bioRxiv*. 2022. doi:10.1101/2022.01.21.477084 -- ProteomeGenerator2: *J. Proteome Research*. 2023. doi:10.1021/acs.jproteome.3c00005 -- pXg: *Molecular & Cellular Proteomics*. 2024. doi:10.1016/j.mcpro.2024.100733 -- NeoDisc: *Nature Biotechnology*. October 2024. doi:10.1038/s41587-024-02420-y -- PepCentric: *bioRxiv*. February 2025. doi:10.1101/2025.02.24.639867 - -### Related ecosystem -- quantms: Dai C et al. *Nature Methods*. 2024. doi:10.1038/s41592-024-02343-1 -- PRIDE 2025: *Nucleic Acids Research*. 2025;53(D1):D543. doi:10.1093/nar/gkae1011 diff --git a/docs/plans/2026-03-03-protein-accession-design.md b/docs/plans/2026-03-03-protein-accession-design.md deleted file mode 100644 index cfe0b8db..00000000 --- a/docs/plans/2026-03-03-protein-accession-design.md +++ /dev/null @@ -1,96 +0,0 @@ -# Protein Accession and FASTA Header Design - -Issue: https://github.com/bigbio/pgatk/issues/18 -Branch: `feature/protein-accession-design` -Date: 2026-03-03 - -## Problem - -Current pgatk FASTA headers are inconsistent across variant sources (VCF, COSMIC, ClinVar) and incompatible with major search engines like SearchGUI, which cannot parse ENSEMBL-style IDs. - -## Design - -### Two protein categories, two prefix strategies - -| Category | Prefix | Accession | Description | -|----------|--------|-----------|-------------| -| Canonical (reference) | Keep original (`sp\|`, `tr\|`, `ensp\|`) | Original accession | Untouched from source database | -| Variant (mutated) | `pgvar\|` | `{TRANSCRIPT_ID}-{INDEX}` | pgatk-generated variant protein | - -### Variant header format - -``` ->pgvar|{TRANSCRIPT_ID}-{INDEX}|{GENE_SYMBOL} {key=value metadata} -``` - -**Fields:** - -- `pgvar` -- database tag identifying pgatk-generated variant proteins. -- `{TRANSCRIPT_ID}-{INDEX}` -- accession composed of parent transcript ID and a dash-separated 1-based index (per transcript, per run). Mirrors UniProt isoform convention (`P12345-2`). -- `{GENE_SYMBOL}` -- gene name, first token after the second pipe. -- Metadata key=value pairs in the description field: - -| Key | Description | Example | -|-----|-------------|---------| -| `VariantSource` | Origin database | `COSMIC`, `ClinVar`, `gnomAD`, `dbSNP` | -| `GenomicCoord` | `chr:pos:ref:alt` | `12:25245347:C:G` | -| `AAChange` | HGVS protein notation | `p.G13R` | -| `MutationType` | SO term or short label | `missense_variant` | -| `dbSNP` | rsID if available | `rs121913529` | -| `ORF` | Reading frame number (only when multi-ORF) | `1`, `2`, `3` | - -### Examples - -```fasta -# Canonical proteins -- untouched from source databases ->sp|P01112|RASH_HUMAN GTPase HRas OS=Homo sapiens ->ensp|ENSP00000309845|BRCA1 - -# Variant proteins -- unified pgvar| prefix regardless of source ->pgvar|ENST00000311189-1|HRAS VariantSource=COSMIC AAChange=p.G13R MutationType=missense_variant GenomicCoord=12:25245347:C:G ->pgvar|ENST00000311189-2|HRAS VariantSource=COSMIC AAChange=p.Q61L MutationType=missense_variant GenomicCoord=12:25245350:A:T ->pgvar|ENST00000357654-1|BRCA1 VariantSource=ClinVar AAChange=p.R1699Q MutationType=missense_variant GenomicCoord=17:43094464:G:A dbSNP=rs41293455 - -# Multiple ORFs -- each ORF gets its own index, ORF number in metadata ->pgvar|ENST00000311189-3|HRAS VariantSource=COSMIC AAChange=p.G13R ORF=1 ->pgvar|ENST00000311189-4|HRAS VariantSource=COSMIC AAChange=p.G13R ORF=2 ->pgvar|ENST00000311189-5|HRAS VariantSource=COSMIC AAChange=p.G13R ORF=3 -``` - -### Indexing logic - -The `-{index}` is per-transcript, per-file generation run: - -- First variant on `ENST00000311189` gets `-1` -- Second variant on same transcript gets `-2` -- Multi-ORF outputs each consume an index (3 ORFs = 3 indices) -- First variant on a different transcript resets to `-1` - -### Search engine compatibility - -| Engine | Compatible | Notes | -|--------|-----------|-------| -| SearchGUI / PeptideShaker | Yes | Matches UniProt-like `db\|acc\|name` pattern | -| MaxQuant | Yes | Default UniProt parse rule works | -| MSFragger / FragPipe | Yes | Reads full header, splits on first whitespace | -| Comet | Yes | Parses `>db\|acc\|` natively | -| DIA-NN | Yes | Follows UniProt-style parsing | -| Proteome Discoverer | Yes | Supports pipe-delimited headers | - -### Files to modify - -| File | Change | -|------|--------| -| `pgatk/ensembl/ensembl.py` | Refactor `vcf_to_proteindb()` header construction (lines 661-664) | -| `pgatk/clinvar/clinvar_service.py` | Refactor header construction (lines 554-560) | -| `pgatk/cgenomes/cgenomes_proteindb.py` | Refactor COSMIC header (line 317), cBioPortal header | -| `pgatk/toolbox/vcf_utils.py` | Update `write_output()` to handle new format cleanly | -| `pgatk/config/` | Add constants for `PGVAR_PREFIX`, metadata keys | - -### Design decisions - -1. **Dash separator** (`-`) between transcript and index, consistent with UniProt isoform convention. -2. **No ORF suffix in accession** -- ORF number is metadata (`ORF=N`), each ORF gets its own index. -3. **Canonical proteins are pass-through** -- pgatk does not reformat existing database headers. -4. **Unified format across all sources** -- COSMIC, ClinVar, VCF variants all use `pgvar|` regardless of origin. -5. **Key=value metadata** in description field for structured downstream parsing. diff --git a/docs/use-cases.md b/docs/use-cases.md index bd3cf206..9f45a974 100644 --- a/docs/use-cases.md +++ b/docs/use-cases.md @@ -6,7 +6,7 @@ a search-ready protein database. --- -## Cell-Type Specific Non-Canonical Peptide Discovery +## USE CASE 1: Cell-Type Specific Non-Canonical Peptide Discovery !!! abstract "Featured workflow" This workflow reproduces the analysis from [Umer et al., *Bioinformatics* 2022](https://doi.org/10.1093/bioinformatics/btab838), @@ -20,23 +20,51 @@ lncRNAs, alternative ORFs) and variant sequences from multiple genomic sources. Searching with a database tailored to the cell type of interest maximizes discovery while keeping the search space focused. -### Step 1 -- Download ENSEMBL data +### Step 1 -- Download ENSEMBL data and generate transcript sequences ```bash pgatk ensembl-downloader \ -t 9606 \ + --skip_vcf --skip_protein --skip_cds --skip_cdna --skip_ncrna \ + --generate-transcripts \ -o ensembl_human ``` -### Step 2 -- Generate transcript sequences from GTF +`--generate-transcripts` runs `gffread -F` after the download to produce `ensembl_human/transcripts.fa` with `CDS=` coordinate headers required for the translation steps below. It requires `gffread` in PATH (`conda install -c bioconda gffread`). -```bash -gffread -F -w ensembl_human/transcripts.fa \ - -g ensembl_human/genome.fa \ - ensembl_human/Homo_sapiens.GRCh38.*.gtf.gz -``` +!!! note "Primary assembly vs. alternate haplotypes" + `ensembl-downloader` fetches the **primary-assembly GTF** + (`Homo_sapiens.GRCh38..gtf`), which covers chromosomes 1–22, X, Y, + and MT only. Approximately 11,500 additional protein-coding transcripts + annotated on alternate haplotypes and patch sequences — including multiple + HLA alleles in the MHC region (chr6) and immunoglobulin loci — are absent + from this GTF and therefore absent from `transcripts.fa` and every downstream + database. + + For **HLA peptide detection and immunopeptidomics** workflows where + haplotype-level coverage of the MHC is essential, replace the standard GTF + with the alternate-haplotype annotation after downloading: + + ```bash + # Download the patch/haplotype GTF manually (same FTP release) + wget -P ensembl_human \ + "https://ftp.ensembl.org/pub/release-/gtf/homo_sapiens/\ + Homo_sapiens.GRCh38..chr_patch_hapl_scaff.gtf.gz" + gunzip ensembl_human/Homo_sapiens.GRCh38..chr_patch_hapl_scaff.gtf.gz + + # Re-run gffread with the full annotation + gffread -F -w ensembl_human/transcripts_with_haplotypes.fa \ + -g ensembl_human/Homo_sapiens.GRCh38.dna_sm.toplevel.fa \ + ensembl_human/Homo_sapiens.GRCh38..chr_patch_hapl_scaff.gtf + ``` -### Step 3 -- Canonical protein-coding sequences + Replacing `` with the release number (e.g. `115`). The + `dna_sm.toplevel.fa` genome already contains the alternate sequences, so no + additional genome download is required. Be aware that the expanded database + will be roughly 5% larger and may include redundant peptides from duplicated + gene copies. + +### Step 2 -- Canonical protein-coding sequences Translate all protein-coding transcripts using their annotated CDS: @@ -46,7 +74,7 @@ pgatk dnaseq-to-proteindb \ --output_proteindb canonical.fa ``` -### Step 4 -- Non-canonical translations +### Step 3 -- Non-canonical translations #### Pseudogenes (three-frame) @@ -57,8 +85,8 @@ detectable peptides. Translate them in three reading frames: pgatk dnaseq-to-proteindb \ --input_fasta ensembl_human/transcripts.fa \ --output_proteindb pseudogene.fa \ - --var_prefix pseudo_ \ - --include_biotypes processed_pseudogene,unprocessed_pseudogene,transcribed_processed_pseudogene,transcribed_unprocessed_pseudogene,translated_processed_pseudogene \ + --protein_prefix pseudo_ \ + --include_biotypes pseudogene,processed_pseudogene,unprocessed_pseudogene,transcribed_processed_pseudogene,transcribed_unprocessed_pseudogene,translated_processed_pseudogene,unitary_pseudogene,transcribed_unitary_pseudogene,rRNA_pseudogene,IG_V_pseudogene,TR_V_pseudogene,IG_C_pseudogene,TR_J_pseudogene,IG_J_pseudogene,IG_pseudogene \ --num_orfs 3 \ --skip_including_all_cds ``` @@ -72,39 +100,41 @@ micropeptides: pgatk dnaseq-to-proteindb \ --input_fasta ensembl_human/transcripts.fa \ --output_proteindb lncrna.fa \ - --var_prefix lncrna_ \ - --include_biotypes lincRNA,antisense,sense_intronic,sense_overlapping \ + --protein_prefix lncrna_ \ + --include_biotypes lncRNA \ --num_orfs 3 \ --skip_including_all_cds ``` -#### Alternative ORFs (exonic out-of-frame translation) +#### Putative proteins (three-frame) -Non-canonical reading frames of protein-coding mRNAs can produce cryptic -peptides: +Protein coding genes without CDs that are not validated but annotated: ```bash pgatk dnaseq-to-proteindb \ --input_fasta ensembl_human/transcripts.fa \ - --output_proteindb altorf.fa \ - --var_prefix altorf_ \ - --include_biotypes altORFs \ + --output_proteindb putative.fa \ + --protein_prefix putative_ \ + --include_biotypes protein_coding_CDS_not_defined,TEC,translated_processed_pseudogene \ + --num_orfs 3 \ --skip_including_all_cds ``` -### Step 5 -- Population variant proteins +#### Alternative ORFs (exonic out-of-frame translation) -Include common human variants from ENSEMBL: +Non-canonical reading frames of protein-coding mRNAs can produce cryptic +peptides: ```bash -pgatk vcf-to-proteindb \ - --vcf ensembl_human/homo_sapiens_incl_consequences.vcf.gz \ +pgatk dnaseq-to-proteindb \ --input_fasta ensembl_human/transcripts.fa \ - --gene_annotations_gtf ensembl_human/Homo_sapiens.GRCh38.*.gtf.gz \ - --output_proteindb ensembl_variants.fa + --output_proteindb altorf.fa \ + --protein_prefix altorf_ \ + --include_biotypes altORFs \ + --skip_including_all_cds ``` -### Step 6 -- COSMIC somatic mutations (optional, for cancer cell lines) +### Step 4 -- COSMIC somatic mutations (optional, for cancer cell lines) For cancer cell-line studies, add cell-line-specific somatic mutations: @@ -115,14 +145,15 @@ pgatk cosmic-downloader \ -o cosmic_data pgatk cosmic-to-proteindb \ - --input_mutation cosmic_data/CosmicCLP_MutantExport.tsv.gz \ - --input_genes cosmic_data/All_CellLines_Genes.fasta.gz \ + --input_mutation cosmic_data/CellLinesProject_GenomeScreensMutant_v103_GRCh38.tsv.gz \ + --input_genes cosmic_data/Cosmic_Genes_v103_GRCh38.fasta.gz \ --output_db cosmic_cellline.fa \ - --filter_column "Sample name" \ + --clinical_sample_file cosmic_data/Cosmic_Classification_v103_GRCh38.tsv.gz \ + --filter_column PRIMARY_SITE \ --split_by_filter_column ``` -### Step 7 -- Combine and generate target-decoy database +### Step 5 -- Combine and generate target-decoy database ```bash # Combine all components @@ -130,26 +161,26 @@ pgatk cosmic-to-proteindb \ cat canonical.fa \ pseudogene.fa \ lncrna.fa \ + putative.fa \ altorf.fa \ - ensembl_variants.fa \ > cell_type_target.fa # Generate decoy sequences pgatk generate-decoy \ - --input cell_type_target.fa \ - --output cell_type_target_decoy.fa \ + --input_database cell_type_target.fa \ + --output_database cell_type_target_decoy.fa \ --method decoypyrat \ --decoy_prefix DECOY_ ``` -### Step 8 -- Extract non-canonical unique peptides +### Step 6 -- Extract non-canonical unique peptides After database searching with your search engine, you can also pre-compute the set of non-canonical peptides unique to these novel sources: ```bash pgatk digest-mutant-protein \ - --input pseudogene.fa,lncrna.fa,altorf.fa,ensembl_variants.fa \ + --input pseudogene.fa,lncrna.fa,putative.fa,altorf.fa,ensembl_variants.fa \ --fasta canonical.fa \ --output non_canonical_peptides.fa \ --min-len 7 \ @@ -166,16 +197,16 @@ pgatk digest-mutant-protein \ --- -## 1. Human Variant Protein Database from ENSEMBL +## USE CASE 2: Human Variant Protein Database from ENSEMBL Build a variant protein database using ENSEMBL population variants (common SNPs and indels) for human proteogenomics searches. This is the most common starting point for proteogenomics experiments -- augmenting the canonical proteome with known variant peptides that would otherwise be missed. -### Step 1 -- Download ENSEMBL data +### Step 1 -- Download ENSEMBL data and generate transcript sequences -Download the GTF, CDS, and VCF files for *Homo sapiens* (taxonomy 9606): +Download the GTF, genome FASTA, VCF files, and transcript sequences for *Homo sapiens* (taxonomy 9606): ```bash pgatk ensembl-downloader \ @@ -183,36 +214,73 @@ pgatk ensembl-downloader \ -o ensembl_human \ --skip_protein \ --skip_ncrna \ - --skip_cdna + --skip_cdna \ + --generate-transcripts ``` -This downloads the gene annotation GTF, VCF file with known variants, and the -genome FASTA (needed by gffread to extract transcript sequences). - -### Step 2 -- Generate transcript sequences +This downloads the gene annotation GTF, genome FASTA, and variant VCF(s), then runs `gffread -F` to produce `ensembl_human/transcripts.fa` with `CDS=` coordinate headers. -Use [gffread](http://ccb.jhu.edu/software/stringtie/gff.shtml#gffread) to -extract transcript sequences from the GTF and genome FASTA: +!!! note "ENSEMBL ≥113: expected non-zero exit from the downloader" + Starting with ENSEMBL release 113, the single combined + `homo_sapiens_incl_consequences.vcf.gz` was replaced by per-chromosome files + (`homo_sapiens_incl_consequences-chr1.vcf.gz`, `...-chr2.vcf.gz`, …). + When `ensembl-downloader` cannot find the combined file it falls back to + downloading all per-chromosome VCFs and then exits with a non-zero code. + **This exit code is expected** — all required files are present. The + commands in Step 2 detect the layout automatically. -```bash -gffread -F -w ensembl_human/transcripts.fa \ - -g ensembl_human/genome.fa \ - ensembl_human/Homo_sapiens.GRCh38.*.gtf.gz -``` +!!! note "HLA / immunopeptidomics workflows" + The standard GTF excludes ~11,500 transcripts on alternate MHC haplotypes + and IG loci. See the note in USE CASE 1 Step 1 for instructions on using + `chr_patch_hapl_scaff.gtf` to include them. -### Step 3 -- Generate the variant protein database +### Step 2 -- Generate the variant protein database -Translate all ENSEMBL variants that affect protein-coding transcripts: +ENSEMBL releases differ in how variants are distributed: older releases provide +a single combined VCF; releases ≥113 provide one VCF per chromosome. The +snippet below handles both layouts: ```bash -pgatk vcf-to-proteindb \ - --vcf ensembl_human/homo_sapiens_incl_consequences.vcf.gz \ - --input_fasta ensembl_human/transcripts.fa \ - --gene_annotations_gtf ensembl_human/Homo_sapiens.GRCh38.*.gtf.gz \ - --output_proteindb ensembl_human/variant_proteins.fa +# Detect layout: single combined VCF (older releases) vs. per-chromosome (≥113) +COMBINED_VCF=$(ls ensembl_human/homo_sapiens_incl_consequences.vcf* 2>/dev/null \ + | grep -v '\-chr' | head -1 || true) + +if [[ -n "${COMBINED_VCF}" ]]; then + # ---------- older ENSEMBL release: single VCF ---------- + pgatk vcf-to-proteindb \ + --vcf "${COMBINED_VCF}" \ + --input_fasta ensembl_human/transcripts.fa \ + --gene_annotations_gtf ensembl_human/Homo_sapiens.GRCh38.*.gtf \ + --output_proteindb ensembl_human/variant_proteins.fa + +else + # ---------- ENSEMBL ≥113: one VCF per chromosome ---------- + for VCF_CHR in \ + ensembl_human/homo_sapiens_incl_consequences-chr*.vcf \ + ensembl_human/homo_sapiens_incl_consequences-chr*.vcf.gz; do + [[ -f "${VCF_CHR}" ]] || continue + # Strip leading "...consequences-" and trailing ".vcf[.gz]"; portable (no grep -P). + CHROM=$(basename "${VCF_CHR}" | sed -E 's/.*consequences-//; s/\.vcf(\.gz)?$//') + pgatk vcf-to-proteindb \ + --vcf "${VCF_CHR}" \ + --input_fasta ensembl_human/transcripts.fa \ + --gene_annotations_gtf ensembl_human/Homo_sapiens.GRCh38.*.gtf \ + --output_proteindb "ensembl_human/variant_proteins_${CHROM}.fa" + done + + # Merge all per-chromosome outputs into a single database + cat ensembl_human/variant_proteins_chr*.fa > ensembl_human/variant_proteins.fa +fi ``` -### Step 4 -- Generate the canonical protein database +!!! tip "Per-chromosome processing and memory" + Processing chromosomes individually keeps peak memory low — each + `vcf-to-proteindb` run loads only the VCF records for one chromosome. + The per-chromosome output files (`variant_proteins_chr1.fa`, …) are kept + alongside the merged `variant_proteins.fa` so you can inspect or + troubleshoot individual chromosomes without re-running the full pipeline. + +### Step 3 -- Generate the canonical protein database Translate canonical protein-coding transcripts: @@ -222,7 +290,7 @@ pgatk dnaseq-to-proteindb \ --output_proteindb ensembl_human/canonical_proteins.fa ``` -### Step 5 -- Combine and add decoy sequences +### Step 4 -- Combine and add decoy sequences Merge canonical and variant databases, then generate decoys: @@ -232,8 +300,8 @@ cat ensembl_human/canonical_proteins.fa \ > ensembl_human/target.fa pgatk generate-decoy \ - --input ensembl_human/target.fa \ - --output ensembl_human/target_decoy.fa \ + --input_database ensembl_human/target.fa \ + --output_database ensembl_human/target_decoy.fa \ --method decoypyrat \ --decoy_prefix DECOY_ ``` @@ -242,7 +310,7 @@ The file `target_decoy.fa` is ready for database searching. --- -## 2. Population-Specific Variant Database +## USE CASE 3: Population-Specific Variant Database Population-level genetic variants cause amino acid changes that are invisible to standard reference database searches. Studies have shown that incorporating @@ -255,7 +323,7 @@ Include only variants present in at least 1% of the population: ```bash pgatk vcf-to-proteindb \ - --vcf homo_sapiens_incl_consequences.vcf.gz \ + --vcf homo_sapiens_incl_consequences.vcf \ --input_fasta transcripts.fa \ --gene_annotations_gtf genes.gtf \ --af_field MAF \ @@ -270,7 +338,7 @@ detectable by mass spectrometry: ```bash pgatk vcf-to-proteindb \ - --vcf homo_sapiens_incl_consequences.vcf.gz \ + --vcf homo_sapiens_incl_consequences.vcf \ --input_fasta transcripts.fa \ --gene_annotations_gtf genes.gtf \ --af_field MAF \ @@ -283,19 +351,68 @@ pgatk vcf-to-proteindb \ gnomAD provides allele frequencies stratified by ancestry (African, East Asian, South Asian, European, Latino, etc.). Build a database using variants common in -a specific population: +a specific population. + +gnomAD v4.1.1 provides **exome** VCFs annotated with **GENCODE v39** +(GRCh38). All three steps below use pgatk commands. + +#### Step 1 — Download GENCODE v39 and generate CDS-annotated transcripts ```bash -pgatk vcf-to-proteindb \ - --vcf gnomad.exomes.v4.1.sites.vcf.bgz \ - --input_fasta gencode_transcripts.fa \ - --gene_annotations_gtf gencode.v44.annotation.gtf.gz \ - --annotation_field_name vep \ - --af_field AF_afr \ - --af_threshold 0.01 \ - --include_consequences missense_variant,inframe_insertion,inframe_deletion \ - --biotype_str transcript_type \ - --output_proteindb gnomad_afr_proteins.fa +pgatk gencode-downloader \ + -o gencode_data \ + --release 39 \ + --generate-transcripts +``` + +This downloads `gencode.v39.annotation.gtf` and `GRCh38.primary_assembly.genome.fa`, +then runs `gffread -F` to produce `gencode_data/transcripts.fa` with `CDS=` coordinate +headers. The `CDS=` headers are required for 1-frame CDS translation; the pre-built +GENCODE transcript FASTA does **not** include them. + +!!! note "GENCODE transcript ID versioning" + GENCODE FASTA headers include a version suffix (e.g. `ENST00000456328.2`). + pgatk automatically strips the suffix when matching against VCF transcript IDs, + so gnomAD VEP entries (which use bare IDs like `ENST00000456328`) resolve correctly. + +#### Step 2 — Download gnomAD v4.1.1 exome VCFs (all chromosomes in parallel) + +```bash +pgatk gnomad-vcf-downloader \ + -o gnomad_vcf \ + --version 4.1.1 \ + --dataset exomes \ + --workers 8 +``` + +This fetches one `.vcf.bgz` + `.vcf.bgz.tbi` pair per chromosome (48 files total) +from the gnomAD Google Cloud Storage bucket in parallel. Use `--chromosomes chr22` +to download a single chromosome for testing. + +#### Step 3 — Translate variants for all chromosomes and merge + +Process each chromosome independently, then concatenate the per-chromosome outputs +into a single protein database: + +```bash +for chrom in chr{1..22} chrX chrY; do + pgatk vcf-to-proteindb \ + --vcf gnomad_vcf/gnomad.exomes.v4.1.1.sites.${chrom}.vcf.bgz \ + --input_fasta gencode_data/transcripts.fa \ + --gene_annotations_gtf gencode_data/gencode.v39.annotation.gtf \ + --annotation_field_name vep \ + --transcript_str Feature \ + --consequence_str Consequence \ + --biotype_str BIOTYPE \ + --include_biotypes protein_coding \ + --af_field AF_afr \ + --af_threshold 0.01 \ + --include_consequences missense_variant,inframe_insertion,inframe_deletion,stop_gained \ + --output_proteindb gnomad_vcf/gnomad_afr_proteins_${chrom}.fa +done + +# Merge all chromosomes into one database +cat gnomad_vcf/gnomad_afr_proteins_chr*.fa > gnomad_afr_proteins_all.fa ``` !!! tip "gnomAD-specific parameters" @@ -303,12 +420,25 @@ pgatk vcf-to-proteindb \ - `--af_field` -- Use population-specific AF fields: `AF_afr` (African), `AF_eas` (East Asian), `AF_sas` (South Asian), `AF_nfe` (Non-Finnish European), `AF_amr` (Latino), or `controls_AF` (all controls) - - `--biotype_str transcript_type` -- GENCODE uses `transcript_type` instead - of ENSEMBL's `transcript_biotype` + - `--biotype_str BIOTYPE` -- gnomAD's VEP INFO field names the biotype column + `BIOTYPE`; this is distinct from GENCODE/Ensembl GTF attribute names + (`transcript_type` / `transcript_biotype`) which only apply to the + `dnaseq-to-proteindb` command + - `--include_biotypes protein_coding` -- restrict translation to + protein-coding transcripts only; without this, retained introns, + pseudogenes, and other non-coding biotypes annotated in the VEP field + would also be processed + +!!! warning "GENCODE version must match the gnomAD VCF" + pgatk automatically checks that the GENCODE version in the VCF header + (`##gencode_version=`) matches the release number embedded in the GTF + (`##description: ... version N ...`) and emits a warning on mismatch. + Check your VCF header with `zcat file.vcf.bgz | grep gencode_version | head -1` + to confirm the correct release before running `gencode-downloader`. --- -## 3. ClinVar Clinical Variant Database +## USE CASE 4: ClinVar Clinical Variant Database [ClinVar](https://www.ncbi.nlm.nih.gov/clinvar/) catalogs the relationship between human variants and clinical phenotypes. Building a ClinVar-derived @@ -319,33 +449,50 @@ validating pathogenic variants at the protein level. ### Step 1 -- Download NCBI / ClinVar files ```bash -pgatk ncbi-downloader -o ncbi_data +pgatk ncbi-downloader -o ncbi_clinvar ``` -This downloads four files to `ncbi_data/`: +This downloads three RefSeq files and the ClinVar VCF to `ncbi_clinvar/`: -- `GRCh38_latest_genomic.gtf.gz` -- RefSeq gene annotations -- `GRCh38_latest_rna.fna.gz` -- RefSeq transcript nucleotide sequences +- `GRCh38_latest_genomic.fna` -- Human genomic DNA (needed by gffread) +- `GRCh38_latest_genomic.gff` -- RefSeq gene annotations in GFF3 format - `GRCh38_latest_assembly_report.txt` -- Chromosome name mapping -- `clinvar.vcf.gz` -- ClinVar variant calls +- `clinvar.vcf` -- ClinVar variant calls + +### Step 2 -- Extract transcript sequences with CDS annotations -### Step 2 -- Generate the ClinVar protein database +Use `--generate-transcripts` with `ncbi-downloader` to run gffread automatically +and produce `transcripts.fa` with `CDS=` coordinate headers in a single step: + +```bash +pgatk ncbi-downloader -o ncbi_clinvar --generate-transcripts +``` + +!!! note + GFF3 format is required. The NCBI RefSeq GTF leaves `transcript_id` empty + for many records, so gffread cannot link CDS features to their parent + transcripts and produces no valid output. GFF3 uses explicit `ID=`/`Parent=` + linkage that gffread handles correctly. + The `-F` flag embeds `CDS=start-end` coordinates in each FASTA header, + enabling 1-frame CDS translation in `clinvar-to-proteindb`. + +### Step 3 -- Generate the ClinVar protein database ```bash pgatk clinvar-to-proteindb \ - --vcf ncbi_data/clinvar.vcf.gz \ - --gtf ncbi_data/GRCh38_latest_genomic.gtf.gz \ - --fasta ncbi_data/GRCh38_latest_rna.fna.gz \ - --assembly-report ncbi_data/GRCh38_latest_assembly_report.txt \ + --vcf ncbi_clinvar/clinvar.vcf \ + --gff ncbi_clinvar/GRCh38_latest_genomic.gff \ + --fasta ncbi_clinvar/transcripts.fa \ + --assembly-report ncbi_clinvar/GRCh38_latest_assembly_report.txt \ --output clinvar_proteins.fa ``` -### Step 3 -- Add decoy sequences +### Step 4 -- Add decoy sequences ```bash pgatk generate-decoy \ - --input clinvar_proteins.fa \ - --output clinvar_target_decoy.fa \ + --input_database clinvar_proteins.fa \ + --output_database clinvar_target_decoy.fa \ --method decoypyrat ``` @@ -356,7 +503,7 @@ pgatk generate-decoy \ --- -## 4. Tumor-Specific Databases for Cancer Proteogenomics +## USE CASE 5: Condition-Specific Databases for Proteogenomics Cancer proteogenomics studies (such as those from CPTAC) build tumor-specific protein databases to detect somatic mutant peptides, understand @@ -364,7 +511,7 @@ therapy resistance, and prioritize neoantigen candidates. The databases combine somatic mutations from cancer-specific sources (COSMIC, cBioPortal) and/or patient-matched whole-exome sequencing. -### 4a. COSMIC somatic mutations by cancer type +### 4a. Cancer-specific database using COSMIC somatic mutations Generate one protein database per primary tissue site. This is the standard approach for large-scale cancer proteogenomics when patient-level WES is not @@ -379,88 +526,155 @@ pgatk cosmic-downloader \ # Generate per-tissue databases pgatk cosmic-to-proteindb \ - --input_mutation cosmic_data/CosmicMutantExport.tsv.gz \ - --input_genes cosmic_data/All_COSMIC_Genes.fasta.gz \ + --input_mutation cosmic_data/Cosmic_GenomeScreensMutant_v103_GRCh38.tsv.gz \ + --input_genes cosmic_data/Cosmic_Genes_v103_GRCh38.fasta.gz \ --output_db cosmic_proteins.fa \ + --clinical_sample_file cosmic_data/Cosmic_Classification_v103_GRCh38.tsv.gz \ + --filter_column PRIMARY_SITE \ --split_by_filter_column ``` This produces files like `cosmic_proteins_lung.fa`, `cosmic_proteins_breast.fa`, etc. Use the tissue-matched database for your cancer type of interest. -### 4b. Single cancer type +!!! note "COSMIC v103 tissue annotation" + In COSMIC v103, `PRIMARY_SITE` is not a column in the mutation file. It lives + in the separate Classification file (`Cosmic_Classification_v103_GRCh38.tsv.gz`) + and is joined via `COSMIC_PHENOTYPE_ID`. Pass the Classification file via + `--clinical_sample_file` whenever tissue-type filtering or splitting is needed. + +### 4b. Cancer-type specific database using COSMIC somatic mutations Build a focused database for one cancer type (e.g. lung): ```bash pgatk cosmic-to-proteindb \ - --input_mutation cosmic_data/CosmicMutantExport.tsv.gz \ - --input_genes cosmic_data/All_COSMIC_Genes.fasta.gz \ + --input_mutation cosmic_data/Cosmic_GenomeScreensMutant_v103_GRCh38.tsv.gz \ + --input_genes cosmic_data/Cosmic_Genes_v103_GRCh38.fasta.gz \ --output_db cosmic_lung_proteins.fa \ + --clinical_sample_file cosmic_data/Cosmic_Classification_v103_GRCh38.tsv.gz \ + --filter_column PRIMARY_SITE \ --accepted_values "lung" ``` -### 4c. Cell-line proteogenomics +### 4c. Cell-type specific databases When analyzing cell-line proteomes, use cell-line-specific mutations. COSMIC provides a dedicated cell-line export with mutations annotated per sample: ```bash pgatk cosmic-to-proteindb \ - --input_mutation cosmic_data/CosmicCLP_MutantExport.tsv.gz \ - --input_genes cosmic_data/All_CellLines_Genes.fasta.gz \ + --input_mutation cosmic_data/CellLinesProject_GenomeScreensMutant_v103_GRCh38.tsv.gz \ + --input_genes cosmic_data/Cosmic_Genes_v103_GRCh38.fasta.gz \ --output_db cosmic_cellline_proteins.fa \ - --filter_column "Sample name" \ + --clinical_sample_file cosmic_data/Cosmic_Classification_v103_GRCh38.tsv.gz \ + --filter_column PRIMARY_SITE \ --split_by_filter_column ``` ### 4d. cBioPortal study-specific database cBioPortal hosts mutation data from thousands of cancer genomics studies. -Generate a protein database from a specific study: +The cBioPortal API returns **RefSeq** transcript IDs (`NM_...`), so the +`--input_fasta` file must also use RefSeq IDs. Use `ncbi-downloader --generate-transcripts` +to produce the transcript FASTA with `CDS=` coordinate and `gene_biotype=` headers required +for biotype filtering. Both GRCh37 and GRCh38 studies are supported. -```bash -# List available studies -pgatk cbioportal-downloader --list_studies +By default, only `protein_coding` transcripts are translated. Pass +`--include_biotypes all` to include all biotypes (enables 3-frame translation for +transcripts without a `CDS=` header). `Nonsense_Mutation` variants are excluded by default; +pass `--exclude_variant_classifications ""` to override. -# Download a study +Use `--workers N` to parallelise the translation phase across N CPU cores, beneficial +for large pan-cancer studies with large number of mutations. + +#### GRCh37 study (e.g. TCGA PanCancer Atlas 2018) + +```bash +# Download a GRCh37 study pgatk cbioportal-downloader \ -d brca_tcga_pan_can_atlas_2018 \ -o cbioportal_data -# Download ENSEMBL CDS (hg19 -- cBioPortal uses GRCh37) -pgatk ensembl-downloader \ - -t 9606 --grch37 -o ensembl_hg19 \ - --skip_vcf --skip_gtf --skip_protein \ - --skip_ncrna --skip_cdna --skip_dna +# Download RefSeq GRCh37 reference and generate transcript FASTA (run once) +pgatk ncbi-downloader \ + --grch37 \ + --generate-transcripts \ + -o ncbi_grch37 + +# Translate mutations (--gff provides coordinate fallback when HGVSc is absent) +pgatk cbioportal-to-proteindb \ + --input_mutation cbioportal_data/brca_tcga_pan_can_atlas_2018/data_mutations.txt \ + --input_fasta ncbi_grch37/transcripts.fa \ + --gff ncbi_grch37/GRCh37_latest_genomic.gff \ + --output_db brca_tcga_proteins.fa \ + --workers 8 +``` + +#### GRCh38 study (e.g. TCGA GDC reprocessed) + +```bash +# Download a GRCh38 study +pgatk cbioportal-downloader \ + -d brca_tcga_gdc \ + -o cbioportal_data + +# Download RefSeq GRCh38 reference and generate transcript FASTA (run once) +pgatk ncbi-downloader \ + --generate-transcripts \ + -o ncbi_grch38 # Translate mutations pgatk cbioportal-to-proteindb \ - --input_mutation cbioportal_data/data_mutations_mskcc.txt \ - --input_cds ensembl_hg19/Homo_sapiens.GRCh37.cds.all.fa.gz \ - --output_db brca_tcga_proteins.fa + --input_mutation cbioportal_data/brca_tcga_gdc/data_mutations.txt \ + --input_fasta ncbi_grch38/transcripts.fa \ + --gff ncbi_grch38/GRCh38_latest_genomic.gff \ + --output_db brca_tcga_gdc_proteins.fa \ + --workers 8 ``` +#### Per-cancer-type split (tissue-specific databases) + +Pass `--split_by_filter_column` together with `--clinical_sample_file` to generate +one FASTA per cancer type alongside the combined output. The clinical sample file +(`data_clinical_sample.txt`) ships with every cBioPortal study and maps each +`SAMPLE_ID` to its `CANCER_TYPE`. + +```bash +pgatk cbioportal-to-proteindb \ + --input_mutation cbioportal_data/brca_tcga_pan_can_atlas_2018/data_mutations.txt \ + --input_fasta ncbi_grch37/transcripts.fa \ + --gff ncbi_grch37/GRCh37_latest_genomic.gff \ + --clinical_sample_file cbioportal_data/brca_tcga_pan_can_atlas_2018/data_clinical_sample.txt \ + --split_by_filter_column \ + --output_db brca_tcga_proteins.fa \ + --workers 8 +``` + +This writes `brca_tcga_proteins.fa` (all mutations) plus one `brca_tcga_proteins_.fa` +per group, e.g. `brca_tcga_proteins_BreastCancer.fa`. + ### 4e. Combined cancer database for immunopeptidomics For HLA immunopeptidomics / neoantigen discovery, a broad mutation database -maximizes the chance of detecting mutant HLA-presented peptides. Studies have -shown that COSMIC-derived databases can identify 5x more mutant immunopeptides -than patient WES alone. Combine COSMIC with ClinVar: +maximizes the chance of detecting mutant HLA-presented peptides. COSMIC-derived +databases have been shown to identify 5x more mutant HLA-I immunopeptides than +patient WES alone ([Wang et al., *J Transl Med* 2024](https://doi.org/10.1186/s12967-023-04821-0)). +Combine COSMIC with ClinVar: ```bash # Generate COSMIC mutations pgatk cosmic-to-proteindb \ - --input_mutation cosmic_data/CosmicMutantExport.tsv.gz \ - --input_genes cosmic_data/All_COSMIC_Genes.fasta.gz \ + --input_mutation cosmic_data/Cosmic_GenomeScreensMutant_v103_GRCh38.tsv.gz \ + --input_genes cosmic_data/Cosmic_Genes_v103_GRCh38.fasta.gz \ --output_db cosmic_proteins.fa -# Generate ClinVar mutations +# Generate ClinVar mutations (transcripts.fa generated via gffread -F; see USE CASE 4) pgatk clinvar-to-proteindb \ - --vcf ncbi_data/clinvar.vcf.gz \ - --gtf ncbi_data/GRCh38_latest_genomic.gtf.gz \ - --fasta ncbi_data/GRCh38_latest_rna.fna.gz \ - --assembly-report ncbi_data/GRCh38_latest_assembly_report.txt \ + --vcf ncbi_clinvar/clinvar.vcf.gz \ + --gff ncbi_clinvar/GRCh38_latest_genomic.gff \ + --fasta ncbi_clinvar/transcripts.fa \ + --assembly-report ncbi_clinvar/GRCh38_latest_assembly_report.txt \ --output clinvar_proteins.fa # Extract variant-unique peptides (undigested -- HLA peptides are not tryptic) @@ -468,14 +682,14 @@ pgatk clinvar-to-proteindb \ cat cosmic_proteins.fa clinvar_proteins.fa > neoantigen_candidates.fa pgatk generate-decoy \ - --input neoantigen_candidates.fa \ - --output neoantigen_target_decoy.fa \ + --input_database neoantigen_candidates.fa \ + --output_database neoantigen_target_decoy.fa \ --method decoypyrat ``` --- -## 5. Patient-Specific Database from WGS/WES +## USE CASE 6: Patient-Specific Database from WGS/WES When matched whole-genome or whole-exome sequencing data is available for a sample, build a personalized protein database from the patient's own @@ -530,24 +744,24 @@ pgatk vcf-to-proteindb \ --- -## 6. Novel ORF and Micropeptide Discovery +## USE CASE 7: Novel ORF and Micropeptide Discovery Proteogenomics is a key approach for discovering novel coding regions: small open reading frames (smORFs), micropeptides from lncRNAs, pseudogene-encoded proteins, and alternative reading frames. Studies have found that non-canonical peptides can account for over 5% of total identifications. -### lincRNA-derived proteins +### lncRNA-derived proteins -Long intergenic non-coding RNAs (lincRNAs) can encode small proteins. Translate +Long intergenic non-coding RNAs (lncRNAs) can encode small proteins. Translate them in three reading frames: ```bash pgatk dnaseq-to-proteindb \ --input_fasta transcripts.fa \ - --output_proteindb lincRNA_proteins.fa \ - --var_prefix lincRNA_ \ - --include_biotypes lincRNA \ + --output_proteindb lncRNA_proteins.fa \ + --protein_prefix lncRNA_ \ + --include_biotypes lncRNA \ --num_orfs 3 \ --skip_including_all_cds ``` @@ -560,7 +774,7 @@ Some pseudogenes are transcribed and may produce functional peptides: pgatk dnaseq-to-proteindb \ --input_fasta transcripts.fa \ --output_proteindb pseudogene_proteins.fa \ - --var_prefix pseudogene_ \ + --protein_prefix pseudogene_ \ --include_biotypes processed_pseudogene,transcribed_processed_pseudogene,translated_processed_pseudogene \ --num_orfs 3 \ --skip_including_all_cds @@ -575,7 +789,7 @@ discover upstream ORFs (uORFs), overlapping ORFs, and downstream ORFs: pgatk dnaseq-to-proteindb \ --input_fasta transcripts.fa \ --output_proteindb altorf_proteins.fa \ - --var_prefix altorf_ \ + --protein_prefix altorf_ \ --include_biotypes altORFs \ --skip_including_all_cds ``` @@ -586,7 +800,7 @@ pgatk dnaseq-to-proteindb \ pgatk dnaseq-to-proteindb \ --input_fasta transcripts.fa \ --output_proteindb antisense_proteins.fa \ - --var_prefix antisense_ \ + --protein_prefix antisense_ \ --include_biotypes antisense,antisense_RNA \ --num_orfs 3 \ --skip_including_all_cds @@ -598,15 +812,15 @@ Combine all non-canonical sources with the canonical proteome: ```bash cat canonical_proteins.fa \ - lincRNA_proteins.fa \ + lncRNA_proteins.fa \ pseudogene_proteins.fa \ altorf_proteins.fa \ antisense_proteins.fa \ > novel_orf_target.fa pgatk generate-decoy \ - --input novel_orf_target.fa \ - --output novel_orf_target_decoy.fa \ + --input_database novel_orf_target.fa \ + --output_database novel_orf_target_decoy.fa \ --method decoypyrat ``` @@ -616,7 +830,7 @@ pgatk generate-decoy \ ```bash pgatk digest-mutant-protein \ - --input lincRNA_proteins.fa,pseudogene_proteins.fa,altorf_proteins.fa \ + --input lncRNA_proteins.fa,pseudogene_proteins.fa,altorf_proteins.fa \ --fasta canonical_proteins.fa \ --output novel_unique_peptides.fa ``` @@ -720,8 +934,8 @@ pgatk dnaseq-to-proteindb \ ```bash pgatk generate-decoy \ - --input metagenome_proteins.fa \ - --output metagenome_target_decoy.fa \ + --input_database metagenome_proteins.fa \ + --output_database metagenome_target_decoy.fa \ --method decoypyrat ``` @@ -759,8 +973,8 @@ pgatk dnaseq-to-proteindb \ cat canonical_proteins.fa long_read_proteins.fa > lr_target.fa pgatk generate-decoy \ - --input lr_target.fa \ - --output lr_target_decoy.fa \ + --input_database lr_target.fa \ + --output_database lr_target_decoy.fa \ --method decoypyrat ``` @@ -797,16 +1011,13 @@ pgatk supports any species available in ENSEMBL. For example, rice ```bash pgatk ensembl-downloader \ -t 39947 \ + --generate-transcripts \ -o ensembl_rice ``` -### Step 2 -- Generate transcript sequences and canonical proteome +### Step 2 -- Generate canonical proteome ```bash -gffread -F -w ensembl_rice/transcripts.fa \ - -g ensembl_rice/genome.fa \ - ensembl_rice/Oryza_sativa.IRGSP-1.0.*.gtf.gz - pgatk dnaseq-to-proteindb \ --input_fasta ensembl_rice/transcripts.fa \ --output_proteindb rice_canonical.fa @@ -837,8 +1048,8 @@ pgatk dnaseq-to-proteindb \ cat rice_canonical.fa rice_3frame.fa > rice_target.fa pgatk generate-decoy \ - --input rice_target.fa \ - --output rice_target_decoy.fa \ + --input_database rice_target.fa \ + --output_database rice_target_decoy.fa \ --method decoypyrat ``` @@ -858,13 +1069,8 @@ pgatk map-peptide2genome \ For model organisms like mouse (*Mus musculus*, taxonomy 10090): ```bash -# Download -pgatk ensembl-downloader -t 10090 -o ensembl_mouse - -# Generate transcript sequences -gffread -F -w ensembl_mouse/transcripts.fa \ - -g ensembl_mouse/genome.fa \ - ensembl_mouse/Mus_musculus.GRCm39.*.gtf.gz +# Download and generate transcript sequences +pgatk ensembl-downloader -t 10090 --generate-transcripts -o ensembl_mouse # Canonical + variant proteins pgatk dnaseq-to-proteindb \ @@ -880,8 +1086,8 @@ pgatk vcf-to-proteindb \ # Combine and generate decoy cat mouse_canonical.fa mouse_variants.fa > mouse_target.fa pgatk generate-decoy \ - --input mouse_target.fa \ - --output mouse_target_decoy.fa \ + --input_database mouse_target.fa \ + --output_database mouse_target_decoy.fa \ --method decoypyrat ``` @@ -928,25 +1134,17 @@ to maximize the discovery of non-canonical peptides. ### Step 1 -- Download all data sources ```bash -# ENSEMBL (canonical + population variants) -pgatk ensembl-downloader -t 9606 -o ensembl_data +# ENSEMBL (canonical + population variants) + transcript sequences +pgatk ensembl-downloader -t 9606 --generate-transcripts -o ensembl_data -# NCBI / ClinVar -pgatk ncbi-downloader -o ncbi_data +# NCBI / ClinVar + transcript sequences with CDS= headers +pgatk ncbi-downloader --generate-transcripts -o ncbi_clinvar # COSMIC (requires account) pgatk cosmic-downloader -u user@example.com -p password -o cosmic_data ``` -### Step 2 -- Prepare transcript sequences - -```bash -gffread -F -w ensembl_data/transcripts.fa \ - -g ensembl_data/genome.fa \ - ensembl_data/Homo_sapiens.GRCh38.*.gtf.gz -``` - -### Step 3 -- Generate all protein databases +### Step 2 -- Generate all protein databases ```bash # Canonical proteins @@ -963,24 +1161,24 @@ pgatk vcf-to-proteindb \ # ClinVar clinical variants pgatk clinvar-to-proteindb \ - --vcf ncbi_data/clinvar.vcf.gz \ - --gtf ncbi_data/GRCh38_latest_genomic.gtf.gz \ - --fasta ncbi_data/GRCh38_latest_rna.fna.gz \ - --assembly-report ncbi_data/GRCh38_latest_assembly_report.txt \ + --vcf ncbi_clinvar/clinvar.vcf.gz \ + --gff ncbi_clinvar/GRCh38_latest_genomic.gff \ + --fasta ncbi_clinvar/transcripts.fa \ + --assembly-report ncbi_clinvar/GRCh38_latest_assembly_report.txt \ --output clinvar_variants.fa # COSMIC somatic mutations pgatk cosmic-to-proteindb \ - --input_mutation cosmic_data/CosmicMutantExport.tsv.gz \ - --input_genes cosmic_data/All_COSMIC_Genes.fasta.gz \ + --input_mutation cosmic_data/Cosmic_GenomeScreensMutant_v103_GRCh38.tsv.gz \ + --input_genes cosmic_data/Cosmic_Genes_v103_GRCh38.fasta.gz \ --output_db cosmic_variants.fa -# Non-coding RNA (lincRNA) +# Non-coding RNA (lncRNA) pgatk dnaseq-to-proteindb \ --input_fasta ensembl_data/transcripts.fa \ - --output_proteindb lincRNA.fa \ - --var_prefix lincRNA_ \ - --include_biotypes lincRNA \ + --output_proteindb lncRNA.fa \ + --protein_prefix lncRNA_ \ + --include_biotypes lncRNA \ --num_orfs 3 \ --skip_including_all_cds @@ -988,25 +1186,35 @@ pgatk dnaseq-to-proteindb \ pgatk dnaseq-to-proteindb \ --input_fasta ensembl_data/transcripts.fa \ --output_proteindb pseudogene.fa \ - --var_prefix pseudogene_ \ + --protein_prefix pseudogene_ \ --include_biotypes processed_pseudogene,transcribed_processed_pseudogene \ --num_orfs 3 \ --skip_including_all_cds + +# Putative proteins (three-frame translation of all protein-coding transcripts) +pgatk dnaseq-to-proteindb \ + --input_fasta ensembl_data/transcripts.fa \ + --output_proteindb putative.fa \ + --protein_prefix putative_ \ + --include_biotypes protein_coding \ + --num_orfs 3 \ + --skip_including_all_cds ``` -### Step 4 -- Combine all databases +### Step 3 -- Combine all databases ```bash cat canonical.fa \ ensembl_variants.fa \ clinvar_variants.fa \ cosmic_variants.fa \ - lincRNA.fa \ + lncRNA.fa \ + putative.fa \ pseudogene.fa \ > combined_target.fa ``` -### Step 5 -- Quality check and decoy generation +### Step 4 -- Quality check and decoy generation ```bash # Filter short sequences and validate @@ -1017,17 +1225,17 @@ pgatk ensembl-check \ # Add decoy sequences pgatk generate-decoy \ - --input validated_target.fa \ - --output proteogenomics_target_decoy.fa \ + --input_database validated_target.fa \ + --output_database proteogenomics_target_decoy.fa \ --method decoypyrat \ --decoy_prefix DECOY_ ``` -### Step 6 (optional) -- Extract unique variant peptides +### Step 5 (optional) -- Extract unique variant peptides ```bash pgatk digest-mutant-protein \ - --input ensembl_variants.fa,clinvar_variants.fa,cosmic_variants.fa,lincRNA.fa,pseudogene.fa \ + --input ensembl_variants.fa,clinvar_variants.fa,cosmic_variants.fa,lncRNA.fa,pseudogene.fa \ --fasta canonical.fa \ --output unique_variant_peptides.fa \ --min-len 7 \ diff --git a/docs/validations.md b/docs/validations.md new file mode 100644 index 00000000..7f8be439 --- /dev/null +++ b/docs/validations.md @@ -0,0 +1,481 @@ +# Test Validations + +This page documents the validation strategy for PGATK, describing what the automated tests verify and how to independently confirm their correctness. +# 1. Variant Translation Tests - COSMIC +## 1.1 Validation per variant type (`test_variant_types_hgvs.py`) + +These tests verify that `CancerGenomesService.get_mut_pro_seq()` correctly processes all 18 Sequence Ontology (SO) variant types present in COSMIC v103 mutation files, following [HGVS nomenclature rules](https://hgvs-nomenclature.org/stable/). + +Each test uses a real mutation from `Cosmic_CompleteTargetedScreensMutant_v103_GRCh38.tsv` paired with the matching CDS from `Cosmic_Genes_v103_GRCh38.fasta`. + +--- + +### Actionable Variant Types + +These types are expected to produce a non-empty mutant protein sequence. Tests assert biologically specific properties, not just that the result is non-empty. + +| Variant Type | Gene | Mutation | HGVS Rule Verified | +|---|---|---|---| +| `missense_variant` | EZH2 | c.656C>T p.S219F | Protein length unchanged; position 218 (0-indexed) is `F`; all other residues identical to WT | +| `stop_gained` | FCGR3B | c.394A>T p.K132* | Position 131 (0-indexed) is `*` (stop codon) in the translated output | +| `inframe_deletion` | CTNNB1 | c.104_124del p.T35_G41del | Protein shortened by exactly 7 AA (21 nt deleted ÷ 3); residues before position 35 unchanged | +| `inframe_insertion` (dup) | SMAP1 | c.1226_1228dup p.I409dup | Protein lengthened by exactly 1 AA (3 nt duplicated ÷ 3); residues before the dup site unchanged | +| `protein_altering_variant` | NF2 | c.252_262delinsCT p.L85_K88delins* | Result is non-empty and differs from the wild-type sequence | +| `frameshift_variant` | MEN1 | c.292del p.R98Efs*21 | Non-empty translated sequence produced from the frame-shifted CDS | +| `start_lost` | INPP4B | c.3G>T p.M1? | First AA is not Met; it is Ile (`ATG→ATT` via the DNA substitution path) | +| `stop_lost` | MYD88 | c.611_613delinsGCGGCCCCC p.D204_*205delinsGGPR | Mutant protein is longer than WT (stop codon removed; read-through occurs) | +| `stop_retained_variant` | EPHA3 | c.2756G>A p.*919= | Length unchanged; last residue is still `*` (`TGA→TAA`, both stop codons) | + +--- + +### Filtered / Skipped Variant Types + +These types must produce an empty string `""`. There are two mechanisms: + +- **Pre-filter** (`cosmic_to_proteindb`): `synonymous_variant` rows are discarded before `get_mut_pro_seq` is called. +- **`p.?` guard** (`get_mut_pro_seq`): When `aa_mut == "p.?"`, the function immediately returns `""`. All intronic, UTR, and splice variants in COSMIC v103 carry `p.?`. + +| Variant Type | Mechanism | Source Mutation | +|---|---|---| +| `synonymous_variant` | Pre-filter in `cosmic_to_proteindb` | Filter logic validated directly on the SO term strings | +| `intron_variant` | `p.?` guard | RAD51C c.145+706C>T p.? | +| `3_prime_UTR_variant` | `p.?` guard | SUFU c.*2816G>A p.? | +| `5_prime_UTR_variant` | `p.?` guard | PSMD13 c.-20C>T p.? | +| `coding_sequence_variant` | `p.?` guard (also has intronic offset `+`) | OAS2 c.2157+2A>G p.? | +| `splice_acceptor_variant` | `p.?` guard | TSHR c.171-1G>A p.? | +| `splice_donor_variant` | `p.?` guard | PTCH1 c.3306+2T>G p.? | +| `splice_region_variant` (composite) | Fires missense branch when combined with `missense_variant` | EZH2 c.656C>T p.S219F with type `missense_variant,splice_region_variant` | +| `incomplete_terminal_codon_variant` | `p.?` guard (absent from v103 targeted-screen data; tested by convention) | c.2213_2214insA p.? | + +!!! note + `splice_region_variant` only appears in COSMIC v103 as part of a composite type string (e.g. `missense_variant,splice_region_variant`). When combined with an actionable type, the actionable type's branch fires first and the mutation is processed normally. + +--- + +## 1.2 Independent Validation of the Tests + +### 1. Re-derive CDS sequences from the FASTA + +The CDS strings embedded in the test file came from `Cosmic_Genes_v103_GRCh38.fasta`. To verify a gene (e.g. EZH2): + +```bash +python3 - <<'EOF' +from Bio import SeqIO +fasta = "use-cases/cosmic_data/Cosmic_Genes_v103_GRCh38.fasta" +for rec in SeqIO.parse(fasta, "fasta"): + if "EZH2" in rec.id and "ENST00000483967" in rec.id: + print(f"len={len(rec.seq)}") + print(f"prot[218]={rec.seq.translate(to_stop=False)[218]}") + print(rec.seq[:50]) +EOF +``` + +Expected: `len=2211`, `prot[218]=S` (which becomes `F` after the c.656C>T substitution). + +### 2. Confirm mutations exist in the COSMIC TSV + +Every test documents its source mutation. To verify a mutation is real and not fabricated: + +```bash +grep "EZH2" use-cases/cosmic_data/Cosmic_CompleteTargetedScreensMutant_v103_GRCh38.tsv | \ + grep "c.656C>T" | \ + cut -f1-10 +``` + +### 3. Manually compute expected protein output + +For the missense test, manually apply the substitution and translate: + +```python +from Bio.Seq import Seq + +cds = '''ATGGGCCAGACTGGGAAGAAATCTGAGAAGGGACCAGTTTGTTGGCGGAAGCGTGTAAAATCAGAGTACATGCGACTGAGACAGCTCAAGAGGTTCAGACGAGCTGATGAAGTAAAGAGTATGTTTAGTTCCAATCGTCAGAAAATT +TTGGAAAGAACGGAAATCTTAAACCAAGAATGGAAACAGCGAAGGATACAGCCTGTGCACATCCTGACTTCTTGTTCGGTGACCAGTGACTTGGATTTTCCAACACAAGTCATCCCATTAAAGACTCTGAATGCAGTTGCTTCAGTACCCATAATG +TATTCTTGGTCTCCCCTACAGCAGAATTTTATGGTGGAAGATGAAACTGTTTTACATAACATTCCTTATATGGGAGATGAAGTTTTAGATCAGGATGGTACTTTCATTGAAGAACTAATAAAAAATTATGATGGGAAAGTACACGGGGATAGAGAA +TGTGGGTTTATAAATGATGAAATTTTTGTGGAGTTGGTGAATGCCCTTGGTCAATATAATGATGATGACGATGATGATGATGGAGACGATCCTGAAGAAAGAGAAGAAAAGCAGAAAGATCTGGAGGATCACCGAGATGATAAAGAAAGCCGCCCA +CCTCGGAAATTTCCTTCTGATAAAATTTTTGAAGCCATTTCCTCAATGTTTCCAGATAAGGGCACAGCAGAAGAACTAAAGGAAAAATATAAAGAACTCACCGAACAGCAGCTCCCAGGCGCACTTCCTCCTGAATGTACCCCCAACATAGATGGA +CCAAATGCTAAATCTGTTCAGAGAGAGCAAAGCTTACACTCCTTTCATACGCTTTTCTGTAGGCGATGTTTTAAATATGACTGCTTCCTACATCCTTTTCATGCAACACCCAACACTTATAAGCGGAAGAACACAGAAACAGCTCTAGACAACAAA +CCTTGTGGACCACAGTGTTACCAGCATTTGGAGGGAGCAAAGGAGTTTGCTGCTGCTCTCACCGCTGAGCGGATAAAGACCCCACCAAAACGTCCAGGAGGCCGCAGAAGAGGACGGCTTCCCAATAACAGTAGCAGGCCCAGCACCCCCACCATT +AATGTGCTGGAATCAAAGGATACAGACAGTGATAGGGAAGCAGGGACTGAAACGGGGGGAGAGAACAATGATAAAGAAGAAGAAGAGAAGAAAGATGAAACTTCGAGCTCCTCTGAAGCAAATTCTCGGTGTCAAACACCAATAAAGATGAAGCCA +AATATTGAACCTCCTGAGAATGTGGAGTGGAGTGGTGCTGAAGCCTCAATGTTTAGAGTCCTCATTGGCACTTACTATGACAATTTCTGTGCCATTGCTAGGTTAATTGGGACCAAAACATGTAGACAGGTGTATGAGTTTAGAGTCAAAGAATCT +AGCATCATAGCTCCAGCTCCCGCTGAGGATGTGGATACTCCTCCAAGGAAAAAGAAGAGGAAACACCGGTTGTGGGCTGCACACTGCAGAAAGATACAGCTGAAAAAGGACGGCTCCTCTAACCATGTTTACAACTATCAACCCTGTGATCATCCA +CGGCAGCCTTGTGACAGTTCGTGCCCTTGTGTGATAGCACAAAATTTTTGTGAAAAGTTTTGTCAATGTAGTTCAGAGTGTCAAAACCGCTTTCCGGGATGCCGCTGCAAAGCACAGTGCAACACCAAGCAGTGCCCGTGCTACCTGGCTGTCCGA +GAGTGTGACCCTGACCTCTGTCTTACTTGTGGAGCCGCTGACCATTGGGACAGTAAAAATGTGTCCTGCAAGAACTGCAGTATTCAGCGGGGCTCCAAAAAGCATCTATTGCTGGCACCATCTGACGTGGCAGGCTGGGGGATTTTTATCAAAGAT +CCTGTGCAGAAAAATGAATTCATCTCAGAATACTGTGGAGAGATTATTTCTCAAGATGAAGCTGACAGAAGAGGGAAAGTGTATGATAAATACATGTGCAGCTTTCTGTTCAACTTGAACAATGATTTTGTGGTGGATGCAACCCGCAAGGGTAAC +AAAATTCGTTTTGCAAATCATTCGGTAAATCCAAACTGCTATGCAAAAGTTATGATGGTTAACGGTGATCACAGGATAGGTATTTTTGCCAAGAGAGCCATCCAGACTGGCGAAGAGCTGTTTTTTGATTACAGATACAGCCAGGCTGATGCCCTG +AAGTATGTCGGCATCGAAAGAGAAATGGAAATCCCTTGA'''.replace('\n','') # EZH2 CDS string + +seq = Seq(cds) +wt_prot = seq.translate(to_stop=False) +print(wt_prot[218]) # 'S' — wild-type Serine at position 219 + +# Apply c.656C>T: position 656 is 0-indexed 655 +mut_seq = seq[:655] + "T" + seq[656:] +mut_prot = mut_seq.translate(to_stop=False) +print(mut_prot[218]) # 'F' — mutant Phenylalanine +``` + +--- + +## 1.3 Core Unit Tests (`test_cosmic_core.py`) + +14 Unit tests are implemented to verify the internal logic of `get_mut_pro_seq()` using minimal synthetic sequences (`Seq("ATGAAATTT")` etc.). + +| Class | Coverage | +|---|---| +| `TestGetMutProSeqDnaBranch` | DNA substitution, insertion, single-base deletion, two-position deletion, ambiguous `c.?` routing to protein branch | +| `TestGetMutProSeqProteinBranch` | Missense, nonsense truncation, in-frame insertion, two-position in-frame deletion, single-position in-frame deletion | +| `TestGetMutProSeqEdgeCases` | Mutation beyond sequence length, ambiguous `p.?` returns `""`, non-alpha last char in aa_mut returns `""`, DNA ref-allele mismatch returns `""` | + +These tests are fast to run and isolate individual code paths without requiring reference files. + +--- + +# 2. COSMIC Integration Pipeline Tests + +## 2.1 COSMIC v103 Schema and Data Model + +COSMIC v103 introduced two breaking changes from earlier releases: + +**Column name changes** — all columns are now `UPPERCASE_UNDERSCORE`: + +| Old (v2/v98) | New (v103) | +|---|---| +| `Gene name` | `GENE_SYMBOL` | +| `Accession Number` | `TRANSCRIPT_ACCESSION` | +| `CDS mutation` | `MUTATION_CDS` | +| `AA Mutation` | `MUTATION_AA` | +| `Type` | `MUTATION_DESCRIPTION` | +| `Primary site` | *(moved to Classification file)* | + +**Tissue-type data architecture** — `PRIMARY_SITE` (tissue of origin) is no longer a column in the mutation export. It lives in a separate **Classification file** (`Cosmic_Classification_Tsv_v103_GRCh38.tar`) and is joined via `COSMIC_PHENOTYPE_ID`: + +``` +mutation_file.COSMIC_PHENOTYPE_ID (e.g. COSO1001) + → Cosmic_Classification_v103_GRCh38.tsv.COSMIC_PHENOTYPE_ID + → PRIMARY_SITE (e.g. upper_aerodigestive_tract) +``` + +`COSMIC_PHENOTYPE_ID` is present at column 6 in both `Cosmic_CompleteTargetedScreensMutant` and `Cosmic_GenomeScreensMutant` files. No hop through the Sample file is needed. + +> **Note**: The Sample file (`Cosmic_Sample_Tsv_v103_GRCh38.tsv`) contains 34 columns covering sequencing metadata (`SAMPLE_NAME`, `COSMIC_SAMPLE_ID`, `TUMOUR_ID`, etc.) but does **not** contain `PRIMARY_SITE`. The Classification file is the authoritative source for tissue and histology. + +--- + +## 2.2 Integration Test (`test_cosmic_to_proteindb`) + +**Test file**: `pgatk/tests/pgatk_tests.py::PgatkRunnerTests::test_cosmic_to_proteindb` + +The test runs the full `cosmic-to-proteindb` pipeline end-to-end using small testdata files that mirror the real v103 schema: + +| File | Purpose | +|---|---| +| `testdata/test_cosmic_mutations.tsv` | 12 HRAS mutation rows in v103 27-column format; covers `missense_variant`, `stop_gained`, `inframe_deletion`, `synonymous_variant` (filtered), `frameshift_variant` (`p.?`, skipped) | +| `testdata/test_cosmic_genes.fa` | HRAS CDS FASTA from `Cosmic_Genes_v103_GRCh38.fasta` | +| `testdata/test_cosmic_classification.tsv` | 8 rows mapping `COSMIC_PHENOTYPE_ID` (COSO1001–COSO1008) to `PRIMARY_SITE`; covers `upper_aerodigestive_tract`, `skin`, `bone`, `thyroid`, `liver`, `haematopoietic_and_lymphoid_tissue` | + +CLI invocation used in the test: + +``` +cosmic-to-proteindb + --config_file config/cosmic_config.yaml + --input_mutation testdata/test_cosmic_mutations.tsv + --input_genes testdata/test_cosmic_genes.fa + --output_db testdata/test_cosmic_mutations_proteindb.fa + --clinical_sample_file testdata/test_cosmic_classification.tsv + --filter_column PRIMARY_SITE + --split_by_filter_column + --accepted_values all +``` + +Expected output files (split per `PRIMARY_SITE`): + +``` +testdata/test_cosmic_mutations_proteindb_bone.fa +testdata/test_cosmic_mutations_proteindb_liver.fa +testdata/test_cosmic_mutations_proteindb_skin.fa +testdata/test_cosmic_mutations_proteindb_thyroid.fa +testdata/test_cosmic_mutations_proteindb_upperaerodigestivetract.fa +``` + +The `synonymous_variant` row (COSO1006) is pre-filtered and produces no output. The `frameshift_variant` row carrying `p.?` (COSO1008) is skipped by the `p.?` guard. The consolidated `testdata/test_cosmic_mutations_proteindb.fa` contains all non-filtered mutations regardless of tissue type. + +--- + +## 2.3 `--clinical_sample_file` CLI Option + +The `--clinical_sample_file` / `-cl` option accepts any TSV file that maps a sample/phenotype ID column to the `--filter_column` value. For COSMIC, this is the Classification file: + +| Argument | COSMIC v103 value | +|---|---| +| `--clinical_sample_file` | `Cosmic_Classification_v103_GRCh38.tsv` (or `.gz`) | +| `--filter_column` | `PRIMARY_SITE` | +| Join key used internally | `COSMIC_PHENOTYPE_ID` (auto-detected for COSMIC) | + +For **cBioportal**, the equivalent is the clinical sample file with `SAMPLE_ID` as the join key — the `--clinical_sample_file` option uses `SAMPLE_ID` by default and switches to `COSMIC_PHENOTYPE_ID` only when invoked via `cosmic-to-proteindb`. + +--- + +## 2.4 Independent Validation with Real COSMIC Files + +After downloading COSMIC v103 files into `use-cases/use-case2/cosmic_data/`, run the pipeline against a subset of real mutations: + +```bash +# Extract 500 actionable mutations (skip intronic/UTR/synonymous) +zcat use-cases/use-case2/cosmic_data/Cosmic_CompleteTargetedScreensMutant_v103_GRCh38.tsv.gz \ + | head -1 > /tmp/cosmic_test.tsv +zcat use-cases/use-case2/cosmic_data/Cosmic_CompleteTargetedScreensMutant_v103_GRCh38.tsv.gz \ + | grep -E "missense_variant|stop_gained|inframe_deletion|inframe_insertion|frameshift" \ + | head -500 >> /tmp/cosmic_test.tsv + +pgatk cosmic-to-proteindb \ + --config_file pgatk/config/cosmic_config.yaml \ + --input_mutation /tmp/cosmic_test.tsv \ + --input_genes <(zcat use-cases/use-case2/cosmic_data/Cosmic_Genes_v103_GRCh38.fasta.gz) \ + --output_db /tmp/cosmic_out.fa \ + --clinical_sample_file <(zcat use-cases/use-case2/cosmic_data/Cosmic_Classification_v103_GRCh38.tsv.gz) \ + --filter_column PRIMARY_SITE \ + --split_by_filter_column \ + --accepted_values all +``` + +Expected: ~27 per-tissue output files, including canonical COSMIC tissue types (`lung`, `breast`, `large_intestine`, `skin`, `haematopoietic_and_lymphoid_tissue`, etc.). FASTA headers follow the format: + +``` +>COSMIC:GENE_SYMBOL:p.MutAA:SO_term +``` + +To verify the join is working (i.e. phenotype IDs are resolving to tissue names): + +```bash +# Count sequences per tissue file +for f in /tmp/cosmic_out_*.fa; do + echo "$f: $(grep -c '^>' $f) sequences" +done +``` + +A file named `cosmic_out_NS.fa` is expected for phenotypes where tissue is not specified in the Classification file — these are retained rather than silently dropped. + +--- + +# 3. Variant Translation Tests - Ensembl vcf-to-proteindb + +## 3.1 Testdata Files + +Small, self-contained testdata covering 10 representative variants across all consequence types. All variants are real (sourced from Ensembl GRCh38.115 release 115, chr22) and involve two genes: + +- **OR11H1** (`ENST00000643195`, mRNA, single-exon olfactory receptor gene, CDS 948 nt / 315 AA + stop) — used for all coding consequence types +- **BID** (`ENST00000550946`, ncRNA/retained_intron on chr22) — used for the non-coding transcript example + +| File | Role | +|---|---| +| `pgatk/testdata/test_ensembl_v2p.vcf` | 10 variants covering 9 consequence types (Ensembl v115 VCF format) | +| `pgatk/testdata/test_ensembl_v2p.fa` | Transcript sequences for ENST00000643195 and ENST00000550946 | +| `pgatk/testdata/test_ensembl_v2p.gtf` | Gene models for both transcripts (GRCh38.p14) | +| `pgatk/testdata/test_ensembl_v2p_proteindb.fa` | Expected output — 10 sequences (7 mRNA + 3 ncRNA frames) | + +The wild-type OR11H1 protein (ENST00000643195) used as comparison baseline: + +``` +MNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLW...KVLGSSNII* (316 chars incl. stop) +``` + +--- + +## 3.2 CSQ Annotation Field Format + +The VCF `##INFO` header declares the consequence annotation format: + +``` +##INFO= +``` + +Each variant can carry multiple comma-separated CSQ entries (one per overlapping transcript). The pipeline selects entries where `Feature_type` matches `--include_biotypes` and `Consequence` is not in `--exclude_consequences`. + +--- + +## 3.3 Filtering Logic + +| Parameter | Default value | Effect | +|---|---|---| +| `--include_biotypes` | `protein_coding,...` | Only transcripts whose `Feature_type` matches are processed | +| `--exclude_consequences` | `downstream_gene_variant, upstream_gene_variant, intergenic_variant, intron_variant, synonymous_variant, regulatory_region_variant` | Variants with these consequences produce no output | +| `--af_field` | *(empty)* | If set, variants with MAF below `--af_threshold` (default 0.01) are skipped | +| `--num_orfs` | `3` | For ncRNA transcripts, all 3 reading frames are translated and emitted separately | + +--- + +## 3.4 Validated Variant Examples + +All mRNA examples use `ENST00000643195` (OR11H1 gene, chr22). The ncRNA example uses `ENST00000550946` (BID gene, chr22). + +### Actionable Types (produce output sequences) + +| Consequence | rsID | Position | REF→ALT | VCF `Amino_acids` | Expected assertion | +|---|---|---|---|---|---| +| `start_lost` | rs1211697244 | 22:15528192 | A→G | `M/V` | First AA is `V` (not `M`); length unchanged | +| `missense_variant` | rs1410655344 | 22:15528195 | A→G | `N/D` | Position 1 (0-based) is `D`; length unchanged (316 chars) | +| `frameshift_variant` | rs1402769459 | 22:15528197 | TG→T | `V/X` | Frame shifts after position 1; entire downstream sequence differs from WT | +| `stop_gained` | rs1420478920 | 22:15528234 | G→T | `E/*` | Position 14 (0-based) is `*`; protein truncated there | +| `inframe_deletion` | rs1203023715 | 22:15528914 | CTTC→C | `AFS/AS` | `AFS` → `AS`; length is 315 chars (1 AA shorter than WT) | +| `protein_altering_variant` | rs1986039639 | 22:15528961 | G→GCTG | `SS/SCS` | `SS` → `SCS`; length is 317 chars (1 AA longer than WT) | +| `stop_lost` | rs1986046473 | 22:15529137 | T→A | `*/K` | Ends with `K` (not `*`); length is 316 chars (stop replaced by K) | +| `non_coding_transcript_exon_variant` | rs147461488 | 22:17740102 | GGCCACGCTCAACT→G | — | 3 output sequences (`_1`, `_2`, `_3`) for all reading frames | + +### No-Output Types + +| Consequence | rsID | Position | REF→ALT | VCF `Amino_acids` | Reason no output sequence | +|---|---|---|---|---|---| +| `synonymous_variant` | rs1394965478 | 22:15528197 | T→C | `N/N` | In `--exclude_consequences` by default | +| `stop_retained_variant` | rs1986046579 | 22:15529138 | A→G | `*/*` | Stop codon TAA→TGA: protein unchanged, no distinct variant sequence written | + +--- + +## 3.5 Output FASTA Header Format + +``` +>var__..._[_] +``` + +- **mRNA transcripts** — no frame suffix; the annotated CDS frame is used: + ``` + >var_rs1410655344_22.15528195.A.G_ENST00000643195 + ``` +- **ncRNA transcripts** — three entries per variant with suffixes `_1`, `_2`, `_3` (one per reading frame, controlled by `--num_orfs 3`): + ``` + >var_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_1 + >var_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2 + >var_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 + ``` + +--- + +## 3.6 Independent Validation + +### 1. Run the pipeline on testdata + +```bash +cd pgatk/ # package root + +pgatk vcf-to-proteindb \ + --config_file config/ensembl_config.yaml \ + --vcf testdata/test_ensembl_v2p.vcf \ + --input_fasta testdata/test_ensembl_v2p.fa \ + --gene_annotations_gtf testdata/test_ensembl_v2p.gtf \ + --output_proteindb /tmp/v2p_out.fa \ + --protein_prefix var \ + --annotation_field_name CSQ \ + --biotype_str feature_type \ + --include_biotypes mRNA,ncRNA +``` + +Expected `Translation summary` log: +``` +# variants with invalid record:0 +# variants not passing Filter:0 +# variants not passing AF threshold:0 +# feature IDs from VCF that are not found in the given FASTA file:0 +# variants successfully translated:9 +``` + +Expected output: **10 sequences** (7 mRNA + 3 ncRNA frames). The `synonymous_variant` and `stop_retained_variant` produce no output sequence. + +### 2. Verify headers in output + +```bash +OUTPUT=/tmp/v2p_out.fa + +# All 8 actionable mRNA variants should appear +for rsid in rs1211697244 rs1410655344 rs1402769459 rs1420478920 rs1203023715 rs1986039639 rs1986046473; do + count=$(grep -c "^>var_${rsid}" $OUTPUT) + echo "$rsid: $count (expected 1)" +done + +# ncRNA variant: 3 frame sequences +grep -c "^>var_rs147461488" $OUTPUT +# Expected: 3 + +# Synonymous must NOT appear +grep -c "^>var_rs1394965478" $OUTPUT +# Expected: 0 + +# Stop-retained must NOT appear (stop codon unchanged → protein identical to reference) +grep -c "^>var_rs1986046579" $OUTPUT +# Expected: 0 +``` + +### 3. Confirm amino acid changes + +```python +from Bio import SeqIO + +records = SeqIO.to_dict(SeqIO.parse("/tmp/v2p_out.fa", "fasta")) + +# start_lost (M/V): position 0 is V, not M +sl = str(records["var_rs1211697244_22.15528192.A.G_ENST00000643195"].seq) +assert sl[0] == "V", f"Expected V at pos 0, got {sl[0]}" + +# missense (N/D): position 1 is D; length = 316 (WT reference) +mut = str(records["var_rs1410655344_22.15528195.A.G_ENST00000643195"].seq) +assert mut[1] == "D", f"Expected D at pos 1, got {mut[1]}" +wt_len = len(mut) # 316 — used as reference length below + +# stop_gained (E/*): stop at position 14 +trunc = str(records["var_rs1420478920_22.15528234.G.T_ENST00000643195"].seq) +assert trunc[14] == "*", f"Expected * at pos 14, got {trunc[14]}" + +# inframe_deletion (AFS/AS): 1 AA shorter +del_seq = str(records["var_rs1203023715_22.15528914.CTTC.C_ENST00000643195"].seq) +assert len(del_seq) == wt_len - 1, f"Expected {wt_len-1}, got {len(del_seq)}" + +# protein_altering (SS/SCS): 1 AA longer +ins_seq = str(records["var_rs1986039639_22.15528961.G.GCTG_ENST00000643195"].seq) +assert len(ins_seq) == wt_len + 1, f"Expected {wt_len+1}, got {len(ins_seq)}" + +# stop_lost (*/K): ends with K, not *; same length as WT (stop replaced by K) +ext = str(records["var_rs1986046473_22.15529137.T.A_ENST00000643195"].seq) +assert ext[-1] == "K", f"Expected K at end, got {ext[-1]}" +assert len(ext) == wt_len, f"Expected {wt_len}, got {len(ext)}" + +# ncRNA: 3 frames present +for frame in ["1", "2", "3"]: + key = f"var_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_{frame}" + assert key in records, f"Missing ncRNA frame {frame}" + +print("All assertions passed.") +``` + +### 4. Compare output against committed reference + +```bash +# The committed expected output can be diff'd against a fresh pipeline run +diff <(grep "^>" testdata/test_ensembl_v2p_proteindb.fa | sort) \ + <(grep "^>" /tmp/v2p_out.fa | sort) +# Expected: no output (headers match exactly) + +diff testdata/test_ensembl_v2p_proteindb.fa /tmp/v2p_out.fa +# Expected: no output (files identical) +``` + +### 5. Extended validation with AF filtering + +To test the `--af_field MAF` filter (the testdata VCF includes a `MAF` field): + +```bash +# With AF threshold: only variants with MAF ≥ 0.01 are translated +# rs1410655344 MAF=0.012 → passes; rs1394965478 MAF=0.008 → filtered (also excluded by consequence) +pgatk vcf-to-proteindb \ + --config_file config/ensembl_config.yaml \ + --vcf testdata/test_ensembl_v2p.vcf \ + --input_fasta testdata/test_ensembl_v2p.fa \ + --gene_annotations_gtf testdata/test_ensembl_v2p.gtf \ + --output_proteindb /tmp/v2p_af.fa \ + --protein_prefix var \ + --annotation_field_name CSQ \ + --biotype_str feature_type \ + --include_biotypes mRNA,ncRNA \ + --af_field MAF + +grep -c "^>" /tmp/v2p_af.fa +# Expected: 4 (missense MAF=0.012, ncRNA MAF=0.168 → 1 mRNA + 3 ncRNA frames) +``` diff --git a/pgatk/cgenomes/cbioportal_downloader.py b/pgatk/cgenomes/cbioportal_downloader.py index 5de2a64c..2845fb74 100644 --- a/pgatk/cgenomes/cbioportal_downloader.py +++ b/pgatk/cgenomes/cbioportal_downloader.py @@ -1,11 +1,213 @@ import csv +import os from concurrent.futures import as_completed from concurrent.futures.thread import ThreadPoolExecutor +from typing import Optional + +import requests from pgatk.toolbox.exceptions import AppException -from pgatk.toolbox.general import ParameterConfiguration, check_create_folders, download_file, clear_cache +from pgatk.toolbox.general import ParameterConfiguration, check_create_folders, clear_cache from pgatk.toolbox.rest import call_api_raw +_CBIO_PAGE_SIZE = 10_000 + +MAF_HEADER = [ + "Hugo_Symbol", "Entrez_Gene_Id", "Center", "NCBI_Build", "Chromosome", + "Start_Position", "End_Position", "Strand", "Consequence", + "Variant_Classification", "Variant_Type", "Reference_Allele", + "Tumor_Seq_Allele1", "Tumor_Seq_Allele2", "dbSNP_RS", "dbSNP_Val_Status", + "Tumor_Sample_Barcode", "Matched_Norm_Sample_Barcode", + "Match_Norm_Seq_Allele1", "Match_Norm_Seq_Allele2", + "Tumor_Validation_Allele1", "Tumor_Validation_Allele2", + "Match_Norm_Validation_Allele1", "Match_Norm_Validation_Allele2", + "Verification_Status", "Validation_Status", "Mutation_Status", + "Sequencing_Phase", "Sequence_Source", "Validation_Method", + "Score", "BAM_File", "Sequencer", "t_ref_count", "t_alt_count", + "n_ref_count", "n_alt_count", "HGVSc", "HGVSp", "HGVSp_Short", + "Transcript_ID", "RefSeq", "Protein_position", "Codons", "Hotspot", +] + + +def _json_or_raise(resp, label: str, log): + """Parse JSON from a response, raising with a clear message if the body is empty or invalid.""" + if not resp.text: + raise ValueError( + f"{label}: server returned HTTP {resp.status_code} with an empty body" + ) + try: + return resp.json() + except Exception: + snippet = resp.text[:300] + raise ValueError(f"{label}: could not parse JSON (HTTP {resp.status_code}). Body: {snippet!r}") + + +def _get_sample_ids(base_url: str, study_id: str, log) -> list: + """Return all sequenced sample IDs for a study via the sample-list API.""" + # Prefer the sequenced list; fall back to the _all list. + for list_id in (f"{study_id}_sequenced", f"{study_id}_all"): + url = f"{base_url}/sample-lists/{list_id}/sample-ids" + log.debug("GET %s", url) + resp = requests.get(url, headers={"Accept": "application/json"}, timeout=30) + if resp.status_code == 200 and resp.text: + return _json_or_raise(resp, f"sample-ids ({list_id})", log) + log.warning("Could not retrieve sample list for study '%s'", study_id) + return [] + + +def _fetch_study_mutations(base_url: str, study_id: str, log) -> list: + """Fetch all mutations for a study from the cBioPortal REST API.""" + profiles_url = f"{base_url}/studies/{study_id}/molecular-profiles" + log.debug("GET %s", profiles_url) + resp = requests.get(profiles_url, headers={"Accept": "application/json"}, timeout=30) + resp.raise_for_status() + profiles = _json_or_raise(resp, "molecular-profiles", log) + + profile_id = None + for p in profiles: + if p.get("molecularAlterationType") == "MUTATION_EXTENDED": + profile_id = p["molecularProfileId"] + break + if profile_id is None: + log.warning("No MUTATION_EXTENDED profile found for study '%s'", study_id) + return [] + log.info("Using molecular profile '%s'", profile_id) + + sample_ids = _get_sample_ids(base_url, study_id, log) + if not sample_ids: + log.warning("No samples found for study '%s'", study_id) + return [] + log.info("Fetching mutations for %d samples ...", len(sample_ids)) + + # sampleListId is silently broken in the current API; use explicit identifiers. + sample_mol_ids = [ + {"molecularProfileId": profile_id, "sampleId": sid} for sid in sample_ids + ] + + mutations = [] + page = 0 + while True: + url = ( + f"{base_url}/mutations/fetch" + f"?molecularProfileId={profile_id}&projection=DETAILED" + f"&pageSize={_CBIO_PAGE_SIZE}&pageNumber={page}" + ) + log.debug("POST %s (page %d)", url, page) + resp = requests.post( + url, + json={"sampleMolecularIdentifiers": sample_mol_ids}, + headers={"Content-Type": "application/json", "Accept": "application/json"}, + timeout=120, + ) + resp.raise_for_status() + batch = _json_or_raise(resp, f"mutations page {page}", log) + if not batch: + break + mutations.extend(batch) + log.info(" Page %d: %d mutations (total: %d)", page, len(batch), len(mutations)) + if len(batch) < _CBIO_PAGE_SIZE: + break + page += 1 + return mutations + + +def _mutation_to_row(m: dict) -> list: + """Map a cBioPortal API mutation object to a MAF-compatible row list.""" + gene = m.get("gene") or {} + hugo = gene.get("hugoGeneSymbol", "") + entrez = str(gene.get("entrezGeneId", "")) + chrom = str(m.get("chr", "")) + start = str(m.get("startPosition", "")) + end = str(m.get("endPosition", "")) + ref = m.get("referenceAllele", "") + alt = m.get("variantAllele", "") + varclass = m.get("mutationType", "") + vartype = m.get("variantType", "") + sample_id = m.get("sampleId", "") + ncbi_build = m.get("ncbiBuild", "GRCh37") + center = m.get("center", "") + mut_status = m.get("mutationStatus", "Somatic") + val_status = m.get("validationStatus", "") + t_ref = str(m.get("tumorRefCount", "")) + t_alt = str(m.get("tumorAltCount", "")) + n_ref = str(m.get("normalRefCount", "")) + n_alt = str(m.get("normalAltCount", "")) + refseq = m.get("refseqMrnaId", "") + hgvsc = m.get("hgvsc", "") or "" + pc = m.get("proteinChange", "") + hgvsp_short = pc if pc.startswith("p.") else (f"p.{pc}" if pc else "") + # Use RefSeq transcript ID; Ensembl IDs are not returned by the public API. + transcript_id = refseq.split(".")[0] if refseq else "" + protein_pos = str(m.get("proteinPosStart", "")) + + return [ + hugo, entrez, center, ncbi_build, chrom, start, end, "+", + "", varclass, vartype, ref, ref, alt, "", "", sample_id, + "", "", "", "", "", "", "", "", val_status, mut_status, "", "", "", "", "", "", + t_ref, t_alt, n_ref, n_alt, hgvsc, "", hgvsp_short, transcript_id, refseq, + protein_pos, "", "", + ] + + +def _fetch_clinical_data(base_url: str, study_id: str, output_dir: str, log) -> Optional[str]: + """Download all sample-level clinical attributes for a study into a TSV file. + + Calls ``GET /studies/{studyId}/clinical-data?clinicalDataType=SAMPLE`` with + pagination, then pivots the attribute-per-row API response into a standard + SAMPLE_ID × attribute-column TSV that ``CancerGenomesService.get_value_per_sample`` + can read. + """ + records: list[dict] = [] + page = 0 + while True: + url = ( + f"{base_url}/studies/{study_id}/clinical-data" + f"?clinicalDataType=SAMPLE&pageSize={_CBIO_PAGE_SIZE}&pageNumber={page}" + ) + log.debug("GET %s", url) + resp = requests.get(url, headers={"Accept": "application/json"}, timeout=60) + if resp.status_code != 200: + log.warning("Clinical data request failed (HTTP %d) for study '%s'", resp.status_code, study_id) + return None + if not resp.text: + break + batch = _json_or_raise(resp, f"clinical-data page {page}", log) + if not batch: + break + records.extend(batch) + log.debug(" Clinical page %d: %d records (total %d)", page, len(batch), len(records)) + if len(batch) < _CBIO_PAGE_SIZE: + break + page += 1 + + if not records: + log.warning("No clinical data returned for study '%s'", study_id) + return None + + # Pivot: collect all attributes in insertion order, then build one row per sample. + sample_attrs: dict[str, dict[str, str]] = {} + attr_order: list[str] = [] + for rec in records: + sid = rec.get("sampleId", "") + attr = rec.get("clinicalAttributeId", "") + val = rec.get("value", "") + if attr and attr not in attr_order: + attr_order.append(attr) + if sid not in sample_attrs: + sample_attrs[sid] = {} + sample_attrs[sid][attr] = val + + out_path = os.path.join(output_dir, "data_clinical_sample.txt") + with open(out_path, "w", encoding="utf-8", newline="") as fh: + header = ["SAMPLE_ID"] + attr_order + fh.write("\t".join(header) + "\n") + for sid, attrs in sample_attrs.items(): + row = [sid] + [attrs.get(a, "") for a in attr_order] + fh.write("\t".join(row) + "\n") + + log.info("Wrote clinical data for %d samples to %s", len(sample_attrs), out_path) + return out_path + class CbioPortalDownloadService(ParameterConfiguration): CONFIG_KEY_DATA_DOWNLOADER = 'cbioportal_data_downloader' @@ -37,8 +239,6 @@ def __init__(self, config_data, pipeline_arguments): self._cbioportal_base_url = 'https://www.cbioportal.org/api' self._cancer_studies_command = 'studies' - self._cbioportal_download_url = 'https://cbioportal-datahub.s3.amazonaws.com' - if self.CONFIG_OUTPUT_DIRECTORY in self.get_pipeline_parameters(): self._local_path_cbioportal = self.get_pipeline_parameters()[self.CONFIG_OUTPUT_DIRECTORY] elif self.CONFIG_KEY_DATA_DOWNLOADER in self.get_default_parameters() and \ @@ -142,13 +342,19 @@ def download_study(self, download_study, url_file_name=None): line_count = 0 if self._multithreading: processes = [] + # Pass url_file=None to workers — concurrent writes to the + # shared handle would interleave/corrupt lines. The main + # thread serializes the writes below. with ThreadPoolExecutor(max_workers=10, thread_name_prefix='Thread-Download') as executor: for row in csv_reader: if line_count != 0: - processes.append(executor.submit(self.download_one_study, row[0], url_file=url_file)) + processes.append(executor.submit(self.download_one_study, row[0])) line_count = line_count + 1 for task in as_completed(processes): - print(task.result()) + result = task.result() + print(result) + if result is not None: + url_file.write(result + "\n") else: for row in csv_reader: if line_count != 0: @@ -180,18 +386,39 @@ def download_study(self, download_study, url_file_name=None): self.download_one_study(row[0]) line_count = line_count + 1 - def download_one_study(self, download_study, url_file=None): - file_name = '{}.tar.gz'.format(download_study) - file_url = '{}/{}'.format(self._cbioportal_download_url, file_name) - file_name = download_file(file_url=file_url, - file_name=self.get_local_path_root_cbioportal_repo() + '/' + file_name, - log=self.get_logger(), url_file=url_file) - if file_name is not None: - msg = "The following study '{}' has been downloaded. ".format(download_study) - else: - msg = "The following study '{}' hasn't been downloaded. ".format(download_study) - self.get_logger().debug(msg) - return file_name + def download_one_study(self, download_study: str, url_file=None) -> Optional[str]: + log = self.get_logger() + study_dir = os.path.join(self.get_local_path_root_cbioportal_repo(), download_study) + check_create_folders([study_dir]) + out_path = os.path.join(study_dir, "data_mutations.txt") + + log.info("Fetching mutations for study '%s' via cBioPortal API ...", download_study) + try: + mutations = _fetch_study_mutations(self._cbioportal_base_url, download_study, log) + except Exception as exc: + log.error("Failed to fetch mutations for study '%s': %s", download_study, exc) + return None + + if not mutations: + log.warning("No mutations returned for study '%s'", download_study) + return None + + with open(out_path, "w", encoding="utf-8", newline="") as fh: + fh.write("\t".join(MAF_HEADER) + "\n") + for m in mutations: + row = _mutation_to_row(m) + fh.write("\t".join("" if x is None else str(x) for x in row) + "\n") + + log.info("Wrote %d mutations to %s", len(mutations), out_path) + + _fetch_clinical_data(self._cbioportal_base_url, download_study, study_dir, log) + + # Note: url_file writes intentionally happen in download_study() (single-threaded + # main thread) after futures complete; the parameter is retained for the + # single-study code path and to keep the legacy serial call sites unchanged. + if url_file is not None: + url_file.write(out_path + "\n") + return out_path def check_study_identifier(self, download_study): return download_study in self._cbioportal_studies diff --git a/pgatk/cgenomes/cgenomes_proteindb.py b/pgatk/cgenomes/cgenomes_proteindb.py index f42d7b8d..f78fbae3 100644 --- a/pgatk/cgenomes/cgenomes_proteindb.py +++ b/pgatk/cgenomes/cgenomes_proteindb.py @@ -3,15 +3,284 @@ import gzip import logging import re +import sqlite3 from pathlib import Path from typing import Any, Optional +import gffutils from Bio import SeqIO from Bio.Data.IUPACData import protein_letters_3to1 from Bio.Seq import Seq from pgatk.cgenomes.models import SNP from pgatk.toolbox.general import ParameterConfiguration +from pgatk.toolbox.vcf_utils import get_altseq, get_orfs_vcf + + +# NCBI RefSeq accession → human chromosome name (GRCh37 and GRCh38). +# NC_000001–NC_000022 are autosomes 1–22; NC_000023=X, NC_000024=Y, NC_012920=MT. +_NCBI_CHR_MAP: dict[str, str] = { + f"NC_{i:06d}": str(j) for i, j in zip(range(1, 23), range(1, 23)) +} +_NCBI_CHR_MAP.update({"NC_000023": "X", "NC_000024": "Y", "NC_012920": "MT"}) + +# Some MAF files (e.g. TCGA GDC) use numeric aliases for sex chromosomes. +_MAF_CHR_ALIASES: dict[str, str] = {"23": "X", "24": "Y", "25": "MT"} + +_CBIO_BATCH_SIZE = 2000 + +# Per-worker state populated once by _cbio_worker_init and reused across all +# batches handled by the same worker process. +_cbio_worker_state: dict = {} + + +def _cbio_worker_init( + seq_dic: dict, + gene_tids: dict, + gff_db_path: Optional[str], + config: dict, +) -> None: + """Pool initializer: cache FASTA data and open the GFF DB once per worker. + + Called once per spawned process. Populates _cbio_worker_state so that + every batch handled by that process reuses the same in-memory structures + rather than re-opening or re-pickling them for each task. + gff_db_path is the pre-built .db file path (built in the main process + before the pool starts to avoid N workers racing on the same file). + """ + _cbio_worker_state['seq_dic'] = seq_dic + _cbio_worker_state['gene_tids'] = gene_tids + _cbio_worker_state['gff_cache'] = {} + _cbio_worker_state['gff_db'] = ( + gffutils.FeatureDB(gff_db_path) if gff_db_path else None + ) + _cbio_worker_state.update(config) + + +def _cbio_translate_batch(rows: list, batch_idx: int) -> list: + """Translate a batch of pre-parsed mutation rows. + + Each element of `rows` is a dict produced by + CancerGenomesService._parse_maf_rows with keys: + idx, gene, enst, pos, aa_mut, vartype, varclass, group, + var_chrom, var_start, ref_allele, alt_allele + + Returns [(header, protein_str, group), ...] — one tuple per translated + reading frame. The caller writes these to the output FASTA. + """ + seq_dic: dict = _cbio_worker_state['seq_dic'] + gene_tids: dict = _cbio_worker_state['gene_tids'] + gff_db = _cbio_worker_state.get('gff_db') + gff_cache: dict = _cbio_worker_state['gff_cache'] + translation_table: int = _cbio_worker_state['translation_table'] + include_biotypes: list = _cbio_worker_state['include_biotypes'] + exclude_biotypes: list = _cbio_worker_state['exclude_biotypes'] + skip_including_all_cds: bool = _cbio_worker_state['skip_including_all_cds'] + + nucleotide = ["A", "T", "C", "G"] + log = logging.getLogger(__name__) + results: list = [] + + for row in rows: + idx = row['idx'] + gene = row['gene'] + enst = row['enst'] + pos = row['pos'] + aa_mut = row['aa_mut'] + vartype = row['vartype'] + varclass = row['varclass'] + group = row.get('group') + + entry = seq_dic.get(enst) + _gene_name_candidates: Optional[list] = None + seq = None + cds_info: list = [] + + if entry is None: + if not pos and gff_db is not None: + _gene_name_candidates = gene_tids.get(gene, []) + if not _gene_name_candidates: + log.debug( + "No FASTA record or GFF candidates for gene '%s' " + "(Transcript_ID=%s); skipping line %d", gene, enst, idx) + continue + else: + log.warning( + "No matching record for gene (%s) from row %s in FASTA file", + enst, idx) + continue + else: + cds_info = entry['cds'] + biotype = entry['biotype'] + + if not (bool(cds_info) and not skip_including_all_cds): + if biotype: + if (biotype in exclude_biotypes or + (biotype not in include_biotypes and + include_biotypes != ['all'])): + continue + + seq = entry['seq'][cds_info[0] - 1: cds_info[1]] if cds_info else entry['seq'] + + seq_mut = "" + + if pos: + if ":" in pos: + cdna_pos = pos.split(":")[1] + else: + cdna_pos = pos + + if vartype == "SNP": + try: + enst_pos = int(re.findall(r'\d+', cdna_pos)[0]) + except IndexError: + log.warning("Incorrect SNP format or record %s %s", idx, pos) + continue + if ">" not in pos: + log.warning("SNP position string missing '>' (line %s): %s", idx, pos) + continue + arrow = pos.index(">") + ref_dna = pos[arrow - 1] + mut_dna = pos[arrow + 1] + if mut_dna not in nucleotide: + log.warning("%s is not a nucleotide base %s", mut_dna, pos) + continue + try: + if ref_dna == seq[enst_pos - 1]: + seq_mut = seq[:enst_pos - 1] + mut_dna + seq[enst_pos:] + else: + log.warning( + "incorrect substitution, unmatched nucleotide %s %s", + pos, enst) + except IndexError: + log.warning("incorrect substitution, out of index %s", pos) + elif vartype == "DEL": + try: + enst_pos = int(re.findall(r'\d+', cdna_pos.split("_")[0])[0]) + except IndexError: + log.warning("incorrect del format or record %s %s", idx, pos) + continue + del_dna = pos.split("del")[1] + if del_dna: + # Explicit deleted bases: verify they match the reference. + if del_dna == seq[enst_pos - 1:enst_pos - 1 + len(del_dna)]: + seq_mut = seq[:enst_pos - 1] + seq[enst_pos - 1 + len(del_dna):] + else: + log.warning("incorrect deletion, unmatched nucleotide %s", pos) + else: + # Range deletion without explicit bases (e.g. ``c.104_124del``): + # derive the deletion length from the positions in cdna_pos. + parts = cdna_pos.split("_") + if len(parts) >= 2: + try: + end_pos = int(re.findall(r'\d+', parts[1])[0]) + except IndexError: + log.warning("incorrect del range format %s", pos) + continue + del_len = end_pos - enst_pos + 1 + else: + del_len = 1 + if del_len <= 0 or enst_pos - 1 + del_len > len(seq): + log.warning("deletion out of range for %s (len=%d)", pos, del_len) + continue + seq_mut = seq[:enst_pos - 1] + seq[enst_pos - 1 + del_len:] + elif vartype == "INS": + try: + enst_pos = int(re.findall(r'\d+', cdna_pos.split("_")[0])[0]) + except IndexError: + log.warning("incorrect ins/dup format or record %s %s", idx, pos) + continue + if "ins" in pos: + ins_dna = pos.split("ins")[1] + elif "dup" in pos: + ins_dna = pos.split("dup")[1] + if len(ins_dna) > 1: + enst_pos = int(re.findall(r'\d+', cdna_pos.split("_")[1])[0]) + else: + log.warning("unexpected insertion format at line %s", idx) + continue + seq_mut = seq[:enst_pos] + ins_dna + seq[enst_pos:] + + elif gff_db is not None: + var_chrom = row.get('var_chrom') + var_start = row.get('var_start') + raw_ref = row.get('ref_allele') + raw_alt = row.get('alt_allele') + + if any(v is None for v in (var_chrom, var_start, raw_ref, raw_alt)): + log.warning( + "Coordinate columns absent — cannot apply coordinate fallback " + "at line %d", idx) + continue + + ref_allele = Seq("" if raw_ref == "-" else raw_ref) + alt_allele = Seq("" if raw_alt == "-" else raw_alt) + maf_chrom_raw = str(var_chrom).lstrip("chr") + maf_chrom_norm = _MAF_CHR_ALIASES.get(maf_chrom_raw, maf_chrom_raw) + + candidates = _gene_name_candidates if _gene_name_candidates is not None else [enst] + resolved = None + for cand in candidates: + cand_entry = seq_dic.get(cand) if _gene_name_candidates is not None else entry + if cand_entry is None: + continue + if cand in gff_cache: + feat_chrom, feat_strand, features_info = gff_cache[cand] + else: + feat_chrom, feat_strand, features_info = \ + CancerGenomesService._get_gff_features(gff_db, cand) + gff_cache[cand] = (feat_chrom, feat_strand, features_info) + if feat_chrom is None: + continue + gff_chrom_norm = _ncbi_accession_to_chrom(feat_chrom).lstrip("chr") + if gff_chrom_norm != maf_chrom_norm: + if _gene_name_candidates is None: + log.warning( + "Chromosome mismatch for %s: GFF=%s MAF=%s", + cand, feat_chrom, var_chrom) + continue + cand_cds = cand_entry['cds'] + coding_ref, coding_alt = get_altseq( + cand_entry['seq'], ref_allele, alt_allele, + var_start, feat_strand, features_info, cand_cds, + ) + if coding_alt == "": + continue + resolved = (cand, cand_entry, cand_cds, coding_ref, coding_alt) + break + + if resolved is None: + continue + enst, entry, cds_info, seq, seq_mut = resolved + + else: + log.debug( + "Skipping %s %s (line %d): no HGVSc and no GFF annotation file", + enst, aa_mut, idx) + continue + + if seq_mut == "": + continue + + num_orfs = 1 if cds_info else 3 + _, alt_orfs = get_orfs_vcf( + Seq(str(seq)), Seq(str(seq_mut)), translation_table, num_orfs) + + for frame_idx, prot in enumerate(alt_orfs): + if len(prot) <= 6: + continue + suffix = f'_RF{frame_idx + 1}' if num_orfs > 1 else '' + header = f'cbiomut:{enst}:{gene}:{aa_mut}:{varclass}{suffix}' + results.append((header, str(prot), group)) + + return results + + +def _ncbi_accession_to_chrom(acc: str) -> str: + """Convert 'NC_000001.10' → '1', 'NC_000023.11' → 'X', etc. + Returns the original string when no mapping is found. + """ + return _NCBI_CHR_MAP.get(acc.split(".")[0], acc) def _open_text(path: str, mode: str = 'r', encoding: str = 'utf-8', **kwargs): @@ -52,6 +321,30 @@ def _three_to_one(aa_str: str) -> str: return aa_str +def _substitution_mismatch_detail(snp, seqs) -> str: + """Return a human-readable string explaining a REF mismatch for substitution variants.""" + if ">" not in (snp.dna_mut or ""): + return "" + try: + positions = re.findall(r'\d+', snp.dna_mut) + if not positions: + return "" + tmplist = snp.dna_mut.split(">") + expected_ref = re.sub("[^A-Z]+", "", tmplist[0]) + index = int(positions[0]) - 1 + found_bases = set() + for seq in seqs: + if index < len(seq): + found_bases.add(str(seq[index]).upper()) + if found_bases: + return f" [expected REF={expected_ref}, found={'/'.join(sorted(found_bases))} at pos {index + 1}]" + except (AttributeError, IndexError, ValueError, TypeError) as exc: + logging.getLogger(__name__).debug( + "Could not build mismatch detail for %s: %s", getattr(snp, "dna_mut", None), exc + ) + return "" + + class CancerGenomesService(ParameterConfiguration): CONFIG_CANCER_GENOMES_MUTATION_FILE = 'mutation_file' CONFIG_COMPLETE_GENES_FILE = "all_cds_genes_file" @@ -62,8 +355,18 @@ class CancerGenomesService(ParameterConfiguration): FILTER_COLUMN = "filter_column" ACCEPTED_VALUES = "accepted_values" SPLIT_BY_FILTER_COLUMN = "split_by_filter_column" + WORKERS = 'workers' + CBIO_BATCH_SIZE = 'cbio_batch_size' CLINICAL_SAMPLE_FILE = 'clinical_sample_file' CONFIG_COSMIC_SERVER = 'cosmic_server' + CONFIG_GFF_FILE = 'gff_file' + INCLUDE_BIOTYPES = 'include_biotypes' + EXCLUDE_BIOTYPES = 'exclude_biotypes' + SKIP_INCLUDING_ALL_CDS = 'skip_including_all_cds' + BIOTYPE_STR = 'biotype_str' + INCLUDE_VARIANT_CLASSIFICATIONS = 'include_variant_classifications' + EXCLUDE_VARIANT_CLASSIFICATIONS = 'exclude_variant_classifications' + TRANSLATION_TABLE = 'translation_table' def __init__(self, config_file: dict, pipeline_arguments: dict) -> None: """ @@ -108,6 +411,32 @@ def __init__(self, config_file: dict, pipeline_arguments: dict) -> None: if self.CONFIG_OUTPUT_FILE in self.get_pipeline_parameters(): self._local_output_file = self.get_pipeline_parameters()[self.CONFIG_OUTPUT_FILE] + self._local_gff_file = '' + if self.CONFIG_GFF_FILE in self.get_pipeline_parameters(): + self._local_gff_file = self.get_pipeline_parameters()[self.CONFIG_GFF_FILE] + + self._biotype_str = self.get_mutations_default_options(self.BIOTYPE_STR, 'gene_biotype') + self._include_biotypes = self.get_multiple_options( + self.get_mutations_default_options(self.INCLUDE_BIOTYPES, 'protein_coding')) + self._exclude_biotypes = self.get_multiple_options( + self.get_mutations_default_options(self.EXCLUDE_BIOTYPES, '')) + self._skip_including_all_cds = self.get_mutations_default_options(self.SKIP_INCLUDING_ALL_CDS, False) + self._include_variant_classifications = self.get_multiple_options( + self.get_mutations_default_options(self.INCLUDE_VARIANT_CLASSIFICATIONS, 'all')) + self._exclude_variant_classifications = self.get_multiple_options( + self.get_mutations_default_options(self.EXCLUDE_VARIANT_CLASSIFICATIONS, 'Nonsense_Mutation')) + self._translation_table = int(self.get_mutations_default_options(self.TRANSLATION_TABLE, 1)) + try: + self._workers = max(1, int( + self.get_mutations_default_options(self.WORKERS, 1) or 1)) + except (TypeError, ValueError): + self._workers = 1 + try: + self._cbio_batch_size = max(1, int( + self.get_mutations_default_options(self.CBIO_BATCH_SIZE, _CBIO_BATCH_SIZE) or _CBIO_BATCH_SIZE)) + except (TypeError, ValueError): + self._cbio_batch_size = _CBIO_BATCH_SIZE + def get_mutations_default_options(self, variable: str, default_value: Any) -> Any: return_value = default_value if variable in self.get_pipeline_parameters(): @@ -132,6 +461,13 @@ def get_multiple_options(options_str: str) -> list[str]: def get_mut_pro_seq(snp: SNP, seq: Seq) -> Optional[str]: nucleotide = ["A", "T", "C", "G"] mut_pro_seq = "" + # A small number of COSMIC gene FASTA entries have a leading N (masked + # nucleotide) before the real CDS start. HGVS c. positions count from + # the first coding base, so strip any leading non-ACGT characters to + # keep position lookups consistent with the annotation. + leading = len(seq) - len(str(seq).lstrip('Nn')) + if leading: + seq = seq[leading:] if (snp.dna_mut is not None and "?" not in snp.dna_mut and snp.aa_mut is not None and snp.aa_mut != 'p.?'): # unambiguous DNA change known in CDS sequence positions = re.findall(r'\d+', snp.dna_mut) @@ -140,19 +476,30 @@ def get_mut_pro_seq(snp: SNP, seq: Seq) -> Optional[str]: ref_dna = re.sub("[^A-Z]+", "", tmplist[0]) mut_dna = re.sub("[^A-Z]+", "", tmplist[1]) index = int(positions[0]) - 1 - if ref_dna == str(seq[index]).upper() and mut_dna in nucleotide: # + if ref_dna == str(seq[index]).upper() and mut_dna in nucleotide: seq_mut = seq[:index] + mut_dna + seq[index + 1:] mut_pro_seq = str(seq_mut.translate(to_stop=False)) + else: + return None # REF base doesn't match FASTA — transcript version mismatch elif "delins" in snp.dna_mut: - # Deletion-insertion: delete range then insert new bases - insert_dna = snp.dna_mut.split("delins")[1] - if insert_dna.isalpha() and len(positions) >= 2: - del_index1 = int(positions[0]) - 1 - del_index2 = int(positions[1]) + # HGVS delins: one or more nucleotides replaced by one or more other nucleotides. + coord_part, insert_raw = snp.dna_mut.split("delins", 1) + insert_dna = insert_raw.upper() + if re.search(r'\d[+-]|\*|-\d', coord_part): + # Intronic (c.N+X, c.N-X), 5'UTR (c.-N) or 3'UTR (c.*N) offsets + # cannot be mapped onto a CDS-only FASTA sequence; skip. + pass + elif not insert_dna.isalpha(): + # Unknown ('?'), N[n], or conversion-notation insertions cannot be resolved. + pass + elif len(positions) >= 2: + # Range delins: delete positions[0]..positions[1] (1-indexed, inclusive). + del_index1 = int(positions[0]) - 1 # 0-indexed start + del_index2 = int(positions[1]) # 0-indexed exclusive end seq_mut = seq[:del_index1] + insert_dna + seq[del_index2:] mut_pro_seq = str(seq_mut.translate(to_stop=False)) - elif insert_dna.isalpha() and len(positions) == 1: - # Single-position delins: replace one base + elif len(positions) == 1: + # Single-position delins: replace the one nucleotide at positions[0]. del_index1 = int(positions[0]) - 1 seq_mut = seq[:del_index1] + insert_dna + seq[del_index1 + 1:] mut_pro_seq = str(seq_mut.translate(to_stop=False)) @@ -165,6 +512,20 @@ def get_mut_pro_seq(snp: SNP, seq: Seq) -> Optional[str]: seq_mut = seq[:ins_index1] + insert_dna + seq[ins_index1:] mut_pro_seq = str(seq_mut.translate(to_stop=False)) + elif "dup" in snp.dna_mut: + # Tandem duplication: re-insert the duplicated range after its end position. + if len(positions) == 2: + dup_start = int(positions[0]) - 1 + dup_end = int(positions[1]) + dup_seq = str(seq[dup_start:dup_end]) + seq_mut = seq[:dup_end] + dup_seq + seq[dup_end:] + mut_pro_seq = str(seq_mut.translate(to_stop=False)) + elif len(positions) == 1: + dup_pos = int(positions[0]) + dup_seq = str(seq[dup_pos - 1:dup_pos]) + seq_mut = seq[:dup_pos] + dup_seq + seq[dup_pos:] + mut_pro_seq = str(seq_mut.translate(to_stop=False)) + elif "del" in snp.dna_mut: if len(positions) == 2: del_index1 = int(positions[0]) - 1 @@ -180,7 +541,7 @@ def get_mut_pro_seq(snp: SNP, seq: Seq) -> Optional[str]: positions = re.findall(r'\d+', snp.aa_mut) protein_seq = str(seq.translate(to_stop=False)) - if "Missense" in snp.mutation_type: + if "Missense" in snp.mutation_type or "missense_variant" in snp.mutation_type: # Extract the mutant residue from HGVS like p.V600E (1-letter) # or p.Val600Glu (3-letter). For 1-letter the last char is the # AA; for 3-letter we need to convert the last triplet. @@ -190,20 +551,27 @@ def get_mut_pro_seq(snp: SNP, seq: Seq) -> Optional[str]: return '' index = int(positions[0]) - 1 mut_pro_seq = protein_seq[:index] + mut_aa + protein_seq[index + 1:] - elif "Nonsense" in snp.mutation_type: + elif "Nonsense" in snp.mutation_type or "stop_gained" in snp.mutation_type: index = int(positions[0]) - 1 mut_pro_seq = protein_seq[:index] - elif "Insertion - In frame" in snp.mutation_type: - try: - index = snp.aa_mut.index("ins") - except ValueError: - return '' - insert_aa_raw = snp.aa_mut[index + 3:] - insert_aa = _three_to_one(insert_aa_raw) - if insert_aa.isalpha(): - ins_index1 = int(positions[0]) - mut_pro_seq = protein_seq[:ins_index1] + insert_aa + protein_seq[ins_index1:] - elif "Deletion - In frame" in snp.mutation_type: + elif "Insertion - In frame" in snp.mutation_type or "inframe_insertion" in snp.mutation_type: + if "dup" in snp.aa_mut: + # Protein-level tandem dup: re-insert the duplicated residues after the range. + dup_start = int(positions[0]) - 1 + dup_end = int(positions[-1]) + dup_aa = protein_seq[dup_start:dup_end] + mut_pro_seq = protein_seq[:dup_end] + dup_aa + protein_seq[dup_end:] + else: + try: + index = snp.aa_mut.index("ins") + except ValueError: + return '' + insert_aa_raw = snp.aa_mut[index + 3:] + insert_aa = _three_to_one(insert_aa_raw) + if insert_aa.isalpha(): + ins_index1 = int(positions[0]) + mut_pro_seq = protein_seq[:ins_index1] + insert_aa + protein_seq[ins_index1:] + elif "Deletion - In frame" in snp.mutation_type or "inframe_deletion" in snp.mutation_type: if len(positions) == 2: del_index1 = int(positions[0]) - 1 del_index2 = int(positions[1]) @@ -211,7 +579,8 @@ def get_mut_pro_seq(snp: SNP, seq: Seq) -> Optional[str]: elif len(positions) == 1: del_index1 = int(positions[0]) - 1 mut_pro_seq = protein_seq[:del_index1] + protein_seq[del_index1 + 1:] - elif "Complex" in snp.mutation_type and "frameshift" not in snp.mutation_type: + elif ("Complex" in snp.mutation_type or "protein_altering_variant" in snp.mutation_type) \ + and "frameshift" not in snp.mutation_type: try: index = snp.aa_mut.index(">") except ValueError: @@ -256,65 +625,115 @@ def cosmic_to_proteindb(self) -> None: except KeyError: COSMIC_CDS_DB[record.id] = [record] + # Build phenotype-to-group mapping from the classification file if provided. + # COSMIC_PHENOTYPE_ID is present directly in the mutation file (column 6) and + # is the join key to the Cosmic_Classification file where PRIMARY_SITE lives. + sample_groups_dict = {} + if self._local_clinical_sample_file and self._filter_column: + sample_groups_dict = self.get_value_per_sample( + self._local_clinical_sample_file, + self._filter_column, + sample_id_column='COSMIC_PHENOTYPE_ID', + ) + if not sample_groups_dict: + self.get_logger().warning( + "clinical_sample_file '%s' produced no phenotype mappings; " + "falling back to direct filter-column lookup in the mutation file.", + self._local_clinical_sample_file, + ) + regex = re.compile('[^a-zA-Z]') mutation_dic = {} groups_mutations_dict = {} + ref_mismatch_count = 0 + unsupported_count = 0 self.get_logger().debug("Reading input CosmicMutantExport.tsv ...") line_counter = 1 - required_columns = ["Gene name", "Accession Number", "Mutation CDS", "Mutation AA", "Mutation Description"] + required_columns = ["GENE_SYMBOL", "TRANSCRIPT_ACCESSION", "MUTATION_CDS", "MUTATION_AA", "MUTATION_DESCRIPTION"] with _open_text(self._local_mutation_file, encoding="latin-1") as cosmic_input, \ open(self._local_output_file, 'w', encoding='utf-8') as output: - header = cosmic_input.readline().strip().split("\t") + col_header = cosmic_input.readline().strip().split("\t") try: - gene_col = header.index("Gene name") - enst_col = header.index("Accession Number") - cds_col = header.index("Mutation CDS") - aa_col = header.index("Mutation AA") - muttype_col = header.index("Mutation Description") + gene_col = col_header.index("GENE_SYMBOL") + enst_col = col_header.index("TRANSCRIPT_ACCESSION") + cds_col = col_header.index("MUTATION_CDS") + aa_col = col_header.index("MUTATION_AA") + muttype_col = col_header.index("MUTATION_DESCRIPTION") except ValueError as e: self.get_logger().error( "COSMIC file missing required columns. Expected %s, got: %s", - required_columns, header + required_columns, col_header ) raise ValueError( f"COSMIC mutation file missing required column: {e}. " f"Expected columns include: {required_columns}" ) from e + + # COSMIC_PHENOTYPE_ID is the direct join key to the classification file. + try: + phenotype_id_col = col_header.index("COSMIC_PHENOTYPE_ID") + except ValueError: + phenotype_id_col = None + if sample_groups_dict: + self.get_logger().warning( + "COSMIC_PHENOTYPE_ID not found in mutation file header; classification file join will be skipped." + ) + + # Fall back to a direct filter column in the mutation file when no classification file is provided. filter_col = None - if self._filter_column: + if not sample_groups_dict and self._filter_column: try: - filter_col = header.index(self._filter_column) + filter_col = col_header.index(self._filter_column) except ValueError: self.get_logger().warning( - "Filter column '%s' not found in COSMIC header: %s. Filtering disabled.", - self._filter_column, header + "Filter column '%s' not found in COSMIC header. Filtering disabled.", + self._filter_column, ) max_col = max(gene_col, enst_col, cds_col, aa_col, muttype_col) if filter_col is not None: max_col = max(max_col, filter_col) + if phenotype_id_col is not None and sample_groups_dict: + max_col = max(max_col, phenotype_id_col) for line in cosmic_input: if line_counter % 10000 == 0: - msg = "Number of lines finished -- '{}'".format(line_counter) - self.get_logger().debug(msg) + self.get_logger().debug("Number of lines finished -- '%s'", line_counter) line_counter += 1 row = line.strip().split("\t") if len(row) <= max_col: self.get_logger().debug("Skipping malformed row (insufficient columns) at line %s: %s", line_counter, row[:5]) continue - # filter out mutations from unspecified groups - if filter_col is not None: - if row[filter_col] not in self._accepted_values and self._accepted_values != ['all']: + + # Determine the group (e.g. primary site) for this mutation. + group = None + if sample_groups_dict and phenotype_id_col is not None: + group = sample_groups_dict.get(row[phenotype_id_col]) + if group is None and (self._accepted_values != ['all'] or self._split_by_filter_column): + self.get_logger().warning( + "No classification found for COSMIC_PHENOTYPE_ID '%s'; skipping row.", + row[phenotype_id_col], + ) continue + elif filter_col is not None: + group = row[filter_col] + + if group is not None and group not in self._accepted_values and self._accepted_values != ['all']: + continue - if "coding silent" in row[muttype_col]: + if "coding silent" in row[muttype_col] or "synonymous_variant" in row[muttype_col]: + continue + + # Skip non-coding mutations with unknown protein consequence (UTR, + # intronic, splice-region variants etc.). These can never produce + # a mutant protein sequence so there is nothing useful to warn about. + if row[aa_col] == 'p.?': continue snp = SNP(gene=row[gene_col], mrna=row[enst_col], dna_mut=row[cds_col], aa_mut=row[aa_col], mutation_type=row[muttype_col]) - header = "COSMIC:%s:%s:%s" % (snp.gene, snp.aa_mut, snp.mutation_type.replace(" ", "")) + fasta_header = "COSMIC:%s:%s:%s" % (snp.gene, snp.aa_mut, snp.mutation_type.replace(" ", "")) try: this_gene_records = COSMIC_CDS_DB[snp.gene] seqs = [] @@ -324,42 +743,75 @@ def cosmic_to_proteindb(self) -> None: except KeyError: # geneID is not in All_COSMIC_Genes.fasta continue - mut_pro_seq = None + failure_reason = "unsupported" + mut_pro_seq = "" for seq in seqs: try: - mut_pro_seq = self.get_mut_pro_seq(snp, seq) + result = self.get_mut_pro_seq(snp, seq) except (IndexError, ValueError): + failure_reason = "ref_mismatch" + continue + if result is None: + failure_reason = "ref_mismatch" continue - if mut_pro_seq: + if result: + mut_pro_seq = result break if mut_pro_seq: - entry = ">%s\n%s\n" % (header, mut_pro_seq) - if header not in mutation_dic: + entry = ">%s\n%s\n" % (fasta_header, mut_pro_seq) + if fasta_header not in mutation_dic: output.write(entry) - mutation_dic[header] = 1 + mutation_dic[fasta_header] = 1 - if self._split_by_filter_column and filter_col is not None: + if self._split_by_filter_column and group is not None: try: - groups_mutations_dict[row[filter_col]][header] = entry + groups_mutations_dict[group][fasta_header] = entry except KeyError: - groups_mutations_dict[row[filter_col]] = {header: entry} + groups_mutations_dict[group] = {fasta_header: entry} else: - self.get_logger().warning( - f"Could not parse mutation record: gene={snp.gene}, dna_mut={snp.dna_mut}, " - f"aa_mut={snp.aa_mut}, mutation_type={snp.mutation_type}" - ) + if failure_reason == "ref_mismatch": + ref_mismatch_count += 1 + if self.get_logger().isEnabledFor(logging.DEBUG): + detail = _substitution_mismatch_detail(snp, seqs) + self.get_logger().debug( + "Skipped (REF mismatch): gene=%s, dna_mut=%s, " + "aa_mut=%s, mutation_type=%s%s", + snp.gene, snp.dna_mut, snp.aa_mut, snp.mutation_type, + detail, + ) + else: + unsupported_count += 1 + self.get_logger().debug( + "Skipped (unsupported HGVS): gene=%s, dna_mut=%s, " + "aa_mut=%s, mutation_type=%s", + snp.gene, snp.dna_mut, snp.aa_mut, snp.mutation_type, + ) + + if ref_mismatch_count: + self.get_logger().warning( + "%d mutation records skipped: REF base in COSMIC does not match the " + "gene FASTA (transcript version mismatch); run with DEBUG logging to see details.", + ref_mismatch_count, + ) + if unsupported_count: + self.get_logger().warning( + "%d mutation records skipped: HGVS notation not supported by the parser; " + "run with DEBUG logging to see details.", + unsupported_count, + ) for group_name in groups_mutations_dict.keys(): output_base = str(Path(self._local_output_file).with_suffix('')) with open(f"{output_base}_{regex.sub('', group_name)}.fa", 'w', encoding='utf-8') as fn: - for header in groups_mutations_dict[group_name].keys(): - fn.write(groups_mutations_dict[group_name][header]) + for fasta_hdr in groups_mutations_dict[group_name].keys(): + fn.write(groups_mutations_dict[group_name][fasta_hdr]) self.get_logger().debug("COSMIC contains in total {} non redundant mutations".format(len(mutation_dic))) @staticmethod - def get_sample_headers(header_line: list, filter_column: str) -> tuple[Optional[int], Optional[int]]: + def get_sample_headers(header_line: list, filter_column: str, + sample_id_column: str = 'SAMPLE_ID') -> tuple[Optional[int], Optional[int]]: _logger = logging.getLogger(__name__) try: filter_col = header_line.index(filter_column) @@ -367,32 +819,33 @@ def get_sample_headers(header_line: list, filter_column: str) -> tuple[Optional[ _logger.warning('%s was not found in the header row: %s', filter_column, header_line) return None, None try: - sample_id_col = header_line.index('SAMPLE_ID') + sample_id_col = header_line.index(sample_id_column) except ValueError: - _logger.warning('SAMPLE_ID was not found in the header row: %s', header_line) + _logger.warning('%s was not found in the header row: %s', sample_id_column, header_line) return None, None return filter_col, sample_id_col - def get_value_per_sample(self, local_clinical_sample_file: str, filter_column: str) -> dict: + def get_value_per_sample(self, local_clinical_sample_file: str, filter_column: str, + sample_id_column: str = 'SAMPLE_ID') -> dict: sample_value = {} if local_clinical_sample_file: - with open(local_clinical_sample_file, 'r', encoding='utf-8') as clin_fn: + with _open_text(local_clinical_sample_file, encoding='utf-8') as clin_fn: filter_column_col, sample_id_col = None, None for line in clin_fn.readlines(): if line.startswith('#'): continue sl = line.strip().split('\t') - # check for header and re-assign columns - if 'SAMPLE_ID' in sl and filter_column in sl: - filter_column_col, sample_id_col = self.get_sample_headers(sl, filter_column) - # Skip adding the header row itself to sample_value + if sample_id_column in sl and filter_column in sl: + filter_column_col, sample_id_col = self.get_sample_headers( + sl, filter_column, sample_id_column + ) continue if filter_column_col is not None and sample_id_col is not None: if (sample_id_col < len(sl) and filter_column_col < len(sl)): sample_value[sl[sample_id_col]] = sl[filter_column_col].strip().replace(' ', '_') else: - self.get_logger().warning("No column was found for %s, %s in %s", filter_column, 'SAMPLE_ID', - local_clinical_sample_file) + self.get_logger().warning("No column was found for %s, %s in %s", filter_column, + sample_id_column, local_clinical_sample_file) return sample_value @staticmethod @@ -402,166 +855,360 @@ def get_mut_header_cols(header_cols: dict, row: list) -> dict: return header_cols + @staticmethod + def _load_gff_db(gff_file: str) -> gffutils.FeatureDB: + """Build or load a gffutils SQLite database from a GFF3/GTF file. + + The DB is stored as ``.db`` alongside the source file. + Building is slow on first run (NCBI GFF3 ~10–30 min); subsequent + runs load the cached SQLite file in seconds. + """ + log = logging.getLogger(__name__) + db_file = str(Path(gff_file).with_suffix(".db")) + + def _build(force: bool) -> None: + gffutils.create_db( + gff_file, db_file, + merge_strategy="create_unique", + keep_order=True, + disable_infer_transcripts=True, + disable_infer_genes=True, + verbose=False, + force=force, + ) + + if not Path(db_file).exists(): + log.warning( + "Building gffutils database from %s — this takes 10–30 minutes on " + "first run and is cached as %s for subsequent runs.", gff_file, db_file + ) + _build(force=False) + else: + try: + return gffutils.FeatureDB(db_file) + except Exception: + log.warning( + "gffutils DB at %s appears corrupt — rebuilding from %s " + "(this may take 10–30 minutes).", db_file, gff_file + ) + _build(force=True) + + return gffutils.FeatureDB(db_file) + + @staticmethod + def _get_gff_features( + db: gffutils.FeatureDB, transcript_id: str, feature_types: Optional[list] = None + ) -> tuple: + """Return (chrom, strand, features_info) for a transcript. + + Tries the ID directly, then without version, then with the GFF3 + NCBI ``rna-`` prefix. Returns (None, None, None) when not found. + """ + if feature_types is None: + feature_types = ["CDS"] + feature = None + bare = transcript_id.split(".")[0] + for candidate in ( + transcript_id, + bare, + f"rna-{transcript_id}", + f"rna-{bare}", + ): + try: + feature = db[candidate] + break + except gffutils.exceptions.FeatureNotFoundError: + continue + if feature is None: + # Last resort: NCBI GFF3 uses versioned IDs like 'rna-NM_001255.3'. + # Query the SQLite backing store with a LIKE pattern on the ID column. + try: + rows = db.conn.execute( + "SELECT id FROM features " + "WHERE featuretype IN ('mRNA','transcript','primary_transcript') " + "AND id LIKE ? LIMIT 1", + [f"rna-{bare}.%"], + ).fetchall() + if rows: + feature = db[rows[0][0]] + except (sqlite3.Error, gffutils.exceptions.FeatureNotFoundError) as exc: + logging.getLogger(__name__).debug( + "Versioned-ID fallback lookup failed for %s: %s", transcript_id, exc + ) + if feature is None: + logging.getLogger(__name__).warning( + "Transcript %s not found in GFF annotation database.", transcript_id + ) + return None, None, None + coding_features = [ + [f.start, f.end, f.featuretype] + for f in db.children(feature, featuretype=feature_types, order_by="end") + ] + return feature.chrom, feature.strand, coding_features + + @staticmethod + def _parse_cbio_fasta_header(description: str, biotype_str: str) -> tuple[list, str, str]: + """Parse CDS=[start]-[end], biotype, and gene name from a gffread -F -w FASTA description. + + Returns (cds_info, biotype, gene_name). cds_info is [] when no CDS= token is present. + Mirrors the CDS= parsing in ensembl.py:802-820. + """ + cds_info = [] + biotype = '' + gene_name = '' + for token in description.split(' '): + stripped = token.strip('[]') + if stripped.startswith('CDS='): + try: + cds_info = [int(x) for x in stripped.split('=')[1].split('-')] + except (ValueError, IndexError): + pass + break + for attr in description.split(';'): + attr = attr.strip() + if attr.startswith(f'{biotype_str}='): + biotype = attr.split('=', 1)[1] + elif attr.startswith('gene='): + gene_name = attr.split('=', 1)[1] + return cds_info, biotype, gene_name + def cbioportal_to_proteindb(self) -> None: - """cBioportal studies have a data_clinical_sample.txt file - that shows the Primary Tumor Site per Sample Identifier - The sample ID in the clinical file matches Tumor_Sample_Barcode column in the mutations file. - """ + """Translate cBioportal mutation MAF into a protein FASTA database. + + When workers > 1 the translation phase is parallelised: the main + process parses and pre-filters all rows (Phase 1), fans out fixed-size + batches to a process pool (Phase 2), then writes the merged results and + per-group split files (Phase 3). workers=1 (default) runs Phase 2 in + the main process with zero pool overhead, preserving the original + single-process behaviour exactly. + """ regex = re.compile('[^a-zA-Z]') - sample_groups_dict = {} - group_mutations_dict = {} - seq_dic = {} + # ── FASTA loading ───────────────────────────────────────────────────── + seq_dic: dict = {} + _MAX_GENE_CANDIDATES = 10 + gene_tids_raw: dict[str, list] = {} with _open_text(self._local_complete_genes, encoding='utf-8') as genes_handle: for record in SeqIO.parse(genes_handle, "fasta"): - newacc = record.id.split(".")[0] - if newacc not in seq_dic: - seq_dic[newacc] = record.seq + tid = record.id.removeprefix('rna-').split('.')[0] + if tid not in seq_dic: + cds_info, biotype, gene_name = self._parse_cbio_fasta_header( + record.description, self._biotype_str) + seq_dic[tid] = {'seq': record.seq, 'cds': cds_info, 'biotype': biotype} + if gene_name and cds_info: + cds_len = cds_info[1] - cds_info[0] + gene_tids_raw.setdefault(gene_name, []).append((cds_len, tid)) + gene_tids: dict[str, list] = { + g: [tid for _, tid in sorted(tids, reverse=True)[:_MAX_GENE_CANDIDATES]] + for g, tids in gene_tids_raw.items() + } - header_cols = {"HGVSc": None, "Transcript_ID": None, "Variant_Classification": None, - "Variant_Type": None, "HGVSp_Short": None, 'Tumor_Sample_Barcode': None} - nucleotide = ["A", "T", "C", "G"] - mutclass = ["Frame_Shift_Del", "Frame_Shift_Ins", "In_Frame_Del", "In_Frame_Ins", "Missense_Mutation", - "Nonsense_Mutation"] - - # check if sample id and clinical files are given, if not and not filter is required then exit + # ── Clinical sample / group filter ──────────────────────────────────── + sample_groups_dict: dict = {} if self._accepted_values != ['all'] or self._split_by_filter_column: if self._local_clinical_sample_file: - sample_groups_dict = self.get_value_per_sample(self._local_clinical_sample_file, self._filter_column) - self.get_logger().info('sample_groups_dict %s %s', self._local_clinical_sample_file, self._filter_column) + sample_groups_dict = self.get_value_per_sample( + self._local_clinical_sample_file, self._filter_column) + self.get_logger().info('sample_groups_dict %s %s', + self._local_clinical_sample_file, self._filter_column) if sample_groups_dict == {}: return else: - self.get_logger().warning('No clinical sample file is given therefore no filter could be applied.') + self.get_logger().warning( + 'No clinical sample file is given therefore no filter could be applied.') return - with _open_text(self._local_mutation_file, encoding='utf-8') as mutfile, \ - open(self._local_output_file, "w", encoding='utf-8') as output: + # ── GFF DB: build once before workers start ─────────────────────────── + gff_db_path: Optional[str] = None + if self._local_gff_file: + self._load_gff_db(self._local_gff_file) + gff_db_path = str(Path(self._local_gff_file).with_suffix('.db')) + + # ── Phase 1: parse + pre-filter all rows (serial, I/O-bound) ───────── + parsed_rows = self._parse_maf_rows(sample_groups_dict) + if not parsed_rows: + open(self._local_output_file, 'w', encoding='utf-8').close() + return + + worker_config = { + 'translation_table': self._translation_table, + 'include_biotypes': self._include_biotypes, + 'exclude_biotypes': self._exclude_biotypes, + 'skip_including_all_cds': self._skip_including_all_cds, + 'split_by_filter_column': self._split_by_filter_column, + } + + # ── Phase 2: translate (sequential or parallel) ─────────────────────── + if self._workers <= 1: + _cbio_worker_init(seq_dic, gene_tids, gff_db_path, worker_config) + all_results = _cbio_translate_batch(parsed_rows, 0) + else: + all_results = self._run_cbio_parallel( + parsed_rows, seq_dic, gene_tids, gff_db_path, worker_config) + + # ── Phase 3: write main output + per-group split files ──────────────── + # Collect into dicts first so duplicate headers (same mutation in multiple + # patients) are collapsed to one entry before writing. + main_mutations: dict = {} + group_mutations_dict: dict = {} + for header, prot, group in all_results: + main_mutations[header] = prot + if self._split_by_filter_column and group is not None: + group_mutations_dict.setdefault(group, {})[header] = prot + + with open(self._local_output_file, 'w', encoding='utf-8') as output: + for hdr, seq in main_mutations.items(): + output.write(f'>{hdr}\n{seq}\n') + + for group, mutations in group_mutations_dict.items(): + output_base = str(Path(self._local_output_file).with_suffix('')) + with open(f"{output_base}_{regex.sub('', group)}.fa", 'w', encoding='utf-8') as fn: + for hdr, seq in mutations.items(): + fn.write(f'>{hdr}\n{seq}\n') + + def _parse_maf_rows(self, sample_groups_dict: dict) -> list: + """Phase 1: read the mutation MAF, apply pre-translation filters, return row dicts. + + Applies: header detection, sample-group lookup, variant-classification + filter. Biotype filtering is deferred to the worker because it needs + seq_dic which is not loaded here. + + Each returned dict has keys: + idx, gene, enst, pos, aa_mut, vartype, varclass, group, + var_chrom, var_start, ref_allele, alt_allele + """ + required_cols = { + "HGVSc": None, "Transcript_ID": None, "Variant_Classification": None, + "Variant_Type": None, "HGVSp_Short": None, "Tumor_Sample_Barcode": None, + } + coord_cols = { + "Chromosome": None, "Start_Position": None, + "Reference_Allele": None, "Tumor_Seq_Allele2": None, "Strand": None, + } + header_cols = {**required_cols, **coord_cols} + header_detected = False + rows: list = [] + + with _open_text(self._local_mutation_file, encoding='utf-8') as mutfile: for i, line in enumerate(mutfile): row = line.strip().split("\t") if row[0] == '#': self.get_logger().info("skipping line (%s): %s", i, row) continue - # check for header in the mutations file and get column indices - if set(header_cols.keys()).issubset(set(row)): - header_cols = self.get_mut_header_cols(header_cols, row) + if not header_detected and set(required_cols.keys()).issubset(set(row)): + for col in required_cols: + header_cols[col] = row.index(col) + for col in coord_cols: + header_cols[col] = row.index(col) if col in row else None + header_detected = True continue - - # check if any is none in header_cols then continue - if None in header_cols.values(): + if not header_detected: self.get_logger().error("Incorrect header column is given") continue - # get filter value and check it + group = None if self._accepted_values != ['all'] or self._split_by_filter_column: try: group = sample_groups_dict[row[header_cols['Tumor_Sample_Barcode']]] except KeyError: - if self._accepted_values != ['all'] or self._split_by_filter_column: - self.get_logger().warning("No clinical info was found for sample %s. Skipping (line %s): %s", - row[header_cols['Tumor_Sample_Barcode']], i, line) - continue + self.get_logger().warning( + "No clinical info was found for sample %s. Skipping (line %s).", + row[header_cols['Tumor_Sample_Barcode']], i) + continue except IndexError: - self.get_logger().warning("No sampleID was found in (line %s): %s", i, row) + self.get_logger().warning( + "No sampleID was found in (line %s): %s", i, row) if group not in self._accepted_values and self._accepted_values != ['all']: continue - gene = row[0] try: + gene = row[0] pos = row[header_cols["HGVSc"]] enst = row[header_cols["Transcript_ID"]] - - seq_mut = "" aa_mut = row[header_cols["HGVSp_Short"]] - vartype = row[header_cols["Variant_Type"]] varclass = row[header_cols["Variant_Classification"]] except IndexError: self.get_logger().warning("Incorrect line (%s): %s", i, row) continue - if varclass not in mutclass: - continue - try: - seq = seq_dic[enst] - except KeyError: - self.get_logger().warning("No matching record for gene (%s) from row %s in FASTA file", enst, row) + if self._include_variant_classifications != ['all']: + if varclass not in self._include_variant_classifications: + continue + if varclass in self._exclude_variant_classifications: continue - if ":" in pos: - cdna_pos = pos.split(":")[1] - else: - cdna_pos = pos + # Extract coordinate columns (may be None if column absent from header) + def _get_col(col_name): + ci = header_cols.get(col_name) + return row[ci] if ci is not None and ci < len(row) else None - if vartype == "SNP": + var_start = None + raw_start = _get_col("Start_Position") + if raw_start is not None: try: - enst_pos = int(re.findall(r'\d+', cdna_pos)[0]) - except IndexError: - self.get_logger().warning("Incorrect SNP format or record %s %s %s", i, pos, line) - continue - if ">" not in pos: - self.get_logger().warning("SNP position string missing '>' (line %s): %s", i, pos) - continue - idx = pos.index(">") - ref_dna = pos[idx - 1] - mut_dna = pos[idx + 1] + var_start = int(raw_start) + except (ValueError, TypeError): + pass - if mut_dna not in nucleotide: - self.get_logger().warning("%s is not a nucleotide base %s", mut_dna, pos) - continue - try: - if ref_dna == seq[enst_pos - 1]: - seq_mut = seq[:enst_pos - 1] + mut_dna + seq[enst_pos:] - else: - self.get_logger().warning("incorrect substitution, unmatched nucleotide %s %s", pos, enst) - except IndexError: - self.get_logger().warning("incorrect substitution, out of index %s", pos) - elif vartype == "DEL": - try: - enst_pos = int(re.findall(r'\d+', cdna_pos.split("_")[0])[0]) - except IndexError: - self.get_logger().warning("incorrect del format or record %s %s %s", i, pos, line) - continue - del_dna = pos.split("del")[1] - if del_dna == seq[enst_pos - 1:enst_pos - 1 + len(del_dna)]: - seq_mut = seq[:enst_pos - 1] + seq[enst_pos - 1 + len(del_dna):] - else: - self.get_logger().warning("incorrect deletion, unmatched nucleotide %s", pos) + rows.append({ + 'idx': i, + 'gene': gene, + 'enst': enst, + 'pos': pos, + 'aa_mut': aa_mut, + 'vartype': vartype, + 'varclass': varclass, + 'group': group, + 'var_chrom': _get_col("Chromosome"), + 'var_start': var_start, + 'ref_allele': _get_col("Reference_Allele"), + 'alt_allele': _get_col("Tumor_Seq_Allele2"), + }) - elif vartype == "INS": - try: - enst_pos = int(re.findall(r'\d+', cdna_pos.split("_")[0])[0]) - except IndexError: - self.get_logger().warning("incorrect ins/dup format or record %s %s %s", i, pos, line) - continue - if "ins" in pos: - ins_dna = pos.split("ins")[1] - elif "dup" in pos: - ins_dna = pos.split("dup")[1] - if len(ins_dna) > 1: - enst_pos = int(re.findall(r'\d+', cdna_pos.split("_")[1])[0]) - else: - self.get_logger().warning("unexpected insertion format") - continue + return rows - seq_mut = seq[:enst_pos] + ins_dna + seq[enst_pos:] + def _run_cbio_parallel( + self, + rows: list, + seq_dic: dict, + gene_tids: dict, + gff_db_path: Optional[str], + config: dict, + ) -> list: + """Phase 2 (parallel): fan rows out to a process pool in fixed-size batches. - if seq_mut == "": - continue + Splits `rows` into batches of self._cbio_batch_size and dispatches them + via multiprocessing.Pool.starmap. Follows the same spawn-context + + pool-initializer pattern as the VCF parallel path in ensembl.py so that + seq_dic and the GFF DB are loaded once per worker, not once per batch. - mut_pro_seq = seq_mut.translate(to_stop=False) - if len(mut_pro_seq) > 6: - header = "cbiomut:%s:%s:%s:%s" % (enst, gene, aa_mut, varclass) - output.write(">%s\n%s\n" % (header, mut_pro_seq)) + Falls back to a single in-process call when rows fit in one batch or + worker count collapses to 1. + """ + import multiprocessing as mp - if self._split_by_filter_column: - try: - group_mutations_dict[group][header] = mut_pro_seq - except KeyError: - group_mutations_dict[group] = {header: mut_pro_seq} + batch_size = self._cbio_batch_size + batches = [rows[i:i + batch_size] for i in range(0, len(rows), batch_size)] + n_workers = min(self._workers, len(batches)) - for group in group_mutations_dict.keys(): - output_base = str(Path(self._local_output_file).with_suffix('')) - with open(f"{output_base}_{regex.sub('', group)}.fa", 'w', encoding='utf-8') as fn: - for header in group_mutations_dict[group].keys(): - fn.write(">{}\n{}\n".format(header, group_mutations_dict[group][header])) + if n_workers <= 1 or len(batches) <= 1: + _cbio_worker_init(seq_dic, gene_tids, gff_db_path, config) + return _cbio_translate_batch(rows, 0) + + self.get_logger().info( + "cbioportal-to-proteindb: dispatching %d batch(es) of ≤%d rows " + "across %d worker(s)", + len(batches), batch_size, n_workers) + + with mp.get_context('spawn').Pool( + n_workers, + initializer=_cbio_worker_init, + initargs=(seq_dic, gene_tids, gff_db_path, config), + ) as pool: + batch_results = pool.starmap( + _cbio_translate_batch, + [(batch, idx) for idx, batch in enumerate(batches)], + ) + + return [item for batch in batch_results for item in batch] diff --git a/pgatk/cgenomes/cosmic_downloader.py b/pgatk/cgenomes/cosmic_downloader.py index 33320141..0f862067 100644 --- a/pgatk/cgenomes/cosmic_downloader.py +++ b/pgatk/cgenomes/cosmic_downloader.py @@ -1,7 +1,9 @@ import base64 -import gzip -import requests import os +import tarfile + +import requests +from tqdm import tqdm from pgatk.toolbox.exceptions import AppConfigException from pgatk.toolbox.general import ParameterConfiguration, check_create_folders @@ -12,14 +14,22 @@ class CosmicDownloadService(ParameterConfiguration): CONFIG_OUTPUT_DIRECTORY = 'output_directory' CONFIG_COSMIC_SERVER = 'cosmic_server' CONFIG_COSMIC_FTP_URL = 'cosmic_ftp' + CONFIG_API_ENDPOINT = 'api_endpoint' + CONFIG_BUCKET = 'bucket' CONFIG_COSMIC_FTP_USER = "cosmic_user" CONFIG_COSMIC_FTP_PASSWORD = "cosmic_password" - CONFIG_COSMIC_MUTATIONS_URL = "mutations_url" - CONFIG_COSMIC_MUTATIONS_FILE = "mutations_file" - CONFIG_COSMIC_CELLLINE_MUTATIONS_URL = "mutations_cellline_url" - CONFIG_COSMIC_CELLLINE_MUTATIONS_FILE = "mutations_cellline_file" - CONFIG_COSMIC_CDS_GENES_FILE = "all_cds_genes_file" - CONFIG_COSMIC_CELLLINES_GENES_FILE = "all_celllines_genes_file" + CONFIG_PRODUCTS = "products" + + # Built-in fallback list, used only if `products` is missing from config. + # Real default lives in pgatk/config/cosmic_config.yaml and is the source of truth. + _DEFAULT_PRODUCTS = ( + 'grch38/cosmic/v103/Cosmic_GenomeScreensMutant_Tsv_v103_GRCh38.tar', + 'grch38/cosmic/v103/Cosmic_CompleteTargetedScreensMutant_Tsv_v103_GRCh38.tar', + 'grch38/cosmic/v103/Cosmic_Genes_Fasta_v103_GRCh38.tar', + 'grch38/cosmic/v103/Cosmic_Transcripts_Tsv_v103_GRCh38.tar', + 'grch38/cell_lines/v103/CellLinesProject_GenomeScreensMutant_Tsv_v103_GRCh38.tar', + 'grch38/cell_lines/v103/CellLinesProject_CompleteCNA_Tsv_v103_GRCh38.tar', + ) def __init__(self, config_file, pipeline_arguments): """ @@ -29,44 +39,41 @@ def __init__(self, config_file, pipeline_arguments): """ super(CosmicDownloadService, self).__init__(self.CONFIG_KEY_DATA_DOWNLOADER, config_file, pipeline_arguments) - self._local_path_cosmic = self.get_configuration_default_params(variable=self.CONFIG_OUTPUT_DIRECTORY, - default_value='./database_cosmic/') - self._cosmic_ftp_url = self.get_configuration_default_params(variable=self.CONFIG_COSMIC_FTP_URL, - default_value='https://cancer.sanger.ac.uk') - self._cosmic_user = self.get_configuration_default_params(variable=self.CONFIG_COSMIC_FTP_USER, - default_value='') - self._cosmic_password = self.get_configuration_default_params(variable=self.CONFIG_COSMIC_FTP_PASSWORD, - default_value='') - self._cosmic_mutation_url = self.get_configuration_default_params(variable=self.CONFIG_COSMIC_MUTATIONS_URL, - default_value='cosmic/file_download/GRCh38/cosmic/v94') - self._cosmic_mutations_file = self.get_configuration_default_params(variable=self.CONFIG_COSMIC_MUTATIONS_FILE, - default_value='CosmicMutantExport.tsv.gz') - self._cosmic_cellline_mutation_url = self.get_configuration_default_params( - variable=self.CONFIG_COSMIC_CELLLINE_MUTATIONS_URL, - default_value='cosmic/file_download/GRCh38/cell_lines/v94') - self._cosmic_cellline_mutation_file = self.get_configuration_default_params( - variable=self.CONFIG_COSMIC_CELLLINE_MUTATIONS_FILE, default_value='CosmicCLP_MutantExport.tsv.gz') - self._cosmic_cellline_mutation_gene = self.get_configuration_default_params( - variable=self.CONFIG_COSMIC_CELLLINES_GENES_FILE, default_value='All_CellLines_Genes.fasta.gz') - self._cosmic_cdns_file = self.get_configuration_default_params(variable=self.CONFIG_COSMIC_CDS_GENES_FILE, - default_value='All_COSMIC_Genes.fasta.gz') - - self._cosmic_token = base64.b64encode("{}:{}".format(self._cosmic_user, self._cosmic_password) - .encode()).decode('utf-8') + self._local_path_cosmic = self.get_configuration_default_params( + variable=self.CONFIG_OUTPUT_DIRECTORY, default_value='./database_cosmic/') + self._cosmic_ftp_url = self.get_configuration_default_params( + variable=self.CONFIG_COSMIC_FTP_URL, default_value='https://cancer.sanger.ac.uk') + self._api_endpoint = self.get_configuration_default_params( + variable=self.CONFIG_API_ENDPOINT, default_value='api/mono/products/v1/downloads/scripted') + self._bucket = self.get_configuration_default_params( + variable=self.CONFIG_BUCKET, default_value='downloads') + self._cosmic_user = self.get_configuration_default_params( + variable=self.CONFIG_COSMIC_FTP_USER, default_value='') + self._cosmic_password = self.get_configuration_default_params( + variable=self.CONFIG_COSMIC_FTP_PASSWORD, default_value='') + self._products = self.get_configuration_default_params( + variable=self.CONFIG_PRODUCTS, default_value=list(self._DEFAULT_PRODUCTS)) + + self._cosmic_token = base64.b64encode( + "{}:{}".format(self._cosmic_user, self._cosmic_password).encode() + ).decode('utf-8') self.prepare_local_cosmic_repository() def get_configuration_default_params(self, variable: str, default_value): - return_value = default_value if variable in self.get_pipeline_parameters(): - return_value = self.get_pipeline_parameters()[variable] - elif self.CONFIG_KEY_DATA_DOWNLOADER in self.get_default_parameters() \ - and self.CONFIG_COSMIC_SERVER in self.get_default_parameters()[self.CONFIG_KEY_DATA_DOWNLOADER] \ - and variable in self.get_default_parameters()[self.CONFIG_KEY_DATA_DOWNLOADER][ - self.CONFIG_COSMIC_SERVER]: - return_value = self.get_default_parameters()[self.CONFIG_KEY_DATA_DOWNLOADER][self.CONFIG_COSMIC_SERVER][ - variable] - return return_value + return self.get_pipeline_parameters()[variable] + defaults = self.get_default_parameters() + if self.CONFIG_KEY_DATA_DOWNLOADER not in defaults: + return default_value + data = defaults[self.CONFIG_KEY_DATA_DOWNLOADER] + # `output_directory` lives at cosmic_data.; everything else under cosmic_data.cosmic_server.. + if variable in data and not isinstance(data[variable], dict): + return data[variable] + server = data.get(self.CONFIG_COSMIC_SERVER, {}) + if variable in server: + return server[variable] + return default_value def prepare_local_cosmic_repository(self): self.get_logger().debug("Preparing local cbioportal repository, root folder - '{}'".format( @@ -78,88 +85,144 @@ def prepare_local_cosmic_repository(self): def get_local_path_root_cosmic_repo(self): return self._local_path_cosmic + def build_api_url(self, product_path): + """Build the COSMIC scripted-download API URL for a single product.""" + return "{server}/{endpoint}?path={path}&bucket={bucket}".format( + server=self._cosmic_ftp_url.rstrip('/'), + endpoint=self._api_endpoint.strip('/'), + path=product_path, + bucket=self._bucket, + ) + def download_mutation_file(self, url_file_name=None): """ - This function will download the mutations file from Cosmic Database. - :return: None - """ + Download every product listed in `self._products` via COSMIC's v103+ + scripted-download API. Each product is a `path=` value such as + `grch38/cosmic/v103/Cosmic_GenomeScreensMutant_Tsv_v103_GRCh38.tar`. - mutation_output_file = "{}/{}".format(self.get_local_path_root_cosmic_repo(), self._cosmic_mutations_file) - cds_genes_output_file = "{}/{}".format(self.get_local_path_root_cosmic_repo(), self._cosmic_cdns_file) - - mutation_celline_output_file = "{}/{}".format(self.get_local_path_root_cosmic_repo(), - self._cosmic_cellline_mutation_file) - cellines_genes_output_file = "{}/{}".format(self.get_local_path_root_cosmic_repo(), - self._cosmic_cellline_mutation_gene) - - server = self._cosmic_ftp_url - - cosmic_version = self._cosmic_mutation_url - mutation_file = self._cosmic_mutations_file + If url_file_name is provided, write the API URLs to that file instead of downloading. + """ - cosmic_cellline_version = self._cosmic_cellline_mutation_url - mutation_celline_file = self._cosmic_cellline_mutation_file + products = list(self._products) + if not products: + self.get_logger().warning("No COSMIC products configured; nothing to download.") + return - all_cds_gene_file = self._cosmic_cdns_file + token = "Basic {}".format(self._cosmic_token) + output_dir = self.get_local_path_root_cosmic_repo() - all_celllines_gene_file = self._cosmic_cellline_mutation_gene + if url_file_name is not None: + with open(url_file_name, 'w', encoding='utf-8') as url_file: + for path in products: + api_url = self.build_api_url(path) + output_file = "{}/{}".format(output_dir, os.path.basename(path)) + url_file.write("{}\t{}\n".format(api_url, output_file)) + return - mutation_url = "{}/{}/{}".format(server, cosmic_version, mutation_file) - cds_gene_url = "{}/{}/{}".format(server, cosmic_version, all_cds_gene_file) + for path in products: + api_url = self.build_api_url(path) + output_file = "{}/{}".format(output_dir, os.path.basename(path)) + self.download_file_cosmic(api_url, output_file, token) - celllines_gene_url = "{}/{}/{}".format(server, cosmic_cellline_version, all_celllines_gene_file) - mutation_cellline_url = "{}/{}/{}".format(server, cosmic_cellline_version, mutation_celline_file) + def download_file_cosmic(self, api_url, local_file, token): + """ + Two-step download from COSMIC's scripted-download API: + 1) GET api_url with Basic auth -> returns JSON {"url": ""} + 2) GET the presigned URL (no auth, 1-hour TTL) -> stream to local_file - if url_file_name is None: - token = "Basic {}".format(self._cosmic_token) - self.download_file_cosmic(mutation_url, mutation_output_file, token) - self.download_file_cosmic(cds_gene_url, cds_genes_output_file, token) + If local_file ends in .tar, extract its contents to the same directory + and delete the archive. + """ + api_response = requests.get(api_url, headers={'Authorization': token}, timeout=30) + if api_response.status_code != 200: + msg = ("COSMIC API request failed: HTTP {} for {}. Body: {!r}" + .format(api_response.status_code, api_url, api_response.text[:200])) + self.get_logger().error(msg) + raise AppConfigException(msg) - self.download_file_cosmic(celllines_gene_url, cellines_genes_output_file, token) - self.download_file_cosmic(mutation_cellline_url, mutation_celline_output_file, token) + try: + payload = api_response.json() + download_url = payload['url'] + except (ValueError, KeyError) as exc: + msg = ("COSMIC API returned 200 but the body is not a JSON object with a 'url' " + "key (got: {!r}). This usually means the `path=` value is wrong for the " + "release/assembly, or your account lacks access. URL was: {}. Error: {}" + .format(api_response.text[:200], api_url, exc)) + self.get_logger().error(msg) + raise AppConfigException(msg) - else: - if url_file_name is not None: - with open(url_file_name, 'w', encoding='utf-8') as url_file: - url_file.write("{}\t{}\n".format(mutation_url, mutation_output_file)) - url_file.write("{}\t{}\n".format(cds_gene_url, cds_genes_output_file)) - url_file.write("{}\t{}\n".format(celllines_gene_url, cellines_genes_output_file)) - url_file.write("{}\t{}\n".format(mutation_cellline_url, mutation_celline_output_file)) + # The presigned URL embeds short-lived AWS credentials in its query string; + # log only the path so the secret material doesn't leak into log aggregators. + self.get_logger().debug("Downloading file from signed URL (path %s)", download_url.split('?', 1)[0]) + data_response = requests.get(download_url, stream=True, timeout=30) + if data_response.status_code != 200: + # Strip the query string so the short-lived AWS credentials don't end + # up in logs / log aggregators on failure. + redacted_url = download_url.split('?', 1)[0] + msg = ("COSMIC S3 download failed: HTTP {} for {}" + .format(data_response.status_code, redacted_url)) + self.get_logger().error(msg) + raise AppConfigException(msg) - def download_file_cosmic(self, url, local_file, token): - """ - Download file from cosmic repository using requests - :param url: url of the file to be download - :param local_file: local file - :param token: token to be used - :return: + total_size = int(data_response.headers.get('content-length') or 0) + chunk_size = 1024 * 1024 + progress = tqdm( + total=total_size if total_size > 0 else None, + unit='B', unit_scale=True, unit_divisor=1024, + desc=os.path.basename(local_file), + leave=True, + ) + try: + with open(local_file, 'wb') as f: + for chunk in data_response.iter_content(chunk_size=chunk_size): + if chunk: + f.write(chunk) + progress.update(len(chunk)) + finally: + progress.close() + self.get_logger().debug("Download finished: '{}'".format(local_file)) + + if local_file.endswith('.tar'): + extract_dir = os.path.dirname(local_file) or '.' + print("Extracting {}...".format(os.path.basename(local_file)), flush=True) + self._safe_extract_tar(local_file, extract_dir) + os.remove(local_file) + self.get_logger().debug("Extracted archive into '{}'".format(extract_dir)) + + @staticmethod + def _safe_extract_tar(tar_path, dest_dir): + """Extract tar_path into dest_dir, rejecting unsafe members. + + Guards against path traversal (CVE-2007-4559) via absolute paths or + ``..`` components in member names, and ensures any symlink/hardlink + targets resolve within dest_dir. COSMIC archives are trusted in + practice, but defence in depth costs nothing and silences static + analysers. """ - - response = requests.get(url, stream=True, headers={'Authorization': token}, timeout=30) - if response.status_code == 200: - url = response.json()['url'] - msg = "Downloading file from url '{}'".format(url) - self.get_logger().debug(msg) - - response = requests.get(url, stream=True, timeout=30) - if response.status_code == 200: - with open(local_file, 'wb') as f: - f.write(response.content) - msg = "Download Finish for file '{}'".format(local_file) - self.get_logger().debug(msg) - if local_file.endswith('.gz'): - extracted_file = local_file.replace('.gz', '') - with open(extracted_file, 'w', encoding='utf-8') as outfile: - try: - outfile.write(gzip.decompress(open(local_file, 'rb').read()).decode('utf-8')) - except UnicodeDecodeError: - outfile.write(gzip.decompress(open(local_file, 'rb').read()).decode('ISO-8859-1')) - os.remove(local_file) - local_file = extracted_file - msg = "Extracted file '{}'".format(local_file) - self.get_logger().debug(msg) - else: - msg = "Error downloading the COSMIC data, error code {} , error message '{}'".format(response.status_code, - local_file) - self.get_logger().debug(msg) - raise AppConfigException(msg) + dest_abs = os.path.realpath(dest_dir) + with tarfile.open(tar_path, 'r') as tar: + safe_members: list[tarfile.TarInfo] = [] + for member in tar.getmembers(): + member_path = os.path.realpath(os.path.join(dest_abs, member.name)) + if os.path.commonpath([dest_abs, member_path]) != dest_abs: + raise AppConfigException( + "Refusing to extract tar member {!r}: would escape target dir {!r}" + .format(member.name, dest_abs) + ) + if member.issym() or member.islnk(): + link_target = member.linkname + if os.path.isabs(link_target): + raise AppConfigException( + "Refusing to extract tar member {!r}: absolute symlink/hardlink target {!r}" + .format(member.name, link_target) + ) + resolved = os.path.realpath(os.path.join(dest_abs, os.path.dirname(member.name), link_target)) + if os.path.commonpath([dest_abs, resolved]) != dest_abs: + raise AppConfigException( + "Refusing to extract tar member {!r}: symlink/hardlink would escape target dir" + .format(member.name) + ) + safe_members.append(member) + # All members in safe_members were validated against dest_abs above: + # absolute paths, .. traversal, and unsafe symlink targets all rejected. + tar.extractall(path=dest_abs, members=safe_members) # nosec B202 diff --git a/pgatk/cli.py b/pgatk/cli.py index f9e6efa5..8ae66db0 100644 --- a/pgatk/cli.py +++ b/pgatk/cli.py @@ -30,6 +30,8 @@ from pgatk.commands import map_peptide2genome as map_peptide2genome_cmd from pgatk.commands import clinvar_to_proteindb as clinvar_to_proteindb_cmd from pgatk.commands import ncbi_downloader as ncbi_downloader_cmd +from pgatk.commands import gencode_downloader as gencode_downloader_cmd +from pgatk.commands import gnomad_vcf_downloader as gnomad_vcf_downloader_cmd CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help']) @@ -58,6 +60,8 @@ def cli(): cli.add_command(map_peptide2genome_cmd.map_peptide2genome) cli.add_command(clinvar_to_proteindb_cmd.clinvar_to_proteindb) cli.add_command(ncbi_downloader_cmd.ncbi_downloader) +cli.add_command(gencode_downloader_cmd.gencode_downloader) +cli.add_command(gnomad_vcf_downloader_cmd.gnomad_vcf_downloader) def main(): diff --git a/pgatk/clinvar/clinvar_service.py b/pgatk/clinvar/clinvar_service.py index ee9a2cc6..03445e53 100644 --- a/pgatk/clinvar/clinvar_service.py +++ b/pgatk/clinvar/clinvar_service.py @@ -7,20 +7,25 @@ from __future__ import annotations import logging +import multiprocessing +import os import re +import shutil import sqlite3 +import time import tempfile from pathlib import Path from typing import Optional import gffutils -import pandas as pd +import collections from Bio import SeqIO from Bio.Seq import Seq from pybedtools import BedTool from pgatk.clinvar.chromosome_mapper import ChromosomeMapper from pgatk.config.registry import load_config +from pgatk.toolbox.general import open_vcf from pgatk.toolbox.vcf_utils import ( check_overlap, get_altseq, @@ -31,6 +36,139 @@ logger = logging.getLogger(__name__) +class _FeatureCache: + """Per-run memoization of _get_features() results keyed by (tid, feature_types).""" + + def __init__(self, maxsize: int = 50000) -> None: + self._cache: dict[tuple, tuple] = {} + self._maxsize = maxsize + + def get(self, key: tuple) -> Optional[tuple]: + return self._cache.get(key) + + def put(self, key: tuple, value: tuple) -> None: + if len(self._cache) >= self._maxsize: + for k in list(self._cache.keys())[: self._maxsize // 5]: + del self._cache[k] + self._cache[key] = value + + +_CLINVAR_BATCH_SIZE = 50_000 + +# Per-worker state populated once by _clinvar_worker_init and reused across all +# tasks assigned to that worker process. +_clinvar_worker_state: dict = {} + + +def _fasta_key_fn(header: str) -> str: + """Key function for SeqIO FASTA indexing — strips rna- prefix and version.""" + return header.split("|")[0].split(" ")[0].removeprefix("rna-") + + +def _ensure_fasta_index(fasta_file: str) -> str: + """Return path to a SQLite SeqIO index for fasta_file, building it if absent or stale.""" + idx_path = fasta_file + ".idx" + if os.path.exists(idx_path): + if os.path.getmtime(idx_path) >= os.path.getmtime(fasta_file): + return idx_path + try: + os.remove(idx_path) + except OSError: + pass + SeqIO.index_db(idx_path, [fasta_file], "fasta", key_function=_fasta_key_fn) + return idx_path + + +def _split_vcf_into_batches( + vcf_file: str, output_dir: str, batch_size: int = _CLINVAR_BATCH_SIZE +) -> list: + """Stream vcf_file once, writing fixed-size variant-count batches into output_dir. + + Returns an ordered list of batch VCF paths. + """ + header: list = [] + batch_paths: list = [] + handle = None + count = 0 + try: + with open_vcf(vcf_file) as f: + for line in f: + if line.startswith("#"): + header.append(line) + continue + if not line.strip(): + continue + if handle is None or count >= batch_size: + if handle is not None: + handle.close() + chunk_path = os.path.join( + output_dir, f"batch_{len(batch_paths):04d}.vcf" + ) + handle = open(chunk_path, "w", encoding="utf-8") + handle.writelines(header) + batch_paths.append(chunk_path) + count = 0 + handle.write(line) + count += 1 + finally: + if handle is not None: + handle.close() + return batch_paths + + +def _clinvar_worker_init( + vcf_file: str, + gff_file: str, + fasta_file: str, + assembly_report: str, + output_file: str, + config_file: Optional[str], + overlap_map: dict, +) -> None: + """Pool initializer: reconstruct service and open DB + FASTA index once per worker. + + The overlap_map (built in the main process) is pickled once per worker at + pool startup via initargs, not once per task. + """ + svc = ClinVarService( + vcf_file=vcf_file, + gff_file=gff_file, + fasta_file=fasta_file, + assembly_report=assembly_report, + output_file=output_file, + config_file=config_file, + ) + db = ClinVarService._parse_gtf(gff_file) + idx_path = _ensure_fasta_index(fasta_file) + transcripts_dict = SeqIO.index_db( + idx_path, [fasta_file], "fasta", key_function=_fasta_key_fn + ) + transcript_id_mapping = {k.split(".")[0]: k for k in transcripts_dict.keys()} + _clinvar_worker_state.update( + { + "svc": svc, + "db": db, + "transcripts_dict": transcripts_dict, + "transcript_id_mapping": transcript_id_mapping, + "overlap_map": overlap_map, + } + ) + + +def _clinvar_worker(vcf_batch_path: str, output_path: str) -> dict: + """Process one VCF batch chunk using per-worker pre-initialized state.""" + state = _clinvar_worker_state + _, vcf_records = ClinVarService._read_vcf(vcf_batch_path) + return state["svc"]._process_batch( + vcf_records=vcf_records, + overlap_map=state["overlap_map"], + db=state["db"], + transcripts_dict=state["transcripts_dict"], + transcript_id_mapping=state["transcript_id_mapping"], + output_file=output_path, + ) + + class ClinVarService: """Main ClinVar VCF-to-protein service. @@ -38,10 +176,13 @@ class ClinVarService: ---------- vcf_file : str Path to ClinVar VCF file (numeric chromosome names). - gtf_file : str - Path to NCBI RefSeq GTF file (NC_ chromosome names). + gff_file : str + Path to NCBI RefSeq GFF3 annotation file (NC_ chromosome names). + Previously accepted a GTF; GFF3 is now required because the NCBI GTF + lacks the parent hierarchy that gffread needs to generate CDS= headers. fasta_file : str Path to transcript nucleotide FASTA with ``CDS=start-end`` headers. + Generate with ``ncbi-downloader --generate-transcripts``. assembly_report : str Path to NCBI assembly report for chromosome name mapping. output_file : str, optional @@ -53,16 +194,17 @@ class ClinVarService: def __init__( self, vcf_file: str, - gtf_file: str, + gff_file: str, fasta_file: str, assembly_report: str, output_file: Optional[str] = None, config_file: Optional[str] = None, ) -> None: self._vcf_file = vcf_file - self._gtf_file = gtf_file + self._gtf_file = gff_file self._fasta_file = fasta_file self._assembly_report = assembly_report + self._config_file = config_file cfg = load_config("clinvar", config_file) self._cfg = cfg.get("clinvar_translation", {}) @@ -87,6 +229,10 @@ def __init__( self._include_biotypes = [b.strip() for b in biotypes_raw.split(",")] else: self._include_biotypes = list(biotypes_raw) + try: + self._workers = max(1, int(self._cfg.get("workers", 1))) + except (TypeError, ValueError): + self._workers = 1 # ------------------------------------------------------------------ # Static helper methods — ClinVar INFO field parsers @@ -196,6 +342,13 @@ def _parse_gtf(gtf_file: str) -> gffutils.FeatureDB: The database is stored alongside the GTF as ``.db``. """ db_file = str(Path(gtf_file).with_suffix(".db")) + if not os.path.exists(db_file): + logger.warning( + "Building gffutils database from %s — this takes 10–30 minutes " + "on first run and is cached as %s for subsequent runs.", + gtf_file, + db_file, + ) try: gffutils.create_db( gtf_file, @@ -232,10 +385,14 @@ def _get_features( try: feature = db[feature_id.split(".")[0]] except gffutils.exceptions.FeatureNotFoundError: - logger.warning( - "Feature %s not found in GTF database.", feature_id - ) - return None, None, None + try: + # GFF3: NCBI prefixes transcript IDs with "rna-" + feature = db[f"rna-{feature_id}"] + except gffutils.exceptions.FeatureNotFoundError: + logger.warning( + "Feature %s not found in annotation database.", feature_id + ) + return None, None, None coding_features = [] for f in db.children(feature, featuretype=feature_types, order_by="end"): @@ -244,27 +401,42 @@ def _get_features( @staticmethod def _get_transcript_biotype(db: gffutils.FeatureDB, transcript_id: str) -> str: - """Extract gene_biotype from a gffutils transcript feature. + """Extract gene_biotype from a gffutils transcript/mRNA feature. Returns empty string if the transcript or attribute is not found. + In GFF3, gene_biotype lives on the parent gene feature; this method + traverses up when the transcript feature itself lacks the attribute. """ + feature = None try: feature = db[transcript_id] except gffutils.exceptions.FeatureNotFoundError: try: feature = db[transcript_id.split(".")[0]] except gffutils.exceptions.FeatureNotFoundError: - # Last resort: match by prefix (unversioned -> versioned) - base = transcript_id.split(".")[0] - feature = None - for f in db.all_features(featuretype="transcript"): - if f.id.split(".")[0] == base: - feature = f - break - if feature is None: - return "" + try: + feature = db[f"rna-{transcript_id}"] # GFF3 NCBI prefix + except gffutils.exceptions.FeatureNotFoundError: + base = transcript_id.split(".")[0] + for ftype in ("transcript", "mRNA"): + for f in db.all_features(featuretype=ftype): + # Strip GFF3 "rna-" prefix before version comparison + if f.id.removeprefix("rna-").split(".")[0] == base: + feature = f + break + if feature is not None: + break + if feature is None: + return "" try: - return feature.attributes.get("gene_biotype", [""])[0] + biotype = feature.attributes.get("gene_biotype", [""])[0] + if not biotype: + # GFF3: gene_biotype is on the parent gene feature, not the mRNA + for parent in db.parents(feature, featuretype="gene"): + biotype = parent.attributes.get("gene_biotype", [""])[0] + if biotype: + break + return biotype except (IndexError, AttributeError): return "" @@ -272,14 +444,16 @@ def _get_transcript_biotype(db: gffutils.FeatureDB, transcript_id: str) -> str: # VCF reading (pandas, same pattern as EnsemblDataService) # ------------------------------------------------------------------ - @staticmethod - def _read_vcf(vcf_file: str) -> tuple[list, pd.DataFrame]: - """Read a VCF file and return metadata lines and a DataFrame of records.""" - COLUMNS = ["CHROM", "POS", "ID", "REF", "ALT", "QUAL", "FILTER", "INFO"] + _VCFRecord = collections.namedtuple( + "VCFRecord", ["CHROM", "POS", "ID", "REF", "ALT", "QUAL", "FILTER", "INFO"] + ) + @staticmethod + def _read_vcf(vcf_file: str) -> tuple[list, list]: + """Read a VCF file and return metadata lines and a list of VCFRecord namedtuples.""" metadata: list[str] = [] - data: list[list[str]] = [] - with open(vcf_file, "r", encoding="utf-8") as fh: + records: list = [] + with open_vcf(vcf_file) as fh: for line in fh: line = line.strip() if not line: @@ -287,10 +461,15 @@ def _read_vcf(vcf_file: str) -> tuple[list, pd.DataFrame]: if line.startswith("#"): metadata.append(line) else: - data.append(line.split("\t")[0:8]) - - vcf_df = pd.DataFrame(data, columns=COLUMNS) - return metadata, vcf_df + parts = line.split("\t", 7) + if len(parts) < 8: + continue + records.append(ClinVarService._VCFRecord( + CHROM=parts[0], POS=int(parts[1]), ID=parts[2], + REF=parts[3], ALT=parts[4], QUAL=parts[5], + FILTER=parts[6], INFO=parts[7], + )) + return metadata, records # ------------------------------------------------------------------ # BedTools-based transcript overlap annotation @@ -298,20 +477,17 @@ def _read_vcf(vcf_file: str) -> tuple[list, pd.DataFrame]: @staticmethod def _build_overlap_map( - vcf_df: pd.DataFrame, + vcf_records: list, gtf_file: str, chrom_mapper: ChromosomeMapper, ) -> dict[str, list[str]]: """Find transcripts overlapping each VCF variant via BedTools. - Builds a BED from an already-loaded DataFrame so the VCF file does not - need to be read a second time. - Returns a dict mapping ``"CHROM:POS:REF:ALT"`` variant keys to lists of overlapping transcript IDs. """ bed_lines: list[str] = [] - for _, row in vcf_df.iterrows(): + for row in vcf_records: ref = str(row.REF) if any(c not in "ACGT" for c in ref): continue @@ -362,40 +538,22 @@ def _build_overlap_map( Path(tmp_bed_path).unlink(missing_ok=True) # ------------------------------------------------------------------ - # Main pipeline + # Batch processing (used by both sequential and parallel paths) # ------------------------------------------------------------------ - def run(self) -> str: - """Execute the ClinVar VCF-to-protein pipeline. + def _process_batch( + self, + vcf_records: list, + overlap_map: dict, + db: gffutils.FeatureDB, + transcripts_dict, + transcript_id_mapping: dict, + output_file: str, + ) -> dict: + """Translate one DataFrame of VCF records, writing protein sequences to output_file. - Returns the path to the output FASTA file. + Returns a stats dict with per-category counts. """ - logger.info("Starting ClinVar pipeline") - - # 1. Load chromosome mapper - chrom_mapper = ChromosomeMapper.from_assembly_report(self._assembly_report) - - # 2. Parse GTF - db = self._parse_gtf(self._gtf_file) - - # 3. Load transcript FASTA - transcripts_dict = SeqIO.index( - self._fasta_file, - "fasta", - key_function=lambda h: h.split("|")[0].split(" ")[0], - ) - # Build mapping without version for fallback lookup - transcript_id_mapping = { - k.split(".")[0]: k for k in transcripts_dict.keys() - } - - # 4. Read VCF once into DataFrame - _metadata, vcf_df = self._read_vcf(self._vcf_file) - - # 5. Find overlapping transcripts via BedTools (from DataFrame) - overlap_map = self._build_overlap_map(vcf_df, self._gtf_file, chrom_mapper) - logger.info("Found %d variants with transcript overlaps", len(overlap_map)) - stats = { "variants_processed": 0, "variants_filtered_clnsig": 0, @@ -405,13 +563,24 @@ def run(self) -> str: "variants_translated": 0, } - processed_pairs: set[str] = set() + processed_pairs: set = set() + feature_cache = _FeatureCache() + biotype_cache: dict = {} + missing_transcripts: set = set() - with open(self._output_file, "w", encoding="utf-8") as prots_fn: - for _, record in vcf_df.iterrows(): + with open(output_file, "w", encoding="utf-8") as prots_fn: + for record in vcf_records: stats["variants_processed"] += 1 + if stats["variants_processed"] % 1000 == 0: + logger.info( + "Progress: %d variants processed | %d filtered (CLNSIG) | " + "%d filtered (MC) | %d translated", + stats["variants_processed"], + stats["variants_filtered_clnsig"], + stats["variants_filtered_mc"], + stats["variants_translated"], + ) - # --- Validate alleles --- ref = str(record.REF) if any(c not in "ACGT" for c in ref): continue @@ -423,30 +592,26 @@ def run(self) -> str: if not alts: continue - # --- CLNSIG filter --- info = str(record.INFO) clnsig = self._get_info_field(info, "CLNSIG") if not self.passes_clnsig_filter(clnsig, self._clnsig_exclude): stats["variants_filtered_clnsig"] += 1 continue - # --- MC consequence filter --- mc_field = self._get_info_field(info, "MC") if not self.passes_mc_filter(mc_field, self._include_consequences): stats["variants_filtered_mc"] += 1 continue - # --- Parse gene symbol and CLNSIG for description --- gene_symbol, _ = self.parse_geneinfo( self._get_info_field(info, "GENEINFO") ) - desc_str = f"{clnsig}|{gene_symbol}" if gene_symbol else clnsig + sig_label = clnsig if clnsig else "not_provided" + desc_str = f"{sig_label}|{gene_symbol}" if gene_symbol else sig_label - # --- Find overlapping transcripts --- chrom = str(record.CHROM) pos = int(record.POS) - # Translation table (mito vs standard) trans_table = self._translation_table chrom_bare = chrom.lstrip("chr").upper() if chrom_bare in ("M", "MT"): @@ -465,23 +630,30 @@ def run(self) -> str: continue processed_pairs.add(pair_key) - # Resolve transcript in FASTA tid = transcript_id if tid not in transcripts_dict: tid = transcript_id_mapping.get( transcript_id.split(".")[0], transcript_id ) + + if tid in missing_transcripts: + continue + try: fasta_record = transcripts_dict[tid] except KeyError: + missing_transcripts.add(tid) logger.debug( "Transcript %s not found in FASTA", transcript_id ) continue - # --- Biotype filter --- if self._include_biotypes != ["all"]: - biotype = self._get_transcript_biotype(db, tid) + if tid not in biotype_cache: + biotype_cache[tid] = self._get_transcript_biotype( + db, tid + ) + biotype = biotype_cache[tid] if biotype and biotype not in self._include_biotypes: stats["transcripts_filtered_biotype"] += 1 continue @@ -489,8 +661,7 @@ def run(self) -> str: ref_seq = fasta_record.seq desc = str(fasta_record.description) - # Determine CDS info and feature types - cds_info: list[int] = [] + cds_info: list = [] feature_types = ["exon"] num_orfs = 3 if "CDS=" in desc: @@ -512,19 +683,19 @@ def run(self) -> str: desc, ) - # Get features from GTF - feat_chrom, strand, features_info = self._get_features( - db, tid, feature_types - ) + cache_key = (tid, tuple(feature_types)) + cached = feature_cache.get(cache_key) + if cached is None: + cached = self._get_features(db, tid, feature_types) + feature_cache.put(cache_key, cached) + feat_chrom, strand, features_info = cached if feat_chrom is None: continue - # Check overlap at feature level var_end = pos + len(ref) - 1 if not check_overlap(pos, var_end, features_info): continue - # Apply variant coding_ref_seq, coding_alt_seq = get_altseq( ref_seq, Seq(ref), @@ -538,7 +709,6 @@ def run(self) -> str: if coding_alt_seq == "": continue - # Translate ref_orfs, alt_orfs = get_orfs_vcf( coding_ref_seq, coding_alt_seq, @@ -546,7 +716,6 @@ def run(self) -> str: num_orfs, ) - # Build sequence ID record_id = "" if record.ID and str(record.ID) != ".": record_id = str(record.ID) @@ -577,17 +746,165 @@ def run(self) -> str: prots_fn=prots_fn, ) - logger.info("ClinVar pipeline complete. Stats: %s", stats) + return stats + + # ------------------------------------------------------------------ + # Main pipeline + # ------------------------------------------------------------------ + + def run(self, workers: Optional[int] = None) -> str: + """Execute the ClinVar VCF-to-protein pipeline. + + Parameters + ---------- + workers : int, optional + Number of parallel worker processes. Defaults to the ``workers`` + key in the config file (default 1). Pass ``1`` to force + sequential execution regardless of config. + + Returns the path to the output FASTA file. + """ + if workers is None: + workers = self._workers + + logger.info("Starting ClinVar pipeline (workers=%d)", workers) + + chrom_mapper = ChromosomeMapper.from_assembly_report(self._assembly_report) + + logger.info("Loading GFF annotation database from %s", self._gtf_file) + t0 = time.perf_counter() + db = self._parse_gtf(self._gtf_file) + logger.info("GFF annotation database ready (%.1f s)", time.perf_counter() - t0) + + logger.info("Indexing transcript FASTA (%s)", self._fasta_file) + t0 = time.perf_counter() + if workers > 1: + # Build a persistent SQLite index so all worker processes can open + # the same file simultaneously without racing on an in-memory dict. + idx_path = _ensure_fasta_index(self._fasta_file) + transcripts_dict = SeqIO.index_db( + idx_path, [self._fasta_file], "fasta", key_function=_fasta_key_fn + ) + else: + transcripts_dict = SeqIO.index( + self._fasta_file, "fasta", key_function=_fasta_key_fn + ) + transcript_id_mapping = {k.split(".")[0]: k for k in transcripts_dict.keys()} + logger.info( + "FASTA indexed: %d transcripts (%.1f s)", + len(transcripts_dict), + time.perf_counter() - t0, + ) + + _metadata, vcf_records = self._read_vcf(self._vcf_file) + + logger.info("Building BedTools transcript overlap map ...") + t0 = time.perf_counter() + overlap_map = self._build_overlap_map(vcf_records, self._gtf_file, chrom_mapper) + logger.info( + "Found %d variants with transcript overlaps (%.1f s)", + len(overlap_map), + time.perf_counter() - t0, + ) + + # ---- Sequential path ---- + if workers <= 1: + stats = self._process_batch( + vcf_records, overlap_map, db, transcripts_dict, + transcript_id_mapping, self._output_file, + ) + logger.info("ClinVar pipeline complete. Stats: %s", stats) + return self._output_file + + # ---- Parallel path ---- + with tempfile.TemporaryDirectory(prefix="pgatk_clinvar_") as tmpdir: + logger.info( + "Splitting VCF into batches (batch_size=%d) ...", _CLINVAR_BATCH_SIZE + ) + batch_paths = _split_vcf_into_batches(self._vcf_file, tmpdir) + logger.info("Created %d batch(es)", len(batch_paths)) + + if len(batch_paths) <= 1: + # Entire VCF fits in one batch — skip pool overhead. + stats = self._process_batch( + vcf_records, overlap_map, db, transcripts_dict, + transcript_id_mapping, self._output_file, + ) + logger.info("ClinVar pipeline complete. Stats: %s", stats) + return self._output_file + + n_workers = min(workers, len(batch_paths)) + tasks = [ + (bp, os.path.join(tmpdir, f"out_{i:04d}.fa")) + for i, bp in enumerate(batch_paths) + ] + + logger.info( + "Dispatching %d batch(es) across %d worker(s)", + len(batch_paths), + n_workers, + ) + + # overlap_map is passed as an initarg — pickled once per worker + # at pool startup, not once per task. + with multiprocessing.get_context("spawn").Pool( + n_workers, + initializer=_clinvar_worker_init, + initargs=( + self._vcf_file, + self._gtf_file, + self._fasta_file, + self._assembly_report, + self._output_file, + self._config_file, + overlap_map, + ), + ) as pool: + all_stats = pool.starmap(_clinvar_worker, tasks) + + # Concatenate per-batch output FASTAs into the final file. + with open(self._output_file, "wb") as out: + for _, batch_out in tasks: + if os.path.exists(batch_out): + with open(batch_out, "rb") as f: + shutil.copyfileobj(f, out) + + # Aggregate per-batch stats and emit a single summary. + combined: dict = {} + for s in all_stats: + for k, v in s.items(): + combined[k] = combined.get(k, 0) + v + logger.info( + "ClinVar pipeline complete (%d batches). Stats: %s", + len(all_stats), + combined, + ) return self._output_file def _extract_transcript_id(attrs: str) -> str: - """Extract transcript_id value from a GTF attributes string.""" + """Extract transcript_id from a GTF attribute string or GFF3 Parent field. + + Handles three formats: + - GTF: ``transcript_id "NM_000001.1"`` (space-quoted) + - GFF3: ``transcript_id=NM_000001.1`` (key=value) + - GFF3 fallback: ``Parent=rna-NM_000001.1`` (strips ``rna-`` prefix) + """ + parent_val = "" for part in attrs.split(";"): part = part.strip() - if part.startswith("transcript_id"): - # transcript_id "NM_000001.1" - value = part.split(" ", 1) - if len(value) > 1: - return value[1].strip().strip('"') + if not part: + continue + # GTF: transcript_id "NM_000001.1" + if part.startswith("transcript_id "): + return part.split(" ", 1)[1].strip().strip('"') + # GFF3: transcript_id=NM_000001.1 + if part.startswith("transcript_id="): + return part[len("transcript_id="):].strip() + # Save GFF3 Parent for fallback + if part.startswith("Parent=") and not parent_val: + parent_val = part[len("Parent="):] + # GFF3 CDS features reference their transcript via Parent=rna-NM_000001.1 + if parent_val: + return parent_val.split(",")[0].removeprefix("rna-").strip() return "" diff --git a/pgatk/clinvar/data_downloader.py b/pgatk/clinvar/data_downloader.py index 0e4261ff..39414d08 100644 --- a/pgatk/clinvar/data_downloader.py +++ b/pgatk/clinvar/data_downloader.py @@ -4,32 +4,95 @@ """ from __future__ import annotations +import gzip import logging import os +import shutil +import subprocess # nosec B404 - used only with hardcoded gffread argv lists, never shell=True from pgatk.toolbox.general import download_file, check_create_folders + +def _resolve_genome_fna(genome_fna: str) -> tuple[str, str | None]: + """Return (path_for_gffread, temp_path_to_clean_up). + + gffread requires random-access into the genome FASTA. Regular .gz does not + support seeks, so if the caller passes a .gz path we reuse an already- + decompressed sibling file or decompress to one on the fly. + Decompression is written to a sibling ``.tmp`` file and atomically renamed + so an interrupted run cannot leave behind a partial / corrupt FASTA that + later invocations would silently reuse. + Returns the second element only when *we* created the file (caller must remove it). + """ + if not genome_fna.endswith(".gz"): + return genome_fna, None + plain = genome_fna[:-3] + if os.path.exists(plain): + return plain, None + logger.info("Decompressing genome FASTA for gffread (random-access required): %s", genome_fna) + tmp = plain + ".tmp" + try: + with gzip.open(genome_fna, "rb") as fi, open(tmp, "wb") as fo: + shutil.copyfileobj(fi, fo) + os.replace(tmp, plain) + except BaseException: + # On any failure (including KeyboardInterrupt) remove the partial temp + # file so the next run re-decompresses from scratch. + if os.path.exists(tmp): + try: + os.remove(tmp) + except OSError: + pass + raise + return plain, plain + logger = logging.getLogger(__name__) -_DEFAULT_REFSEQ_BASE = ( - "https://ftp.ncbi.nlm.nih.gov/refseq/H_sapiens/annotation/" - "GRCh38_latest/refseq_identifiers/" -) -_DEFAULT_CLINVAR_BASE = ( - "https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/" -) - -_REFSEQ_FILES = [ - "GRCh38_latest_genomic.gtf.gz", - "GRCh38_latest_rna.fna.gz", - "GRCh38_latest_assembly_report.txt", -] +_REFSEQ_BASE = { + "GRCh38": ( + "https://ftp.ncbi.nlm.nih.gov/refseq/H_sapiens/annotation/" + "GRCh38_latest/refseq_identifiers/" + ), + "GRCh37": ( + "https://ftp.ncbi.nlm.nih.gov/refseq/H_sapiens/annotation/" + "GRCh37_latest/refseq_identifiers/" + ), +} +_CLINVAR_BASE = { + "GRCh38": "https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/", + "GRCh37": "https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh37/", +} + +# Keep old names for backwards compatibility +_DEFAULT_REFSEQ_BASE = _REFSEQ_BASE["GRCh38"] +_DEFAULT_CLINVAR_BASE = _CLINVAR_BASE["GRCh38"] + +_REFSEQ_FILES = { + "GRCh38": [ + "GRCh38_latest_genomic.fna.gz", + "GRCh38_latest_genomic.gff.gz", + "GRCh38_latest_assembly_report.txt", + ], + "GRCh37": [ + "GRCh37_latest_genomic.fna.gz", + "GRCh37_latest_genomic.gff.gz", + "GRCh37_latest_assembly_report.txt", + ], +} _CLINVAR_FILES = [ "clinvar.vcf.gz", "clinvar.vcf.gz.tbi", ] +def _require_gffread() -> None: + if not shutil.which("gffread"): + raise FileNotFoundError( + "gffread not found in PATH. " + "Install it with: conda install -c bioconda gffread" + ) + + class NcbiDataDownloader: """Download NCBI RefSeq and ClinVar reference data.""" @@ -38,57 +101,101 @@ def __init__( output_dir: str, refseq_base_url: str = _DEFAULT_REFSEQ_BASE, clinvar_base_url: str = _DEFAULT_CLINVAR_BASE, + grch37: bool = False, ) -> None: self._output_dir = output_dir - self._refseq_base = refseq_base_url - self._clinvar_base = clinvar_base_url + self._build = "GRCh37" if grch37 else "GRCh38" + self._refseq_base = _REFSEQ_BASE[self._build] if grch37 else refseq_base_url + self._clinvar_base = _CLINVAR_BASE[self._build] if grch37 else clinvar_base_url def ensure_output_dir(self) -> None: - """Create output directory if it doesn't exist.""" check_create_folders([self._output_dir]) def get_refseq_urls(self) -> list[str]: - """Return list of RefSeq file URLs to download.""" - return [self._refseq_base + f for f in _REFSEQ_FILES] + return [self._refseq_base + f for f in _REFSEQ_FILES[self._build]] def get_clinvar_urls(self) -> list[str]: - """Return list of ClinVar file URLs to download.""" return [self._clinvar_base + f for f in _CLINVAR_FILES] def expected_files(self) -> list[str]: - """Return list of expected local file paths after download.""" - all_files = _REFSEQ_FILES + _CLINVAR_FILES + all_files = _REFSEQ_FILES[self._build] + _CLINVAR_FILES return [os.path.join(self._output_dir, f) for f in all_files] def download_all(self, force: bool = False) -> list[str]: - """Download all required files. Returns list of downloaded file paths. - - :param force: If True, re-download even if files exist. - """ + """Download all required files. Returns list of downloaded file paths.""" self.ensure_output_dir() downloaded = [] all_urls = self.get_refseq_urls() + self.get_clinvar_urls() - all_names = _REFSEQ_FILES + _CLINVAR_FILES + all_names = _REFSEQ_FILES[self._build] + _CLINVAR_FILES + total = len(all_names) - for url, name in zip(all_urls, all_names): + for i, (url, name) in enumerate(zip(all_urls, all_names), 1): local_path = os.path.join(self._output_dir, name) - # download_file extracts .gz and deletes the archive, so also - # check for the extracted path to avoid redundant re-downloads. - extracted_path = local_path.removesuffix(".gz") - - if not force and (os.path.exists(local_path) or - (extracted_path != local_path and os.path.exists(extracted_path))): - existing = local_path if os.path.exists(local_path) else extracted_path - logger.info("File already exists, skipping: %s", existing) - downloaded.append(existing) + + if not force and os.path.exists(local_path): + logger.info("[%d/%d] Already exists, skipping: %s", i, total, os.path.basename(local_path)) + downloaded.append(local_path) continue - logger.info("Downloading %s -> %s", url, local_path) - result = download_file(url, local_path, logger) + logger.info("[%d/%d] Downloading: %s", i, total, name) + result = download_file(url, local_path, logger, progress_prefix=f" [{name}]") if result: + logger.info("[%d/%d] Saved to: %s", i, total, result) downloaded.append(result) else: - logger.error("Failed to download: %s", url) + logger.error("[%d/%d] Failed to download: %s", i, total, url) return downloaded + + @staticmethod + def generate_transcripts(genome_fna: str, gff_file: str, output_fasta: str) -> str: + """Run gffread to produce a transcript FASTA with CDS= coordinate headers. + + Required for ``clinvar-to-proteindb``. The GFF3 (not the GTF) must be + used because only GFF3 carries the explicit ID=/Parent= linkage that + gffread needs to resolve transcript → gene hierarchy. + """ + _require_gffread() + genome_path, _tmp = _resolve_genome_fna(genome_fna) + try: + cmd = ["gffread", "-F", "-w", output_fasta, "-g", genome_path, gff_file] + logger.info("Running: %s", " ".join(cmd)) + subprocess.run(cmd, check=True) # nosec B603 - argv list with hardcoded "gffread" + finally: + if _tmp and os.path.exists(_tmp): + os.remove(_tmp) + logger.info("Transcripts written to %s", output_fasta) + return output_fasta + + @staticmethod + def generate_cds_fasta(genome_fna: str, gff_file: str, output_fasta: str) -> str: + """Extract spliced CDS sequences into a plain FASTA for cbioportal-to-proteindb. + + Uses ``gffread -x`` to write only the coding sequence (ATG → stop codon) + for every annotated mRNA. Record IDs in the output are RefSeq accessions + (e.g. ``NM_001762.3``); the translation code strips the version suffix with + ``split(".")[0]`` → ``NM_001762``, matching the Transcript_ID values + returned by the cBioPortal REST API. + + Parameters + ---------- + genome_fna : str + Path to the decompressed genomic FASTA + (``GRCh38_latest_genomic.fna`` or ``GRCh37_latest_genomic.fna``). + gff_file : str + Path to the decompressed GFF3 annotation file. + output_fasta : str + Output path for the CDS FASTA (e.g. ``refseq_cds.fa``). + """ + _require_gffread() + genome_path, _tmp = _resolve_genome_fna(genome_fna) + try: + cmd = ["gffread", "-x", output_fasta, "-g", genome_path, gff_file] + logger.info("Running: %s", " ".join(cmd)) + subprocess.run(cmd, check=True) # nosec B603 - argv list with hardcoded "gffread" + finally: + if _tmp and os.path.exists(_tmp): + os.remove(_tmp) + logger.info("CDS FASTA written to %s", output_fasta) + return output_fasta diff --git a/pgatk/commands/cbioportal_to_proteindb.py b/pgatk/commands/cbioportal_to_proteindb.py index 64a84e25..190e477b 100644 --- a/pgatk/commands/cbioportal_to_proteindb.py +++ b/pgatk/commands/cbioportal_to_proteindb.py @@ -1,17 +1,18 @@ import logging +import sys import click from pgatk.cgenomes.cgenomes_proteindb import CancerGenomesService from pgatk.config.registry import load_config -log = logging.getLogger(__name__) - @click.command('cbioportal-to-proteindb', short_help='Command to translate cbioportal mutation data into proteindb') @click.option('-c', '--config_file', help='Configuration for cbioportal to proteindb tool') @click.option('-in', '--input_mutation', help='Cbioportal mutation file', required=True) -@click.option('-fa', '--input_cds', help='CDS genes from ENSEMBL database', required=True) +@click.option('-fa', '--input_fasta', + help='Transcript FASTA with CDS= and gene_biotype= headers (from ncbi-downloader --generate-transcripts)', + required=True) @click.option('-out', '--output_db', help='Protein database including all the mutations', required=True) @click.option('-f', '--filter_column', help='Column in the VCF file to be used for filtering or splitting mutations') @click.option('-a', '--accepted_values', @@ -21,9 +22,34 @@ is_flag=True) @click.option('-cl', '--clinical_sample_file', help='File to get tissue type from for the samples in input_mutation file') +@click.option('--include_biotypes', + help='Comma-separated biotypes to include (default: protein_coding). Use "all" to include all biotypes.') +@click.option('--exclude_biotypes', + help='Comma-separated biotypes to exclude (default: none)') +@click.option('--skip_including_all_cds', is_flag=True, default=False, + help='Apply biotype filter to CDS-defined transcripts as well (default: CDS transcripts are always included)') +@click.option('--include_variant_classifications', + help='Comma-separated Variant_Classification values to include (default: all)') +@click.option('--exclude_variant_classifications', + help='Comma-separated Variant_Classification values to exclude (default: Nonsense_Mutation)') +@click.option('--gff', 'gff_file', + help='GFF3/GTF annotation file (from ncbi-downloader) for coordinate-based mutation application ' + 'when HGVSc is absent. Indexed as .db on first use.') +@click.option('-w', '--workers', type=int, default=1, show_default=True, + help='Number of parallel worker processes for the translation phase (default: 1 = sequential).') @click.pass_context -def cbioportal_to_proteindb(ctx, config_file, input_mutation, input_cds, output_db, - clinical_sample_file, filter_column, accepted_values, split_by_filter_column): +def cbioportal_to_proteindb(ctx, config_file, input_mutation, input_fasta, output_db, + clinical_sample_file, filter_column, accepted_values, split_by_filter_column, + include_biotypes, exclude_biotypes, skip_including_all_cds, + include_variant_classifications, exclude_variant_classifications, gff_file, + workers): + + logging.basicConfig( + level=logging.INFO, + stream=sys.stderr, + format="%(asctime)s [%(levelname)s] %(message)s", + datefmt="%H:%M:%S", + ) config_data = load_config("cbioportal", config_file) @@ -32,8 +58,8 @@ def cbioportal_to_proteindb(ctx, config_file, input_mutation, input_cds, output_ if input_mutation is not None: pipeline_arguments[CancerGenomesService.CONFIG_CANCER_GENOMES_MUTATION_FILE] = input_mutation - if input_cds is not None: - pipeline_arguments[CancerGenomesService.CONFIG_COMPLETE_GENES_FILE] = input_cds + if input_fasta is not None: + pipeline_arguments[CancerGenomesService.CONFIG_COMPLETE_GENES_FILE] = input_fasta if output_db is not None: pipeline_arguments[CancerGenomesService.CONFIG_OUTPUT_FILE] = output_db @@ -52,5 +78,26 @@ def cbioportal_to_proteindb(ctx, config_file, input_mutation, input_cds, output_ if split_by_filter_column is not None: pipeline_arguments[CancerGenomesService.SPLIT_BY_FILTER_COLUMN] = split_by_filter_column + if include_biotypes is not None: + pipeline_arguments[CancerGenomesService.INCLUDE_BIOTYPES] = include_biotypes + + if exclude_biotypes is not None: + pipeline_arguments[CancerGenomesService.EXCLUDE_BIOTYPES] = exclude_biotypes + + if skip_including_all_cds: + pipeline_arguments[CancerGenomesService.SKIP_INCLUDING_ALL_CDS] = True + + if include_variant_classifications is not None: + pipeline_arguments[CancerGenomesService.INCLUDE_VARIANT_CLASSIFICATIONS] = include_variant_classifications + + if exclude_variant_classifications is not None: + pipeline_arguments[CancerGenomesService.EXCLUDE_VARIANT_CLASSIFICATIONS] = exclude_variant_classifications + + if gff_file is not None: + pipeline_arguments[CancerGenomesService.CONFIG_GFF_FILE] = gff_file + + if workers is not None and workers > 1: + pipeline_arguments[CancerGenomesService.WORKERS] = workers + cosmic_to_proteindb_service = CancerGenomesService(config_data, pipeline_arguments) cosmic_to_proteindb_service.cbioportal_to_proteindb() diff --git a/pgatk/commands/clinvar_to_proteindb.py b/pgatk/commands/clinvar_to_proteindb.py index 02b82b66..1924b0ba 100644 --- a/pgatk/commands/clinvar_to_proteindb.py +++ b/pgatk/commands/clinvar_to_proteindb.py @@ -1,29 +1,47 @@ +import logging +import sys + import click from pgatk.clinvar.clinvar_service import ClinVarService -@click.command("clinvar-to-proteindb", short_help="Generate protein database from ClinVar VCF + RefSeq GTF") +@click.command("clinvar-to-proteindb", short_help="Generate protein database from ClinVar VCF + RefSeq GFF3") @click.option("-c", "--config_file", help="Configuration YAML file (optional, uses bundled defaults)") @click.option("-v", "--vcf", required=True, help="ClinVar VCF file path") -@click.option("-g", "--gtf", required=True, help="NCBI RefSeq GTF file path") +@click.option("-g", "--gff", required=True, help="NCBI RefSeq GFF3 annotation file path") @click.option("-f", "--fasta", required=True, help="RefSeq transcript nucleotide FASTA file path") @click.option("-a", "--assembly-report", required=True, help="NCBI assembly report file path") @click.option("-o", "--output", required=True, help="Output protein FASTA file path") +@click.option( + "-w", "--workers", + default=None, + type=int, + help="Number of parallel worker processes (default: value in config, usually 1).", +) @click.pass_context -def clinvar_to_proteindb(ctx, config_file, vcf, gtf, fasta, assembly_report, output): - """Generate a variant protein database from ClinVar VCF and NCBI RefSeq GTF. +def clinvar_to_proteindb(ctx, config_file, vcf, gff, fasta, assembly_report, output, workers): + """Generate a variant protein database from ClinVar VCF and NCBI RefSeq GFF3. This command does NOT require VEP annotations. It uses BedTools interval overlap to find transcripts affected by each ClinVar variant, then applies the variant and translates to protein. + + Use ``ncbi-downloader --generate-transcripts`` to produce the GFF3 annotation + and transcript FASTA required by this command. """ + logging.basicConfig( + level=logging.INFO, + stream=sys.stderr, + format="%(asctime)s [%(levelname)s] %(message)s", + datefmt="%H:%M:%S", + ) service = ClinVarService( vcf_file=vcf, - gtf_file=gtf, + gff_file=gff, fasta_file=fasta, assembly_report=assembly_report, output_file=output, config_file=config_file, ) - service.run() + service.run(workers=workers) diff --git a/pgatk/commands/cosmic_downloader.py b/pgatk/commands/cosmic_downloader.py index 56960971..fe352162 100644 --- a/pgatk/commands/cosmic_downloader.py +++ b/pgatk/commands/cosmic_downloader.py @@ -16,9 +16,19 @@ help="Username for cosmic database -- please if you don't have one register here (https://cancer.sanger.ac.uk/cosmic/register)") @click.option('-p', '--password', help="Password for cosmic database -- please if you don't have one register here (https://cancer.sanger.ac.uk/cosmic/register)") -@click.option("--url_file", help='Add the url to a downloaded file') +@click.option('-P', '--products', multiple=True, + help='COSMIC scripted-download `path=` value to fetch (e.g. ' + 'grch38/cosmic/v103/Cosmic_GenomeScreensMutant_Tsv_v103_GRCh38.tar). ' + 'May be repeated. Overrides the products list in the config file when provided. ' + 'Find available paths at https://cancer.sanger.ac.uk/cosmic/download/cosmic ' + '(open the "Scripted Download" panel for any product).') +@click.option("--url_file", + help='If set, do not download anything. Instead, write a TSV with one row per ' + 'product (`\\t`) so the downloads can be driven ' + 'externally (e.g. wget/curl loop). The api_url is the COSMIC scripted-download ' + 'endpoint URL — fetching it returns JSON containing the actual signed S3 URL.') @click.pass_context -def cosmic_downloader(ctx, config_file, output_directory, username, password, url_file): +def cosmic_downloader(ctx, config_file, output_directory, username, password, products, url_file): config_data = load_config("cosmic", config_file) @@ -31,5 +41,8 @@ def cosmic_downloader(ctx, config_file, output_directory, username, password, ur if password is not None: pipeline_arguments[CosmicDownloadService.CONFIG_COSMIC_FTP_PASSWORD] = password + if products: + pipeline_arguments[CosmicDownloadService.CONFIG_PRODUCTS] = list(products) + cosmic_downloader_service = CosmicDownloadService(config_data, pipeline_arguments) cosmic_downloader_service.download_mutation_file(url_file_name=url_file) diff --git a/pgatk/commands/cosmic_to_proteindb.py b/pgatk/commands/cosmic_to_proteindb.py index 5c24ca4b..b4d0c27e 100644 --- a/pgatk/commands/cosmic_to_proteindb.py +++ b/pgatk/commands/cosmic_to_proteindb.py @@ -22,9 +22,12 @@ @click.option('-s', '--split_by_filter_column', help='Use this flag to generate a proteinDB per group as specified in the filter_column, default is False', is_flag=True) +@click.option('-cl', '--clinical_sample_file', + help='COSMIC sample annotation file used to map ' + 'COSMIC_SAMPLE_ID to the filter column value (e.g. PRIMARY_SITE)') @click.pass_context def cosmic_to_proteindb(ctx, config_file, input_mutation, input_genes, output_db, - filter_column, accepted_values, split_by_filter_column): + filter_column, accepted_values, split_by_filter_column, clinical_sample_file): config_data = load_config("cosmic", config_file) @@ -39,10 +42,13 @@ def cosmic_to_proteindb(ctx, config_file, input_mutation, input_genes, output_db if output_db is not None: pipeline_arguments[CancerGenomesService.CONFIG_OUTPUT_FILE] = output_db + if clinical_sample_file is not None: + pipeline_arguments[CancerGenomesService.CLINICAL_SAMPLE_FILE] = clinical_sample_file + if filter_column is not None: pipeline_arguments[CancerGenomesService.FILTER_COLUMN] = filter_column elif config_data is None: - pipeline_arguments[CancerGenomesService.FILTER_COLUMN] = 'Primary site' + pipeline_arguments[CancerGenomesService.FILTER_COLUMN] = 'PRIMARY_SITE' if accepted_values is not None: pipeline_arguments[CancerGenomesService.ACCEPTED_VALUES] = accepted_values diff --git a/pgatk/commands/ensembl_downloader.py b/pgatk/commands/ensembl_downloader.py index 83adb880..65cc7a58 100644 --- a/pgatk/commands/ensembl_downloader.py +++ b/pgatk/commands/ensembl_downloader.py @@ -1,5 +1,8 @@ import errno +import glob import logging +import os +import subprocess # nosec B404 - referenced only to catch CalledProcessError from gffread import sys import click @@ -27,10 +30,19 @@ help='Ensembl name code to download, it can be use instead of taxonomy (e.g. homo_sapiens)') @click.option('--grch37', is_flag=True, help='Download a previous version GRCh37 of ensembl genomes') @click.option('--url_file', help='Add the url to a downloaded file') +@click.option( + '--generate-transcripts', 'generate_transcripts', + is_flag=True, default=False, + help=( + 'Run gffread after download to generate transcripts.fa with CDS= headers. ' + 'Requires the genome assembly (do not use --skip_dna) and gffread in PATH ' + '(conda install -c bioconda gffread). Has no effect when --skip_gtf is set.' + ), +) @click.pass_context def ensembl_downloader(ctx, config_file, output_directory, taxonomy, folder_prefix_release, skip_gtf, skip_protein, skip_cds, skip_cdna, skip_ncrna, skip_dna, skip_vcf, - ensembl_name, grch37, url_file): + ensembl_name, grch37, url_file, generate_transcripts): """ This tool enables to download from enseml ftp the FASTA and GTF files""" config_data = load_config("ensembl_downloader", config_file) @@ -38,7 +50,6 @@ def ensembl_downloader(ctx, config_file, output_directory, taxonomy, folder_pref if taxonomy is None and ensembl_name is None: raise click.UsageError("Either --taxonomy or --ensembl_name is required.") - # Parse pipelines parameters. pipeline_arguments = {} if output_directory is not None: @@ -84,3 +95,56 @@ def ensembl_downloader(ctx, config_file, output_directory, taxonomy, folder_pref sys.exit(errno.EFAULT) ensembl_download_service.download_database_by_species(url_file) + + if generate_transcripts: + if skip_gtf: + click.echo( + "Warning: --generate-transcripts has no effect when --skip_gtf is set.", + err=True, + ) + else: + out_dir = ensembl_download_service.get_local_path_root_ensembl_repo() + gtf_files = sorted(glob.glob(os.path.join(out_dir, "*.gtf.gz"))) + genome_files = sorted(glob.glob(os.path.join(out_dir, "*.dna_sm.toplevel.fa.gz"))) + + if not genome_files: + click.echo( + f"Error: no genome FASTA (*.dna_sm.toplevel.fa.gz) found in {out_dir}. " + "Re-run without --skip_dna to download the genome assembly.", + err=True, + ) + raise SystemExit(1) + + if not gtf_files: + click.echo(f"Error: no GTF file found in {out_dir}.", err=True) + raise SystemExit(1) + + # Map species+assembly prefix (e.g. "Homo_sapiens.GRCh38") to genome path. + genome_map = {} + for gf in genome_files: + prefix = ".".join(os.path.basename(gf).split(".")[:2]) + genome_map[prefix] = gf + + for gtf_path in gtf_files: + prefix = ".".join(os.path.basename(gtf_path).split(".")[:2]) + genome_fna = genome_map.get(prefix) + if genome_fna is None: + fallback = next(iter(genome_map.values())) + click.echo( + f"Warning: no genome with prefix '{prefix}' found " + f"(available: {sorted(genome_map)}); " + f"falling back to {os.path.basename(fallback)}.", + err=True, + ) + genome_fna = fallback + output_fasta = os.path.join( + out_dir, + "transcripts.fa" if len(gtf_files) == 1 else f"{prefix}_transcripts.fa", + ) + try: + click.echo(f"Running gffread to generate {os.path.basename(output_fasta)} ...") + EnsemblDataDownloadService.generate_transcripts(genome_fna, gtf_path, output_fasta) + click.echo(f"Transcripts written to {output_fasta}") + except (FileNotFoundError, subprocess.CalledProcessError) as exc: + click.echo(f"Error: {exc}", err=True) + raise SystemExit(1) diff --git a/pgatk/commands/gencode_downloader.py b/pgatk/commands/gencode_downloader.py new file mode 100644 index 00000000..f031fb56 --- /dev/null +++ b/pgatk/commands/gencode_downloader.py @@ -0,0 +1,71 @@ +import os +import subprocess # nosec B404 - imported only to catch CalledProcessError from gffread + +import click + +from pgatk.gnomad.data_downloader import GencodeDownloader + + +@click.command("gencode-downloader", short_help="Download GENCODE GTF and genome FASTA") +@click.option("-o", "--output-dir", required=True, help="Output directory for downloaded files") +@click.option( + "--release", + default=44, + show_default=True, + type=int, + help="GENCODE release number (e.g. 44 → gencode.v44.*).", +) +@click.option("--force", is_flag=True, default=False, help="Re-download files even if they exist") +@click.option( + "--generate-transcripts", + "generate_transcripts", + is_flag=True, + default=False, + help=( + "Run gffread after download to generate transcripts.fa with CDS= headers. " + "Required for vcf-to-proteindb (gnomAD). Requires gffread in PATH " + "(conda install -c bioconda gffread)." + ), +) +@click.pass_context +def gencode_downloader(ctx, output_dir, release, force, generate_transcripts): + """Download GENCODE human GTF annotation and primary-assembly genome FASTA. + + Downloads two files from the EBI GENCODE FTP: + + \b + gencode.v.annotation.gtf (annotation) + GRCh38.primary_assembly.genome.fa (genomic DNA) + + Use --generate-transcripts to run gffread and produce transcripts.fa with + CDS= coordinate headers. This file is required by vcf-to-proteindb + (--input_fasta) when processing gnomAD VCFs. Without it the pipeline + falls back to 3-frame exon translation, which is incorrect for transcripts + with a 5' UTR. + + \b + Example — download only: + pgatk gencode-downloader -o gencode_data --release 44 + + \b + Example — download + generate transcripts: + pgatk gencode-downloader -o gencode_data --release 44 --generate-transcripts + """ + downloader = GencodeDownloader(output_dir=output_dir, release=release) + click.echo(f"Downloading GENCODE release {release} to {output_dir} ...") + downloaded = downloader.download_all(force=force) + click.echo(f"Downloaded {len(downloaded)} file(s):") + for path in downloaded: + click.echo(f" {path}") + + if generate_transcripts: + genome_fna = os.path.join(output_dir, "GRCh38.primary_assembly.genome.fa.gz") + gtf_file = os.path.join(output_dir, f"gencode.v{release}.annotation.gtf.gz") + output_fasta = os.path.join(output_dir, "transcripts.fa") + try: + click.echo("Running gffread to generate transcripts.fa with CDS= headers ...") + GencodeDownloader.generate_transcripts(genome_fna, gtf_file, output_fasta) + click.echo(f"Transcripts written to {output_fasta}") + except (FileNotFoundError, subprocess.CalledProcessError) as exc: + click.echo(f"Error: {exc}", err=True) + raise SystemExit(1) diff --git a/pgatk/commands/gnomad_vcf_downloader.py b/pgatk/commands/gnomad_vcf_downloader.py new file mode 100644 index 00000000..1b7a7462 --- /dev/null +++ b/pgatk/commands/gnomad_vcf_downloader.py @@ -0,0 +1,79 @@ +import click + +from pgatk.gnomad.data_downloader import GnomadVcfDownloader, ALL_CHROMOSOMES + + +@click.command("gnomad-vcf-downloader", short_help="Download gnomAD per-chromosome VCF files in parallel") +@click.option("-o", "--output-dir", required=True, help="Output directory for downloaded files") +@click.option( + "--version", + default="3.1.2", + show_default=True, + help="gnomAD release version (e.g. 3.1.2 for genomes, 4.1.1 for exomes).", +) +@click.option( + "--dataset", + default="genomes", + show_default=True, + type=click.Choice(["genomes", "exomes"], case_sensitive=False), + help="gnomAD dataset type. Use 'genomes' for v3.x and 'exomes' for v4.x.", +) +@click.option( + "--chromosomes", + default=None, + help=( + "Comma-separated chromosome list (e.g. chr1,chr22,chrX). " + "Defaults to all autosomes + chrX + chrY." + ), +) +@click.option( + "--workers", + default=4, + show_default=True, + type=int, + help="Number of parallel download threads.", +) +@click.option("--force", is_flag=True, default=False, help="Re-download files even if they exist") +@click.pass_context +def gnomad_vcf_downloader(ctx, output_dir, version, dataset, chromosomes, workers, force): + """Download gnomAD per-chromosome VCF (BGZF) and tabix index files in parallel. + + Downloads one .vcf.bgz + .vcf.bgz.tbi pair per chromosome from the + gnomAD Google Cloud Storage bucket. By default all 24 chromosomes are + fetched concurrently using --workers threads. + + \b + Example — all chromosomes (genomes, v3.1.2): + pgatk gnomad-vcf-downloader -o gnomad_data --version 3.1.2 --dataset genomes --workers 8 + + \b + Example — single chromosome: + pgatk gnomad-vcf-downloader -o gnomad_data --chromosomes chr22 + """ + chrom_list = ( + [c.strip() for c in chromosomes.split(",") if c.strip()] + if chromosomes + else ALL_CHROMOSOMES + ) + + n_files = len(chrom_list) * 2 # VCF + TBI per chromosome + click.echo( + f"Downloading gnomAD v{version} — {len(chrom_list)} chromosome(s), " + f"{n_files} files, {workers} parallel thread(s) ..." + ) + + completed_count = [0] + + def _progress(completed, total, name): + completed_count[0] = completed + click.echo(f" [{completed}/{total}] {name}", err=False) + + downloader = GnomadVcfDownloader( + output_dir=output_dir, + version=version, + dataset=dataset, + chromosomes=chrom_list, + workers=workers, + ) + downloaded = downloader.download_all(force=force, progress_callback=_progress) + click.echo(f"Done. {len(downloaded)}/{n_files} file(s) ready in {output_dir}") diff --git a/pgatk/commands/ncbi_downloader.py b/pgatk/commands/ncbi_downloader.py index ad83b769..cf6659e9 100644 --- a/pgatk/commands/ncbi_downloader.py +++ b/pgatk/commands/ncbi_downloader.py @@ -1,3 +1,7 @@ +import logging +import os +import sys + import click from pgatk.clinvar.data_downloader import NcbiDataDownloader @@ -8,29 +12,92 @@ @click.option("-c", "--config_file", help="Configuration YAML file (optional)") @click.option("-o", "--output-dir", required=True, help="Output directory for downloaded files") @click.option("--force", is_flag=True, default=False, help="Re-download files even if they exist") +@click.option( + "--grch37", + is_flag=True, + default=False, + help="Download GRCh37 files instead of the default GRCh38.", +) +@click.option( + "--generate-transcripts", + "generate_transcripts", + is_flag=True, + default=False, + help=( + "Run gffread after download to extract transcript sequences with CDS= " + "coordinate headers (required for clinvar-to-proteindb). Requires gffread " + "in PATH (conda install -c bioconda gffread)." + ), +) +@click.option( + "--generate-cds", + "generate_cds", + is_flag=True, + default=False, + help=( + "Run gffread after download to extract CDS-only sequences into refseq_cds.fa " + "(required for cbioportal-to-proteindb with RefSeq transcript IDs). " + "Requires gffread in PATH (conda install -c bioconda gffread)." + ), +) @click.pass_context -def ncbi_downloader(ctx, config_file, output_dir, force): - """Download NCBI RefSeq GTF, protein FASTA, assembly report, and ClinVar VCF. +def ncbi_downloader(ctx, config_file, output_dir, force, grch37, generate_transcripts, generate_cds): + """Download NCBI RefSeq GFF3 annotation, genomic FASTA, assembly report, and ClinVar VCF. + + Supports both GRCh38 (default) and GRCh37 (--grch37). Existing files are + skipped unless --force is used. + + \b + For clinvar-to-proteindb: + --generate-transcripts produces transcripts.fa with CDS= headers - Files are downloaded to the specified output directory. Existing files - are skipped unless --force is used. + \b + For cbioportal-to-proteindb (RefSeq transcript IDs from the cBioPortal API): + --generate-cds produces refseq_cds.fa with spliced CDS sequences """ + logging.basicConfig( + level=logging.INFO, + stream=sys.stderr, + format="%(asctime)s [%(levelname)s] %(message)s", + datefmt="%H:%M:%S", + ) + config = load_config("clinvar", config_file) clinvar_cfg = config.get("clinvar_translation", {}) - refseq_base = clinvar_cfg.get( - "ncbi_refseq_ftp", - "https://ftp.ncbi.nlm.nih.gov/refseq/H_sapiens/annotation/GRCh38_latest/refseq_identifiers/", - ) - clinvar_base = clinvar_cfg.get( - "clinvar_ftp", - "https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/", - ) + refseq_base = clinvar_cfg.get("ncbi_refseq_ftp", None) + clinvar_base = clinvar_cfg.get("clinvar_ftp", None) downloader = NcbiDataDownloader( output_dir=output_dir, - refseq_base_url=refseq_base, - clinvar_base_url=clinvar_base, + **({"refseq_base_url": refseq_base} if refseq_base and not grch37 else {}), + **({"clinvar_base_url": clinvar_base} if clinvar_base and not grch37 else {}), + grch37=grch37, ) downloaded = downloader.download_all(force=force) click.echo(f"Downloaded {len(downloaded)} files to {output_dir}") + + build = "GRCh37" if grch37 else "GRCh38" + prefix = f"{build}_latest_genomic" + genome_fna = os.path.join(output_dir, f"{prefix}.fna.gz") + gff_file = os.path.join(output_dir, f"{prefix}.gff.gz") + + if generate_transcripts: + output_transcripts = os.path.join(output_dir, "transcripts.fa") + try: + click.echo(f"Running gffread to generate transcripts.fa ({build}) ...") + NcbiDataDownloader.generate_transcripts(genome_fna, gff_file, output_transcripts) + click.echo(f"Transcripts written to {output_transcripts}") + except (FileNotFoundError, Exception) as exc: + click.echo(f"Error: {exc}", err=True) + raise SystemExit(1) + + if generate_cds: + output_cds = os.path.join(output_dir, "refseq_cds.fa") + try: + click.echo(f"Running gffread to generate refseq_cds.fa ({build}) ...") + NcbiDataDownloader.generate_cds_fasta(genome_fna, gff_file, output_cds) + click.echo(f"CDS FASTA written to {output_cds}") + except (FileNotFoundError, Exception) as exc: + click.echo(f"Error: {exc}", err=True) + raise SystemExit(1) diff --git a/pgatk/commands/vcf_to_proteindb.py b/pgatk/commands/vcf_to_proteindb.py index da2d474f..0d0b352d 100644 --- a/pgatk/commands/vcf_to_proteindb.py +++ b/pgatk/commands/vcf_to_proteindb.py @@ -38,6 +38,11 @@ help="enabling this option causes or variants to be parsed. By default only variants that have not failed any filters will be processed (FILTER column is PASS, None, .) or if the filters are subset of the accepted filters. (default is False)", is_flag=True) @click.option('--accepted_filters', help="Accepted filters for variant parsing") +@click.option('-w', '--workers', type=int, default=None, + help="Number of worker processes to fan out across. When omitted the " + "value from the config is used (default 1, sequential). The VCF is split " + "into fixed-size variant batches (~50k records each) that may span " + "chromosome boundaries, not per chromosome.") @click.pass_context def vcf_to_proteindb(ctx, config_file, input_fasta, vcf, gene_annotations_gtf, translation_table, mito_translation_table, @@ -45,7 +50,7 @@ def vcf_to_proteindb(ctx, config_file, input_fasta, vcf, gene_annotations_gtf, t af_field, af_threshold, transcript_str, biotype_str, exclude_biotypes, include_biotypes, consequence_str, exclude_consequences, skip_including_all_cds, include_consequences, - ignore_filters, accepted_filters): + ignore_filters, accepted_filters, workers): config_data = load_config("ensembl_config", config_file) @@ -105,5 +110,8 @@ def vcf_to_proteindb(ctx, config_file, input_fasta, vcf, gene_annotations_gtf, t if accepted_filters is not None: pipeline_arguments[EnsemblDataService.ACCEPTED_FILTERS] = accepted_filters + if workers is not None: + pipeline_arguments[EnsemblDataService.WORKERS] = workers + ensembl_data_service = EnsemblDataService(config_data, pipeline_arguments) - ensembl_data_service.vcf_to_proteindb(vcf, input_fasta, gene_annotations_gtf) + ensembl_data_service.vcf_to_proteindb(vcf, input_fasta, gene_annotations_gtf, workers=workers) diff --git a/pgatk/config/cbioportal_config.yaml b/pgatk/config/cbioportal_config.yaml index 1aace6d0..db1298f4 100644 --- a/pgatk/config/cbioportal_config.yaml +++ b/pgatk/config/cbioportal_config.yaml @@ -16,4 +16,11 @@ proteindb: filter_column: 'CANCER_TYPE' accepted_values: "all" split_by_filter_column: False - clinical_sample_file: '' \ No newline at end of file + clinical_sample_file: '' + biotype_str: "gene_biotype" + include_biotypes: "protein_coding" + exclude_biotypes: "" + skip_including_all_cds: false + include_variant_classifications: "all" + exclude_variant_classifications: "Nonsense_Mutation" + translation_table: 1 \ No newline at end of file diff --git a/pgatk/config/clinvar_config.yaml b/pgatk/config/clinvar_config.yaml index 25283d61..94335154 100644 --- a/pgatk/config/clinvar_config.yaml +++ b/pgatk/config/clinvar_config.yaml @@ -5,6 +5,7 @@ clinvar_translation: proteindb_output_file: "clinvar-peptide-database.fa" report_ref_seq: false num_orfs: 1 + workers: 1 # ClinVar-specific filtering clinical_significance_exclude: diff --git a/pgatk/config/cosmic_config.yaml b/pgatk/config/cosmic_config.yaml index 6b6da9b6..0555af5b 100644 --- a/pgatk/config/cosmic_config.yaml +++ b/pgatk/config/cosmic_config.yaml @@ -2,14 +2,32 @@ cosmic_data: output_directory: database_cosmic cosmic_server: cosmic_ftp: https://cancer.sanger.ac.uk - mutations_url: cosmic/file_download/GRCh38/cosmic/v94 - all_cds_genes_file: All_COSMIC_Genes.fasta.gz - mutations_file: CosmicMutantExport.tsv.gz - mutations_cellline_url: cosmic/file_download/GRCh38/cell_lines/v94 - mutations_cellline_file: CosmicCLP_MutantExport.tsv.gz - all_celllines_genes_file: All_CellLines_Genes.fasta.gz + api_endpoint: api/mono/products/v1/downloads/scripted + bucket: downloads cosmic_user: '' cosmic_password: '' + # List of COSMIC scripted-download paths to fetch. Each entry is the `path=` + # value from the curl command shown on the COSMIC UI's "Scripted Download" panel + # for a product (https://cancer.sanger.ac.uk/cosmic/download/cosmic). + # + # Path format: /// + # - is lowercase (`grch37`, `grch38`) + # - is `cosmic` for the main COSMIC project, `cell_lines` for the + # Cell Lines Project (other projects: `cancer_mutation_census`, `actionability`) + # - is the release (`v103`, etc.) + # - is the exact .tar archive name shown in the UI + # + # Add or remove entries to change what gets downloaded. Defaults below cover the + # three files the cosmic-to-proteindb pipeline expects (mutations TSV + gene FASTA + # for the main COSMIC project, plus cell-line mutations TSV). + products: + - grch38/cosmic/v103/Cosmic_GenomeScreensMutant_Tsv_v103_GRCh38.tar + - grch38/cosmic/v103/Cosmic_CompleteTargetedScreensMutant_Tsv_v103_GRCh38.tar + - grch38/cosmic/v103/Cosmic_Genes_Fasta_v103_GRCh38.tar + - grch38/cosmic/v103/Cosmic_Transcripts_Tsv_v103_GRCh38.tar + - grch38/cell_lines/v103/CellLinesProject_GenomeScreensMutant_Tsv_v103_GRCh38.tar + - grch38/cell_lines/v103/CellLinesProject_CompleteCNA_Tsv_v103_GRCh38.tar + - grch38/cosmic/v103/Cosmic_Classification_Tsv_v103_GRCh38.tar logger: formatters: DEBUG: "%(asctime)s [%(levelname)7s][%(name)48s][%(module)32s, %(lineno)4s] %(message)s" @@ -17,7 +35,7 @@ cosmic_data: loglevel: DEBUG proteindb: filter_info: - filter_column: 'Primary site' + filter_column: 'PRIMARY_SITE' accepted_values: "all" split_by_filter_column: False clinical_sample_file: '' diff --git a/pgatk/config/ensembl_config.yaml b/pgatk/config/ensembl_config.yaml index 1838c7c8..ac679ed0 100644 --- a/pgatk/config/ensembl_config.yaml +++ b/pgatk/config/ensembl_config.yaml @@ -11,7 +11,7 @@ ensembl_translation: exclude_biotypes: '' exclude_consequences: 'downstream_gene_variant, upstream_gene_variant, intergenic_variant, intron_variant, synonymous_variant, regulatory_region_variant' skip_including_all_cds: False - include_biotypes: 'protein_coding,polymorphic_pseudogene,non_stop_decay,nonsense_mediated_decay,IG_C_gene,IG_D_gene,IG_J_gene,IG_V_gene,TR_C_gene,TR_D_gene,TR_J_gene,TR_V_gene,TEC,mRNA' + include_biotypes: 'IG_C_gene,IG_D_gene,IG_J_gene,IG_V_gene,nonsense_mediated_decay,non_stop_decay,protein_coding,protein_coding_LoF,TR_C_gene,TR_D_gene,TR_J_gene,TR_V_gene' include_consequences: 'all' biotype_str: transcript_biotype transcript_description_sep: ';' diff --git a/pgatk/db/digest_mutant_protein.py b/pgatk/db/digest_mutant_protein.py index 7b492014..f1cd74e1 100644 --- a/pgatk/db/digest_mutant_protein.py +++ b/pgatk/db/digest_mutant_protein.py @@ -18,7 +18,7 @@ def trypsin_cleavage(proseq: str, miss_cleavage: int): except IndexError: pass - if aa in ['K', 'R'] and next_aa != 'P': # for trypsin peptides + if aa in ['K', 'R'] and next_aa != 'P': if len(peptide) > 0: peptides.append(peptide) peptide = '' @@ -63,7 +63,6 @@ def digest_mutant_proteins( :param max_length: Maximum peptide length to retain (default: 40). :param missed_cleavages: Number of missed cleavages for trypsin digestion (default: 0). """ - # Build canonical peptidome from reference FASTA handle1 = SeqIO.parse(fasta_file, 'fasta') peptidome = {} @@ -76,9 +75,7 @@ def digest_mutant_proteins( peptidome[peptide.replace("I", "L")] = 1 log.info("Known peptides number: %d", len(peptidome)) - handle1.close() - # Parse mutant protein input files filelist = input_file.split(",") handle_list = [] for f in filelist: @@ -98,8 +95,8 @@ def digest_mutant_proteins( if peptide1 not in peptidome: des_list = descrip.split(":") des_list[0] = header_prefix - mut_type = des_list[-1] - snp = des_list[-2] + mut_type = des_list[-1] if len(des_list) >= 1 else "" + snp = des_list[-2] if len(des_list) >= 2 else "" if "Missense" in mut_type: try: mut_pos = int(re.findall(r'\d+', snp)[0]) @@ -114,7 +111,6 @@ def digest_mutant_proteins( var_peptidome[peptide] = [new_description] else: var_peptidome[peptide].append(new_description) - h.close() log.info("File processing done") log.info("Mutant peptide numbers: %d", len(var_peptidome)) diff --git a/pgatk/db/map_peptide2genome.py b/pgatk/db/map_peptide2genome.py index a09b1196..be70e01b 100644 --- a/pgatk/db/map_peptide2genome.py +++ b/pgatk/db/map_peptide2genome.py @@ -87,20 +87,22 @@ def parse_gtf(infile): dic = {} with open(infile, "r", encoding='utf-8') as infile_object: for line in infile_object: - if line[0] != "#": # skip lines commented out - row = line.strip().split("\t") - if row[2] == "CDS": - attri_list = row[8].split(";") - transID = "" - exon = EXON(start=int(row[3]), end=int(row[4]), chromosome=row[0], strand=row[6]) - for attri in attri_list: - if "transcript_id" in attri: - transID = attri.strip().replace("transcript_id ", "").replace('\"', "") - - if transID not in dic: - dic[transID] = [exon] - else: - dic[transID].append(exon) + # Skip blank lines first — `line[0]` on an empty line raises IndexError. + if not line.strip() or line[0] == "#": + continue + row = line.strip().split("\t") + if len(row) > 2 and row[2] == "CDS": + attri_list = row[8].split(";") + transID = "" + exon = EXON(start=int(row[3]), end=int(row[4]), chromosome=row[0], strand=row[6]) + for attri in attri_list: + if "transcript_id" in attri: + transID = attri.strip().replace("transcript_id ", "").replace('\"', "") + + if transID not in dic: + dic[transID] = [exon] + else: + dic[transID].append(exon) return dic @@ -153,7 +155,6 @@ def map_peptides_to_genome( pep_dic = {} with open(input_file, 'r', encoding='utf-8') as input_stream: - # peptide table with two columns, peptide sequence in first column, protein ID in second column input_stream.readline() for line in input_stream: row = line.strip().split("\t") @@ -188,7 +189,6 @@ def map_peptides_to_genome( exons, pep_trans_start, pep_trans_end ) - # handle exceptions if pep_chr_start > pep_chr_end: non_mapped_pep += 1 continue diff --git a/pgatk/ensembl/data_downloader.py b/pgatk/ensembl/data_downloader.py index 1ad48128..45dd7d88 100644 --- a/pgatk/ensembl/data_downloader.py +++ b/pgatk/ensembl/data_downloader.py @@ -6,9 +6,13 @@ 2. Given a species ID, collect its GTF data, with the option of decompressing it or not. """ -# App imports from json import loads +import gzip +import os import re +import shutil +import subprocess # nosec B404 - used only with hardcoded gffread argv lists, never shell=True + from pgatk.toolbox.general import ParameterConfiguration, check_create_folders, download_file from pgatk.toolbox.rest import call_api @@ -432,7 +436,6 @@ def get_vcf_files(self, species: dict, url_file=None) -> list: file_name=self.get_local_path_root_ensembl_repo() + '/' + file_name, log=self.get_logger(), url_file=url_file) if downloaded_file is not None: - # if chr1 is downloaded then try all others files.append(downloaded_file) for chrN in range(2, 23): # chr2-22 file_name = '{}_incl_consequences-chr{}.vcf.gz'.format(species['name'], chrN) @@ -486,6 +489,51 @@ def get_genome_assembly_files(self, species: dict, grch37=False, url_file=None) return files + @staticmethod + def generate_transcripts(genome_fna: str, gtf_file: str, output_fasta: str) -> str: + """Run gffread -F to produce a transcript FASTA with CDS= coordinate headers. + + Raises FileNotFoundError if gffread is not in PATH. + Raises subprocess.CalledProcessError on gffread failure. + """ + if not shutil.which("gffread"): + raise FileNotFoundError( + "gffread not found in PATH. " + "Install it with: conda install -c bioconda gffread" + ) + # gffread requires random-access; decompress .gz to a sibling file when needed. + # The decompression is staged through a ``.tmp`` file and atomically + # renamed so an interrupted run cannot leave a partial sibling that a + # later invocation would silently reuse. + _tmp = None + genome_for_gffread = genome_fna + if genome_fna.endswith(".gz"): + plain = genome_fna[:-3] + if os.path.exists(plain): + genome_for_gffread = plain + else: + tmp_path = plain + ".tmp" + try: + with gzip.open(genome_fna, "rb") as fi, open(tmp_path, "wb") as fo: + shutil.copyfileobj(fi, fo) + os.replace(tmp_path, plain) + except BaseException: + if os.path.exists(tmp_path): + try: + os.remove(tmp_path) + except OSError: + pass + raise + genome_for_gffread = plain + _tmp = plain + try: + cmd = ["gffread", "-F", "-w", output_fasta, "-g", genome_for_gffread, gtf_file] + subprocess.run(cmd, check=True) # nosec B603 - argv list with hardcoded "gffread" + finally: + if _tmp and os.path.exists(_tmp): + os.remove(_tmp) + return output_fasta + def validate_taxonomies(self): if self._species_list is not None: list_of_taxonomies = self.get_species_from_rest() diff --git a/pgatk/ensembl/ensembl.py b/pgatk/ensembl/ensembl.py index e1d8b7ee..1664a8c8 100644 --- a/pgatk/ensembl/ensembl.py +++ b/pgatk/ensembl/ensembl.py @@ -1,6 +1,8 @@ from __future__ import annotations +import collections import logging +import os import sqlite3 from pathlib import Path from typing import Any, Optional @@ -9,8 +11,8 @@ from Bio import SeqIO from Bio.Seq import Seq from pybedtools import BedTool -import pandas as pd -from pgatk.toolbox.general import ParameterConfiguration +from pgatk.toolbox.general import ParameterConfiguration, open_vcf as _open_vcf +from pgatk.gnomad.data_downloader import check_gencode_version_compatibility from pgatk.toolbox.vcf_utils import ( check_overlap as _check_overlap, get_altseq as _get_altseq, @@ -19,6 +21,139 @@ ) +class _FeatureCache: + + """Per-run memoization of get_features() results, keyed by transcript id. + + Bounded by a soft maxsize to avoid unbounded growth on whole-genome runs. + Defaults to 50000, which comfortably covers human ENSEMBL (~250k transcripts + across all chromosomes; a single chr is ~10-20k). + """ + + def __init__(self, maxsize: int = 50000) -> None: + self._cache: dict[tuple, tuple] = {} + self._maxsize = maxsize + + def get(self, key: tuple) -> Optional[tuple]: + return self._cache.get(key) + + def put(self, key: tuple, value: tuple) -> None: + if len(self._cache) >= self._maxsize: + for k in list(self._cache.keys())[: self._maxsize // 5]: + del self._cache[k] + self._cache[key] = value + + +_MISSING = object() + +# Number of VCF data lines per variant-batch chunk. Tune up for very large +# VCFs (whole-genome) or down when memory per worker is constrained. +_VARIANT_BATCH_SIZE = 50_000 + +# Per-worker state populated once by _worker_init and reused across all tasks +# assigned to that worker process. +_worker_state: dict = {} + + +def _worker_init(default_params: dict, pipeline_args: dict, + input_fasta: str, gtf_path: str, + annotation_indices: Optional[tuple] = None) -> None: + """Pool initializer: open the GTF database and FASTA index once per worker + process rather than once per task, amortising startup cost across all + variant-batch chunks handled by that worker. + annotation_indices is pre-computed by the main process to avoid re-parsing + the VCF ##INFO header for every batch. + """ + svc = EnsemblDataService(default_params, pipeline_args) + db_path = str(Path(gtf_path).with_suffix('.db')) + db = svc.parse_gtf(gtf_path, db_path) + idx_path = _ensure_fasta_index(input_fasta) + transcripts_dict = SeqIO.index_db( + idx_path, [input_fasta], "fasta", key_function=EnsemblDataService.get_key + ) + _worker_state.update({'svc': svc, 'db': db, 'transcripts_dict': transcripts_dict, + 'annotation_indices': annotation_indices}) + + +def _ensure_fasta_index(input_fasta: str) -> str: + """Return the path to a `.idx` SQLite index for input_fasta, building it + if absent or stale. Stale means: the .idx exists but the FASTA's mtime + is newer than the .idx's. The index is keyed by `EnsemblDataService.get_key`. + """ + idx_path = input_fasta + ".idx" + if os.path.exists(idx_path): + if os.path.getmtime(idx_path) >= os.path.getmtime(input_fasta): + return idx_path + try: + os.remove(idx_path) + except OSError: + pass + # Build the index. SeqIO.index_db materialises the SQLite file on disk + # as a side effect; we don't need to keep the returned handle here. + SeqIO.index_db(idx_path, [input_fasta], "fasta", key_function=EnsemblDataService.get_key) + return idx_path + + +def _split_vcf_into_batches(vcf_file: str, output_dir: str, + batch_size: int = _VARIANT_BATCH_SIZE) -> list[str]: + """Stream `vcf_file` once, writing fixed-size variant-count batches into + `output_dir`. + + Each output file is `/batch_.vcf` and contains the full + VCF header followed by at most `batch_size` data lines. Batches may span + chromosome boundaries — the per-variant chromosome check inside + `_vcf_to_proteindb_chunk` handles cross-chromosome records correctly. + + Returns an ordered list of chunk paths. Constant memory — holds exactly + one open file handle at a time. + """ + header: list[str] = [] + batch_paths: list[str] = [] + handle = None + count = 0 + try: + with _open_vcf(vcf_file) as f: + for line in f: + if line.startswith('#'): + header.append(line) + continue + if not line.strip(): + continue + if handle is None or count >= batch_size: + if handle is not None: + handle.close() + chunk_path = os.path.join(output_dir, f"batch_{len(batch_paths):04d}.vcf") + handle = open(chunk_path, 'w', encoding='utf-8') + handle.writelines(header) + batch_paths.append(chunk_path) + count = 0 + handle.write(line) + count += 1 + finally: + if handle is not None: + handle.close() + return batch_paths + + +def _vcf_to_proteindb_worker(vcf_file: str, output_path: str) -> dict: + """Module-level worker for multiprocessing.Pool.starmap. + + Uses the GTF DB, FASTA index, and EnsemblDataService instance opened once + per worker process by _worker_init rather than re-constructing them per task. + Returns the per-chunk stats dict that ``vcf_to_proteindb`` aggregates across + all workers. + """ + svc = _worker_state['svc'] + _, stats = svc._vcf_to_proteindb_chunk( + vcf_file, None, None, output_path, + db=_worker_state['db'], + transcripts_dict=_worker_state['transcripts_dict'], + log_summary=False, + annotation_indices=_worker_state.get('annotation_indices'), + ) + return stats + + class EnsemblDataService(ParameterConfiguration): CONFIG_KEY_VCF = "ensembl_translation" INPUT_FASTA = "input_fasta" @@ -47,6 +182,7 @@ class EnsemblDataService(ParameterConfiguration): EXPRESSION_THRESH = "expression_thresh" IGNORE_FILTERS = "ignore_filters" ACCEPTED_FILTERS = "accepted_filters" + WORKERS = "workers" def __init__(self, config_file: dict, pipeline_arguments: dict) -> None: """ @@ -85,7 +221,7 @@ def __init__(self, config_file: dict, pipeline_arguments: dict) -> None: default_value=False) self._include_biotypes = self.get_multiple_options( self.get_translation_properties(variable=self.INCLUDE_BIOTYPES, - default_value='protein_coding,polymorphic_pseudogene,non_stop_decay,nonsense_mediated_decay,IG_C_gene,IG_D_gene,IG_J_gene,IG_V_gene,TR_C_gene,TR_D_gene,TR_J_gene,TR_V_gene,TEC,mRNA')) + default_value='protein_coding,protein_coding_CDS_not_defined,protein_coding_LoF,nonsense_mediated_decay,non_stop_decay,translated_processed_pseudogene,IG_C_gene,IG_D_gene,IG_J_gene,IG_V_gene,TR_C_gene,TR_D_gene,TR_J_gene,TR_V_gene,TEC')) self._include_consequences = self.get_multiple_options( self.get_translation_properties(variable=self.INCLUDE_CONSEQUENCES, default_value='all')) @@ -103,6 +239,12 @@ def __init__(self, config_file: dict, pipeline_arguments: dict) -> None: self._accepted_filters = self.get_multiple_options( self.get_translation_properties(variable=self.ACCEPTED_FILTERS, default_value='PASS')) + raw_workers = self.get_translation_properties(variable=self.WORKERS, default_value=1) + try: + self._workers = max(1, int(raw_workers)) + except (TypeError, ValueError): + self._workers = 1 + def get_translation_properties(self, variable: str, default_value: Any) -> Any: value_return = default_value if variable in self.get_pipeline_parameters(): @@ -237,10 +379,10 @@ def dnaseq_to_proteindb(self, input_fasta: str) -> str: with open(self._proteindb_output, 'w', encoding='utf-8') as prots_fn: for record_id in seq_dict.keys(): - ref_seq = seq_dict[record_id].seq # get the seq and desc for the record from the fasta of the gtf + ref_seq = seq_dict[record_id].seq desc = str(seq_dict[record_id].description) - key_values = {} # extract key=value in the desc into a dict + key_values = {} sep = self._transcript_description_sep desc = desc.replace(' ', sep) for value in desc.split(sep): @@ -264,7 +406,6 @@ def dnaseq_to_proteindb(self, input_fasta: str) -> str: record_id, desc) self.get_logger().debug(msg) - # only include features that have the specified biotypes or they have CDSs info if 'CDS' in key_values.keys() and ( not self._skip_including_all_cds or 'altORFs' in self._include_biotypes): pass @@ -273,7 +414,6 @@ def dnaseq_to_proteindb(self, input_fasta: str) -> str: 'all']))): continue - # check wether to filter on expression and if it passes if self._expression_str: try: if float(key_values[self._expression_str]) < self._expression_thresh: @@ -359,13 +499,11 @@ def annoate_vcf(vcf_file: str, gtf_file: str, continue muts_dict.setdefault(key, []).append(transcript_id) - with open(f"{vcf_stem}_annotated.vcf", 'w', encoding='utf-8') as ann, open(vcf_file, 'r', encoding='utf-8') as v: - # write vcf headers to the output file + with open(f"{vcf_stem}_annotated.vcf", 'w', encoding='utf-8') as ann, _open_vcf(vcf_file) as v: for line in v.readlines(): if line.startswith('#'): ann.write(line) else: - # write the mutations and their overlapping transcript to output file sl = line.strip().split('\t') if len(sl) < 8: ann.write(line) @@ -381,40 +519,82 @@ def annoate_vcf(vcf_file: str, gtf_file: str, return f"{vcf_stem}_annotated.vcf" + _VCFRecord = collections.namedtuple('VCFRecord', + ['CHROM', 'POS', 'ID', 'REF', 'ALT', 'QUAL', 'FILTER', 'INFO']) + @staticmethod - def vcf_from_file(vcf_file: str) -> tuple[list, pd.DataFrame]: - """ - Read a VCF file and return a dataframe for the records - as well as a list for the metadata - """ + def vcf_from_file(vcf_file: str): + """Return VCF header lines and a lazy record iterator (constant memory). - HEADERS = { - 'CHROM': str, - 'POS': int, - 'ID': str, - 'REF': str, - 'ALT': str, - 'QUAL': str, - 'FILTER': str, - 'INFO': str, - } - - metadata = [] - data = [] - with open(vcf_file, 'r', encoding='utf-8') as vcf: - line = vcf.readline().strip() - while line: + The iterator yields one VCFRecord namedtuple per data line so peak + memory is O(1) in the number of variants regardless of file size. + """ + metadata: list[str] = [] + with _open_vcf(vcf_file) as fh: + for line in fh: if line.startswith('#'): metadata.append(line) else: - data.append(line.split('\t')[0:8]) - line = vcf.readline().strip() + break # header fully consumed; data read lazily below - vcf_df = pd.DataFrame(data, columns=HEADERS) + def _iter_records(): + with _open_vcf(vcf_file) as fh: + for line in fh: + if line.startswith('#') or not line.strip(): + continue + parts = line.split('\t', 7) + if len(parts) < 8: + continue + yield EnsemblDataService._VCFRecord( + CHROM=parts[0], POS=int(parts[1]), ID=parts[2], + REF=parts[3], ALT=parts[4], QUAL=parts[5], + FILTER=parts[6], INFO=parts[7].rstrip('\n'), + ) + + return metadata, _iter_records() - return metadata, vcf_df + def _parse_annotation_indices(self, metadata: list, vcf_file: str = "") -> tuple: + """Resolve transcript/consequence/biotype column positions from VCF ##INFO metadata. - def vcf_to_proteindb(self, vcf_file: str, input_fasta: str, gene_annotations_gtf: str) -> str: + Takes already-read metadata lines (from vcf_from_file) so the file is not + re-opened. Returns (transcript_index, consequence_index, biotype_index); any + value may be None if the corresponding field is absent from the CSQ FORMAT. + transcript_index falls back to 0 when no structured FORMAT declaration exists. + """ + annotation_cols: list[str] = [] + try: + raw_cols = \ + [x for x in metadata if x.startswith('##INFO=\n\r') for c in raw_cols] + except IndexError: + pass + + ti = ci = bi = None + try: + ti = annotation_cols.index(self._transcript_str.upper()) + except ValueError: + self.get_logger().debug("Unable to find %s in metadata header %s of VCF file: %s", + self._transcript_str, annotation_cols, vcf_file) + try: + ci = annotation_cols.index(self._consequence_str.upper()) + except ValueError: + self.get_logger().debug("Unable to find %s in metadata header %s of VCF file: %s", + self._consequence_str, annotation_cols, vcf_file) + try: + bi = annotation_cols.index(self._biotype_str.upper()) + except ValueError: + self.get_logger().debug("Unable to find %s in metadata header %s of VCF file: %s", + self._biotype_str, annotation_cols, vcf_file) + if ti is None: + ti = 0 + return ti, ci, bi + + def _vcf_to_proteindb_chunk(self, vcf_file: str, input_fasta: Optional[str], + gene_annotations_gtf: Optional[str], output_path: str, + *, db=None, transcripts_dict=None, + log_summary: bool = True, + annotation_indices: Optional[tuple] = None) -> tuple[str, dict]: """ Generate proteins for variants by modifying sequences of affected transcripts. In case of already annotated variants it only considers variants within @@ -423,47 +603,38 @@ def vcf_to_proteindb(self, vcf_file: str, input_fasta: str, gene_annotations_gtf In case of not annotated variants, it considers all variants overlapping transcripts from the selected biotypes. :param vcf_file: - :param input_fasta: - :param gene_annotations_gtf: + :param input_fasta: path to the FASTA file (required when db/transcripts_dict are None) + :param gene_annotations_gtf: path to the GTF file (required when db is None) + :param output_path: path for writing the output FASTA + :param db: pre-opened gffutils.FeatureDB (supplied by pool initializer in parallel runs) + :param transcripts_dict: pre-opened SeqIO index (supplied by pool initializer in parallel runs) :return: """ - db = self.parse_gtf(gene_annotations_gtf, str(Path(gene_annotations_gtf).with_suffix('.db'))) - - transcripts_dict = SeqIO.index(input_fasta, "fasta", key_function=self.get_key) + if db is None: + db = self.parse_gtf(gene_annotations_gtf, str(Path(gene_annotations_gtf).with_suffix('.db'))) + if transcripts_dict is None: + idx_path = _ensure_fasta_index(input_fasta) + transcripts_dict = SeqIO.index_db(idx_path, [input_fasta], "fasta", + key_function=self.get_key) # handle cases where the transcript has version in the GTF but not in the VCF - transcript_id_mapping = {k.split('.')[0]: k for k in transcripts_dict.keys()} + # Built lazily on the first KeyError to avoid iterating 207k keys up-front. + transcript_id_mapping: Optional[dict[str, str]] = None + feature_cache = _FeatureCache() + # Value is (ref_seq, desc) for a known transcript, or None for a transcript + # we've already looked up and confirmed isn't in the FASTA index (avoids re-trying + # the disk seek). _MISSING sentinel below distinguishes "not yet looked up". + seq_cache: dict[str, Optional[tuple]] = {} transcript_index, consequence_index, biotype_index = None, None, None if self._annotation_field_name: - metadata, vcf_reader = self.vcf_from_file(vcf_file) - annotation_cols = [] - try: - annotation_cols = \ - [x for x in metadata if x.startswith('##INFO= str: + """Generate proteins for variants by modifying sequences of affected transcripts. + + If workers is None, falls back to self._workers (config) which defaults + to 1 (sequential, backward-compatible). Pass workers > 1 to split the VCF + into fixed-size variant batches and fan out via multiprocessing.Pool. + :param vcf_file: + :param input_fasta: + :param gene_annotations_gtf: + :param workers: number of parallel worker processes (None => use config default) + :return: path to the output proteindb FASTA + """ + if workers is None: + workers = self._workers if self._workers else 1 + + check_gencode_version_compatibility(vcf_file, gene_annotations_gtf) + + # Fast path: sequential — single call, identical behaviour to the original implementation. + # For sequential runs we do NOT pre-annotate here; _vcf_to_proteindb_chunk handles that + # in its else-branch so that transcript_index=0 is set correctly for unannotated VCFs. + if workers <= 1: + output_path, _ = self._vcf_to_proteindb_chunk(vcf_file, input_fasta, gene_annotations_gtf, self._proteindb_output) + return output_path + + # Parallel path: pre-annotate unannotated VCFs in the main process. This avoids each + # worker racing on the same bedtools-output bed file (which annoate_vcf writes to cwd) + # and amortises the bedtools intersect across workers. + if not self._annotation_field_name: + vcf_file = self.annoate_vcf(vcf_file, gene_annotations_gtf) + self._annotation_field_name = 'transcriptOverlaps' + + # Build the FASTA index and GTF database ONCE in the main process so all + # workers find them ready. Without this, N workers spawned simultaneously + # would race to create the same .db file via gffutils.create_db, with losers + # catching a sqlite3.OperationalError on a partially-written file. + _ensure_fasta_index(input_fasta) + self.parse_gtf(gene_annotations_gtf, str(Path(gene_annotations_gtf).with_suffix('.db'))) + + # Parallel — split into fixed-size variant-batch VCFs, fan out to a Pool. + import multiprocessing as mp + import shutil + import tempfile + + # Pipeline args forwarded to the pool initializer (annotation field already set above). + pa = dict(self.get_pipeline_parameters()) + pa[EnsemblDataService.ANNOTATION_FIELD_NAME] = self._annotation_field_name + + # Parse annotation column indices ONCE from the (now-annotated) VCF so workers + # skip re-parsing the identical header for every batch. + _ann_meta, _ = self.vcf_from_file(vcf_file) + _annotation_indices = self._parse_annotation_indices(_ann_meta, vcf_file) + + with tempfile.TemporaryDirectory(prefix='pgatk_v2p_') as tmpdir: + # Stream-split VCF into fixed-size variant-count batches (constant memory). + # Batches may span chromosome boundaries; _vcf_to_proteindb_chunk handles this. + batch_paths = _split_vcf_into_batches(vcf_file, tmpdir) + + if len(batch_paths) <= 1: + # Entire VCF fits in one batch — run sequentially without pool overhead. + output_path, _ = self._vcf_to_proteindb_chunk(vcf_file, input_fasta, gene_annotations_gtf, + self._proteindb_output) + return output_path + + tasks = [(bp, os.path.join(tmpdir, f"out_{i:04d}.fa")) + for i, bp in enumerate(batch_paths)] + + self.get_logger().info( + "vcf-to-proteindb: dispatching %d variant-batch chunk(s) across %d worker(s)", + len(tasks), min(workers, len(tasks))) + + # Pool initializer opens the GTF DB and FASTA index once per worker process, + # not once per task — all batches handled by the same worker reuse them. + with mp.get_context('spawn').Pool( + min(workers, len(tasks)), + initializer=_worker_init, + initargs=(self.get_default_parameters(), pa, input_fasta, gene_annotations_gtf, + _annotation_indices), + ) as pool: + all_stats = pool.starmap(_vcf_to_proteindb_worker, tasks) + + # Concatenate the per-batch FASTAs into the final output. + with open(self._proteindb_output, 'wb') as out: + for _, batch_out in tasks: + if os.path.exists(batch_out): + with open(batch_out, 'rb') as f: + shutil.copyfileobj(f, out) + + # Aggregate per-batch counters and emit a single combined summary. + combined: dict[str, int] = {} + for stats in all_stats: + for k, v in stats.items(): + combined[k] = combined.get(k, 0) + v + msg = "Translation summary ({} batch(es)):\n {}".format( + len(all_stats), + '\n'.join([x + ":" + str(combined[x]) for x in combined])) + self.get_logger().info(msg) return self._proteindb_output diff --git a/pgatk/gnomad/__init__.py b/pgatk/gnomad/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pgatk/gnomad/data_downloader.py b/pgatk/gnomad/data_downloader.py new file mode 100644 index 00000000..54da853c --- /dev/null +++ b/pgatk/gnomad/data_downloader.py @@ -0,0 +1,363 @@ +"""Download GENCODE annotation files and gnomAD per-chromosome VCF files. + +GencodeDownloader — GENCODE GTF + primary-assembly genome FASTA for a given + release, plus an optional gffread step to generate a + transcript FASTA with CDS= headers. +GnomadVcfDownloader — gnomAD exomes VCF + TBI files, all chromosomes in parallel. +""" +from __future__ import annotations + +import gzip +import logging +import os +import re +import shutil +import subprocess # nosec B404 - used only with hardcoded gffread argv lists, never shell=True +from concurrent.futures import ThreadPoolExecutor, as_completed +from typing import Optional + +from pgatk.toolbox.general import download_file, check_create_folders + + +def _resolve_genome_fna(genome_fna: str) -> tuple[str, str | None]: + """Return (path_for_gffread, temp_path_to_clean_up). + + gffread requires random-access into the genome FASTA. Regular .gz (deflate) + does not support seeks, so if the caller passes a .gz path we either reuse + an already-decompressed sibling file or decompress to one on the fly. + Decompression is staged through a sibling ``.tmp`` file and atomically + renamed so an interrupted run cannot leave behind a partial / corrupt + FASTA that later invocations would silently reuse. + Returns the second element as a path only when *we* created the file and + the caller must delete it afterward. + """ + if not genome_fna.endswith(".gz"): + return genome_fna, None + plain = genome_fna[:-3] + if os.path.exists(plain): + return plain, None + logger.info("Decompressing genome FASTA for gffread (random-access required): %s", genome_fna) + tmp = plain + ".tmp" + try: + with gzip.open(genome_fna, "rb") as fi, open(tmp, "wb") as fo: + shutil.copyfileobj(fi, fo) + os.replace(tmp, plain) + except BaseException: + if os.path.exists(tmp): + try: + os.remove(tmp) + except OSError: + pass + raise + return plain, plain + +logger = logging.getLogger(__name__) + + +# --------------------------------------------------------------------------- +# GENCODE version compatibility check +# --------------------------------------------------------------------------- + +def _extract_gencode_version_from_vcf(vcf_path: str) -> Optional[str]: + """Scan VCF header lines for ``##gencode_version=`` and return the version number.""" + open_fn = gzip.open if vcf_path.endswith((".gz", ".bgz")) else open + try: + with open_fn(vcf_path, "rt") as fh: + for line in fh: + if not line.startswith("#"): + break + # e.g. ##gencode_version=GENCODE 44 + m = re.search(r"##gencode_version=.*?(\d+)", line, re.IGNORECASE) + if m: + return m.group(1) + except Exception as exc: + logger.debug("Could not read VCF header for GENCODE version check: %s", exc) + return None + + +def _extract_gencode_version_from_gtf(gtf_path: str) -> Optional[str]: + """Scan GTF comment lines for the GENCODE release version number.""" + open_fn = gzip.open if gtf_path.endswith(".gz") else open + try: + with open_fn(gtf_path, "rt") as fh: + for line in fh: + if not line.startswith("#"): + break + # e.g. ##description: ... version 44 (Ensembl 110) + m = re.search(r"version\s+(\d+)", line, re.IGNORECASE) + if m: + return m.group(1) + except Exception as exc: + logger.debug("Could not read GTF header for GENCODE version check: %s", exc) + return None + + +def check_gencode_version_compatibility(vcf_path: str, gtf_path: str) -> None: + """Warn if the GENCODE version recorded in the VCF header differs from the GTF. + + gnomAD VCF headers carry ``##gencode_version=GENCODE N`` reflecting the + GENCODE release used for VEP annotation. GENCODE GTF headers carry + ``##description: ... version N ...``. A mismatch means transcript + coordinates in the GTF may not correspond to the VEP consequence calls in + the VCF, which can produce incorrect translations. + + No warning is emitted when the version cannot be determined from either + file (e.g. for non-gnomAD VCFs or hand-crafted test files). + """ + vcf_ver = _extract_gencode_version_from_vcf(vcf_path) + gtf_ver = _extract_gencode_version_from_gtf(gtf_path) + if vcf_ver is None or gtf_ver is None: + return + if vcf_ver != gtf_ver: + logger.warning( + "GENCODE version mismatch: VCF was annotated with GENCODE v%s but " + "the supplied GTF is GENCODE v%s. Transcript coordinates may not " + "match VEP annotations, leading to incorrect translations. " + "Re-run 'pgatk gencode-downloader --release %s' to download the " + "matching GTF and genome FASTA.", + vcf_ver, gtf_ver, vcf_ver, + ) + else: + logger.debug("GENCODE version check passed: VCF and GTF are both v%s", vcf_ver) + +_GENCODE_BASE = ( + "https://ftp.ebi.ac.uk/pub/databases/gencode/" + "Gencode_human/release_{release}/" +) +_GNOMAD_BASE = ( + "https://storage.googleapis.com/gcp-public-data--gnomad/" + "release/{version}/vcf/{dataset}/" +) + +# Genome FASTA filename is stable across releases (no patch number in name) +_GENOME_FASTA_GZ = "GRCh38.primary_assembly.genome.fa.gz" +_GENOME_FASTA = "GRCh38.primary_assembly.genome.fa" + +# Standard chromosome set used by gnomAD (UCSC-style names with "chr" prefix) +ALL_CHROMOSOMES: list[str] = [f"chr{i}" for i in range(1, 23)] + ["chrX", "chrY"] + + +# --------------------------------------------------------------------------- +# GENCODE +# --------------------------------------------------------------------------- + +class GencodeDownloader: + """Download GENCODE human GTF and primary-assembly genome FASTA. + + The pre-built ``gencode.v{release}.transcripts.fa.gz`` is intentionally + NOT downloaded: its pipe-delimited headers have no ``CDS=`` token, so the + pipeline would fall back to 3-frame exon translation. Instead, the + primary-assembly genomic FASTA is downloaded and ``generate_transcripts`` + runs ``gffread -F`` to produce a transcript FASTA with embedded + ``CDS=start-end`` coordinates — enabling 1-frame CDS translation. + + Typical usage:: + + downloader = GencodeDownloader(output_dir="gencode_data", release=44) + downloader.download_all() + downloader.generate_transcripts( + genome_fna="gencode_data/GRCh38.primary_assembly.genome.fa", + gtf_file="gencode_data/gencode.v44.annotation.gtf", + output_fasta="gencode_data/transcripts.fa", + ) + """ + + def __init__( + self, + output_dir: str, + release: int = 44, + base_url: Optional[str] = None, + ) -> None: + self._output_dir = output_dir + self._release = release + self._base = (base_url or _GENCODE_BASE).format(release=release) + + def ensure_output_dir(self) -> None: + check_create_folders([self._output_dir]) + + def get_urls(self) -> list[str]: + """Return download URLs for the GTF annotation and primary-assembly genome FASTA.""" + v = self._release + return [ + self._base + f"gencode.v{v}.annotation.gtf.gz", + self._base + _GENOME_FASTA_GZ, + ] + + def expected_files(self) -> list[str]: + """Return expected local paths after download (files remain compressed).""" + v = self._release + return [ + os.path.join(self._output_dir, f"gencode.v{v}.annotation.gtf.gz"), + os.path.join(self._output_dir, _GENOME_FASTA_GZ), + ] + + def download_all(self, force: bool = False) -> list[str]: + """Download GTF and primary-assembly genome FASTA. Returns local file paths.""" + self.ensure_output_dir() + v = self._release + filenames = [ + f"gencode.v{v}.annotation.gtf.gz", + _GENOME_FASTA_GZ, + ] + downloaded = [] + for url, name in zip(self.get_urls(), filenames): + local_gz = os.path.join(self._output_dir, name) + if not force and os.path.exists(local_gz): + logger.info("Already exists, skipping: %s", local_gz) + downloaded.append(local_gz) + continue + logger.info("Downloading %s -> %s", url, local_gz) + result = download_file(url, local_gz, logger) + if result: + downloaded.append(result) + else: + logger.error("Failed to download: %s", url) + return downloaded + + @staticmethod + def generate_transcripts(genome_fna: str, gtf_file: str, output_fasta: str) -> str: + """Run gffread -F to produce a transcript FASTA with CDS= coordinate headers. + + Parameters + ---------- + genome_fna: + Path to the decompressed primary-assembly FASTA + (``GRCh38.primary_assembly.genome.fa``). + gtf_file: + Path to the GENCODE annotation GTF + (``gencode.v{release}.annotation.gtf``). + output_fasta: + Output path for the transcript FASTA (e.g. ``transcripts.fa``). + + Returns + ------- + str + Path to the generated FASTA file. + + Raises + ------ + FileNotFoundError + If ``gffread`` is not found in PATH. + subprocess.CalledProcessError + If gffread exits with a non-zero status. + """ + if not shutil.which("gffread"): + raise FileNotFoundError( + "gffread not found in PATH. " + "Install it with: conda install -c bioconda gffread" + ) + genome_for_gffread, _tmp = _resolve_genome_fna(genome_fna) + try: + cmd = ["gffread", "-F", "-w", output_fasta, "-g", genome_for_gffread, gtf_file] + logger.info("Running: %s", " ".join(cmd)) + subprocess.run(cmd, check=True) # nosec B603 - argv list with hardcoded "gffread" + finally: + if _tmp and os.path.exists(_tmp): + os.remove(_tmp) + logger.info("Transcripts written to %s", output_fasta) + return output_fasta + + +# --------------------------------------------------------------------------- +# gnomAD VCF +# --------------------------------------------------------------------------- + +class GnomadVcfDownloader: + """Download gnomAD per-chromosome VCF (BGZF) and tabix index files in parallel. + + Supports both gnomAD genomes and exomes VCFs via the ``dataset`` parameter. + Each chromosome yields two files: ``*.vcf.bgz`` and ``*.vcf.bgz.tbi``. + Files are stored as-is — tabix requires them to stay BGZF-compressed. + + Both v3.x and v4.x ship genome VCFs; v4.x additionally ships exome VCFs. + Check the gnomAD downloads page to confirm which dataset and GENCODE release + your VCF files were annotated with before choosing ``--release`` for + ``gencode-downloader``. + """ + + def __init__( + self, + output_dir: str, + version: str = "3.1.2", + dataset: str = "genomes", + chromosomes: Optional[list[str]] = None, + workers: int = 4, + base_url: Optional[str] = None, + ) -> None: + self._output_dir = output_dir + self._version = version + self._dataset = dataset + self._chromosomes = chromosomes if chromosomes is not None else ALL_CHROMOSOMES + self._workers = workers + self._base = (base_url or _GNOMAD_BASE).format(version=version, dataset=dataset) + + def ensure_output_dir(self) -> None: + check_create_folders([self._output_dir]) + + def get_urls(self) -> list[tuple[str, str]]: + """Return ``(url, local_filename)`` pairs for every VCF and TBI file.""" + pairs = [] + v = self._version + d = self._dataset + for chrom in self._chromosomes: + vcf_name = f"gnomad.{d}.v{v}.sites.{chrom}.vcf.bgz" + tbi_name = vcf_name + ".tbi" + pairs.append((self._base + vcf_name, vcf_name)) + pairs.append((self._base + tbi_name, tbi_name)) + return pairs + + def _download_one(self, url: str, name: str, force: bool) -> Optional[str]: + local_path = os.path.join(self._output_dir, name) + if not force and os.path.exists(local_path): + logger.info("Already exists, skipping: %s", local_path) + return local_path + logger.info("Downloading %s -> %s", url, local_path) + result = download_file(url, local_path, logger) + if not result: + logger.error("Failed to download: %s", url) + return result + + def download_all( + self, + force: bool = False, + progress_callback=None, + ) -> list[str]: + """Download all VCF + TBI files in parallel. + + Parameters + ---------- + force: + Re-download files that already exist. + progress_callback: + Optional callable invoked after each file completes: + ``callback(completed: int, total: int, name: str)``. + + Returns + ------- + list[str] + Paths of successfully downloaded files. + """ + self.ensure_output_dir() + pairs = self.get_urls() + total = len(pairs) + results: list[str] = [] + completed = 0 + + with ThreadPoolExecutor(max_workers=self._workers) as pool: + futures = { + pool.submit(self._download_one, url, name, force): name + for url, name in pairs + } + for future in as_completed(futures): + name = futures[future] + completed += 1 + try: + result = future.result() + if result: + results.append(result) + except Exception as exc: + logger.error("Error downloading %s: %s", name, exc) + if progress_callback is not None: + progress_callback(completed, total, name) + + return results diff --git a/pgatk/proteogenomics/spectrumai.py b/pgatk/proteogenomics/spectrumai.py index 0fb16b31..612e3094 100644 --- a/pgatk/proteogenomics/spectrumai.py +++ b/pgatk/proteogenomics/spectrumai.py @@ -281,7 +281,6 @@ def __init__(self, config_data: dict, pipeline_arguments: dict) -> None: self._mzml_files = self.get_validate_parameters(variable=self.CONFIG_MZML_FILES, default_value=False) self._ions_tolerance = self.get_validate_parameters(variable=self.CONFIG_IONS_TOLERANCE, default_value=0.02) - ## check if ions_tolerance is string, convert to float if isinstance(self._ions_tolerance, str): self._ions_tolerance = float(self._ions_tolerance) diff --git a/pgatk/proteomics/db/protein_database_decoy.py b/pgatk/proteomics/db/protein_database_decoy.py index 5f47e72a..ee228531 100644 --- a/pgatk/proteomics/db/protein_database_decoy.py +++ b/pgatk/proteomics/db/protein_database_decoy.py @@ -221,21 +221,14 @@ def generate_decoypyrat_database(self) -> None: :return: """ - # Create empty sets to add all target and decoy peptides upeps = set() dpeps = set() - # Counter for number of decoy sequences dcount = 0 - # Open FASTA file using first cmd line argument - # fasta = SeqIO.parse(self._input_fasta, 'fasta') - with open(self._input_fasta) as handle: - # open temporary decoy FASTA file with open(self._temp_file, 'w') as outfa: - # loop each seq in the file for value in SimpleFastaParser(handle): seq = value[1] description = value[0] @@ -244,53 +237,42 @@ def generate_decoypyrat_database(self) -> None: if not self._isobaric: seq = seq.replace('I', 'L') - # digest sequence add peptides to set upeps.update( cleave(sequence=seq, rule=PGATK_ENZYMES.enzymes[self._enzyme]['cleavage rule'], missed_cleavages=0, min_length=self._min_peptide_length)) - # reverse and switch protein sequence decoyseq = self.revswitch(seq, self._no_switch, PGATK_ENZYMES.enzymes[self._enzyme]['cleavage sites']) # do not store decoy peptide set in reduced memory mode if not self._memory_save: - # update decoy peptide set dpeps.update( cleave(sequence=decoyseq, rule=PGATK_ENZYMES.enzymes[self._enzyme]['cleavage rule'], missed_cleavages=0, min_length=self._min_peptide_length)) - # write decoy protein accession and sequence to file outfa.write('>' + self._decoy_prefix + description + '\n') outfa.write(decoyseq + '\n') - # Summarise the numbers of target and decoy peptides and their intersection nonDecoys = set() self.get_logger().info("proteins: %s", dcount) self.get_logger().info("target peptides: %s", len(upeps)) # Reloop decoy file in reduced memory mode to store only intersecting decoys if self._memory_save: - # open temp decoys with open(self._temp_file, "rt") as fin: for line in fin: - # if line is not accession if line[0] != '>': - # digest protein for p in cleave(sequence=line.rstrip(), rule=PGATK_ENZYMES.enzymes[self._enzyme]['cleavage rule'], missed_cleavages=0, min_length=self._min_peptide_length): - # check if in target peptides if true then add to nonDecoys if p in upeps: nonDecoys.add(p) fin.close() self.get_logger().info("decoy peptides: !Memory Saving Made!") else: - # can only report total number in normal memory mode self.get_logger().info("decoy peptides: %s", len(dpeps)) - # find intersecting peptides nonDecoys = upeps.intersection(dpeps) self.get_logger().info("#intersection: %s", len(nonDecoys)) @@ -298,37 +280,27 @@ def generate_decoypyrat_database(self) -> None: # if there are decoy peptides that are in the target peptide set if len(nonDecoys) > 0 and self._no_suffle == False: - # create empty dictionary with bad decoys as keys dAlternative = dict.fromkeys(nonDecoys, '') noAlternative = list() - # loop bad decoys / dictionary keys for dPep in dAlternative: i = 0 aPep = dPep - # shuffle until aPep is not in target set (maximum of 10 iterations) while aPep in upeps and i < self._max_iterations: - - # increment iteration counter i += 1 - - # shuffle peptide aPep = self.shuffle(dPep) # check if shuffling has an effect if not end iterations if aPep == dPep: i = self._max_iterations - # update dictionary with alternative shuffled peptide dAlternative[dPep] = aPep - # warn if peptide has no suitable alternative, add to removal list if i == self._max_iterations: noAlternative.append(dPep) self.get_logger().info('%s have no alternative peptide', len(noAlternative)) - # remove peptides with no alternative for p in noAlternative: del dAlternative[p] @@ -336,11 +308,8 @@ def generate_decoypyrat_database(self) -> None: upeps.clear() dpeps.clear() - # open second decoy file with open(self._output_file, "wt") as fout: - # Attach the target sequences to the database - # fasta = SeqIO.parse(self._input_fasta, 'fasta') with open(self._input_fasta) as handle: for value in SimpleFastaParser(handle): description = value[0] @@ -348,20 +317,15 @@ def generate_decoypyrat_database(self) -> None: fout.write('>' + description + '\n') fout.write(seq + '\n') - # open original decoy file with open(self._temp_file, "rt") as fin: - # loop each line of original decoy fasta for line in fin: # if line is not accession replace peptides in dictionary with alternatives if line[0] != '>': - # digest decoy sequence for p in cleave(sequence=line.rstrip(), rule=PGATK_ENZYMES.enzymes[self._enzyme]['cleavage rule'], missed_cleavages=0, min_length=self._min_peptide_length): - # store decoy peptide for final count dpeps.add(p) - # if decoy peptide is in dictionary replace with alternative if p in dAlternative: line = line.replace(p, dAlternative[p]) @@ -391,24 +355,19 @@ def pgatk_decoy_database(self) -> None: :return: """ - # Create empty sets to add all target and decoy peptides upeps = set() noAlternative = set() - # Open FASTA file using first cmd line argument fasta = SeqIO.parse(self._input_fasta, 'fasta') - # loop each seq in the file for record in fasta: seq = str(record.seq) if not self._isobaric: seq = seq.replace('I', 'L') - # digest sequence add peptides to the target set upeps.update( cleave(sequence=seq, rule=PGATK_ENZYMES.enzymes[self._enzyme]['cleavage rule'], missed_cleavages=self._max_missed_cleavages, min_length=self._min_peptide_length)) - # open orary decoy FASTA file with open(self._output_file, 'w') as outfa: fasta = SeqIO.parse(self._input_fasta, 'fasta') targets = [] @@ -418,7 +377,6 @@ def pgatk_decoy_database(self) -> None: targets.append(protseq) revprotseq = [] - # output target protein seq = str(record.seq) id_protein = record.id description = record.description @@ -431,7 +389,6 @@ def pgatk_decoy_database(self) -> None: if not self._isobaric: seq = seq.replace('I', 'L') - # reverse and switch protein sequence decoyseq = self.revswitch(seq, self._no_switch, PGATK_ENZYMES.enzymes[self._enzyme]['cleavage sites']) @@ -455,29 +412,23 @@ def pgatk_decoy_database(self) -> None: if found_in_target and not self._no_suffle and decoy_pep not in noAlternative: aPep = decoy_pep - # shuffle until aPep is not in target set (maximum of 10 iterations) i = 0 while aPep in upeps and i < self._max_iterations: - # increment iteration counter i += 1 - # shuffle peptide aPep = self.shuffle(aPep) # check if shuffling has an effect if not end iterations if aPep == decoy_pep: i = self._max_iterations - # warn if peptide has no suitable alternative, add to removal list if i == self._max_iterations: noAlternative.add(decoy_pep) aPep = '' - # if decoy is generated then add to the list of peptides if aPep: checked_decoy_peps.append(aPep) else: if self._keep_target_hits: checked_decoy_peps.append(decoy_pep) - # finally join the peptides to generate protein decoy if checked_decoy_peps: revprotseq.append(''.join(checked_decoy_peps)) diff --git a/pgatk/testdata/clinvar/clinvar_isg15_assembly_report.txt b/pgatk/testdata/clinvar/clinvar_isg15_assembly_report.txt new file mode 100644 index 00000000..dbda8871 --- /dev/null +++ b/pgatk/testdata/clinvar/clinvar_isg15_assembly_report.txt @@ -0,0 +1,3 @@ +# NCBI Assembly Report — minimal subset for ISG15 unit tests +# Sequence-Name Sequence-Role Assigned-Molecule Assigned-Molecule-Location/Type GenBank-Accn Relationship RefSeq-Accn Assembly-Unit Sequence-Length UCSC-style-name +1 assembled-molecule 1 Chromosome CM000663.2 = NC_000001.11 Primary Assembly 248956422 chr1 diff --git a/pgatk/testdata/clinvar/clinvar_isg15_cds.fna b/pgatk/testdata/clinvar/clinvar_isg15_cds.fna new file mode 100644 index 00000000..8a0a6dcb --- /dev/null +++ b/pgatk/testdata/clinvar/clinvar_isg15_cds.fna @@ -0,0 +1,2 @@ +>NM_005101.4 ISG15 ubiquitin like modifier (ISG15), mRNA CDS=1-495 +ATGGGCTGGGACCTGACGGTGAAGATGCTGGCGGGCAACGAATTCCAGGTGTCCCTGAGCAGCTCCATGTCGGTGTCAGAGCTGAAGGCGCAGATCACCCAGAAGATCGGCGTGCACGCCTTCCAGCAGCGTCTGGCTGTCCACCCGAGCGGTGTGGCGCTGCAGGACAGGGTCCCCCTTGCCAGCCAGGGCCTGGGCCCCGGCAGCACGGTCCTGCTGGTGGTGGACAAATGCGACGAACCTCTGAGCATCCTGGTGAGGAATAACAAGGGCCGCAGCAGCACCTACGAGGTACGGCTGACGCAGACCGTGGCCCACCTGAAGCAGCAAGTGAGCGGGCTGGAGGGTGTGCAGGACGACCTGTTCTGGCTGACCTTCGAGGGGAAGCCCCTGGAGGACCAGCTCCCGCTGGGGGAGTACGGCCTCAAGCCCCTGAGCACCGTGTTCATGAATCTGCGCCTGCGGGGAGGCGGCACAGAGCCTGGCGGGCGGAGC diff --git a/pgatk/testdata/clinvar/clinvar_isg15_cds.gff b/pgatk/testdata/clinvar/clinvar_isg15_cds.gff new file mode 100644 index 00000000..363318f8 --- /dev/null +++ b/pgatk/testdata/clinvar/clinvar_isg15_cds.gff @@ -0,0 +1,5 @@ +##gff-version 3 +NC_000001.11 BestRefSeq gene 1013497 1014540 . + . ID=gene-ISG15;Name=ISG15;gbkey=Gene;gene=ISG15;gene_biotype=protein_coding +NC_000001.11 BestRefSeq mRNA 1013497 1014540 . + . ID=rna-NM_005101.4;Parent=gene-ISG15;Name=NM_005101.4;gbkey=mRNA;gene=ISG15;product=ISG15 ubiquitin like modifier;transcript_id=NM_005101.4 +NC_000001.11 BestRefSeq CDS 1013574 1013576 . + 0 ID=cds-NP_005092.1;Parent=rna-NM_005101.4;gbkey=CDS;gene=ISG15;product=ubiquitin-like protein ISG15;protein_id=NP_005092.1 +NC_000001.11 BestRefSeq CDS 1013984 1014475 . + 0 ID=cds-NP_005092.1;Parent=rna-NM_005101.4;gbkey=CDS;gene=ISG15;product=ubiquitin-like protein ISG15;protein_id=NP_005092.1 diff --git a/pgatk/testdata/clinvar/clinvar_isg15_mutation_types.vcf b/pgatk/testdata/clinvar/clinvar_isg15_mutation_types.vcf new file mode 100644 index 00000000..883d9b1c --- /dev/null +++ b/pgatk/testdata/clinvar/clinvar_isg15_mutation_types.vcf @@ -0,0 +1,15 @@ +##fileformat=VCFv4.1 +##fileDate=2026-05-17 +##source=ClinVar (ISG15 subset for mutation-type test coverage) +##reference=GRCh38 +##INFO= +##INFO= +##INFO= +##INFO= +#CHROM POS ID REF ALT QUAL FILTER INFO +1 1013541 1185394 T C . . ALLELEID=1175251;GENEINFO=ISG15:9636;CLNSIG=Benign;MC=SO:0001623|5_prime_UTR_variant +1 1013997 1035971 C A . . ALLELEID=1022448;GENEINFO=ISG15:9636;CLNSIG=Uncertain_significance;MC=SO:0001583|missense_variant +1 1014026 9000001 C T . . ALLELEID=9000001;GENEINFO=ISG15:9636;CLNSIG=Pathogenic;MC=SO:0001587|stop_gained +1 1014223 915424 TCTGAGCATC T . . ALLELEID=903498;GENEINFO=ISG15:9636;CLNSIG=Uncertain_significance;MC=SO:0001822|inframe_deletion +1 1014316 161455 C CG . . ALLELEID=171289;GENEINFO=ISG15:9636;CLNSIG=Pathogenic;MC=SO:0001589|frameshift_variant +1 1014459 1038082 A AGCCCGT . . ALLELEID=1022454;GENEINFO=ISG15:9636;CLNSIG=Uncertain_significance;MC=SO:0001821|inframe_insertion diff --git a/pgatk/testdata/clinvar/mini_clinvar.vcf b/pgatk/testdata/clinvar/mini_clinvar.vcf index 7291985e..cdc05a2b 100644 --- a/pgatk/testdata/clinvar/mini_clinvar.vcf +++ b/pgatk/testdata/clinvar/mini_clinvar.vcf @@ -3,8 +3,13 @@ ##INFO= ##INFO= ##INFO= +## Test fixture: rs00002 and rs00004 are intentionally placed at the same 1:69550 G>A +## position with different rsIDs and conflicting MC annotations. They exercise the +## independent CLNSIG/MC filtering paths in test_clinvar_service.py / +## test_clinvar_integration.py — rs00002 (Benign) must be dropped by significance +## filtering and rs00004 (synonymous) must be dropped by consequence filtering. #CHROM POS ID REF ALT QUAL FILTER INFO -1 1006 rs00001 C T . . GENEINFO=GeneA:1234;CLNSIG=Pathogenic;MC=SO:0001583|missense_variant -1 1054 rs00002 G A . . GENEINFO=GeneA:1234;CLNSIG=Benign;MC=SO:0001583|missense_variant -2 2012 rs00003 C T . . GENEINFO=GeneB:5678;CLNSIG=Likely_pathogenic;MC=SO:0001587|stop_gained -1 1054 rs00004 G A . . GENEINFO=GeneA:1234;CLNSIG=Pathogenic;MC=SO:0001819|synonymous_variant +1 69500 rs00001 T C . . GENEINFO=OR4F5:79501;CLNSIG=Pathogenic;MC=SO:0001583|missense_variant +1 69550 rs00002 G A . . GENEINFO=OR4F5:79501;CLNSIG=Benign;MC=SO:0001583|missense_variant +2 47373469 rs00003 G A . . GENEINFO=EPCAM:4072;CLNSIG=Likely_pathogenic;MC=SO:0001587|stop_gained +1 69550 rs00004 G A . . GENEINFO=OR4F5:79501;CLNSIG=Pathogenic;MC=SO:0001819|synonymous_variant diff --git a/pgatk/testdata/clinvar/mini_refseq.gff b/pgatk/testdata/clinvar/mini_refseq.gff new file mode 100644 index 00000000..a8b393b8 --- /dev/null +++ b/pgatk/testdata/clinvar/mini_refseq.gff @@ -0,0 +1,28 @@ +##gff-version 3 +NC_000001.11 BestRefSeq gene 65419 71585 . + . ID=gene-OR4F5;Dbxref=GeneID:79501,HGNC:HGNC:14825;Name=OR4F5;description=olfactory receptor family 4 subfamily F member 5;gbkey=Gene;gene=OR4F5;gene_biotype=protein_coding +NC_000001.11 BestRefSeq mRNA 65419 71585 . + . ID=rna-NM_001005484.2;Parent=gene-OR4F5;Dbxref=Ensembl:ENST00000641515.2,GeneID:79501,GenBank:NM_001005484.2,HGNC:HGNC:14825;Name=NM_001005484.2;gbkey=mRNA;gene=OR4F5;product=olfactory receptor family 4 subfamily F member 5;tag=MANE Select;transcript_id=NM_001005484.2 +NC_000001.11 BestRefSeq exon 65419 65433 . + . ID=exon-NM_001005484.2-1;Parent=rna-NM_001005484.2;gbkey=mRNA;gene=OR4F5;transcript_id=NM_001005484.2 +NC_000001.11 BestRefSeq exon 65520 65573 . + . ID=exon-NM_001005484.2-2;Parent=rna-NM_001005484.2;gbkey=mRNA;gene=OR4F5;transcript_id=NM_001005484.2 +NC_000001.11 BestRefSeq exon 69037 71585 . + . ID=exon-NM_001005484.2-3;Parent=rna-NM_001005484.2;gbkey=mRNA;gene=OR4F5;transcript_id=NM_001005484.2 +NC_000001.11 BestRefSeq CDS 65565 65573 . + 0 ID=cds-NP_001005484.2;Parent=rna-NM_001005484.2;Dbxref=CCDS:CCDS30547.2,GenBank:NP_001005484.2;Name=NP_001005484.2;gbkey=CDS;gene=OR4F5;product=olfactory receptor 4F5;protein_id=NP_001005484.2 +NC_000001.11 BestRefSeq CDS 69037 70008 . + 0 ID=cds-NP_001005484.2;Parent=rna-NM_001005484.2;Dbxref=CCDS:CCDS30547.2,GenBank:NP_001005484.2;Name=NP_001005484.2;gbkey=CDS;gene=OR4F5;product=olfactory receptor 4F5;protein_id=NP_001005484.2 +NC_000002.12 BestRefSeq gene 47369311 47387020 . + . ID=gene-EPCAM;Dbxref=GeneID:4072,HGNC:HGNC:11529,MIM:185535;Name=EPCAM;description=epithelial cell adhesion molecule;gbkey=Gene;gene=EPCAM;gene_biotype=protein_coding;gene_synonym=TACSTD1 +NC_000002.12 BestRefSeq mRNA 47369311 47387020 . + . ID=rna-NM_002354.3;Parent=gene-EPCAM;Dbxref=Ensembl:ENST00000263735.9,GeneID:4072,GenBank:NM_002354.3,HGNC:HGNC:11529,MIM:185535;Name=NM_002354.3;gbkey=mRNA;gene=EPCAM;product=epithelial cell adhesion molecule;tag=MANE Select;transcript_id=NM_002354.3 +NC_000002.12 BestRefSeq exon 47369311 47369581 . + . ID=exon-NM_002354.3-1;Parent=rna-NM_002354.3;gbkey=mRNA;gene=EPCAM;transcript_id=NM_002354.3 +NC_000002.12 BestRefSeq exon 47373463 47373570 . + . ID=exon-NM_002354.3-2;Parent=rna-NM_002354.3;gbkey=mRNA;gene=EPCAM;transcript_id=NM_002354.3 +NC_000002.12 BestRefSeq exon 47373808 47374048 . + . ID=exon-NM_002354.3-3;Parent=rna-NM_002354.3;gbkey=mRNA;gene=EPCAM;transcript_id=NM_002354.3 +NC_000002.12 BestRefSeq exon 47375234 47375299 . + . ID=exon-NM_002354.3-4;Parent=rna-NM_002354.3;gbkey=mRNA;gene=EPCAM;transcript_id=NM_002354.3 +NC_000002.12 BestRefSeq exon 47377014 47377077 . + . ID=exon-NM_002354.3-5;Parent=rna-NM_002354.3;gbkey=mRNA;gene=EPCAM;transcript_id=NM_002354.3 +NC_000002.12 BestRefSeq exon 47378953 47379054 . + . ID=exon-NM_002354.3-6;Parent=rna-NM_002354.3;gbkey=mRNA;gene=EPCAM;transcript_id=NM_002354.3 +NC_000002.12 BestRefSeq exon 47379769 47379969 . + . ID=exon-NM_002354.3-7;Parent=rna-NM_002354.3;gbkey=mRNA;gene=EPCAM;transcript_id=NM_002354.3 +NC_000002.12 BestRefSeq exon 47385166 47385210 . + . ID=exon-NM_002354.3-8;Parent=rna-NM_002354.3;gbkey=mRNA;gene=EPCAM;transcript_id=NM_002354.3 +NC_000002.12 BestRefSeq exon 47386572 47387020 . + . ID=exon-NM_002354.3-9;Parent=rna-NM_002354.3;gbkey=mRNA;gene=EPCAM;transcript_id=NM_002354.3 +NC_000002.12 BestRefSeq CDS 47369506 47369581 . + 0 ID=cds-NP_002345.2;Parent=rna-NM_002354.3;Dbxref=CCDS:CCDS1833.1,GenBank:NP_002345.2;Name=NP_002345.2;gbkey=CDS;gene=EPCAM;product=epithelial cell adhesion molecule precursor;protein_id=NP_002345.2 +NC_000002.12 BestRefSeq CDS 47373463 47373570 . + 2 ID=cds-NP_002345.2;Parent=rna-NM_002354.3;Dbxref=CCDS:CCDS1833.1,GenBank:NP_002345.2;Name=NP_002345.2;gbkey=CDS;gene=EPCAM;product=epithelial cell adhesion molecule precursor;protein_id=NP_002345.2 +NC_000002.12 BestRefSeq CDS 47373808 47374048 . + 2 ID=cds-NP_002345.2;Parent=rna-NM_002354.3;Dbxref=CCDS:CCDS1833.1,GenBank:NP_002345.2;Name=NP_002345.2;gbkey=CDS;gene=EPCAM;product=epithelial cell adhesion molecule precursor;protein_id=NP_002345.2 +NC_000002.12 BestRefSeq CDS 47375234 47375299 . + 1 ID=cds-NP_002345.2;Parent=rna-NM_002354.3;Dbxref=CCDS:CCDS1833.1,GenBank:NP_002345.2;Name=NP_002345.2;gbkey=CDS;gene=EPCAM;product=epithelial cell adhesion molecule precursor;protein_id=NP_002345.2 +NC_000002.12 BestRefSeq CDS 47377014 47377077 . + 1 ID=cds-NP_002345.2;Parent=rna-NM_002354.3;Dbxref=CCDS:CCDS1833.1,GenBank:NP_002345.2;Name=NP_002345.2;gbkey=CDS;gene=EPCAM;product=epithelial cell adhesion molecule precursor;protein_id=NP_002345.2 +NC_000002.12 BestRefSeq CDS 47378953 47379054 . + 0 ID=cds-NP_002345.2;Parent=rna-NM_002354.3;Dbxref=CCDS:CCDS1833.1,GenBank:NP_002345.2;Name=NP_002345.2;gbkey=CDS;gene=EPCAM;product=epithelial cell adhesion molecule precursor;protein_id=NP_002345.2 +NC_000002.12 BestRefSeq CDS 47379769 47379969 . + 0 ID=cds-NP_002345.2;Parent=rna-NM_002354.3;Dbxref=CCDS:CCDS1833.1,GenBank:NP_002345.2;Name=NP_002345.2;gbkey=CDS;gene=EPCAM;product=epithelial cell adhesion molecule precursor;protein_id=NP_002345.2 +NC_000002.12 BestRefSeq CDS 47385166 47385210 . + 0 ID=cds-NP_002345.2;Parent=rna-NM_002354.3;Dbxref=CCDS:CCDS1833.1,GenBank:NP_002345.2;Name=NP_002345.2;gbkey=CDS;gene=EPCAM;product=epithelial cell adhesion molecule precursor;protein_id=NP_002345.2 +NC_000002.12 BestRefSeq CDS 47386572 47386613 . + 0 ID=cds-NP_002345.2;Parent=rna-NM_002354.3;Dbxref=CCDS:CCDS1833.1,GenBank:NP_002345.2;Name=NP_002345.2;gbkey=CDS;gene=EPCAM;product=epithelial cell adhesion molecule precursor;protein_id=NP_002345.2 diff --git a/pgatk/testdata/clinvar/mini_refseq.gtf b/pgatk/testdata/clinvar/mini_refseq.gtf deleted file mode 100644 index d6050c13..00000000 --- a/pgatk/testdata/clinvar/mini_refseq.gtf +++ /dev/null @@ -1,6 +0,0 @@ -NC_000001.11 BestRefSeq transcript 1000 1299 . + . gene_id "GeneA"; transcript_id "NM_000001.1"; gene_biotype "protein_coding"; -NC_000001.11 BestRefSeq exon 1000 1299 . + . gene_id "GeneA"; transcript_id "NM_000001.1"; exon_number "1"; gene_biotype "protein_coding"; -NC_000001.11 BestRefSeq CDS 1000 1299 . + 0 gene_id "GeneA"; transcript_id "NM_000001.1"; exon_number "1"; gene_biotype "protein_coding"; -NC_000002.12 BestRefSeq transcript 2000 2299 . + . gene_id "GeneB"; transcript_id "NM_000002.1"; gene_biotype "protein_coding"; -NC_000002.12 BestRefSeq exon 2000 2299 . + . gene_id "GeneB"; transcript_id "NM_000002.1"; exon_number "1"; gene_biotype "protein_coding"; -NC_000002.12 BestRefSeq CDS 2000 2299 . + 0 gene_id "GeneB"; transcript_id "NM_000002.1"; exon_number "1"; gene_biotype "protein_coding"; diff --git a/pgatk/testdata/clinvar/mini_refseq_protein.faa b/pgatk/testdata/clinvar/mini_refseq_protein.faa index 4f631329..33267905 100644 --- a/pgatk/testdata/clinvar/mini_refseq_protein.faa +++ b/pgatk/testdata/clinvar/mini_refseq_protein.faa @@ -1,4 +1,72 @@ ->NM_000001.1 CDS=1-300 -ATGGGACCTAACGTTCACATTATGAGAGTTACGGGTGTTTTAGAGACCGCCCGTGAGAACACCATCATGGAAGCGAACGATATAGTCGGCGTAGAGCGGATGCTAGCCCACTCCTGGAAATACTCCAGGGTACGTCCCCACAGCATCTACCCCACGACCCGAACGCCGTGCCCGGCGCAATCCAAGGTGCTCGAGACTTTGCGAACCGATCAGTCTGGAGCTTGTTGGCCTGCAATAGTCACAAAGGGGATGTATCAGACCTGCATGTGGACGCGACACCTCGGATCTCCTAGGCCTTAA ->NM_000002.1 CDS=1-300 -ATGCCGATCGGGCAAGTATTGGGTGGCACAGCGGGAAGGGAGGTGATTAGGCTCCGACACTTGGGAGTAGATATGGGTCCATCTTATTATAATATGTCGAAGTCCCCACGCCACACAATCTTCTTTGCATGTGTCCCAATCGGCCTTCGCTGTTTCGGCCTCAGCCAAAGAATTGTTGATGAGCAAGTTGCCCGTTTAGCCCGCCCTATGAGAGAACTTACCTACAATTGGACTAGCGGAAGGTCAGGTCGTGCGACACGACGAGCGCTCGACCAAGATTGGTTTAAAGGTGTGACTTAG +>rna-NM_001005484.2 CDS=61-1041 Dbxref=Ensembl:ENST00000641515.2,GeneID:79501,GenBank:NM_001005484.2,HGNC:HGNC:14825;Name=NM_001005484.2;gbkey=mRNA;gene=OR4F5;product=olfactory receptor family 4 subfamily F member 5;tag=MANE Select;transcript_id=NM_001005484.2;gene_biotype=protein_coding;CDS_Dbxref=CCDS:CCDS30547.2,Ensembl:ENSP00000493376.2,GeneID:79501,GenBank:NP_001005484.2,HGNC:HGNC:14825;CDS_Name=NP_001005484.2;CDS_gbkey=CDS;CDS_product=olfactory receptor 4F5;protein_id=NP_001005484.2 +CCCAGATCTCTTCAGtttttATGCCTCATTCTGTGAAAATTGCTGTAGTCTCTTCCAGTT +ATGAAGAAGGTAACTGCAGAGGCTATTTCCTGGAATGAATCAACGAGTGAAACGAATAAC +TCTATGGTGACTGAATTCATTTTTCTGGGTCTCTCTGATTCTCAGGAACTCCAGACCTTc +ctatttatgttgttttttgtaTTCTATGGAGGAATCGTGTTTGGAAACCTTCTTATTGTC +ATAACAGTGGTATCTGACTCCCACCTTCACTCTCCCATGTACTTCCTGCTAGCCAACCTC +TCACTCATTGATCTGTCTCTGTCTTCAGTCACAGCCCCCAAGATGATTACTGACTTTTTC +AGCCAGCGCAAAGTCATCTCTTTCAAGGGCTGCCTTGTTCagatatttctccttcacttc +tttgGTGGGAGTGAGATGGTGATCCTCATAGCCATGGGCTTTGACAGATATATAGCAATA +TGCAAGCCCCTACACTACACTACAATTATGTGTGGCAACGCATGTGTCGGCATTATGGCT +GTCACATGGGGAATTGGCTTTCTCCATTCGGTGAGCCAGTTGGCGTTTGCCGTGCACTTA +CTCTTCTGTGGTCCCAATGAGGTCGATAGTTTTTATTGTGACCTTCCTAGGGTAATCAAA +CTTGCCTGTACAGATACCTACAGGCTAGATATTATGGTCATTGCTAACAGTGGTGTGCTC +ACTGTGTGTTCTTTTGTTCTTCTAATCATCTCATACACTATCATCCTAATGACCATCCAG +CATCGCCCTTTAGATAAGTCGTCCAAAGCTCTGTCCACTTTGACTGCTCACATTACAGTA +GTTCTTTTGTTCTTTGGACCATGTGTCTTTATTTATGCCTGGCCATTCCCCATCAAGTCA +TTAGATAAATTCCTTGCTGTATTTTATTCTGTGATCACCCCTCTCTTGAACCCAATTATA +TACACACTGAGGAACAAAGACATGAAGACGGCAATAAGACAGCTGAGAAAATGGGATGCA +CATTCTAGTGTAAAGTTTTAGATCTTATATAACTGTGAGATTAATCTCAGATAATGACAC +AAAATATAGTGAAGTTGGTAAGTTATTTAGTAAAGCTCATGAAAATTGTGCCCTCCATTC +CCATATAATTTAGTAATTGTCTAGGAACTTCCACATACATTGCCTCAATTTATCTTTCAA +CAACTTGTGTGTTATATTTTGGAATACAGATACAAAGTTATTatgctttcaaaatattct +tttgctAATTCTTAGAACAAAGAAAGGCATAAATATATTAGTATTTGTGTACACCTGTTC +CTTCCTGTGTGACCCTAAGTTTagtagaagaaaggagagaaaatatagcctagcttataa +atttaaaaaaaaatttatttggtccattttgtgaaaaacataaaaaaagaactgtcacat +cttaatttaaaaaatatatgcttaGTGGTAAGGAGATATATGTCAACTTTTAAGAGGTTG +AAAAACAAACGCCTCCCATTATAAGTTTATACTTCACCTCCCACCACTATAACAACCCAG +AATCCATGAGGGCATTATCAGGAGTGAGTGGAAGAGTAAGTTTGCCAATGTGAAATGTGC +CTTCTAGGTCCTAGACGTCTGTGGTATAACTGCTCATAAGCAGTAGAAAGAATTTAGAGG +GATCCAGGCTCTCATCACGTTGGCACAAAGTATATTACTTGGATCCATCTATGTCATTTT +CCATGGTTAATGTTTAAAAGCACAGgctttaaagtaaaaaacaaagagCTGGATTCAACT +CTACTGACTCTTATTAATCATGATTTTGGGCACATTACGTAGCTTTCATGAGCTTTAGTT +TCTACATTTATAAACAGGAGATTATACCTATTATGCATGGTTATTATgaaggaaaatgac +aaaatagaTATAAATCAAATAGCCCACTTCGAGACATATTAAGCATGAATAAACATTAGA +TACTATTAAAATCCTATATATTAACAAAGCCAAAAGTTTCAAACTTTACTTTTTCCCAAC +ATTCTTGTGAAATATGACACATCCCAATCTTAACAGATGCTCATTTGGGATACTGTACTT +GTGAGTGgaagtgtgtatatttgtgtgcaAGTGTGTACTCATATACTTCCACCTTACCAC +CCTAGAAAGGCATGATGAAAATTTAAGatagaaggaaaatataaattgaaaaaaaaaaac +cttaacaaaTGATTCTGACAAATATCTTCTCTTTCCAGGGAGAATCACTGAGCCAGAATA +AAATTGAACACtaaatattctaagaaaaaagGAATCTAGTTTGTCAAAATGTGACTTGAA +TTAATAGATAAGGAGAGTCAGATGATAAGAGGGTCAAAATTATGTTTATCTTAGGAAAAG +TAGAATAGAAAATTTATAAGCAGattaaaaacacataataaaagtAGTAAATAATAATGA +CAGTATCTCAAATCAGTGCAGGGGGGAAAGGCCTACTAATGTGATGGTGGGATAATTGGA +TAGCAATATgggaaaagatatatttaatttatttgctaCACCAAATGCCAGGACAATCTC +TAAGTGAATTCAAGACATaactcttttttcaaaaaaac +>rna-NM_002354.3 CDS=196-1140 Dbxref=Ensembl:ENST00000263735.9,GeneID:4072,GenBank:NM_002354.3,HGNC:HGNC:11529,MIM:185535;Name=NM_002354.3;gbkey=mRNA;gene=EPCAM;product=epithelial cell adhesion molecule;tag=MANE Select;transcript_id=NM_002354.3;gene_biotype=protein_coding;gene_synonym=Ber-Ep4,BerEp4,DIAR5,EGP-2,EGP314,EGP40,ESA,HNPCC8,KS1/4,KSA,LYNCH8,M4S1,MIC18,MK-1,MOC-31,TACSTD1,TROP1;CDS_Dbxref=CCDS:CCDS1833.1,Ensembl:ENSP00000263735.4,GeneID:4072,GenBank:NP_002345.2,HGNC:HGNC:11529,MIM:185535;CDS_Name=NP_002345.2;CDS_gbkey=CDS;CDS_product=epithelial cell adhesion molecule precursor;protein_id=NP_002345.2 +ACAGAGCGCTAGTCCTTCGGCGAGCGAGCACCTTCGACGCGGTCCGGGGACCCCCTCGTC +GCTGTCCTCCCGACGCGGACCCGCGTGCCCCAGGCCTCGCGCTGCCCGGCCGGCTCCTCG +TGTCCCACTCCCGGCGCACGCCCTCCCGCGAGTCCCGGGCCCCTCCCGCGCCCCTCTTCT +CGGCGCGCGCGCAGCATGGCGCCCCCGCAGGTCCTCGCGTTCGGGCTTCTGCTTGCCGCG +GCGACGGCGACTTTTGCCGCAGCTCAGGAAGaatgTGTCTGTGAAAACTACAAGCTGGCc +gtaaactgctttgtgaataATAATCGTCAATGCCAGTGTACTTCAGTTGGTGCACAAAAT +ACTGTCATTTGCTCAAAGCTGGCTGCCAAATGTTTGGtgatgaaggcagaaatgaatgGC +TCAAAACTTGGGAGAAGAGCAAAACCTGAAGGGGCCCTCCAGAACAATGATGGGCTTTAT +GATCCTGACTGCGATGAGAGCGGGCTCTTTAAGGCCAAGCAGTGCAACGGCACCTCCATG +TGCTGGTGTGTGAACACTGCTGGGGTCAGAAGAACAGACAAGGACACTGAAATAACCTGC +TCTGAGCGAGTGAGAACCTACTGGATCATCATTGAACTAAAACACAAAGCAAGAGAAAAA +CCTTATGATAGTAAAAGTTTGCGGACTGCACTTCAGAAGGAGATCACAACGCGTTATCAA +CTGGATCCAAAATTTATCACGAGTATTTTGtatgaGAATAATGTTATCACTATTGATCTG +GTTCAAAATTCTTCTCAAAAAACTCAGAATGATGTGGACATAGCTGATGTggcttattat +tttgaaaaagatGTTAAAGGTGAATCCTTGTTTCATTCTAAGAAAATGGACCTGACAGTA +AATGGGGAACAACTGGATCTGGATCCTGGTCAAACTTTAATTTATTATGTTGATGAAAAA +GCACCTGAATTCTCAATGCAGGGTCTAAAAGCTGGTGTTATTGCTGTTATTGTGGTTGTG +GTGATAGCAGTTGTTGCTGGAATTGTTGTGCTGGTTATttccagaaagaagagaatgGCA +AAGTATGAGAAGGCTGAGATAAAGGAGATGGGTGAGATGCATAGGGAACTCAATGCATAA +CTATATAATTTGAAGATTATAGAAGAAGGGAAATAGCAAATGGACACAAATTACAAATGT +GTGTGCGTGGGACGAAGACATCTTTGAAGGTCATGAGTTTGTTAGTTTAACATCATATAT +TTGTAATAGTGAAACCTGTACTCAAAATATAAGCAGCTTGAAACTGGCTTTACCAATCTT +GAAATTTGACCACAAGTGTCTTATATATGCAGATCTAATGTAAAATCCAGAACTTGGACT +CCATcgttaaaattatttatgtgtaACATTCAAATGTGTGCATTAAATATGCTTCCACAG +TAAAATCTGAAAAACTGATTTGTGATTGAAAGCTGCCTTTCTATTTACTTGAGTCTTGTA +CATACATACTTTTTTATGAgctatgaaataaaacattttaaactgaa diff --git a/pgatk/testdata/output_decoy.fa b/pgatk/testdata/output_decoy.fa deleted file mode 100644 index 5ff83a53..00000000 --- a/pgatk/testdata/output_decoy.fa +++ /dev/null @@ -1,24 +0,0 @@ ->COSMIC:HRAS:p.G13R:Substitution-Missense COSMIC:HRAS:p.G13R:Substitution-Missense -MTEYKLVVVGAGRVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS ->DECOY_COSMIC:HRAS:p.G13R:Substitution-Missense -SLVCKCSMCGPGSEDPPNLKRLKHQRIERVLTYFADEVGQRTKASTEIYPIGYSRALDQAQRSEVTRAALDCKNGVLVMPVDDSDKVRKIQERYQHIDEFSKTNNIAFVCLFGEGTRMYQDRMASYEEQGATDLIDLLCTEGDIVVQKRYSDEITPDYEDVFHNQILQITLASKGVRGAGVVVLKYETM ->COSMIC:HRAS:p.G13S:Substitution-Missense COSMIC:HRAS:p.G13S:Substitution-Missense -MTEYKLVVVGAGSVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS ->DECOY_COSMIC:HRAS:p.G13S:Substitution-Missense -SLVCKCSMCGPGSEDPPNLKRLKHQRIERVLTYFADEVGQRTKASTEIYPIGYSRALDQAQRSEVTRAALDCKNGVLVMPVDDSDKVRKIQERYQHIDEFSKTNNIAFVCLFGEGTRMYQDRMASYEEQGATDLIDLLCTEGDIVVQKRYSDEITPDYEDVFHNQILQITLASKGVSGAGVVVLKYETM ->COSMIC:HRAS:p.G12D:Substitution-Missense COSMIC:HRAS:p.G12D:Substitution-Missense -MTEYKLVVVGADGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS ->DECOY_COSMIC:HRAS:p.G12D:Substitution-Missense -SLVCKCSMCGPGSEDPPNLKRLKHQRIERVLTYFADEVGQRTKASTEIYPIGYSRALDQAQRSEVTRAALDCKNGVLVMPVDDSDKVRKIQERYQHIDEFSKTNNIAFVCLFGEGTRMYQDRMASYEEQGATDLIDLLCTEGDIVVQKRYSDEITPDYEDVFHNQILQITLASKGVGDAGVVVLKYETM ->COSMIC:HRAS:p.Q61L:Substitution-Missense COSMIC:HRAS:p.Q61L:Substitution-Missense -MTEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGLEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS ->DECOY_COSMIC:HRAS:p.Q61L:Substitution-Missense -SLVCKCSMCGPGSEDPPNLKRLKHQRIERVLTYFADEVGQRTKASTEIYPIGYSRALDQAQRSEVTRAALDCKNGVLVMPVDDSDKVRKIQERYQHIDEFSKTNNIAFVCLFGEGTRMYQDRMASYEELGATDLIDLLCTEGDIVVQKRYSDEITPDYEDVFHNQILQITLASKGVGGAGVVVLKYETM ->COSMIC:HRAS:p.Q61R:Substitution-Missense COSMIC:HRAS:p.Q61R:Substitution-Missense -MTEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGREEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS ->DECOY_COSMIC:HRAS:p.Q61R:Substitution-Missense -SLVCKCSMCGPGSEDPPNLKRLKHQRIERVLTYFADEVGQRTKASTEIYPIGYSRALDQAQRSEVTRAALDCKNGVLVMPVDDSDKVRKIQERYQHIDEFSKTNNIAFVCLFGEGTRMYQDRMASYEERGATDLIDLLCTEGDIVVQKRYSDEITPDYEDVFHNQILQITLASKGVGGAGVVVLKYETM ->COSMIC:HRAS:p.R135*:Substitution-Nonsense COSMIC:HRAS:p.R135*:Substitution-Nonsense -MTEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLA ->DECOY_COSMIC:HRAS:p.R135*:Substitution-Nonsense -ALDQAQRSEVTRAALDCKNGVLVMPVDDSDKVRKIQERYQHIDEFSKTNNIAFVCLFGEGTRMYQDRMASYEEQGATDLIDLLCTEGDIVVQKRYSDEITPDYEDVFHNQILQITLASKGVGGAGVVVLKYETM diff --git a/pgatk/testdata/paac_jhu_2014.tar b/pgatk/testdata/paac_jhu_2014.tar deleted file mode 100644 index 4334a780..00000000 Binary files a/pgatk/testdata/paac_jhu_2014.tar and /dev/null differ diff --git a/pgatk/testdata/proteindb_from_CDSs_DNAseq.fa b/pgatk/testdata/proteindb_from_CDSs_DNAseq.fa deleted file mode 100644 index 4cac38b6..00000000 --- a/pgatk/testdata/proteindb_from_CDSs_DNAseq.fa +++ /dev/null @@ -1,26 +0,0 @@ ->ENST00000252835 ENST00000252835;CDS=1-981;gene_version=5;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=OR11H1-201;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS74807;transcript_support_level="NA;(assigned;to;previous;version;4)";protein_id=ENSP00000252835 -MCPLTLQVTGLMNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKAFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII ->ENST00000643195 ENST00000643195;CDS=1-948;gene_version=5;transcript_version=1;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=OR11H1-202;transcript_source=havana;transcript_biotype=protein_coding;tag=basic;protein_id=ENSP00000495403 -MNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKAFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII ->ENST00000317361 ENST00000317361;CDS=328-1053;gene_version=18;transcript_version=11;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-201;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13747;transcript_support_level=1;protein_id=ENSP00000318822 -MCSGAGVMMARWAARGRAGWRSTVRILSPLGHCEPGVSRSCRAAQAMDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEADSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD ->ENST00000615414 ENST00000615414;CDS=499-798;gene_version=18;transcript_version=4;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-213;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=5;protein_id=ENSP00000483534 -MDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD ->ENST00000399767 ENST00000399767;CDS=392-691;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-204;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=2;protein_id=ENSP00000382669 -MDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD ->ENST00000614949 ENST00000614949;CDS=251-550;gene_version=18;transcript_version=4;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-212;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=5;protein_id=ENSP00000477773 -MDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD ->ENST00000622694 ENST00000622694;CDS=174-761;gene_version=18;transcript_version=4;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-215;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13748;transcript_support_level=1;protein_id=ENSP00000480414 -MDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEADSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD ->ENST00000399774 ENST00000399774;CDS=171-758;gene_version=18;transcript_version=7;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-205;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13748;transcript_support_level=1;protein_id=ENSP00000382674 -MDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEADSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD ->ENST00000399765 ENST00000399765;CDS=175-474;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-203;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=2;protein_id=ENSP00000382667 -MDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD ->ENST00000342111 ENST00000342111;CDS=91-504;gene_version=18;transcript_version=9;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-202;transcript_source=havana;transcript_biotype=protein_coding;tag=basic;transcript_support_level=1;protein_id=ENSP00000344594 -MDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAVERGLHGAATVILKVKKTSSGILPGTSPRSGTAWTVASLRAW ->ENST00000551952 ENST00000551952;CDS=85-672;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-209;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13748;transcript_support_level=1;protein_id=ENSP00000449236 -MDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEADSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD ->ENST00000611040 ENST00000611040;CDS=92-391;gene_version=18;transcript_version=1;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-211;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=1;protein_id=ENSP00000483709 -MDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD ->ENST00000617586 ENST00000617586;CDS=174-542;gene_version=18;transcript_version=1;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-214;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;transcript_support_level=5;protein_id=ENSP00000481991 -MDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAVERGLHGAATVVLGQGQHGGCAPEEED diff --git a/pgatk/testdata/proteindb_from_ENSEMBL_VCF-clean.fa b/pgatk/testdata/proteindb_from_ENSEMBL_VCF-clean.fa deleted file mode 100644 index 2ab79378..00000000 --- a/pgatk/testdata/proteindb_from_ENSEMBL_VCF-clean.fa +++ /dev/null @@ -1,204 +0,0 @@ ->ensvar_rs78350717_22.15528913.C.A_ENST00000252835 ensvar_rs78350717_22.15528913.C.A_ENST00000252835 -MCPLTLQVTGLMNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKDFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII ->ensvar_rs78350717_22.15528913.C.T_ENST00000252835 ensvar_rs78350717_22.15528913.C.T_ENST00000252835 -MCPLTLQVTGLMNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKVFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII ->ensvar_rs78350717_22.15528913.C.A_ENST00000643195 ensvar_rs78350717_22.15528913.C.A_ENST00000643195 -MNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKDFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII ->ensvar_rs78350717_22.15528913.C.T_ENST00000643195 ensvar_rs78350717_22.15528913.C.T_ENST00000643195 -MNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKVFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000342111_codon_1 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000342111 codon 1 -MDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAFMELRQ ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000342111_codon_3 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000342111 codon 3 -KSRRHHPEYCQAPRPGRGQHGP ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_1_codon_1 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_1 codon 1 -GRARAPAAGGWSPLGHCEPGVSRSCRAAQAMDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAFMELRQWYSGRGSTEAVRQRRRTEGQGGELWLERQGRFSRALPVPVTTGVFLRRDCEEWGLSGLRGQKWVWDAVCPQSPFPNGCPGQGQPCWVVWCEP ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_1_codon_2 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_1 codon 2 -SRCQACTSGVVVMPQLHRPCLWGRGACVREPGPQPRP ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_1_codon_3 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_1 codon 3 -APALPRTQLSAGTQPARCGPGGVEHVPSGGWPCPIADLSFPGAGWCGRGYQGHFLSLLCLCRPCLNTDSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_1_codon_4 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_1 codon 4 -TDSSRSVTG ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2_codon_1 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2 codon 1 -DAPAPPRLEGGRHWDTVNQE ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2_codon_2 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2 codon 2 -VGAAALPRPWTVRSTTVPASGMSASQTYWCLASSKAVLTTASAESWTHWATSCQCWLPSGRATMSCRLMATAAATPAWEE ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2_codon_3 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2 codon 3 -RQGRQTITQQVLRKKRRRQGAWPSWSCDSGTRAGAARRLCARGGGLRGKGESSGWKGRGDSPGPCRCQ ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2_codon_5 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2 codon 5 -DGTARNGGSQA ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2_codon_6 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2 codon 6 -EGKSGSGMPSAHRAPSPTAAQAKANPVGLCGVSHEAAARLVPQAWS ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2_codon_7 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2 codon 7 -CPSFTGPACGDVVPVCGSLGLSRGPELRHCPEPSSALVLSPPAVALVEWSTCPVGAGLVPSRTCPFPGQGGVGEGIRDIF ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2_codon_8 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2 codon 8 -VCSVSAAPA ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2_codon_9 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2 codon 9 -TQILKVKKTSSGILPGTSPRSGTAWTVASLRAW ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2_codon_10 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2 codon 10 -TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2_codon_11 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2 codon 11 -ILLTRTYAPT ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2_codon_13 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2 codon 13 -PEMGWTERTVPEV ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3_codon_1 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 codon 1 -TRPRPRGWRVVATGTL ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3_codon_2 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 codon 2 -TRSESELPRCPGHGL ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3_codon_3 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 codon 3 -GQQRFQPQG ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3_codon_4 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 codon 4 -VHHKPTGVWLPPKLF ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3_codon_5 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 codon 5 -QQLPQRAGRTGPRAASAGSPVGGLR ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3_codon_7 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 codon 7 -WQPQQPLPLGKNRGRGVRQ ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3_codon_9 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 codon 9 -GRNGGGRERGLHGAATVVLGQGQHGGCAPEEED ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3_codon_10 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 codon 10 -GARGRALVGKAGEILQGLAGASDNWGFPETGLRGMGALRLERAKVGLGCRLPTEPLPQRLPRPRPTLLGCVV ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3_codon_11 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 codon 11 -AMKPLPGLYLRRGRDAPASPALPVGTWCLCAGAWASAEALSSGTAQNPAQRWYSARPLWPWWSGARAQWGLALSHRGPVLSRGRVVWERVSGTFSESALSLPPLPEHRF ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3_codon_12 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 codon 12 -KSRRHHPEYCQAPRPGRGQHGP ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3_codon_13 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 codon 13 -HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3_codon_14 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 codon 14 -RHGEGEDHAGAGPAAGQEGGQSHAVLAP ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3_codon_15 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 codon 15 -CLSHNSEFY ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3_codon_16 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 codon 16 -PEPTHLREELSQKWDGLNGQFQKCDW ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_1 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 1 -DWTAGSGAVIIR ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_2 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 2 -ELRGPPPGWRQWQRVGKTLVFAT ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_4 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 4 -QLTEGGSSSQNQKSQREVASTEKIEDLMGEITIAGIY ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_6 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 6 -VQGPFIHSCN ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_8 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 8 -ETGSCSVAQAGV ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_9 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 9 -WYDHSSLQP ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_10 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 10 -IPGLKESSHLSLLCSWDYRYVRYTWLPLKVFCRGRAQWLTPVIPALWEAKAGGSQGQEFETSLTNMVKPVST ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_11 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 11 -NTKISRVWWRAPVIPATQEAEA ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_12 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 12 -DLLEPRRRRLQ ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_13 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 13 -AEIAPLHSSLGDRARLRLKKKKKVSCRGRALLCCWCNHGSLHPLTPGLKQSSVLSLPKHWDYRHA ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_14 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 14 -PHLVPAIVY ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_15 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 15 -APTECHVLSAGYLSVDKTD ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_17 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 17 -GAYLLAGASDNNTASAEEETEAAGSVAFMELRQWYSGRGSTEAVRQRRRTEGQGGELWLERQGRFSRALPVPVTTGVFLRRDCEEWGLSGLRGQKWVWDAVCPQSPFPNGCPGQGQPCWVVWCEP ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_18 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 18 -SRCQACTSGVVVMPQLHRPCLWGRGACVREPGPQPRP ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_19 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 19 -APALPRTQLSAGTQPARCGPGGVEHVPSGGWPCPIADLSFPGAGWCGRGYQGHFLSLLCLCRPCLNTDSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_20 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 20 -TDSSRSVTG ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_21 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 21 -SSMWSQLYSCFQCRRSPGMSTAFLEKTGWKIAVTSILKTMLNL ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_22 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 22 -PTLKYLH ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_24 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 24 -MKMSIYTYLNGLHIIHT ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_25 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 25 -ICTSVNLHTVPLFPLCRFPLKN ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1_codon_26 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 codon 26 -IGKQVSRK ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_1 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 1 -TGRQGVGLSSSDES ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_2 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 2 -GDPHQGGGNGRG ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_3 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 3 -AKRLYLQHKVRFDS ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_4 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 4 -PRVGAAAKTKKARGKLQAQKK ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_8 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 8 -LASIEHLLGARYRAHSFIHAIKTFFKKRGLALLPRLECSGMITAHCSLEFLASRSPPTSASCVAGIIGTCGTPGSL ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_9 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 9 -KFFVEAGHSGSHL ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_10 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 10 -SQHFGRPRQEDHKVRSSRPA ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_12 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 12 -NPSLLKIQKLAGCGGGRL ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_13 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 13 -SQLLRRLKHETCLNPGGEGCSEPRSRHCTPAWVTEQDSVSKKKKKFLVEAGPCFVAGAITAHCIL ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_14 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 14 -LLALSNLLSSASQSTGITGMHDHTWSLPLFIEHLLSAMY ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_15 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 15 -VLGICQWTKQIKKITALRELTFWQGRQTITQQVLRKKRRRQGAWPSWSCDSGTRAGAARRLCARGGGLRGKGESSGWKGRGDSPGPCRCQ ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_17 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 17 -DGTARNGGSQA ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_18 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 18 -EGKSGSGMPSAHRAPSPTAAQAKANPVGLCGVSHEAAARLVPQAWS ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_19 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 19 -CPSFTGPACGDVVPVCGSLGLSRGPELRHCPEPSSALVLSPPAVALVEWSTCPVGAGLVPSRTCPFPGQGGVGEGIRDIF ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_20 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 20 -VCSVSAAPA ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_21 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 21 -TQILKVKKTSSGILPGTSPRSGTAWTVASLRAW ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_22 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 22 -TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_23 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 23 -ILLTRTYAPT ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_25 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 25 -PEMGWTERTVPEV ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_26 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 26 -LAKARCGHSCIAASSVDGALACQQRS ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_32 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 32 -NIYINILE ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_33 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 33 -KCPFTRI ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_34 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 34 -MAFISSTHESAHL ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2_codon_35 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 codon 35 -IYTRCLYFHCAGSHLKIKLESRFQGSRNKIQ ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_1 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 1 -LDGREWGCHHQMRAKGTPTRVAAMAEGRQNACICNIR ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_2 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 2 -DLTADRGWEQQPKPKKPEGSCKHRKNRRFNGRNNNSWHLLNTYWELGTGPIHSFMQLKLFLRNGVLLCCPGWSVVV ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_3 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 3 -SQLTAALNSWPQGVLPPQPPV ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_5 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 5 -VRAVHLAPFKSFL ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_6 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 6 -RQGTVAHTCNPSTLGGQGRRITRSGVRDQPDQHGETRLYLKYKN ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_7 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 7 -PGVVAGACNPSYSGG ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_9 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 9 -TQEAKVAVSRDRATALQPG ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_10 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 10 -QSKTPSQKKKKSFL ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_11 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 11 -RQGLALLLVQSRLTASSNSWP ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_12 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 12 -AIFCPQPPKALGLQACMTTPGPCHCLLSTY ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_13 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 13 -VPCIKCWVFVSGQNRLKKSQPLGSLPSGRGVRQ ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_15 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 15 -GRNGGGRERGLHGAATVVLGQGQHGGCAPEEED ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_16 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 16 -GARGRALVGKAGEILQGLAGASDNWGFPETGLRGMGALRLERAKVGLGCRLPTEPLPQRLPRPRPTLLGCVV ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_17 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 17 -AMKPLPGLYLRRGRDAPASPALPVGTWCLCAGAWASAEALSSGTAQNPAQRWYSARPLWPWWSGARAQWGLALSHRGPVLSRGRVVWERVSGTFSESALSLPPLPEHRF ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_18 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 18 -KSRRHHPEYCQAPRPGRGQHGP ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_19 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 19 -HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_20 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 20 -RHGEGEDHAGAGPAAGQEGGQSHAVLAP ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_21 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 21 -CLSHNSEFY ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_22 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 22 -PEPTHLREELSQKWDGLNGQFQKCDWLKLDVVTAV ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_24 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 24 -TEPWHVNSVPREDRLEDSCDFYFKDNVKLITHFKISTLIYLNENVHLHVFEWPSYHPHMNLHICKSTHGAFISTVQVPT ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3_codon_25 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 codon 25 -KLNWKAGFKEVETKY ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000617586 ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000617586 -MDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAFMELRQWYSGRGSTEAVRQRRRT diff --git a/pgatk/testdata/proteindb_from_ENSEMBL_VCF.fa b/pgatk/testdata/proteindb_from_ENSEMBL_VCF.fa deleted file mode 100644 index 97d3aabd..00000000 --- a/pgatk/testdata/proteindb_from_ENSEMBL_VCF.fa +++ /dev/null @@ -1,24 +0,0 @@ ->ensvar_rs78350717_22.15528913.C.A_ENST00000252835 -MCPLTLQVTGLMNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKDFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII* ->ensvar_rs78350717_22.15528913.C.T_ENST00000252835 -MCPLTLQVTGLMNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKVFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII* ->ensvar_rs78350717_22.15528913.C.A_ENST00000643195 -MNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKDFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII* ->ensvar_rs78350717_22.15528913.C.T_ENST00000643195 -MNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKVFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII* ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000342111 -MDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAFMELRQ*F*KSRRHHPEYCQAPRPGRGQHGP*HPSGPG ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_1 -GRARAPAAGGWSPLGHCEPGVSRSCRAAQAMDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAFMELRQWYSGRGSTEAVRQRRRTEGQGGELWLERQGRFSRALPVPVTTGVFLRRDCEEWGLSGLRGQKWVWDAVCPQSPFPNGCPGQGQPCWVVWCEP*SRCQACTSGVVVMPQLHRPCLWGRGACVREPGPQPRP*APALPRTQLSAGTQPARCGPGGVEHVPSGGWPCPIADLSFPGAGWCGRGYQGHFLSLLCLCRPCLNTDSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2 -DAPAPPRLEGGRHWDTVNQE*VGAAALPRPWTVRSTTVPASGMSASQTYWCLASSKAVLTTASAESWTHWATSCQCWLPSGRATMSCRLMATAAATPAWEE*RQGRQTITQQVLRKKRRRQGAWPSWSCDSGTRAGAARRLCARGGGLRGKGESSGWKGRGDSPGPCRCQ*QLGFS*DGTARNGGSQA*EGKSGSGMPSAHRAPSPTAAQAKANPVGLCGVSHEAAARLVPQAWS*CPSFTGPACGDVVPVCGSLGLSRGPELRHCPEPSSALVLSPPAVALVEWSTCPVGAGLVPSRTCPFPGQGGVGEGIRDIF*VCSVSAAPA*TQILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LA ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 -TRPRPRGWRVVATGTL*TRSESELPRCPGHGL*GQQRFQPQG*VHHKPTGVWLPPKLF*QQLPQRAGRTGPRAASAGSPVGGLR*AAD*WQPQQPLPLGKNRGRGVRQ*HSKC*GRNGGGRERGLHGAATVVLGQGQHGGCAPEEED*GARGRALVGKAGEILQGLAGASDNWGFPETGLRGMGALRLERAKVGLGCRLPTEPLPQRLPRPRPTLLGCVV*AMKPLPGLYLRRGRDAPASPALPVGTWCLCAGAWASAEALSSGTAQNPAQRWYSARPLWPWWSGARAQWGLALSHRGPVLSRGRVVWERVSGTFSESALSLPPLPEHRF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDW ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 -DWTAGSGAVIIR*ELRGPPPGWRQWQRVGKTLVFAT*GEI*QLTEGGSSSQNQKSQREVASTEKIEDLMGEITIAGIY*TLTGS*VQGPFIHSCN*NFF*ETGSCSVAQAGV*WYDHSSLQP*IPGLKESSHLSLLCSWDYRYVRYTWLPLKVFCRGRAQWLTPVIPALWEAKAGGSQGQEFETSLTNMVKPVST*NTKISRVWWRAPVIPATQEAEA*DLLEPRRRRLQ*AEIAPLHSSLGDRARLRLKKKKKVSCRGRALLCCWCNHGSLHPLTPGLKQSSVLSLPKHWDYRHA*PHLVPAIVY*APTECHVLSAGYLSVDKTD*KNHSP*GAYLLAGASDNNTASAEEETEAAGSVAFMELRQWYSGRGSTEAVRQRRRTEGQGGELWLERQGRFSRALPVPVTTGVFLRRDCEEWGLSGLRGQKWVWDAVCPQSPFPNGCPGQGQPCWVVWCEP*SRCQACTSGVVVMPQLHRPCLWGRGACVREPGPQPRP*APALPRTQLSAGTQPARCGPGGVEHVPSGGWPCPIADLSFPGAGWCGRGYQGHFLSLLCLCRPCLNTDSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG*SSMWSQLYSCFQCRRSPGMSTAFLEKTGWKIAVTSILKTMLNL*PTLKYLH*YT*MKMSIYTYLNGLHIIHT*ICTSVNLHTVPLFPLCRFPLKN*IGKQVSRK*KQNT ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 -TGRQGVGLSSSDES*GDPHQGGGNGRG*AKRLYLQHKVRFDS*PRVGAAAKTKKARGKLQAQKK*KI*WEK*Q*LASIEHLLGARYRAHSFIHAIKTFFKKRGLALLPRLECSGMITAHCSLEFLASRSPPTSASCVAGIIGTCGTPGSL*KFFVEAGHSGSHL*SQHFGRPRQEDHKVRSSRPA*PTW*NPSLLKIQKLAGCGGGRL*SQLLRRLKHETCLNPGGEGCSEPRSRHCTPAWVTEQDSVSKKKKKFLVEAGPCFVAGAITAHCIL*LLALSNLLSSASQSTGITGMHDHTWSLPLFIEHLLSAMY*VLGICQWTKQIKKITALRELTFWQGRQTITQQVLRKKRRRQGAWPSWSCDSGTRAGAARRLCARGGGLRGKGESSGWKGRGDSPGPCRCQ*QLGFS*DGTARNGGSQA*EGKSGSGMPSAHRAPSPTAAQAKANPVGLCGVSHEAAARLVPQAWS*CPSFTGPACGDVVPVCGSLGLSRGPELRHCPEPSSALVLSPPAVALVEWSTCPVGAGLVPSRTCPFPGQGGVGEGIRDIF*VCSVSAAPA*TQILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LAKARCGHSCIAASSVDGALACQQRS*RRQAGR*L*LLF*RQC*TYNPL*NIYINILE*KCPFTRI*MAFISSTHESAHL*IYTRCLYFHCAGSHLKIKLESRFQGSRNKIQ ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 -LDGREWGCHHQMRAKGTPTRVAAMAEGRQNACICNIR*DLTADRGWEQQPKPKKPEGSCKHRKNRRFNGRNNNSWHLLNTYWELGTGPIHSFMQLKLFLRNGVLLCCPGWSVVV*SQLTAALNSWPQGVLPPQPPV*LGL*VRAVHLAPFKSFL*RQGTVAHTCNPSTLGGQGRRITRSGVRDQPDQHGETRLYLKYKN*PGVVAGACNPSYSGG*SMRLA*TQEAKVAVSRDRATALQPG*QSKTPSQKKKKSFL*RQGLALLLVQSRLTASSNSWP*AIFCPQPPKALGLQACMTTPGPCHCLLSTY*VPCIKCWVFVSGQNRLKKSQPLGSLPSGRGVRQ*HSKC*GRNGGGRERGLHGAATVVLGQGQHGGCAPEEED*GARGRALVGKAGEILQGLAGASDNWGFPETGLRGMGALRLERAKVGLGCRLPTEPLPQRLPRPRPTLLGCVV*AMKPLPGLYLRRGRDAPASPALPVGTWCLCAGAWASAEALSSGTAQNPAQRWYSARPLWPWWSGARAQWGLALSHRGPVLSRGRVVWERVSGTFSESALSLPPLPEHRF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDWLKLDVVTAV*LLPV*TEPWHVNSVPREDRLEDSCDFYFKDNVKLITHFKISTLIYLNENVHLHVFEWPSYHPHMNLHICKSTHGAFISTVQVPT*KLNWKAGFKEVETKY ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000617586 -MDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAFMELRQWYSGRGSTEAVRQRRRT diff --git a/pgatk/testdata/proteindb_from_altORFs_DNAseq.fa b/pgatk/testdata/proteindb_from_altORFs_DNAseq.fa deleted file mode 100644 index c99c4aed..00000000 --- a/pgatk/testdata/proteindb_from_altORFs_DNAseq.fa +++ /dev/null @@ -1,78 +0,0 @@ ->altorf_ENST00000252835_1 ENST00000252835;CDS=1-981;gene_version=5;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=OR11H1-201;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS74807;transcript_support_level="NA;(assigned;to;previous;version;4)";protein_id=ENSP00000252835 -MCPLTLQVTGLMNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKAFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII* ->altorf_ENST00000252835_2 ENST00000252835;CDS=1-981;gene_version=5;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=OR11H1-201;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS74807;transcript_support_level="NA;(assigned;to;previous;version;4)";protein_id=ENSP00000252835 -CVP*PCRSLA**MSLSQIPALLL*MNLYSKVSLVSGQFRSSSSHSLLQHMH*L*QGMEPLLLSCGVTGDFTLPCTCSWEISPF*RYGMSLLQFPRCWSTSFQRKKTSPLLDVFSSFISSSLWVHQNACF*L*WPLISTLLSAVPCSILIS*LGISMPNWSYCAGFVDFCGS*SPLFSSLRCPSVAQTLLTMLCVTQGHDLHWIVFLPQESNCFATL*AH*LFLVTSSLLLDPILLS*KLCWVCLQALGDIRPSLPVGLIWLWYHCAIALLWSCM*AQDSDILQGCRKLKLCSMLW*PHSSIPLSIASRIRR*RQP*GKFWGVPT*S ->altorf_ENST00000252835_3 ENST00000252835;CDS=1-981;gene_version=5;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=OR11H1-201;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS74807;transcript_support_level="NA;(assigned;to;previous;version;4)";protein_id=ENSP00000252835 -VSLDLAGHWPNECL*AKFQLCFCK*IYTPRFLL*VDNSDLPLLTLYYNICTDYNREWSHCFCPVV*PATSHSHVHVPGKFLLFRDMVCLFYSSQDVGQLPFREKKHLLCWMFSPVLFLLLFGYIRMLAFDCDGL*SVPCYLPSLALS*YHDWASLCQTGHTVLGLWISVVPDPHCSHLSDALLWPKHY*PCCV*PRATICIGLCFCPKNPTVLLHSKLISYFW*LPLYYWILYSCPESYVGYAFKHWET*GLLYLWVSFGCGITVL*LSYGHVCEPRTRTFYRDAEN*NFVLCYGDPTLQSPYL*PPE*GDKGSPEESSGEFQHNL ->altorf_ENST00000643195_1 ENST00000643195;CDS=1-948;gene_version=5;transcript_version=1;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=OR11H1-202;transcript_source=havana;transcript_biotype=protein_coding;tag=basic;protein_id=ENSP00000495403 -MNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKAFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII* ->altorf_ENST00000643195_2 ENST00000643195;CDS=1-948;gene_version=5;transcript_version=1;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=OR11H1-202;transcript_source=havana;transcript_biotype=protein_coding;tag=basic;protein_id=ENSP00000495403 -*MSLSQIPALLL*MNLYSKVSLVSGQFRSSSSHSLLQHMH*L*QGMEPLLLSCGVTGDFTLPCTCSWEISPF*RYGMSLLQFPRCWSTSFQRKKTSPLLDVFSSFISSSLWVHQNACF*L*WPLISTLLSAVPCSILIS*LGISMPNWSYCAGFVDFCGS*SPLFSSLRCPSVAQTLLTMLCVTQGHDLHWIVFLPQESNCFATL*AH*LFLVTSSLLLDPILLS*KLCWVCLQALGDIRPSLPVGLIWLWYHCAIALLWSCM*AQDSDILQGCRKLKLCSMLW*PHSSIPLSIASRIRR*RQP*GKFWGVPT*S ->altorf_ENST00000643195_3 ENST00000643195;CDS=1-948;gene_version=5;transcript_version=1;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=OR11H1-202;transcript_source=havana;transcript_biotype=protein_coding;tag=basic;protein_id=ENSP00000495403 -ECL*AKFQLCFCK*IYTPRFLL*VDNSDLPLLTLYYNICTDYNREWSHCFCPVV*PATSHSHVHVPGKFLLFRDMVCLFYSSQDVGQLPFREKKHLLCWMFSPVLFLLLFGYIRMLAFDCDGL*SVPCYLPSLALS*YHDWASLCQTGHTVLGLWISVVPDPHCSHLSDALLWPKHY*PCCV*PRATICIGLCFCPKNPTVLLHSKLISYFW*LPLYYWILYSCPESYVGYAFKHWET*GLLYLWVSFGCGITVL*LSYGHVCEPRTRTFYRDAEN*NFVLCYGDPTLQSPYL*PPE*GDKGSPEESSGEFQHNL ->altorf_ENST00000317361_1 ENST00000317361;CDS=328-1053;gene_version=18;transcript_version=11;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-201;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13747;transcript_support_level=1;protein_id=ENSP00000318822 -EKTRGPGRVQATLAGGSESPPTPWSFQHRRHLPAPPERSSGLTKRGQSGRLLGLARSLEHWQ*CADPRCCCWETVEWLNDPRGPWESSEALSHQVAGLARVHSFIQQIRMCSGAGVMMARWAARGRAGWRSTVRILSPLGHCEPGVSRSCRAAQAMDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEADSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG*SSMWSQLYSCFQCRRSPGMSTAFLEKTGWKIAVTSILKTMLNL*PTLKYLH*YT*MKMSIYTYLNGLHIIHT*ICTSVNLHTVPLFPLCRFPLKN*IGKQVSRK*KQNTIFLVKKNYCLLKYNHRGWSYSRQYPV*GKQESEKEHTPYK*KIPLKIGTIYLNTKEPTIFLFKKPHGTEILN*SAALK*WEVRPQYTGA*LFQLRFLCWSQKEPLVVLKGVKVI*GPRSATVCLQNQVTNCIHFFSFHDIKTLLKT*SHGCQKLLRCPGS*PPGNSCKLPISSHTLSSSMPQKCIWREQVSKHKR*KSSWTF*KFSKVVPSLRDSQNQVT*VVPK*IRKSLALETVQHWSAVPVVSYVPGISLKARQWMLGPYHTHCCEQETPVTTT*GHWRRI*VRALTDS*FLLTRCFPVL*EFKIIRKEKQTLYCSACNTYHARAGSIESGQKLTNTKKKCCRAVWRPLFGNKSS*HY ->altorf_ENST00000317361_2 ENST00000317361;CDS=328-1053;gene_version=18;transcript_version=11;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-201;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13747;transcript_support_level=1;protein_id=ENSP00000318822 -RKPAGLAGCRPPLPADRNPRPHRGLSSTADTCRLLPSGAQG*QSAVRAAAYWGSPAP*STGNDVRILAAAAGKLLSG*MTPGDPGRALKPSATKWLGWQGFIHSFNKYECAAVLGS*WLGGQRGAGPAGGAQCGFCRHWDTVNQE*VGAAALPRPWTVRSTTVPASGMSASQTYWCLASSKAVLTTASAESWTHWATSCQCWLPSGRATMSCRLMATAAATPAWEE*RQILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LAKARCGHSCIAASSVDGALACQQRS*RRQAGR*L*LLF*RQC*TYNPL*NIYINILE*KCPFTRI*MAFISSTHESAHL*IYTRCLYFHCAGSHLKIKLESRFQGSRNKIQFFW*KKITVY*STTIEDGLTAGSILFEESKNQRRNIPLTNEKFHSK*GLSILILRNQQSSCLKNHMAQRF*TKVLHSNDGKSGPSTQGLDFFNFVSFVGVKKNHLWF*KV*R*FKGPGQPLFVYKIR*LTAYTFSLSMTSRLC*RHEATGARSYCDAPGVSPLVIAVNFQFLAIRSAHPCLRSASGENRFLSIKDERAVGLFKNSAKWFPLLGTVKTKSLR*YQNK*GKA*L*KQCNTGLLFQW*AMSQESV*KHDSGCWVHITHIAVNRKLL*PQHEATGDAYE*GH*RTHDFFLPDAFLFFKSLKSSERKNKLYIVQHAIHTTLGLAQLKVGKSLQILKRSAAAQCGGHCLEINLPNTT ->altorf_ENST00000317361_3 ENST00000317361;CDS=328-1053;gene_version=18;transcript_version=11;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-201;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13747;transcript_support_level=1;protein_id=ENSP00000318822 -ENPRAWPGAGHPCRRIGIPAHTVVFPAPQTPAGSSRAELRADKARSERPLTGARPLLRALAMMCGSSLLLLGNC*VAE*PQGTLGEL*SPQPPSGWAGKGSFIHSTNTNVQRCWGHDGSVGSEGPGRLEEHSADSVATGTL*TRSESELPRCPGHGL*GQQRFQPQG*VHHKPTGVWLPPKLF*QQLPQRAGRTGPRAASAGSPVGGLR*AAD*WQPQQPLPLGKNRGRF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDWLKLDVVTAV*LLPV*TEPWHVNSVPREDRLEDSCDFYFKDNVKLITHFKISTLIYLNENVHLHVFEWPSYHPHMNLHICKSTHGAFISTVQVPT*KLNWKAGFKEVETKYNFFGKKKLLFIKVQP*RMVLQQAVSCLRKARIREGTYPLQMKNSTQNRDYLS*Y*GTNNLPV*KTTWHRDSELKCCTQMMGSPAPVHRGLTFSTSFPLLESKRTTCGSKRCEGDLRAQVSHCLFTKSGN*LHTLFLFP*HQDFAKDMKPRVPEATAMPRELAPW**L*TSNF*PYAQLIHASEVHLERTGF*A*KMKEQLDFLKIQQSGSLS*GQSKPSHLGSTKINKEKLSFRNSATLVCCSSGKLCPRNQFKSTTVDAGSISHTLL*TGNSCDHNMRPLETHMSKGTDGLMISSYQMLSCSLRV*NHQKGKTNSILFSMQYIPR*GWLN*KWAKAYKY*KEVLPRSVEATVWK*IFLTLR ->altorf_ENST00000615414_1 ENST00000615414;CDS=499-798;gene_version=18;transcript_version=4;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-213;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=5;protein_id=ENSP00000483534 -EGPRPAPERRKPAGLAGCRPPLPADRNPRPHRGLSSTADTCRLLPSGAQG*QSAVRAAAYWGSPAP*STGNDVRILAAAAGKLLSG*MTPGDPGRALKPSATKWLGWQGFIHSFNKYECAAVLGS*WLGGQRGAGPAGGAQCGFYSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG*SSMWSQLYSCFQCRRSPGMSTAFLEKTGWKIAVTSILKTMLNL*PTLKYLH*YT*MKMSIYTYLNGLHIIHT*ICTSVNLHTVPLFPLCRFPLKN*IGKQVSRK*KQNTIFLVKKNYCLLKYNHRGWSYSRQYPV*GKQESEKEHTPYK*KIPLKIGTIYLNTKEPTIFLFKKPHGTEILN*SAALK*WEVRPQYTGA*LFQLRFLCWSQKEPLVVLKGVKVI*GPRSATVCLQNQVTNCIHFFSFHDIKTLLKT*SHGCQKLLRCPGS*PPGNSCKLPISSHTLSSSMPQKCIWREQVSKHKR*KSSWTF*KFSKVVPSLRDSQNQVT*VVPK*IRKSLALETVQHWSAVPVVSYVPGISLKARQWMLGPYHTHCCEQETPVTTT*GHWRRI*VRALTDS*FLLTRCFPVL*EFKIIRKEKQTLYCSACNTYHARAGSIESGQKLTNTKKKCCRAVWRPLFGNKSS*H ->altorf_ENST00000615414_2 ENST00000615414;CDS=499-798;gene_version=18;transcript_version=4;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-213;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=5;protein_id=ENSP00000483534 -RGRGQPRRGENPRAWPGAGHPCRRIGIPAHTVVFPAPQTPAGSSRAELRADKARSERPLTGARPLLRALAMMCGSSLLLLGNC*VAE*PQGTLGEL*SPQPPSGWAGKGSFIHSTNTNVQRCWGHDGSVGSEGPGRLEEHSADSILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LAKARCGHSCIAASSVDGALACQQRS*RRQAGR*L*LLF*RQC*TYNPL*NIYINILE*KCPFTRI*MAFISSTHESAHL*IYTRCLYFHCAGSHLKIKLESRFQGSRNKIQFFW*KKITVY*STTIEDGLTAGSILFEESKNQRRNIPLTNEKFHSK*GLSILILRNQQSSCLKNHMAQRF*TKVLHSNDGKSGPSTQGLDFFNFVSFVGVKKNHLWF*KV*R*FKGPGQPLFVYKIR*LTAYTFSLSMTSRLC*RHEATGARSYCDAPGVSPLVIAVNFQFLAIRSAHPCLRSASGENRFLSIKDERAVGLFKNSAKWFPLLGTVKTKSLR*YQNK*GKA*L*KQCNTGLLFQW*AMSQESV*KHDSGCWVHITHIAVNRKLL*PQHEATGDAYE*GH*RTHDFFLPDAFLFFKSLKSSERKNKLYIVQHAIHTTLGLAQLKVGKSLQILKRSAAAQCGGHCLEINLPNT ->altorf_ENST00000615414_3 ENST00000615414;CDS=499-798;gene_version=18;transcript_version=4;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-213;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=5;protein_id=ENSP00000483534 -GAEASPGEEKTRGPGRVQATLAGGSESPPTPWSFQHRRHLPAPPERSSGLTKRGQSGRLLGLARSLEHWQ*CADPRCCCWETVEWLNDPRGPWESSEALSHQVAGLARVHSFIQQIRMCSGAGVMMARWAARGRAGWRSTVRILF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDWLKLDVVTAV*LLPV*TEPWHVNSVPREDRLEDSCDFYFKDNVKLITHFKISTLIYLNENVHLHVFEWPSYHPHMNLHICKSTHGAFISTVQVPT*KLNWKAGFKEVETKYNFFGKKKLLFIKVQP*RMVLQQAVSCLRKARIREGTYPLQMKNSTQNRDYLS*Y*GTNNLPV*KTTWHRDSELKCCTQMMGSPAPVHRGLTFSTSFPLLESKRTTCGSKRCEGDLRAQVSHCLFTKSGN*LHTLFLFP*HQDFAKDMKPRVPEATAMPRELAPW**L*TSNF*PYAQLIHASEVHLERTGF*A*KMKEQLDFLKIQQSGSLS*GQSKPSHLGSTKINKEKLSFRNSATLVCCSSGKLCPRNQFKSTTVDAGSISHTLL*TGNSCDHNMRPLETHMSKGTDGLMISSYQMLSCSLRV*NHQKGKTNSILFSMQYIPR*GWLN*KWAKAYKY*KEVLPRSVEATVWK*IFLT ->altorf_ENST00000399767_1 ENST00000399767;CDS=392-691;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-204;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=2;protein_id=ENSP00000382669 -EGGSARGAIRRKRVVDRVRAPGRRCLGPDAPAPPRLEGGQQRFQPQG*VHHKPTGVWLPPKLF*QQLPQRAGRTGPRAASAGSPVGGLR*AAD*WQPQQPLPLGKNRGRF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDWLKLDVVTAV*LLPV*TEPWHVNSVPREDRLEDSCDFYFKDNVKLITHFKISTLIYLNENVHLHVFEWPSYHPHMNLHICKSTHGAFISTVQVPT*KLNWKAGFKEVETKYNFFGKKKLLFIKVQP*RMVLQQAVSCLRKARIREGTYPLQMKNSTQNRDYLS*Y*GTNNLPV*KTTWHRDSELKCCTQMMGSPAPVHRGLTFSTSFPLLESKRTTCGSKRCEGDLRAQVSHCLFTKSGN*LHTLFLFP*HQDFAKDMKPRVPEATAMPRELAPW**L*TSNF*PYAQLIHASEVHLERTGF*A*KMKEQLDFLKIQQSGSLS*GQSKPSHLGSTKINKEKLSFRNSATLVCCSSGKLCPRNQFKSTTVDAGSISHTLL*TGNSCDHNMRPLETHMSKGTDGLMISSYQMLSCSLRV*NHQKGKTNSILFSMQYIPR*GWLN*KWAKAYKY*KEVLPRSVEATVWK*IFLT ->altorf_ENST00000399767_2 ENST00000399767;CDS=392-691;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-204;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=2;protein_id=ENSP00000382669 -KEEARGAP*GGSG*STVSARLGDAASARTRPRPRGWRVVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEADSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG*SSMWSQLYSCFQCRRSPGMSTAFLEKTGWKIAVTSILKTMLNL*PTLKYLH*YT*MKMSIYTYLNGLHIIHT*ICTSVNLHTVPLFPLCRFPLKN*IGKQVSRK*KQNTIFLVKKNYCLLKYNHRGWSYSRQYPV*GKQESEKEHTPYK*KIPLKIGTIYLNTKEPTIFLFKKPHGTEILN*SAALK*WEVRPQYTGA*LFQLRFLCWSQKEPLVVLKGVKVI*GPRSATVCLQNQVTNCIHFFSFHDIKTLLKT*SHGCQKLLRCPGS*PPGNSCKLPISSHTLSSSMPQKCIWREQVSKHKR*KSSWTF*KFSKVVPSLRDSQNQVT*VVPK*IRKSLALETVQHWSAVPVVSYVPGISLKARQWMLGPYHTHCCEQETPVTTT*GHWRRI*VRALTDS*FLLTRCFPVL*EFKIIRKEKQTLYCSACNTYHARAGSIESGQKLTNTKKKCCRAVWRPLFGNKSS*H ->altorf_ENST00000399767_3 ENST00000399767;CDS=392-691;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-204;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=2;protein_id=ENSP00000382669 -RRKRAGRHKEEAGSRPCPRAWETLPRPGRARAPAAGGWSTTVPASGMSASQTYWCLASSKAVLTTASAESWTHWATSCQCWLPSGRATMSCRLMATAAATPAWEE*RQILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LAKARCGHSCIAASSVDGALACQQRS*RRQAGR*L*LLF*RQC*TYNPL*NIYINILE*KCPFTRI*MAFISSTHESAHL*IYTRCLYFHCAGSHLKIKLESRFQGSRNKIQFFW*KKITVY*STTIEDGLTAGSILFEESKNQRRNIPLTNEKFHSK*GLSILILRNQQSSCLKNHMAQRF*TKVLHSNDGKSGPSTQGLDFFNFVSFVGVKKNHLWF*KV*R*FKGPGQPLFVYKIR*LTAYTFSLSMTSRLC*RHEATGARSYCDAPGVSPLVIAVNFQFLAIRSAHPCLRSASGENRFLSIKDERAVGLFKNSAKWFPLLGTVKTKSLR*YQNK*GKA*L*KQCNTGLLFQW*AMSQESV*KHDSGCWVHITHIAVNRKLL*PQHEATGDAYE*GH*RTHDFFLPDAFLFFKSLKSSERKNKLYIVQHAIHTTLGLAQLKVGKSLQILKRSAAAQCGGHCLEINLPNT ->altorf_ENST00000614949_1 ENST00000614949;CDS=251-550;gene_version=18;transcript_version=4;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-212;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=5;protein_id=ENSP00000477773 -EGGSARGAIRRKRVVDRVRAPGRRCLGPDAPAPPRLEGGRHWDTVNQE*VGAAALPRPWTVRF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDWLKLDVVTAV*LLPV*TEPWHVNSVPREDRLEDSCDFYFKDNVKLITHFKISTLIYLNENVHLHVFEWPSYHPHMNLHICKSTHGAFISTVQVPT*KLNWKAGFKEVETKYNFFGKKKLLFIKVQP*RMVLQQAVSCLRKARIREGTYPLQMKNSTQNRDYLS*Y*GTNNLPV*KTTWHRDSELKCCTQMMGSPAPVHRGLTFSTSFPLLESKRTTCGSKRCEGDLRAQVSHCLFTKSGN*LHTLFLFP*HQDFAKDMKPRVPEATAMPRELAPW**L*TSNF*PYAQLIHASEVHLERTGF*A*KMKEQLDFLKIQQSGSLS*GQSKPSHLGSTKINKEKLSFRNSATLVCCSSGKLCPRNQFKSTTVDAGSISHTLL*TGNSCDHNMRPLETHMSKGTDGLMISSYQMLSCSLRV*NHQKGKTNSILFSMQYIPR*GWLN*KWAKAYKY*KEVLPRSVEATVWK*IFLT ->altorf_ENST00000614949_2 ENST00000614949;CDS=251-550;gene_version=18;transcript_version=4;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-212;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=5;protein_id=ENSP00000477773 -KEEARGAP*GGSG*STVSARLGDAASARTRPRPRGWRVVATGTL*TRSESELPRCPGHGL*DSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG*SSMWSQLYSCFQCRRSPGMSTAFLEKTGWKIAVTSILKTMLNL*PTLKYLH*YT*MKMSIYTYLNGLHIIHT*ICTSVNLHTVPLFPLCRFPLKN*IGKQVSRK*KQNTIFLVKKNYCLLKYNHRGWSYSRQYPV*GKQESEKEHTPYK*KIPLKIGTIYLNTKEPTIFLFKKPHGTEILN*SAALK*WEVRPQYTGA*LFQLRFLCWSQKEPLVVLKGVKVI*GPRSATVCLQNQVTNCIHFFSFHDIKTLLKT*SHGCQKLLRCPGS*PPGNSCKLPISSHTLSSSMPQKCIWREQVSKHKR*KSSWTF*KFSKVVPSLRDSQNQVT*VVPK*IRKSLALETVQHWSAVPVVSYVPGISLKARQWMLGPYHTHCCEQETPVTTT*GHWRRI*VRALTDS*FLLTRCFPVL*EFKIIRKEKQTLYCSACNTYHARAGSIESGQKLTNTKKKCCRAVWRPLFGNKSS*H ->altorf_ENST00000614949_3 ENST00000614949;CDS=251-550;gene_version=18;transcript_version=4;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-212;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=5;protein_id=ENSP00000477773 -RRKRAGRHKEEAGSRPCPRAWETLPRPGRARAPAAGGWSPLGHCEPGVSRSCRAAQAMDCEILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LAKARCGHSCIAASSVDGALACQQRS*RRQAGR*L*LLF*RQC*TYNPL*NIYINILE*KCPFTRI*MAFISSTHESAHL*IYTRCLYFHCAGSHLKIKLESRFQGSRNKIQFFW*KKITVY*STTIEDGLTAGSILFEESKNQRRNIPLTNEKFHSK*GLSILILRNQQSSCLKNHMAQRF*TKVLHSNDGKSGPSTQGLDFFNFVSFVGVKKNHLWF*KV*R*FKGPGQPLFVYKIR*LTAYTFSLSMTSRLC*RHEATGARSYCDAPGVSPLVIAVNFQFLAIRSAHPCLRSASGENRFLSIKDERAVGLFKNSAKWFPLLGTVKTKSLR*YQNK*GKA*L*KQCNTGLLFQW*AMSQESV*KHDSGCWVHITHIAVNRKLL*PQHEATGDAYE*GH*RTHDFFLPDAFLFFKSLKSSERKNKLYIVQHAIHTTLGLAQLKVGKSLQILKRSAAAQCGGHCLEINLPNT ->altorf_ENST00000622694_1 ENST00000622694;CDS=174-761;gene_version=18;transcript_version=4;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-215;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13748;transcript_support_level=1;protein_id=ENSP00000480414 -EGGSARGAIRRKRVVDRVRAPGRRCLGPDAPAPPRLEGGRHWDTVNQE*VGAAALPRPWTVRSTTVPASGMSASQTYWCLASSKAVLTTASAESWTHWATSCQCWLPSGRATMSCRLMATAAATPAWEE*RQILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LAKARCGHSCIAASSVDGALACQQRS*RRQAGR*L*LLF*RQC*TYNPL*NIYINILE*KCPFTRI*MAFISSTHESAHL*IYTRCLYFHCAGSHLKIKLESRFQGSRNKIQFFW*KKITVY*STTIEDGLTAGSILFEESKNQRRNIPLTNEKFHSK*GLSILILRNQQSSCLKNHMAQRF*TKVLHSNDGKSGPSTQGLDFFNFVSFVGVKKNHLWF*KV*R*FKGPGQPLFVYKIR*LTAYTFSLSMTSRLC*RHEATGARSYCDAPGVSPLVIAVNFQFLAIRSAHPCLRSASGENRFLSIKDERAVGLFKNSAKWFPLLGTVKTKSLR*YQNK*GKA*L*KQCNTGLLFQW*AMSQESV*KHDSGCWVHITHIAVNRKLL*PQHEATGDAYE*GH*RTHDFFLPDAFLFFKSLKSSERKNKLYIVQHAIHTTLGLAQLKVGKSLQILKRSAAAQCGGHCLEINLPNT ->altorf_ENST00000622694_2 ENST00000622694;CDS=174-761;gene_version=18;transcript_version=4;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-215;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13748;transcript_support_level=1;protein_id=ENSP00000480414 -KEEARGAP*GGSG*STVSARLGDAASARTRPRPRGWRVVATGTL*TRSESELPRCPGHGL*GQQRFQPQG*VHHKPTGVWLPPKLF*QQLPQRAGRTGPRAASAGSPVGGLR*AAD*WQPQQPLPLGKNRGRF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDWLKLDVVTAV*LLPV*TEPWHVNSVPREDRLEDSCDFYFKDNVKLITHFKISTLIYLNENVHLHVFEWPSYHPHMNLHICKSTHGAFISTVQVPT*KLNWKAGFKEVETKYNFFGKKKLLFIKVQP*RMVLQQAVSCLRKARIREGTYPLQMKNSTQNRDYLS*Y*GTNNLPV*KTTWHRDSELKCCTQMMGSPAPVHRGLTFSTSFPLLESKRTTCGSKRCEGDLRAQVSHCLFTKSGN*LHTLFLFP*HQDFAKDMKPRVPEATAMPRELAPW**L*TSNF*PYAQLIHASEVHLERTGF*A*KMKEQLDFLKIQQSGSLS*GQSKPSHLGSTKINKEKLSFRNSATLVCCSSGKLCPRNQFKSTTVDAGSISHTLL*TGNSCDHNMRPLETHMSKGTDGLMISSYQMLSCSLRV*NHQKGKTNSILFSMQYIPR*GWLN*KWAKAYKY*KEVLPRSVEATVWK*IFLT ->altorf_ENST00000622694_3 ENST00000622694;CDS=174-761;gene_version=18;transcript_version=4;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-215;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13748;transcript_support_level=1;protein_id=ENSP00000480414 -RRKRAGRHKEEAGSRPCPRAWETLPRPGRARAPAAGGWSPLGHCEPGVSRSCRAAQAMDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEADSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG*SSMWSQLYSCFQCRRSPGMSTAFLEKTGWKIAVTSILKTMLNL*PTLKYLH*YT*MKMSIYTYLNGLHIIHT*ICTSVNLHTVPLFPLCRFPLKN*IGKQVSRK*KQNTIFLVKKNYCLLKYNHRGWSYSRQYPV*GKQESEKEHTPYK*KIPLKIGTIYLNTKEPTIFLFKKPHGTEILN*SAALK*WEVRPQYTGA*LFQLRFLCWSQKEPLVVLKGVKVI*GPRSATVCLQNQVTNCIHFFSFHDIKTLLKT*SHGCQKLLRCPGS*PPGNSCKLPISSHTLSSSMPQKCIWREQVSKHKR*KSSWTF*KFSKVVPSLRDSQNQVT*VVPK*IRKSLALETVQHWSAVPVVSYVPGISLKARQWMLGPYHTHCCEQETPVTTT*GHWRRI*VRALTDS*FLLTRCFPVL*EFKIIRKEKQTLYCSACNTYHARAGSIESGQKLTNTKKKCCRAVWRPLFGNKSS*H ->altorf_ENST00000399774_1 ENST00000399774;CDS=171-758;gene_version=18;transcript_version=7;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-205;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13748;transcript_support_level=1;protein_id=ENSP00000382674 -GGSARGAIRRKRVVDRVRAPGRRCLGPDAPAPPRLEGGRHWDTVNQE*VGAAALPRPWTVRSTTVPASGMSASQTYWCLASSKAVLTTASAESWTHWATSCQCWLPSGRATMSCRLMATAAATPAWEE*RQILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LAKARCGHSCIAASSVDGALACQQRS*RRQAGR*L*LLF*RQC*TYNPL*NIYINILE*KCPFTRI*MAFISSTHESAHL*IYTRCLYFHCAGSHLKIKLESRFQGSRNKIQFFW*KKITVY*STTIEDGLTAGSILFEESKNQRRNIPLTNEKFHSK*GLSILILRNQQSSCLKNHMAQRF*TKVLHSNDGKSGPSTQGLDFFNFVSFVGVKKNHLWF*KV*R*FKGPGQPLFVYKIR*LTAYTFSLSMTSRLC*RHEATGARSYCDAPGVSPLVIAVNFQFLAIRSAHPCLRSASGENRFLSIKDERAVGLFKNSAKWFPLLGTVKTKSLR*YQNK*GKA*L*KQCNTGLLFQW*AMSQESV*KHDSGCWVHITHIAVNRKLL*PQHEATGDAYE*GH*RTHDFFLPDAFLFFKSLKSSERKNKLYIVQHAIHTTLGLAQLKVGKSLQILKRSAAAQCGG ->altorf_ENST00000399774_2 ENST00000399774;CDS=171-758;gene_version=18;transcript_version=7;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-205;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13748;transcript_support_level=1;protein_id=ENSP00000382674 -EEARGAP*GGSG*STVSARLGDAASARTRPRPRGWRVVATGTL*TRSESELPRCPGHGL*GQQRFQPQG*VHHKPTGVWLPPKLF*QQLPQRAGRTGPRAASAGSPVGGLR*AAD*WQPQQPLPLGKNRGRF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDWLKLDVVTAV*LLPV*TEPWHVNSVPREDRLEDSCDFYFKDNVKLITHFKISTLIYLNENVHLHVFEWPSYHPHMNLHICKSTHGAFISTVQVPT*KLNWKAGFKEVETKYNFFGKKKLLFIKVQP*RMVLQQAVSCLRKARIREGTYPLQMKNSTQNRDYLS*Y*GTNNLPV*KTTWHRDSELKCCTQMMGSPAPVHRGLTFSTSFPLLESKRTTCGSKRCEGDLRAQVSHCLFTKSGN*LHTLFLFP*HQDFAKDMKPRVPEATAMPRELAPW**L*TSNF*PYAQLIHASEVHLERTGF*A*KMKEQLDFLKIQQSGSLS*GQSKPSHLGSTKINKEKLSFRNSATLVCCSSGKLCPRNQFKSTTVDAGSISHTLL*TGNSCDHNMRPLETHMSKGTDGLMISSYQMLSCSLRV*NHQKGKTNSILFSMQYIPR*GWLN*KWAKAYKY*KEVLPRSVEA ->altorf_ENST00000399774_3 ENST00000399774;CDS=171-758;gene_version=18;transcript_version=7;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-205;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13748;transcript_support_level=1;protein_id=ENSP00000382674 -RKRAGRHKEEAGSRPCPRAWETLPRPGRARAPAAGGWSPLGHCEPGVSRSCRAAQAMDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEADSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG*SSMWSQLYSCFQCRRSPGMSTAFLEKTGWKIAVTSILKTMLNL*PTLKYLH*YT*MKMSIYTYLNGLHIIHT*ICTSVNLHTVPLFPLCRFPLKN*IGKQVSRK*KQNTIFLVKKNYCLLKYNHRGWSYSRQYPV*GKQESEKEHTPYK*KIPLKIGTIYLNTKEPTIFLFKKPHGTEILN*SAALK*WEVRPQYTGA*LFQLRFLCWSQKEPLVVLKGVKVI*GPRSATVCLQNQVTNCIHFFSFHDIKTLLKT*SHGCQKLLRCPGS*PPGNSCKLPISSHTLSSSMPQKCIWREQVSKHKR*KSSWTF*KFSKVVPSLRDSQNQVT*VVPK*IRKSLALETVQHWSAVPVVSYVPGISLKARQWMLGPYHTHCCEQETPVTTT*GHWRRI*VRALTDS*FLLTRCFPVL*EFKIIRKEKQTLYCSACNTYHARAGSIESGQKLTNTKKKCCRAVWR ->altorf_ENST00000399765_1 ENST00000399765;CDS=175-474;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-203;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=2;protein_id=ENSP00000382667 -GSARGAIRRKRVVDRVRAPGRRCLGPDAPAPPRLEGDSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG*SSMWSQLYSCFQCRRSPGMSTAFLEKTGWKIAVTSILKTMLNL*PTLKYLH*YT*MKMSIYTYLNGLHIIHT*ICTSVNLHTVPLFPLCRFPLKN*IGKQVSRK*KQNTIFLVKKNYCLLKYNHRGWSYSRQYPV*GKQESEKEHTPYK*KIPLKIGTIYLNTKEPTIFLFKKPHGTEILN*SAALK*WEVRPQYTGA*LFQLRFLCWSQKEPLVVLKGVKVI*GPRSATVCLQNQVTNCIHFFSFHDIKTLLKT*SHGCQKLLRCPGS*PPGNSCKLPISSHTLSSSMPQKCIWREQVSKHKR*KSSWTF*KFSKVVPSLRDSQNQVT*VVPK*IRKSLALETVQHWSAVPVVSYVPGISLKARQWMLGPYHTHCCEQETPVTTT*GHWRRI*VRALTDS*FLLTRCFPVL*EFKIIRKEKQTLYCSACNTYHARAGSIESGQKLTNTKKKCCRAVW ->altorf_ENST00000399765_2 ENST00000399765;CDS=175-474;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-203;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=2;protein_id=ENSP00000382667 -EARGAP*GGSG*STVSARLGDAASARTRPRPRGWRVILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LAKARCGHSCIAASSVDGALACQQRS*RRQAGR*L*LLF*RQC*TYNPL*NIYINILE*KCPFTRI*MAFISSTHESAHL*IYTRCLYFHCAGSHLKIKLESRFQGSRNKIQFFW*KKITVY*STTIEDGLTAGSILFEESKNQRRNIPLTNEKFHSK*GLSILILRNQQSSCLKNHMAQRF*TKVLHSNDGKSGPSTQGLDFFNFVSFVGVKKNHLWF*KV*R*FKGPGQPLFVYKIR*LTAYTFSLSMTSRLC*RHEATGARSYCDAPGVSPLVIAVNFQFLAIRSAHPCLRSASGENRFLSIKDERAVGLFKNSAKWFPLLGTVKTKSLR*YQNK*GKA*L*KQCNTGLLFQW*AMSQESV*KHDSGCWVHITHIAVNRKLL*PQHEATGDAYE*GH*RTHDFFLPDAFLFFKSLKSSERKNKLYIVQHAIHTTLGLAQLKVGKSLQILKRSAAAQCG ->altorf_ENST00000399765_3 ENST00000399765;CDS=175-474;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-203;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=2;protein_id=ENSP00000382667 -KRAGRHKEEAGSRPCPRAWETLPRPGRARAPAAGG*F*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDWLKLDVVTAV*LLPV*TEPWHVNSVPREDRLEDSCDFYFKDNVKLITHFKISTLIYLNENVHLHVFEWPSYHPHMNLHICKSTHGAFISTVQVPT*KLNWKAGFKEVETKYNFFGKKKLLFIKVQP*RMVLQQAVSCLRKARIREGTYPLQMKNSTQNRDYLS*Y*GTNNLPV*KTTWHRDSELKCCTQMMGSPAPVHRGLTFSTSFPLLESKRTTCGSKRCEGDLRAQVSHCLFTKSGN*LHTLFLFP*HQDFAKDMKPRVPEATAMPRELAPW**L*TSNF*PYAQLIHASEVHLERTGF*A*KMKEQLDFLKIQQSGSLS*GQSKPSHLGSTKINKEKLSFRNSATLVCCSSGKLCPRNQFKSTTVDAGSISHTLL*TGNSCDHNMRPLETHMSKGTDGLMISSYQMLSCSLRV*NHQKGKTNSILFSMQYIPR*GWLN*KWAKAYKY*KEVLPRSV ->altorf_ENST00000342111_1 ENST00000342111;CDS=91-504;gene_version=18;transcript_version=9;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-202;transcript_source=havana;transcript_biotype=protein_coding;tag=basic;transcript_support_level=1;protein_id=ENSP00000344594 -GRARAPAAGGWSPLGHCEPGVSRSCRAAQAMDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAVERGLHGAATVILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LAKARCGHSCIAASSVDGA ->altorf_ENST00000342111_2 ENST00000342111;CDS=91-504;gene_version=18;transcript_version=9;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-202;transcript_source=havana;transcript_biotype=protein_coding;tag=basic;transcript_support_level=1;protein_id=ENSP00000344594 -DAPAPPRLEGGRHWDTVNQE*VGAAALPRPWTVRSTTVPASGMSASQTYWCLASSKAVLTTASAESWTHWATSCQCWLPSGRATMSCRLMATAAATPAWEE*RQGRQTITQQVLRKKRRRQGAWQLSVAFMELRQ*F*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDWLKLDVVTAV*LLPV*TEP ->altorf_ENST00000342111_3 ENST00000342111;CDS=91-504;gene_version=18;transcript_version=9;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-202;transcript_source=havana;transcript_biotype=protein_coding;tag=basic;transcript_support_level=1;protein_id=ENSP00000344594 -TRPRPRGWRVVATGTL*TRSESELPRCPGHGL*GQQRFQPQG*VHHKPTGVWLPPKLF*QQLPQRAGRTGPRAASAGSPVGGLR*AAD*WQPQQPLPLGKNRGRGVRQ*HSKC*GRNGGGRERGS*AWPSWSCDSDSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG*SSMWSQLYSCFQCRRSP ->altorf_ENST00000551952_1 ENST00000551952;CDS=85-672;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-209;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13748;transcript_support_level=1;protein_id=ENSP00000449236 -HCLKQSRKGSPLGHCEPGVSRSCRAAQAMDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEADSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG ->altorf_ENST00000551952_2 ENST00000551952;CDS=85-672;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-209;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13748;transcript_support_level=1;protein_id=ENSP00000449236 -TV*NSRVRGRHWDTVNQE*VGAAALPRPWTVRSTTVPASGMSASQTYWCLASSKAVLTTASAESWTHWATSCQCWLPSGRATMSCRLMATAAATPAWEE*RQILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LA ->altorf_ENST00000551952_3 ENST00000551952;CDS=85-672;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-209;transcript_source=ensembl_havana;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13748;transcript_support_level=1;protein_id=ENSP00000449236 -LSETVA*GVATGTL*TRSESELPRCPGHGL*GQQRFQPQG*VHHKPTGVWLPPKLF*QQLPQRAGRTGPRAASAGSPVGGLR*AAD*WQPQQPLPLGKNRGRF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDW ->altorf_ENST00000611040_1 ENST00000611040;CDS=92-391;gene_version=18;transcript_version=1;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-211;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=1;protein_id=ENSP00000483709 -HCLKQSRKGF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDW ->altorf_ENST00000611040_2 ENST00000611040;CDS=92-391;gene_version=18;transcript_version=1;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-211;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=1;protein_id=ENSP00000483709 -TV*NSRVRDSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG ->altorf_ENST00000611040_3 ENST00000611040;CDS=92-391;gene_version=18;transcript_version=1;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-211;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;ccds_id=CCDS13749;transcript_support_level=1;protein_id=ENSP00000483709 -LSETVA*GILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LA ->altorf_ENST00000617586_1 ENST00000617586;CDS=174-542;gene_version=18;transcript_version=1;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-214;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;transcript_support_level=5;protein_id=ENSP00000481991 -EGGSARGAIRRKRVVDRVRAPGRRCLGPDAPAPPRLEGGRHWDTVNQE*VGAAALPRPWTVRSTTVPASGMSASQTYWCLASSKAVLTTASAESWTHWATSCQCWLPSGRATMSCRLMATAAATPAWEE*RQGRQTITQQVLRKKRRRQGAWQLSVAFMELRQWYSGRGSTEAVRQRRRT ->altorf_ENST00000617586_2 ENST00000617586;CDS=174-542;gene_version=18;transcript_version=1;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-214;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;transcript_support_level=5;protein_id=ENSP00000481991 -KEEARGAP*GGSG*STVSARLGDAASARTRPRPRGWRVVATGTL*TRSESELPRCPGHGL*GQQRFQPQG*VHHKPTGVWLPPKLF*QQLPQRAGRTGPRAASAGSPVGGLR*AAD*WQPQQPLPLGKNRGRGVRQ*HSKC*GRNGGGRERGS*AWPSWSCDSGTRAGAARRLCARGGGL ->altorf_ENST00000617586_3 ENST00000617586;CDS=174-542;gene_version=18;transcript_version=1;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-214;transcript_source=ensembl;transcript_biotype=protein_coding;tag=basic;transcript_support_level=5;protein_id=ENSP00000481991 -RRKRAGRHKEEAGSRPCPRAWETLPRPGRARAPAAGGWSPLGHCEPGVSRSCRAAQAMDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAVERGLHGAATVVLGQGQHGGCAPEEED* diff --git a/pgatk/testdata/proteindb_from_custom_VCF.fa b/pgatk/testdata/proteindb_from_custom_VCF.fa deleted file mode 100644 index 5325f01a..00000000 --- a/pgatk/testdata/proteindb_from_custom_VCF.fa +++ /dev/null @@ -1,12 +0,0 @@ ->varsample_rs78350717_22.15528913.C.A_ENST00000252835 -MCPLTLQVTGLMNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKDFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII* ->varsample_rs78350717_22.15528913.C.T_ENST00000252835 -MCPLTLQVTGLMNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKVFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII* ->varsample_rs78350717_22.15528913.C.A_ENST00000643195 -MNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKDFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII* ->varsample_rs78350717_22.15528913.C.T_ENST00000643195 -MNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKVFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII* ->varsample_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000342111 -MDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAFMELRQ*F*KSRRHHPEYCQAPRPGRGQHGP*HPSGPG ->varsample_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000617586 -MDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAFMELRQWYSGRGSTEAVRQRRRT diff --git a/pgatk/testdata/proteindb_from_gnomad_VCF.fa b/pgatk/testdata/proteindb_from_gnomad_VCF.fa deleted file mode 100644 index 93974340..00000000 --- a/pgatk/testdata/proteindb_from_gnomad_VCF.fa +++ /dev/null @@ -1,4 +0,0 @@ ->gnomvar_rs2691305_1.69511.A.G_ENST00000335137.3 -MVTEFIFLGLSDSQELQTFLFMLFFVFYGGIVFGNLLIVITVVSDSHLHSPMYFLLANLSLIDLSLSSVTAPKMITDFFSQRKVISFKGCLVQIFLLHFFGGSEMVILIAMGFDRYIAICKPLHYTTIMCGNACVGIMAVAWGIGFLHSVSQLAFAVHLLFCGPNEVDSFYCDLPRVIKLACTDTYRLDIMVIANSGVLTVCSFVLLIISYTIILMTIQHRPLDKSSKALSTLTAHITVVLLFFGPCVFIYAWPFPIKSLDKFLAVFYSVITPLLNPIIYTLRNKDMKTAIRQLRKWDAHSSVKF* ->gnomvar_rs200505207_1.69761.A.T_ENST00000335137.3 -MVTEFIFLGLSDSQELQTFLFMLFFVFYGGIVFGNLLIVITVVSDSHLHSPMYFLLANLSLIDLSLSSVTAPKMITDFFSQRKVISFKGCLVQIFLLHFFGGSEMVILIAMGFDRYIAICKPLHYTTIMCGNACVGIMAVTWGIGFLHSVSQLAFAVHLLFCGPNEVDSFYCDLPRVIKLACTDTYRLDIMVIANSGVLTVCSFVLLIISYTIILMTIQHRPLVKSSKALSTLTAHITVVLLFFGPCVFIYAWPFPIKSLDKFLAVFYSVITPLLNPIIYTLRNKDMKTAIRQLRKWDAHSSVKF* diff --git a/pgatk/testdata/proteindb_from_lncRNAs_DNAseq.fa b/pgatk/testdata/proteindb_from_lncRNAs_DNAseq.fa deleted file mode 100644 index 20303732..00000000 --- a/pgatk/testdata/proteindb_from_lncRNAs_DNAseq.fa +++ /dev/null @@ -1,12 +0,0 @@ ->lncRNA_ENST00000494097_1 ENST00000494097;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-207;transcript_source=havana;transcript_biotype=retained_intron;transcript_support_level=1 -DWTAGSGAVIIR*ELRGPPPGWRQWQRVGKTLVFAT*GEI*QLTEGGSSSQNQKSQREVASTEKIEDLMGEITIAGIY*TLTGS*VQGPFIHSCN*NFF*ETGSCSVAQAGV*WYDHSSLQP*IPGLKESSHLSLLCSWDYRYVRYTWLPLKVFCRGRAQWLTPVIPALWEAKAGGSQGQEFETSLTNMVKPVST*NTKISRVWWRAPVIPATQEAEA*DLLEPRRRRLQ*AEIAPLHSSLGDRARLRLKKKKKVSCRGRALLCCWCNHGSLHPLTPGLKQSSVLSLPKHWDYRHA*PHLVPAIVY*APTECHVLSAGYLSVDKTD*KNHSP*GAYLLAGASDNNTASAEEETEAAGSVAVERGLHGAATVVLGQGQHGGCAPEEED*GARGRALVGKAGEILQGLAGASDNWGFPETGLRGMGALRLERAKVGLGCRLPTEPLPQRLPRPRPTLLGCVV*AMKPLPGLYLRRGRDAPASPALPVGTWCLCAGAWASAEALSSGTAQNPAQRWYSARPLWPWWSGARAQWGLALSHRGPVLSRGRVVWERVSGTFSESALSLPPLPEHRF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDWLKLDVVTAV*LLPV*TEPWHVNSVPREDRLEDSCDFYFKDNVKLITHFKISTLIYLNENVHLHVFEWPSYHPHMNLHICKSTHGAFISTVQVPT*KLNWKAGFKEVETKY ->lncRNA_ENST00000494097_2 ENST00000494097;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-207;transcript_source=havana;transcript_biotype=retained_intron;transcript_support_level=1 -TGRQGVGLSSSDES*GDPHQGGGNGRG*AKRLYLQHKVRFDS*PRVGAAAKTKKARGKLQAQKK*KI*WEK*Q*LASIEHLLGARYRAHSFIHAIKTFFKKRGLALLPRLECSGMITAHCSLEFLASRSPPTSASCVAGIIGTCGTPGSL*KFFVEAGHSGSHL*SQHFGRPRQEDHKVRSSRPA*PTW*NPSLLKIQKLAGCGGGRL*SQLLRRLKHETCLNPGGEGCSEPRSRHCTPAWVTEQDSVSKKKKKFLVEAGPCFVAGAITAHCIL*LLALSNLLSSASQSTGITGMHDHTWSLPLFIEHLLSAMY*VLGICQWTKQIKKITALRELTFWQGRQTITQQVLRKKRRRQGAWQLSVAFMELRQWYSGRGSTEAVRQRRRTEGQGGELWLERQGRFSRALPVPVTTGVFLRRDCEEWGLSGLRGQKWVWDAVCPQSPFPNGCPGQGQPCWVVWCEP*SRCQACTSGVVVMPQLHRPCLWGRGACVREPGPQPRP*APALPRTQLSAGTQPARCGPGGVEHVPSGGWPCPIADLSFPGAGWCGRGYQGHFLSLLCLCRPCLNTDSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG*SSMWSQLYSCFQCRRSPGMSTAFLEKTGWKIAVTSILKTMLNL*PTLKYLH*YT*MKMSIYTYLNGLHIIHT*ICTSVNLHTVPLFPLCRFPLKN*IGKQVSRK*KQNT ->lncRNA_ENST00000494097_3 ENST00000494097;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-207;transcript_source=havana;transcript_biotype=retained_intron;transcript_support_level=1 -LDGREWGCHHQMRAKGTPTRVAAMAEGRQNACICNIR*DLTADRGWEQQPKPKKPEGSCKHRKNRRFNGRNNNSWHLLNTYWELGTGPIHSFMQLKLFLRNGVLLCCPGWSVVV*SQLTAALNSWPQGVLPPQPPV*LGL*VRAVHLAPFKSFL*RQGTVAHTCNPSTLGGQGRRITRSGVRDQPDQHGETRLYLKYKN*PGVVAGACNPSYSGG*SMRLA*TQEAKVAVSRDRATALQPG*QSKTPSQKKKKSFL*RQGLALLLVQSRLTASSNSWP*AIFCPQPPKALGLQACMTTPGPCHCLLSTY*VPCIKCWVFVSGQNRLKKSQPLGSLPSGRGVRQ*HSKC*GRNGGGRERGS*AWPSWSCDSGTRAGAARRLCARGGGLRGKGESSGWKGRGDSPGPCRCQ*QLGFS*DGTARNGGSQA*EGKSGSGMPSAHRAPSPTAAQAKANPVGLCGVSHEAAARLVPQAWS*CPSFTGPACGDVVPVCGSLGLSRGPELRHCPEPSSALVLSPPAVALVEWSTCPVGAGLVPSRTCPFPGQGGVGEGIRDIF*VCSVSAAPA*TQILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LAKARCGHSCIAASSVDGALACQQRS*RRQAGR*L*LLF*RQC*TYNPL*NIYINILE*KCPFTRI*MAFISSTHESAHL*IYTRCLYFHCAGSHLKIKLESRFQGSRNKIQ ->lncRNA_ENST00000550946_1 ENST00000550946;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-208;transcript_source=havana;transcript_biotype=retained_intron;transcript_support_level=1 -GRARAPAAGGWSPLGHCEPGVSRSCRAAQAMDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAVERGLHGAATVVLGQGQHGGCAPEEED*GARGRALVGKAGEILQGLAGASDNWGFPETGLRGMGALRLERAKVGLGCRLPTEPLPQRLPRPRPTLLGCVV*AMKPLPGLYLRRGRDAPASPALPVGTWCLCAGAWASAEALSSGTAQNPAQRWYSARPLWPWWSGARAQWGLALSHRGPVLSRGRVVWERVSGTFSESALSLPPLPEHRF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDW ->lncRNA_ENST00000550946_2 ENST00000550946;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-208;transcript_source=havana;transcript_biotype=retained_intron;transcript_support_level=1 -DAPAPPRLEGGRHWDTVNQE*VGAAALPRPWTVRSTTVPASGMSASQTYWCLASSKAVLTTASAESWTHWATSCQCWLPSGRATMSCRLMATAAATPAWEE*RQGRQTITQQVLRKKRRRQGAWQLSVAFMELRQWYSGRGSTEAVRQRRRTEGQGGELWLERQGRFSRALPVPVTTGVFLRRDCEEWGLSGLRGQKWVWDAVCPQSPFPNGCPGQGQPCWVVWCEP*SRCQACTSGVVVMPQLHRPCLWGRGACVREPGPQPRP*APALPRTQLSAGTQPARCGPGGVEHVPSGGWPCPIADLSFPGAGWCGRGYQGHFLSLLCLCRPCLNTDSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG ->lncRNA_ENST00000550946_3 ENST00000550946;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-208;transcript_source=havana;transcript_biotype=retained_intron;transcript_support_level=1 -TRPRPRGWRVVATGTL*TRSESELPRCPGHGL*GQQRFQPQG*VHHKPTGVWLPPKLF*QQLPQRAGRTGPRAASAGSPVGGLR*AAD*WQPQQPLPLGKNRGRGVRQ*HSKC*GRNGGGRERGS*AWPSWSCDSGTRAGAARRLCARGGGLRGKGESSGWKGRGDSPGPCRCQ*QLGFS*DGTARNGGSQA*EGKSGSGMPSAHRAPSPTAAQAKANPVGLCGVSHEAAARLVPQAWS*CPSFTGPACGDVVPVCGSLGLSRGPELRHCPEPSSALVLSPPAVALVEWSTCPVGAGLVPSRTCPFPGQGGVGEGIRDIF*VCSVSAAPA*TQILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LA diff --git a/pgatk/testdata/proteindb_from_ncRNAs_DNAseq.fa b/pgatk/testdata/proteindb_from_ncRNAs_DNAseq.fa deleted file mode 100644 index 399ddf71..00000000 --- a/pgatk/testdata/proteindb_from_ncRNAs_DNAseq.fa +++ /dev/null @@ -1,18 +0,0 @@ ->ncRNA_ENST00000612080_1 ENST00000612080;gene_version=1;transcript_version=1;gene_source=mirbase;gene_biotype=miRNA;transcript_name=MIR6859-2-201;transcript_source=mirbase;transcript_biotype=miRNA;tag=basic;transcript_support_level=NA -CGRGTWAQDSGCQLA*PPCRLC ->ncRNA_ENST00000612080_2 ENST00000612080;gene_version=1;transcript_version=1;gene_source=mirbase;gene_biotype=miRNA;transcript_name=MIR6859-2-201;transcript_source=mirbase;transcript_biotype=miRNA;tag=basic;transcript_support_level=NA -VGEEHGLRTAGVSLPDPHVASV ->ncRNA_ENST00000612080_3 ENST00000612080;gene_version=1;transcript_version=1;gene_source=mirbase;gene_biotype=miRNA;transcript_name=MIR6859-2-201;transcript_source=mirbase;transcript_biotype=miRNA;tag=basic;transcript_support_level=NA -WERNMGSGQRVSACLTPMSPL* ->ncRNA_ENST00000494097_1 ENST00000494097;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-207;transcript_source=havana;transcript_biotype=retained_intron;transcript_support_level=1 -DWTAGSGAVIIR*ELRGPPPGWRQWQRVGKTLVFAT*GEI*QLTEGGSSSQNQKSQREVASTEKIEDLMGEITIAGIY*TLTGS*VQGPFIHSCN*NFF*ETGSCSVAQAGV*WYDHSSLQP*IPGLKESSHLSLLCSWDYRYVRYTWLPLKVFCRGRAQWLTPVIPALWEAKAGGSQGQEFETSLTNMVKPVST*NTKISRVWWRAPVIPATQEAEA*DLLEPRRRRLQ*AEIAPLHSSLGDRARLRLKKKKKVSCRGRALLCCWCNHGSLHPLTPGLKQSSVLSLPKHWDYRHA*PHLVPAIVY*APTECHVLSAGYLSVDKTD*KNHSP*GAYLLAGASDNNTASAEEETEAAGSVAVERGLHGAATVVLGQGQHGGCAPEEED*GARGRALVGKAGEILQGLAGASDNWGFPETGLRGMGALRLERAKVGLGCRLPTEPLPQRLPRPRPTLLGCVV*AMKPLPGLYLRRGRDAPASPALPVGTWCLCAGAWASAEALSSGTAQNPAQRWYSARPLWPWWSGARAQWGLALSHRGPVLSRGRVVWERVSGTFSESALSLPPLPEHRF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDWLKLDVVTAV*LLPV*TEPWHVNSVPREDRLEDSCDFYFKDNVKLITHFKISTLIYLNENVHLHVFEWPSYHPHMNLHICKSTHGAFISTVQVPT*KLNWKAGFKEVETKY ->ncRNA_ENST00000494097_2 ENST00000494097;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-207;transcript_source=havana;transcript_biotype=retained_intron;transcript_support_level=1 -TGRQGVGLSSSDES*GDPHQGGGNGRG*AKRLYLQHKVRFDS*PRVGAAAKTKKARGKLQAQKK*KI*WEK*Q*LASIEHLLGARYRAHSFIHAIKTFFKKRGLALLPRLECSGMITAHCSLEFLASRSPPTSASCVAGIIGTCGTPGSL*KFFVEAGHSGSHL*SQHFGRPRQEDHKVRSSRPA*PTW*NPSLLKIQKLAGCGGGRL*SQLLRRLKHETCLNPGGEGCSEPRSRHCTPAWVTEQDSVSKKKKKFLVEAGPCFVAGAITAHCIL*LLALSNLLSSASQSTGITGMHDHTWSLPLFIEHLLSAMY*VLGICQWTKQIKKITALRELTFWQGRQTITQQVLRKKRRRQGAWQLSVAFMELRQWYSGRGSTEAVRQRRRTEGQGGELWLERQGRFSRALPVPVTTGVFLRRDCEEWGLSGLRGQKWVWDAVCPQSPFPNGCPGQGQPCWVVWCEP*SRCQACTSGVVVMPQLHRPCLWGRGACVREPGPQPRP*APALPRTQLSAGTQPARCGPGGVEHVPSGGWPCPIADLSFPGAGWCGRGYQGHFLSLLCLCRPCLNTDSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG*SSMWSQLYSCFQCRRSPGMSTAFLEKTGWKIAVTSILKTMLNL*PTLKYLH*YT*MKMSIYTYLNGLHIIHT*ICTSVNLHTVPLFPLCRFPLKN*IGKQVSRK*KQNT ->ncRNA_ENST00000494097_3 ENST00000494097;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-207;transcript_source=havana;transcript_biotype=retained_intron;transcript_support_level=1 -LDGREWGCHHQMRAKGTPTRVAAMAEGRQNACICNIR*DLTADRGWEQQPKPKKPEGSCKHRKNRRFNGRNNNSWHLLNTYWELGTGPIHSFMQLKLFLRNGVLLCCPGWSVVV*SQLTAALNSWPQGVLPPQPPV*LGL*VRAVHLAPFKSFL*RQGTVAHTCNPSTLGGQGRRITRSGVRDQPDQHGETRLYLKYKN*PGVVAGACNPSYSGG*SMRLA*TQEAKVAVSRDRATALQPG*QSKTPSQKKKKSFL*RQGLALLLVQSRLTASSNSWP*AIFCPQPPKALGLQACMTTPGPCHCLLSTY*VPCIKCWVFVSGQNRLKKSQPLGSLPSGRGVRQ*HSKC*GRNGGGRERGS*AWPSWSCDSGTRAGAARRLCARGGGLRGKGESSGWKGRGDSPGPCRCQ*QLGFS*DGTARNGGSQA*EGKSGSGMPSAHRAPSPTAAQAKANPVGLCGVSHEAAARLVPQAWS*CPSFTGPACGDVVPVCGSLGLSRGPELRHCPEPSSALVLSPPAVALVEWSTCPVGAGLVPSRTCPFPGQGGVGEGIRDIF*VCSVSAAPA*TQILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LAKARCGHSCIAASSVDGALACQQRS*RRQAGR*L*LLF*RQC*TYNPL*NIYINILE*KCPFTRI*MAFISSTHESAHL*IYTRCLYFHCAGSHLKIKLESRFQGSRNKIQ ->ncRNA_ENST00000550946_1 ENST00000550946;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-208;transcript_source=havana;transcript_biotype=retained_intron;transcript_support_level=1 -GRARAPAAGGWSPLGHCEPGVSRSCRAAQAMDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAVERGLHGAATVVLGQGQHGGCAPEEED*GARGRALVGKAGEILQGLAGASDNWGFPETGLRGMGALRLERAKVGLGCRLPTEPLPQRLPRPRPTLLGCVV*AMKPLPGLYLRRGRDAPASPALPVGTWCLCAGAWASAEALSSGTAQNPAQRWYSARPLWPWWSGARAQWGLALSHRGPVLSRGRVVWERVSGTFSESALSLPPLPEHRF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDW ->ncRNA_ENST00000550946_2 ENST00000550946;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-208;transcript_source=havana;transcript_biotype=retained_intron;transcript_support_level=1 -DAPAPPRLEGGRHWDTVNQE*VGAAALPRPWTVRSTTVPASGMSASQTYWCLASSKAVLTTASAESWTHWATSCQCWLPSGRATMSCRLMATAAATPAWEE*RQGRQTITQQVLRKKRRRQGAWQLSVAFMELRQWYSGRGSTEAVRQRRRTEGQGGELWLERQGRFSRALPVPVTTGVFLRRDCEEWGLSGLRGQKWVWDAVCPQSPFPNGCPGQGQPCWVVWCEP*SRCQACTSGVVVMPQLHRPCLWGRGACVREPGPQPRP*APALPRTQLSAGTQPARCGPGGVEHVPSGGWPCPIADLSFPGAGWCGRGYQGHFLSLLCLCRPCLNTDSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG ->ncRNA_ENST00000550946_3 ENST00000550946;gene_version=18;transcript_version=5;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-208;transcript_source=havana;transcript_biotype=retained_intron;transcript_support_level=1 -TRPRPRGWRVVATGTL*TRSESELPRCPGHGL*GQQRFQPQG*VHHKPTGVWLPPKLF*QQLPQRAGRTGPRAASAGSPVGGLR*AAD*WQPQQPLPLGKNRGRGVRQ*HSKC*GRNGGGRERGS*AWPSWSCDSGTRAGAARRLCARGGGLRGKGESSGWKGRGDSPGPCRCQ*QLGFS*DGTARNGGSQA*EGKSGSGMPSAHRAPSPTAAQAKANPVGLCGVSHEAAARLVPQAWS*CPSFTGPACGDVVPVCGSLGLSRGPELRHCPEPSSALVLSPPAVALVEWSTCPVGAGLVPSRTCPFPGQGGVGEGIRDIF*VCSVSAAPA*TQILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LA diff --git a/pgatk/testdata/proteindb_from_pseudogenes_DNAseq.fa b/pgatk/testdata/proteindb_from_pseudogenes_DNAseq.fa deleted file mode 100644 index 5f1381d8..00000000 --- a/pgatk/testdata/proteindb_from_pseudogenes_DNAseq.fa +++ /dev/null @@ -1,6 +0,0 @@ ->pseudo_ENST00000450305_1 ENST00000450305;gene_version=5;transcript_version=2;gene_source=havana;gene_biotype=transcribed_unprocessed_pseudogene;transcript_name=DDX11L1-201;transcript_source=havana;transcript_biotype=transcribed_unprocessed_pseudogene;tag=basic;transcript_support_level=NA -VSDFQQLLACARVQAELEER*VRASTSLTT*ASVW*CQACPSPASGLQSCRRRRPTWITLFSEPRPGAPKKGSGGEPVHEGCQPVHRQGHQAPKGFCQHSAPGPVIHPAPCPGHAVGLDLSPGGGQSHLWFCHCCCVEFHQK*ASS*QAAAPLPGAVPFLCSARWRRCLSWAWSAGILLQR*NPGECGVQSVARTQAQALVPVGENRGIP ->pseudo_ENST00000450305_2 ENST00000450305;gene_version=5;transcript_version=2;gene_source=havana;gene_biotype=transcribed_unprocessed_pseudogene;transcript_name=DDX11L1-201;transcript_source=havana;transcript_biotype=transcribed_unprocessed_pseudogene;tag=basic;transcript_support_level=NA -CLTSSNCWPVPGCKLSWRKDE*EHQLLSQPRPVCGDARHALPQHQVSRAAEDDGRLGSHSSQSPGQGPPRKALVENLCMKAVNQSIGRAIRHQRDSASIVLLDQ*YTRHPVLDTLLAWI*ALVEVKATFGSAIAAVWNFTRSRPLPDRQLHHCLALCPSFALPAGDGVCHGPGLQGSCYKGETQESVESRVLPGPRHRH*CPLEKTGESR ->pseudo_ENST00000450305_3 ENST00000450305;gene_version=5;transcript_version=2;gene_source=havana;gene_biotype=transcribed_unprocessed_pseudogene;transcript_name=DDX11L1-201;transcript_source=havana;transcript_biotype=transcribed_unprocessed_pseudogene;tag=basic;transcript_support_level=NA -V*LPATAGLCQGAS*VGGKMSESINFSHNLGQCVVMPGMPFPSIRSPELQKTTADLDHTLLRAQARGPQERLWWRTCA*RLSTSP*AGPSGTKGILPA*CSWTSDTPGTLSWTRCWPGSEPWWRSKPPLVLPLLLCGISPEVGLFLTGSCTTAWRCALPLLCPLETVFVMGLVCRDPATKVKPRRVWSPECCQDPGTGISARWRKQGNPE diff --git a/pgatk/testdata/proteindb_from_sncRNAs_DNAseq.fa b/pgatk/testdata/proteindb_from_sncRNAs_DNAseq.fa deleted file mode 100644 index 7bcf5a7a..00000000 --- a/pgatk/testdata/proteindb_from_sncRNAs_DNAseq.fa +++ /dev/null @@ -1,6 +0,0 @@ ->sncRNA_ENST00000612080_1 ENST00000612080;gene_version=1;transcript_version=1;gene_source=mirbase;gene_biotype=miRNA;transcript_name=MIR6859-2-201;transcript_source=mirbase;transcript_biotype=miRNA;tag=basic;transcript_support_level=NA -CGRGTWAQDSGCQLA*PPCRLC ->sncRNA_ENST00000612080_2 ENST00000612080;gene_version=1;transcript_version=1;gene_source=mirbase;gene_biotype=miRNA;transcript_name=MIR6859-2-201;transcript_source=mirbase;transcript_biotype=miRNA;tag=basic;transcript_support_level=NA -VGEEHGLRTAGVSLPDPHVASV ->sncRNA_ENST00000612080_3 ENST00000612080;gene_version=1;transcript_version=1;gene_source=mirbase;gene_biotype=miRNA;transcript_name=MIR6859-2-201;transcript_source=mirbase;transcript_biotype=miRNA;tag=basic;transcript_support_level=NA -WERNMGSGQRVSACLTPMSPL* diff --git a/pgatk/testdata/proteindb_minus_strand_test.fa b/pgatk/testdata/proteindb_minus_strand_test.fa deleted file mode 100644 index 97d3aabd..00000000 --- a/pgatk/testdata/proteindb_minus_strand_test.fa +++ /dev/null @@ -1,24 +0,0 @@ ->ensvar_rs78350717_22.15528913.C.A_ENST00000252835 -MCPLTLQVTGLMNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKDFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII* ->ensvar_rs78350717_22.15528913.C.T_ENST00000252835 -MCPLTLQVTGLMNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKVFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII* ->ensvar_rs78350717_22.15528913.C.A_ENST00000643195 -MNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKDFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII* ->ensvar_rs78350717_22.15528913.C.T_ENST00000643195 -MNVSEPNSSFAFVNEFILQGFSCEWTIQIFLFSLFTTTYALTITGNGAIAFVLWCDRRLHTPMYMFLGNFSFLEIWYVSSTVPKMLVNFLSEKKNISFAGCFLQFYFFFSLGTSECLLLTVMAFDQYLAICRPLLYPNIMTGHLYAKLVILCWVCGFLWFLIPIVLISQMPFCGPNIIDHVVCDPGPRFALDCVSAPRIQLFCYTLSSLVIFGNFLFIIGSYTLVLKAMLGMPSSTGRHKVFSTCGSHLAVVSLCYSSLMVMYVSPGLGHSTGMQKIETLFYAMVTPLFNPLIYSLQNKEIKAALRKVLGSSNII* ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000342111 -MDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAFMELRQ*F*KSRRHHPEYCQAPRPGRGQHGP*HPSGPG ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_1 -GRARAPAAGGWSPLGHCEPGVSRSCRAAQAMDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAFMELRQWYSGRGSTEAVRQRRRTEGQGGELWLERQGRFSRALPVPVTTGVFLRRDCEEWGLSGLRGQKWVWDAVCPQSPFPNGCPGQGQPCWVVWCEP*SRCQACTSGVVVMPQLHRPCLWGRGACVREPGPQPRP*APALPRTQLSAGTQPARCGPGGVEHVPSGGWPCPIADLSFPGAGWCGRGYQGHFLSLLCLCRPCLNTDSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_2 -DAPAPPRLEGGRHWDTVNQE*VGAAALPRPWTVRSTTVPASGMSASQTYWCLASSKAVLTTASAESWTHWATSCQCWLPSGRATMSCRLMATAAATPAWEE*RQGRQTITQQVLRKKRRRQGAWPSWSCDSGTRAGAARRLCARGGGLRGKGESSGWKGRGDSPGPCRCQ*QLGFS*DGTARNGGSQA*EGKSGSGMPSAHRAPSPTAAQAKANPVGLCGVSHEAAARLVPQAWS*CPSFTGPACGDVVPVCGSLGLSRGPELRHCPEPSSALVLSPPAVALVEWSTCPVGAGLVPSRTCPFPGQGGVGEGIRDIF*VCSVSAAPA*TQILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LA ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000550946_3 -TRPRPRGWRVVATGTL*TRSESELPRCPGHGL*GQQRFQPQG*VHHKPTGVWLPPKLF*QQLPQRAGRTGPRAASAGSPVGGLR*AAD*WQPQQPLPLGKNRGRGVRQ*HSKC*GRNGGGRERGLHGAATVVLGQGQHGGCAPEEED*GARGRALVGKAGEILQGLAGASDNWGFPETGLRGMGALRLERAKVGLGCRLPTEPLPQRLPRPRPTLLGCVV*AMKPLPGLYLRRGRDAPASPALPVGTWCLCAGAWASAEALSSGTAQNPAQRWYSARPLWPWWSGARAQWGLALSHRGPVLSRGRVVWERVSGTFSESALSLPPLPEHRF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDW ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_1 -DWTAGSGAVIIR*ELRGPPPGWRQWQRVGKTLVFAT*GEI*QLTEGGSSSQNQKSQREVASTEKIEDLMGEITIAGIY*TLTGS*VQGPFIHSCN*NFF*ETGSCSVAQAGV*WYDHSSLQP*IPGLKESSHLSLLCSWDYRYVRYTWLPLKVFCRGRAQWLTPVIPALWEAKAGGSQGQEFETSLTNMVKPVST*NTKISRVWWRAPVIPATQEAEA*DLLEPRRRRLQ*AEIAPLHSSLGDRARLRLKKKKKVSCRGRALLCCWCNHGSLHPLTPGLKQSSVLSLPKHWDYRHA*PHLVPAIVY*APTECHVLSAGYLSVDKTD*KNHSP*GAYLLAGASDNNTASAEEETEAAGSVAFMELRQWYSGRGSTEAVRQRRRTEGQGGELWLERQGRFSRALPVPVTTGVFLRRDCEEWGLSGLRGQKWVWDAVCPQSPFPNGCPGQGQPCWVVWCEP*SRCQACTSGVVVMPQLHRPCLWGRGACVREPGPQPRP*APALPRTQLSAGTQPARCGPGGVEHVPSGGWPCPIADLSFPGAGWCGRGYQGHFLSLLCLCRPCLNTDSESQEDIIRNIARHLAQVGDSMDRSIPPGLVNGLALQLRNTSRSEEDRNRDLATALEQLLQAYPRDMEKEKTMLVLALLLAKKVASHTPSLLRDVFHTTVNFINQNLRTYVRSLARNGMD*TDSSRSVTG*SSMWSQLYSCFQCRRSPGMSTAFLEKTGWKIAVTSILKTMLNL*PTLKYLH*YT*MKMSIYTYLNGLHIIHT*ICTSVNLHTVPLFPLCRFPLKN*IGKQVSRK*KQNT ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_2 -TGRQGVGLSSSDES*GDPHQGGGNGRG*AKRLYLQHKVRFDS*PRVGAAAKTKKARGKLQAQKK*KI*WEK*Q*LASIEHLLGARYRAHSFIHAIKTFFKKRGLALLPRLECSGMITAHCSLEFLASRSPPTSASCVAGIIGTCGTPGSL*KFFVEAGHSGSHL*SQHFGRPRQEDHKVRSSRPA*PTW*NPSLLKIQKLAGCGGGRL*SQLLRRLKHETCLNPGGEGCSEPRSRHCTPAWVTEQDSVSKKKKKFLVEAGPCFVAGAITAHCIL*LLALSNLLSSASQSTGITGMHDHTWSLPLFIEHLLSAMY*VLGICQWTKQIKKITALRELTFWQGRQTITQQVLRKKRRRQGAWPSWSCDSGTRAGAARRLCARGGGLRGKGESSGWKGRGDSPGPCRCQ*QLGFS*DGTARNGGSQA*EGKSGSGMPSAHRAPSPTAAQAKANPVGLCGVSHEAAARLVPQAWS*CPSFTGPACGDVVPVCGSLGLSRGPELRHCPEPSSALVLSPPAVALVEWSTCPVGAGLVPSRTCPFPGQGGVGEGIRDIF*VCSVSAAPA*TQILKVKKTSSGILPGTSPRSGTAWTVASLRAW*TAWPCSSGTPAGRRRTGTGTWPLPWSSCCRPTLETWRRRRPCWCWPCCWPRRWPVTRRPCSVMSFTQQ*ILLTRTYAPT*GA*PEMGWTERTVPEV*LAKARCGHSCIAASSVDGALACQQRS*RRQAGR*L*LLF*RQC*TYNPL*NIYINILE*KCPFTRI*MAFISSTHESAHL*IYTRCLYFHCAGSHLKIKLESRFQGSRNKIQ ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000494097_3 -LDGREWGCHHQMRAKGTPTRVAAMAEGRQNACICNIR*DLTADRGWEQQPKPKKPEGSCKHRKNRRFNGRNNNSWHLLNTYWELGTGPIHSFMQLKLFLRNGVLLCCPGWSVVV*SQLTAALNSWPQGVLPPQPPV*LGL*VRAVHLAPFKSFL*RQGTVAHTCNPSTLGGQGRRITRSGVRDQPDQHGETRLYLKYKN*PGVVAGACNPSYSGG*SMRLA*TQEAKVAVSRDRATALQPG*QSKTPSQKKKKSFL*RQGLALLLVQSRLTASSNSWP*AIFCPQPPKALGLQACMTTPGPCHCLLSTY*VPCIKCWVFVSGQNRLKKSQPLGSLPSGRGVRQ*HSKC*GRNGGGRERGLHGAATVVLGQGQHGGCAPEEED*GARGRALVGKAGEILQGLAGASDNWGFPETGLRGMGALRLERAKVGLGCRLPTEPLPQRLPRPRPTLLGCVV*AMKPLPGLYLRRGRDAPASPALPVGTWCLCAGAWASAEALSSGTAQNPAQRWYSARPLWPWWSGARAQWGLALSHRGPVLSRGRVVWERVSGTFSESALSLPPLPEHRF*KSRRHHPEYCQAPRPGRGQHGP*HPSGPGERPGPAAQEHQPVGGGPEQGPGHCPGAAAAGLP*RHGEGEDHAGAGPAAGQEGGQSHAVLAP*CLSHNSEFY*PEPTHLREELSQKWDGLNGQFQKCDWLKLDVVTAV*LLPV*TEPWHVNSVPREDRLEDSCDFYFKDNVKLITHFKISTLIYLNENVHLHVFEWPSYHPHMNLHICKSTHGAFISTVQVPT*KLNWKAGFKEVETKY ->ensvar_rs147461488_22.17740102.GGCCACGCTCAACT.G_ENST00000617586 -MDCEVNNGSSLRDECITNLLVFGFLQSCSDNSFRRELDALGHELPVLAPQWEGYDELQTDGNRSSHSRLGRIEAGASDNNTASAEEETEAAGSVAFMELRQWYSGRGSTEAVRQRRRT diff --git a/pgatk/testdata/psms_with_single_missmatch.tsv b/pgatk/testdata/psms_with_single_missmatch.tsv deleted file mode 100644 index f4ea90c9..00000000 --- a/pgatk/testdata/psms_with_single_missmatch.tsv +++ /dev/null @@ -1,3 +0,0 @@ -SpectraFile Biological.set Retention.time.min. Ion.injection.time.ms. SpecID ScanNum FragMethod Precursor IsotopeError PrecursorError.ppm. Charge Peptide Protein DeNovoScore MSGFScore SpecEValue EValue percolator.svm.score PSM.q.value peptide.q.value tmt10plex_126 tmt10plex_127N tmt10plex_127C tmt10plex_128N tmt10plex_128C tmt10plex_129N tmt10plex_129C tmt10plex_130N tmt10plex_130C tmt10plex_131 sub_pos Sequence peptide_length status ions_support support_ions sum.supportions.intensity flanking_ions_support flanking_ions sum.flanking.ions.intensity matched_ions sum.matchedions.intensity sum.fragmentions.intensity maxintensity average_intensity median_intensity -fr10.mzML Set1 59.558592 83.334438502789 controllerType=0 controllerNumber=1 scan=19937 19937 HCD 1052.5897 0 -0.115971394 2 +229.163TIAEC+57.021LAEELINAAK+229.163 =_18600958@4.20978040680119@fr10:1378089(pre=-,post=-) 188 171 5.7877062e-18 6.759445e-10 1.897 0 0 128042 61780 190414 226202 244759 139458 116483 176833 133302 137712 8 TIAECLAEELINAAK 15 checked YES b9,b10,y8,y9,y11,y13, 80535.4392089844 YES b7,y8 39766.16796875 b1,b2,b3,b4,b5,b6,b7,b9,b10,y1,y2,y3,y4,y5,y6,y8,y9,y11,y13 1209473.04858398 5231725.63720703 304900.65625 20843.5284350878 4134.62646484375 -fr08.mzML Set1 27.764549 150.000005960464 controllerType=0 controllerNumber=1 scan=8461 8461 HCD 1068.8729 2 -7.502769 3 +229.163K+229.163AAAPTPEEEMDEC+57.021EQALAAEPK+229.163 =_21935565@4.06037609192942@fr8:1746571(pre=-,post=-) 192 55 7.8348725e-12 0.0010024105 0.854 0.00757575757575758 0.00552486187845304 28336.2 6073.63 30612.8 22688 30643.6 24194.2 11743.9 21621.2 15252.3 15450.5 6 KAAAPTPEEEMDECEQALAAEPK 23 checked NO 0 NO b5 3320.78198242188 b1,b2,b3,b4,b5,y1,y2,y3,y4,y5,y6,y7,y8,y9 423367.470581055 1454776.26251221 185478.5625 6735.07528940837 2132.603515625 diff --git a/pgatk/testdata/test.db b/pgatk/testdata/test.db deleted file mode 100644 index 5c3a19f4..00000000 Binary files a/pgatk/testdata/test.db and /dev/null differ diff --git a/pgatk/testdata/test_blast_psms_out.tsv b/pgatk/testdata/test_blast_psms_out.tsv deleted file mode 100644 index 2139201e..00000000 --- a/pgatk/testdata/test_blast_psms_out.tsv +++ /dev/null @@ -1,7 +0,0 @@ -PSH sequence usi accession unique database database_version search_engine search_engine_score[1] modifications retention_time charge exp_mass_to_charge calc_mass_to_charge spectra_ref pre post start end opt_global_q-value opt_global_cv_MS:1002217_decoy_peptide opt_global_cv_MS:1000889_peptidoform_sequence SpecFile ScanNum position variant protein -PSM YHTINGHNAEVR 0 ENSP00000504571.1,ENSP00000503242.1,ENSP00000503961.1,ENSP00000504660.1,ENSP00000497298.1,ENSP00000503452.1,ENSP00000504799.1,ENSP00000503190.1,ENSP00000503898.1,ENSP00000503968.1,ENSP00000503885.1,ENSP00000504049.1,ENSP00000503550.1,ENSP00000503870.1,ENSP00000503521.1,ENSP00000503236.1,ENSP00000503360.1,ENSP00000503021.1,ENSP00000503915.1,ENSP00000503460.1,ENSP00000346694.4,ENSP00000478691.2,ENSP00000504439.1,ENSP00000504329.1,ENSP00000503476.1,ENSP00000504831.1,ENSP00000504023.1,ENSP00000504721.1,ENSP00000503514.1,ENSP00000503375.1,ENSP00000349101.8,ENSP00000503047.1,ENSP00000503833.1,ENSP00000503836.1,ENSP00000503703.1,ENSP00000503429.1,ENSP00000354021.4,ENSP00000504415.1,ENSP00000503060.1,ENSP00000503501.1,altorf_ENST00000679318.1_2,altorf_ENST00000677339.1_2,altorf_ENST00000678501.1_2,altorf_ENST00000676903.1_2,altorf_ENST00000608362.2_2,altorf_ENST00000677631.1_2,altorf_ENST00000676749.1_2,altorf_ENST00000678035.1_1,altorf_ENST00000678075.1_1,altorf_ENST00000678183.1_3,altorf_ENST00000679021.1_3,altorf_ENST00000677321.1_2,altorf_ENST00000677571.1_2,altorf_ENST00000677906.1_2,altorf_ENST00000678277.1_3,altorf_ENST00000678973.1_2,altorf_ENST00000679124.1_2,altorf_ENST00000679123.1_2,altorf_ENST00000677574.1_2,altorf_ENST00000678631.1_2,altorf_ENST00000678998.1_2,altorf_ENST00000354667.8_2,altorf_ENST00000618183.5_2,altorf_ENST00000677839.1_2,altorf_ENST00000676746.1_3,altorf_ENST00000678675.1_3,altorf_ENST00000676524.1_2,altorf_ENST00000678935.1_2,altorf_ENST00000678962.1_2,altorf_ENST00000679001.1_2,altorf_ENST00000678449.1_2,altorf_ENST00000356674.8_3,altorf_ENST00000678697.1_2,altorf_ENST00000678431.1_2,altorf_ENST00000676497.1_2,altorf_ENST00000677396.1_2,altorf_ENST00000678779.1_2,altorf_ENST00000360787.8_2,altorf_ENST00000679243.1_2,altorf_ENST00000677656.1_2,altorf_ENST00000678884.1_2,ncRNA_ENST00000677075.1_1,ncRNA_ENST00000476233.2_2,ncRNA_ENST00000676932.1_2,ncRNA_ENST00000677669.1_3,ncRNA_ENST00000490912.6_3,ncRNA_ENST00000463181.5_2,ncRNA_ENST00000495810.2_2,COSMIC:HNRNPA2B1_ENST00000618183:p.R225S:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.H108P:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.K104N:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.R190G:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.G65V:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.M53I:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.L37*:Substitution-Nonsense,COSMIC:HNRNPA2B1_ENST00000618183:p.E11G:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.E92Q:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.E133Q:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.D87H:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.M1?:,COSMIC:HNRNPA2B1:p.G233A:Substitution-Missense,COSMIC:HNRNPA2B1:p.G280C:Substitution-Missense,COSMIC:HNRNPA2B1:p.G224*:Substitution-Nonsense,COSMIC:HNRNPA2B1:p.N255Y:Substitution-Missense,COSMIC:HNRNPA2B1:p.K104N:Substitution-Missense,COSMIC:HNRNPA2B1:p.G285S:Substitution-Missense,COSMIC:HNRNPA2B1:p.H108P:Substitution-Missense,COSMIC:HNRNPA2B1:p.R190G:Substitution-Missense,COSMIC:HNRNPA2B1:p.G65V:Substitution-Missense,COSMIC:HNRNPA2B1:p.M53I:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G221A:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G268C:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.N243Y:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G212*:Substitution-Nonsense,COSMIC:HNRNPA2B1_ENST00000356674:p.G273S:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.R178G:Substitution-Missense,COSMIC:HNRNPA2B1:p.L37*:Substitution-Nonsense,COSMIC:HNRNPA2B1_ENST00000356674:p.H96P:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.K92N:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G53V:Substitution-Missense,COSMIC:HNRNPA2B1:p.G214V:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.M41I:Substitution-Missense,COSMIC:HNRNPA2B1:p.G237V:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.L25*:Substitution-Nonsense,COSMIC:HNRNPA2B1:p.R203K:Substitution-Missense,COSMIC:HNRNPA2B1:p.Y336C:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G202V:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G225V:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.R191K:Substitution-Missense,COSMIC:HNRNPA2B1:p.G332C:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.Y324C:Substitution-Missense,COSMIC:HNRNPA2B1:p.E11G:Substitution-Missense,COSMIC:HNRNPA2B1:p.E133Q:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G320C:Substitution-Missense,COSMIC:HNRNPA2B1:p.E92Q:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.E121Q:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.E80Q:Substitution-Missense,COSMIC:HNRNPA2B1:p.M1?:,COSMIC:HNRNPA2B1:p.D87H:Substitution-Missense,COSMIC:HNRNPA2B1:p.G248*:Substitution-Nonsense,COSMIC:HNRNPA2B1_ENST00000356674:p.D75H:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.M1?:,COSMIC:HNRNPA2B1:p.G217V:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G236*:Substitution-Nonsense,COSMIC:HNRNPA2B1_ENST00000356674:p.G205V:Substitution-Missense,cbiomut:ENST00000354667:HNRNPA2B1:p.D76H:Missense_Mutation,cbiomut:ENST00000354667:HNRNPA2B1:p.D76H:Missense_Mutation,cbiomut:ENST00000354667:HNRNPA2B1:p.D76H:Missense_Mutation 0 PXD014145_decoy [, , Percolator, 3.05] 0.642512 436.4756905 3 470.901519 470.9006154 ms_run[8]:controllerType=0 controllerNumber=1 scan=1500 K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K 162,162,162,162,162,162,162,122,122,174,174,162,162,162,162,162,174,162,162,162,174,162,162,174,174,162,162,162,174,162,174,162,162,162,162,162,174,162,162,162,395,455,395,395,395,395,395,474,474,326,326,395,395,395,382,395,395,439,455,395,395,230,218,395,326,326,395,395,395,439,455,326,395,455,395,395,395,230,455,395,395,566,395,395,431,1358,1118,395,174,174,174,174,174,174,173,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,162,162,162,162,162,162,173,162,162,162,174,162,174,161,174,174,162,162,162,174,162,174,174,162,174,162,162,174,174,174,162,162,174,162,162,174,174,174 173,173,173,173,173,173,173,133,133,185,185,173,173,173,173,173,185,173,173,173,185,173,173,185,185,173,173,173,185,173,185,173,173,173,173,173,185,173,173,173,406,466,406,406,406,406,406,485,485,337,337,406,406,406,393,406,406,450,466,406,406,241,229,406,337,337,406,406,406,450,466,337,406,466,406,406,406,241,466,406,406,577,406,406,442,1369,1129,406,185,185,185,185,185,185,184,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,173,173,173,173,173,173,184,173,173,173,185,173,185,172,185,185,173,173,173,185,173,185,185,173,185,173,173,185,185,185,173,173,185,173,173,185,185,185 0.0561798 0 YHTINGHNAEVR test_blast_validate.mzML 1500 canonical -PSM KMVSLAK 4 pseudo_ENST00000454683.1_2 1 PXD014145_decoy [, , Percolator, 3.05] 0.668987 741.1 2 388.740661 388.7385759 ms_run[1]:controllerType=0 controllerNumber=1 scan=3252 R N 443 449 0.0947368 0 KMVSLAK test_blast_validate.mzML 3252 4 E>S ENSP00000491150.1 -PSM KMVSLAK 4 pseudo_ENST00000454683.1_2 1 PXD014145_decoy [, , Percolator, 3.05] 0.668987 741.1 2 388.740661 388.7385759 ms_run[1]:controllerType=0 controllerNumber=1 scan=3252 R N 443 449 0.0947368 0 KMVSLAK test_blast_validate.mzML 3252 5 E>L ENSP00000377191.2 -PSM KMVSLAK 4 pseudo_ENST00000454683.1_2 1 PXD014145_decoy [, , Percolator, 3.05] 0.668987 741.1 2 388.740661 388.7385759 ms_run[1]:controllerType=0 controllerNumber=1 scan=3252 R N 443 449 0.0947368 0 KMVSLAK test_blast_validate.mzML 3252 6 L>A sp|P70612|CXCR1_RAT -PSM KMVSLAK 4 pseudo_ENST00000454683.1_2 1 PXD014145_decoy [, , Percolator, 3.05] 0.668987 741.1 2 388.740661 388.7385759 ms_run[1]:controllerType=0 controllerNumber=1 scan=3252 R N 443 449 0.0947368 0 KMVSLAK test_blast_validate.mzML 3252 2 I>M sp|C4Z1I4|SYG_LACE2 -PSM AAMAAWPPAAQAAAAAVAVVGGGGEPGAPR 8 altorf_ENST00000247706.4_2,altorf_ENST00000593489.1_2 0 PXD014145_decoy [, , Percolator, 3.05] 0.547212 1209.2 5 529.4764486 529.4750268 ms_run[5]:controllerType=0 controllerNumber=1 scan=6341 R,R G,G 183,147 212,176 0.0526316 0 AAMAAWPPAAQAAAAAVAVVGGGGEPGAPR test_blast_validate.mzML 6341 non-canonical diff --git a/pgatk/testdata/test_blast_validate_psms_out.tsv b/pgatk/testdata/test_blast_validate_psms_out.tsv deleted file mode 100644 index 8ded7cac..00000000 --- a/pgatk/testdata/test_blast_validate_psms_out.tsv +++ /dev/null @@ -1,7 +0,0 @@ - PSH sequence PSM_ID accession unique database database_version search_engine search_engine_score[1] modifications retention_time charge exp_mass_to_charge calc_mass_to_charge spectra_ref pre post start end opt_global_q-value opt_global_cv_MS:1002217_decoy_peptide opt_global_cv_MS:1000889_peptidoform_sequence SpecFile ScanNum position peptide_length status ions_support support_ions sum.supportions.intensity flanking_ions_support flanking_ions sum.flanking.ions.intensity matched_ions sum.matchedions.intensity sum.fragmentions.intensity maxintensity average_intensity median_intensity -0 PSM YHTINGHNAEVR 0 ENSP00000504571.1,ENSP00000503242.1,ENSP00000503961.1,ENSP00000504660.1,ENSP00000497298.1,ENSP00000503452.1,ENSP00000504799.1,ENSP00000503190.1,ENSP00000503898.1,ENSP00000503968.1,ENSP00000503885.1,ENSP00000504049.1,ENSP00000503550.1,ENSP00000503870.1,ENSP00000503521.1,ENSP00000503236.1,ENSP00000503360.1,ENSP00000503021.1,ENSP00000503915.1,ENSP00000503460.1,ENSP00000346694.4,ENSP00000478691.2,ENSP00000504439.1,ENSP00000504329.1,ENSP00000503476.1,ENSP00000504831.1,ENSP00000504023.1,ENSP00000504721.1,ENSP00000503514.1,ENSP00000503375.1,ENSP00000349101.8,ENSP00000503047.1,ENSP00000503833.1,ENSP00000503836.1,ENSP00000503703.1,ENSP00000503429.1,ENSP00000354021.4,ENSP00000504415.1,ENSP00000503060.1,ENSP00000503501.1,altorf_ENST00000679318.1_2,altorf_ENST00000677339.1_2,altorf_ENST00000678501.1_2,altorf_ENST00000676903.1_2,altorf_ENST00000608362.2_2,altorf_ENST00000677631.1_2,altorf_ENST00000676749.1_2,altorf_ENST00000678035.1_1,altorf_ENST00000678075.1_1,altorf_ENST00000678183.1_3,altorf_ENST00000679021.1_3,altorf_ENST00000677321.1_2,altorf_ENST00000677571.1_2,altorf_ENST00000677906.1_2,altorf_ENST00000678277.1_3,altorf_ENST00000678973.1_2,altorf_ENST00000679124.1_2,altorf_ENST00000679123.1_2,altorf_ENST00000677574.1_2,altorf_ENST00000678631.1_2,altorf_ENST00000678998.1_2,altorf_ENST00000354667.8_2,altorf_ENST00000618183.5_2,altorf_ENST00000677839.1_2,altorf_ENST00000676746.1_3,altorf_ENST00000678675.1_3,altorf_ENST00000676524.1_2,altorf_ENST00000678935.1_2,altorf_ENST00000678962.1_2,altorf_ENST00000679001.1_2,altorf_ENST00000678449.1_2,altorf_ENST00000356674.8_3,altorf_ENST00000678697.1_2,altorf_ENST00000678431.1_2,altorf_ENST00000676497.1_2,altorf_ENST00000677396.1_2,altorf_ENST00000678779.1_2,altorf_ENST00000360787.8_2,altorf_ENST00000679243.1_2,altorf_ENST00000677656.1_2,altorf_ENST00000678884.1_2,ncRNA_ENST00000677075.1_1,ncRNA_ENST00000476233.2_2,ncRNA_ENST00000676932.1_2,ncRNA_ENST00000677669.1_3,ncRNA_ENST00000490912.6_3,ncRNA_ENST00000463181.5_2,ncRNA_ENST00000495810.2_2,COSMIC:HNRNPA2B1_ENST00000618183:p.R225S:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.H108P:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.K104N:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.R190G:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.G65V:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.M53I:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.L37*:Substitution-Nonsense,COSMIC:HNRNPA2B1_ENST00000618183:p.E11G:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.E92Q:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.E133Q:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.D87H:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000618183:p.M1?:,COSMIC:HNRNPA2B1:p.G233A:Substitution-Missense,COSMIC:HNRNPA2B1:p.G280C:Substitution-Missense,COSMIC:HNRNPA2B1:p.G224*:Substitution-Nonsense,COSMIC:HNRNPA2B1:p.N255Y:Substitution-Missense,COSMIC:HNRNPA2B1:p.K104N:Substitution-Missense,COSMIC:HNRNPA2B1:p.G285S:Substitution-Missense,COSMIC:HNRNPA2B1:p.H108P:Substitution-Missense,COSMIC:HNRNPA2B1:p.R190G:Substitution-Missense,COSMIC:HNRNPA2B1:p.G65V:Substitution-Missense,COSMIC:HNRNPA2B1:p.M53I:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G221A:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G268C:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.N243Y:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G212*:Substitution-Nonsense,COSMIC:HNRNPA2B1_ENST00000356674:p.G273S:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.R178G:Substitution-Missense,COSMIC:HNRNPA2B1:p.L37*:Substitution-Nonsense,COSMIC:HNRNPA2B1_ENST00000356674:p.H96P:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.K92N:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G53V:Substitution-Missense,COSMIC:HNRNPA2B1:p.G214V:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.M41I:Substitution-Missense,COSMIC:HNRNPA2B1:p.G237V:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.L25*:Substitution-Nonsense,COSMIC:HNRNPA2B1:p.R203K:Substitution-Missense,COSMIC:HNRNPA2B1:p.Y336C:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G202V:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G225V:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.R191K:Substitution-Missense,COSMIC:HNRNPA2B1:p.G332C:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.Y324C:Substitution-Missense,COSMIC:HNRNPA2B1:p.E11G:Substitution-Missense,COSMIC:HNRNPA2B1:p.E133Q:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G320C:Substitution-Missense,COSMIC:HNRNPA2B1:p.E92Q:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.E121Q:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.E80Q:Substitution-Missense,COSMIC:HNRNPA2B1:p.M1?:,COSMIC:HNRNPA2B1:p.D87H:Substitution-Missense,COSMIC:HNRNPA2B1:p.G248*:Substitution-Nonsense,COSMIC:HNRNPA2B1_ENST00000356674:p.D75H:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.M1?:,COSMIC:HNRNPA2B1:p.G217V:Substitution-Missense,COSMIC:HNRNPA2B1_ENST00000356674:p.G236*:Substitution-Nonsense,COSMIC:HNRNPA2B1_ENST00000356674:p.G205V:Substitution-Missense,cbiomut:ENST00000354667:HNRNPA2B1:p.D76H:Missense_Mutation,cbiomut:ENST00000354667:HNRNPA2B1:p.D76H:Missense_Mutation,cbiomut:ENST00000354667:HNRNPA2B1:p.D76H:Missense_Mutation 0 PXD014145_decoy [, , Percolator, 3.05] 0.642512 436.4756905 3 470.901519 470.9006154 ms_run[8]:controllerType=0 controllerNumber=1 scan=1500 K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K 162,162,162,162,162,162,162,122,122,174,174,162,162,162,162,162,174,162,162,162,174,162,162,174,174,162,162,162,174,162,174,162,162,162,162,162,174,162,162,162,395,455,395,395,395,395,395,474,474,326,326,395,395,395,382,395,395,439,455,395,395,230,218,395,326,326,395,395,395,439,455,326,395,455,395,395,395,230,455,395,395,566,395,395,431,1358,1118,395,174,174,174,174,174,174,173,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,162,162,162,162,162,162,173,162,162,162,174,162,174,161,174,174,162,162,162,174,162,174,174,162,174,162,162,174,174,174,162,162,174,162,162,174,174,174 173,173,173,173,173,173,173,133,133,185,185,173,173,173,173,173,185,173,173,173,185,173,173,185,185,173,173,173,185,173,185,173,173,173,173,173,185,173,173,173,406,466,406,406,406,406,406,485,485,337,337,406,406,406,393,406,406,450,466,406,406,241,229,406,337,337,406,406,406,450,466,337,406,466,406,406,406,241,466,406,406,577,406,406,442,1369,1129,406,185,185,185,185,185,185,184,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,173,173,173,173,173,173,184,173,173,173,185,173,185,172,185,185,173,173,173,185,173,185,185,173,185,173,173,185,185,185,173,173,185,173,173,185,185,185 0.0561798 0 YHTINGHNAEVR test_blast_validate.mzML 1500 canonical 12 skiped NO 0.0 NO 0.0 y1,y2,b2,b3,y3,y4,y5,y6,y7,y8,y10 86736.046875 414795.15625 82809.703125 3575.8203125 1184.6317138671875 -1 PSM KMVSLAK 4 pseudo_ENST00000454683.1_2 1 PXD014145_decoy [, , Percolator, 3.05] 0.668987 741.1 2 388.740661 388.7385759 ms_run[1]:controllerType=0 controllerNumber=1 scan=3252 R N 443 449 0.0947368 0 KMVSLAK test_blast_validate.mzML 3252 2 7 checked YES ,b3,b4,b5,b6,y6 645334.0322265625 NO y6,b1 259997.703125 b1,y1,y2,y3,b3,y4,b4,b5,b6,y6 1143254.875 4988271.0 343916.0625 27867.435546875 4865.775390625 -2 PSM KMVSLAK 4 pseudo_ENST00000454683.1_2 1 PXD014145_decoy [, , Percolator, 3.05] 0.668987 741.1 2 388.740661 388.7385759 ms_run[1]:controllerType=0 controllerNumber=1 scan=3252 R N 443 449 0.0947368 0 KMVSLAK test_blast_validate.mzML 3252 4 7 checked YES ,y4,b4,b5,b6,y6 695979.109375 YES y4,y3,b3,b4 408994.34375 b1,y1,y2,y3,b3,y4,b4,b5,b6,y6 1143254.875 4988271.0 343916.0625 27867.435546875 4865.775390625 -3 PSM KMVSLAK 4 pseudo_ENST00000454683.1_2 1 PXD014145_decoy [, , Percolator, 3.05] 0.668987 741.1 2 388.740661 388.7385759 ms_run[1]:controllerType=0 controllerNumber=1 scan=3252 R N 443 449 0.0947368 0 KMVSLAK test_blast_validate.mzML 3252 5 7 checked YES ,y3,y4,b5,b6,y6 357419.19384765625 YES y3,y2,b5,b4 570328.75 b1,y1,y2,y3,b3,y4,b4,b5,b6,y6 1143254.875 4988271.0 343916.0625 27867.435546875 4865.775390625 -4 PSM KMVSLAK 4 pseudo_ENST00000454683.1_2 1 PXD014145_decoy [, , Percolator, 3.05] 0.668987 741.1 2 388.740661 388.7385759 ms_run[1]:controllerType=0 controllerNumber=1 scan=3252 R N 443 449 0.0947368 0 KMVSLAK test_blast_validate.mzML 3252 6 7 checked YES ,y2,y3,y4,b6,y6 202544.33447265625 YES y1,y2,b6,b5 474262.875 b1,y1,y2,y3,b3,y4,b4,b5,b6,y6 1143254.875 4988271.0 343916.0625 27867.435546875 4865.775390625 -5 PSM AAMAAWPPAAQAAAAAVAVVGGGGEPGAPR 8 altorf_ENST00000247706.4_2,altorf_ENST00000593489.1_2 0 PXD014145_decoy [, , Percolator, 3.05] 0.547212 1209.2 5 529.4764486 529.4750268 ms_run[5]:controllerType=0 controllerNumber=1 scan=6341 R,R G,G 183,147 212,176 0.0526316 0 AAMAAWPPAAQAAAAAVAVVGGGGEPGAPR test_blast_validate.mzML 6341 non-canonical 30 skiped NO 0.0 NO 0.0 b2,y1,y2,y3,b4,b5,y6,y8,b8,y10,y11,b11,y14 854078.75 11894944.0 637088.0 16729.87890625 5756.53271484375 diff --git a/pgatk/testdata/test_cbioportal_data_clinical_sample.txt b/pgatk/testdata/test_cbioportal_data_clinical_sample.txt deleted file mode 100644 index b52e0362..00000000 --- a/pgatk/testdata/test_cbioportal_data_clinical_sample.txt +++ /dev/null @@ -1,114 +0,0 @@ -#Patient Identifier Sample Identifier Sample Type Concomitant Carcinoma in situ Lymph Node Status Tissue Sequenced Oncotree Code Cancer Type Cancer Type Detailed -#Identifier to uniquely specify a patient. A unique sample identifier. The type of sample (i.e., normal, primary, met, recurrence). Concomitant Carcinoma in situ Lymph Node Status Tissue Sequnced Oncotree Code Cancer Type Cancer Type Detailed -#STRING STRING STRING STRING STRING STRING STRING STRING STRING -#1 1 9 1 1 1 1 1 1 -PATIENT_ID SAMPLE_ID SAMPLE_TYPE CONCOMITANT_CIS LYMPH_NODE_STATUS TISSUE_SEQUENCED ONCOTREE_CODE CANCER_TYPE CANCER_TYPE_DETAILED -DS-bla-001 DS-bla-001 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-002 DS-bla-002 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-003 DS-bla-003 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-004 DS-bla-004 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-005 DS-bla-005 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-006 DS-bla-006 Primary Yes Positive TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-007 DS-bla-007 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-008 DS-bla-008 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-009 DS-bla-009 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-010 DS-bla-010 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-011 DS-bla-011 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-012 DS-bla-012 Primary No Negative TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-014 DS-bla-014 Primary No NA TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-015 DS-bla-015 Primary No NA TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-016 DS-bla-016 Primary No NA TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-017 DS-bla-017 Primary No Negative TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-018 DS-bla-018 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-019 DS-bla-019 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-020 DS-bla-020 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-022 DS-bla-022 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-023 DS-bla-023 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-024 DS-bla-024 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-025 DS-bla-025 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-029 DS-bla-029 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-030 DS-bla-030 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-031 DS-bla-031 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-034 DS-bla-034 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-036 DS-bla-036 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-037 DS-bla-037 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-038 DS-bla-038 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-039 DS-bla-039 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-040 DS-bla-040 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-041 DS-bla-041 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-042 DS-bla-042 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-044 DS-bla-044 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-045 DS-bla-045 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-046 DS-bla-046 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-047 DS-bla-047 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-048 DS-bla-048 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-049 DS-bla-049 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-050 DS-bla-050 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-051 DS-bla-051 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-052 DS-bla-052 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-053 DS-bla-053 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-054 DS-bla-054 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-055 DS-bla-055 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-056 DS-bla-056 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-057 DS-bla-057 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-058 DS-bla-058 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-059 DS-bla-059 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-060 DS-bla-060 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-061 DS-bla-061 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-062 DS-bla-062 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-063 DS-bla-063 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-064 DS-bla-064 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-065 DS-bla-065 Primary No Negative TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-066 DS-bla-066 Primary No NA TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-067 DS-bla-067 Primary Yes NA TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-068 DS-bla-068 Primary No NA TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-071 DS-bla-071 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-075 DS-bla-075 Primary No NA TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-076 DS-bla-076 Primary Yes Negative TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-077 DS-bla-077 Primary No NA TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-078 DS-bla-078 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-079 DS-bla-079 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-080 DS-bla-080 Primary No NA TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-081 DS-bla-081 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-082 DS-bla-082 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-083 DS-bla-083 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-084 DS-bla-084 Primary Yes Negative TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-086 DS-bla-086 Primary Yes NA TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-087 DS-bla-087 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-088 DS-bla-088 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-089 DS-bla-089 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-090 DS-bla-090 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-091 DS-bla-091 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-092 DS-bla-092 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-093 DS-bla-093 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-094 DS-bla-094 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-095 DS-bla-095 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-096 DS-bla-096 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-097 DS-bla-097 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-098 DS-bla-098 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-099 DS-bla-099 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-100 DS-bla-100 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-101 DS-bla-101 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-102 DS-bla-102 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-103 DS-bla-103 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-104 DS-bla-104 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-105 DS-bla-105 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-106 DS-bla-106 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-107 DS-bla-107 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-108 DS-bla-108 Primary No Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-109 DS-bla-109 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-111 DS-bla-111 Primary Yes NA Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-112 DS-bla-112 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-113 DS-bla-113 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-114 DS-bla-114 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-115 DS-bla-115 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-116 DS-bla-116 Primary No Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-117 DS-bla-117 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-120 DS-bla-120 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-121 DS-bla-121 Primary No NA TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-122 DS-bla-122 Primary Yes NA TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-123 DS-bla-123 Primary Yes Positive Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-124 DS-bla-124 Primary No Negative TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-125 DS-bla-125 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-126 DS-bla-126 Primary Yes Negative Radical Cystectomy BLCA Bladder Cancer Bladder Urothelial Carcinoma -DS-bla-127 DS-bla-127 Primary Yes Negative TUR BLCA Bladder Cancer Bladder Urothelial Carcinoma \ No newline at end of file diff --git a/pgatk/testdata/test_cbioportal_data_mutations_mskcc.txt b/pgatk/testdata/test_cbioportal_data_mutations_mskcc.txt deleted file mode 100644 index 547feb5b..00000000 --- a/pgatk/testdata/test_cbioportal_data_mutations_mskcc.txt +++ /dev/null @@ -1,47 +0,0 @@ -Hugo_Symbol Entrez_Gene_Id Center NCBI_Build Chromosome Start_Position End_Position Strand Consequence Variant_Classification Variant_Type Reference_Allele Tumor_Seq_Allele1 Tumor_Seq_Allele2 dbSNP_RS dbSNP_Val_Status Tumor_Sample_Barcode Matched_Norm_Sample_Barcode Match_Norm_Seq_Allele1 Match_Norm_Seq_Allele2 Tumor_Validation_Allele1 Tumor_Validation_Allele2 Match_Norm_Validation_Allele1 Match_Norm_Validation_Allele2 Verification_Status Validation_Status Mutation_Status Sequencing_Phase Sequence_Source Validation_Method Score BAM_File Sequencer t_ref_count t_alt_count n_ref_count n_alt_count HGVSc HGVSp HGVSp_Short Transcript_ID RefSeq Protein_position Codons Hotspot -EPHA8 mskcc.org GRCh37 1 22927834 22927834 + missense_variant Missense_Mutation SNP G A A rs147939357 DS-bla-002 DS-bla-02-N high Somatic 51 36 55 0 ENST00000166244.3:c.2771G>A p.Arg924Gln p.R924Q ENST00000166244 NM_020526.3 924 cGa/cAa 0 -TSC2 mskcc.org GRCh37 16 2134995 2134995 + missense_variant Missense_Mutation SNP G C C rs137854028 DS-bla-002 DS-bla-02-N high Somatic 208 222 249 2 ENST00000219476.3:c.4537G>C p.Glu1513Gln p.E1513Q ENST00000219476 NM_000548.3 1513 Gag/Cag 0 -ESR1 mskcc.org GRCh37 6 152129399 152129399 + missense_variant Missense_Mutation SNP T C C DS-bla-015 DS-bla-13-N high Somatic 36 31 59 0 ENST00000206249.3:c.352T>C p.Ser118Pro p.S118P ENST00000206249 NM_000125.3 118 Tcg/Ccg 0 -EPHA8 mskcc.org GRCh37 1 22921794 22921794 + missense_variant Missense_Mutation SNP C T T DS-bla-016 DS-bla-13-N high Somatic 66 52 71 0 ENST00000166244.3:c.1675C>T p.Leu559Phe p.L559F ENST00000166244 NM_020526.3 559 Ctc/Ttc 0 -EPHA8 mskcc.org GRCh37 1 22925331 22925331 + missense_variant,splice_region_variant Missense_Mutation SNP A C C DS-bla-016 DS-bla-13-N high Somatic 62 46 61 0 ENST00000166244.3:c.2179A>C p.Thr727Pro p.T727P ENST00000166244 NM_020526.3 727 Acc/Ccc 0 -NFKB1 mskcc.org GRCh37 4 103534639 103534639 + missense_variant Missense_Mutation SNP G A A DS-bla-016 DS-bla-13-N high Somatic 217 109 170 0 ENST00000226574.4:c.2650G>A p.Glu884Lys p.E884K ENST00000226574 NM_003998.3 884 Gaa/Aaa 0 -ESR1 mskcc.org GRCh37 6 152163852 152163852 + stop_gained Nonsense_Mutation SNP T A A DS-bla-020 DS-bla-13-N high Somatic 296 104 315 0 ENST00000206249.3:c.573T>A p.Tyr191Ter p.Y191* ENST00000206249 NM_000125.3 191 taT/taA 0 -EPHA8 mskcc.org GRCh37 1 22925454 22925454 + missense_variant Missense_Mutation SNP G A A rs147123754 by1000genomes DS-bla-023 DS-bla-23-N high Somatic 304 209 336 0 ENST00000166244.3:c.2302G>A p.Val768Ile p.V768I ENST00000166244 NM_020526.3 768 Gtt/Att 0 -STAG2 mskcc.org GRCh37 X 123184064 123184064 + missense_variant Missense_Mutation SNP T C C DS-bla-023 DS-bla-23-N high Somatic 653 545 822 1 ENST00000218089.9:c.922T>C p.Cys308Arg p.C308R ENST00000218089 NM_001042749.1 308 Tgc/Cgc 0 -STAG2 mskcc.org GRCh37 X 123179204 123179205 + frameshift_variant Frame_Shift_Ins INS - A DS-bla-025 DS-bla-25-N high Somatic 59 12 206 0 ENST00000218089.9:c.655dup p.Ser219LysfsTer20 p.S219Kfs*20 ENST00000218089 NM_001042749.1 218 aca/acAa 0 -EPHA8 mskcc.org GRCh37 1 22913126 22913126 + missense_variant,splice_region_variant Missense_Mutation SNP C A A DS-bla-037 DS-bla-37-N high Somatic 637 24 329 0 ENST00000166244.3:c.977C>A p.Thr326Asn p.T326N ENST00000166244 NM_020526.3 326 aCc/aAc 0 -NFKB1 mskcc.org GRCh37 4 103504049 103504049 + missense_variant Missense_Mutation SNP G C C DS-bla-044 DS-bla-44-N high Somatic 503 129 467 6 ENST00000226574.4:c.862G>C p.Glu288Gln p.E288Q ENST00000226574 NM_003998.3 288 Gag/Cag 0 -NFKB1 mskcc.org GRCh37 4 103534690 103534690 + stop_gained Nonsense_Mutation SNP C T T DS-bla-044 DS-bla-44-N high Somatic 233 65 155 0 ENST00000226574.4:c.2701C>T p.Gln901Ter p.Q901* ENST00000226574 NM_003998.3 901 Cag/Tag 0 -STAG2 mskcc.org GRCh37 X 123184121 123184121 + frameshift_variant Frame_Shift_Del DEL A A - DS-bla-045 DS-bla-44-N high Somatic 36 241 244 0 ENST00000218089.9:c.979del p.Ser327ValfsTer3 p.S327Vfs*3 ENST00000218089 NM_001042749.1 327 Agt/gt 0 -STAG2 mskcc.org GRCh37 X 123184123 123184126 + frameshift_variant Frame_Shift_Del DEL TTAT TTAT - DS-bla-045 DS-bla-44-N high Somatic 59 218 248 0 ENST00000218089.9:c.984_987del p.Tyr328Ter p.Y328* ENST00000218089 NM_001042749.1 327 agTTAT/ag 0 -STAG2 mskcc.org GRCh37 X 123184126 123184126 + stop_gained Nonsense_Mutation SNP T G G DS-bla-045 DS-bla-44-N high Somatic 38 56 254 0 ENST00000218089.9:c.984T>G p.Tyr328Ter p.Y328* ENST00000218089 NM_001042749.1 328 taT/taG 0 -TSC2 mskcc.org GRCh37 16 2134476 2134476 + missense_variant Missense_Mutation SNP C T T DS-bla-046 DS-bla-46-N high Somatic 75 34 38 0 ENST00000219476.3:c.4253C>T p.Ser1418Leu p.S1418L ENST00000219476 NM_000548.3 1418 tCa/tTa 0 -STAG2 mskcc.org GRCh37 X 123171455 123171455 + stop_gained Nonsense_Mutation SNP C T T DS-bla-046 DS-bla-46-N high Somatic 469 267 391 1 ENST00000218089.9:c.367C>T p.Gln123Ter p.Q123* ENST00000218089 NM_001042749.1 123 Cag/Tag 0 -EPHA8 mskcc.org GRCh37 1 22903038 22903038 + missense_variant Missense_Mutation SNP G A A DS-bla-051 DS-bla-51-N high Somatic 1723 132 152 0 ENST00000166244.3:c.488G>A p.Arg163His p.R163H ENST00000166244 NM_020526.3 163 cGt/cAt 0 -PHOX2B mskcc.org GRCh37 4 41748140 41748140 + missense_variant Missense_Mutation SNP G A A DS-bla-051 DS-bla-51-N high Somatic 1106 143 225 0 ENST00000226382.2:c.629C>T p.Ala210Val p.A210V ENST00000226382 NM_003924.3 210 gCg/gTg 0 -TSC2 mskcc.org GRCh37 16 2121804 2121804 + stop_gained Nonsense_Mutation SNP G T T DS-bla-052 DS-bla-52-N high Somatic 390 274 764 1 ENST00000219476.3:c.1966G>T p.Glu656Ter p.E656* ENST00000219476 NM_000548.3 656 Gag/Tag 0 -TSC2 mskcc.org GRCh37 16 2136365 2136365 + missense_variant Missense_Mutation SNP G C C DS-bla-052 DS-bla-52-N high Somatic 306 12 338 2 ENST00000219476.3:c.4834G>C p.Asp1612His p.D1612H ENST00000219476 NM_000548.3 1612 Gat/Cat 0 -STAG2 mskcc.org GRCh37 X 123211880 123211881 + frameshift_variant Frame_Shift_Ins INS - T DS-bla-052 DS-bla-52-N high Somatic 437 331 186 0 ENST00000218089.9:c.2748dupT p.Lys917Ter p.K917* ENST00000218089 NM_001042749.1 916 gct/gcTt 0 -STAG2 mskcc.org GRCh37 X 123179197 123179197 + stop_gained Nonsense_Mutation SNP C T T DS-bla-058 DS-bla-58-N high Somatic 782 43 203 0 ENST00000218089.9:c.646C>T p.Arg216Ter p.R216* ENST00000218089 NM_001042749.1 216 Cga/Tga 0 -INPP4A mskcc.org GRCh37 2 99182196 99182196 + missense_variant Missense_Mutation SNP C G G DS-bla-059 DS-bla-59-N high Somatic 286 103 241 0 ENST00000074304.5:c.2261C>G p.Ser754Cys p.S754C ENST00000074304 NM_001134224.1 754 tCc/tGc 0 -STAG2 mskcc.org GRCh37 X 123179033 123179033 + missense_variant Missense_Mutation SNP T C C DS-bla-065 DS-bla-065-N high Somatic 36 523 247 ENST00000218089.9:c.482T>C p.Leu161Pro p.L161P ENST00000218089 NM_001042749.1 161 cTt/cCt 0 -NFKB1 mskcc.org GRCh37 4 103500181 103500181 + missense_variant Missense_Mutation SNP G A A DS-bla-067 DS-bla-067-N high Somatic 121 68 260 ENST00000226574.4:c.715G>A p.Ala239Thr p.A239T ENST00000226574 NM_003998.3 239 Gcc/Acc 0 -NFKB1 mskcc.org GRCh37 4 103522098 103522098 + missense_variant Missense_Mutation SNP G A A DS-bla-071 DS-bla-071-N high Somatic 481 124 354 ENST00000226574.4:c.1684G>A p.Asp562Asn p.D562N ENST00000226574 NM_003998.3 562 Gat/Aat 0 -GNA11 mskcc.org GRCh37 19 3119293 3119293 + missense_variant Missense_Mutation SNP G C C DS-bla-078 DS-bla-078-N high Somatic 721 333 769 ENST00000078429.4:c.825G>C p.Lys275Asn p.K275N ENST00000078429 NM_002067.2 275 aaG/aaC 0 -KEAP1 mskcc.org GRCh37 19 10602754 10602754 + missense_variant Missense_Mutation SNP G A A DS-bla-080 DS-bla-080-N high Somatic 893 75 725 ENST00000171111.5:c.824C>T p.Ser275Leu p.S275L ENST00000171111 NM_203500.1 275 tCg/tTg 0 -NFKB1 mskcc.org GRCh37 4 103533621 103533621 + missense_variant Missense_Mutation SNP A G G DS-bla-080 DS-bla-080-N high Somatic 731 42 504 ENST00000226574.4:c.2450A>G p.Lys817Arg p.K817R ENST00000226574 NM_003998.3 817 aAg/aGg 0 -STAG2 mskcc.org GRCh37 X 123164952 123164952 + stop_gained Nonsense_Mutation SNP A T T DS-bla-080 DS-bla-080-N high Somatic 432 83 389 ENST00000218089.9:c.265A>T p.Lys89Ter p.K89* ENST00000218089 NM_001042749.1 89 Aaa/Taa 0 -INPP4A mskcc.org GRCh37 2 99172034 99172034 + missense_variant Missense_Mutation SNP G A A DS-bla-081 DS-bla-081-N high Somatic 1108 56 691 2 ENST00000074304.5:c.1600G>A p.Val534Met p.V534M ENST00000074304 NM_001134224.1 534 Gtg/Atg 0 -STAG2 mskcc.org GRCh37 X 123164826 123164842 + frameshift_variant Frame_Shift_Del DEL AAAAAGGGCCCAGCAGA AAAAAGGGCCCAGCAGA - DS-bla-089 DS-bla-089-N high Somatic 113 131 221 ENST00000218089.9:c.142_158del p.Lys48GlyfsTer33 p.K48Gfs*33 ENST00000218089 NM_001042749.1 47 AAAAAGGGCCCAGCAGAa/a 0 -NFKB1 mskcc.org GRCh37 4 103446682 103446682 + missense_variant Missense_Mutation SNP G A A DS-bla-091 DS-bla-091-N high Somatic 375 109 404 ENST00000226574.4:c.7G>A p.Glu3Lys p.E3K ENST00000226574 NM_003998.3 3 Gaa/Aaa 0 -STAG2 mskcc.org GRCh37 X 123200209 123200212 + frameshift_variant Frame_Shift_Del DEL GTTA GTTA - DS-bla-091 DS-bla-091-N high Somatic 166 154 266 ENST00000218089.9:c.2188_2191del p.Val730PhefsTer10 p.V730Ffs*10 ENST00000218089 NM_001042749.1 730 GTTAtt/tt 0 -INPP4A mskcc.org GRCh37 2 99155352 99155352 + splice_acceptor_variant Splice_Site SNP A C C DS-bla-092 DS-bla-092-N high Somatic 541 112 607 ENST00000074304.5:c.580-2A>C p.X194_splice ENST00000074304 NM_001134224.1 0 -NFKB1 mskcc.org GRCh37 4 103517460 103517460 + missense_variant Missense_Mutation SNP G A A DS-bla-095 DS-bla-095-N high Somatic 444 53 187 ENST00000226574.4:c.1466G>A p.Gly489Glu p.G489E ENST00000226574 NM_003998.3 489 gGa/gAa 0 -STAG2 mskcc.org GRCh37 X 123185061 123185061 + missense_variant Missense_Mutation SNP C T T DS-bla-095 DS-bla-095-N high Somatic 502 132 290 ENST00000218089.9:c.1108C>T p.Arg370Trp p.R370W ENST00000218089 NM_001042749.1 370 Cgg/Tgg 0 -STAG2 mskcc.org GRCh37 X 123195149 123195150 + inframe_insertion In_Frame_Ins INS - TGAATAGCT DS-bla-099 DS-bla-099-N high Somatic 590 77 293 1 ENST00000218089.9:c.1495_1503dup p.Asn499_Leu501dup p.N499_L501dup ENST00000218089 NM_001042749.1 498 atg/aTGAATAGCTtg 0 -STAG2 mskcc.org GRCh37 X 123191735 123191735 + frameshift_variant Frame_Shift_Del DEL C C - DS-bla-100 DS-bla-100-N high Somatic 51 444 208 ENST00000218089.9:c.1325del p.Pro442GlnfsTer6 p.P442Qfs*6 ENST00000218089 NM_001042749.1 442 Cca/ca 0 -STAG2 mskcc.org GRCh37 X 123191816 123191817 + stop_gained Nonsense_Mutation DNP CT TA TA DS-bla-107 DS-bla-107-N high Somatic 66 438 249 3 ENST00000218089.9:c.1405_1406delinsTA p.Leu469Ter p.L469* ENST00000218089 NM_001042749.1 469 CTa/TAa 0 -EPHA8 mskcc.org GRCh37 1 22928183 22928183 + missense_variant Missense_Mutation SNP G C C DS-bla-108 DS-bla-108-N high Somatic 1182 247 638 0 ENST00000166244.3:c.2967G>C p.Gln989His p.Q989H ENST00000166244 NM_020526.3 989 caG/caC 0 -STAG2 mskcc.org GRCh37 X 123171389 123171390 + frameshift_variant Frame_Shift_Del DEL GA GA - DS-bla-108 DS-bla-108-N high Somatic 44 565 340 0 ENST00000218089.9:c.301_302del p.Asp101LeufsTer8 p.D101Lfs*8 ENST00000218089 NM_001042749.1 101 GAt/t 0 -PIK3R2 mskcc.org GRCh37 19 18273252 18273252 + missense_variant Missense_Mutation SNP G A A DS-bla-111 DS-bla-111-N p.D349N high Somatic 1288 137 1381 1 ENST00000222254.8:c.1045G>A p.Asp349Asn p.D349N ENST00000222254 NM_005027.3 349 Gat/Aat 0 -STAG2 mskcc.org GRCh37 X 123179197 123179197 + stop_gained Nonsense_Mutation SNP C T T DS-bla-114 DS-bla-114-N p.R216* high Somatic 237 252 332 0 ENST00000218089.9:c.646C>T p.Arg216Ter p.R216* ENST00000218089 NM_001042749.1 216 Cga/Tga 0 diff --git a/pgatk/testdata/test_cbioportal_data_mutations_mskcc_proteindb.fa b/pgatk/testdata/test_cbioportal_data_mutations_mskcc_proteindb.fa deleted file mode 100644 index 72defd54..00000000 --- a/pgatk/testdata/test_cbioportal_data_mutations_mskcc_proteindb.fa +++ /dev/null @@ -1,44 +0,0 @@ ->cbiomut:ENST00000219476:TSC2:p.E1513Q:Missense_Mutation -RFLAWGERGQRSGAPETQPLRTAIFGKKAQGGNAGPHVGTVRGCRVCSPCPRSWEPQEAARDSSLQPLSRLLPRSSHGAALPAAASLLRRGPGSSLHPRGPAPGPRLRLRVSILALKAVMPDSCGLHIPAAHAAPSRDARIAGLSARGRHRTTTPSKLPRRPSAQCRYRKCGSRFRRRPGARGVRLSPRRGGPERGGAAREGFSGASWSTMAKPTSKDSGLKEKFKILLGLGTPRPNPRSAEGKQTEFIITAEILRELSMECGLNNRIRMIGQICEVAKTKKFEEHAVEALWKAVADLLQPERPLEARHAVLALLKAIVQGQGERLGVLRALFFKVIKDYPSNEDLHERLEVFKALTDNGRHITYLEEELADFVLQWMDVGLSSEFLLVLVNLVKFNSCYLDEYIARMVQMICLLCVRTASSVDIEVSLQVLDAVVCYNCLPAESLPLFIVTLCRTINVKELCEPCWKLMRNLLGTHLGHSAIYNMCHLMEDRAYMEDAPLLRGAVFFVGMALWGAHRLYSLRNSPTSVLPSFYQAMACPNEVVSYEIVLSITRLIKKYRKELQVVAWDILLNIIERLLQQLQTLDSPELRTIVHDLLTTVEELCDQNEFHGSQERYFELVERCADQRPESSLLNLISYRAQSIHPAKDGWIQNLQALMERFFRSESRGAVRIKVLDVLSFVLLINRQFYEEELINSVVISQLSHIPEDKDHQVRKLATQLLVDLAEGCHTHHFNSLLDIIEKVMARSLSPPPELEERDVAAYSASLEDVKTAVLGLLVILQTKLYTLPASHATRVYEMLVSHIQLHYKHSYTLPIASSIRLQAFDFLLLLRADSLHRLGLPNKDGVVRFSPYCVCDYMEPERGSEKKTSGPLSPPTGPPGPAPAGPAVRLGSVPYSLLFRVLLQCLKQESDWKVLKLVLGRLPESLRYKVLIFTSPCSVDQLCSALCSMLSGPKTLERLRGAPEGFSRTDLHLAVVPVLTALISYHNYLDKTKQREMVYCLEQGLIHRCASQCVVALSICSVEMPDIIIKALPVLVVKLTHISATASMAVPLLEFLSTLARLPHLYRNFAAEQYASVFAISLPYTNPSKFNQYIVCLAHHVIAMWFIRCRLPFRKDFVPFITKGLRSNVLLSFDDTPEKDSFRARSTSLNERPKSLRIARPPKQGLNNSPPVKEFKESSAAEAFRCRSISVSEHVVRSRIQTSLTSASLGSADENSVAQADDSLKNLHLELTETCLDMMARYVFSNFTAVPKRSPVGEFLLAGGRTKTWLVGNKLVTVTTSVGTGTRSLLGLDSGELQSGPESSSSPGVHVRQTKEAPAKLESQAGQQVSRGARDRVRSMSGGHGLRVGALDVPASQFLGSATSPGPRTAPAAKPEKASAGTRVPVQEKTNLAAYVPLLTQGWAEILVRRPTGNTSWLMSLENPLSPFSSDINNMPLQELSNALMAAERFKEHRDTALYKSLSVPAASTAKPPPLPRSNTVASFSSLYQSSCQGQLHRSVSWADSAVVMEERSPGEVPVLVEPPGLEDVEAALGMDRRTDAYSRSSSVSSQEEKSLHAEELVGRGIPIERVVSSEGGRPSVDLSFQPSQPLSKSSSSPELQTLQDILGDPGDKADVGRLSPEVKARSQSGTLDGESAAWSASGEDSRGQPEGPLPSSSPRSPSGLRPRGYTISDSAPSRRGKRVERDALKSRATASNAEKVPGINPSFVFLQLYHSPFFGDESNKPILLPNESQSFERSVQLLDQIPSYDTHKIAVLYVGEGQSNSELAILSNEHGSYRYTEFLTGLGRLIELKDCQPDKVYLGGLDVCGEDGQFTYCWHDDIMQAVFHIATLMPTKDVDKHRCDKKRHLGNDFVSIVYNDSGEDFKLGTIKGQFNFVHVIVTPLDYECNLVSLQCRKDMEGLVDTSVAKIVSDRNLPFVARQMALHANMASQVHHSRSNPTDIYPSKWIARLRHIKRLRQRICEEAAYSNPSLPLVHPPSHSKAPAQTPAEPTPGYEVGQRKRLISSVEDFTEFV*GRGPPSCTGLGRYCLSVK*IKS*PQCTDIEAQIA ->cbiomut:ENST00000166244:EPHA8:p.L559F:Missense_Mutation -SRRAGRSGQARGCVAPPPARPGPAMAPARGRLPPALWVVTAAAAAATCVSAARGEVNLLDTSTIHGDWGWLTYPAHGWDSINEVDESFQPIHTYQVCNVMSPNQNNWLRTSWVPRDGARRVYAEIKFTLRDCNSMPGVLGTCKETFNLYYLESDRDLGASTQESQFLKIDTIAADESFTGADLGVRRLKLNTEVRSVGPLSKRGFYLAFQDIGACLAILSLRIYYKKCPAMVRNLAAFSEAVTGADSSSLVEVRGQCVRHSEERDTPKMYCSAEGEWLVPIGKCVCSAGYEERRDACVACELGFYKSAPGDQLCARCPPHSHSAAPAAQACHCDLSYYRAALDPPSSACTRPPSAPVNLISSVNGTSVTLEWAPPLDPGGRSDITYNAVCRRCPWALSRCEACGSGTRFVPQQTSLVQASLLVANLLAHMNYSFWIEAVNGVSDLSPEPRRAAVVNITTNQAAPSQVVVIRQERAGQTSVSLLWQEPEQPNGIILEYEIKYYEKDKEMQSYSTLKAVTTRATVSGLKPGTRYVFQVRARTSAGCGRFSQAMEVETGKPWPRYDTRTIVWICLTLITGLVVLLLLLICKKRHCGYSKAFQDSDEEKMHYQNGQAPPPVFLPLHHPPGKLPEPQFYAEPHTYEEPGRAGRSFTREIEASRIHIEKIIGSGDSGEVCYGRLRVPGQRDVPVAIKALKAGYTERQRRDFLSEASIMGQFDHPNIIRLEGVVTRGRLAMIVTEYMENGSLDTFLRTHDGQFTIMQLVGMLRGVGAGMRYLSDLGYVHRDLAARNVLVDSNLVCKVSDFGLSRVLEDDPDAAYTTTGGKIPIRWTAPEAIAFRTFSSASDVWSFGVVMWEVLAYGERPYWNMTNRDVISSVEEGYRLPAPMGCPHALHQLMLDCWHKDRAQRPRFSQIVSVLDALIRSPESLRATATVSRCPPPAFVRSCFDLRGGSGGGGGLTVGDWLDSIRMGRYRDHFAAGGYSSLGMVLRMNAQDVRALGITLMGHQKKILGSIQTMRAQLTSTQGPRRHL*CTASRAQAATKPTPGHASGRGREGLAAGRAAPGLCPPLRCWRS*RLRHRTWSYQGSGAWEGAFGGHPGEDTCPPGQAPSLFQSLGPPRHRVQQGHHSPASVCVHVCVWWGVFSQGHGISCEQCVIKCVHPFGSQHGRVHVMSVCLSVKAGGTCG*WWMMCHE*GGV*AGNSV*HRQVQHPWGRGRGSPLRPPTPGGWSQGPLLNCTSTRPTLVSAWVSPPRLYLRSGSSL*PRRPPAASTRLSPLLQQENRVPGQSGWPPSWRHHGRAHEMSSAGLGCLARAGGSAASSSL*CLPSTAQVSSLKVPSPTFQCPALTPALCPPGLGSGTRGSYLLSTQPTPSCSIWGD*GLERGVMPRPRLHCNQVSESGLRPPAKALVPIHHPTRALGVEVPWKPLPSHTDLPPYGPPGYVNISFLPCQNIFSSLLTMQKWSSKHIKSTQGEKAPSRGPLAGREAGTPPCAPCQPQREWRAQLPSPAPPPHSQHSYPAGTPALSPLSLLQ*FGESQPHPGAAASSLHLYILYYYIAELFFLPMEVGNMVRTRSGGGILSSSPPHPTLTQFLGSGSSQSWRHRGPGTCKSVAPHSSVWSLSGSWGSASLWSPS*LLNLPTIRINSASS ->cbiomut:ENST00000166244:EPHA8:p.V768I:Missense_Mutation -SRRAGRSGQARGCVAPPPARPGPAMAPARGRLPPALWVVTAAAAAATCVSAARGEVNLLDTSTIHGDWGWLTYPAHGWDSINEVDESFQPIHTYQVCNVMSPNQNNWLRTSWVPRDGARRVYAEIKFTLRDCNSMPGVLGTCKETFNLYYLESDRDLGASTQESQFLKIDTIAADESFTGADLGVRRLKLNTEVRSVGPLSKRGFYLAFQDIGACLAILSLRIYYKKCPAMVRNLAAFSEAVTGADSSSLVEVRGQCVRHSEERDTPKMYCSAEGEWLVPIGKCVCSAGYEERRDACVACELGFYKSAPGDQLCARCPPHSHSAAPAAQACHCDLSYYRAALDPPSSACTRPPSAPVNLISSVNGTSVTLEWAPPLDPGGRSDITYNAVCRRCPWALSRCEACGSGTRFVPQQTSLVQASLLVANLLAHMNYSFWIEAVNGVSDLSPEPRRAAVVNITTNQAAPSQVVVIRQERAGQTSVSLLWQEPEQPNGIILEYEIKYYEKDKEMQSYSTLKAVTTRATVSGLKPGTRYVFQVRARTSAGCGRFSQAMEVETGKPRPRYDTRTIVWICLTLITGLVVLLLLLICKKRHCGYSKAFQDSDEEKMHYQNGQAPPPVFLPLHHPPGKLPEPQFYAEPHTYEEPGRAGRSFTREIEASRIHIEKIIGSGDSGEVCYGRLRVPGQRDVPVAIKALKAGYTERQRRDFLSEASIMGQFDHPNIIRLEGVVTRGRLAMIVTEYMENGSLDTFLRTHDGQFTIMQLVGMLRGMGAGMRYLSDLGYVHRDLAARNVLVDSNLVCKVSDFGLSRVLEDDPDAAYTTTGGKIPIRWTAPEAIAFRTFSSASDVWSFGVVMWEVLAYGERPYWNMTNRDVISSVEEGYRLPAPMGCPHALHQLMLDCWHKDRAQRPRFSQIVSVLDALIRSPESLRATATVSRCPPPAFVRSCFDLRGGSGGGGGLTVGDWLDSIRMGRYRDHFAAGGYSSLGMVLRMNAQDVRALGITLMGHQKKILGSIQTMRAQLTSTQGPRRHL*CTASRAQAATKPTPGHASGRGREGLAAGRAAPGLCPPLRCWRS*RLRHRTWSYQGSGAWEGAFGGHPGEDTCPPGQAPSLFQSLGPPRHRVQQGHHSPASVCVHVCVWWGVFSQGHGISCEQCVIKCVHPFGSQHGRVHVMSVCLSVKAGGTCG*WWMMCHE*GGV*AGNSV*HRQVQHPWGRGRGSPLRPPTPGGWSQGPLLNCTSTRPTLVSAWVSPPRLYLRSGSSL*PRRPPAASTRLSPLLQQENRVPGQSGWPPSWRHHGRAHEMSSAGLGCLARAGGSAASSSL*CLPSTAQVSSLKVPSPTFQCPALTPALCPPGLGSGTRGSYLLSTQPTPSCSIWGD*GLERGVMPRPRLHCNQVSESGLRPPAKALVPIHHPTRALGVEVPWKPLPSHTDLPPYGPPGYVNISFLPCQNIFSSLLTMQKWSSKHIKSTQGEKAPSRGPLAGREAGTPPCAPCQPQREWRAQLPSPAPPPHSQHSYPAGTPALSPLSLLQ*FGESQPHPGAAASSLHLYILYYYIAELFFLPMEVGNMVRTRSGGGILSSSPPHPTLTQFLGSGSSQSWRHRGPGTCKSVAPHSSVWSLSGSWGSASLWSPS*LLNLPTIRINSASS ->cbiomut:ENST00000218089:STAG2:p.S219Kfs*20:Frame_Shift_Ins -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000166244:EPHA8:p.T326N:Missense_Mutation -SRRAGRSGQARGCVAPPPARPGPAMAPARGRLPPALWVVTAAAAAATCVSAARGEVNLLDTSTIHGDWGWLTYPAHGWDSINEVDESFQPIHTYQVCNVMSPNQNNWLRTSWVPRDGARRVYAEIKFTLRDCNSMPGVLGTCKETFNLYYLESDRDLGASTQESQFLKIDTIAADESFTGADLGVRRLKLNTEVRSVGPLSKRGFYLAFQDIGACLAILSLRIYYKKCPAMVRNLAAFSEAVTGADSSSLVEVRGQCVRHSEERDTPKMYCSAEGEWLVPIGKCVCSAGYEERRDACVACELGFYKSAPGDQLCARCPPHSHSAAQAAQACHCDLSYYRAALDPPSSACTRPPSAPVNLISSVNGTSVTLEWAPPLDPGGRSDITYNAVCRRCPWALSRCEACGSGTRFVPQQTSLVQASLLVANLLAHMNYSFWIEAVNGVSDLSPEPRRAAVVNITTNQAAPSQVVVIRQERAGQTSVSLLWQEPEQPNGIILEYEIKYYEKDKEMQSYSTLKAVTTRATVSGLKPGTRYVFQVRARTSAGCGRFSQAMEVETGKPRPRYDTRTIVWICLTLITGLVVLLLLLICKKRHCGYSKAFQDSDEEKMHYQNGQAPPPVFLPLHHPPGKLPEPQFYAEPHTYEEPGRAGRSFTREIEASRIHIEKIIGSGDSGEVCYGRLRVPGQRDVPVAIKALKAGYTERQRRDFLSEASIMGQFDHPNIIRLEGVVTRGRLAMIVTEYMENGSLDTFLRTHDGQFTIMQLVGMLRGVGAGMRYLSDLGYVHRDLAARNVLVDSNLVCKVSDFGLSRVLEDDPDAAYTTTGGKIPIRWTAPEAIAFRTFSSASDVWSFGVVMWEVLAYGERPYWNMTNRDVISSVEEGYRLPAPMGCPHALHQLMLDCWHKDRAQRPRFSQIVSVLDALIRSPESLRATATVSRCPPPAFVRSCFDLRGGSGGGGGLTVGDWLDSIRMGRYRDHFAAGGYSSLGMVLRMNAQDVRALGITLMGHQKKILGSIQTMRAQLTSTQGPRRHL*CTASRAQAATKPTPGHASGRGREGLAAGRAAPGLCPPLRCWRS*RLRHRTWSYQGSGAWEGAFGGHPGEDTCPPGQAPSLFQSLGPPRHRVQQGHHSPASVCVHVCVWWGVFSQGHGISCEQCVIKCVHPFGSQHGRVHVMSVCLSVKAGGTCG*WWMMCHE*GGV*AGNSV*HRQVQHPWGRGRGSPLRPPTPGGWSQGPLLNCTSTRPTLVSAWVSPPRLYLRSGSSL*PRRPPAASTRLSPLLQQENRVPGQSGWPPSWRHHGRAHEMSSAGLGCLARAGGSAASSSL*CLPSTAQVSSLKVPSPTFQCPALTPALCPPGLGSGTRGSYLLSTQPTPSCSIWGD*GLERGVMPRPRLHCNQVSESGLRPPAKALVPIHHPTRALGVEVPWKPLPSHTDLPPYGPPGYVNISFLPCQNIFSSLLTMQKWSSKHIKSTQGEKAPSRGPLAGREAGTPPCAPCQPQREWRAQLPSPAPPPHSQHSYPAGTPALSPLSLLQ*FGESQPHPGAAASSLHLYILYYYIAELFFLPMEVGNMVRTRSGGGILSSSPPHPTLTQFLGSGSSQSWRHRGPGTCKSVAPHSSVWSLSGSWGSASLWSPS*LLNLPTIRINSASS ->cbiomut:ENST00000218089:STAG2:p.S327Vfs*3:Frame_Shift_Del -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000218089:STAG2:p.Y328*:Frame_Shift_Del -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000218089:STAG2:p.Y328*:Nonsense_Mutation -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGEYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000219476:TSC2:p.D1612H:Missense_Mutation -RFLAWGERGQRSGAPETQPLRTAIFGKKAQGGNAGPHVGTVRGCRVCSPCPRSWEPQEAARDSSLQPLSRLLPRSSHGAALPAAASLLRRGPGSSLHPRGPAPGPRLRLRVSILALKAVMPDSCGLHIPAAHAAPSRDARIAGLSARGRHRTTTPSKLPRRPSAQCRYRKCGSRFRRRPGARGVRLSPRRGGPERGGAAREGFSGASWSTMAKPTSKDSGLKEKFKILLGLGTPRPNPRSAEGKQTEFIITAEILRELSMECGLNNRIRMIGQICEVAKTKKFEEHAVEALWKAVADLLQPERPLEARHAVLALLKAIVQGQGERLGVLRALFFKVIKDYPSNEDLHERLEVFKALTDNGRHITYLEEELADFVLQWMDVGLSSEFLLVLVNLVKFNSCYLDEYIARMVQMICLLCVRTASSVDIEVSLQVLDAVVCYNCLPAESLPLFIVTLCRTINVKELCEPCWKLMRNLLGTHLGHSAIYNMCHLMEDRAYMEDAPLLRGAVFFVGMALWGAHRLYSLRNSPTSVLPSFYQAMACPNEVVSYEIVLSITRLIKKYRKELQVVAWDILLNIIERLLQQLQTLDSPELRTIVHDLLTTVEELCDQNEFHGSQERYFELVERCADQRPESSLLNLISYRAQSIHPAKDGWIQNLQALMERFFRSESRGAVRIKVLDVLSFVLLINRQFYEEELINSVVISQLSHIPEDKDHQVRKLATQLLVDLAEGCHTHHFNSLLDIIEKVMARSLSPPPELEERDVAAYSASLEDVKTAVLGLLVILQTKLYTLPASHATRVYEMLVSHIQLHYKHSYTLPIASSIRLQAFDFLLLLRADSLHRLGLPNKDGVVRFSPYCVCDYMEPERGSEKKTSGPLSPPTGPPGPAPAGPAVRLGSVPYSLLFRVLLQCLKQESDWKVLKLVLGRLPESLRYKVLIFTSPCSVDQLCSALCSMLSGPKTLERLRGAPEGFSRTDLHLAVVPVLTALISYHNYLDKTKQREMVYCLEQGLIHRCASQCVVALSICSVEMPDIIIKALPVLVVKLTHISATASMAVPLLEFLSTLARLPHLYRNFAAEQYASVFAISLPYTNPSKFNQYIVCLAHHVIAMWFIRCRLPFRKDFVPFITKGLRSNVLLSFDDTPEKDSFRARSTSLNERPKSLRIARPPKQGLNNSPPVKEFKESSAAEAFRCRSISVSEHVVRSRIQTSLTSASLGSADENSVAQADDSLKNLHLELTETCLDMMARYVFSNFTAVPKRSPVGEFLLAGGRTKTWLVGNKLVTVTTSVGTGTRSLLGLDSGELQSGPESSSSPGVHVRQTKEAPAKLESQAGQQVSRGARDRVRSMSGGHGLRVGALDVPASQFLGSATSPGPRTAPAAKPEKASAGTRVPVQEKTNLAAYVPLLTQGWAEILVRRPTGNTSWLMSLENPLSPFSSDINNMPLQELSNALMAAERFKEHRDTALYKSLSVPAASTAKPPPLPRSNTVASFSSLYQSSCQGQLHRSVSWADSAVVMEEGSPGEVPVLVEPPGLEDVEAALGMDRRTDAYSRSSSVSSQEEKSLHAEELVGRGIPIERVVSSEGGRPSVDLSFQPSQPLSKSSSSPELQTLQDILGDPRDKADVGRLSPEVKARSQSGTLDGESAAWSASGEDSRGQPEGPLPSSSPRSPSGLRPRGYTISDSAPSRRGKRVERDALKSRATASNAEKVPGINPSFVFLQLYHSPFFGDESNKPILLPNESQSFERSVQLLDQIPSYDTHKIAVLYVGEGQSNSELAILSNEHGSYRYTEFLTGLGRLIELKDCQPDKVYLGGLDVCGEDGQFTYCWHDDIMQAVFHIATLMPTKDVDKHRCDKKRHLGNDFVSIVYNDSGEDFKLGTIKGQFNFVHVIVTPLDYECNLVSLQCRKDMEGLVDTSVAKIVSDRNLPFVARQMALHANMASQVHHSRSNPTDIYPSKWIARLRHIKRLRQRICEEAAYSNPSLPLVHPPSHSKAPAQTPAEPTPGYEVGQRKRLISSVEDFTEFV*GRGPPSCTGLGRYCLSVK*IKS*PQCTDIEAQIA ->cbiomut:ENST00000218089:STAG2:p.K917*:Frame_Shift_Ins -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLA*DN*KQLYKGGLAAFKETNESILSDMSTLPDQREYYC*GTGLHYSV*YFDDLQPSDYVRRA*HVRAISVYP*FFIAV*VAQLYFGSCLH*TG*****CRWSARG*SQ*N*SSAQEKKFTCSIL*ANCIYCGGDEYSCRYLQTVYEVL**LWRYHQRNNE*NKADRQNSVC*DPYSQSATAF**NDTRKWL*F**IILYI*WHKRTCSTFCFNFWT*SVENKRSHCHATQRWHRICF*RA*SARGEPSTFKFGIS*YSE*IFF*TTSTRQKNSVCLLGKVHDLSDVTPKRGCVASTDVLPKFFASWW***HHVSH*WNQQPGVNSTE*KIKTIYRKTESG*GHAAFTH*RK****QYVVKQRTNTAHPCYDADTTTHLHYYERAQKITA*G*LHECLSNAD*TSSNTS*L*HAGNMDVSSKTTRGSKATAGESSNELC*TAN*SSACHSAWHKPNGR**RANCGRCYDVLRRED*GS**GNGF*HHGYRFATIKEQTRENRTEA*FL*SSFNYG*ISSWSVNVLIPVHN*ICGEVIF*VEEEILKCGRYSEILYRFFSKENMTCLCLPRSSALRGSFVCLNKRKGQVNNLMISYSFS*KVNILFMRC*LAFESIISCFFLKKKKNKITI*RGIWYRYEFSYIYLLVVLNNDDLCWISVYIQKTMLRMYLFPYPEESVG*NCF*HSKFKCLKRQSTKLCFKYCNCGEK*TYKQNFYNFFI*KYFKIFLKSKSFSILFRNIQMQ*TARR*PVSNMLIPLSTLKVCLSFKIKM*CCDIPSSNATVFCLQIKEAYCSMFAEKF*TKIIQLIRVWE*GSKF*IKLYIYI ->cbiomut:ENST00000074304:INPP4A:p.S754C:Missense_Mutation -V*SGGGWLGLRRAWRVRCWFAAGSGSVGRGRRTST*GRARSPRLHSQAAALLLLRGSGAQPGGTAGRLAPGAGERQMMDLDMLL*RNATWSESKHVQATATLVD*GSVPALPG*SGVV*PRIKKHIITNDIMTAREHSPRHGARARAMQRASTIDVAADMLGLSLAGNIQDPDEPILEFSLACSELHTPSLDRKPNSFVAVSVTTPPQAFWTKHAQTEIIEGTNNPIFLSSIAFFQDSLINQMTQVKLSVYDVKDRSQGTMYLLGSGTFIVKDLLQDRHHRLHLTLRSAESDRVGNITVIGWQMEEKSDQRPPVTRSVDTVNGRMVLPVDESLTEALGIRSKYASLRKDTLLKSVFGGAICRMYRFPTTDGNHLRILEQMAESVLSLHVPRQFVKLLLEEDAARVCELEELGELSPCWESLRRQIVTQYQTIILTYQENLTDLHQYRGPSFKASSLKADKKLEFVPTNLHIQRMRVQDDGGSDQNYDIVTIGAPAAHCQGFKSGGLRKKLHKFEETKKHFEECCTSSGCQSIIYIPQDVVRAKEIIAQINTLKTQVSYYAERLSRAAKDRSATGLERTLAILADKTRQLVTVCDCKLLANSIHGLNAARPDYIASKASPTSTEEEQVMLRNDQDTLMARWTGRNSRSSLQVDWHEEEWEKVWLNVDKSLECIIQRVDKLLQKERLHGEGCEDVFPCAGSCTSKKGNPDSHAYWIRPEDPFCDVPSSPCPSTMPSTACHPHLTTHCSPPPEESSRGEWSEALYPLLTTLTDCVAMMSDKAKKAMVFLLMQDSAPTIATYLSLQYRRDVVFCQTLTALICGFIIKLRNCLHDDGFLRQLYTIGLLAQFESLLSTYGEELAMLEDMSLGIMDLRNVTFKVTQATSSASADMLPVITGNRDGFNVRVPLPGPLFDALPREIQSGMLLRVQPVLFNVGINEQQTLAERFGDTSLQEVINVESLVRLNSYFEQFKEVLPEDCLPRSRSQTCLPELLRFLGQNVHARKNKNVDILWQAAEICRRLNGVRFTSCKSAKDRTAMSVTLEQCLILQHEHGMAPQVFTQALECMRSEGCRRENTMKNVGSRKYAFNSLQLKAFPKHYRPPEGTYGKVET*THGFL*LAVT**MWVPSSVIYEFFKKT*RIGFYFLWFF*KKHFTKESLEHVFCFLGFFPHWNQ*EVMFGSIVWIVTTAYLN*IAFGCNYTDLINSYLHESS*VCLKC*KTFSNACLLTYFSTE*LKSNH*ITIHFVKI*M*NSK**IK*LDPRHTNKCYLGKEASTISCSENNGF**IILSTLPPEEVERKIDKSTGDKTLLEGNTCKVPHIVGATLFSVPYELQNRESAGDTKPAVRSL*PVSCSLKLPAEAPSRPEDTSPLLL*MLM*GLRCGMSTLPWGIYDHRDSRNLNIFRKKIFFAGFPIYL*KDSTIMFECLMKVSYF*VCNNCYFLILILM*DDY*ETVEIYSPQMRF*KGFMGHKT*EFHRKFCLVIFYKMMMSLICT*QSLFLRSLYVLLILFTMFTCS*KGCKRNTYGTY**C*S**FVNLLEILLSKSLEILLVPLETCNKLGPGVLRHGEDCLLAGTQRGWASGRVELDDLPDPLLLRSQHASSACCLPMPAGRKMSVKDTLMKDEALCCSLKAEFTVAGRKQRSSCPPNPLHRWLLLVSDSPF*VSISVHRQFVFNMADLPFHLSTISFNL*IFSSVFSHFNF*KISLLFKNKYYPHSFQIFFVWRALNICTHQREYSKC*SSVSSFACDTFI*IIFPIFALCNGSP*NCKTWQML*KRFRFQYSL*RHHSWASGSITRFQCLQGEGVWHRGKQLLSSVGALGFQRCREGSFTGYRKTEVPSSVPYDASPFKKKRDLWKTGNVMWILSELLQSTVAFSFL*RCKNIV*YSFVPTQLYLPSLVHYDTFIYLFWAVLLYIYKHTVTVLYILRSFKAMYAVNVLVFRMTHNK*LTRY*MWSCLIHPIRRTSSM*PACDWTIVLGHCIECSGAEYMFVNMGPWETSIL*ACFCLI*SRGATALRLRARTLGAHRPGPNPGSAPDWLVTLSKLLDLSKPPFPHVQSVDNNSTFLIRNVRRASEVRVHKW*PLLLPSRL*TWITSSLWVTQSSLYDLSKCSSTCINIDPVHRHQDCILHHCAVF*AHTTRYLPWKNSSHWKCTIKG*LKCLTLGVFSITKLLEI*ATTKNNMCLFPLFSLMVAVHLVSVS*FLDYCEH*TSFIPL*YFYVCDFIGMLIYFI*IVFNIQCISPC ->cbiomut:ENST00000226574:NFKB1:p.D562N:Missense_Mutation -VRE*ARQKEREVHQRAGAGRGGFATGAARRRADSFPCPSRRSGRQPPQPSACTQPPAPLPEPSAAEAAAARPVRRRRRPATARPALPSARAAAMARR*LAWPGPAALPLAPTRTRARPGSGLPPPLPSPAGRPAPLRRESPPAPGGRTRTRHPASEWQKMIHIWEGLNKCFIWILL*LIQYLIQKYFNHRWHCQQQMAHTFKY*SNLNREDFVSVMYVKAHPMVDYLVPLVKRTRSLTLRSKSATMWDQQRLLFSWSQMEKISTCMPTAWWENTVRMGSAL*LLDPRTWWSASQTWVYFM*QRKKYLKHWKHE*QRRV*GAIILDSWCTLTLPICKQKVEGTGSWEIGKKS*SAKQLCSRPRRWTSAWCGSCLQLFFRIALAASQGAWNPWYQTPSMTVKPPMHPT*KL*EWTGQLDV*LEGRKFIFFVTKFRKMTSRFDFMKRKKMVESGKDLEIFPPQMFIDNLPLSSKLQSIKILILQNQPLCLSSFGGNLTWKLVNQNLSSTILKSKIKKKCRGNVRSSCPIFRIVSAVVVVLELEAEACLVVAVEEGALEVQVQGITSHTMDFLLMVGLLSILELLNLMLG*SMEPWTLNLKRTLKVVTKVMTKTL*TSLGKLLKPQSKIRSPARPPLGMVRSL*RMQQEQKKRVLEFRITSF*RRLCSLQRGMPMPFSTTR*QET*RCCWPSSAISLLCRMRMGTVSYT*QSSTFILNL*GIY*KSHLV*FLMTLST*EMICTRRPCTWQ*SLSRKMWWRIC*GLGPT*AFWTAWVTLFCT*LPKKDMIKFSVSYSSTKRQHYFLTTPTGTV*MPFI*P**AIACHVCCCWWPLGLTSMLRSRSPGAQHCTWLWSTTTSHWQAACSWRVMPMWTVLPTMEPHPCI*QLGEGPPGWQLFSKQQEQIPWWRTLSLSMTWMTLGKMQERMKELCLEPRL*IWPPAGRYLTY*MGNHMSQSLHLMIY*HKET*NSWLKM*SCSCISY*KFLIQTKTGLLWRRN*VWGYLIMPSG*VLLLPKHLWTTMRSLGVQSESWWRP*DKWATPKQLK*SRQPPAQ*RPPLRPTRCLSRLPPQGSK*TSSETVTVSATAAWRHPSANSALPSL*PVVPHC*LSTKCPMIMGRKDL*KAKFSLLTISHTV*TKALKFHCVVHKTEAEVHPKVLREPARLNHSRFNSRPFQLGFLSWFINEF*FGSLTDSI*QSQHWLSGCIWG*GCLLSFASCCWITAAFCCHCCCPSATFLLSLKVSRSPPGIPSDHSIILHSN*GLRKEIF*NESHLMCHFKKKGILLFLMWLFL*FAKKKKKKILVNI*TWLQSLLKMVFSPFSAFCYCKYVF*IKYFKGKNVGFINAIFYFTFIIKGKAN**P ->cbiomut:ENST00000078429:GNA11:p.K275N:Missense_Mutation -AAAAARAECGRAGVRGWRGPSGDPAARQAAAEAGRAGPGPRAGGRGRRAAAGGGRGGSGQGRAGGRGAAAGRRPRRPGPGR*LWSP*WRVA*AMR*RSPSGSTPRSRSSCGGTSATPGASSSCCCSARARAGRARSSSRCASSTAPATRRRTSAASPSSSTRTSSPPCRP*SGPWRRSRSSTSTSRTRPMRS*SGRWTWRR*PPSSISTSVPSRPCGRTRASRNATTAGASTSSPTLPSTT*PTLTASPPWATCPPSRTCCGSACPPPASSSTLSTWRTSSSGWWMWGASGRSGGSGSTALRT*HPSCFSSPSANTTKSWWSRTTRTGWRRAKPCSGPSSPTPGSRTPPSSSSSTRRTCWRTRSCTRTWWTTSPSSMVPSGTPRRRGSSS*RCSWT*TPTATRSSTHTSRVPPTRRTSASCSRP*RTPSCSSTSRSTTWSERPGPGRRDGDTGQDLPSTEPAAAGRVALPSPGRGLCPREEIFFFHIFNKWFLFHSYQGMYISPSVHFAHLLTFCQRQRQPFSGLDLWLAFF*KKKKKKERKKATKHKTHKRPVPPVTLGLTEPPPASMGPRPAASHAPPHRSPLWLSFQPHVLFLSPARFFSSSQKAWRLGDGRFSPFLSY*RPARLASSPINAVLCPLDS*RGGGGLPRSPTLGSA*PFILFYFFEEKERLTHRLKKHPGPSLMAGFPVPLQRLGRVPGLEPRGLLWAVPPGPTLAAWGCPGTPEGCTATLPWLERTPPEPTWAGRLEGWSPGDTGRKATWMGAFLFCSAL*CHQFGNSEGGWGLLQNILRCVPERQREGRGRQLCAWPCPKHLRPPPSAAPGEREASTRTLARGAWKVVAGTGLGSFQAWLATTTARGGARQATPH*ATAPGAASRGPLRH*GTETGSPRETRKVGNEGTVFGEVAFSSAVD*TLQRPVVPGFAQLSQGWIACAAFARRHTGTLHGCFWPRQMTKETAPKYDHSNQQFPPACPPLSGLPWPPRPQGCLLASGGRRAGSPVEGSGETRSGQLHFW*SAPWGDGAGGIPPPRLPHTTSVSPGSVLFLCQVST*EGWCQKPPMASAGARRCPGGADGATPGRAATTFSSSGALWGACACGISEGLDCTR*PGRGLRVESPSTQAGALRG*VLGLPREGACQASQSRAGTAKTSWPGSSGSECLIPCPPKKQR*VLQAQGRGACPRRVPGSGSRASGTQGQGQPTPTLATCGATWACGVCVFTLVNLTCQRFLVSADHLLRPCYARAAAAPGHCKPMPWVPRLPQGGIPVPMSPSGGSRSCGRPGGRDPVILVYYTVLISDNFNLNLFKKEYSIQAVFKPFTI*NACVVRVGDGRRG*GAAQCHLPQPPALTLNPDTDGSRLFISFS*NELCFKLE*ILFLNA ->cbiomut:ENST00000218089:STAG2:p.K48Gfs*33:Frame_Shift_Del -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000226574:NFKB1:p.E3K:Missense_Mutation -VRK*ARQKEREVHQRAGAGRGGFATGAARRRADSFPCPSRRSGRQPPQPSACTQPPAPLPEPSAAEAAAARPVRRRRRPATARPALPSARAAAMARR*LAWPGPAALPLAPTRTRARPGSGLPPPLPSPAGRPAPLRRESPPAPGGRTRTRHPASEWQKMIHIWEGLNKCFIWILL*LIQYLIQKYFNHRWHCQQQMAHTFKY*SNLNREDFVSVMYVKAHPMVDYLVPLVKRTRSLTLRSKSATMWDQQRLLFSWSQMEKISTCMPTAWWENTVRMGSAL*LLDPRTWWSASQTWVYFM*QRKKYLKHWKHE*QRRV*GAIILDSWCTLTLPICKQKVEGTGSWEIGKKS*SAKQLCSRPRRWTSAWCGSCLQLFFRIALAASQGAWNPWYQTPSMTVKPPMHPT*KL*EWTGQLDV*LEGRKFIFFVTKFRKMTSRFDFMKRKKMVESGKDLEIFPPQMFIDNLPLSSKLQSIKILILQNQPLCLSSFGGNLTWKLVNQNLSSTILKSKIKKKCRGNVRSSCPIFRIVSAVVVVLELEAEACLVVAVEEGALEVQVQGIASHTMDFLLMVGLLSILELLNLMLG*SMEPWTLNLKRTLKVVTKVMTKTL*TSLGKLLKPQSKIRSPARPPLGMVRSL*RMQQEQKKRVLEFRITSF*RRLCSLQRGMPMPFSTTR*QET*RCCWPSSAISLLCRMRMGTVSYT*QSSTFILNL*GIY*KSHLV*FLMTLST*EMICTRRPCTWQ*SLSRKMWWRIC*GLGPT*AFWTAWVTLFCT*LPKKDMIKFSVSYSSTKRQHYFLTTPTGTV*MPFI*P**AIACHVCCCWWPLGLTSMLRSRSPGAQHCTWLWSTTTSHWQAACSWRVMPMWTVLPTMEPHPCI*QLGEGPPGWQLFSKQQEQIPWWRTLSLSMTWMTLGKMQERMKELCLEPRL*IWPPAGRYLTY*MGNHMSQSLHLMIY*HKET*NSWLKM*SCSCISY*KFLIQTKTGLLWRRN*VWGYLIMPSG*VLLLPKHLWTTMRSLGVQSESWWRP*DKWATPKQLK*SRQPPAQ*RPPLRPTRCLSRLPPQGSK*TSSETVTVSATAAWRHPSANSALPSL*PVVPHC*LSTKCPMIMGRKDL*KAKFSLLTISHTV*TKALKFHCVVHKTEAEVHPKVLREPARLNHSRFNSRPFQLGFLSWFINEF*FGSLTDSI*QSQHWLSGCIWG*GCLLSFASCCWITAAFCCHCCCPSATFLLSLKVSRSPPGIPSDHSIILHSN*GLRKEIF*NESHLMCHFKKKGILLFLMWLFL*FAKKKKKKILVNI*TWLQSLLKMVFSPFSAFCYCKYVF*IKYFKGKNVGFINAIFYFTFIIKGKAN**P ->cbiomut:ENST00000218089:STAG2:p.V730Ffs*10:Frame_Shift_Del -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000226574:NFKB1:p.G489E:Missense_Mutation -VRE*ARQKEREVHQRAGAGRGGFATGAARRRADSFPCPSRRSGRQPPQPSACTQPPAPLPEPSAAEAAAARPVRRRRRPATARPALPSARAAAMARR*LAWPGPAALPLAPTRTRARPGSGLPPPLPSPAGRPAPLRRESPPAPGGRTRTRHPASEWQKMIHIWEGLNKCFIWILL*LIQYLIQKYFNHRWHCQQQMAHTFKY*SNLNREDFVSVMYVKAHPMVDYLVPLVKRTRSLTLRSKSATMWDQQRLLFSWSQMEKISTCMPTAWWENTVRMGSAL*LLDPRTWWSASQTWVYFM*QRKKYLKHWKHE*QRRV*GAIILDSWCTLTLPICKQKVEGTGSWEIGKKS*SAKQLCSRPRRWTSAWCGSCLQLFFRIALAASQGAWNPWYQTPSMTVKPPMHPT*KL*EWTGQLDV*LEGRKFIFFVTKFRKMTSRFDFMKRKKMVESGKDLEIFPPQMFIDNLPLSSKLQSIKILILQNQPLCLSNFGGNLTWKLVNQNLSSTILKSKIKKKCRGNVRSSCPIFRIVSAVVVVLELEAEACLVVAVEEGALEVQVQGIASHTMDFLLMVGLLSILELLNLMLG*SMEPWTLNLKRTLKVVTKVMTKTL*TSLGKLLKPQSKIRSPARPPLGMVRSL*RMQQEQKKRVLEFRITSF*RRLCSLQRGMPMPFSTTR*QET*RCCWPSSAISLLCRMRMGTVSYT*QSSTFILNL*GIY*KSHLV*FLMTLST*EMICTRRPCTWQ*SLSRKMWWRIC*GLGPT*AFWTAWVTLFCT*LPKKDMIKFSVSYSSTKRQHYFLTTPTGTV*MPFI*P**AIACHVCCCWWPLGLTSMLRSRSPGAQHCTWLWSTTTSHWQAACSWRVMPMWTVLPTMEPHPCI*QLGEGPPGWQLFSKQQEQIPWWRTLSLSMTWMTLGKMQERMKELCLEPRL*IWPPAGRYLTY*MGNHMSQSLHLMIY*HKET*NSWLKM*SCSCISY*KFLIQTKTGLLWRRN*VWGYLIMPSG*VLLLPKHLWTTMRSLGVQSESWWRP*DKWATPKQLK*SRQPPAQ*RPPLRPTRCLSRLPPQGSK*TSSETVTVSATAAWRHPSANSALPSL*PVVPHC*LSTKCPMIMGRKDL*KAKFSLLTISHTV*TKALKFHCVVHKTEAEVHPKVLREPARLNHSRFNSRPFQLGFLSWFINEF*FGSLTDSI*QSQHWLSGCIWG*GCLLSFASCCWITAAFCCHCCCPSATFLLSLKVSRSPPGIPSDHSIILHSN*GLRKEIF*NESHLMCHFKKKGILLFLMWLFL*FAKKKKKKILVNI*TWLQSLLKMVFSPFSAFCYCKYVF*IKYFKGKNVGFINAIFYFTFIIKGKAN**P ->cbiomut:ENST00000218089:STAG2:p.N499_L501dup:In_Frame_Ins -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000218089:STAG2:p.P442Qfs*6:Frame_Shift_Del -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000166244:EPHA8:p.Q989H:Missense_Mutation -SRRAGRSGQARGCVAPPPARPGPAMAPARGRLPPALWVVTAAAAAATCVSAARGEVNLLDTSTIHGDWGWLTYPAHGWDSINEVDESFQPIHTYQVCNVMSPNQNNWLRTSWVPRDGARRVYAEIKFTLRDCNSMPGVLGTCKETFNLYYLESDRDLGASTQESQFLKIDTIAADESFTGADLGVRRLKLNTEVRSVGPLSKRGFYLAFQDIGACLAILSLRIYYKKCPAMVRNLAAFSEAVTGADSSSLVEVRGQCVRHSEERDTPKMYCSAEGEWLVPIGKCVCSAGYEERRDACVACELGFYKSAPGDQLCARCPPHSHSAAPAAQACHCDLSYYRAALDPPSSACTRPPSAPVNLISSVNGTSVTLEWAPPLDPGGRSDITYNAVCRRCPWALSRCEACGSGTRFVPQQTSLVQASLLVANLLAHMNYSFWIEAVNGVSDLSPEPRRAAVVNITTNQAAPSQVVVIRQERAGQTSVSLLWQEPEQPNGIILEYEIKYYEKDKEMQSYSTLKAVTTRATVSGLKPGTRYVFQVRARTSAGCGRFSQAMEVETGKPRPRYDTRTIVWICLTLITGLVVLLLLLICKKRHCGYSKAFQDSDEEKMHYQNGQAPPPVFLPLHHPPGKLPEPQFYAEPHTYEEPGRAGRSFTREIEASRIHIEKIIGSGDSGEVCYGRLRVPGQRDVPVAIKALKAGYTERQRRDFLSEASIMGQFDHPNIIRLEGVVTRGRLAMIVTEYMENGSLDTFLRTHDGQFTIMQLVGMLRGVGAGMRYLSDLGYVHRDLAARNVLVDSNLVCKVSDFGLSRVLEDDPDAAYTTTGGKIPIRWTAPEAIAFRTFSSASDVWSFGVVMWEVLAYGERPYWNMTNRDVISSVEEGYRLPAPMGCPHALHQLMLDCWHKDRAQRPRFSQIVSVLDALIRSPESLRATATVSRCPPPAFVRSCFDLRGGSGGGGGLTVGDWLDSIRMGRYRDHFAAGGYSSLGMVLRINAQDVRALGITLMGHQKKILGSIQTMRAQLTSTQGPRRHL*CTASRAQAATKPTPGHASGRGREGLAAGRAAPGLCPPLRCWRS*RLRHRTWSYQGSGAWEGAFGGHPGEDTCPPGQAPSLFQSLGPPRHRVQQGHHSPASVCVHVCVWWGVFSQGHGISCEQCVIKCVHPFGSQHGRVHVMSVCLSVKAGGTCG*WWMMCHE*GGV*AGNSV*HRQVQHPWGRGRGSPLRPPTPGGWSQGPLLNCTSTRPTLVSAWVSPPRLYLRSGSSL*PRRPPAASTRLSPLLQQENRVPGQSGWPPSWRHHGRAHEMSSAGLGCLARAGGSAASSSL*CLPSTAQVSSLKVPSPTFQCPALTPALCPPGLGSGTRGSYLLSTQPTPSCSIWGD*GLERGVMPRPRLHCNQVSESGLRPPAKALVPIHHPTRALGVEVPWKPLPSHTDLPPYGPPGYVNISFLPCQNIFSSLLTMQKWSSKHIKSTQGEKAPSRGPLAGREAGTPPCAPCQPQREWRAQLPSPAPPPHSQHSYPAGTPALSPLSLLQ*FGESQPHPGAAASSLHLYILYYYIAELFFLPMEVGNMVRTRSGGGILSSSPPHPTLTQFLGSGSSQSWRHRGPGTCKSVAPHSSVWSLSGSWGSASLWSPS*LLNLPTIRINSASS ->cbiomut:ENST00000218089:STAG2:p.D101Lfs*8:Frame_Shift_Del -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000222254:PIK3R2:p.D349N:Missense_Mutation -PPGSNALGHFRRGRARPLGTVAAAEAGIPRLRRRWPRWSHGAGLAWCDGGCGGGGGRDQVGVLSWPSMVAACTLGSLVWCSQQSRQPWAPMALRVRA*AACPSLTC*WRTQWPSDLTPHHQLPPTS*RMVDPVTSGPCKGHGII*SEA*AAPVVACDCWR*RSQHPKPTQRTLPALLQPMGPVGLQAAT*PSRPHPTHAAMAGPEGFQYRALYPFRRERPEDLELLPGDVLVVSRAALQALGVAEGGERCPQSVGWMPGLNERTRQRGDFPGTYVEFLGPVALARPGPRPRGPRPLPARPRDGAPEPGLTLPDLPEQFSPPDVAPPLLVKLVEAIERTGLDSESHYRPKLPAPRTDWSLSDVDQWDTAALADGIKSFLLALPAPLVTPEASAEARRALREAAGPVGPALEPPTLPLHRALTLRFLLQHLGRVASRAPALGPAVRALGATFGPLLLRAPPPPSSPPPGGAPDGSEPSPDFPALLVEKLLQEHLEEQEVAPPALPPKPPKAKPASTVLANGGSPPSLQDAEWYWGDISREEVNEKLRDTPDGTFLVRDASSKIQGEYTLTLRKGGNNKLIKVFHRDGHYGFSEPLTFCSVVDLINHYRHESLAQYNAKLDTRLLYPVSKYQQDQIVKEDSVEAVGAQLKVYHQQYQDKSREYDQLYEEYTRTSQELQMKRTAIEAFNETIKIFEEQGQTQEKCSKEYLERFRREGNEKEMQRILLNSERLKSRIAEIHESRTKLEQQLRAQASDNREIDKRMNSLKPDLMQLRKIRDQYLVWLTQKGARQKKINEWLGIKNETEDQYALMEDEDDLPHHEERTWYVGKINRTQAEEMLSGKRDGTFLIRESSQRGCYACSVVVDGDTKHCVIYRTATGFGFAEPYNLYGSLKELVLHYQHASLVQHNDALTVTLAHPVRAPGPGPPPAAR*APRTRPKQSRPWARLRRRLRRREPRTRPATSRGPHFSGSGSCLGFSHPLSLSFPPPFSRSPSVSFSLSFLAPVSLHVGGPNSPTPYLRVLRALPSPWLWSP*PSALPTAGPPGSRKPLLAAPAMFTEGPWAARPQPGHPDF*AIDLGSGQEGTSLCCFREPRP*HSGPGGTRPTDSNFPSKPRSETRHRVTPTRGPLREVHPPPKK*LNSQARHGGSCL*SQHFGRPRRADLLRSGVGGQPGQNGKTPHLLKYKN*PGVVAAACNPSYLGG*GVRIS*TQEMEVAVSRDRATALQPG*QRETPPSQKNK*INL*AGPNPS*ESQLPVLVPPQWPSCDTAHGPSL*CRFRASLRSCWVLILFFLDCKTLFPLLFWDKSPGFLRCPWPPHCLPHELGGRFCTVRCY*YDIKHQTSWV diff --git a/pgatk/testdata/test_cbioportal_data_mutations_mskcc_proteindb_BladderCancer.fa b/pgatk/testdata/test_cbioportal_data_mutations_mskcc_proteindb_BladderCancer.fa deleted file mode 100644 index 72defd54..00000000 --- a/pgatk/testdata/test_cbioportal_data_mutations_mskcc_proteindb_BladderCancer.fa +++ /dev/null @@ -1,44 +0,0 @@ ->cbiomut:ENST00000219476:TSC2:p.E1513Q:Missense_Mutation -RFLAWGERGQRSGAPETQPLRTAIFGKKAQGGNAGPHVGTVRGCRVCSPCPRSWEPQEAARDSSLQPLSRLLPRSSHGAALPAAASLLRRGPGSSLHPRGPAPGPRLRLRVSILALKAVMPDSCGLHIPAAHAAPSRDARIAGLSARGRHRTTTPSKLPRRPSAQCRYRKCGSRFRRRPGARGVRLSPRRGGPERGGAAREGFSGASWSTMAKPTSKDSGLKEKFKILLGLGTPRPNPRSAEGKQTEFIITAEILRELSMECGLNNRIRMIGQICEVAKTKKFEEHAVEALWKAVADLLQPERPLEARHAVLALLKAIVQGQGERLGVLRALFFKVIKDYPSNEDLHERLEVFKALTDNGRHITYLEEELADFVLQWMDVGLSSEFLLVLVNLVKFNSCYLDEYIARMVQMICLLCVRTASSVDIEVSLQVLDAVVCYNCLPAESLPLFIVTLCRTINVKELCEPCWKLMRNLLGTHLGHSAIYNMCHLMEDRAYMEDAPLLRGAVFFVGMALWGAHRLYSLRNSPTSVLPSFYQAMACPNEVVSYEIVLSITRLIKKYRKELQVVAWDILLNIIERLLQQLQTLDSPELRTIVHDLLTTVEELCDQNEFHGSQERYFELVERCADQRPESSLLNLISYRAQSIHPAKDGWIQNLQALMERFFRSESRGAVRIKVLDVLSFVLLINRQFYEEELINSVVISQLSHIPEDKDHQVRKLATQLLVDLAEGCHTHHFNSLLDIIEKVMARSLSPPPELEERDVAAYSASLEDVKTAVLGLLVILQTKLYTLPASHATRVYEMLVSHIQLHYKHSYTLPIASSIRLQAFDFLLLLRADSLHRLGLPNKDGVVRFSPYCVCDYMEPERGSEKKTSGPLSPPTGPPGPAPAGPAVRLGSVPYSLLFRVLLQCLKQESDWKVLKLVLGRLPESLRYKVLIFTSPCSVDQLCSALCSMLSGPKTLERLRGAPEGFSRTDLHLAVVPVLTALISYHNYLDKTKQREMVYCLEQGLIHRCASQCVVALSICSVEMPDIIIKALPVLVVKLTHISATASMAVPLLEFLSTLARLPHLYRNFAAEQYASVFAISLPYTNPSKFNQYIVCLAHHVIAMWFIRCRLPFRKDFVPFITKGLRSNVLLSFDDTPEKDSFRARSTSLNERPKSLRIARPPKQGLNNSPPVKEFKESSAAEAFRCRSISVSEHVVRSRIQTSLTSASLGSADENSVAQADDSLKNLHLELTETCLDMMARYVFSNFTAVPKRSPVGEFLLAGGRTKTWLVGNKLVTVTTSVGTGTRSLLGLDSGELQSGPESSSSPGVHVRQTKEAPAKLESQAGQQVSRGARDRVRSMSGGHGLRVGALDVPASQFLGSATSPGPRTAPAAKPEKASAGTRVPVQEKTNLAAYVPLLTQGWAEILVRRPTGNTSWLMSLENPLSPFSSDINNMPLQELSNALMAAERFKEHRDTALYKSLSVPAASTAKPPPLPRSNTVASFSSLYQSSCQGQLHRSVSWADSAVVMEERSPGEVPVLVEPPGLEDVEAALGMDRRTDAYSRSSSVSSQEEKSLHAEELVGRGIPIERVVSSEGGRPSVDLSFQPSQPLSKSSSSPELQTLQDILGDPGDKADVGRLSPEVKARSQSGTLDGESAAWSASGEDSRGQPEGPLPSSSPRSPSGLRPRGYTISDSAPSRRGKRVERDALKSRATASNAEKVPGINPSFVFLQLYHSPFFGDESNKPILLPNESQSFERSVQLLDQIPSYDTHKIAVLYVGEGQSNSELAILSNEHGSYRYTEFLTGLGRLIELKDCQPDKVYLGGLDVCGEDGQFTYCWHDDIMQAVFHIATLMPTKDVDKHRCDKKRHLGNDFVSIVYNDSGEDFKLGTIKGQFNFVHVIVTPLDYECNLVSLQCRKDMEGLVDTSVAKIVSDRNLPFVARQMALHANMASQVHHSRSNPTDIYPSKWIARLRHIKRLRQRICEEAAYSNPSLPLVHPPSHSKAPAQTPAEPTPGYEVGQRKRLISSVEDFTEFV*GRGPPSCTGLGRYCLSVK*IKS*PQCTDIEAQIA ->cbiomut:ENST00000166244:EPHA8:p.L559F:Missense_Mutation -SRRAGRSGQARGCVAPPPARPGPAMAPARGRLPPALWVVTAAAAAATCVSAARGEVNLLDTSTIHGDWGWLTYPAHGWDSINEVDESFQPIHTYQVCNVMSPNQNNWLRTSWVPRDGARRVYAEIKFTLRDCNSMPGVLGTCKETFNLYYLESDRDLGASTQESQFLKIDTIAADESFTGADLGVRRLKLNTEVRSVGPLSKRGFYLAFQDIGACLAILSLRIYYKKCPAMVRNLAAFSEAVTGADSSSLVEVRGQCVRHSEERDTPKMYCSAEGEWLVPIGKCVCSAGYEERRDACVACELGFYKSAPGDQLCARCPPHSHSAAPAAQACHCDLSYYRAALDPPSSACTRPPSAPVNLISSVNGTSVTLEWAPPLDPGGRSDITYNAVCRRCPWALSRCEACGSGTRFVPQQTSLVQASLLVANLLAHMNYSFWIEAVNGVSDLSPEPRRAAVVNITTNQAAPSQVVVIRQERAGQTSVSLLWQEPEQPNGIILEYEIKYYEKDKEMQSYSTLKAVTTRATVSGLKPGTRYVFQVRARTSAGCGRFSQAMEVETGKPWPRYDTRTIVWICLTLITGLVVLLLLLICKKRHCGYSKAFQDSDEEKMHYQNGQAPPPVFLPLHHPPGKLPEPQFYAEPHTYEEPGRAGRSFTREIEASRIHIEKIIGSGDSGEVCYGRLRVPGQRDVPVAIKALKAGYTERQRRDFLSEASIMGQFDHPNIIRLEGVVTRGRLAMIVTEYMENGSLDTFLRTHDGQFTIMQLVGMLRGVGAGMRYLSDLGYVHRDLAARNVLVDSNLVCKVSDFGLSRVLEDDPDAAYTTTGGKIPIRWTAPEAIAFRTFSSASDVWSFGVVMWEVLAYGERPYWNMTNRDVISSVEEGYRLPAPMGCPHALHQLMLDCWHKDRAQRPRFSQIVSVLDALIRSPESLRATATVSRCPPPAFVRSCFDLRGGSGGGGGLTVGDWLDSIRMGRYRDHFAAGGYSSLGMVLRMNAQDVRALGITLMGHQKKILGSIQTMRAQLTSTQGPRRHL*CTASRAQAATKPTPGHASGRGREGLAAGRAAPGLCPPLRCWRS*RLRHRTWSYQGSGAWEGAFGGHPGEDTCPPGQAPSLFQSLGPPRHRVQQGHHSPASVCVHVCVWWGVFSQGHGISCEQCVIKCVHPFGSQHGRVHVMSVCLSVKAGGTCG*WWMMCHE*GGV*AGNSV*HRQVQHPWGRGRGSPLRPPTPGGWSQGPLLNCTSTRPTLVSAWVSPPRLYLRSGSSL*PRRPPAASTRLSPLLQQENRVPGQSGWPPSWRHHGRAHEMSSAGLGCLARAGGSAASSSL*CLPSTAQVSSLKVPSPTFQCPALTPALCPPGLGSGTRGSYLLSTQPTPSCSIWGD*GLERGVMPRPRLHCNQVSESGLRPPAKALVPIHHPTRALGVEVPWKPLPSHTDLPPYGPPGYVNISFLPCQNIFSSLLTMQKWSSKHIKSTQGEKAPSRGPLAGREAGTPPCAPCQPQREWRAQLPSPAPPPHSQHSYPAGTPALSPLSLLQ*FGESQPHPGAAASSLHLYILYYYIAELFFLPMEVGNMVRTRSGGGILSSSPPHPTLTQFLGSGSSQSWRHRGPGTCKSVAPHSSVWSLSGSWGSASLWSPS*LLNLPTIRINSASS ->cbiomut:ENST00000166244:EPHA8:p.V768I:Missense_Mutation -SRRAGRSGQARGCVAPPPARPGPAMAPARGRLPPALWVVTAAAAAATCVSAARGEVNLLDTSTIHGDWGWLTYPAHGWDSINEVDESFQPIHTYQVCNVMSPNQNNWLRTSWVPRDGARRVYAEIKFTLRDCNSMPGVLGTCKETFNLYYLESDRDLGASTQESQFLKIDTIAADESFTGADLGVRRLKLNTEVRSVGPLSKRGFYLAFQDIGACLAILSLRIYYKKCPAMVRNLAAFSEAVTGADSSSLVEVRGQCVRHSEERDTPKMYCSAEGEWLVPIGKCVCSAGYEERRDACVACELGFYKSAPGDQLCARCPPHSHSAAPAAQACHCDLSYYRAALDPPSSACTRPPSAPVNLISSVNGTSVTLEWAPPLDPGGRSDITYNAVCRRCPWALSRCEACGSGTRFVPQQTSLVQASLLVANLLAHMNYSFWIEAVNGVSDLSPEPRRAAVVNITTNQAAPSQVVVIRQERAGQTSVSLLWQEPEQPNGIILEYEIKYYEKDKEMQSYSTLKAVTTRATVSGLKPGTRYVFQVRARTSAGCGRFSQAMEVETGKPRPRYDTRTIVWICLTLITGLVVLLLLLICKKRHCGYSKAFQDSDEEKMHYQNGQAPPPVFLPLHHPPGKLPEPQFYAEPHTYEEPGRAGRSFTREIEASRIHIEKIIGSGDSGEVCYGRLRVPGQRDVPVAIKALKAGYTERQRRDFLSEASIMGQFDHPNIIRLEGVVTRGRLAMIVTEYMENGSLDTFLRTHDGQFTIMQLVGMLRGMGAGMRYLSDLGYVHRDLAARNVLVDSNLVCKVSDFGLSRVLEDDPDAAYTTTGGKIPIRWTAPEAIAFRTFSSASDVWSFGVVMWEVLAYGERPYWNMTNRDVISSVEEGYRLPAPMGCPHALHQLMLDCWHKDRAQRPRFSQIVSVLDALIRSPESLRATATVSRCPPPAFVRSCFDLRGGSGGGGGLTVGDWLDSIRMGRYRDHFAAGGYSSLGMVLRMNAQDVRALGITLMGHQKKILGSIQTMRAQLTSTQGPRRHL*CTASRAQAATKPTPGHASGRGREGLAAGRAAPGLCPPLRCWRS*RLRHRTWSYQGSGAWEGAFGGHPGEDTCPPGQAPSLFQSLGPPRHRVQQGHHSPASVCVHVCVWWGVFSQGHGISCEQCVIKCVHPFGSQHGRVHVMSVCLSVKAGGTCG*WWMMCHE*GGV*AGNSV*HRQVQHPWGRGRGSPLRPPTPGGWSQGPLLNCTSTRPTLVSAWVSPPRLYLRSGSSL*PRRPPAASTRLSPLLQQENRVPGQSGWPPSWRHHGRAHEMSSAGLGCLARAGGSAASSSL*CLPSTAQVSSLKVPSPTFQCPALTPALCPPGLGSGTRGSYLLSTQPTPSCSIWGD*GLERGVMPRPRLHCNQVSESGLRPPAKALVPIHHPTRALGVEVPWKPLPSHTDLPPYGPPGYVNISFLPCQNIFSSLLTMQKWSSKHIKSTQGEKAPSRGPLAGREAGTPPCAPCQPQREWRAQLPSPAPPPHSQHSYPAGTPALSPLSLLQ*FGESQPHPGAAASSLHLYILYYYIAELFFLPMEVGNMVRTRSGGGILSSSPPHPTLTQFLGSGSSQSWRHRGPGTCKSVAPHSSVWSLSGSWGSASLWSPS*LLNLPTIRINSASS ->cbiomut:ENST00000218089:STAG2:p.S219Kfs*20:Frame_Shift_Ins -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000166244:EPHA8:p.T326N:Missense_Mutation -SRRAGRSGQARGCVAPPPARPGPAMAPARGRLPPALWVVTAAAAAATCVSAARGEVNLLDTSTIHGDWGWLTYPAHGWDSINEVDESFQPIHTYQVCNVMSPNQNNWLRTSWVPRDGARRVYAEIKFTLRDCNSMPGVLGTCKETFNLYYLESDRDLGASTQESQFLKIDTIAADESFTGADLGVRRLKLNTEVRSVGPLSKRGFYLAFQDIGACLAILSLRIYYKKCPAMVRNLAAFSEAVTGADSSSLVEVRGQCVRHSEERDTPKMYCSAEGEWLVPIGKCVCSAGYEERRDACVACELGFYKSAPGDQLCARCPPHSHSAAQAAQACHCDLSYYRAALDPPSSACTRPPSAPVNLISSVNGTSVTLEWAPPLDPGGRSDITYNAVCRRCPWALSRCEACGSGTRFVPQQTSLVQASLLVANLLAHMNYSFWIEAVNGVSDLSPEPRRAAVVNITTNQAAPSQVVVIRQERAGQTSVSLLWQEPEQPNGIILEYEIKYYEKDKEMQSYSTLKAVTTRATVSGLKPGTRYVFQVRARTSAGCGRFSQAMEVETGKPRPRYDTRTIVWICLTLITGLVVLLLLLICKKRHCGYSKAFQDSDEEKMHYQNGQAPPPVFLPLHHPPGKLPEPQFYAEPHTYEEPGRAGRSFTREIEASRIHIEKIIGSGDSGEVCYGRLRVPGQRDVPVAIKALKAGYTERQRRDFLSEASIMGQFDHPNIIRLEGVVTRGRLAMIVTEYMENGSLDTFLRTHDGQFTIMQLVGMLRGVGAGMRYLSDLGYVHRDLAARNVLVDSNLVCKVSDFGLSRVLEDDPDAAYTTTGGKIPIRWTAPEAIAFRTFSSASDVWSFGVVMWEVLAYGERPYWNMTNRDVISSVEEGYRLPAPMGCPHALHQLMLDCWHKDRAQRPRFSQIVSVLDALIRSPESLRATATVSRCPPPAFVRSCFDLRGGSGGGGGLTVGDWLDSIRMGRYRDHFAAGGYSSLGMVLRMNAQDVRALGITLMGHQKKILGSIQTMRAQLTSTQGPRRHL*CTASRAQAATKPTPGHASGRGREGLAAGRAAPGLCPPLRCWRS*RLRHRTWSYQGSGAWEGAFGGHPGEDTCPPGQAPSLFQSLGPPRHRVQQGHHSPASVCVHVCVWWGVFSQGHGISCEQCVIKCVHPFGSQHGRVHVMSVCLSVKAGGTCG*WWMMCHE*GGV*AGNSV*HRQVQHPWGRGRGSPLRPPTPGGWSQGPLLNCTSTRPTLVSAWVSPPRLYLRSGSSL*PRRPPAASTRLSPLLQQENRVPGQSGWPPSWRHHGRAHEMSSAGLGCLARAGGSAASSSL*CLPSTAQVSSLKVPSPTFQCPALTPALCPPGLGSGTRGSYLLSTQPTPSCSIWGD*GLERGVMPRPRLHCNQVSESGLRPPAKALVPIHHPTRALGVEVPWKPLPSHTDLPPYGPPGYVNISFLPCQNIFSSLLTMQKWSSKHIKSTQGEKAPSRGPLAGREAGTPPCAPCQPQREWRAQLPSPAPPPHSQHSYPAGTPALSPLSLLQ*FGESQPHPGAAASSLHLYILYYYIAELFFLPMEVGNMVRTRSGGGILSSSPPHPTLTQFLGSGSSQSWRHRGPGTCKSVAPHSSVWSLSGSWGSASLWSPS*LLNLPTIRINSASS ->cbiomut:ENST00000218089:STAG2:p.S327Vfs*3:Frame_Shift_Del -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000218089:STAG2:p.Y328*:Frame_Shift_Del -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000218089:STAG2:p.Y328*:Nonsense_Mutation -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGEYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000219476:TSC2:p.D1612H:Missense_Mutation -RFLAWGERGQRSGAPETQPLRTAIFGKKAQGGNAGPHVGTVRGCRVCSPCPRSWEPQEAARDSSLQPLSRLLPRSSHGAALPAAASLLRRGPGSSLHPRGPAPGPRLRLRVSILALKAVMPDSCGLHIPAAHAAPSRDARIAGLSARGRHRTTTPSKLPRRPSAQCRYRKCGSRFRRRPGARGVRLSPRRGGPERGGAAREGFSGASWSTMAKPTSKDSGLKEKFKILLGLGTPRPNPRSAEGKQTEFIITAEILRELSMECGLNNRIRMIGQICEVAKTKKFEEHAVEALWKAVADLLQPERPLEARHAVLALLKAIVQGQGERLGVLRALFFKVIKDYPSNEDLHERLEVFKALTDNGRHITYLEEELADFVLQWMDVGLSSEFLLVLVNLVKFNSCYLDEYIARMVQMICLLCVRTASSVDIEVSLQVLDAVVCYNCLPAESLPLFIVTLCRTINVKELCEPCWKLMRNLLGTHLGHSAIYNMCHLMEDRAYMEDAPLLRGAVFFVGMALWGAHRLYSLRNSPTSVLPSFYQAMACPNEVVSYEIVLSITRLIKKYRKELQVVAWDILLNIIERLLQQLQTLDSPELRTIVHDLLTTVEELCDQNEFHGSQERYFELVERCADQRPESSLLNLISYRAQSIHPAKDGWIQNLQALMERFFRSESRGAVRIKVLDVLSFVLLINRQFYEEELINSVVISQLSHIPEDKDHQVRKLATQLLVDLAEGCHTHHFNSLLDIIEKVMARSLSPPPELEERDVAAYSASLEDVKTAVLGLLVILQTKLYTLPASHATRVYEMLVSHIQLHYKHSYTLPIASSIRLQAFDFLLLLRADSLHRLGLPNKDGVVRFSPYCVCDYMEPERGSEKKTSGPLSPPTGPPGPAPAGPAVRLGSVPYSLLFRVLLQCLKQESDWKVLKLVLGRLPESLRYKVLIFTSPCSVDQLCSALCSMLSGPKTLERLRGAPEGFSRTDLHLAVVPVLTALISYHNYLDKTKQREMVYCLEQGLIHRCASQCVVALSICSVEMPDIIIKALPVLVVKLTHISATASMAVPLLEFLSTLARLPHLYRNFAAEQYASVFAISLPYTNPSKFNQYIVCLAHHVIAMWFIRCRLPFRKDFVPFITKGLRSNVLLSFDDTPEKDSFRARSTSLNERPKSLRIARPPKQGLNNSPPVKEFKESSAAEAFRCRSISVSEHVVRSRIQTSLTSASLGSADENSVAQADDSLKNLHLELTETCLDMMARYVFSNFTAVPKRSPVGEFLLAGGRTKTWLVGNKLVTVTTSVGTGTRSLLGLDSGELQSGPESSSSPGVHVRQTKEAPAKLESQAGQQVSRGARDRVRSMSGGHGLRVGALDVPASQFLGSATSPGPRTAPAAKPEKASAGTRVPVQEKTNLAAYVPLLTQGWAEILVRRPTGNTSWLMSLENPLSPFSSDINNMPLQELSNALMAAERFKEHRDTALYKSLSVPAASTAKPPPLPRSNTVASFSSLYQSSCQGQLHRSVSWADSAVVMEEGSPGEVPVLVEPPGLEDVEAALGMDRRTDAYSRSSSVSSQEEKSLHAEELVGRGIPIERVVSSEGGRPSVDLSFQPSQPLSKSSSSPELQTLQDILGDPRDKADVGRLSPEVKARSQSGTLDGESAAWSASGEDSRGQPEGPLPSSSPRSPSGLRPRGYTISDSAPSRRGKRVERDALKSRATASNAEKVPGINPSFVFLQLYHSPFFGDESNKPILLPNESQSFERSVQLLDQIPSYDTHKIAVLYVGEGQSNSELAILSNEHGSYRYTEFLTGLGRLIELKDCQPDKVYLGGLDVCGEDGQFTYCWHDDIMQAVFHIATLMPTKDVDKHRCDKKRHLGNDFVSIVYNDSGEDFKLGTIKGQFNFVHVIVTPLDYECNLVSLQCRKDMEGLVDTSVAKIVSDRNLPFVARQMALHANMASQVHHSRSNPTDIYPSKWIARLRHIKRLRQRICEEAAYSNPSLPLVHPPSHSKAPAQTPAEPTPGYEVGQRKRLISSVEDFTEFV*GRGPPSCTGLGRYCLSVK*IKS*PQCTDIEAQIA ->cbiomut:ENST00000218089:STAG2:p.K917*:Frame_Shift_Ins -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLA*DN*KQLYKGGLAAFKETNESILSDMSTLPDQREYYC*GTGLHYSV*YFDDLQPSDYVRRA*HVRAISVYP*FFIAV*VAQLYFGSCLH*TG*****CRWSARG*SQ*N*SSAQEKKFTCSIL*ANCIYCGGDEYSCRYLQTVYEVL**LWRYHQRNNE*NKADRQNSVC*DPYSQSATAF**NDTRKWL*F**IILYI*WHKRTCSTFCFNFWT*SVENKRSHCHATQRWHRICF*RA*SARGEPSTFKFGIS*YSE*IFF*TTSTRQKNSVCLLGKVHDLSDVTPKRGCVASTDVLPKFFASWW***HHVSH*WNQQPGVNSTE*KIKTIYRKTESG*GHAAFTH*RK****QYVVKQRTNTAHPCYDADTTTHLHYYERAQKITA*G*LHECLSNAD*TSSNTS*L*HAGNMDVSSKTTRGSKATAGESSNELC*TAN*SSACHSAWHKPNGR**RANCGRCYDVLRRED*GS**GNGF*HHGYRFATIKEQTRENRTEA*FL*SSFNYG*ISSWSVNVLIPVHN*ICGEVIF*VEEEILKCGRYSEILYRFFSKENMTCLCLPRSSALRGSFVCLNKRKGQVNNLMISYSFS*KVNILFMRC*LAFESIISCFFLKKKKNKITI*RGIWYRYEFSYIYLLVVLNNDDLCWISVYIQKTMLRMYLFPYPEESVG*NCF*HSKFKCLKRQSTKLCFKYCNCGEK*TYKQNFYNFFI*KYFKIFLKSKSFSILFRNIQMQ*TARR*PVSNMLIPLSTLKVCLSFKIKM*CCDIPSSNATVFCLQIKEAYCSMFAEKF*TKIIQLIRVWE*GSKF*IKLYIYI ->cbiomut:ENST00000074304:INPP4A:p.S754C:Missense_Mutation -V*SGGGWLGLRRAWRVRCWFAAGSGSVGRGRRTST*GRARSPRLHSQAAALLLLRGSGAQPGGTAGRLAPGAGERQMMDLDMLL*RNATWSESKHVQATATLVD*GSVPALPG*SGVV*PRIKKHIITNDIMTAREHSPRHGARARAMQRASTIDVAADMLGLSLAGNIQDPDEPILEFSLACSELHTPSLDRKPNSFVAVSVTTPPQAFWTKHAQTEIIEGTNNPIFLSSIAFFQDSLINQMTQVKLSVYDVKDRSQGTMYLLGSGTFIVKDLLQDRHHRLHLTLRSAESDRVGNITVIGWQMEEKSDQRPPVTRSVDTVNGRMVLPVDESLTEALGIRSKYASLRKDTLLKSVFGGAICRMYRFPTTDGNHLRILEQMAESVLSLHVPRQFVKLLLEEDAARVCELEELGELSPCWESLRRQIVTQYQTIILTYQENLTDLHQYRGPSFKASSLKADKKLEFVPTNLHIQRMRVQDDGGSDQNYDIVTIGAPAAHCQGFKSGGLRKKLHKFEETKKHFEECCTSSGCQSIIYIPQDVVRAKEIIAQINTLKTQVSYYAERLSRAAKDRSATGLERTLAILADKTRQLVTVCDCKLLANSIHGLNAARPDYIASKASPTSTEEEQVMLRNDQDTLMARWTGRNSRSSLQVDWHEEEWEKVWLNVDKSLECIIQRVDKLLQKERLHGEGCEDVFPCAGSCTSKKGNPDSHAYWIRPEDPFCDVPSSPCPSTMPSTACHPHLTTHCSPPPEESSRGEWSEALYPLLTTLTDCVAMMSDKAKKAMVFLLMQDSAPTIATYLSLQYRRDVVFCQTLTALICGFIIKLRNCLHDDGFLRQLYTIGLLAQFESLLSTYGEELAMLEDMSLGIMDLRNVTFKVTQATSSASADMLPVITGNRDGFNVRVPLPGPLFDALPREIQSGMLLRVQPVLFNVGINEQQTLAERFGDTSLQEVINVESLVRLNSYFEQFKEVLPEDCLPRSRSQTCLPELLRFLGQNVHARKNKNVDILWQAAEICRRLNGVRFTSCKSAKDRTAMSVTLEQCLILQHEHGMAPQVFTQALECMRSEGCRRENTMKNVGSRKYAFNSLQLKAFPKHYRPPEGTYGKVET*THGFL*LAVT**MWVPSSVIYEFFKKT*RIGFYFLWFF*KKHFTKESLEHVFCFLGFFPHWNQ*EVMFGSIVWIVTTAYLN*IAFGCNYTDLINSYLHESS*VCLKC*KTFSNACLLTYFSTE*LKSNH*ITIHFVKI*M*NSK**IK*LDPRHTNKCYLGKEASTISCSENNGF**IILSTLPPEEVERKIDKSTGDKTLLEGNTCKVPHIVGATLFSVPYELQNRESAGDTKPAVRSL*PVSCSLKLPAEAPSRPEDTSPLLL*MLM*GLRCGMSTLPWGIYDHRDSRNLNIFRKKIFFAGFPIYL*KDSTIMFECLMKVSYF*VCNNCYFLILILM*DDY*ETVEIYSPQMRF*KGFMGHKT*EFHRKFCLVIFYKMMMSLICT*QSLFLRSLYVLLILFTMFTCS*KGCKRNTYGTY**C*S**FVNLLEILLSKSLEILLVPLETCNKLGPGVLRHGEDCLLAGTQRGWASGRVELDDLPDPLLLRSQHASSACCLPMPAGRKMSVKDTLMKDEALCCSLKAEFTVAGRKQRSSCPPNPLHRWLLLVSDSPF*VSISVHRQFVFNMADLPFHLSTISFNL*IFSSVFSHFNF*KISLLFKNKYYPHSFQIFFVWRALNICTHQREYSKC*SSVSSFACDTFI*IIFPIFALCNGSP*NCKTWQML*KRFRFQYSL*RHHSWASGSITRFQCLQGEGVWHRGKQLLSSVGALGFQRCREGSFTGYRKTEVPSSVPYDASPFKKKRDLWKTGNVMWILSELLQSTVAFSFL*RCKNIV*YSFVPTQLYLPSLVHYDTFIYLFWAVLLYIYKHTVTVLYILRSFKAMYAVNVLVFRMTHNK*LTRY*MWSCLIHPIRRTSSM*PACDWTIVLGHCIECSGAEYMFVNMGPWETSIL*ACFCLI*SRGATALRLRARTLGAHRPGPNPGSAPDWLVTLSKLLDLSKPPFPHVQSVDNNSTFLIRNVRRASEVRVHKW*PLLLPSRL*TWITSSLWVTQSSLYDLSKCSSTCINIDPVHRHQDCILHHCAVF*AHTTRYLPWKNSSHWKCTIKG*LKCLTLGVFSITKLLEI*ATTKNNMCLFPLFSLMVAVHLVSVS*FLDYCEH*TSFIPL*YFYVCDFIGMLIYFI*IVFNIQCISPC ->cbiomut:ENST00000226574:NFKB1:p.D562N:Missense_Mutation -VRE*ARQKEREVHQRAGAGRGGFATGAARRRADSFPCPSRRSGRQPPQPSACTQPPAPLPEPSAAEAAAARPVRRRRRPATARPALPSARAAAMARR*LAWPGPAALPLAPTRTRARPGSGLPPPLPSPAGRPAPLRRESPPAPGGRTRTRHPASEWQKMIHIWEGLNKCFIWILL*LIQYLIQKYFNHRWHCQQQMAHTFKY*SNLNREDFVSVMYVKAHPMVDYLVPLVKRTRSLTLRSKSATMWDQQRLLFSWSQMEKISTCMPTAWWENTVRMGSAL*LLDPRTWWSASQTWVYFM*QRKKYLKHWKHE*QRRV*GAIILDSWCTLTLPICKQKVEGTGSWEIGKKS*SAKQLCSRPRRWTSAWCGSCLQLFFRIALAASQGAWNPWYQTPSMTVKPPMHPT*KL*EWTGQLDV*LEGRKFIFFVTKFRKMTSRFDFMKRKKMVESGKDLEIFPPQMFIDNLPLSSKLQSIKILILQNQPLCLSSFGGNLTWKLVNQNLSSTILKSKIKKKCRGNVRSSCPIFRIVSAVVVVLELEAEACLVVAVEEGALEVQVQGITSHTMDFLLMVGLLSILELLNLMLG*SMEPWTLNLKRTLKVVTKVMTKTL*TSLGKLLKPQSKIRSPARPPLGMVRSL*RMQQEQKKRVLEFRITSF*RRLCSLQRGMPMPFSTTR*QET*RCCWPSSAISLLCRMRMGTVSYT*QSSTFILNL*GIY*KSHLV*FLMTLST*EMICTRRPCTWQ*SLSRKMWWRIC*GLGPT*AFWTAWVTLFCT*LPKKDMIKFSVSYSSTKRQHYFLTTPTGTV*MPFI*P**AIACHVCCCWWPLGLTSMLRSRSPGAQHCTWLWSTTTSHWQAACSWRVMPMWTVLPTMEPHPCI*QLGEGPPGWQLFSKQQEQIPWWRTLSLSMTWMTLGKMQERMKELCLEPRL*IWPPAGRYLTY*MGNHMSQSLHLMIY*HKET*NSWLKM*SCSCISY*KFLIQTKTGLLWRRN*VWGYLIMPSG*VLLLPKHLWTTMRSLGVQSESWWRP*DKWATPKQLK*SRQPPAQ*RPPLRPTRCLSRLPPQGSK*TSSETVTVSATAAWRHPSANSALPSL*PVVPHC*LSTKCPMIMGRKDL*KAKFSLLTISHTV*TKALKFHCVVHKTEAEVHPKVLREPARLNHSRFNSRPFQLGFLSWFINEF*FGSLTDSI*QSQHWLSGCIWG*GCLLSFASCCWITAAFCCHCCCPSATFLLSLKVSRSPPGIPSDHSIILHSN*GLRKEIF*NESHLMCHFKKKGILLFLMWLFL*FAKKKKKKILVNI*TWLQSLLKMVFSPFSAFCYCKYVF*IKYFKGKNVGFINAIFYFTFIIKGKAN**P ->cbiomut:ENST00000078429:GNA11:p.K275N:Missense_Mutation -AAAAARAECGRAGVRGWRGPSGDPAARQAAAEAGRAGPGPRAGGRGRRAAAGGGRGGSGQGRAGGRGAAAGRRPRRPGPGR*LWSP*WRVA*AMR*RSPSGSTPRSRSSCGGTSATPGASSSCCCSARARAGRARSSSRCASSTAPATRRRTSAASPSSSTRTSSPPCRP*SGPWRRSRSSTSTSRTRPMRS*SGRWTWRR*PPSSISTSVPSRPCGRTRASRNATTAGASTSSPTLPSTT*PTLTASPPWATCPPSRTCCGSACPPPASSSTLSTWRTSSSGWWMWGASGRSGGSGSTALRT*HPSCFSSPSANTTKSWWSRTTRTGWRRAKPCSGPSSPTPGSRTPPSSSSSTRRTCWRTRSCTRTWWTTSPSSMVPSGTPRRRGSSS*RCSWT*TPTATRSSTHTSRVPPTRRTSASCSRP*RTPSCSSTSRSTTWSERPGPGRRDGDTGQDLPSTEPAAAGRVALPSPGRGLCPREEIFFFHIFNKWFLFHSYQGMYISPSVHFAHLLTFCQRQRQPFSGLDLWLAFF*KKKKKKERKKATKHKTHKRPVPPVTLGLTEPPPASMGPRPAASHAPPHRSPLWLSFQPHVLFLSPARFFSSSQKAWRLGDGRFSPFLSY*RPARLASSPINAVLCPLDS*RGGGGLPRSPTLGSA*PFILFYFFEEKERLTHRLKKHPGPSLMAGFPVPLQRLGRVPGLEPRGLLWAVPPGPTLAAWGCPGTPEGCTATLPWLERTPPEPTWAGRLEGWSPGDTGRKATWMGAFLFCSAL*CHQFGNSEGGWGLLQNILRCVPERQREGRGRQLCAWPCPKHLRPPPSAAPGEREASTRTLARGAWKVVAGTGLGSFQAWLATTTARGGARQATPH*ATAPGAASRGPLRH*GTETGSPRETRKVGNEGTVFGEVAFSSAVD*TLQRPVVPGFAQLSQGWIACAAFARRHTGTLHGCFWPRQMTKETAPKYDHSNQQFPPACPPLSGLPWPPRPQGCLLASGGRRAGSPVEGSGETRSGQLHFW*SAPWGDGAGGIPPPRLPHTTSVSPGSVLFLCQVST*EGWCQKPPMASAGARRCPGGADGATPGRAATTFSSSGALWGACACGISEGLDCTR*PGRGLRVESPSTQAGALRG*VLGLPREGACQASQSRAGTAKTSWPGSSGSECLIPCPPKKQR*VLQAQGRGACPRRVPGSGSRASGTQGQGQPTPTLATCGATWACGVCVFTLVNLTCQRFLVSADHLLRPCYARAAAAPGHCKPMPWVPRLPQGGIPVPMSPSGGSRSCGRPGGRDPVILVYYTVLISDNFNLNLFKKEYSIQAVFKPFTI*NACVVRVGDGRRG*GAAQCHLPQPPALTLNPDTDGSRLFISFS*NELCFKLE*ILFLNA ->cbiomut:ENST00000218089:STAG2:p.K48Gfs*33:Frame_Shift_Del -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000226574:NFKB1:p.E3K:Missense_Mutation -VRK*ARQKEREVHQRAGAGRGGFATGAARRRADSFPCPSRRSGRQPPQPSACTQPPAPLPEPSAAEAAAARPVRRRRRPATARPALPSARAAAMARR*LAWPGPAALPLAPTRTRARPGSGLPPPLPSPAGRPAPLRRESPPAPGGRTRTRHPASEWQKMIHIWEGLNKCFIWILL*LIQYLIQKYFNHRWHCQQQMAHTFKY*SNLNREDFVSVMYVKAHPMVDYLVPLVKRTRSLTLRSKSATMWDQQRLLFSWSQMEKISTCMPTAWWENTVRMGSAL*LLDPRTWWSASQTWVYFM*QRKKYLKHWKHE*QRRV*GAIILDSWCTLTLPICKQKVEGTGSWEIGKKS*SAKQLCSRPRRWTSAWCGSCLQLFFRIALAASQGAWNPWYQTPSMTVKPPMHPT*KL*EWTGQLDV*LEGRKFIFFVTKFRKMTSRFDFMKRKKMVESGKDLEIFPPQMFIDNLPLSSKLQSIKILILQNQPLCLSSFGGNLTWKLVNQNLSSTILKSKIKKKCRGNVRSSCPIFRIVSAVVVVLELEAEACLVVAVEEGALEVQVQGIASHTMDFLLMVGLLSILELLNLMLG*SMEPWTLNLKRTLKVVTKVMTKTL*TSLGKLLKPQSKIRSPARPPLGMVRSL*RMQQEQKKRVLEFRITSF*RRLCSLQRGMPMPFSTTR*QET*RCCWPSSAISLLCRMRMGTVSYT*QSSTFILNL*GIY*KSHLV*FLMTLST*EMICTRRPCTWQ*SLSRKMWWRIC*GLGPT*AFWTAWVTLFCT*LPKKDMIKFSVSYSSTKRQHYFLTTPTGTV*MPFI*P**AIACHVCCCWWPLGLTSMLRSRSPGAQHCTWLWSTTTSHWQAACSWRVMPMWTVLPTMEPHPCI*QLGEGPPGWQLFSKQQEQIPWWRTLSLSMTWMTLGKMQERMKELCLEPRL*IWPPAGRYLTY*MGNHMSQSLHLMIY*HKET*NSWLKM*SCSCISY*KFLIQTKTGLLWRRN*VWGYLIMPSG*VLLLPKHLWTTMRSLGVQSESWWRP*DKWATPKQLK*SRQPPAQ*RPPLRPTRCLSRLPPQGSK*TSSETVTVSATAAWRHPSANSALPSL*PVVPHC*LSTKCPMIMGRKDL*KAKFSLLTISHTV*TKALKFHCVVHKTEAEVHPKVLREPARLNHSRFNSRPFQLGFLSWFINEF*FGSLTDSI*QSQHWLSGCIWG*GCLLSFASCCWITAAFCCHCCCPSATFLLSLKVSRSPPGIPSDHSIILHSN*GLRKEIF*NESHLMCHFKKKGILLFLMWLFL*FAKKKKKKILVNI*TWLQSLLKMVFSPFSAFCYCKYVF*IKYFKGKNVGFINAIFYFTFIIKGKAN**P ->cbiomut:ENST00000218089:STAG2:p.V730Ffs*10:Frame_Shift_Del -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000226574:NFKB1:p.G489E:Missense_Mutation -VRE*ARQKEREVHQRAGAGRGGFATGAARRRADSFPCPSRRSGRQPPQPSACTQPPAPLPEPSAAEAAAARPVRRRRRPATARPALPSARAAAMARR*LAWPGPAALPLAPTRTRARPGSGLPPPLPSPAGRPAPLRRESPPAPGGRTRTRHPASEWQKMIHIWEGLNKCFIWILL*LIQYLIQKYFNHRWHCQQQMAHTFKY*SNLNREDFVSVMYVKAHPMVDYLVPLVKRTRSLTLRSKSATMWDQQRLLFSWSQMEKISTCMPTAWWENTVRMGSAL*LLDPRTWWSASQTWVYFM*QRKKYLKHWKHE*QRRV*GAIILDSWCTLTLPICKQKVEGTGSWEIGKKS*SAKQLCSRPRRWTSAWCGSCLQLFFRIALAASQGAWNPWYQTPSMTVKPPMHPT*KL*EWTGQLDV*LEGRKFIFFVTKFRKMTSRFDFMKRKKMVESGKDLEIFPPQMFIDNLPLSSKLQSIKILILQNQPLCLSNFGGNLTWKLVNQNLSSTILKSKIKKKCRGNVRSSCPIFRIVSAVVVVLELEAEACLVVAVEEGALEVQVQGIASHTMDFLLMVGLLSILELLNLMLG*SMEPWTLNLKRTLKVVTKVMTKTL*TSLGKLLKPQSKIRSPARPPLGMVRSL*RMQQEQKKRVLEFRITSF*RRLCSLQRGMPMPFSTTR*QET*RCCWPSSAISLLCRMRMGTVSYT*QSSTFILNL*GIY*KSHLV*FLMTLST*EMICTRRPCTWQ*SLSRKMWWRIC*GLGPT*AFWTAWVTLFCT*LPKKDMIKFSVSYSSTKRQHYFLTTPTGTV*MPFI*P**AIACHVCCCWWPLGLTSMLRSRSPGAQHCTWLWSTTTSHWQAACSWRVMPMWTVLPTMEPHPCI*QLGEGPPGWQLFSKQQEQIPWWRTLSLSMTWMTLGKMQERMKELCLEPRL*IWPPAGRYLTY*MGNHMSQSLHLMIY*HKET*NSWLKM*SCSCISY*KFLIQTKTGLLWRRN*VWGYLIMPSG*VLLLPKHLWTTMRSLGVQSESWWRP*DKWATPKQLK*SRQPPAQ*RPPLRPTRCLSRLPPQGSK*TSSETVTVSATAAWRHPSANSALPSL*PVVPHC*LSTKCPMIMGRKDL*KAKFSLLTISHTV*TKALKFHCVVHKTEAEVHPKVLREPARLNHSRFNSRPFQLGFLSWFINEF*FGSLTDSI*QSQHWLSGCIWG*GCLLSFASCCWITAAFCCHCCCPSATFLLSLKVSRSPPGIPSDHSIILHSN*GLRKEIF*NESHLMCHFKKKGILLFLMWLFL*FAKKKKKKILVNI*TWLQSLLKMVFSPFSAFCYCKYVF*IKYFKGKNVGFINAIFYFTFIIKGKAN**P ->cbiomut:ENST00000218089:STAG2:p.N499_L501dup:In_Frame_Ins -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000218089:STAG2:p.P442Qfs*6:Frame_Shift_Del -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000166244:EPHA8:p.Q989H:Missense_Mutation -SRRAGRSGQARGCVAPPPARPGPAMAPARGRLPPALWVVTAAAAAATCVSAARGEVNLLDTSTIHGDWGWLTYPAHGWDSINEVDESFQPIHTYQVCNVMSPNQNNWLRTSWVPRDGARRVYAEIKFTLRDCNSMPGVLGTCKETFNLYYLESDRDLGASTQESQFLKIDTIAADESFTGADLGVRRLKLNTEVRSVGPLSKRGFYLAFQDIGACLAILSLRIYYKKCPAMVRNLAAFSEAVTGADSSSLVEVRGQCVRHSEERDTPKMYCSAEGEWLVPIGKCVCSAGYEERRDACVACELGFYKSAPGDQLCARCPPHSHSAAPAAQACHCDLSYYRAALDPPSSACTRPPSAPVNLISSVNGTSVTLEWAPPLDPGGRSDITYNAVCRRCPWALSRCEACGSGTRFVPQQTSLVQASLLVANLLAHMNYSFWIEAVNGVSDLSPEPRRAAVVNITTNQAAPSQVVVIRQERAGQTSVSLLWQEPEQPNGIILEYEIKYYEKDKEMQSYSTLKAVTTRATVSGLKPGTRYVFQVRARTSAGCGRFSQAMEVETGKPRPRYDTRTIVWICLTLITGLVVLLLLLICKKRHCGYSKAFQDSDEEKMHYQNGQAPPPVFLPLHHPPGKLPEPQFYAEPHTYEEPGRAGRSFTREIEASRIHIEKIIGSGDSGEVCYGRLRVPGQRDVPVAIKALKAGYTERQRRDFLSEASIMGQFDHPNIIRLEGVVTRGRLAMIVTEYMENGSLDTFLRTHDGQFTIMQLVGMLRGVGAGMRYLSDLGYVHRDLAARNVLVDSNLVCKVSDFGLSRVLEDDPDAAYTTTGGKIPIRWTAPEAIAFRTFSSASDVWSFGVVMWEVLAYGERPYWNMTNRDVISSVEEGYRLPAPMGCPHALHQLMLDCWHKDRAQRPRFSQIVSVLDALIRSPESLRATATVSRCPPPAFVRSCFDLRGGSGGGGGLTVGDWLDSIRMGRYRDHFAAGGYSSLGMVLRINAQDVRALGITLMGHQKKILGSIQTMRAQLTSTQGPRRHL*CTASRAQAATKPTPGHASGRGREGLAAGRAAPGLCPPLRCWRS*RLRHRTWSYQGSGAWEGAFGGHPGEDTCPPGQAPSLFQSLGPPRHRVQQGHHSPASVCVHVCVWWGVFSQGHGISCEQCVIKCVHPFGSQHGRVHVMSVCLSVKAGGTCG*WWMMCHE*GGV*AGNSV*HRQVQHPWGRGRGSPLRPPTPGGWSQGPLLNCTSTRPTLVSAWVSPPRLYLRSGSSL*PRRPPAASTRLSPLLQQENRVPGQSGWPPSWRHHGRAHEMSSAGLGCLARAGGSAASSSL*CLPSTAQVSSLKVPSPTFQCPALTPALCPPGLGSGTRGSYLLSTQPTPSCSIWGD*GLERGVMPRPRLHCNQVSESGLRPPAKALVPIHHPTRALGVEVPWKPLPSHTDLPPYGPPGYVNISFLPCQNIFSSLLTMQKWSSKHIKSTQGEKAPSRGPLAGREAGTPPCAPCQPQREWRAQLPSPAPPPHSQHSYPAGTPALSPLSLLQ*FGESQPHPGAAASSLHLYILYYYIAELFFLPMEVGNMVRTRSGGGILSSSPPHPTLTQFLGSGSSQSWRHRGPGTCKSVAPHSSVWSLSGSWGSASLWSPS*LLNLPTIRINSASS ->cbiomut:ENST00000218089:STAG2:p.D101Lfs*8:Frame_Shift_Del -VADRWRLRVPFASKSPKSEHPKQSRSATKKKKKKKKKKKKKKKKNPAGSDRHFQNPPPL*NRGSFRP*VEFEGVKKRKGKNILYQPRGEEAPGLRKKEEWGRRTVSLLPLCTLRGEVATEY*IHLGIKEKHKKIIRERNCLRRKKASHHFTHVNI*IYF*H*GVPEDDKEMIAAPEIPTDFNLLQESETHFSSDTDFEDIEGKNQKQGKGKTCKKGKKGPAEKGKGGNGGGKPPSGPNRMNGHHQQNGVENMMLFEVVKMGKSAMQSVVDDWIESYKHDRDIALLDLINFFIQCSGCKGVVTAEMFRHMQNSEIIRKMTEEFDEDSGDYPLTMAGPQWKKFKSSFCEFIGVLVRQCQYSIIYDEYMMDTVISLLTGLSDSQVRAFRHTSTLAAMKLMTALVNVALNLSINMDNTQRQYEAERNKMIGKRANERLELLLQKRKELQENQDEIENMMNAIFKGVFVHRYRDAIAEIRAICIEEIGIWMKMYSDAFLNDSYLKYVGWTMHDKQGEVRLKCLTALQGLYYNKELNSKLELFTSRFKDRIVSMTLDKEYDVAVQAIKLLTLVLQSSEEVLTAEDCENVYHLVYSAHRPVAVAAGEFLYKKLFSRRDPEEDGMMKRRGRQGPNANLVKTLVFFFLESELHEHAAYLVDSMWDCATELLKDWECMNSLLLEEPLSGEEALTDRQESALIEIMLCTIRQAAECHPPVGRGTGKRVLTAKEKKTQLDDRTKITELFAVALPQLLAKYSVDAEKVTNLLQLPQYFDLEIYTTGRLEKHLDALLRQIRNIVEKHTDTDVLEACSKTYHALCNEEFTIFNRVDISRSQLIDELADKFNRLLEDFLQEGEEPDEDDAYQVLSTLKRITAFHNAHDLSKWDLFACNYKLLKTGIENGDMPEQIVIHALQCTHYVILWQLAKITESSSTKEDLLRLKKQMRVFCQICQHYLTNVNTTVKEQAFTILCDILMIFSHQIMSGGRDMLEPLVYTPDSSLQSELLSFILDHVFIEQDDDNNSADGQQEDEASKIEALHKRRNLLAAFCKLIVYTVVEMNTAADIFKQYMKYYNDYGDIIKETMSKTRQIDKIQCAKTLILSLQQLFNEMIQENGYNFDRSSSTFSGIKELARRFALTFGLDQLKTREAIAMLHKDGIEFAFKEPNPQGESHPPLNLAFLDILSEFSSKLLRQDKRTVYVYLEKFMTFQMSLRREDVWLPLMSYRNSLLAGGDDDTMSVISGISSRGSTVRSKKSKPSTGKRKVVEGMQLSLTEESSSSDSMWLSREQTLHTPVMMQTPQLTSTIMREPKRLRPEDSFMSVYPMQTEHHQTPLDYNTQVTWMLAQRQQEEARQQQERAAMSYVKLRTNLQHAIRRGTSLMEDDEEPIVEDVMMSSEGRIEDLNEGMDFDTMDIDLPPSKNRRERTELKPDFFDPASIMDESVLGVSMF*YQYTIKSVVKSFSKWKRKF*SVVDTVKFCTDFSLRRI*HAYAYQDQVH*GAVLFA*INVKDK*TI***ATVFLRK*IFYLCAVSWLLNRLFHAFF*KKKKTK*QSEEAFGTDMNSLTFIYWLY*IMMTSAGFLFTSRKQC*GCIYSPTLKKV*DRIVFSILNLNA*NVNQQNFVLNIVIVEKSKLISRTFTIFSSKSILRYF*NPRASLYFSEISRCSELPEGNQSQTCLSHYQP*KFACPLR*KCNVVIFLPVMPLYFVSK*KKLIVVCLQKNSKQKLYSLLECGNRDLNFK*NYIYI* ->cbiomut:ENST00000222254:PIK3R2:p.D349N:Missense_Mutation -PPGSNALGHFRRGRARPLGTVAAAEAGIPRLRRRWPRWSHGAGLAWCDGGCGGGGGRDQVGVLSWPSMVAACTLGSLVWCSQQSRQPWAPMALRVRA*AACPSLTC*WRTQWPSDLTPHHQLPPTS*RMVDPVTSGPCKGHGII*SEA*AAPVVACDCWR*RSQHPKPTQRTLPALLQPMGPVGLQAAT*PSRPHPTHAAMAGPEGFQYRALYPFRRERPEDLELLPGDVLVVSRAALQALGVAEGGERCPQSVGWMPGLNERTRQRGDFPGTYVEFLGPVALARPGPRPRGPRPLPARPRDGAPEPGLTLPDLPEQFSPPDVAPPLLVKLVEAIERTGLDSESHYRPKLPAPRTDWSLSDVDQWDTAALADGIKSFLLALPAPLVTPEASAEARRALREAAGPVGPALEPPTLPLHRALTLRFLLQHLGRVASRAPALGPAVRALGATFGPLLLRAPPPPSSPPPGGAPDGSEPSPDFPALLVEKLLQEHLEEQEVAPPALPPKPPKAKPASTVLANGGSPPSLQDAEWYWGDISREEVNEKLRDTPDGTFLVRDASSKIQGEYTLTLRKGGNNKLIKVFHRDGHYGFSEPLTFCSVVDLINHYRHESLAQYNAKLDTRLLYPVSKYQQDQIVKEDSVEAVGAQLKVYHQQYQDKSREYDQLYEEYTRTSQELQMKRTAIEAFNETIKIFEEQGQTQEKCSKEYLERFRREGNEKEMQRILLNSERLKSRIAEIHESRTKLEQQLRAQASDNREIDKRMNSLKPDLMQLRKIRDQYLVWLTQKGARQKKINEWLGIKNETEDQYALMEDEDDLPHHEERTWYVGKINRTQAEEMLSGKRDGTFLIRESSQRGCYACSVVVDGDTKHCVIYRTATGFGFAEPYNLYGSLKELVLHYQHASLVQHNDALTVTLAHPVRAPGPGPPPAAR*APRTRPKQSRPWARLRRRLRRREPRTRPATSRGPHFSGSGSCLGFSHPLSLSFPPPFSRSPSVSFSLSFLAPVSLHVGGPNSPTPYLRVLRALPSPWLWSP*PSALPTAGPPGSRKPLLAAPAMFTEGPWAARPQPGHPDF*AIDLGSGQEGTSLCCFREPRP*HSGPGGTRPTDSNFPSKPRSETRHRVTPTRGPLREVHPPPKK*LNSQARHGGSCL*SQHFGRPRRADLLRSGVGGQPGQNGKTPHLLKYKN*PGVVAAACNPSYLGG*GVRIS*TQEMEVAVSRDRATALQPG*QRETPPSQKNK*INL*AGPNPS*ESQLPVLVPPQWPSCDTAHGPSL*CRFRASLRSCWVLILFFLDCKTLFPLLFWDKSPGFLRCPWPPHCLPHELGGRFCTVRCY*YDIKHQTSWV diff --git a/pgatk/testdata/test_cbioportal_genes.fa b/pgatk/testdata/test_cbioportal_genes.fa deleted file mode 100644 index c987ba4b..00000000 --- a/pgatk/testdata/test_cbioportal_genes.fa +++ /dev/null @@ -1,698 +0,0 @@ ->ENST00000166244 CDS=73-3090 gene_version=6 transcript_version=3 gene_source=ensembl_havana gene_biotype=protein_coding transcript_name=EPHA8-001 transcript_source=ensembl_havana transcript_biotype=protein_coding tag=basic ccds_id=CCDS225 havana_transcript=OTTHUMT00000008085 havana_transcript_version=1 protein_id=ENSP00000166244 -TCCCGACGCGCGGGCCGCAGCGGCCAAGCCCGAGGGTGCGTGGCGCCCCCGCCCGCCCGGCCCGGCCCGG -CCATGGCCCCCGCCCGGGGCCGCCTGCCCCCTGCGCTCTGGGTCGTCACGGCCGCGGCGGCGGCGGCCAC -CTGCGTGTCCGCGGCGCGCGGCGAAGTGAATTTGCTGGACACGTCGACCATCCACGGGGACTGGGGCTGG -CTCACGTATCCGGCTCATGGGTGGGACTCCATCAACGAGGTGGACGAGTCCTTCCAGCCCATCCACACGT -ACCAGGTTTGCAACGTCATGAGCCCCAACCAGAACAACTGGCTGCGCACGAGCTGGGTCCCCCGAGACGG -CGCCCGGCGCGTCTATGCTGAGATCAAGTTTACCCTGCGCGACTGCAACAGCATGCCTGGTGTGCTGGGC -ACCTGCAAGGAGACCTTCAACCTCTACTACCTGGAGTCGGACCGCGACCTGGGGGCCAGCACACAAGAAA -GCCAGTTCCTCAAAATCGACACCATTGCGGCCGACGAGAGCTTCACAGGTGCCGACCTTGGTGTGCGGCG -TCTCAAGCTCAACACGGAGGTGCGCAGTGTGGGTCCCCTCAGCAAGCGCGGCTTCTACCTGGCCTTCCAG -GACATAGGTGCCTGCCTGGCCATCCTCTCTCTCCGCATCTACTATAAGAAGTGCCCTGCCATGGTGCGCA -ATCTGGCTGCCTTCTCGGAGGCAGTGACGGGGGCCGACTCGTCCTCACTGGTGGAGGTGAGGGGCCAGTG -CGTGCGGCACTCAGAGGAGCGGGACACACCCAAGATGTACTGCAGCGCGGAGGGCGAGTGGCTCGTGCCC -ATCGGCAAATGCGTGTGCAGTGCCGGCTACGAGGAGCGGCGGGATGCCTGTGTGGCCTGTGAGCTGGGCT -TCTACAAGTCAGCCCCTGGGGACCAGCTGTGTGCCCGCTGCCCTCCCCACAGCCACTCCGCAGCTCCAGC -CGCCCAAGCCTGCCACTGTGACCTCAGCTACTACCGTGCAGCCCTGGACCCGCCGTCCTCAGCCTGCACC -CGGCCACCCTCGGCACCAGTGAACCTGATCTCCAGTGTGAATGGGACATCAGTGACTCTGGAGTGGGCCC -CTCCCCTGGACCCAGGTGGCCGCAGTGACATCACCTACAATGCCGTGTGCCGCCGCTGCCCCTGGGCACT -GAGCCGCTGCGAGGCATGTGGGAGCGGCACCCGCTTTGTGCCCCAGCAGACAAGCCTGGTGCAGGCCAGC -CTGCTGGTGGCCAACCTGCTGGCCCACATGAACTACTCCTTCTGGATCGAGGCCGTCAATGGCGTGTCCG -ACCTGAGCCCCGAGCCCCGCCGGGCCGCTGTGGTCAACATCACCACGAACCAGGCAGCCCCGTCCCAGGT -GGTGGTGATCCGTCAAGAGCGGGCGGGGCAGACCAGCGTCTCGCTGCTGTGGCAGGAGCCCGAGCAGCCG -AACGGCATCATCCTGGAGTATGAGATCAAGTACTACGAGAAGGACAAGGAGATGCAGAGCTACTCCACCC -TCAAGGCCGTCACCACCAGAGCCACCGTCTCCGGCCTCAAGCCGGGCACCCGCTACGTGTTCCAGGTCCG -AGCCCGCACCTCAGCAGGCTGTGGCCGCTTCAGCCAGGCCATGGAGGTGGAGACCGGGAAACCCCGGCCC -CGCTATGACACCAGGACCATTGTCTGGATCTGCCTGACGCTCATCACGGGCCTGGTGGTGCTTCTGCTCC -TGCTCATCTGCAAGAAGAGGCACTGTGGCTACAGCAAGGCCTTCCAGGACTCGGACGAGGAGAAGATGCA -CTATCAGAATGGACAGGCACCCCCACCTGTCTTCCTGCCTCTGCATCACCCCCCGGGAAAGCTCCCAGAG -CCCCAGTTCTATGCGGAACCCCACACCTACGAGGAGCCAGGCCGGGCGGGCCGCAGTTTCACTCGGGAGA -TCGAGGCCTCTAGGATCCACATCGAGAAAATCATCGGCTCTGGAGACTCCGGGGAAGTCTGCTACGGGAG -GCTGCGGGTGCCAGGGCAGCGGGATGTGCCCGTGGCCATCAAGGCCCTCAAAGCCGGCTACACGGAGAGA -CAGAGGCGGGACTTCCTGAGCGAGGCGTCCATCATGGGGCAATTCGACCATCCCAACATCATCCGCCTCG -AGGGTGTCGTCACCCGTGGCCGCCTGGCAATGATTGTGACTGAGTACATGGAGAACGGCTCTCTGGACAC -CTTCCTGAGGACCCACGACGGGCAGTTCACCATCATGCAGCTGGTGGGCATGCTGAGAGGAGTGGGTGCC -GGCATGCGCTACCTCTCAGACCTGGGCTATGTCCACCGAGACCTGGCCGCCCGCAACGTCCTGGTTGACA -GCAACCTGGTCTGCAAGGTGTCTGACTTCGGGCTCTCACGGGTGCTGGAGGACGACCCGGATGCTGCCTA -CACCACCACGGGCGGGAAGATCCCCATCCGCTGGACGGCCCCAGAGGCCATCGCCTTCCGCACCTTCTCC -TCGGCCAGCGACGTGTGGAGCTTCGGCGTGGTCATGTGGGAGGTGCTGGCCTATGGGGAGCGGCCCTACT -GGAACATGACCAACCGGGATGTCATCAGCTCTGTGGAGGAGGGGTACCGCCTGCCCGCACCCATGGGCTG -CCCCCACGCCCTGCACCAGCTCATGCTCGACTGTTGGCACAAGGACCGGGCGCAGCGGCCTCGCTTCTCC -CAGATTGTCAGTGTCCTCGATGCGCTCATCCGCAGCCCTGAGAGTCTCAGGGCCACCGCCACAGTCAGCA -GGTGCCCACCCCCTGCCTTCGTCCGGAGCTGCTTTGACCTCCGAGGGGGCAGCGGTGGCGGTGGGGGCCT -CACCGTGGGGGACTGGCTGGACTCCATCCGCATGGGCCGGTACCGAGACCACTTCGCTGCGGGCGGATAC -TCCTCTCTGGGCATGGTGCTACGCATGAACGCCCAGGACGTGCGCGCCCTGGGCATCACCCTCATGGGCC -ACCAGAAGAAGATCCTGGGCAGCATTCAGACCATGCGGGCCCAGCTGACCAGCACCCAGGGGCCCCGCCG -GCACCTCTGATGTACAGCCAGCAGGGCCCAGGCAGCCACCAAGCCCACCCCAGGTCATGCCAGCGGCAGA -GGACGTGAGGGGCTGGCAGCAGGCAGGGCGGCCCCAGGCCTCTGCCCTCCTCTCAGGTGCTGGAGGAGCT -GAAGGCTTCGCCACAGGACCTGGAGTTATCAGGGGTCAGGCGCCTGGGAAGGGGCCTTTGGTGGCCACCC -TGGTGAGGACACCTGTCCCCCAGGGCAGGCACCTTCTCTTTTCCAGAGCCTGGGGCCTCCACGTCACAGA -GTCCAACAGGGACATCACTCGCCTGCCTCTGTGTGCGTGCATGTGTGTGTGTGGTGGGGGGTGTTCTCAC -AAGGTCATGGGATCTCATGTGAACAGTGTGTGATCAAGTGTGTCCACCCCTTCGGGTCTCAGCATGGACG -TGTGCATGTTATGAGCGTGTGCTTATCCGTTAAGGCTGGAGGCACATGTGGGTGATGGTGGATGATGTGT -CATGAATGAGGAGGTGTGTGAGCAGGGAACTCAGTGTGACACCGCCAGGTCCAGCACCCATGGGGGCGGG -GGAGAGGCTCACCCCTACGTCCCCCCACACCTGGAGGCTGGAGCCAGGGGCCACTTCTGAACTGCACCAG -CACCAGGCCCACCCTCGTCTCTGCCTGGGTGAGCCCACCCCGGCTGTATCTCAGGTCTGGGTCCTCCCTC -TAGCCGAGGAGGCCACCTGCAGCCTCCACCCGGCTCTCACCGCTGCTTCAACAGGAAAACAGGGTTCCCG -GTCAGTCCGGCTGGCCGCCTTCATGGAGGCATCATGGCAGAGCACATGAGATGTCCTCAGCTGGGCTTGG -CTGCCTGGCCAGGGCCGGGGGCTCAGCAGCCTCCTCTAGCCTCTGATGCCTTCCCTCCACGGCCCAGGTC -TCCTCACTCAAAGTCCCTTCGCCAACCTTTCAATGCCCAGCCCTGACACCTGCCCTTTGTCCCCCAGGCC -TAGGATCAGGGACCAGAGGATCCTATCTTCTCAGCACCCAGCCCACCCCTTCCTGTAGCATATGGGGAGA -CTAAGGCCTGGAGAGAGGGGTGATGCCCCGTCCCAGGTTGCACTGCAACCAAGTGTCAGAGTCGGGGCTC -CGGCCTCCTGCCAAGGCTCTTGTCCCCATACACCATCCCACAAGGGCGCTGGGGGTGGAAGTGCCCTGGA -AGCCCCTCCCCTCTCACACTGACCTCCCCCCTTACGGCCCACCAGGGTATGTAAATATCTCTTTTCTACC -ATGTCAGAATATTTTTTCCTCACTCCTGACAATGCAAAAATGGTCTTCAAAGCACATAAAAAGCACCCAG -GGTGAGAAAGCCCCATCCCGGGGGCCGTTGGCAGGCAGGGAAGCAGGAACCCCACCGTGTGCCCCCTGCC -AGCCCCAGAGGGAGTGGCGAGCCCAGCTGCCCAGCCCTGCCCCCCCTCCCCATAGCCAGCACAGCTATCC -CGCGGGGACACCAGCACTGAGCCCCCTCTCCCTCCTGCAATAATTCGGGGAGTCTCAGCCCCATCCAGGT -GCCGCGGCCAGCTCTCTACACCTCTATATATTATATTACTATATAGCCGAGCTGTTCTTCCTTCCTATGG -AAGTCGGAAACATGGTCAGAACACGATCTGGGGGGGGGATCCTGTCTTCCTCCCCACCCCACCCCACTCT -TACCCAATTTCTGGGCTCTGGATCCTCACAGTCATGGAGGCACCGTGGGCCTGGCACTTGCAAAAGTGTG -GCCCCTCACTCTAGTGTGTGGTCCCTCTCAGGGTCCTGGGGATCTGCCTCTCTGTGGTCTCCATCCTGAC -TCTTGAACTTACCCACAATAAGAATAAATTCTGCCTCATCTTT ->ENST00000219476 CDS=631-6054 gene_version=12 transcript_version=3 gene_source=ensembl_havana gene_biotype=protein_coding transcript_name=TSC2-001 transcript_source=ensembl_havana transcript_biotype=protein_coding tag=basic ccds_id=CCDS10458 havana_transcript=OTTHUMT00000250657 havana_transcript_version=2 protein_id=ENSP00000219476 -CGTTTTCTTGCTTGGGGCGAAAGGGGGCAGCGGAGCGGAGCGCCCGAAACCCAGCCCCTGCGGACCGCAA -TCTTTGGGAAAAAGGCGCAAGGTGGGAACGCAGGGCCGCACGTGGGAACCGTTCGCGGCTGCCGGGTTTG -CAGCCCCTGCCCGCGCAGCTGGGAGCCGCAGGAGGCGGCCCGGGACTCCAGCCTGCAGCCCCTATCCCGC -CTCCTCCCACGCTCCAGCCACGGCGCGGCGCTACCTGCTGCAGCCTCTCTTCTCCGGAGAGGCCCGGGCT -CCTCCCTACACCCCCGCGGCCCAGCCCCGGGTCCCAGGCTCCGGCTCCGGGTCAGCATCCTCGCGCTCAA -GGCGGTCATGCCGGACTCCTGCGGACTACACATCCCGGCGGCCCATGCGGCCCCGTCACGTGATGCAAGG -ATCGCCGGCCTTTCCGCCAGAGGGCGGCACAGAACTACAACTCCCAGCAAGCTCCCAAGGCGGCCCTCCG -CGCAATGCCGCTACCGGAAGTGCGGGTCGCGCTTCCGGCGGCGTCCCGGGGCCAGGGGGGTGCGCCTTTC -TCCGCGTCGGGGCGGCCCGGAGCGCGGTGGCGCGGCGCGGGAGGGGTTTTCTGGTGCGTCCTGGTCCACC -ATGGCCAAACCAACAAGCAAAGATTCAGGCTTGAAGGAGAAGTTTAAGATTCTGTTGGGACTGGGAACAC -CGAGGCCAAATCCCAGGTCTGCAGAGGGTAAACAGACGGAGTTTATCATCACCGCGGAAATACTGAGAGA -ACTGAGCATGGAATGTGGCCTCAACAATCGCATCCGGATGATAGGGCAGATTTGTGAAGTCGCAAAAACC -AAGAAATTTGAAGAGCACGCAGTGGAAGCACTCTGGAAGGCGGTCGCGGATCTGTTGCAGCCGGAGCGGC -CGCTGGAGGCCCGGCACGCGGTGCTGGCTCTGCTGAAGGCCATCGTGCAGGGGCAGGGCGAGCGTTTGGG -GGTCCTCAGAGCCCTCTTCTTTAAGGTCATCAAGGATTACCCTTCCAACGAAGACCTTCACGAAAGGCTG -GAGGTTTTCAAGGCCCTCACAGACAATGGGAGACACATCACCTACTTGGAGGAAGAGCTGGCTGACTTTG -TCCTGCAGTGGATGGATGTTGGCTTGTCCTCGGAATTCCTTCTGGTGCTGGTGAACTTGGTCAAATTCAA -TAGCTGTTACCTCGACGAGTACATCGCAAGGATGGTTCAGATGATCTGTCTGCTGTGCGTCCGGACCGCG -TCCTCTGTGGACATAGAGGTCTCCCTGCAGGTGCTGGACGCCGTGGTCTGCTACAACTGCCTGCCGGCTG -AGAGCCTCCCGCTGTTCATCGTTACCCTCTGTCGCACCATCAACGTCAAGGAGCTCTGCGAGCCTTGCTG -GAAGCTGATGCGGAACCTCCTTGGCACCCACCTGGGCCACAGCGCCATCTACAACATGTGCCACCTCATG -GAGGACAGAGCCTACATGGAGGACGCGCCCCTGCTGAGAGGAGCCGTGTTTTTTGTGGGCATGGCTCTCT -GGGGAGCCCACCGGCTCTATTCTCTCAGGAACTCGCCGACATCTGTGTTGCCATCATTTTACCAGGCCAT -GGCATGTCCGAACGAGGTGGTGTCCTATGAGATCGTCCTGTCCATCACCAGGCTCATCAAGAAGTATAGG -AAGGAGCTCCAGGTGGTGGCGTGGGACATTCTGCTGAACATCATCGAACGGCTCCTTCAGCAGCTCCAGA -CCTTGGACAGCCCGGAGCTCAGGACCATCGTCCATGACCTGTTGACCACGGTGGAGGAGCTGTGTGACCA -GAACGAGTTCCACGGGTCTCAGGAGAGATACTTTGAACTGGTGGAGAGATGTGCGGACCAGAGGCCTGAG -TCCTCCCTCCTGAACCTGATCTCCTATAGAGCGCAGTCCATCCACCCGGCCAAGGACGGCTGGATTCAGA -ACCTGCAGGCGCTGATGGAGAGATTCTTCAGGAGCGAGTCCCGAGGCGCCGTGCGCATCAAGGTGCTGGA -CGTGCTGTCCTTTGTGCTGCTCATCAACAGGCAGTTCTATGAGGAGGAGCTGATTAACTCAGTGGTCATC -TCGCAGCTCTCCCACATCCCCGAGGATAAAGACCACCAGGTCCGAAAGCTGGCCACCCAGTTGCTGGTGG -ACCTGGCAGAGGGCTGCCACACACACCACTTCAACAGCCTGCTGGACATCATCGAGAAGGTGATGGCCCG -CTCCCTCTCCCCACCCCCGGAGCTGGAAGAAAGGGATGTGGCCGCATACTCGGCCTCCTTGGAGGATGTG -AAGACAGCCGTCCTGGGGCTTCTGGTCATCCTTCAGACCAAGCTGTACACCCTGCCTGCAAGCCACGCCA -CGCGTGTGTATGAGATGCTGGTCAGCCACATTCAGCTCCACTACAAGCACAGCTACACCCTGCCAATCGC -GAGCAGCATCCGGCTGCAGGCCTTTGACTTCCTGTTGCTGCTGCGGGCCGACTCACTGCACCGCCTGGGC -CTGCCCAACAAGGATGGAGTCGTGCGGTTCAGCCCCTACTGCGTCTGCGACTACATGGAGCCAGAGAGAG -GCTCTGAGAAGAAGACCAGCGGCCCCCTTTCTCCTCCCACAGGGCCTCCTGGCCCGGCGCCTGCAGGCCC -CGCCGTGCGGCTGGGGTCCGTGCCCTACTCCCTGCTCTTCCGCGTCCTGCTGCAGTGCTTGAAGCAGGAG -TCTGACTGGAAGGTGCTGAAGCTGGTTCTGGGCAGGCTGCCTGAGTCCCTGCGCTATAAAGTGCTCATCT -TTACTTCCCCTTGCAGTGTGGACCAGCTGTGCTCTGCTCTCTGCTCCATGCTTTCAGGCCCAAAGACACT -GGAGCGGCTCCGAGGCGCCCCAGAAGGCTTCTCCAGAACTGACTTGCACCTGGCCGTGGTTCCAGTGCTG -ACAGCATTAATCTCTTACCATAACTACCTGGACAAAACCAAACAGCGCGAGATGGTCTACTGCCTGGAGC -AGGGCCTCATCCACCGCTGTGCCAGCCAGTGCGTCGTGGCCTTGTCCATCTGCAGCGTGGAGATGCCTGA -CATCATCATCAAGGCGCTGCCTGTTCTGGTGGTGAAGCTCACGCACATCTCAGCCACAGCCAGCATGGCC -GTCCCACTGCTGGAGTTCCTGTCCACTCTGGCCAGGCTGCCGCACCTCTACAGGAACTTTGCCGCGGAGC -AGTATGCCAGTGTGTTCGCCATCTCCCTGCCGTACACCAACCCCTCCAAGTTTAATCAGTACATCGTGTG -TCTGGCCCATCACGTCATAGCCATGTGGTTCATCAGGTGCCGCCTGCCCTTCCGGAAGGATTTTGTCCCT -TTCATCACTAAGGGCCTGCGGTCCAATGTCCTCTTGTCTTTTGATGACACCCCCGAGAAGGACAGCTTCA -GGGCCCGGAGTACTAGTCTCAACGAGAGACCCAAGAGTCTGAGGATAGCCAGACCCCCCAAACAAGGCTT -GAATAACTCTCCACCCGTGAAAGAATTCAAGGAGAGCTCTGCAGCCGAGGCCTTCCGGTGCCGCAGCATC -AGTGTGTCTGAACATGTGGTCCGCAGCAGGATACAGACGTCCCTCACCAGTGCCAGCTTGGGGTCTGCAG -ATGAGAACTCCGTGGCCCAGGCTGACGATAGCCTGAAAAACCTCCACCTGGAGCTCACGGAAACCTGTCT -GGACATGATGGCTCGATACGTCTTCTCCAACTTCACGGCTGTCCCGAAGAGGTCTCCTGTGGGCGAGTTC -CTCCTAGCGGGTGGCAGGACCAAAACCTGGCTGGTTGGGAACAAGCTTGTCACTGTGACGACAAGCGTGG -GAACCGGGACCCGGTCGTTACTAGGCCTGGACTCGGGGGAGCTGCAGTCCGGCCCGGAGTCGAGCTCCAG -CCCCGGGGTGCATGTGAGACAGACCAAGGAGGCGCCGGCCAAGCTGGAGTCCCAGGCTGGGCAGCAGGTG -TCCCGTGGGGCCCGGGATCGGGTCCGTTCCATGTCGGGGGGCCATGGTCTTCGAGTTGGCGCCCTGGACG -TGCCGGCCTCCCAGTTCCTGGGCAGTGCCACTTCTCCAGGACCACGGACTGCACCAGCCGCGAAACCTGA -GAAGGCCTCAGCTGGCACCCGGGTTCCTGTGCAGGAGAAGACGAACCTGGCGGCCTATGTGCCCCTGCTG -ACCCAGGGCTGGGCGGAGATCCTGGTCCGGAGGCCCACAGGGAACACCAGCTGGCTGATGAGCCTGGAGA -ACCCGCTCAGCCCTTTCTCCTCGGACATCAACAACATGCCCCTGCAGGAGCTGTCTAACGCCCTCATGGC -GGCTGAGCGCTTCAAGGAGCACCGGGACACAGCCCTGTACAAGTCACTGTCGGTGCCGGCAGCCAGCACG -GCCAAACCCCCTCCTCTGCCTCGCTCCAACACAGTGGCCTCTTTCTCCTCCCTGTACCAGTCCAGCTGCC -AAGGACAGCTGCACAGGAGCGTTTCCTGGGCAGACTCCGCCGTGGTCATGGAGGAGGGAAGTCCGGGCGA -GGTTCCTGTGCTGGTGGAGCCCCCAGGGTTGGAGGACGTTGAGGCAGCGCTAGGCATGGACAGGCGCACG -GATGCCTACAGCAGGTCGTCCTCAGTCTCCAGCCAGGAGGAGAAGTCGCTCCACGCGGAGGAGCTGGTTG -GCAGGGGCATCCCCATCGAGCGAGTCGTCTCCTCGGAGGGTGGCCGGCCCTCTGTGGACCTCTCCTTCCA -GCCCTCGCAGCCCCTGAGCAAGTCCAGCTCCTCTCCCGAGCTGCAGACTCTGCAGGACATCCTCGGGGAC -CCTGGGGACAAGGCCGACGTGGGCCGGCTGAGCCCTGAGGTTAAGGCCCGGTCACAGTCAGGGACCCTGG -ACGGGGAAAGTGCTGCCTGGTCGGCCTCGGGCGAAGACAGTCGGGGCCAGCCCGAGGGTCCCTTGCCTTC -CAGCTCCCCCCGCTCGCCCAGTGGCCTCCGGCCCCGAGGTTACACCATCTCCGACTCGGCCCCATCACGC -AGGGGCAAGAGAGTAGAGAGGGACGCCTTAAAGAGCAGAGCCACAGCCTCCAATGCAGAGAAAGTGCCAG -GCATCAACCCCAGTTTCGTGTTCCTGCAGCTCTACCATTCCCCCTTCTTTGGCGACGAGTCAAACAAGCC -AATCCTGCTGCCCAATGAGTCACAGTCCTTTGAGCGGTCGGTGCAGCTCCTCGACCAGATCCCATCATAC -GACACCCACAAGATCGCCGTCCTGTATGTTGGAGAAGGCCAGAGCAACAGCGAGCTCGCCATCCTGTCCA -ATGAGCATGGCTCCTACAGGTACACGGAGTTCCTGACGGGCCTGGGCCGGCTCATCGAGCTGAAGGACTG -CCAGCCGGACAAGGTGTACCTGGGAGGCCTGGACGTGTGTGGTGAGGACGGCCAGTTCACCTACTGCTGG -CACGATGACATCATGCAAGCCGTCTTCCACATCGCCACCCTGATGCCCACCAAGGACGTGGACAAGCACC -GCTGCGACAAGAAGCGCCACCTGGGCAACGACTTTGTGTCCATTGTCTACAATGACTCCGGTGAGGACTT -CAAGCTTGGCACCATCAAGGGCCAGTTCAACTTTGTCCACGTGATCGTCACCCCGCTGGACTACGAGTGC -AACCTGGTGTCCCTGCAGTGCAGGAAAGACATGGAGGGCCTTGTGGACACCAGCGTGGCCAAGATCGTGT -CTGACCGCAACCTGCCCTTCGTGGCCCGCCAGATGGCCCTGCACGCAAATATGGCCTCACAGGTGCATCA -TAGCCGCTCCAACCCCACCGATATCTACCCCTCCAAGTGGATTGCCCGGCTCCGCCACATCAAGCGGCTC -CGCCAGCGGATCTGCGAGGAAGCCGCCTACTCCAACCCCAGCCTACCTCTGGTGCACCCTCCGTCCCATA -GCAAAGCCCCTGCACAGACTCCAGCCGAGCCCACACCTGGCTATGAGGTGGGCCAGCGGAAGCGCCTCAT -CTCCTCGGTGGAGGACTTCACCGAGTTTGTGTGAGGCCGGGGCCCTCCCTCCTGCACTGGCCTTGGACGG -TATTGCCTGTCAGTGAAATAAATAAAGTCCTGACCCCAGTGCACAGACATAGAGGCACAGATTGCA ->ENST00000078429 CDS=243-1322 gene_version=4 transcript_version=4 gene_source=ensembl_havana gene_biotype=protein_coding transcript_name=GNA11-001 transcript_source=ensembl_havana transcript_biotype=protein_coding tag=basic ccds_id=CCDS12103 havana_transcript=OTTHUMT00000452261 havana_transcript_version=2 protein_id=ENSP00000078429 -GCTGCGGCGGCGGCGCGGGCTGAGTGCGGCCGCGCGGGAGTCCGCGGCTGGCGCGGCCCGAGCGGGGACC -CGGCGGCTCGCCAGGCGGCGGCCGAGGCGGGGCGGGCCGGCCCGGGGCCGAGGGCCGGTGGCCGAGGCCG -GAGGGCCGCGGCGGGCGGCGGCCGAGGCGGCTCCGGCCAGGGCCGGGCCGGGGGCCGGGGGGCGGCGGCG -GGCAGGCGGCCGCGTCGGCCGGGGCCGGGACGATGACTCTGGAGTCCATGATGGCGTGTTGCCTGAGCGA -TGAGGTGAAGGAGTCCAAGCGGATCAACGCCGAGATCGAGAAGCAGCTGCGGCGGGACAAGCGCGACGCC -CGGCGCGAGCTCAAGCTGCTGCTGCTCGGCACGGGCGAGAGCGGGAAGAGCACGTTCATCAAGCAGATGC -GCATCATCCACGGCGCCGGCTACTCGGAGGAGGACAAGCGCGGCTTCACCAAGCTCGTCTACCAGAACAT -CTTCACCGCCATGCAGGCCATGATCCGGGCCATGGAGACGCTCAAGATCCTCTACAAGTACGAGCAGAAC -AAGGCCAATGCGCTCCTGATCCGGGAGGTGGACGTGGAGAAGGTGACCACCTTCGAGCATCAGTACGTCA -GTGCCATCAAGACCCTGTGGGAGGACCCGGGCATCCAGGAATGCTACGACCGCAGGCGCGAGTACCAGCT -CTCCGACTCTGCCAAGTACTACCTGACCGACGTTGACCGCATCGCCACCTTGGGCTACCTGCCCACCCAG -CAGGACGTGCTGCGGGTCCGCGTGCCCACCACCGGCATCATCGAGTACCCTTTCGACCTGGAGAACATCA -TCTTCCGGATGGTGGATGTGGGGGGCCAGCGGTCGGAGCGGAGGAAGTGGATCCACTGCTTTGAGAACGT -GACATCCATCATGTTTCTCGTCGCCCTCAGCGAATACGACCAAGTCCTGGTGGAGTCGGACAACGAGAAC -CGGATGGAGGAGAGCAAAGCCCTGTTCCGGACCATCATCACCTACCCCTGGTTCCAGAACTCCTCCGTCA -TCCTCTTCCTCAACAAGAAGGACCTGCTGGAGGACAAGATCCTGTACTCGCACCTGGTGGACTACTTCCC -CGAGTTCGATGGTCCCCAGCGGGACGCCCAGGCGGCGCGGGAGTTCATCCTGAAGATGTTCGTGGACCTG -AACCCCGACAGCGACAAGATCATCTACTCACACTTCACGTGTGCCACCGACACGGAGAACATCCGCTTCG -TGTTCGCGGCCGTGAAGGACACCATCCTGCAGCTCAACCTCAAGGAGTACAACCTGGTCTGAGCGCCCAG -GCCCAGGGAGACGGGATGGAGACACGGGGCAGGACCTTCCTTCCACGGAGCCTGCGGCTGCCGGGCGGGT -GGCGCTGCCGAGTCCGGGCCGGGGCCTCTGCCCGCGGGAGGAGATTTTTTTTTTTCATATTTTTAACAAA -TGGTTTTTATTTCACAGTTATCAGGGGATGTACATCTCTCCCTCCGTACACTTCGCGCACCTTCTCACCT -TTTGTCAACGGCAAAGGCAGCCTTTTTCTGGCCTTGACTTATGGCTCGCTTTTTTCTAAAAAAAAAAAAA -AAAGAAAGAAAGAAAAAAAGCAACGAAACATAAAACACACAAGCGCCCCGTGCCCCCAGTGACTCTGGGC -CTCACAGAGCCCCCGCCAGCCAGCATGGGGCCCCGCCCTGCAGCCAGTCACGCGCCCCCACACCGCAGCC -CCCTGTGGCTGTCCTTCCAACCCCACGTGCTTTTTCTTTCTCCTGCCCGCTTCTTTTCTTCATCACAAAA -GGCGTGGAGACTCGGAGACGGACGTTTTTCCCCTTTTTTAAGTTATTGACGCCCAGCGCGCCTCGCCTCT -TCACCCATCAACGCTGTGCTTTGCCCACTGGACTCCTGAAGAGGGGGTGGGGGGCTCCCTCGGTCGCCCA -CCCTGGGAAGTGCCTAACCTTTTATTTTATTTTATTTTTTTGAGGAAAAAGAACGCCTGACTCACAGGTT -GAAGAAACACCCTGGGCCCTCTCTCATGGCCGGGTTCCCCGTCCCTCTGCAGAGGCTGGGAAGGGTCCCC -GGGCTGGAGCCACGGGGGCTTCTCTGGGCTGTGCCTCCGGGGCCAACACTGGCTGCTTGGGGCTGCCCGG -GGACTCCAGAGGGCTGCACGGCCACCCTGCCCTGGCTAGAGCGCACCCCACCGGAGCCCACGTGGGCTGG -GCGGCTGGAGGGATGGTCCCCCGGTGACACTGGGAGAAAGGCCACTTGGATGGGGGCGTTTCTGTTTTGT -TCCGCTTTGTGATGTCACCAATTTGGAAACAGCGAGGGTGGGTGGGGACTTTTACAGAATATTCTCAGGT -GTGTACCCGAGAGGCAGAGAGAGGGACGTGGCCGGCAGCTCTGTGCGTGGCCTTGTCCCAAGCACTTGCG -CCCGCCCCCGAGCGCCGCCCCCGGGGAGCGGGAAGCCAGCACTCGCACTTTGGCCAGGGGCGCGTGGAAG -GTGGTGGCAGGCACCGGCCTGGGCAGCTTCCAGGCCTGGCTGGCCACGACCACGGCCCGAGGGGGAGCCC -GCCAGGCCACGCCGCACTGAGCCACAGCCCCGGGGGCCGCCTCCCGGGGCCCCTTGAGGCACTGAGGCAC -CGAGACTGGTTCTCCCCGAGAGACTCGGAAGGTGGGGAACGAGGGGACTGTGTTTGGGGAGGTGGCTTTT -TCGTCTGCTGTTGACTGAACACTACAGCGCCCTGTGGTTCCGGGCTTCGCACAGCTGTCCCAGGGATGGA -TCGCCTGTGCTGCCTTCGCCCGCCGCCACACCGGGACCCTGCACGGCTGCTTCTGGCCTCGACAGATGAC -AAAAGAAACAGCCCCAAAATACGACCACTCCAACCAGCAGTTCCCGCCTGCCTGCCCGCCACTGTCAGGC -CTGCCCTGGCCTCCTCGTCCGCAGGGCTGTCTGCTGGCTTCTGGGGGCAGAAGAGCGGGGAGCCCCGTGG -AAGGGTCAGGGGAGACCAGGTCAGGGCAGCTACATTTCTGGTGATCAGCCCCATGGGGAGACGGGGCTGG -CGGGATACCCCCCCCCCGGCTTCCCCACACCACTTCTGTCTCACCCGGAAGCGTCCTTTTTTTGTGCCAG -GTGTCTACCTAAGAGGGTTGGTGCCAGAAGCCCCCCATGGCGAGTGCTGGGGCCCGGCGGTGCCCTGGGG -GAGCAGATGGGGCCACCCCTGGCAGGGCCGCTACAACCTTTTCCAGCAGCGGAGCCCTCTGGGGGGCCTG -TGCTTGTGGCATCTCTGAGGGCCTAGATTGCACAAGGTGACCTGGCCGTGGCCTGAGGGTGGAGTCGCCC -AGCACGCAGGCCGGGGCGCTGCGGGGCTAAGTATTAGGCCTTCCCAGGGAGGGGGCGTGCCAAGCATCCC -AGAGCCGGGCTGGGACCGCCAAAACGTCGTGGCCTGGATCCTCTGGGTCTGAGTGCCTGATCCCCTGCCC -CCCAAAAAAGCAGAGGTAGGTGTTGCAGGCCCAGGGCAGGGGTGCCTGCCCCAGGAGAGTCCCAGGCAGT -GGTTCTCGTGCCAGTGGCACCCAGGGGCAAGGACAGCCAACCCCCACCCTTGCCACGTGTGGGGCCACGT -GGGCATGTGGGGTGTGTGTTTTTACCTTGGTGAATCTCACCTGCCAACGATTTCTCGTGAGTGCCGACCA -CCTTCTCCGACCATGTTACGCCCGGGCGGCAGCAGCCCCCGGCCACTGCAAACCCATGCCCTGGGTCCCC -CGGCTCCCCCAGGGAGGCATCCCCGTGCCAATGTCCCCCAGTGGTGGCAGCAGATCCTGTGGCCGGCCTG -GCGGACGGGACCCAGTGATACTTGTATATTACACAGTCCTGATTTCAGACAATTTCAACCTTAATCTATT -TAAAAAAGAATATTCTATACAAGCTGTTTTTAAGCCTTTTACCATTTGAAATGCATGTGTTGTGCGCGTT -GGGGATGGGAGGAGGGGCTGAGGAGCGGCTCAGTGTCACCTCCCACAGCCACCGGCCCTGACCCTTAATC -CAGACACCGATGGAAGTCGACTTTTCATATCTTTCTCCTGAAATGAACTCTGTTTTAAATTGGAATAAAT -TTTGTTCCTAAATGCTG ->ENST00000171111 CDS=549-2423 gene_version=9 transcript_version=5 gene_source=ensembl_havana gene_biotype=protein_coding transcript_name=KEAP1-001 transcript_source=ensembl_havana transcript_biotype=protein_coding tag=basic ccds_id=CCDS12239 havana_transcript=OTTHUMT00000452000 havana_transcript_version=1 protein_id=ENSP00000171111 -GATTGCGCCACTGCACTCCAGCCTGGGCGTGCAGATCAGAGCGAGACCTTGTCTCTAAAGGAAAAAAAAA -AAGAAAGAAAGAAAGAAAAGAAAAGAAAAGAAAACCTAGCGAGGTAGATAATTTTCCCTAGATCCTGCGG -CCGCCGGACCACGAGGCCGGCGCTGTGCGTTGTTAAAAGGAGAATAGCAGATGGTGGCGCGCAGCCCCGC -GAGGAGACATCCAGCAACGAAATCGGGAGATGGAAGGGACAGTGAGAAGGGGGGCCTGGCTGTGCGCCCC -CGCCCGATGCCCCACTCCTCGCCGACGGGCGCCGGGCACCTGCGGGAAGGGCGGGAGAATCGCCGCTCCT -TTCCCGCCGCGCCCTTTCCGCCCTCTCCCCGCCTCCTTTTCGGGCGTCCCGAGGCCGCTCCCCAACCGAC -AACCAAGACCCCGCAGGCCACGCAGCCCTGGAGCCGAGGCCCCCCGACGGCGGAGGCGCCCGCGGGTCCC -CTACAGCCAAGGTCCCTGAGTGCCAGAGGTGGTGGTGTTGCTTATCTTCTGGAACCCCATGCAGCCAGAT -CCCAGGCCTAGCGGGGCTGGGGCCTGCTGCCGATTCCTGCCCCTGCAGTCACAGTGCCCTGAGGGGGCAG -GGGACGCGGTGATGTACGCCTCCACTGAGTGCAAGGCGGAGGTGACGCCCTCCCAGCATGGCAACCGCAC -CTTCAGCTACACCCTGGAGGATCATACCAAGCAGGCCTTTGGCATCATGAACGAGCTGCGGCTCAGCCAG -CAGCTGTGTGACGTCACACTGCAGGTCAAGTACCAGGATGCACCGGCCGCCCAGTTCATGGCCCACAAGG -TGGTGCTGGCCTCATCCAGCCCTGTCTTCAAGGCCATGTTCACCAACGGGCTGCGGGAGCAGGGCATGGA -GGTGGTGTCCATTGAGGGTATCCACCCCAAGGTCATGGAGCGCCTCATTGAATTCGCCTACACGGCCTCC -ATCTCCATGGGCGAGAAGTGTGTCCTCCACGTCATGAACGGTGCTGTCATGTACCAGATCGACAGCGTTG -TCCGTGCCTGCAGTGACTTCCTGGTGCAGCAGCTGGACCCCAGCAATGCCATCGGCATCGCCAACTTCGC -TGAGCAGATTGGCTGTGTGGAGTTGCACCAGCGTGCCCGGGAGTACATCTACATGCATTTTGGGGAGGTG -GCCAAGCAAGAGGAGTTCTTCAACCTGTCCCACTGCCAACTGGTGACCCTCATCAGCCGGGACGACCTGA -ACGTGCGCTGCGAGTCCGAGGTCTTCCACGCCTGCATCAACTGGGTCAAGTACGACTGCGAACAGCGACG -GTTCTACGTCCAGGCGCTGCTGCGGGCCGTGCGCTGCCACTCGTTGACGCCGAACTTCCTGCAGATGCAG -CTGCAGAAGTGCGAGATCCTGCAGTCCGACTCCCGCTGCAAGGACTACCTGGTCAAGATCTTCGAGGAGC -TCACCCTGCACAAGCCCACGCAGGTGATGCCCTGCCGGGCGCCCAAGGTGGGCCGCCTGATCTACACCGC -GGGCGGCTACTTCCGACAGTCGCTCAGCTACCTGGAGGCTTACAACCCCAGTGACGGCACCTGGCTCCGG -TTGGCGGACCTGCAGGTGCCGCGGAGCGGCCTGGCCGGCTGCGTGGTGGGCGGGCTGTTGTACGCCGTGG -GCGGCAGGAACAACTCGCCCGACGGCAACACCGACTCCAGCGCCCTGGACTGTTACAACCCCATGACCAA -TCAGTGGTCGCCCTGCGCCCCCATGAGCGTGCCCCGTAACCGCATCGGGGTGGGGGTCATCGATGGCCAC -ATCTATGCCGTCGGCGGCTCCCACGGCTGCATCCACCACAACAGTGTGGAGAGGTATGAGCCAGAGCGGG -ATGAGTGGCACTTGGTGGCCCCAATGCTGACACGAAGGATCGGGGTGGGCGTGGCTGTCCTCAATCGTCT -CCTTTATGCCGTGGGGGGCTTTGACGGGACAAACCGCCTTAATTCAGCTGAGTGTTACTACCCAGAGAGG -AACGAGTGGCGAATGATCACAGCAATGAACACCATCCGAAGCGGGGCAGGCGTCTGCGTCCTGCACAACT -GTATCTATGCTGCTGGGGGCTATGATGGTCAGGACCAGCTGAACAGCGTGGAGCGCTACGATGTGGAAAC -AGAGACGTGGACTTTCGTAGCCCCCATGAAGCACCGGCGAAGTGCCCTGGGGATCACTGTCCACCAGGGG -AGAATCTACGTCCTTGGAGGCTATGATGGTCACACGTTCCTGGACAGTGTGGAGTGTTACGACCCAGATA -CAGACACCTGGAGCGAGGTGACCCGAATGACATCGGGCCGGAGTGGGGTGGGCGTGGCTGTCACCATGGA -GCCCTGCCGGAAGCAGATTGACCAGCAGAACTGTACCTGTTGAGGCACTTTTGTTTCTTGGGCAAAAATA -CAGTCCAATGGGGAGTATCATTGTTTTTGTACAAAAACCGGGACTAAAAGAAAAGACAGCACTGCAAATA -ACCCATCTTCCGGGAAGGGAGGCCAGGATGCCTCAGTGTTAAAATGACATCTCAAAAGAAGTCCAAAGCG -GGAATCATGTGCCCCTCAGCGGAGCCCCGGGAGTGTCCAAGACAGCCTGGCTGGGAAAGGGGGTGTGGAA -AGAGCAGGCTTCCAGGAGAGAGGCCCCCAAACCCTCTGGCCGGGTAATAGGCCTGGGTCCCACTCACCCA -TGCCGGCAGCTGTCACCATGTGATTTATTCTTGGATACCTGGGAGGGGGCCAATGGGGGCCTCAGGGGGA -GGCCCCCTCTGGAAATGTGGTTCCCAGGGATGGGCCTGTACATAGAAGCCACCGGATGGCACTTCCCCAC -CGGATGGACAGTTATTTTGTTGATAAGTAACCCTGTAATTTTCCAAGGAAAATAAAGAACAGACTAACTA -GTGTCTTTCACCCTG ->ENST00000222254 CDS=601-2787 gene_version=10 transcript_version=8 gene_source=ensembl_havana gene_biotype=protein_coding transcript_name=PIK3R2-001 transcript_source=ensembl_havana transcript_biotype=protein_coding tag=basic ccds_id=CCDS12371 havana_transcript=OTTHUMT00000319292 havana_transcript_version=3 protein_id=ENSP00000222254 -CCGCCCGGCTCGAATGCGCTCGGGCATTTCCGCCGGGGGCGGGCCAGGCCGCTCGGAACCGTGGCGGCGG -CGGAGGCGGGGATCCCGCGGCTGCGGCGACGGTGGCCGCGGTGGAGCCACGGGGCGGGCTTGGCTTGGTG -TGACGGCGGCTGCGGCGGCGGTGGCGGCCGCGACCAGGTCGGCGTCCTCAGCTGGCCGAGCATGGTGGCA -GCCTGCACCCTTGGCTCCCTTGTCTGGTGCAGCCAGCAGAGCCGCCAGCCTTGGGCGCCCATGGCCCTCC -GTGTGAGGGCGTGAGCGGCCTGCCCCAGCCTCACCTGCTGATGGAGGACTCAATGGCCCAGTGACCTGAC -ACCACACCACCAACTCCCTCCCACCAGCTGACGAATGGTGGACCCAGTGACGAGTGGCCCTTGTAAGGGT -CATGGAATAATTTGAAGCGAGGCATGAGCGGCCCCTGTGGTCGCCTGTGACTGCTGGAGATAGAGGTCCC -AGCACCCCAAGCCAACCCAGCGGACCCTCCCAGCCCTGCTTCAACCAATGGGGCCAGTGGGGCTCCAAGC -AGCCACCTAACCATCCAGACCCCACCCCACTCACGCGGCCATGGCGGGCCCTGAGGGCTTCCAGTACCGC -GCTCTGTACCCGTTCCGCCGGGAGCGGCCGGAGGACCTGGAGCTGCTGCCCGGCGACGTGCTGGTAGTGA -GCCGGGCGGCCTTGCAGGCGCTGGGCGTGGCCGAGGGTGGCGAGCGCTGCCCACAGAGCGTGGGCTGGAT -GCCCGGCCTCAACGAGCGCACACGGCAGCGAGGTGACTTCCCTGGCACCTATGTGGAGTTCCTGGGGCCC -GTGGCCCTGGCCCGGCCCGGCCCTCGCCCACGGGGCCCCCGCCCACTGCCCGCCAGGCCCCGTGATGGGG -CCCCTGAGCCAGGCCTCACACTCCCCGACTTGCCCGAGCAGTTCTCCCCACCTGATGTGGCTCCCCCTCT -TCTGGTGAAGCTTGTGGAGGCCATTGAAAGGACAGGGCTGGACAGCGAATCTCACTACCGCCCGGAGCTG -CCCGCACCGCGTACAGACTGGTCCCTGAGCGACGTGGATCAGTGGGACACGGCAGCCCTGGCTGACGGCA -TTAAGAGCTTCCTGCTGGCACTGCCCGCGCCGCTCGTGACCCCCGAGGCCTCGGCCGAGGCGCGCCGGGC -CCTGCGGGAGGCCGCGGGGCCCGTGGGGCCGGCGCTGGAGCCACCGACGCTGCCGCTGCACCGCGCGCTC -ACGCTGCGCTTCCTGCTCCAGCACCTGGGCCGCGTGGCCAGCCGCGCCCCGGCCCTGGGTCCCGCGGTCC -GGGCCCTGGGCGCCACCTTTGGGCCGCTGCTGCTGCGCGCGCCGCCGCCGCCGTCCTCGCCGCCGCCAGG -GGGCGCTCCCGACGGGAGTGAGCCCAGCCCTGACTTCCCGGCGCTGCTGGTGGAGAAGCTGCTTCAGGAA -CACTTGGAAGAGCAGGAGGTTGCGCCCCCAGCGCTGCCGCCTAAACCCCCCAAGGCAAAGCCGGCCTCCA -CAGTCCTGGCCAATGGAGGGAGCCCACCCTCCCTGCAGGATGCTGAGTGGTACTGGGGGGACATTTCAAG -GGAGGAGGTGAACGAGAAACTCCGGGACACTCCCGATGGCACCTTCCTAGTCCGAGATGCTTCTAGCAAG -ATCCAGGGCGAGTACACGCTGACCCTCAGGAAAGGCGGGAACAATAAGCTGATCAAGGTCTTCCACCGAG -ATGGGCACTATGGCTTCTCAGAGCCACTCACCTTCTGCTCCGTTGTGGACCTCATCAATCACTACCGCCA -CGAGTCTCTGGCCCAGTACAATGCCAAGCTGGACACACGGCTCCTCTACCCTGTGTCCAAATACCAGCAG -GACCAGATTGTCAAGGAGGACAGCGTGGAGGCAGTGGGCGCCCAGCTTAAGGTCTATCACCAGCAGTACC -AGGACAAGAGCCGCGAGTATGACCAGCTTTATGAAGAGTACACACGGACCTCCCAGGAGCTGCAGATGAA -GCGTACTGCAATTGAGGCCTTCAATGAGACTATCAAGATCTTTGAAGAGCAGGGCCAGACTCAAGAGAAA -TGCAGCAAGGAATACCTGGAGCGCTTCCGGCGTGAGGGCAACGAGAAAGAGATGCAAAGGATCCTGCTGA -ACTCCGAGCGGCTCAAGTCCCGCATTGCCGAGATCCATGAGAGCCGCACGAAGCTGGAGCAGCAGCTGCG -GGCCCAGGCCTCGGACAACAGAGAGATCGACAAGCGCATGAACAGCCTCAAGCCGGACCTCATGCAGCTG -CGCAAGATCCGAGACCAGTACCTCGTGTGGCTCACCCAGAAAGGCGCCCGGCAGAAGAAAATCAACGAGT -GGCTGGGGATTAAAAATGAGACTGAGGACCAGTACGCACTCATGGAGGACGAGGACGATCTCCCGCACCA -CGAGGAACGCACTTGGTACGTGGGCAAGATCAACCGCACGCAGGCAGAGGAGATGCTGAGTGGCAAGCGG -GATGGCACCTTCCTCATCCGCGAGAGCAGCCAGCGGGGCTGCTACGCCTGCTCCGTGGTAGTGGACGGCG -ACACCAAGCACTGCGTCATCTACCGCACGGCCACCGGCTTCGGCTTCGCGGAGCCCTACAACCTGTACGG -GTCGCTGAAGGAGCTGGTGCTGCACTACCAGCACGCCTCGCTGGTGCAGCACAACGACGCGCTCACCGTC -ACCCTGGCGCACCCAGTGCGCGCCCCGGGCCCCGGCCCGCCGCCTGCCGCCCGCTGAGCACCGAGGACCC -GCCCCAAGCAGAGCCGCCCCTGGGCCCGTCTGCGCCGGAGGCTGCGGCGGCGGGAGCCACGGACCAGACC -AGCCACATCCAGGGGTCCTCATTTCTCCGGCTCTGGCTCTTGTTTGGGGTTCTCTCACCCTCTTTCTCTT -TCCTTCCCTCCCCCATTCTCCAGATCTCCCTCTGTCTCCTTTTCTCTGTCTTTCTTGGCCCCTGTCTCTC -TCCATGTTGGGGGTCCTAACTCCCCCACCCCATATCTACGTGTCCTCCGGGCATTGCCCTCTCCATGGCT -CTGGTCACCCTGACCCTCTGCCCTGCCCACCGCAGGTCCCCCGGGGTCCCGGAAGCCCCTTCTGGCTGCA -CCTGCCATGTTTACAGAGGGCCCCTGGGCTGCGCGGCCCCAGCCTGGGCACCCTGATTTTTAAGCCATAG -ACCTGGGGTCAGGGCAGGAAGGAACTTCACTCTGCTGCTTCCGAGAACCTCGGCCGTGACATTCGGGGCC -GGGCGGGACCCGCCCCACAGACTCCAACTTCCCCTCCAAACCCCGAAGTGAAACCCGCCACCGGGTTACC -CCCACAAGGGGGCCGCTGCGAGAAGTTCACCCACCCCCGAAAAAATAATTAAACTCGCAGGCCAGGCACG -GTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCAAGACGGGCGGATCTTTTGAGGTCGGGAGTTGG -AGGCCAGCCTGGCCAAAATGGCAAAACCCCGCATCTACTAAAATACAAAAATTAGCCGGGCGTGGTGGCG -GCCGCCTGTAATCCCAGCTACTTGGGAGGCTGAGGCGTGAGAATCTCTTGAACCCAGGAGATGGAGGTTG -CAGTGAGCAGAGATCGTGCCACTGCACTCCAGCCTGGGTAACAGAGGGAGACTCCTCCGTCTCAAAAAAA -TAAATAAATAAACTTGTGAGCTGGCCCCAACCCCTCCTAGGAATCACAGCTCCCCGTACTGGTGCCGCCG -CAGTGGCCAAGTTGCGACACTGCCCACGGCCCCTCCCTCTGATGCAGATTCAGGGCTTCTCTTCGATCAT -GTTGGGTTTTGATTCTGTTTTTCCTTGACTGCAAAACCCTCTTTCCTCTCCTCTTTTGGGACAAGAGCCC -TGGTTTTCTACGCTGCCCTTGGCCACCACACTGCCTGCCCCACGAGCTGGGAGGCAGGTTTTGTACGGTA -CGTTGTTATTGATATGATATAAAACATCAAACGTCGTGGGTGA ->ENST00000074304 CDS=394-3327 gene_version=11 transcript_version=5 gene_source=ensembl_havana gene_biotype=protein_coding transcript_name=INPP4A-201 transcript_source=ensembl transcript_biotype=protein_coding tag=basic ccds_id=CCDS46369 protein_id=ENSP00000074304 -GTCTAGAGCGGCGGCGGCTGGCTAGGGCTGCGGCGCGCGTGGAGGGTTCGCTGCTGGTTTGCCGCCGGGT -CGGGCTCCGTGGGCCGGGGCAGGAGGACCAGCACCTGAGGCCGGGCCCGCAGCCCGCGACTTCACAGCCA -GGCGGCGGCGCTGCTGCTGCTGCGGGGCTCTGGCGCGCAGCCCGGCGGGACAGCGGGGCGGCTGGCGCCG -GGGGCCGGGGAGCGCCAGATGATGGATTTGGACATGCTTCTATGAAGAAATGCCACATGGTCCGAGAGCA -AACATGTCCAGGCTACTGCCACTTTAGTGGACTAGGGCTCGGTGCCAGCACTTCCCGGGTAATCAGGCGT -GGTCTGACCGAGGATCAAGAAGCACATCATCACCAATGACATCATGACAGCAAGAGAGCACAGCCCTCGC -CATGGTGCCAGGGCCCGTGCAATGCAGCGGGCTTCCACCATCGACGTGGCGGCCGACATGCTGGGCCTCT -CTCTGGCAGGAAATATACAAGACCCAGATGAGCCCATTTTAGAATTTAGCTTAGCTTGCAGTGAGCTGCA -TACTCCATCGCTAGATCGAAAGCCAAATAGTTTTGTTGCGGTGAGTGTCACCACCCCTCCTCAGGCATTC -TGGACGAAGCATGCACAGACGGAGATCATTGAGGGAACCAACAATCCTATATTTCTAAGCAGTATTGCCT -TCTTTCAAGACTCTCTTATCAATCAGATGACACAAGTCAAACTCTCCGTGTATGATGTCAAAGATAGATC -TCAGGGAACAATGTATTTACTGGGCTCTGGAACGTTCATTGTCAAAGATCTGCTCCAGGACAGGCATCAT -AGGTTGCATTTAACACTAAGGTCTGCAGAGAGTGACCGTGTAGGTAACATCACCGTGATTGGCTGGCAGA -TGGAGGAGAAGTCAGACCAACGGCCCCCTGTGACCCGGTCTGTGGACACTGTCAATGGGAGGATGGTTCT -TCCTGTCGATGAGAGCTTGACGGAGGCGTTAGGAATCCGATCCAAATACGCTTCATTGCGAAAGGACACT -TTGCTGAAATCGGTGTTCGGTGGTGCCATCTGCCGCATGTACCGGTTTCCAACCACTGATGGTAACCATT -TGCGGATCCTGGAGCAGATGGCAGAGAGCGTGCTCTCCCTGCACGTGCCCCGGCAGTTCGTGAAGCTCCT -ACTAGAGGAAGATGCAGCCAGAGTGTGTGAGCTGGAGGAGCTGGGAGAGCTGTCCCCTTGCTGGGAGAGC -CTCCGGCGCCAAATTGTCACCCAGTACCAGACCATCATCCTCACATACCAGGAGAACCTGACCGACCTCC -ATCAGTACAGAGGGCCCTCGTTTAAAGCAAGCAGTTTGAAAGCAGATAAAAAGTTAGAATTTGTTCCCAC -AAACTTGCACATACAAAGGATGAGAGTTCAAGACGATGGAGGATCAGATCAGAACTACGACATCGTCACC -ATTGGGGCGCCAGCAGCACACTGCCAAGGTTTTAAGTCAGGAGGTCTCCGCAAAAAGCTGCACAAATTTG -AAGAGACCAAGAAACATTTTGAGGAGTGTTGTACATCATCTGGCTGCCAGTCCATAATCTACATACCCCA -GGATGTTGTCAGAGCCAAGGAGATCATCGCCCAGATCAACACCCTGAAAACCCAAGTGAGTTACTACGCA -GAGCGGCTGTCAAGGGCAGCCAAGGACAGGTCTGCCACTGGCCTTGAGAGGACACTCGCCATCTTGGCAG -ACAAGACACGGCAGCTGGTCACGGTCTGCGACTGCAAGCTCCTGGCCAACTCCATCCATGGGCTGAACGC -TGCACGGCCTGACTACATTGCCTCCAAGGCCTCTCCCACTTCGACTGAGGAGGAGCAGGTGATGCTTAGA -AATGACCAGGACACCCTCATGGCCCGGTGGACAGGGAGAAACAGCCGATCTTCCCTGCAGGTGGACTGGC -ACGAGGAGGAGTGGGAGAAAGTGTGGCTGAACGTGGACAAGAGCCTAGAGTGCATCATTCAGCGTGTGGA -CAAGCTGCTGCAGAAGGAGCGGCTGCATGGCGAGGGCTGTGAGGATGTCTTCCCCTGTGCAGGCAGCTGC -ACCAGCAAGAAAGGTAACCCGGACAGCCACGCCTACTGGATCAGACCAGAAGACCCCTTCTGTGATGTCC -CCTCCTCACCATGCCCCTCCACCATGCCCTCCACTGCATGCCATCCTCATCTGACCACACATTGCAGTCC -CCCTCCTGAAGAGTCCAGCCCAGGTGAATGGAGTGAGGCCCTTTACCCGCTGCTGACCACTCTCACCGAC -TGCGTGGCCATGATGAGTGACAAGGCCAAGAAGGCCATGGTATTCCTGCTCATGCAGGACAGCGCGCCCA -CCATAGCCACCTACCTGAGCCTGCAGTACCGCCGTGACGTGGTCTTCTGCCAGACGCTGACCGCCCTCAT -CTGCGGCTTCATCATTAAGCTGAGGAACTGCCTGCATGACGACGGCTTCCTGCGCCAGCTCTACACCATC -GGGCTGCTGGCCCAGTTCGAGAGCCTGCTGAGCACCTACGGGGAGGAGCTGGCAATGCTGGAGGACATGA -GCCTTGGGATCATGGACTTGAGGAACGTGACCTTCAAAGTCACTCAGGCCACTTCCAGCGCCTCCGCAGA -CATGCTGCCCGTCATCACAGGAAATCGCGACGGGTTTAACGTGCGGGTCCCTCTGCCGGGCCCGCTGTTT -GACGCCTTGCCCCGGGAGATCCAGAGTGGCATGCTGCTGCGAGTGCAGCCCGTCCTCTTCAACGTGGGCA -TCAATGAGCAGCAGACACTGGCCGAGAGGTTTGGCGATACGTCTTTACAAGAAGTCATCAACGTGGAGAG -TTTGGTGCGGTTAAATTCCTACTTTGAGCAGTTTAAGGAAGTTTTGCCTGAGGATTGCCTGCCTCGGTCT -CGCAGTCAGACGTGCCTGCCAGAGCTGCTGCGGTTTCTGGGTCAGAACGTGCATGCCCGGAAGAATAAGA -ACGTCGACATTCTCTGGCAAGCTGCTGAGATCTGCCGCCGCCTTAATGGGGTCCGGTTCACCAGCTGCAA -GAGCGCTAAGGACCGTACAGCCATGTCGGTGACACTGGAGCAGTGCCTGATCCTGCAACACGAGCATGGC -ATGGCCCCGCAGGTCTTCACCCAGGCCCTGGAGTGCATGCGCAGTGAGGGTTGTCGAAGAGAAAATACAA -TGAAGAATGTTGGAAGTCGCAAATATGCATTTAATTCCCTGCAGCTGAAGGCTTTCCCCAAGCATTACAG -GCCTCCCGAAGGGACTTACGGAAAAGTTGAAACGTGAACACACGGTTTCCTCTAATTAGCTGTTACATAA -TAAATGTGGGTACCCTCTAGTGTCATATATGAATTCTTCAAGAAGACCTGAAGGATTGGTTTTTATTTTT -TGTGGTTTTTTTAAAAAAAACATTTCACTAAAGAGTCTCTGGAGCATGTTTTTTGTTTTTTGGGTTTTTT -TCCCCATTGGAATCAATAGGAGGTAATGTTTGGCTCAATAGTGTGGATAGTAACAACTGCCTATTTAAAT -TAAATAGCCTTTGGCTGTAACTACACAGATCTCATCAATAGTTACCTACATGAATCAAGCTAGGTTTGTC -TGAAATGCTAGAAGACTTTTTCAAATGCCTGCTTGCTCACTTACTTTTCTACAGAGTAACTCAAAAGTAA -CCATTGAATTACAATCCACTTTGTAAAAATCTGAATGTAAAACAGTAAATAATAAATTAAATAATTGGAT -CCTAGGCATACCAATAAATGTTATTTGGGGAAAGAAGCTAGCACTATCTCATGCAGTGAGAATAACGGGT -TCTAGTGAATTATCCTATCTACACTACCACCTGAAGAAGTTGAAAGAAAGATTGATAAATCAACGGGAGA -TAAGACTTTATTAGAAGGTAACACCTGCAAGGTACCCCACATAGTTGGGGCCACTCTTTTTTCTGTCCCT -TATGAGTTACAGAACAGGGAGTCTGCTGGAGACACAAAGCCAGCAGTAAGGTCCCTTTAGCCTGTCTCCT -GTTCTCTGAAGCTCCCTGCCGAGGCTCCCTCACGCCCAGAGGACACATCTCCCCTTCTTCTCTAGATGTT -AATGTAGGGCCTCAGATGTGGCATGTCAACACTCCCATGGGGAATTTATGACCATAGAGATAGTAGAAAC -CTAAATATTTTCAGAAAAAAAATTTTTTTTGCAGGATTTCCAATTTATCTTTGAAAAGACAGTACAATCA -TGTTTGAATGTCTGATGAAAGTGTCTTATTTTTAGGTTTGCAATAATTGTTACTTTCTTATTCTCATTCT -TATGTAAGATGACTATTGAGAAACAGTTGAAATTTATTCTCCTCAAATGAGATTTTGAAAGGGATTTATG -GGCCATAAAACTTAGGAATTTCATAGAAAATTTTGTCTGGTCATCTTTTATAAGATGATGATGAGTCTTA -TCTGCACATAGCAGAGTTTGTTTCTTAGGAGTTTATATGTTTTATTGATTCTGTTTACGATGTTTACATG -TTCTTGAAAAGGTTGTAAAAGAAATACATATGGCACATATTAATGATGCTGATCCTAATGATTTGTGAAC -CTCTTAGAAATTCTTTTGTCTAAAAGCCTAGAGATTCTTCTGGTTCCTTTAGAAACATGTAACAAACTTG -GGCCAGGGGTGCTGAGGCATGGGGAGGACTGCTTATTGGCAGGAACACAGAGGGGGTGGGCATCAGGTAG -GGTGGAACTGGATGACCTTCCAGACCCCCTCCTACTCAGAAGTCAGCATGCAAGCAGCGCCTGCTGTCTC -CCGATGCCTGCAGGGAGGAAAATGTCTGTGAAGGACACTTTAATGAAGGACGAAGCTCTCTGCTGCTCCC -TCAAAGCTGAGTTCACTGTGGCAGGCAGGAAGCAGAGAAGCTCCTGCCCGCCAAACCCACTGCACAGGTG -GCTGCTGCTGGTATCAGATTCTCCTTTTTAAGTGTCAATTTCTGTTCACAGACAGTTTGTTTTCAATATG -GCTGATTTACCCTTTCACCTCTCCACCATCTCATTTAATTTGTAAATTTTTAGTTCTGTCTTTTCTCATT -TTAACTTTTAAAAAATCTCCTTGCTTTTTAAAAATAAATATTACCCACATAGTTTTCAGATCTTTTTTGT -CTGGAGAGCATTAAATATCTGCACTCATCAAAGGGAATATAGCAAATGTTGATCATCTGTCAGCAGTTTT -GCATGTGACACCTTTATATGAATTATTTTCCCAATTTTTGCTCTATGTAATGGGTCACCATAAAACTGTA -AGACTTGGCAAATGCTATAGAAAAGGTTCAGGTTTCAGTATTCTCTCTGAAGGCATCATTCCTGGGCTTC -CGGCAGCATCACACGCTTCCAGTGCCTGCAGGGTGAGGGTGTGTGGCACAGAGGCAAGCAGCTCCTCTCT -TCTGTAGGAGCTTTGGGTTTTCAGAGGTGCAGGGAAGGCAGTTTTACAGGTTACCGTAAAACAGAGGTTC -CGTCCAGTGTTCCTTATGATGCCTCCCCATTTAAAAAGAAAAGAGATCTATGGAAAACTGGGAATGTAAT -GTGGATTCTGTCAGAGCTCCTACAGAGCACAGTTGCCTTTAGTTTCCTTTAAAGATGTAAAAATATTGTA -TAATACAGTTTTGTCCCTACACAATTGTATTTGCCAAGCTTAGTGCATTATGATACCTTTATTTATTTGT -TTTGGGCAGTATTACTATATATATATAAACATACAGTTACTGTTTTATATATTCTTAGGTCATTCAAAGC -CATGTATGCTGTAAATGTGCTAGTCTTTAGAATGACACATAATAAATAACTGACAAGATATTAAATGTGG -TCTTGCCTGATTCATCCTATTAGGAGGACTAGTTCTATGTGACCAGCCTGTGACTGGACCATTGTTCTTG -GGCATTGCATTGAGTGCTCGGGTGCTGAATACATGTTTGTAAACATGGGACCATGGGAGACTTCCATTTT -ATAAGCTTGTTTCTGCCTAATTTGAAGCAGAGGGGCAACAGCGTTGAGGTTAAGAGCACGGACTTTGGGA -GCACACAGACCAGGTCCCAATCCTGGTTCTGCCCCTGACTGGCTGGTGACTCTGAGCAAGTTGCTTGACC -TCTCCAAGCCTCCGTTTCCTCATGTGCAAAGTGTGGACAACAACAGTACCTTCCTCATAAGGAACGTGCG -ACGCGCCTCAGAAGTACGTGTTCATAAATGGTAGCCATTGTTGTTACCTTCCCGTCTGTGAACATGGATC -ACATCATCTCTGTGGGTAACCCAGTCCTCGTTGTATGACTTGTCAAAATGCAGTTCCACTTGTATTAATA -TTGACCCTGTTCATCGTCACCAGGACTGCATCTTGCACCACTGTGCCGTCTTCTAGGCACACACGACCCG -TTATCTCCCTTGGAAAAATTCCTCTCACTGGAAATGTACAATTAAAGGATGATTGAAATGTTTAACTCTT -GGAGTTTTTAGTATTACCAAACTCCTAGAAATTTAAGCTACCACCAAAAATAACATGTGCCTTTTCCCTT -TATTCTCATTGATGGTAGCAGTGCACCTCGTTTCAGTGTCCTGATTCCTTGATTACTGTGAACACTGAAC -ATCTTTTATACCTTTATGATATTTCTATGTTTGTGACTTCATTGGAATGTTGATCTATTTCATATAGATT -GTTTTTAATATACAATGTATTAGCCCCTGTCA ->ENST00000226382 CDS=361-1305 gene_version=5 transcript_version=2 gene_source=ensembl_havana gene_biotype=protein_coding transcript_name=PHOX2B-001 transcript_source=ensembl_havana transcript_biotype=protein_coding tag=basic ccds_id=CCDS3463 havana_transcript=OTTHUMT00000216832 havana_transcript_version=2 protein_id=ENSP00000226382 -TTAAATTCTAATTAGAGATGCAGGAATCAATGATAGGGAGGTTGGACAGCTCAGTTCCCCAGTGCCAGCC -CAATAGACGGATGAGTTATTGTCATGTAAAAAGCGCCAGCAATAAGACCAACCGCTTTGCTATTGTCCAA -GTGGAAAGAGCCAAGTTTATTATGAGGACTATATGCTCTAGAGACCTCAGACAAGGCATCTCATAGGAGG -CTTTTTCATAAAACTAGGCTCTGCTGGTAGTAAGGAGGCCAGTTTGGAGGCAGGCGTTGAGCTGTGCACA -TCTCCCCACTCCAGCCACCTTCTCCATATCCATCTTTTATTTCATTTTTCCACTTGGCTGAGCCATCCAG -AACCTTTTCAATGTATAAAATGGAATATTCTTACCTCAATTCCTCTGCCTACGAGTCCTGTATGGCTGGG -ATGGACACCTCGAGCCTGGCTTCAGCCTATGCTGACTTCAGTTCCTGCAGCCAGGCCAGTGGCTTCCAGT -ATAACCCGATAAGGACCACTTTTGGGGCCACGTCCGGCTGCCCTTCCCTCACGCCGGGATCCTGCAGCCT -GGGCACCCTCAGGGACCACCAGAGCAGTCCGTACGCCGCAGTTCCTTACAAACTCTTCACGGACCACGGC -GGCCTCAACGAGAAGCGCAAGCAGCGGCGCATCCGCACCACTTTCACCAGTGCCCAGCTCAAAGAGCTGG -AAAGGGTCTTCGCGGAGACTCACTACCCCGACATCTACACTCGGGAGGAGCTGGCCCTGAAGATCGACCT -CACAGAGGCGCGAGTCCAGGTGTGGTTCCAGAACCGCCGCGCCAAGTTTCGCAAGCAGGAGCGCGCAGCG -GCAGCCGCAGCGGCCGCGGCCAAGAACGGCTCCTCGGGCAAAAAGTCTGACTCTTCCAGGGACGACGAGA -GCAAAGAGGCCAAGAGCACTGACCCGGACAGCACTGGGGGCCCAGGTCCCAATCCCAACCCCACCCCCAG -CTGCGGGGCGAATGGAGGCGGCGGCGGCGGGCCCAGCCCGGCTGGAGCTCCGGGGGCGGCGGGGCCCGGG -GGCCCGGGAGGCGAACCCGGCAAGGGCGGCGCAGCAGCAGCGGCGGCGGCCGCGGCAGCGGCGGCGGCGG -CAGCGGCAGCGGCGGCAGCTGGAGGCCTGGCTGCGGCTGGGGGCCCTGGACAAGGCTGGGCTCCCGGCCC -CGGCCCCATCACCTCCATCCCGGATTCGCTTGGGGGTCCCTTCGCCAGCGTCCTATCTTCGCTCCAAAGA -CCCAACGGTGCCAAAGCCGCCTTAGTGAAGAGCAGTATGTTCTGATCTGGAATCCTGCGGCGGCGGCGGC -GGCGGCGACAGCGGGCGAGCCAGGGCCCGGGCGGGCGAGTGGGCGAGCGGGTAGGCCCAAGGCTATTGTC -GTCGCTGCTGCCATGGCTTTTTCATTGAGGGCCTAAAGTAATCGCGCTAAGAATAAAGGGAAAACGGCGT -CGCCCTCATTTCAACCCCACTCCTACCCCCTTCCTCAACCCCCAAACAAAACAAACAAACTTCCCTGGCT -TCGCACCTGCCTGGGGCCTCGCAGCGGGGCCAGGGCTCCGCCTGCTGATCGGGGGTTGTGAGCAGCGCGG -CCTGGACGCGGGGCACTCTCAGGGGGCTGTGTCTGCGTGTCAGTTTGTGTCTGTCTCGGGGAATGTGTGT -CTGTGGCCCAAGCAGGTGACAGGAAGAGATGGGGGGCCTCAACCAACTTAGTGACTTGTTTAGAAAAAAA -AGACAAAAAAGTAAAAATAAAAACAAAAAAGTTGGAAGGCAGAAACCATTAAAAAACAAAAAGCCAACAA -CCCAGAAAGGTTTAAAAAACATAAGGAAAAAAAAGACAAATTAAAGGAGGGGCTAGGGGAGAAGCTGCAG -CTGGAGCTGAAGGCTCGATCTTGTGAACCCCTAAATCCGCTCCCTCCTAACAGCACGGATTCTCTTGGGG -CTCTTCTTCAGGGAAGAGTAGGGACGCCGTTCCAGCCCCCCTTCCTATCGTGTCCTTGGGTTCGGGTCAC -TGCGGCGACGACTTGCTCAGACTGTCCCGGCGGCCGGAGTGACTTTCTCGCACCCCCTTGCCTGTCCCAC -CTCGCTGAACACCATCCCGCCATTAGCGCATCGGAACCCCACACAGTTGCAACTCCCAACCCCGAATCTT -TGCAGCCGTTCGGCCCTGAAAGATGCCCTATCCATGAGATGCCTTTTCATCTGCAAACTCTGCAAAATGT -GTCTCATGTTTCGCAACTCTTTTTTTCCCCCTCGCTCCCGCCTACCCCGTCGGCATTTTCTTCTTCCACC -AGCTTTTACTGAACTTTTTGGCACTGCTTTGGATTGGGGTCAATTGCAGTCCACGTAACTGGCTGCAGAG -AAATCTACCGAGCAAGGAAAAGGCACACACACACGTTTGCAGGGGTGTCTCGGTTTGCATTTCTGTTGGA -ATGATCCGAACTGGACTCACATCCTGTATGGTGGATGGACTGTATATTGAGGGTTCCATTCTTCGCGCAG -TTTAGACATCTCTGTTTTGATTCTTTGTTGTTGTTTTTATTTTAAAAGGCACAAACTCTAGATATTAGTT -GAATGTTGAGGCTTTAACTTTTTCGGTGTCTTTCTACAACTGTGTTCTGTGACTCAATTGTATCGTGTTA -ATATCAGTGCAGACTGTCTCCTCTACGTGACCGTATAATGTTTTTCTCTTCTTGTAGTCTCTATGGCGTG -TCTTTATGGTGTAATAAGGTTCTCACGGGTTCAATCTTTTGTGTTTAGAGAGGCCACGGTTCAGACAATG -GTATATATTTTTGTTATCAGGTGCATGTCTGTCTGATTTCTTTTTTTTTCCTGTTGGACTATGTTTGTGA -ACATAATTGTCATAAGTTATGTTTCAGATTTTTGAATTTATTTATATGTGTTATAATGAATGCTTCTATT -TAAAAGGGAAATATTTCTACATGTGCATATAGTTTTCCAAGAGTGTACCATTAACTTGATTGTTGATAAT -AAAAACAAAAAGCAAGTCTA ->ENST00000226574 CDS=468-3377 gene_version=7 transcript_version=4 gene_source=ensembl_havana gene_biotype=protein_coding transcript_name=NFKB1-001 transcript_source=ensembl_havana transcript_biotype=protein_coding tag=basic ccds_id=CCDS3657 havana_transcript=OTTHUMT00000253801 havana_transcript_version=1 protein_id=ENSP00000226574 -GTGAGAGAGTGAGCGAGACAGAAAGAGAGAGAAGTGCACCAGCGAGCCGGGGCAGGAAGAGGAGGTTTCG -CCACCGGAGCGGCCCGGCGACGCGCTGACAGCTTCCCCTGCCCTTCCCGTCGGTCGGGCCGCCAGCCGCC -GCAGCCCTCGGCCTGCACGCAGCCACCGGCCCCGCTCCCGGAGCCCAGCGCCGCCGAGGCCGCAGCCGCC -CGGCCAGTAAGGCGGCGCCGCCGCCCGGCCACCGCGCGCCCTGCGCTTCCCTCCGCCCGCGCTGCGGCCA -TGGCGCGGCGCTGACTGGCCTGGCCCGGCCCCGCCGCGCTCCCGCTCGCCCCGACCCGCACTCGGGCCCG -CCCGGGCTCCGGCCTGCCGCCGCCTCTTCCTTCTCCAGCCGGCAGGCCCGCGCCGCTTAGGAGGGAGAGC -CCACCCGCGCCAGGAGGCCGAACGCGGACTCGCCACCCGGCTTCAGAATGGCAGAAGATGATCCATATTT -GGGAAGGCCTGAACAAATGTTTCATTTGGATCCTTCTTTGACTCATACAATATTTAATCCAGAAGTATTT -CAACCACAGATGGCACTGCCAACAGCAGATGGCCCATACCTTCAAATATTAGAGCAACCTAAACAGAGAG -GATTTCGTTTCCGTTATGTATGTGAAGGCCCATCCCATGGTGGACTACCTGGTGCCTCTAGTGAAAAGAA -CAAGAAGTCTTACCCTCAGGTCAAAATCTGCAACTATGTGGGACCAGCAAAGGTTATTGTTCAGTTGGTC -ACAAATGGAAAAAATATCCACCTGCATGCCCACAGCCTGGTGGGAAAACACTGTGAGGATGGGATCTGCA -CTGTAACTGCTGGACCCAAGGACATGGTGGTCGGCTTCGCAAACCTGGGTATACTTCATGTGACAAAGAA -AAAAGTATTTGAAACACTGGAAGCACGAATGACAGAGGCGTGTATAAGGGGCTATAATCCTGGACTCTTG -GTGCACCCTGACCTTGCCTATTTGCAAGCAGAAGGTGGAGGGGACCGGCAGCTGGGAGATCGGGAAAAAG -AGCTAATCCGCCAAGCAGCTCTGCAGCAGACCAAGGAGATGGACCTCAGCGTGGTGCGGCTCATGTTTAC -AGCTTTTCTTCCGGATAGCACTGGCAGCTTCACAAGGCGCCTGGAACCCGTGGTATCAGACGCCATCTAT -GACAGTAAAGCCCCCAATGCATCCAACTTGAAAATTGTAAGAATGGACAGGACAGCTGGATGTGTGACTG -GAGGGGAGGAAATTTATCTTCTTTGTGACAAAGTTCAGAAAGATGACATCCAGATTCGATTTTATGAAGA -GGAAGAAAATGGTGGAGTCTGGGAAGGATTTGGAGATTTTTCCCCCACAGATGTTCATAGACAATTTGCC -ATTGTCTTCAAAACTCCAAAGTATAAAGATATTAATATTACAAAACCAGCCTCTGTGTTTGTCCAGCTTC -GGAGGAAATCTGACTTGGAAACTAGTGAACCAAAACCTTTCCTCTACTATCCTGAAATCAAAGATAAAGA -AGAAGTGCAGAGGAAACGTCAGAAGCTCATGCCCAATTTTTCGGATAGTTTCGGCGGTGGTAGTGGTGCT -GGAGCTGGAGGCGGAGGCATGTTTGGTAGTGGCGGTGGAGGAGGGGGCACTGGAAGTACAGGTCCAGGGT -ATAGCTTCCCACACTATGGATTTCCTACTTATGGTGGGATTACTTTCCATCCTGGAACTACTAAATCTAA -TGCTGGGATGAAGCATGGAACCATGGACACTGAATCTAAAAAGGACCCTGAAGGTTGTGACAAAAGTGAT -GACAAAAACACTGTAAACCTCTTTGGGAAAGTTATTGAAACCACAGAGCAAGATCAGGAGCCCAGCGAGG -CCACCGTTGGGAATGGTGAGGTCACTCTAACGTATGCAACAGGAACAAAAGAAGAGAGTGCTGGAGTTCA -GGATAACCTCTTTCTAGAGAAGGCTATGCAGCTTGCAAAGAGGCATGCCAATGCCCTTTTCGACTACGCG -GTGACAGGAGACGTGAAGATGCTGCTGGCCGTCCAGCGCCATCTCACTGCTGTGCAGGATGAGAATGGGG -ACAGTGTCTTACACTTAGCAATCATCCACCTTCATTCTCAACTTGTGAGGGATCTACTAGAAGTCACATC -TGGTTTGATTTCTGATGACATTATCAACATGAGAAATGATCTGTACCAGACGCCCTTGCACTTGGCAGTG -ATCACTAAGCAGGAAGATGTGGTGGAGGATTTGCTGAGGGCTGGGGCCGACCTGAGCCTTCTGGACCGCT -TGGGTAACTCTGTTTTGCACCTAGCTGCCAAAGAAGGACATGATAAAGTTCTCAGTATCTTACTCAAGCA -CAAAAAGGCAGCACTACTTCTTGACCACCCCAACGGGGACGGTCTGAATGCCATTCATCTAGCCATGATG -AGCAATAGCCTGCCATGTTTGCTGCTGCTGGTGGCCGCTGGGGCTGACGTCAATGCTCAGGAGCAGAAGT -CCGGGCGCACAGCACTGCACCTGGCTGTGGAGCACGACAACATCTCATTGGCAGGCTGCCTGCTCCTGGA -GGGTGATGCCCATGTGGACAGTACTACCTACGATGGAACCACACCCCTGCATATAGCAGCTGGGAGAGGG -TCCACCAGGCTGGCAGCTCTTCTCAAAGCAGCAGGAGCAGATCCCCTGGTGGAGAACTTTGAGCCTCTCT -ATGACCTGGATGACTCTTGGGAAAATGCAGGAGAGGATGAAGGAGTTGTGCCTGGAACCACGCCTCTAGA -TATGGCCACCAGCTGGCAGGTATTTGACATATTAAATGGGAAACCATATGAGCCAGAGTTTACATCTGAT -GATTTACTAGCACAAGGAGACATGAAACAGCTGGCTGAAGATGTGAAGCTGCAGCTGTATAAGTTACTAG -AAATTCCTGATCCAGACAAAAACTGGGCTACTCTGGCGCAGAAATTAGGTCTGGGGATACTTAATAATGC -CTTCCGGCTGAGTCCTGCTCCTTCCAAAACACTTATGGACAACTATGAGGTCTCTGGGGGTACAGTCAGA -GAGCTGGTGGAGGCCCTGAGACAAATGGGCTACACCGAAGCAATTGAAGTGATCCAGGCAGCCTCCAGCC -CAGTGAAGACCACCTCTCAGGCCCACTCGCTGCCTCTCTCGCCTGCCTCCACAAGGCAGCAAATAGACGA -GCTCCGAGACAGTGACAGTGTCTGCGACAGCGGCGTGGAGACATCCTTCCGCAAACTCAGCTTTACCGAG -TCTCTGACCAGTGGTGCCTCACTGCTAACTCTCAACAAAATGCCCCATGATTATGGGCAGGAAGGACCTC -TAGAAGGCAAAATTTAGCCTGCTGACAATTTCCCACACCGTGTAAACCAAAGCCCTAAAATTCCACTGCG -TTGTCCACAAGACAGAAGCTGAAGTGCATCCAAAGGTGCTCAGAGAGCCGGCCCGCCTGAATCATTCTCG -ATTTAACTCGAGACCTTTTCAACTTGGCTTCCTTTCTTGGTTCATAAATGAATTTTAGTTTGGTTCACTT -ACAGATAGTATCTAGCAATCACAACACTGGCTGAGCGGATGCATCTGGGGATGAGGTTGCTTACTAAGCT -TTGCCAGCTGCTGCTGGATCACAGCTGCTTTCTGTTGTCATTGCTGTTGTCCCTCTGCTACGTTCCTATT -GTCATTAAAGGTATCACGGTCGCCACCTGGCATTCCTTCTGACCACAGCATCATTTTGCATTCAAATTAA -GGGTTAAGAAAAGAGATATTTTAAAATGAGAGTCACTTGATGTGCCATTTTAAAAAAAAAGGCATATTGC -TTTTTCTAATGTGGTTATTTCTCTGATTTGCAAAAAAAAAAAAAAAAAAAATACTTGTCAATATTTAAAC -ATGGTTACAATCATTGCTGAAAATGGTATTTTCCCCCTTTTCTGCATTTTGCTATTGTAAATATGTTTTT -TAGATCAAATACTTTAAAGGAAAAAATGTTGGATTTATAAATGCTATTTTTTATTTTACTTTTATAATAA -AAGGAAAAGCAAATTGATGACCTCA ->ENST00000206249 CDS=363-2150 gene_version=17 transcript_version=3 gene_source=ensembl_havana gene_biotype=protein_coding transcript_name=ESR1-001 transcript_source=ensembl_havana transcript_biotype=protein_coding tag=basic ccds_id=CCDS5234 havana_transcript=OTTHUMT00000043308 havana_transcript_version=1 protein_id=ENSP00000206249 -GAGTTGTGCCTGGAGTGATGTTTAAGCCAATGTCAGGGCAAGGCAACAGTCCCTGGCCGTCCTCCAGCAC -CTTTGTAATGCATATGAGCTCGGGAGACCAGTACTTAAAGTTGGAGGCCCGGGAGCCCAGGAGCTGGCGG -AGGGCGTTCGTCCTGGGACTGCACTTGCTCCCGTCGGGTCGCCCGGCTTCACCGGACCCGCAGGCTCCCG -GGGCAGGGCCGGGGCCAGAGCTCGCGTGTCGGCGGGACATGCGCTGCGTCGCCTCTAACCTCGGGCTGTG -CTCTTTTTCCAGGTGGCCCGCCGGTTTCTGAGCCTTCTGCCCTGCGGGGACACGGTCTGCACCCTGCCCG -CGGCCACGGACCATGACCATGACCCTCCACACCAAAGCATCTGGGATGGCCCTACTGCATCAGATCCAAG -GGAACGAGCTGGAGCCCCTGAACCGTCCGCAGCTCAAGATCCCCCTGGAGCGGCCCCTGGGCGAGGTGTA -CCTGGACAGCAGCAAGCCCGCCGTGTACAACTACCCCGAGGGCGCCGCCTACGAGTTCAACGCCGCGGCC -GCCGCCAACGCGCAGGTCTACGGTCAGACCGGCCTCCCCTACGGCCCCGGGTCTGAGGCTGCGGCGTTCG -GCTCCAACGGCCTGGGGGGTTTCCCCCCACTCAACAGCGTGTCTCCGAGCCCGCTGATGCTACTGCACCC -GCCGCCGCAGCTGTCGCCTTTCCTGCAGCCCCACGGCCAGCAGGTGCCCTACTACCTGGAGAACGAGCCC -AGCGGCTACACGGTGCGCGAGGCCGGCCCGCCGGCATTCTACAGGCCAAATTCAGATAATCGACGCCAGG -GTGGCAGAGAAAGATTGGCCAGTACCAATGACAAGGGAAGTATGGCTATGGAATCTGCCAAGGAGACTCG -CTACTGTGCAGTGTGCAATGACTATGCTTCAGGCTACCATTATGGAGTCTGGTCCTGTGAGGGCTGCAAG -GCCTTCTTCAAGAGAAGTATTCAAGGACATAACGACTATATGTGTCCAGCCACCAACCAGTGCACCATTG -ATAAAAACAGGAGGAAGAGCTGCCAGGCCTGCCGGCTCCGTAAATGCTACGAAGTGGGAATGATGAAAGG -TGGGATACGAAAAGACCGAAGAGGAGGGAGAATGTTGAAACACAAGCGCCAGAGAGATGATGGGGAGGGC -AGGGGTGAAGTGGGGTCTGCTGGAGACATGAGAGCTGCCAACCTTTGGCCAAGCCCGCTCATGATCAAAC -GCTCTAAGAAGAACAGCCTGGCCTTGTCCCTGACGGCCGACCAGATGGTCAGTGCCTTGTTGGATGCTGA -GCCCCCGATACTCTATTCCGAGTATGATCCTACCAGACCCTTCAGTGAAGCTTCGATGATGGGCTTACTG -ACCAACCTGGCAGACAGGGAGCTGGTTCACATGATCAACTGGGCGAAGAGGGTGCCAGGCTTTGTGGATT -TGACCCTCCATGATCAGGTCCACCTTCTAGAATGTGCCTGGCTAGAGATCCTGATGATTGGTCTCGTCTG -GCGCTCCATGGAGCACCCAGGGAAGCTACTGTTTGCTCCTAACTTGCTCTTGGACAGGAACCAGGGAAAA -TGTGTAGAGGGCATGGTGGAGATCTTCGACATGCTGCTGGCTACATCATCTCGGTTCCGCATGATGAATC -TGCAGGGAGAGGAGTTTGTGTGCCTCAAATCTATTATTTTGCTTAATTCTGGAGTGTACACATTTCTGTC -CAGCACCCTGAAGTCTCTGGAAGAGAAGGACCATATCCACCGAGTCCTGGACAAGATCACAGACACTTTG -ATCCACCTGATGGCCAAGGCAGGCCTGACCCTGCAGCAGCAGCACCAGCGGCTGGCCCAGCTCCTCCTCA -TCCTCTCCCACATCAGGCACATGAGTAACAAAGGCATGGAGCATCTGTACAGCATGAAGTGCAAGAACGT -GGTGCCCCTCTATGACCTGCTGCTGGAGATGCTGGACGCCCACCGCCTACATGCGCCCACTAGCCGTGGA -GGGGCATCCGTGGAGGAGACGGACCAAAGCCACTTGGCCACTGCGGGCTCTACTTCATCGCATTCCTTGC -AAAAGTATTACATCACGGGGGAGGCAGAGGGTTTCCCTGCCACGGTCTGAGAGCTCCCTGGCTCCCACAC -GGTTCAGATAATCCCTGCTGCATTTTACCCTCATCATGCACCACTTTAGCCAAATTCTGTCTCCTGCATA -CACTCCGGCATGCATCCAACACCAATGGCTTTCTAGATGAGTGGCCATTCATTTGCTTGCTCAGTTCTTA -GTGGCACATCTTCTGTCTTCTGTTGGGAACAGCCAAAGGGATTCCAAGGCTAAATCTTTGTAACAGCTCT -CTTTCCCCCTTGCTATGTTACTAAGCGTGAGGATTCCCGTAGCTCTTCACAGCTGAACTCAGTCTATGGG -TTGGGGCTCAGATAACTCTGTGCATTTAAGCTACTTGTAGAGACCCAGGCCTGGAGAGTAGACATTTTGC -CTCTGATAAGCACTTTTTAAATGGCTCTAAGAATAAGCCACAGCAAAGAATTTAAAGTGGCTCCTTTAAT -TGGTGACTTGGAGAAAGCTAGGTCAAGGGTTTATTATAGCACCCTCTTGTATTCCTATGGCAATGCATCC -TTTTATGAAAGTGGTACACCTTAAAGCTTTTATATGACTGTAGCAGAGTATCTGGTGATTGTCAATTCAT -TCCCCCTATAGGAATACAAGGGGCACACAGGGAAGGCAGATCCCCTAGTTGGCAAGACTATTTTAACTTG -ATACACTGCAGATTCAGATGTGCTGAAAGCTCTGCCTCTGGCTTTCCGGTCATGGGTTCCAGTTAATTCA -TGCCTCCCATGGACCTATGGAGAGCAGCAAGTTGATCTTAGTTAAGTCTCCCTATATGAGGGATAAGTTC -CTGATTTTTGTTTTTATTTTTGTGTTACAAAAGAAAGCCCTCCCTCCCTGAACTTGCAGTAAGGTCAGCT -TCAGGACCTGTTCCAGTGGGCACTGTACTTGGATCTTCCCGGCGTGTGTGTGCCTTACACAGGGGTGAAC -TGTTCACTGTGGTGATGCATGATGAGGGTAAATGGTAGTTGAAAGGAGCAGGGGCCCTGGTGTTGCATTT -AGCCCTGGGGCATGGAGCTGAACAGTACTTGTGCAGGATTGTTGTGGCTACTAGAGAACAAGAGGGAAAG -TAGGGCAGAAACTGGATACAGTTCTGAGGCACAGCCAGACTTGCTCAGGGTGGCCCTGCCACAGGCTGCA -GCTACCTAGGAACATTCCTTGCAGACCCCGCATTGCCCTTTGGGGGTGCCCTGGGATCCCTGGGGTAGTC -CAGCTCTTCTTCATTTCCCAGCGTGGCCCTGGTTGGAAGAAGCAGCTGTCACAGCTGCTGTAGACAGCTG -TGTTCCTACAATTGGCCCAGCACCCTGGGGCACGGGAGAAGGGTGGGGACCGTTGCTGTCACTACTCAGG -CTGACTGGGGCCTGGTCAGATTACGTATGCCCTTGGTGGTTTAGAGATAATCCAAAATCAGGGTTTGGTT -TGGGGAAGAAAATCCTCCCCCTTCCTCCCCCGCCCCGTTCCCTACCGCCTCCACTCCTGCCAGCTCATTT -CCTTCAATTTCCTTTGACCTATAGGCTAAAAAAGAAAGGCTCATTCCAGCCACAGGGCAGCCTTCCCTGG -GCCTTTGCTTCTCTAGCACAATTATGGGTTACTTCCTTTTTCTTAACAAAAAAGAATGTTTGATTTCCTC -TGGGTGACCTTATTGTCTGTAATTGAAACCCTATTGAGAGGTGATGTCTGTGTTAGCCAATGACCCAGGT -GAGCTGCTCGGGCTTCTCTTGGTATGTCTTGTTTGGAAAAGTGGATTTCATTCATTTCTGATTGTCCAGT -TAAGTGATCACCAAAGGACTGAGAATCTGGGAGGGCAAAAAAAAAAAAAAAGTTTTTATGTGCACTTAAA -TTTGGGGACAATTTTATGTATCTGTGTTAAGGATATGTTTAAGAACATAATTCTTTTGTTGCTGTTTGTT -TAAGAAGCACCTTAGTTTGTTTAAGAAGCACCTTATATAGTATAATATATATTTTTTTGAAATTACATTG -CTTGTTTATCAGACAATTGAATGTAGTAATTCTGTTCTGGATTTAATTTGACTGGGTTAACATGCAAAAA -CCAAGGAAAAATATTTAGTTTTTTTTTTTTTTTTTGTATACTTTTCAAGCTACCTTGTCATGTATACAGT -CATTTATGCCTAAAGCCTGGTGATTATTCATTTAAATGAAGATCACATTTCATATCAACTTTTGTATCCA -CAGTAGACAAAATAGCACTAATCCAGATGCCTATTGTTGGATACTGAATGACAGACAATCTTATGTAGCA -AAGATTATGCCTGAAAAGGAAAATTATTCAGGGCAGCTAATTTTGCTTTTACCAAAATATCAGTAGTAAT -ATTTTTGGACAGTAGCTAATGGGTCAGTGGGTTCTTTTTAATGTTTATACTTAGATTTTCTTTTAAAAAA -ATTAAAATAAAACAAAAAAAAATTTCTAGGACTAGACGATGTAATACCAGCTAAAGCCAAACAATTATAC -AGTGGAAGGTTTTACATTATTCATCCAATGTGTTTCTATTCATGTTAAGATACTACTACATTTGAAGTGG -GCAGAGAACATCAGATGATTGAAATGTTCGCCCAGGGGTCTCCAGCAACTTTGGAAATCTCTTTGTATTT -TTACTTGAAGTGCCACTAATGGACAGCAGATATTTTCTGGCTGATGTTGGTATTGGGTGTAGGAACATGA -TTTAAAAAAAAACTCTTGCCTCTGCTTTCCCCCACTCTGAGGCAAGTTAAAATGTAAAAGATGTGATTTA -TCTGGGGGGCTCAGGTATGGTGGGGAAGTGGATTCAGGAATCTGGGGAATGGCAAATATATTAAGAAGAG -TATTGAAAGTATTTGGAGGAAAATGGTTAATTCTGGGTGTGCACCAGGGTTCAGTAGAGTCCACTTCTGC -CCTGGAGACCACAAATCAACTAGCTCCATTTACAGCCATTTCTAAAATGGCAGCTTCAGTTCTAGAGAAG -AAAGAACAACATCAGCAGTAAAGTCCATGGAATAGCTAGTGGTCTGTGTTTCTTTTCGCCATTGCCTAGC -TTGCCGTAATGATTCTATAATGCCATCATGCAGCAATTATGAGAGGCTAGGTCATCCAAAGAGAAGACCC -TATCAATGTAGGTTGCAAAATCTAACCCCTAAGGAAGTGCAGTCTTTGATTTGATTTCCCTAGTAACCTT -GCAGATATGTTTAACCAAGCCATAGCCCATGCCTTTTGAGGGCTGAACAAATAAGGGACTTACTGATAAT -TTACTTTTGATCACATTAAGGTGTTCTCACCTTGAAATCTTATACACTGAAATGGCCATTGATTTAGGCC -ACTGGCTTAGAGTACTCCTTCCCCTGCATGACACTGATTACAAATACTTTCCTATTCATACTTTCCAATT -ATGAGATGGACTGTGGGTACTGGGAGTGATCACTAACACCATAGTAATGTCTAATATTCACAGGCAGATC -TGCTTGGGGAAGCTAGTTATGTGAAAGGCAAATAGAGTCATACAGTAGCTCAAAAGGCAACCATAATTCT -CTTTGGTGCAGGTCTTGGGAGCGTGATCTAGATTACACTGCACCATTCCCAAGTTAATCCCCTGAAAACT -TACTCTCAACTGGAGCAAATGAACTTTGGTCCCAAATATCCATCTTTTCAGTAGCGTTAATTATGCTCTG -TTTCCAACTGCATTTCCTTTCCAATTGAATTAAAGTGTGGCCTCGTTTTTAGTCATTTAAAATTGTTTTC -TAAGTAATTGCTGCCTCTATTATGGCACTTCAATTTTGCACTGTCTTTTGAGATTCAAGAAAAATTTCTA -TTCTTTTTTTTGCATCCAATTGTGCCTGAACTTTTAAAATATGTAAATGCTGCCATGTTCCAAACCCATC -GTCAGTGTGTGTGTTTAGAGCTGTGCACCCTAGAAACAACATATTGTCCCATGAGCAGGTGCCTGAGACA -CAGACCCCTTTGCATTCACAGAGAGGTCATTGGTTATAGAGACTTGAATTAATAAGTGACATTATGCCAG -TTTCTGTTCTCTCACAGGTGATAAACAATGCTTTTTGTGCACTACATACTCTTCAGTGTAGAGCTCTTGT -TTTATGGGAAAAGGCTCAAATGCCAAATTGTGTTTGATGGATTAATATGCCCTTTTGCCGATGCATACTA -TTACTGATGTGACTCGGTTTTGTCGCAGCTTTGCTTTGTTTAATGAAACACACTTGTAAACCTCTTTTGC -ACTTTGAAAAAGAATCCAGCGGGATGCTCGAGCACCTGTAAACAATTTTCTCAACCTATTTGATGTTCAA -ATAAAGAATTAAACT ->ENST00000218089 CDS=511-4317 gene_version=14 transcript_version=9 gene_source=ensembl_havana gene_biotype=protein_coding transcript_name=STAG2-006 transcript_source=ensembl_havana transcript_biotype=protein_coding tag=basic ccds_id=CCDS43990 havana_transcript=OTTHUMT00000106726 havana_transcript_version=2 protein_id=ENSP00000218089 -GTGGCCGACAGATGGCGCCTGCGCGTTCCATTCGCCTCCAAGTCGCCGAAGAGCGAACACCCCAAACAAT -CCCGAAGCGCCACCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAACCCCGC -CGGATCCGACCGCCACTTTCAAAACCCCCCACCGCTCTAGAACCGCGGGAGCTTCCGTCCCTGAGTAGAA -TTCGAGGGTGTAAAGAAGAGGAAGGGGAAAAATATCTTGTACCAGCCCAGGGGTGAAGAAGCCCCCGGCC -TGAGAAAGAAGGAGGAGTGGGGGAGGCGAACAGTCTCGTTGCTGCCTCTGTGTACGCTGAGGGGGGAGGT -GGCCACCGAGTACTAAATTCACTTGGGAATAAAAGAAAAACATAAGAAAATTATAAGAGAAAGGAATTGT -CTTAGAAGAAAGAAGGCAAGCCACCATTTTACCCACGTAAATATATGAATATATTTCTGACATTGAGGTG -TTCCAGAAGATGATAAAGAAATGATAGCAGCTCCAGAAATACCAACTGATTTTAATCTACTACAGGAGTC -AGAAACACATTTTTCTTCTGACACAGATTTTGAAGATATCGAAGGAAAAAACCAAAAGCAAGGCAAAGGC -AAAACTTGTAAAAAAGGCAAAAAGGGCCCAGCAGAAAAGGGCAAAGGTGGAAATGGAGGAGGAAAACCTC -CTTCTGGTCCAAACCGAATGAATGGTCATCACCAACAGAATGGAGTGGAAAACATGATGTTGTTTGAAGT -TGTTAAAATGGGCAAGAGTGCTATGCAGTCGGTGGTAGATGATTGGATAGAATCATACAAGCATGACCGA -GATATAGCACTTCTTGACCTTATCAACTTTTTTATTCAGTGTTCAGGCTGTAAAGGAGTTGTCACAGCAG -AAATGTTTAGACATATGCAGAACTCTGAGATAATTCGAAAAATGACTGAAGAATTCGATGAGGATAGTGG -AGATTATCCACTTACCATGGCTGGTCCTCAGTGGAAGAAGTTCAAATCCAGTTTTTGTGAATTCATTGGC -GTGTTAGTACGGCAATGTCAATATAGTATCATATATGATGAGTATATGATGGATACAGTCATTTCACTTC -TTACAGGATTGTCTGACTCACAAGTCAGAGCATTTCGACATACAAGCACCCTGGCAGCTATGAAGTTGAT -GACAGCTTTGGTGAATGTGGCACTAAATCTTAGCATTAATATGGATAATACACAAAGACAATATGAAGCA -GAACGGAATAAAATGATTGGAAAACGAGCCAATGAGAGGCTAGAACTCCTGCTACAAAAGCGGAAAGAGC -TTCAGGAAAATCAAGATGAAATAGAAAATATGATGAATGCAATATTTAAAGGAGTGTTTGTACATAGATA -CCGTGATGCGATAGCTGAAATTCGAGCTATTTGCATTGAAGAGATTGGCATTTGGATGAAGATGTATAGT -GATGCCTTTCTTAATGACAGTTATTTAAAATATGTTGGTTGGACTATGCATGATAAGCAAGGTGAAGTAA -GACTCAAATGTCTTACTGCTCTACAAGGGCTTTATTATAACAAAGAGCTTAATTCCAAACTGGAACTTTT -TACCAGTCGGTTCAAGGATAGAATTGTGTCTATGACCCTTGACAAAGAATATGATGTTGCAGTACAAGCA -ATAAAATTACTCACTCTTGTTTTACAGAGTAGTGAAGAAGTTCTCACTGCAGAAGATTGTGAAAATGTCT -ATCATCTGGTTTATTCAGCTCACCGGCCAGTAGCAGTAGCAGCTGGAGAATTTCTCTACAAAAAGCTCTT -CAGTCGTAGAGATCCAGAGGAGGATGGAATGATGAAAAGAAGAGGAAGACAAGGTCCAAATGCCAACCTT -GTTAAGACATTGGTTTTTTTCTTTCTAGAAAGTGAGTTACATGAGCATGCAGCATACCTTGTGGATAGCA -TGTGGGACTGTGCTACTGAGCTGCTGAAAGACTGGGAATGTATGAATAGCTTGTTACTGGAAGAGCCACT -TAGTGGAGAGGAAGCACTAACAGATAGGCAAGAGAGTGCTCTGATTGAAATAATGCTTTGTACCATTAGA -CAAGCGGCTGAATGTCATCCTCCCGTGGGAAGAGGGACAGGAAAAAGGGTGCTTACAGCAAAGGAGAAGA -AGACACAGTTGGATGATAGGACAAAAATCACTGAGCTTTTTGCCGTGGCCCTTCCTCAGTTATTAGCAAA -ATACTCTGTAGATGCAGAAAAGGTGACTAACTTGTTGCAGTTGCCTCAGTACTTTGATTTGGAAATATAT -ACCACTGGACGATTAGAAAAGCATTTGGATGCCTTATTGCGACAGATCCGGAATATTGTAGAGAAGCACA -CAGATACAGATGTTTTGGAAGCATGTTCTAAAACTTACCATGCACTCTGTAATGAAGAGTTCACAATCTT -CAACAGAGTAGATATTTCAAGAAGTCAACTGATAGATGAATTGGCAGATAAATTTAACCGGCTTCTTGAA -GATTTTCTGCAAGAGGGTGAAGAACCTGATGAAGATGATGCATATCAGGTATTGTCAACATTGAAGAGGA -TCACTGCTTTTCATAATGCCCATGACCTTTCAAAGTGGGATTTATTTGCTTGTAATTACAAACTCTTGAA -AACTGGAATCGAAAATGGAGACATGCCTGAGCAGATTGTTATTCACGCACTGCAGTGTACTCACTATGTA -ATCCTTTGGCAACTTGCTAAGATAACTGAAAGCAGCTCTACAAAGGAGGACTTGCTGCGTTTAAAGAAAC -AAATGAGAGTATTTTGTCAGATATGTCAACATTACCTGACCAACGTGAATACTACTGTTAAGGAACAGGC -CTTCACTATTCTGTGTGATATTTTGATGATCTTCAGCCATCAGATTATGTCAGGAGGGCGTGACATGTTA -GAGCCATTAGTGTATACCCCTGATTCTTCATTGCAGTCTGAGTTGCTCAGCTTTATTTTGGATCATGTCT -TCATTGAACAGGATGATGATAATAATAGTGCAGATGGTCAGCAAGAGGATGAAGCCAGTAAAATTGAAGC -TCTGCACAAGAGAAGAAATTTACTTGCAGCATTTTGTAAGCTAATTGTATATACTGTGGTGGAGATGAAT -ACAGCTGCAGATATCTTCAAACAGTATATGAAGTATTATAATGACTATGGAGATATCATCAAAGAAACAA -TGAGTAAAACAAGGCAGATAGACAAAATTCAGTGTGCTAAGACCCTTATTCTCAGTCTGCAACAGCTTTT -TAATGAAATGATACAAGAAAATGGCTATAATTTTGATAGATCATCCTCTACATTTAGTGGCATAAAAGAA -CTTGCTCGACGTTTTGCTTTAACTTTTGGACTTGATCAGTTGAAAACAAGAGAAGCCATTGCCATGCTAC -ACAAAGATGGCATAGAATTTGCTTTTAAAGAGCCTAATCCGCAAGGGGAGAGCCATCCACCTTTAAATTT -GGCATTTCTTGATATTCTGAGTGAATTTTCTTCTAAACTACTTCGACAAGACAAAAGAACAGTGTATGTT -TACTTGGAAAAGTTCATGACCTTTCAGATGTCACTCCGAAGAGAGGATGTGTGGCTTCCACTGATGTCTT -ACCGAAATTCTTTGCTAGCTGGTGGTGATGATGACACCATGTCAGTCATTAGTGGAATCAGCAGCCGGGG -GTCAACAGTACGGAGTAAAAAATCAAAACCATCTACAGGAAAACGGAAAGTGGTTGAGGGCATGCAGCTT -TCACTCACTGAAGAAAGTAGTAGTAGTGACAGTATGTGGTTAAGCAGAGAACAAACACTGCACACCCCTG -TTATGATGCAGACACCACAACTCACCTCCACTATTATGAGAGAGCCCAAAAGATTACGGCCTGAGGATAG -CTTCATGAGTGTTTATCCAATGCAGACTGAACATCATCAAACACCTCTTGATTATAACACGCAGGTAACA -TGGATGTTAGCTCAAAGACAACAAGAGGAAGCAAGGCAACAGCAGGAGAGAGCAGCAATGAGCTATGTTA -AACTGCGAACTAATCTTCAGCATGCCATTCGGCGTGGCACAAGCCTAATGGAAGATGATGAAGAGCCAAT -TGTGGAAGATGTTATGATGTCCTCAGAAGGGAGGATTGAGGATCTTAATGAGGGAATGGATTTTGACACC -ATGGATATAGATTTGCCACCATCAAAGAACAGACGAGAGAGAACAGAACTGAAGCCTGATTTCTTTGATC -CAGCTTCAATTATGGATGAATCAGTTCTTGGAGTGTCAATGTTTTAATACCAGTACACAATTAAATCTGT -GGTGAAGTCATTTTCTAAGTGGAAGAGGAAATTTTAAAGTGTGGTAGATACAGTGAAATTCTGTACAGAT -TTTTCTCTAAGGAGAATATGACATGCTTATGCTTACCAAGATCAAGTGCATTGAGGGGCAGTTTTGTTTG -CCTGAATAAACGTAAAGGACAAGTAAACAATTTGATGATAAGCTACAGTTTTTCTTAGAAAGTAAATATT -TTATTTATGCGCTGTTAGTTGGCTTTTGAATCGATTATTTCATGCTTTTTTTTAAAAAAAAAAAAAAACA -AAATAACAATCTGAAGAGGCATTTGGTACAGATATGAATTCTCTTACATTTATTTACTGGTTGTACTAAA -TAATGATGACCTCTGCTGGATTTCTGTTTACATCCAGAAAACAATGTTAAGGATGTATTTATTCCCCTAC -CCTGAAGAAAGTGTAGGATAGAATTGTTTTTAGCATTCTAAATTTAAATGCTTAAAACGTCAATCAACAA -AACTTTGTTTTAAATATTGTAATTGTGGAGAAAAGTAAACTTATAAGCAGAACTTTTACAATTTTTTCAT -CTAAAAGTATTTTAAGATATTTTTAAAATCCAAGAGCTTCTCTATACTTTTCAGAAATATCCAGATGCAG -TGAACTGCCAGAAGGTAACCAGTCTCAAACATGCTTATCCCATTATCAACCCTGAAAGTTTGCTTGTCCT -TTAAGATAAAAATGTAATGTTGTGATATTCCTTCCAGTAATGCCACTGTATTTTGTCTCCAAATAAAAGA -AGCTTATTGTAGTATGTTTGCAGAAAAATTCTAAACAAAAATTATACAGCTTATTAGAGTGTGGGAATAG -GGATCTAAATTTTAAATAAAATTATATATATATATAAA diff --git a/pgatk/testdata/test_cbioportal_grch37_clinical_sample.txt b/pgatk/testdata/test_cbioportal_grch37_clinical_sample.txt new file mode 100644 index 00000000..573c80c6 --- /dev/null +++ b/pgatk/testdata/test_cbioportal_grch37_clinical_sample.txt @@ -0,0 +1,3 @@ +SAMPLE_ID ANEUPLOIDY_SCORE CANCER_TYPE CANCER_TYPE_DETAILED FRACTION_GENOME_ALTERED MSI_SCORE_MANTIS MSI_SENSOR_SCORE MUTATION_COUNT ONCOTREE_CODE SAMPLE_TYPE SOMATIC_STATUS TBL_SCORE TISSUE_PROSPECTIVE_COLLECTION_INDICATOR TISSUE_RETROSPECTIVE_COLLECTION_INDICATOR TISSUE_SOURCE_SITE TISSUE_SOURCE_SITE_CODE TMB_NONSYNONYMOUS TUMOR_TISSUE_SITE TUMOR_TYPE +TCGA-3C-AAAU-01 19 Breast Cancer Breast Invasive Lobular Carcinoma 0.7787 0.3319 0.55 24 ILC Primary Matched 205 No Yes Columbia University 3C 0.8 Breast Infiltrating Lobular Carcinoma +TCGA-3C-AALJ-01 13 Breast Cancer Breast Invasive Ductal Carcinoma 0.534 0.3266 0.31 28 IDC Primary Matched 365 No Yes Columbia University 3C 0.933333333 Breast Infiltrating Ductal Carcinoma diff --git a/pgatk/testdata/test_cbioportal_grch37_mutations.txt b/pgatk/testdata/test_cbioportal_grch37_mutations.txt new file mode 100644 index 00000000..ada8b6a5 --- /dev/null +++ b/pgatk/testdata/test_cbioportal_grch37_mutations.txt @@ -0,0 +1,12 @@ +Hugo_Symbol Entrez_Gene_Id Center NCBI_Build Chromosome Start_Position End_Position Strand Consequence Variant_Classification Variant_Type Reference_Allele Tumor_Seq_Allele1 Tumor_Seq_Allele2 dbSNP_RS dbSNP_Val_Status Tumor_Sample_Barcode Matched_Norm_Sample_Barcode Match_Norm_Seq_Allele1 Match_Norm_Seq_Allele2 Tumor_Validation_Allele1 Tumor_Validation_Allele2 Match_Norm_Validation_Allele1 Match_Norm_Validation_Allele2 Verification_Status Validation_Status Mutation_Status Sequencing_Phase Sequence_Source Validation_Method Score BAM_File Sequencer t_ref_count t_alt_count n_ref_count n_alt_count HGVSc HGVSp HGVSp_Short Transcript_ID RefSeq Protein_position Codons Hotspot +CCT6A 908 . GRCh37 7 56130450 56130450 + Splice_Site SNP T T C TCGA-3C-AAAU-01 . . 85 22 122 0 p.X508_splice NM_001762 NM_001762.3 508 +CDC20 991 . GRCh37 1 43827890 43827890 + Missense_Mutation SNP C C T TCGA-3C-AAAU-01 . . 28 17 53 0 p.H410Y NM_001255 NM_001255.2 410 +EP300 2033 . GRCh37 22 41564592 41564593 + Frame_Shift_Ins INS - - AT TCGA-3C-AAAU-01 . . 60 20 90 0 p.M1339Ifs*2 NM_001429 NM_001429.3 1338 +GOLGA2 2801 . GRCh37 9 131029534 131029534 + Missense_Mutation SNP G G A TCGA-3C-AAAU-01 . . 108 5 179 0 p.A167V NM_004486 NM_004486.4 167 +DDAH1 23576 . GRCh37 1 85790568 85790568 + Splice_Site SNP T T A TCGA-3C-AAAU-01 . . 37 8 55 0 p.X200_splice NM_012137 NM_012137.3 200 +GARIN3 153745 . GRCh37 5 156593092 156593092 + Nonsense_Mutation SNP G G A TCGA-3C-AAAU-01 . . 70 23 98 0 p.R30* NM_130899 NM_130899.2 30 +TBX3 6926 . GRCh37 12 115117378 115117380 + Frame_Shift_Del DEL TAT TAT A TCGA-3C-AALJ-01 . . 172 72 85 0 p.Y265Lfs*12 NM_016569 NM_016569.3 265 +PLK2 10769 . GRCh37 5 57752411 57752412 + Frame_Shift_Del DEL CT CT - TCGA-3C-AALJ-01 . . 123 61 95 0 p.R387Sfs*3 NM_006622 NM_006622.3 387 +KHDRBS1 10657 . GRCh37 1 32495940 32495942 + In_Frame_Del DEL GAG GAG - TCGA-3C-AAAU-01 . . p.E143del NM_006559 NM_006559.3 143 +FLNB 2317 . GRCh37 3 58135903 58135904 + In_Frame_Ins INS - - CGT TCGA-3C-AAAU-01 . . p.S2107dup NM_001457 NM_001457.4 2107 +HNRNPH3 3189 . GRCh37 10 70101810 70101810 + Nonstop_Mutation SNP G G C TCGA-3C-AAAU-01 . . p.*347Sext*32 NM_012207 NM_012207.3 347 diff --git a/pgatk/testdata/test_cbioportal_grch38_mutations.txt b/pgatk/testdata/test_cbioportal_grch38_mutations.txt new file mode 100644 index 00000000..466983f5 --- /dev/null +++ b/pgatk/testdata/test_cbioportal_grch38_mutations.txt @@ -0,0 +1,10 @@ +Hugo_Symbol Entrez_Gene_Id Center NCBI_Build Chromosome Start_Position End_Position Strand Consequence Variant_Classification Variant_Type Reference_Allele Tumor_Seq_Allele1 Tumor_Seq_Allele2 dbSNP_RS dbSNP_Val_Status Tumor_Sample_Barcode Matched_Norm_Sample_Barcode Match_Norm_Seq_Allele1 Match_Norm_Seq_Allele2 Tumor_Validation_Allele1 Tumor_Validation_Allele2 Match_Norm_Validation_Allele1 Match_Norm_Validation_Allele2 Verification_Status Validation_Status Mutation_Status Sequencing_Phase Sequence_Source Validation_Method Score BAM_File Sequencer t_ref_count t_alt_count n_ref_count n_alt_count HGVSc HGVSp HGVSp_Short Transcript_ID RefSeq Protein_position Codons Hotspot +CCT6A 908 WUGSC GRCh38 7 56062757 56062757 + Splice_Site SNP T T C TCGA-3C-AAAU-01 NA Somatic 90 23 p.X508_splice NM_001762 NM_001762.4 508 +EP300 2033 WUGSC GRCh38 22 41168588 41168589 + Frame_Shift_Ins INS - - AT TCGA-3C-AAAU-01 NA Somatic 47 18 p.M1339Ifs*2 NM_001429 NM_001429.4 1338 +DDAH1 23576 WUGSC GRCh38 1 85324885 85324885 + Splice_Site SNP T T A TCGA-3C-AAAU-01 NA Somatic 38 8 p.X200_splice NM_012137 NM_012137.4 200 +GARIN3 153745 WUGSC GRCh38 5 157166081 157166081 + Nonsense_Mutation SNP G G A TCGA-3C-AAAU-01 NA Somatic 71 25 p.R30* NM_130899 NM_130899.3 30 +TBX3 6926 WUGSC GRCh38 12 114679575 114679575 + Frame_Shift_Del DEL T T - TCGA-3C-AALJ-01 NA Somatic 120 71 p.Y265Lfs*17 NM_016569 NM_016569.4 265 +PLK2 10769 WUGSC GRCh38 5 58456584 58456585 + Frame_Shift_Del DEL CT CT - TCGA-3C-AALJ-01 NA Somatic 96 48 p.R387Sfs*3 NM_006622 NM_006622.4 387 +KHDRBS1 10657 WUGSC GRCh38 1 32030339 32030341 + In_Frame_Del DEL GAG GAG - TCGA-3C-AAAU-01 NA Somatic p.E143del NM_006559 NM_006559.3 143 +PIK3R1 5295 WUGSC GRCh38 5 68295300 68295301 + In_Frame_Ins INS - - AAAGAC TCGA-3C-AAAU-01 NA Somatic p.K575_T576dup NM_181523 NM_181523.3 575 +TNK2 10188 WUGSC GRCh38 3 195864182 195864182 + Nonstop_Mutation SNP C C G TCGA-3C-AAAU-01 NA Somatic p.*1039Sext*15 NM_005781 NM_005781.5 1039 diff --git a/pgatk/testdata/test_cbioportal_ncbi_grch37.gff b/pgatk/testdata/test_cbioportal_ncbi_grch37.gff new file mode 100644 index 00000000..59cfa53f --- /dev/null +++ b/pgatk/testdata/test_cbioportal_ncbi_grch37.gff @@ -0,0 +1,368 @@ +##gff-version 3 +#!gff-spec-version 1.21 +#!processor NCBI annotwriter +#!genome-build GRCh37.p13 +#!genome-build-accession NCBI_Assembly:GCF_000001405.25 +NC_000001.10 BestRefSeq mRNA 43824652 43828874 . + . ID=rna-NM_001255.3;Parent=gene-CDC20;Dbxref=GeneID:991,Genbank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;Name=NM_001255.3;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=RefSeq Select;transcript_id=NM_001255.3 +NC_000001.10 BestRefSeq exon 43824652 43824677 . + . ID=exon-NM_001255.3-1;Parent=rna-NM_001255.3;Dbxref=GeneID:991,Genbank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=RefSeq Select;transcript_id=NM_001255.3 +NC_000001.10 BestRefSeq exon 43824838 43825067 . + . ID=exon-NM_001255.3-2;Parent=rna-NM_001255.3;Dbxref=GeneID:991,Genbank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=RefSeq Select;transcript_id=NM_001255.3 +NC_000001.10 BestRefSeq exon 43825161 43825309 . + . ID=exon-NM_001255.3-3;Parent=rna-NM_001255.3;Dbxref=GeneID:991,Genbank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=RefSeq Select;transcript_id=NM_001255.3 +NC_000001.10 BestRefSeq exon 43825396 43825492 . + . ID=exon-NM_001255.3-4;Parent=rna-NM_001255.3;Dbxref=GeneID:991,Genbank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=RefSeq Select;transcript_id=NM_001255.3 +NC_000001.10 BestRefSeq exon 43825640 43825768 . + . ID=exon-NM_001255.3-5;Parent=rna-NM_001255.3;Dbxref=GeneID:991,Genbank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=RefSeq Select;transcript_id=NM_001255.3 +NC_000001.10 BestRefSeq exon 43825864 43826060 . + . ID=exon-NM_001255.3-6;Parent=rna-NM_001255.3;Dbxref=GeneID:991,Genbank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=RefSeq Select;transcript_id=NM_001255.3 +NC_000001.10 BestRefSeq exon 43826170 43826264 . + . ID=exon-NM_001255.3-7;Parent=rna-NM_001255.3;Dbxref=GeneID:991,Genbank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=RefSeq Select;transcript_id=NM_001255.3 +NC_000001.10 BestRefSeq exon 43826404 43826632 . + . ID=exon-NM_001255.3-8;Parent=rna-NM_001255.3;Dbxref=GeneID:991,Genbank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=RefSeq Select;transcript_id=NM_001255.3 +NC_000001.10 BestRefSeq exon 43826791 43826916 . + . ID=exon-NM_001255.3-9;Parent=rna-NM_001255.3;Dbxref=GeneID:991,Genbank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=RefSeq Select;transcript_id=NM_001255.3 +NC_000001.10 BestRefSeq exon 43827866 43827983 . + . ID=exon-NM_001255.3-10;Parent=rna-NM_001255.3;Dbxref=GeneID:991,Genbank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=RefSeq Select;transcript_id=NM_001255.3 +NC_000001.10 BestRefSeq exon 43828622 43828874 . + . ID=exon-NM_001255.3-11;Parent=rna-NM_001255.3;Dbxref=GeneID:991,Genbank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=RefSeq Select;transcript_id=NM_001255.3 +NC_000001.10 BestRefSeq CDS 43824887 43825067 . + 0 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,GeneID:991,Genbank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 43825161 43825309 . + 2 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,GeneID:991,Genbank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 43825396 43825492 . + 0 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,GeneID:991,Genbank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 43825640 43825768 . + 2 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,GeneID:991,Genbank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 43825864 43826060 . + 2 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,GeneID:991,Genbank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 43826170 43826264 . + 0 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,GeneID:991,Genbank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 43826404 43826632 . + 1 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,GeneID:991,Genbank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 43826791 43826916 . + 0 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,GeneID:991,Genbank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 43827866 43827983 . + 0 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,GeneID:991,Genbank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 43828622 43828800 . + 2 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,GeneID:991,Genbank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=RefSeq Select +NC_000001.10 BestRefSeq mRNA 85784168 85930842 . - . ID=rna-NM_012137.4;Parent=gene-DDAH1;Dbxref=GeneID:23576,Genbank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;Name=NM_012137.4;Note=The RefSeq transcript has 1 substitution compared to this genomic sequence;exception=annotated by transcript or proteomic data;gbkey=mRNA;gene=DDAH1;inference=similar to RNA sequence%2C mRNA (same species):RefSeq:NM_012137.4;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_012137.4 +NC_000001.10 BestRefSeq exon 85930426 85930842 . - . ID=exon-NM_012137.4-1;Parent=rna-NM_012137.4;Dbxref=GeneID:23576,Genbank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;Note=The RefSeq transcript has 1 substitution compared to this genomic sequence;exception=annotated by transcript or proteomic data;gbkey=mRNA;gene=DDAH1;inference=similar to RNA sequence%2C mRNA (same species):RefSeq:NM_012137.4;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_012137.4 +NC_000001.10 BestRefSeq exon 85824431 85824530 . - . ID=exon-NM_012137.4-2;Parent=rna-NM_012137.4;Dbxref=GeneID:23576,Genbank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;Note=The RefSeq transcript has 1 substitution compared to this genomic sequence;exception=annotated by transcript or proteomic data;gbkey=mRNA;gene=DDAH1;inference=similar to RNA sequence%2C mRNA (same species):RefSeq:NM_012137.4;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_012137.4 +NC_000001.10 BestRefSeq exon 85817189 85817262 . - . ID=exon-NM_012137.4-3;Parent=rna-NM_012137.4;Dbxref=GeneID:23576,Genbank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;Note=The RefSeq transcript has 1 substitution compared to this genomic sequence;exception=annotated by transcript or proteomic data;gbkey=mRNA;gene=DDAH1;inference=similar to RNA sequence%2C mRNA (same species):RefSeq:NM_012137.4;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_012137.4 +NC_000001.10 BestRefSeq exon 85816098 85816217 . - . ID=exon-NM_012137.4-4;Parent=rna-NM_012137.4;Dbxref=GeneID:23576,Genbank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;Note=The RefSeq transcript has 1 substitution compared to this genomic sequence;exception=annotated by transcript or proteomic data;gbkey=mRNA;gene=DDAH1;inference=similar to RNA sequence%2C mRNA (same species):RefSeq:NM_012137.4;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_012137.4 +NC_000001.10 BestRefSeq exon 85790423 85790566 . - . ID=exon-NM_012137.4-5;Parent=rna-NM_012137.4;Dbxref=GeneID:23576,Genbank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;Note=The RefSeq transcript has 1 substitution compared to this genomic sequence;exception=annotated by transcript or proteomic data;gbkey=mRNA;gene=DDAH1;inference=similar to RNA sequence%2C mRNA (same species):RefSeq:NM_012137.4;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_012137.4 +NC_000001.10 BestRefSeq exon 85784168 85787251 . - . ID=exon-NM_012137.4-6;Parent=rna-NM_012137.4;Dbxref=GeneID:23576,Genbank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;Note=The RefSeq transcript has 1 substitution compared to this genomic sequence;exception=annotated by transcript or proteomic data;gbkey=mRNA;gene=DDAH1;inference=similar to RNA sequence%2C mRNA (same species):RefSeq:NM_012137.4;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_012137.4 +NC_000001.10 BestRefSeq CDS 85930426 85930728 . - 0 ID=cds-NP_036269.1;Parent=rna-NM_012137.4;Dbxref=CCDS:CCDS705.1,GeneID:23576,Genbank:NP_036269.1,HGNC:HGNC:2715,MIM:604743;Name=NP_036269.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=DDAH1;product=N(G)%2CN(G)-dimethylarginine dimethylaminohydrolase 1 isoform 1;protein_id=NP_036269.1;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 85824431 85824530 . - 0 ID=cds-NP_036269.1;Parent=rna-NM_012137.4;Dbxref=CCDS:CCDS705.1,GeneID:23576,Genbank:NP_036269.1,HGNC:HGNC:2715,MIM:604743;Name=NP_036269.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=DDAH1;product=N(G)%2CN(G)-dimethylarginine dimethylaminohydrolase 1 isoform 1;protein_id=NP_036269.1;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 85817189 85817262 . - 2 ID=cds-NP_036269.1;Parent=rna-NM_012137.4;Dbxref=CCDS:CCDS705.1,GeneID:23576,Genbank:NP_036269.1,HGNC:HGNC:2715,MIM:604743;Name=NP_036269.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=DDAH1;product=N(G)%2CN(G)-dimethylarginine dimethylaminohydrolase 1 isoform 1;protein_id=NP_036269.1;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 85816098 85816217 . - 0 ID=cds-NP_036269.1;Parent=rna-NM_012137.4;Dbxref=CCDS:CCDS705.1,GeneID:23576,Genbank:NP_036269.1,HGNC:HGNC:2715,MIM:604743;Name=NP_036269.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=DDAH1;product=N(G)%2CN(G)-dimethylarginine dimethylaminohydrolase 1 isoform 1;protein_id=NP_036269.1;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 85790423 85790566 . - 0 ID=cds-NP_036269.1;Parent=rna-NM_012137.4;Dbxref=CCDS:CCDS705.1,GeneID:23576,Genbank:NP_036269.1,HGNC:HGNC:2715,MIM:604743;Name=NP_036269.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=DDAH1;product=N(G)%2CN(G)-dimethylarginine dimethylaminohydrolase 1 isoform 1;protein_id=NP_036269.1;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 85787135 85787251 . - 0 ID=cds-NP_036269.1;Parent=rna-NM_012137.4;Dbxref=CCDS:CCDS705.1,GeneID:23576,Genbank:NP_036269.1,HGNC:HGNC:2715,MIM:604743;Name=NP_036269.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=DDAH1;product=N(G)%2CN(G)-dimethylarginine dimethylaminohydrolase 1 isoform 1;protein_id=NP_036269.1;tag=RefSeq Select +NC_000005.9 BestRefSeq mRNA 57749809 57755913 . - . ID=rna-NM_006622.4;Parent=gene-PLK2;Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;Name=NM_006622.4;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4 +NC_000005.9 BestRefSeq exon 57755517 57755913 . - . ID=exon-NM_006622.4-1;Parent=rna-NM_006622.4;Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4 +NC_000005.9 BestRefSeq exon 57754812 57754919 . - . ID=exon-NM_006622.4-2;Parent=rna-NM_006622.4;Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4 +NC_000005.9 BestRefSeq exon 57754552 57754668 . - . ID=exon-NM_006622.4-3;Parent=rna-NM_006622.4;Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4 +NC_000005.9 BestRefSeq exon 57754226 57754355 . - . ID=exon-NM_006622.4-4;Parent=rna-NM_006622.4;Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4 +NC_000005.9 BestRefSeq exon 57753911 57753998 . - . ID=exon-NM_006622.4-5;Parent=rna-NM_006622.4;Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4 +NC_000005.9 BestRefSeq exon 57753315 57753410 . - . ID=exon-NM_006622.4-6;Parent=rna-NM_006622.4;Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4 +NC_000005.9 BestRefSeq exon 57753008 57753206 . - . ID=exon-NM_006622.4-7;Parent=rna-NM_006622.4;Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4 +NC_000005.9 BestRefSeq exon 57752772 57752919 . - . ID=exon-NM_006622.4-8;Parent=rna-NM_006622.4;Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4 +NC_000005.9 BestRefSeq exon 57752319 57752416 . - . ID=exon-NM_006622.4-9;Parent=rna-NM_006622.4;Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4 +NC_000005.9 BestRefSeq exon 57751853 57751982 . - . ID=exon-NM_006622.4-10;Parent=rna-NM_006622.4;Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4 +NC_000005.9 BestRefSeq exon 57751366 57751606 . - . ID=exon-NM_006622.4-11;Parent=rna-NM_006622.4;Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4 +NC_000005.9 BestRefSeq exon 57751112 57751241 . - . ID=exon-NM_006622.4-12;Parent=rna-NM_006622.4;Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4 +NC_000005.9 BestRefSeq exon 57750738 57750848 . - . ID=exon-NM_006622.4-13;Parent=rna-NM_006622.4;Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4 +NC_000005.9 BestRefSeq exon 57749809 57750601 . - . ID=exon-NM_006622.4-14;Parent=rna-NM_006622.4;Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4 +NC_000005.9 BestRefSeq CDS 57755517 57755786 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,GeneID:10769,Genbank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=RefSeq Select +NC_000005.9 BestRefSeq CDS 57754812 57754919 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,GeneID:10769,Genbank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=RefSeq Select +NC_000005.9 BestRefSeq CDS 57754552 57754668 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,GeneID:10769,Genbank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=RefSeq Select +NC_000005.9 BestRefSeq CDS 57754226 57754355 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,GeneID:10769,Genbank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=RefSeq Select +NC_000005.9 BestRefSeq CDS 57753911 57753998 . - 2 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,GeneID:10769,Genbank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=RefSeq Select +NC_000005.9 BestRefSeq CDS 57753315 57753410 . - 1 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,GeneID:10769,Genbank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=RefSeq Select +NC_000005.9 BestRefSeq CDS 57753008 57753206 . - 1 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,GeneID:10769,Genbank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=RefSeq Select +NC_000005.9 BestRefSeq CDS 57752772 57752919 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,GeneID:10769,Genbank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=RefSeq Select +NC_000005.9 BestRefSeq CDS 57752319 57752416 . - 2 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,GeneID:10769,Genbank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=RefSeq Select +NC_000005.9 BestRefSeq CDS 57751853 57751982 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,GeneID:10769,Genbank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=RefSeq Select +NC_000005.9 BestRefSeq CDS 57751366 57751606 . - 2 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,GeneID:10769,Genbank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=RefSeq Select +NC_000005.9 BestRefSeq CDS 57751112 57751241 . - 1 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,GeneID:10769,Genbank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=RefSeq Select +NC_000005.9 BestRefSeq CDS 57750738 57750848 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,GeneID:10769,Genbank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=RefSeq Select +NC_000005.9 BestRefSeq CDS 57750410 57750601 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,GeneID:10769,Genbank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=RefSeq Select +NC_000005.9 BestRefSeq mRNA 156588857 156593275 . - . ID=rna-NM_130899.3;Parent=gene-GARIN3;Dbxref=GeneID:153745,Genbank:NM_130899.3,HGNC:HGNC:28397;Name=NM_130899.3;gbkey=mRNA;gene=GARIN3;product=golgi associated RAB2B interactor family member 3;tag=RefSeq Select;transcript_id=NM_130899.3 +NC_000005.9 BestRefSeq exon 156592574 156593275 . - . ID=exon-NM_130899.3-1;Parent=rna-NM_130899.3;Dbxref=GeneID:153745,Genbank:NM_130899.3,HGNC:HGNC:28397;gbkey=mRNA;gene=GARIN3;product=golgi associated RAB2B interactor family member 3;tag=RefSeq Select;transcript_id=NM_130899.3 +NC_000005.9 BestRefSeq exon 156588857 156590669 . - . ID=exon-NM_130899.3-2;Parent=rna-NM_130899.3;Dbxref=GeneID:153745,Genbank:NM_130899.3,HGNC:HGNC:28397;gbkey=mRNA;gene=GARIN3;product=golgi associated RAB2B interactor family member 3;tag=RefSeq Select;transcript_id=NM_130899.3 +NC_000005.9 BestRefSeq CDS 156592574 156593179 . - 0 ID=cds-NP_570969.2;Parent=rna-NM_130899.3;Dbxref=CCDS:CCDS4335.1,GeneID:153745,Genbank:NP_570969.2,HGNC:HGNC:28397;Name=NP_570969.2;gbkey=CDS;gene=GARIN3;product=protein FAM71B;protein_id=NP_570969.2;tag=RefSeq Select +NC_000005.9 BestRefSeq CDS 156589458 156590669 . - 0 ID=cds-NP_570969.2;Parent=rna-NM_130899.3;Dbxref=CCDS:CCDS4335.1,GeneID:153745,Genbank:NP_570969.2,HGNC:HGNC:28397;Name=NP_570969.2;gbkey=CDS;gene=GARIN3;product=protein FAM71B;protein_id=NP_570969.2;tag=RefSeq Select +NC_000007.13 BestRefSeq mRNA 56119458 56131682 . + . ID=rna-NM_001762.4;Parent=gene-CCT6A;Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;Name=NM_001762.4;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4 +NC_000007.13 BestRefSeq exon 56119458 56119678 . + . ID=exon-NM_001762.4-1;Parent=rna-NM_001762.4;Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4 +NC_000007.13 BestRefSeq exon 56120115 56120178 . + . ID=exon-NM_001762.4-2;Parent=rna-NM_001762.4;Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4 +NC_000007.13 BestRefSeq exon 56122062 56122196 . + . ID=exon-NM_001762.4-3;Parent=rna-NM_001762.4;Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4 +NC_000007.13 BestRefSeq exon 56123317 56123490 . + . ID=exon-NM_001762.4-4;Parent=rna-NM_001762.4;Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4 +NC_000007.13 BestRefSeq exon 56124004 56124107 . + . ID=exon-NM_001762.4-5;Parent=rna-NM_001762.4;Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4 +NC_000007.13 BestRefSeq exon 56125686 56125796 . + . ID=exon-NM_001762.4-6;Parent=rna-NM_001762.4;Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4 +NC_000007.13 BestRefSeq exon 56126055 56126214 . + . ID=exon-NM_001762.4-7;Parent=rna-NM_001762.4;Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4 +NC_000007.13 BestRefSeq exon 56126313 56126395 . + . ID=exon-NM_001762.4-8;Parent=rna-NM_001762.4;Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4 +NC_000007.13 BestRefSeq exon 56127237 56127333 . + . ID=exon-NM_001762.4-9;Parent=rna-NM_001762.4;Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4 +NC_000007.13 BestRefSeq exon 56127962 56128109 . + . ID=exon-NM_001762.4-10;Parent=rna-NM_001762.4;Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4 +NC_000007.13 BestRefSeq exon 56128500 56128633 . + . ID=exon-NM_001762.4-11;Parent=rna-NM_001762.4;Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4 +NC_000007.13 BestRefSeq exon 56129440 56129542 . + . ID=exon-NM_001762.4-12;Parent=rna-NM_001762.4;Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4 +NC_000007.13 BestRefSeq exon 56130376 56130448 . + . ID=exon-NM_001762.4-13;Parent=rna-NM_001762.4;Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4 +NC_000007.13 BestRefSeq exon 56130706 56131682 . + . ID=exon-NM_001762.4-14;Parent=rna-NM_001762.4;Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4 +NC_000007.13 BestRefSeq CDS 56119542 56119678 . + 0 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,GeneID:908,Genbank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=RefSeq Select +NC_000007.13 BestRefSeq CDS 56120115 56120178 . + 1 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,GeneID:908,Genbank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=RefSeq Select +NC_000007.13 BestRefSeq CDS 56122062 56122196 . + 0 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,GeneID:908,Genbank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=RefSeq Select +NC_000007.13 BestRefSeq CDS 56123317 56123490 . + 0 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,GeneID:908,Genbank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=RefSeq Select +NC_000007.13 BestRefSeq CDS 56124004 56124107 . + 0 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,GeneID:908,Genbank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=RefSeq Select +NC_000007.13 BestRefSeq CDS 56125686 56125796 . + 1 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,GeneID:908,Genbank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=RefSeq Select +NC_000007.13 BestRefSeq CDS 56126055 56126214 . + 1 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,GeneID:908,Genbank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=RefSeq Select +NC_000007.13 BestRefSeq CDS 56126313 56126395 . + 0 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,GeneID:908,Genbank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=RefSeq Select +NC_000007.13 BestRefSeq CDS 56127237 56127333 . + 1 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,GeneID:908,Genbank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=RefSeq Select +NC_000007.13 BestRefSeq CDS 56127962 56128109 . + 0 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,GeneID:908,Genbank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=RefSeq Select +NC_000007.13 BestRefSeq CDS 56128500 56128633 . + 2 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,GeneID:908,Genbank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=RefSeq Select +NC_000007.13 BestRefSeq CDS 56129440 56129542 . + 0 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,GeneID:908,Genbank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=RefSeq Select +NC_000007.13 BestRefSeq CDS 56130376 56130448 . + 2 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,GeneID:908,Genbank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=RefSeq Select +NC_000007.13 BestRefSeq CDS 56130706 56130778 . + 1 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,GeneID:908,Genbank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=RefSeq Select +NC_000009.11 BestRefSeq mRNA 131018108 131038286 . - . ID=rna-NM_004486.6;Parent=gene-GOLGA2;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;Name=NM_004486.6;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131038172 131038286 . - . ID=exon-NM_004486.6-1;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131036129 131036251 . - . ID=exon-NM_004486.6-2;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131030699 131030803 . - . ID=exon-NM_004486.6-3;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131030396 131030439 . - . ID=exon-NM_004486.6-4;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131030213 131030276 . - . ID=exon-NM_004486.6-5;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131029737 131029796 . - . ID=exon-NM_004486.6-6;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131029473 131029553 . - . ID=exon-NM_004486.6-7;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131028566 131028604 . - . ID=exon-NM_004486.6-8;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131028249 131028299 . - . ID=exon-NM_004486.6-9;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131028067 131028160 . - . ID=exon-NM_004486.6-10;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131027864 131027970 . - . ID=exon-NM_004486.6-11;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131025313 131025371 . - . ID=exon-NM_004486.6-12;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131024842 131024983 . - . ID=exon-NM_004486.6-13;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131023947 131024036 . - . ID=exon-NM_004486.6-14;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131023733 131023840 . - . ID=exon-NM_004486.6-15;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131023451 131023538 . - . ID=exon-NM_004486.6-16;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131022744 131023081 . - . ID=exon-NM_004486.6-17;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131022355 131022468 . - . ID=exon-NM_004486.6-18;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131021446 131021670 . - . ID=exon-NM_004486.6-19;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131021286 131021361 . - . ID=exon-NM_004486.6-20;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131020734 131020849 . - . ID=exon-NM_004486.6-21;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131020259 131020477 . - . ID=exon-NM_004486.6-22;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131020069 131020171 . - . ID=exon-NM_004486.6-23;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131019880 131019986 . - . ID=exon-NM_004486.6-24;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131019648 131019804 . - . ID=exon-NM_004486.6-25;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq exon 131018108 131019560 . - . ID=exon-NM_004486.6-26;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.11 BestRefSeq CDS 131038172 131038255 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131036129 131036251 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131030699 131030803 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131030396 131030439 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131030213 131030276 . - 1 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131029737 131029796 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131029473 131029553 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131028566 131028604 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131028249 131028299 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131028067 131028160 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131027864 131027970 . - 2 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131025313 131025371 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131024842 131024983 . - 1 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131023947 131024036 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131023733 131023840 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131023451 131023538 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131022744 131023081 . - 2 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131022355 131022468 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131021446 131021670 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131021286 131021361 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131020734 131020849 . - 2 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131020259 131020477 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131020069 131020171 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131019880 131019986 . - 2 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131019648 131019804 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.11 BestRefSeq CDS 131019346 131019560 . - 2 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000012.11 BestRefSeq mRNA 115108060 115121980 . - . ID=rna-NM_016569.4;Parent=gene-TBX3;Dbxref=GeneID:6926,Genbank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;Name=NM_016569.4;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.11 BestRefSeq exon 115120617 115121980 . - . ID=exon-NM_016569.4-1;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,Genbank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.11 BestRefSeq exon 115118684 115118951 . - . ID=exon-NM_016569.4-2;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,Genbank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.11 BestRefSeq exon 115117718 115117777 . - . ID=exon-NM_016569.4-3;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,Genbank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.11 BestRefSeq exon 115117310 115117456 . - . ID=exon-NM_016569.4-4;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,Genbank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.11 BestRefSeq exon 115115385 115115461 . - . ID=exon-NM_016569.4-5;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,Genbank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.11 BestRefSeq exon 115114118 115114275 . - . ID=exon-NM_016569.4-6;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,Genbank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.11 BestRefSeq exon 115111970 115112640 . - . ID=exon-NM_016569.4-7;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,Genbank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.11 BestRefSeq exon 115108060 115110107 . - . ID=exon-NM_016569.4-8;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,Genbank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.11 BestRefSeq CDS 115120617 115121005 . - 0 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,Genbank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000012.11 BestRefSeq CDS 115118684 115118951 . - 1 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,Genbank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000012.11 BestRefSeq CDS 115117718 115117777 . - 0 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,Genbank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000012.11 BestRefSeq CDS 115117310 115117456 . - 0 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,Genbank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000012.11 BestRefSeq CDS 115115385 115115461 . - 0 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,Genbank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000012.11 BestRefSeq CDS 115114118 115114275 . - 1 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,Genbank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000012.11 BestRefSeq CDS 115111970 115112640 . - 2 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,Genbank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000012.11 BestRefSeq CDS 115109646 115110107 . - 0 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,Genbank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000022.10 BestRefSeq mRNA 41488596 41576081 . + . ID=rna-NM_001429.4;Parent=gene-EP300;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;Name=NM_001429.4;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41488596 41489102 . + . ID=exon-NM_001429.4-1;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41513191 41513825 . + . ID=exon-NM_001429.4-2;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41521868 41522044 . + . ID=exon-NM_001429.4-3;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41523491 41523752 . + . ID=exon-NM_001429.4-4;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41525894 41526007 . + . ID=exon-NM_001429.4-5;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41527392 41527637 . + . ID=exon-NM_001429.4-6;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41531817 41531910 . + . ID=exon-NM_001429.4-7;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41533657 41533794 . + . ID=exon-NM_001429.4-8;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41536144 41536261 . + . ID=exon-NM_001429.4-9;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41537052 41537226 . + . ID=exon-NM_001429.4-10;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41542743 41542820 . + . ID=exon-NM_001429.4-11;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41543841 41543950 . + . ID=exon-NM_001429.4-12;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41545042 41545179 . + . ID=exon-NM_001429.4-13;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41545765 41546202 . + . ID=exon-NM_001429.4-14;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41547837 41548016 . + . ID=exon-NM_001429.4-15;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41548210 41548354 . + . ID=exon-NM_001429.4-16;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41550999 41551117 . + . ID=exon-NM_001429.4-17;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41553173 41553412 . + . ID=exon-NM_001429.4-18;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41554416 41554504 . + . ID=exon-NM_001429.4-19;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41556646 41556726 . + . ID=exon-NM_001429.4-20;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41558727 41558783 . + . ID=exon-NM_001429.4-21;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41560057 41560134 . + . ID=exon-NM_001429.4-22;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41562603 41562670 . + . ID=exon-NM_001429.4-23;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41564453 41564603 . + . ID=exon-NM_001429.4-24;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41564725 41564871 . + . ID=exon-NM_001429.4-25;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41565507 41565620 . + . ID=exon-NM_001429.4-26;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41566410 41566575 . + . ID=exon-NM_001429.4-27;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41568503 41568667 . + . ID=exon-NM_001429.4-28;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41569627 41569788 . + . ID=exon-NM_001429.4-29;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41572251 41572532 . + . ID=exon-NM_001429.4-30;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq exon 41572777 41576081 . + . ID=exon-NM_001429.4-31;Parent=rna-NM_001429.4;Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4 +NC_000022.10 BestRefSeq CDS 41489009 41489102 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41513191 41513825 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41521868 41522044 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41523491 41523752 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41525894 41526007 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41527392 41527637 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41531817 41531910 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41533657 41533794 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41536144 41536261 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41537052 41537226 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41542743 41542820 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41543841 41543950 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41545042 41545179 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41545765 41546202 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41547837 41548016 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41548210 41548354 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41550999 41551117 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41553173 41553412 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41554416 41554504 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41556646 41556726 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41558727 41558783 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41560057 41560134 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41562603 41562670 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41564453 41564603 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41564725 41564871 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41565507 41565620 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41566410 41566575 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41568503 41568667 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41569627 41569788 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41572251 41572532 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000022.10 BestRefSeq CDS 41572777 41574960 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=RefSeq Select +NC_000001.10 BestRefSeq mRNA 32479469 32509478 . + . ID=rna-NM_006559.3;Parent=gene-KHDRBS1;Dbxref=GeneID:10657,Genbank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;Name=NM_006559.3;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006559.3 +NC_000001.10 BestRefSeq exon 32479469 32479978 . + . ID=exon-NM_006559.3-1;Parent=rna-NM_006559.3;Dbxref=GeneID:10657,Genbank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006559.3 +NC_000001.10 BestRefSeq exon 32495899 32496023 . + . ID=exon-NM_006559.3-2;Parent=rna-NM_006559.3;Dbxref=GeneID:10657,Genbank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006559.3 +NC_000001.10 BestRefSeq exon 32497125 32497241 . + . ID=exon-NM_006559.3-3;Parent=rna-NM_006559.3;Dbxref=GeneID:10657,Genbank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006559.3 +NC_000001.10 BestRefSeq exon 32498789 32498935 . + . ID=exon-NM_006559.3-4;Parent=rna-NM_006559.3;Dbxref=GeneID:10657,Genbank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006559.3 +NC_000001.10 BestRefSeq exon 32502511 32502644 . + . ID=exon-NM_006559.3-5;Parent=rna-NM_006559.3;Dbxref=GeneID:10657,Genbank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006559.3 +NC_000001.10 BestRefSeq exon 32503436 32503637 . + . ID=exon-NM_006559.3-6;Parent=rna-NM_006559.3;Dbxref=GeneID:10657,Genbank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006559.3 +NC_000001.10 BestRefSeq exon 32504153 32504220 . + . ID=exon-NM_006559.3-7;Parent=rna-NM_006559.3;Dbxref=GeneID:10657,Genbank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006559.3 +NC_000001.10 BestRefSeq exon 32505116 32505174 . + . ID=exon-NM_006559.3-8;Parent=rna-NM_006559.3;Dbxref=GeneID:10657,Genbank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006559.3 +NC_000001.10 BestRefSeq exon 32508128 32509478 . + . ID=exon-NM_006559.3-9;Parent=rna-NM_006559.3;Dbxref=GeneID:10657,Genbank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006559.3 +NC_000001.10 BestRefSeq CDS 32479597 32479978 . + 0 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,GeneID:10657,Genbank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 32495899 32496023 . + 2 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,GeneID:10657,Genbank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 32497125 32497241 . + 0 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,GeneID:10657,Genbank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 32498789 32498935 . + 0 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,GeneID:10657,Genbank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 32502511 32502644 . + 0 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,GeneID:10657,Genbank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 32503436 32503637 . + 1 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,GeneID:10657,Genbank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 32504153 32504220 . + 0 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,GeneID:10657,Genbank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 32505116 32505174 . + 1 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,GeneID:10657,Genbank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=RefSeq Select +NC_000001.10 BestRefSeq CDS 32508128 32508225 . + 2 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,GeneID:10657,Genbank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=RefSeq Select +NC_000003.11 BestRefSeq mRNA 57994149 58157978 . + . ID=rna-NM_001457.4;Parent=gene-FLNB;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;Name=NM_001457.4;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 57994149 57994583 . + . ID=exon-NM_001457.4-1;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58062773 58063021 . + . ID=exon-NM_001457.4-2;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58064444 58064541 . + . ID=exon-NM_001457.4-3;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58067356 58067503 . + . ID=exon-NM_001457.4-4;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58080563 58080681 . + . ID=exon-NM_001457.4-5;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58081868 58081945 . + . ID=exon-NM_001457.4-6;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58083542 58083704 . + . ID=exon-NM_001457.4-7;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58084438 58084635 . + . ID=exon-NM_001457.4-8;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58087930 58088067 . + . ID=exon-NM_001457.4-9;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58089686 58089812 . + . ID=exon-NM_001457.4-10;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58090807 58090943 . + . ID=exon-NM_001457.4-11;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58092407 58092600 . + . ID=exon-NM_001457.4-12;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58094185 58094298 . + . ID=exon-NM_001457.4-13;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58094906 58095049 . + . ID=exon-NM_001457.4-14;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58095303 58095426 . + . ID=exon-NM_001457.4-15;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58095737 58095897 . + . ID=exon-NM_001457.4-16;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58097518 58097608 . + . ID=exon-NM_001457.4-17;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58097876 58098045 . + . ID=exon-NM_001457.4-18;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58104599 58104716 . + . ID=exon-NM_001457.4-19;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58106968 58107230 . + . ID=exon-NM_001457.4-20;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58108820 58109417 . + . ID=exon-NM_001457.4-21;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58110059 58110232 . + . ID=exon-NM_001457.4-22;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58111308 58111470 . + . ID=exon-NM_001457.4-23;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58112329 58112489 . + . ID=exon-NM_001457.4-24;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58116468 58116635 . + . ID=exon-NM_001457.4-25;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58118535 58118658 . + . ID=exon-NM_001457.4-26;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58120343 58120499 . + . ID=exon-NM_001457.4-27;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58121706 58121895 . + . ID=exon-NM_001457.4-28;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58124009 58124256 . + . ID=exon-NM_001457.4-29;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58127585 58127656 . + . ID=exon-NM_001457.4-30;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58128377 58128479 . + . ID=exon-NM_001457.4-31;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58129200 58129340 . + . ID=exon-NM_001457.4-32;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58131648 58131776 . + . ID=exon-NM_001457.4-33;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58132547 58132720 . + . ID=exon-NM_001457.4-34;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58133933 58134091 . + . ID=exon-NM_001457.4-35;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58134376 58134579 . + . ID=exon-NM_001457.4-36;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58135577 58135729 . + . ID=exon-NM_001457.4-37;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58135832 58135954 . + . ID=exon-NM_001457.4-38;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58139102 58139368 . + . ID=exon-NM_001457.4-39;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58140518 58140655 . + . ID=exon-NM_001457.4-40;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58141687 58141802 . + . ID=exon-NM_001457.4-41;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58145281 58145413 . + . ID=exon-NM_001457.4-42;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58148881 58149057 . + . ID=exon-NM_001457.4-43;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58154167 58154385 . + . ID=exon-NM_001457.4-44;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58155317 58155520 . + . ID=exon-NM_001457.4-45;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq exon 58156302 58157978 . + . ID=exon-NM_001457.4-46;Parent=rna-NM_001457.4;Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4 +NC_000003.11 BestRefSeq CDS 57994292 57994583 . + 0 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58062773 58063021 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58064444 58064541 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58067356 58067503 . + 0 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58080563 58080681 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58081868 58081945 . + 0 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58083542 58083704 . + 0 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58084438 58084635 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58087930 58088067 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58089686 58089812 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58090807 58090943 . + 1 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58092407 58092600 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58094185 58094298 . + 0 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58094906 58095049 . + 0 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58095303 58095426 . + 0 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58095737 58095897 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58097518 58097608 . + 0 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58097876 58098045 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58104599 58104716 . + 0 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58106968 58107230 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58108820 58109417 . + 0 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58110059 58110232 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58111308 58111470 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58112329 58112489 . + 1 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58116468 58116635 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58118535 58118658 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58120343 58120499 . + 1 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58121706 58121895 . + 0 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58124009 58124256 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58127585 58127656 . + 0 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58128377 58128479 . + 0 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58129200 58129340 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58131648 58131776 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58132547 58132720 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58133933 58134091 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58134376 58134579 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58135577 58135729 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58135832 58135954 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58139102 58139368 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58140518 58140655 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58141687 58141802 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58145281 58145413 . + 0 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58148881 58149057 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58154167 58154385 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58155317 58155520 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000003.11 BestRefSeq CDS 58156302 58156489 . + 2 ID=cds-NP_001448.2;Parent=rna-NM_001457.4;Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=FLNB;product=filamin-B isoform 2;protein_id=NP_001448.2;tag=RefSeq Select +NC_000010.10 BestRefSeq mRNA 70091821 70102950 . + . ID=rna-NM_012207.3;Parent=gene-HNRNPH3;Dbxref=GeneID:3189,Genbank:NM_012207.3,HGNC:HGNC:5043,MIM:602324;Name=NM_012207.3;gbkey=mRNA;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3%2C transcript variant 2H9;tag=RefSeq Select;transcript_id=NM_012207.3 +NC_000010.10 BestRefSeq exon 70091821 70091973 . + . ID=exon-NM_012207.3-1;Parent=rna-NM_012207.3;Dbxref=GeneID:3189,Genbank:NM_012207.3,HGNC:HGNC:5043,MIM:602324;gbkey=mRNA;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3%2C transcript variant 2H9;tag=RefSeq Select;transcript_id=NM_012207.3 +NC_000010.10 BestRefSeq exon 70096956 70097090 . + . ID=exon-NM_012207.3-2;Parent=rna-NM_012207.3;Dbxref=GeneID:3189,Genbank:NM_012207.3,HGNC:HGNC:5043,MIM:602324;gbkey=mRNA;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3%2C transcript variant 2H9;tag=RefSeq Select;transcript_id=NM_012207.3 +NC_000010.10 BestRefSeq exon 70097615 70097753 . + . ID=exon-NM_012207.3-3;Parent=rna-NM_012207.3;Dbxref=GeneID:3189,Genbank:NM_012207.3,HGNC:HGNC:5043,MIM:602324;gbkey=mRNA;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3%2C transcript variant 2H9;tag=RefSeq Select;transcript_id=NM_012207.3 +NC_000010.10 BestRefSeq exon 70098260 70098444 . + . ID=exon-NM_012207.3-4;Parent=rna-NM_012207.3;Dbxref=GeneID:3189,Genbank:NM_012207.3,HGNC:HGNC:5043,MIM:602324;gbkey=mRNA;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3%2C transcript variant 2H9;tag=RefSeq Select;transcript_id=NM_012207.3 +NC_000010.10 BestRefSeq exon 70098897 70098983 . + . ID=exon-NM_012207.3-5;Parent=rna-NM_012207.3;Dbxref=GeneID:3189,Genbank:NM_012207.3,HGNC:HGNC:5043,MIM:602324;gbkey=mRNA;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3%2C transcript variant 2H9;tag=RefSeq Select;transcript_id=NM_012207.3 +NC_000010.10 BestRefSeq exon 70099197 70099312 . + . ID=exon-NM_012207.3-6;Parent=rna-NM_012207.3;Dbxref=GeneID:3189,Genbank:NM_012207.3,HGNC:HGNC:5043,MIM:602324;gbkey=mRNA;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3%2C transcript variant 2H9;tag=RefSeq Select;transcript_id=NM_012207.3 +NC_000010.10 BestRefSeq exon 70100931 70101066 . + . ID=exon-NM_012207.3-7;Parent=rna-NM_012207.3;Dbxref=GeneID:3189,Genbank:NM_012207.3,HGNC:HGNC:5043,MIM:602324;gbkey=mRNA;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3%2C transcript variant 2H9;tag=RefSeq Select;transcript_id=NM_012207.3 +NC_000010.10 BestRefSeq exon 70101342 70101437 . + . ID=exon-NM_012207.3-8;Parent=rna-NM_012207.3;Dbxref=GeneID:3189,Genbank:NM_012207.3,HGNC:HGNC:5043,MIM:602324;gbkey=mRNA;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3%2C transcript variant 2H9;tag=RefSeq Select;transcript_id=NM_012207.3 +NC_000010.10 BestRefSeq exon 70101516 70101608 . + . ID=exon-NM_012207.3-9;Parent=rna-NM_012207.3;Dbxref=GeneID:3189,Genbank:NM_012207.3,HGNC:HGNC:5043,MIM:602324;gbkey=mRNA;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3%2C transcript variant 2H9;tag=RefSeq Select;transcript_id=NM_012207.3 +NC_000010.10 BestRefSeq exon 70101735 70102950 . + . ID=exon-NM_012207.3-10;Parent=rna-NM_012207.3;Dbxref=GeneID:3189,Genbank:NM_012207.3,HGNC:HGNC:5043,MIM:602324;gbkey=mRNA;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3%2C transcript variant 2H9;tag=RefSeq Select;transcript_id=NM_012207.3 +NC_000010.10 BestRefSeq CDS 70096979 70097090 . + 0 ID=cds-NP_036339.1;Parent=rna-NM_012207.3;Dbxref=CCDS:CCDS7278.1,GeneID:3189,Genbank:NP_036339.1,HGNC:HGNC:5043,MIM:602324;Name=NP_036339.1;Note=isoform a is encoded by transcript variant 2H9;gbkey=CDS;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3 isoform a;protein_id=NP_036339.1;tag=RefSeq Select +NC_000010.10 BestRefSeq CDS 70097615 70097753 . + 2 ID=cds-NP_036339.1;Parent=rna-NM_012207.3;Dbxref=CCDS:CCDS7278.1,GeneID:3189,Genbank:NP_036339.1,HGNC:HGNC:5043,MIM:602324;Name=NP_036339.1;Note=isoform a is encoded by transcript variant 2H9;gbkey=CDS;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3 isoform a;protein_id=NP_036339.1;tag=RefSeq Select +NC_000010.10 BestRefSeq CDS 70098260 70098444 . + 1 ID=cds-NP_036339.1;Parent=rna-NM_012207.3;Dbxref=CCDS:CCDS7278.1,GeneID:3189,Genbank:NP_036339.1,HGNC:HGNC:5043,MIM:602324;Name=NP_036339.1;Note=isoform a is encoded by transcript variant 2H9;gbkey=CDS;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3 isoform a;protein_id=NP_036339.1;tag=RefSeq Select +NC_000010.10 BestRefSeq CDS 70098897 70098983 . + 2 ID=cds-NP_036339.1;Parent=rna-NM_012207.3;Dbxref=CCDS:CCDS7278.1,GeneID:3189,Genbank:NP_036339.1,HGNC:HGNC:5043,MIM:602324;Name=NP_036339.1;Note=isoform a is encoded by transcript variant 2H9;gbkey=CDS;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3 isoform a;protein_id=NP_036339.1;tag=RefSeq Select +NC_000010.10 BestRefSeq CDS 70099197 70099312 . + 2 ID=cds-NP_036339.1;Parent=rna-NM_012207.3;Dbxref=CCDS:CCDS7278.1,GeneID:3189,Genbank:NP_036339.1,HGNC:HGNC:5043,MIM:602324;Name=NP_036339.1;Note=isoform a is encoded by transcript variant 2H9;gbkey=CDS;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3 isoform a;protein_id=NP_036339.1;tag=RefSeq Select +NC_000010.10 BestRefSeq CDS 70100931 70101066 . + 0 ID=cds-NP_036339.1;Parent=rna-NM_012207.3;Dbxref=CCDS:CCDS7278.1,GeneID:3189,Genbank:NP_036339.1,HGNC:HGNC:5043,MIM:602324;Name=NP_036339.1;Note=isoform a is encoded by transcript variant 2H9;gbkey=CDS;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3 isoform a;protein_id=NP_036339.1;tag=RefSeq Select +NC_000010.10 BestRefSeq CDS 70101342 70101437 . + 2 ID=cds-NP_036339.1;Parent=rna-NM_012207.3;Dbxref=CCDS:CCDS7278.1,GeneID:3189,Genbank:NP_036339.1,HGNC:HGNC:5043,MIM:602324;Name=NP_036339.1;Note=isoform a is encoded by transcript variant 2H9;gbkey=CDS;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3 isoform a;protein_id=NP_036339.1;tag=RefSeq Select +NC_000010.10 BestRefSeq CDS 70101516 70101608 . + 2 ID=cds-NP_036339.1;Parent=rna-NM_012207.3;Dbxref=CCDS:CCDS7278.1,GeneID:3189,Genbank:NP_036339.1,HGNC:HGNC:5043,MIM:602324;Name=NP_036339.1;Note=isoform a is encoded by transcript variant 2H9;gbkey=CDS;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3 isoform a;protein_id=NP_036339.1;tag=RefSeq Select +NC_000010.10 BestRefSeq CDS 70101735 70101811 . + 2 ID=cds-NP_036339.1;Parent=rna-NM_012207.3;Dbxref=CCDS:CCDS7278.1,GeneID:3189,Genbank:NP_036339.1,HGNC:HGNC:5043,MIM:602324;Name=NP_036339.1;Note=isoform a is encoded by transcript variant 2H9;gbkey=CDS;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3 isoform a;protein_id=NP_036339.1;tag=RefSeq Select diff --git a/pgatk/testdata/test_cbioportal_ncbi_grch37_transcripts.fa b/pgatk/testdata/test_cbioportal_ncbi_grch37_transcripts.fa new file mode 100644 index 00000000..87ff3771 --- /dev/null +++ b/pgatk/testdata/test_cbioportal_ncbi_grch37_transcripts.fa @@ -0,0 +1,784 @@ +>rna-NM_001255.3 CDS=76-1575 Dbxref=GeneID:991,Genbank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;Name=NM_001255.3;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=RefSeq Select;transcript_id=NM_001255.3;gene_biotype=protein_coding;gene_synonym=bA276H19.3,CDC20A,p55CDC;CDS_Dbxref=CCDS:CCDS484.1,GeneID:991,Genbank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;CDS_Name=NP_001246.2;CDS_gbkey=CDS;CDS_product=cell division cycle protein 20 homolog;protein_id=NP_001246.2 +CGGTCGGAACTGCTCCGGAGGGCACGGGCTCCGTAGGCACCAACTGCAAGGACCCCTCCC +CCTGCGGGCGCTCCCATGGCACAGTTCGCGTTCGAGAGTGACCTGCACTCGCTGCTTCAG +CTGGATGCACCCATCCCCAATGCACCCCCTGCGCGCTGGCAGCGCAAAGCCAAGGAAGCC +GCAGGCCCGGCCCCCTCACCCATGCGGGCCGCCAACCGATCCCACAGCGCCGGCAGGACT +CCGGGCCGAACTCCTGGCAAATCCAGTTCCAAGGTTCAGACCACTCCTAGCAAACCTGGC +GGTGACCGCTATATCCCCCATCGCAGTGCTGCCCAGATGGAGGTGGCCAGCTTCCTCCTG +AGCAAGGAGAACCAGCCTGAAAACAGCCAGACGCCCACCAAGAAGGAACATCAGAAAGCC +TGGGCTTTGAACCTGAACGGTTTTGATGTAGAGGAAGCCAAGATCCTTCGGCTCAGTGGA +AAACCACAAAATGCGCCAGAGGGTTATCAGAACAGACTGAAAGTACTCTACAGCCAAAAG +GCCACTCCTGGCTCCAGCCGGAAGACCTGCCGTTACATTCCTTCCCTGCCAGACCGTATC +CTGGATGCGCCTGAAATCCGAAATGACTATTACCTGAACCTTGTGGATTGGAGTTCTGGG +AATGTACTGGCCGTGGCACTGGACAACAGTGTGTACCTGTGGAGTGCAAGCTCTGGTGAC +ATCCTGCAGCTTTTGCAAATGGAGCAGCCTGGGGAATATATATCCTCTGTGGCCTGGATC +AAAGAGGGCAACTACTTGGCTGTGGGCACCAGCAGTGCTGAGGTGCAGCTATGGGATGTG +CAGCAGCAGAAACGGCTTCGAAATATGACCAGTCACTCTGCCCGAGTGGGCTCCCTAAGC +TGGAACAGCTATATCCTGTCCAGtGGTTCACGTTCTGGCCACATCCACCACCATGATGTT +CGGGTAGCAGAACACCATGTGGCCACACTGAGTGGCCACAGCCAGGAAGTGTGTGGGCTG +CGCTGGGCCCCAGATGGACGACATTTGGCCAGTGGTGGTAATGATAACTTGGTCAATGTG +TGGCCTAGTGCTCCTGGAGAGGGTGGCTGGGTTCCTCTGCAGACATTCACCCAGCATCAA +GGGGCTGTCAAGGCCGTAGCATGGTGTCCCTGGCAGTCCAATGTCCTGGCAACAGGAGGG +GGCACCAGTGATCGACACATTCGCATCTGGAATGTGTGCTCTGGGGCCTGTCTGAGTGCC +GTGGATGCCCATTCCCAGGTGTGCTCCATCCTCTGGTCTCCCCATTACAAGGAGCTCATC +TCAGGCCATGGCTTTGCACAGAACCAGCTAGTTATTTGGAAGTACCCAACCATGGCCAAG +GTGGCTGAACTCAAAGGTCACACATCCCGGGTCCTGAGTCTGACCATGAGCCCAGATGGG +GCCACAGTGGCATCCGCAGCAGCAGATGAGACCCTGAGGCTATGGCGCTGTTTTGAGTTG +GACCCTGCGCGGCGGCGGGAGCGGGAGAAGGCCAGTGCAGCCAAAAGCAGCCTCATCCAC +CAAGGCATCCGCTGAAGACCAACCCATCACctcagttgttttttatttttctaataaagt +cATGTCTcccttcatgttttttttttaaa +>rna-NM_012137.4 CDS=115-972 Dbxref=GeneID:23576,Genbank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;Name=NM_012137.4;Note=The RefSeq transcript has 1 substitution compared to this genomic sequence;exception=annotated by transcript or proteomic data;gbkey=mRNA;gene=DDAH1;inference=similar to RNA sequence%2C mRNA (same species):RefSeq:NM_012137.4;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_012137.4;description=dimethylarginine dimethylaminohydrolase 1;gene_biotype=protein_coding;gene_synonym=DDAH,DDAH-1,DDAHI,HEL-S-16;CDS_Dbxref=CCDS:CCDS705.1,GeneID:23576,Genbank:NP_036269.1,HGNC:HGNC:2715,MIM:604743;CDS_Name=NP_036269.1;CDS_Note=isoform 1 is encoded by transcript variant 1;CDS_gbkey=CDS;CDS_product=N(G)%2CN(G)-dimethylarginine dimethylaminohydrolase 1 isoform 1;protein_id=NP_036269.1 +ACATTCAGCGGCTGCCAAGAGGAGCCGACGGGCGCTCGCAGGCTCAGCGCGCGCTGCCCG +CGGCAGGACCCGgccgcctccgccgccgccgccgcccctaAGCCTCCCGAAGCCATGGCC +GGGCTCGGCCACCCCGCCGCCTTCGGCCGGGCCACCCACGCCGTGGTGCGGGCGCTACCC +GAGTCGCTCGGCCAGCACGCGCTGAGAAGCGCCAAGGGCGAGGAGGTGGACGTCGCCCGC +GCGGAACGGCAGCACCAGCTCTACGTGGGCGTGCTGGGCAGcaagctggggctgcaggtg +gtgGAGCTGCCGGCCGACGAGAGCCTTCCGGACTGCGTCTTCGTGGAGGACGTGGCCGTG +GTGTGCGAGGAGACGGCCCTCATCACCCGACCCGGGGCGCCGAGCCGGAGGAAGGAGgTT +GACATGATGAAAGAAGCATTAGAAAAACTTCAGCTCAATATAGTagagatgaaagatgaa +aatgCAACTTTAGATGGCGGAGATGTTTTATTCACAGGCAGAGAATTTTTTGTGGGCCTT +TCCAAAAGGACAAATCAACGAGGTGCTGAAATCTTGGCTGATACTTTTAAGGACTATGCA +GTCTCCACAGTGCCAGTGGCAGATGGGTTGCATTTGAAGAGTTTCTGCAGCATGGCTGGG +CCTAACCTGATCGCAATTGGGTCTAGTGAATCTGCACAGAAGGCCCTTAAGatcatgCAA +CAGATGAGTGACCACCGCTACGACAAACTCACTGTGCCTGATGACATAGCAGCAAACTGT +ATATATCTAAATATCCCCAACAAAGGGCACGTCTTGCTGCACCGAACCCCGGAAGAGTAT +CCAGAAAGTGCAAAGGTTTATGAGAAACTGAAGGACCATATGCTGATCCCCGTGAGCATG +TCTGAACTGGAAAAGGTGGATGGgctgctcacctgctgctcaGTTTTAATTAACAAGAAA +GTAGACTCCTGAGCTGCAGAGTCCCCCCCGGTTGCCGGCAAGACCGCACAGGCAAGGCCG +ATGACTCTGTGCCCACTCCTGTTGTTTTCCTTGACAATCTACTGTGCCACTGTGCTACTA +ACTCTTGTTTACAAAATTTGATTCTAAGTTGAATTGCTTCATTCAacacccccaccctcc +ctcccctcgAGGTGGTACCTAAGCTGTGGATTTGCTAAATGAATTAAGCAACCTAGAAGA +TACAGAGCTAatgaattatcaaaatgtgattAATCCCAGTAAGGAAACACTCATTTAGTG +TCTGTATTTTTGGTGTGAAAATTATTTAGTTGCCAGTATATTCTGAAGAATGTCTTCTTG +ATCAGTCAGataagcttgctttttttttttttttttttcatgaatcatGTTTGGTTCCTG +TGAAAGTCCCTGGTCCAGGgatcctcctcctttctcttttactTCTGAATTCTGAAATTC +AGTTAGTTACTTTTGCCTTTCGCTCTTCTATCACAGCCACCTTGACCTTGGGTAAAACCC +AAGGTCTTTCCTTCTGGCTACCTTCCTGCAGGTCCACCCTGTCTGCCATTGGTCTCCTCT +GCCTCTGACTACATCTGCCACCAACaaccctcccctcacccctgccaGGGGCAGACAGGC +TTCTCAGCAGAACTGTGACTGAAATCAGAGCTGCTGTCTGGGGCAGTGTTAACTACACAG +AGGCACATCCTGACAGGGTTTGCCCCAGAGATCTAAATTCCAGAAGGAGGGCACCACACC +TAGGAAGGTAAATCCAGTATCAGAAGGTTGCTAAAAGATTAAAGATCAAGAAGCTTGGAA +ACATCCCATGGGTACAATGTCTTAGAAAGTCTTTAAGTCACATACCATGAATTTTTGCTT +CATTACTGACCATATATGACCTTggaggaactcttttttttttttccttctactcatTTC +TGTTTCCACCTACCCTGACTCACCGTATTTCCAGTCTTCTACCCCTGCAGTTATCCTAGT +CCAGCAAAGTCATTTCTTTCAAAAGAGACATCATGTCTGAAAATAATTACTGGTAGTCTA +ATATGAGCCAGAGTAAACAGCTCCTCATGGTCAATGAACATGTTCAGGAAGCGATCACCT +TGATGCTTGAACCCAACCCCAGACAGTGGACAATTCTACTTTGAAATATCCGTGAATATT +TACTGTGGGATCCAATTTAAACTTCTTTCTTCTCTAGCCTTTAAATTACACAACTTTGAA +CTGACACGGATCTCTTACAAAGAACAATGCGGCACTGAAGGAAGAGATGATTCCTTTACT +CAAACCTGCAGGAATCAGCCTATTAACAGGCAGGGGAAACGGTACTTTCCAATGAATGGT +AACTGATCCAGGCACATTATCACACTTCCTAGTCATCTCCACCTTTCCTGTATTGCCTGT +GGCTTGTTGTTTAAGATTAAGAATCAAAGAGATTAAGAAGTATCACTTCAAATCTTGCTC +TGCTCACTTCTATGTTTGCAGTCAAATTATTCCTTATGTTGGTGACCTAAAGAGAAttac +tttcattcatttcatttcccCCGTAGCAGATGGAAGGAGAAACctctgagaaaatgaaaa +catcctTAACCACTATCTTTCccttttatttgattattttatgtcagaaatttgcaaaag +tttttttctcctccttctcttccttgttGCTTAACTTTTTAATTCATGCCATATGCAGAT +ATCCAATTATGTGCATCCTGTGAATAAACCACGTCTTGGTCACTGTCATATTTTGAACCA +TCTCATCAGAGATGAATAATATCTTTTTACCAGAGAGAGAACGAATGTTAGCCACATGCC +CaagttaacaaagaaaaaatgttctcaAGGTTGTCCTTTTGGGTTAAATCTGGCCCTTCC +TTGGCAAAAGCAAAAATTCTCCCTGTGAGAGCTCAACATCTCAAATACAACCACAGGAAA +AATGGCCCAATCTGCCAGTTTAGGCTTACcagcatataatttttaatatctttacttCTA +TCATCCCAAATCAAAGAACTCTTCTCTATTATGTTTAATCAATTGCAAGcaaatagattt +ttctttgtaACAATTTGTTCTGCAGAAGgctgtttttcacttttcctttcttttgcttct +ttctgtctttccttctcttttgtctGGAGAAATCACTTAGACTCTGTGTGCCTCTTCTAC +ATTGCATTCTGCTCTGCTATGTTACCTGCTAGGCTGGCTTCTTTGGACTCCCTATATGAT +TGATGATGTGAAAACCTAAATTACTTGCAGCATAGTATTACTTCTTTGATGTTCTCATTA +GCATaatgttatttttgaaaaggaaagataCTATCACATAAGTTTTCCTCATCTGTTGTG +ATATACACCAATGGATAAACTAACGGAAACTGCTTTTTGACATTAAAAGACAGGAGAAAT +TATATTTAACTAAGTAAAAGTTAAGTCAGAATTACTTGGGTGATGTGATTCAATTTAGTT +AAAGGATGATAtagagaaaatacattatttagcATTATTTCTTCAGCTATAATGAATTGC +TATAGAAATCAGGCAGATCTTTCTAATGTGTATTGATTGGTCTTTTCAGCTACTCTGAAC +AGATTACTAAGGCCATCTCCTCATCTCTAAGGGAGAAAAATAGTCTGTAGATGAATAATG +TAAGGTAAAGAGTTGCATGTCAGTCTTTGTAATTATTTACACTTTAACTTTCTCCAGAAC +TCAGACATGATTTCAACATGGTGTtagatttgtgcattttattttcctgacCACCTCATT +CCAGCCAATGTATGGTTATCCACTCTGTGTgccaaaaccaatcatgcctttcacGGCCCT +TTAGTTCAGAGAAGTTCTGCACTGATTTTTAGTCTCTTGATGTCTCAATCTTACATGTAT +AccaatcacaatggaataaagtGTTGAGTTGTACTGTGA +>rna-NM_006622.4 CDS=128-2185 Dbxref=GeneID:10769,Genbank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;Name=NM_006622.4;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006622.4;description=polo like kinase 2;gene_biotype=protein_coding;gene_synonym=hPlk2,hSNK,SNK;CDS_Dbxref=CCDS:CCDS3974.1,GeneID:10769,Genbank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;CDS_Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;CDS_gbkey=CDS;CDS_product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2 +GCACAAGTGGACCGGGGTGTTGGGTGCTAGTCGGCACCAGAGGCAAGGGTGCGAGGACCA +CGGCCGGCTCGGACGTGTGACCGCGCCTAGGGGGTGGCAGCGGGCAGTGCGGGGCGGCAA +GGCGACCATGGAGCTTTTGCGGACTATCACCTACCAGCCAGCCGCCAGCACCAAAATGTG +CGAGCAGGCGCTGGGCAAGGGTTGCGGAGCGGACTCGAAGAAGAAGCGGCCGCCGCAGCC +CCCCGAGGAATCGCAGCCACCTCAGTCCCAGGCGCAAGTGCCCCCGGCGGCccctcacca +ccatcaccaccattcgcACTCGGGGCCGGAGATCTCGCGGATTATCGTCGACCCCACGAC +TGGGAAGCGCTACTGCCGGGGCAAAGTGCTGGGAAAGGGTGGCTTTGCAAAATGTTACGA +GATGACAGATTTGACAAATAACAAAGTCTACGCCGCAAAAATTATTCCTCACAGCAGAGT +AGCTAAACCTCATCAAAGGGAAAAGATTGACAAAGAAATAGAGCTTCACAGAATTCTTCA +TCATAAGCATGTAGTGCAGTTTTACCACTACTTCGaggacaaagaaaacatttacattcT +CTTGGAATACTGCAGTAGAAGGtCAATGGCTCATATTTTGAAAGCAAGAAAGGTGTTGAC +AGAGCCAGAAGTTCGATACTACCTCAGGCAGATTGTGTCTGGACTGAAATACCTTCATGA +ACAAGAAATCTTGCACAGAGATCTCAAACTAGGGAACTTTTTTATTAATGAAGCCATGGA +ACTAAAAGTTGGGGACTTCGGTCTGGCAGCCAGGCTAGAACCCTTGGAACACAGAAGGAG +AACGATATGTGGTACCCCAAATTATCTCTCTCCTGAAGTCCTCAACAAACAAGGACATGG +CTGTGAATCAGACATTTGGGCCCTGGGCTGTGTAATGTATACAATGTTACTAGGGAGGCC +CCCATTTGAAACTACAAATCTCAAAGAAACTTATAGGTGCATAAGGGAAGCAAGGTATAC +AATGCCGTCCTCATTGCTGGCTCCTGCCAAGCACTTAATTGCTAGTATGTTGTCCAAAAA +CCCAGAGGATCGTCCCAGTTTGGATGACATCATTCGACATGACTTTTTTTTGCAGGGCTT +CACTCCGGACAGACTGTCTTCTAGCTGTTGTCATACAGTTCCAGATTTCCACTTATCAAG +CCCAGCTAAGAATTTCTTTAAGAAAGCAGCTGCTGCTCTTTTTGGTGGCAAAAAAGACAA +AGCAAGATATATTGACACACATAATAGAGTGTCTAAAGAAGATGAAGACATCTACAAGCT +TAGGCATGATTTGAAAAAGACTTCAATAACTCAGCAACCCAGCAAACACAGGACAGATGA +GGAGCTCCAGCCACCTACCACCACAGTTGCCAGGTCTGGAACACCCGCAGTAGAAAACAA +GCAGCAGATTGGGGATGCTATTCGGATGATAGTCAGAGGGACTCTTGGCAGCTGTAGCAG +CAGCAGTGAATGCCTTGAAGACAGTACCATGGGAAGTGTTGCAGACACAGTGGCAAGGGT +TCTTCGGGGATGTCTGGAAAACATGCCGGAAGCTGATTGCATTCCCAAAGAGCAGCTGAG +CACATCATTTCAGTGGGTCACCAAATGGGTTGATTACTCTAACAAATATGGCTTTGGGTA +CCAGCTCTCAGACCACACCGTCGGTGTCCTTTTCAACAATGGTGCTCACATGAGCCTCCT +TCCAGACAAAAAAACAGTTCACTATTACGCAGAGCTTGGCCAAtgctcagttttcccagc +aacagaTGCTCCTGAGCAATTTATTAGTCAAGTGACGGTGCTGAAATACTTTTCTCATTA +CATGGAGGAGAACCTCATGGATGGTGGAGATCTGCCTAGTGTTACTGATATTCGAAGACC +TCGGCTCTACCTCCTTCAGTGGCTAAAATCTGATAAGGCCCTAATGATGCTCTTTAATGA +TGGCACCTTTCAGgtgaATTTCTACCATGATCATACAAAAATCATCATCTGTAGCCAAAA +TGAAGAATACCTTCTCACCTACATCAATGAGGATAGGATATCTACAACTTTCAGGCTGAC +AACTCTGCTGATGTCTGGCTGTTCATCAGAATTAAAAAATCGAATGGAATATGCCCTGAA +CATGCTCTTACAAAGATGTAACTGAAAGACTTTTCGAATGGACCCTATGGGACTCCTCTT +TTCCACTGTGAGATCTACAGGGAAGCCAAAAGAATGATCTAGAGTATGTTGAAGAAGATG +GACATGTGGTGGTACGAAAACAATTCCCCTGTGGCCTGCTGGACTGGTTGGAACCAGAAC +AGGCTAAGGCATACAGTTCTTGACTTTGGACAATCCAAGAGTGAACCAGAATGCAGTTTT +CCTTGAGATACCTGTTTTAAAAGGTTTTTCAGACAATTTTGCAGAAAGGTGCATTGATTC +TTAAATTCTCTCTGTTGAGAGCATTTCAGCCAGAGGACTTTGGAACTGTGAATATACTTC +ctgaaggggagggagaagggaggaagctCCCATGTTGTTTAAAGGCTGTAATTGGAGCAG +CTTTTGGCTGCGTAACTGTGAACTATggccatatataattttttttcattaatttttgaa +gataCTTGTGGCTGGAAAAGTGCATTCCTtgttaataaactttttatttattacagCCCA +AAGAGCAGTATTTATtatcaaaatgtctttttttttatgttgaccATTTTAAACCGTTGG +CAATAAAGAGTATGAAAACGCAGAAA +>rna-NM_130899.3 CDS=97-1914 Dbxref=GeneID:153745,Genbank:NM_130899.3,HGNC:HGNC:28397;Name=NM_130899.3;gbkey=mRNA;gene=GARIN3;product=golgi associated RAB2B interactor family member 3;tag=RefSeq Select;transcript_id=NM_130899.3;gene_biotype=protein_coding;gene_synonym=FAM71B,GARI-L3;CDS_Dbxref=CCDS:CCDS4335.1,GeneID:153745,Genbank:NP_570969.2,HGNC:HGNC:28397;CDS_Name=NP_570969.2;CDS_gbkey=CDS;CDS_product=protein FAM71B;protein_id=NP_570969.2 +AGAAGTCCTGTAGGGAGATGGGCAGTTACcttctctccgtctctctctcggGGACTCTAT +TTGTGGCTGGTGGAGCTGTCTTAAACGAAGAGAACCATGAGCAATGAATCTTGTTTACCT +TATTACACAGCCCACAGCTACTCTTCAATGAGTGCGTTCAAAACCTCCATGGGGGACCTG +CAACGACAATTGTACAACAGAGGAGAGTACAACATTTTCAAGTATGCACCAATGTTCGAG +AGTAATTTTATTCAGATAAACAAAAAGGGAGAGGTGATTGATGTACACAACCGTGTCCGa +atggtgacagtgggcatcgtCTGCACCAGCCCCATCCTCCCACTGCCTGACGTCATGGTT +CTGGCCCAACCAACTAAAATCTGTGAACAGCATGTCAGATGGGGCCGGTTTGCCAAGGGG +AGAGGTCGCAGGCCCGTCAAGACTCTAGAGCTCACGAGACTGCTTCCCTTGAAATTTGTG +AAGATCTCCATCCACGATCATGAGAAACAGCAGCTGCGCCTGAAACTCGCCACTGGCCGT +ACTTTTTATCTGCAGTTGTGTCCCTCTTCTGACACACGGGAAGATCTCTTTTGCTATTGG +GAAAAACTTGTCTATCTCCTGAGGCCACCAGTAGAGAGTTACTGCAGTACCCCAACACTT +CTATCTGGGGACGCACCACCCGAAGACAACAAAAGCCTAGTGGCTGCAGAGCTCCACAGA +GAAGGGGATCAGAGTGAGACTGGGCTCTACAAGCCTTGTGATGTATCTGCAGCCACCTCT +TCTGCTTATGCTGGGGGAGAGGGAATCCAACATGCCTCCCACGGAACGGCTAGTGCGGCT +TCTCCATCCACGAGCACTCCAGGGGCTGCTGAAGGAGGAGCAGCAAGGACAGCAGGTGGC +ATGGCAGTGGCAGGAACAGCAACAGGACCTAGAACAGATGTGGCAATAGCAGGGGCAGCA +ATGAGTCCTGCAACAGGTGCTATGAGCATAGCAACAACCAAATCTGCAGGCCCAGGTCAA +GTGACCACAGCGCTGGCGGGAGCAGCTATCAAAAATCCAGGAGAAAATGAATCCAGCAAG +TCCATGGCAGGTGCTGCCAACATATCCTCAGAGGGTATTAGCTTGGCCTTGGTGGGTGCT +GCAAGCACCTCCTTGGAAGGTACTTCCACCTCGATGGCGGGGGCCGCCAGTCTCTCCCAA +GACAGCAGCTTGAGTGCGGCGTTTGCAGGCAGTATTACGACCAGCAAGTGTGCAGCAGAA +AGAACTGAAGGACCAGCAGTGGGACCCCTCATCTCCACCTTGCAAAGCGAAGGCTACATG +AGTGAACGAGATGGAAGCCAGAAAGTTTCCCAGCCCAGTGCTGAAGTCTGGaatgaaaac +aaggaaagaagagaaaagaaggacaGACATCCCAGTAGGAAAAGTTCTCATCACCGCAAG +GCAGGTGAAAGTCACCGCAGGAGAGCGGGGGACAAGAATCAGAAAGCGTCTTCCCACCGG +TCCGCATCTGGCCATAAAAACACGAGagatgacaaaaaagaaaaagggtacAGCAACGTA +AGGGGCAAGCGACATGGCTCCTCTCGCAAGAGCTCCACCCACAGCTCCACCAAAAAGGAG +TCGAGAACAACTCAGGAACTGGGGAAGAACCAATCTGCATCTAGCACAGGAGCTTTACAA +AAGAAAGCCAGTAAGATCAGCTCTTTTTTAAGGAGCCTCAGGGCCACTCCTGGTTCAAAA +ACAAGGGTCACATCACATGACAGAGAGGTAGATATCGTGGCTAAGATGGTGGAGAAGCAA +AACATAGAGGCCAAAGTGGAGAAAGCCCAGGgtggccaggagctggagatgaTCAGTGGC +ACTATGACATCCGAGAAGACGGAGATGATCGTCTTTGAAACCAAATCCATTTAAAGAGGA +GCCAGGGCTACAACCGCCCAGGGATCTGGAAGTATCCCTAGAGGAGCCCATCCCAGCTTT +CTTTACTGCAGTTCAAATAATAAAGGAAATCGTACAACTCCAAAAGAAATACAATCTCCT +GCTTGAATTTTTCTGCCCATAGCCTGGTGGTGACCTCACAGTGGCTTCTGTGATGGTGGC +TATGCTACAGCTGGAGACCCCAGCCTCCAGGCAAGTAGAGCTCCACCACCCGCCCACGGC +CAGCAGAGCCAACGTGAGTGTTCAGCTTTGCCTCAATCCCTTTTGCTTCCCCGAGACTGT +CAAAGCCACAGACTAAGAGCTGGGATGCATGGCCACCACCATGTCCCCTCGCCCATTCTC +CTCTTTTCCCTGAATGCCCCTGAACATGGACATTCAGTCCAGTTCTTAGCCTATGCAGAG +ACAGGATTCACATCCCCTCAGGGGATATTCAGGGTAGGAAGGAGCAATACAGCAGTATTT +GTAGGCAATTAGAATAGGAAATCTATTCTTCTAGATCAGGAATTGGCAAATCATGTTCTG +AGGTCCAAATCTTACCAGCTGCCTggatttgtaaataaagttttattggaacata +>rna-NM_001762.4 CDS=85-1680 Dbxref=GeneID:908,Genbank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;Name=NM_001762.4;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001762.4;description=chaperonin containing TCP1 subunit 6A;gene_biotype=protein_coding;gene_synonym=CCT-zeta,CCT-zeta-1,CCT6,Cctz,HTR3,MoDP-2,TCP-1-zeta,TCP20,TCPZ,TTCP20;CDS_Dbxref=CCDS:CCDS5523.1,GeneID:908,Genbank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;CDS_Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;CDS_gbkey=CDS;CDS_product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1 +AGAAGACCCGGATAGTTCCTCCCGGCCACGCCGCGCCGGCTCTGGGCACTCAGCATCGTT +TCCTTTTCCTCCGCTGGAGCAGCTATGGCGGCGGTGAAGACCCTGAACCCCAAGGCCGAG +GTGGCCCGAGCGCAGGCGGCGCTGGCGGTCAACATCAGCGCAGCGCGGGGTCTGCAGGAC +GTGCTAAGGACCAACCTGGGGCCCAAGGGCACCATGAAGATGCTCGTTTCTGGCGCTGGA +GACATCAAACTTACTAAAGACGGCAATGTGCTGCTTCACGAAATGCAAATTCAACACCCA +ACAGCTTCCTTAATAGCAAAGGTAGCAACAGCCCAGGATGATATAACTGGTGATGGTACG +ACTTCTAATGTCCTAATCATTGGAGAGCTGCTGAAACAGGCGGATCTCTACATTTCTGAA +gGCCTTCATCCTAGAATAATCACTGAAGGATTTGAAGCTGCAAAGGAAAAGGCCCTTCAG +TTTTTGGAAGAAGTCAaagtaagcagagagatggacaGGGAAACACTTATAGATGTGGCC +AGAACATCTCTTCGTACTAAAGTTCATGCTGAACTTGCAGATGTCTTAACAGAGGCTGTA +GTGGACTCCATTTTGGCCATTAAAAAGCAAGATGAACCTATTGATCTCTTCATGATTGAG +ATCATGGAGATGAAACATAAATCTGAAACTGATACAAGCTTAATCAGAGGGCTTGTTTTG +GACCACGGAGCACGGCATCCTGATATGAAGAAAAGGGTGGAGGATGCATACATCCTCACT +TGTAACGTGTCATTAGAGTATGAGAAAACagaaGTGAATTCTGGCTTTTTTTACAAGAgt +gcagaagagagagaaaaactcgTGAAAGCTGAAAGAAAATTCATTGAAGAtagggttaaa +aaaataatagaactgAAAAGGAAAGTCTGTGGCGATTCAGATAAAGGATTTGTTGTTATT +AATCAAAAGgGAATTGACCCCTTTTCCTTAGATGCtctttcaaaagaaggcatagtTGCT +CTGCGCAGAGCTAAAAGGAGAAATATGGAGAGGCTGACTCTTGCTTGTGGTGGGGTAGCC +CTGAATTCTTTTGACGACCTAAGTCCTGACTGCTTGGGACATGCAGGACTTGTATATGAG +TATACATTGGGAGAAGAGAAGTTTACCTTTATTGAGAAATGTAACAACCCTCGTTCTGTC +ACATTATTGATCAAAGGACCAAATAAGCACACACTCACTCAGATCAAAGATGCAGTGAGG +GACGGCTTGAGGGCTGTCAAAAATGCTATTGATGATGGCTGTGTGGTTCCAGGTGCTGGT +GCCGTGGAAGTGGCAATGGCAGAAGCCCTGATTAAACATAAGCCCAGTGTAAAGGGCAGG +GCACAGCTTGGAGTCCAAGCATTTGCTGATGCATTGCTCATTATTCCCAAGGTTCTTGCT +CAGAACTCTGGTTTTGACCTTCAGGAAACATTAGTTAAAATTCAAGCAGAACATTCAGAA +TCAGGTCAGCTTGTGGGTGTGGACCTGAACACAGGTGAGCCAATGGTGGCAGCAGAAGTA +GGCGTATGGGATAACTATTGTGTAAAGAAACAGCTTCTTCACTCCTGCACTGTGATTGCC +ACCAACATTCTCTTGGTTGATGAGATCATGCGAGCTGGAATGTCTTCTCTGAAAGGTTGA +ATTGAAGCTTCCTCTGTATCTGAATCTTGAAGACTGCAAAGTGATCCTGAGGATTACAGC +TGTGGAATTTTTGTCCAAgcttcaaataattttgaaagaaattttccCATATGAAAAAAG +GAGAGAACACTGGCATCTGTTGAAATTTGGAAGTTCTgaaattatagtatttttaaaaat +tgcactgAAGTGTATACACATAAAGCAGGTCTTTTATCCAGTGAACAGGATGTTTTGCTT +TAGCAGCAGTGACATAAAATTCCATGTTAGATAAGCATATGTTACTTACcttgttattaa +atatttcttgaaaagcaaattttaatgGTTTAATTTTATGTGGACGTATGTTAAATTATC +CAACTACCCTATTGTTAagcatttggttttaaaatttttatgctaATATAAATGctcaag +taatttaaaatattgaaagcatCCCTGTTGGTATAAATTTCTGAGTAAATGCATTGGATC +AGTTGGACTTTGAACGCCTTTGAAATGGCTTTGCTAAAATGCTCCCGCCACAAAGTTGTA +GGAAATGGGAAGAGGAGTCAACTAGAGGCAAGGGAGTTGAGAGAGCTGCAACTGTAAAGG +GCAAGAACAGGCAGAGGTAAAAAGATGATGGAAGGTGTGGTGACTAAGGGCCACGGTTAT +TGGGTGAAATTTGAGATTGTAGGCCAACTGTATTTTCAAGCTTCTGAACTTAGGCAAAAT +ATTCATCGCAAAGTCTCTAGCGTCATATTTTTCTCACCCAAATTACGTTTCCACGagatt +atttatatatagttGGTCTATCTCTGCAGTCCTTGAAGGTGAAGTTGTGTGTTACTAGGC +TGTGTTTTGGGATGTCAGCAGTGGCCTGAAGTGAGTTGTGCAATAAATGTTAAGTTGAAA +CCTC +>rna-NM_004486.6 CDS=32-3040 Dbxref=GeneID:2801,Genbank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;Name=NM_004486.6;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6;description=golgin A2;gene_biotype=protein_coding;gene_synonym=GM130;CDS_Dbxref=CCDS:CCDS6896.2,GeneID:2801,Genbank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;CDS_Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;CDS_gbkey=CDS;CDS_product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +GACTTCCGCAGTGGTTGCCGGGATCGCGCTGATGTGGCCCCAACCCCGCCTCCCTCCCCG +CCCCGCGATGTCGGAAGAAACCCGACAGAGCAAATTGGCCGCAGCGAAGAAAAAGTTGAG +AGAATATCAGCAGAGGAATAGCCCTGGTGTTCCTACAGGAgcgaaaaagaagaagaaaat +aaaaaatggcagTAACCCTGAGACAACCACTTCTGGTGGTTGCCACTCACCTGAGGATAC +ACCCAAGGACAATGCTGCTactctacaaccatctgatgaCACCGTGTTACCTGGCGGTGT +CCCTTCCCCTGGTGCCAGTCTCACTAGCATGGCGGCATCTCAGAATCATGATGCTGACAA +TGTCCCTAATCTCATGGATGAAACCAAGACTTTCTCATCAACCGAGAGCCTGCGACAACT +CTCCCAACAGCTCAATGGTCTTGTTTGTGAGTCTGCGACATGTGTCAATGGGGAGGGCCC +TGCATCGTCTGCTAACCTGAAGGATCTGGAGAGCCGGTACCAACAGCTAGCGGTAGCCCT +GGACTCCAGCTAtgtaacaaacaaacaactcaataTCACGATAGAGAAATTGAAACAACA +GAACCAAGAAATTACGGATCAGTTGGAAGAAgaaaagaaagaatgccaCCAAAAGCAGGG +AGCCCTAAGGGAGCAGTTACAGGTTCACATTCAGACCATAGGGATCCTCGTATCAGAGAA +AGCTGAGTTACAGACAGCCCTGGCTCACACTCAGCATGCTGCCAGGCAGAAAGAAGGAGA +GTCTGAAGATCTGGCCAGCCGCCTGCAGTATTCCCGGCGGCGTGTGGGAGAGTTGGAGCG +GGCTCTCTCTGCTGTCTCCACGCAGCAGAAGAAGGCAGACAGGTACAACAAGGAGTTAAC +CAAAGAGAGAGACGCCCTCAGGCTGGAGTTATACAAGAACACCCAAAGCAATGAGGACCT +GAAGCAAGAGAAATCAGAATTGGAAGAGAAGCTTCGGGTCCTAGTGACTGAGAAGGCTGG +CATGCAGCTTAACTTGGAAGAATTGCAAAAGAAGTTAGAGATGACGGAACTCCTGCTTCA +ACAGTTTTCAAGCCGGTGTGAAGCCCCTGATGCTAACCAGCAGTTACAGCAGGCCATGGA +GGAGCGGGCACAGCTGGAAGCACACCTGGGGCAGgtAATGGAGTCGGTTAGACAACTACA +AATGGAGAGAGATAAATATGCGGAGAATCTCAAAGGAGAGAGCGCCATGTGGCGGCAGAG +GATGCAGCAGATGTCAGAGCAGGTGCACACATTGAGAGAGGAGAAGGAATGTAGCATGAG +TCGGGTACAGGAGCTGGAGACGAGCTTGGCTGAACTGAGGAACCAGATGGCTGAACCCCC +GCCCCCAGAGCCCCCAGCAGGGCCCTCCGAGGTGGAGCAGCAGCTACAAGCGGAGGCTGA +GCACCTGCGGAAGGAGCTGGAGGGTCTGGCAGGACAGCTTCAAGCCCAGGTGCAAGACAA +TGAGGGCTTGAGTCGCCTGAAccgggagcaggaggagaggctgcTGGAGCTGGAGCGGGC +GGCCGAGCTCTGGGGGGAGCAGGCGGAGGCGCGCAGGCAAATCCTGGAGACCATGCAGAA +CGACCGCACTACCATCAGCCGCGCACTCTCCCAGAACCGGGAGCTCAAGGAGCAGCTGGC +TGAGCTGCAGAGCGGATTTGTAAAGCTGACTAATGAGAACATGGAGATCACCAGCGCACT +GCAGTCGGAGCAGCACGTCAAGAGGGAGCTGGGAAAGAAGCTGGGCGAGCTGCAGGAGAA +GCTGAGCGAGCTGAAGGAAACGGTGGAGCTGAAGAGCCAAGAGGCTCAAAGTCTGCAGCA +GCAGCGAGACCAGTACCTGGGACACCTGCAGCAGTATGTGGCCGCCTATCAGCAGCTGAC +CTCTGAGAAGGAGGTGCTGCATAATCAGCTACTGCTGCAGACCCAGCTCGTGGaccagct +gcagcagcaggaagCTCAGGGCAAAGCGGTGGCCGAGATGGCCCGCCAAGAGTTGCAGGA +AACCCAGGAGCGCCTGGAAGCTGCCACCCAGCAGAATCAGCAGCTACGGGCCCAGTTGAG +CCTCATGGCTCACCCTGGGGAAGGAGATGGACTGGaccgggaggaggaggaggatgagga +ggaggaggaggaggaggcggtggCAGTACCTCAGCCCATGCCAAGCATCCCGGAGGACCT +GGAGAGCCGGGAAGCCATGGTGGCATTTTTCAACTCAGCTGTAGCCAGTGCCGAGGAGGA +GCAGGCAAGGCTACGTGGGCAGCTGAAGGAGCAAAGGGTGCGCTGCCGGCGCCTGGCTCA +CCTGCTGGCCTCGGCCCAGAAGGAGCCTgaggcagcagccccagccccagggaccGGGGG +TGATTCTGTGTGTGGGGAGACCCACCGGGCCCTGCAGGGGGCCATGGAGAAGCTGCAGAG +CCGCTTTATGGAGCTCATGCAGGAGAAGGCAGACCTGAAGGAGAGGGTAGAGGAACTGGA +ACATCGCTGCATCCAGCTTTCTGGAGAGACAGACACCATTGGAGAGTACATTGCACTGTA +CCAGAGCCAGAGGGCAGTGCTGAAGGAGCGGCACCGGGAGAAGGAGGAGTACATCAGCAG +GCTGGCCCAAGACAAGGAGGAGATGAAGGTGAAGCTGCTGGAGCTGCAGGAGCTGGTCTT +ACGGCTTGTGGGCGACCGCAACGAGTGGCATGGCAGATTCCTGGCAGCTGCCCAGAACCC +TGCTGATGAGCCCACTTCAGGGGCCCCAGCCCCCCAGGAACTTGGGGCTGCCAACCAGCA +GGGTGATCTTTGCGAGGTGAGCCTCGCCGGCAGTGTGGAGCCTGCccaaggagaggccag +ggagggttCTCCCCGTGACAACCCCACTGCACAGCAGATCATGCAGCTGCTTCGTGAGAT +GCAGAACCCCCGGGAGCGCCCAGGCTTGGGCAGCAACCcctgcattccttttttttaCCG +GGCTGACGAGAATGATGAGGTGAAGATCACTGTCATCTAAAAGCCGGCTACTGTCAGCAA +AGCCTGAAGAAGTGGGGCTGGATACCCTGCCCCCACCATATCCCTACCATCCCTTCTCAG +TCAACCCTTTACCCTTACAGTAGCAAGCATAGACCCCTGTCTAACGGGGGTAGACAGGTG +CAGATGAGGTGAAGATCACTGTCATCTAAAAGCTGgccactaaattaaaaaaaaattaaa +agttatggGATTAAAAAAAGTTATGGGATAAAAAAGGTTATGGGTAACTTATGGTATAAA +AGTTAtgaaaaaaggccaggtgcagtggctcacgcctgtaatcccagcacttttgggagg +ctgaggttgggagttcaagaccagcctggtcaacatggtgaaactgtgtctctactaaaa +atacaaaaattagccaggcatggtggcacgtgcctgtaatcccagctactcgggaggctg +aggcaggagaatcgcttgaacctgggaggtggaggttgcagtgggctgagatcacgccat +tgcactccagcctgggcgacagagtgagactctgtctcaaaaaaaaaaaaaattatgaaa +aaagttATGGGATTAAAGAAAGTcaggataaaaattttaaaaagcaggccaCTGTCAGCA +AAGCCTGGAGAAGTGGGGCCGGAGGCTCCGCCCCCATCATGTGCCTGCCACCCCTTCCCA +GTCATCCCTTTACTCTTACAGTAGCAAATAAGACCCCTGTCTAATGGGGGGAGACAAATG +TGTAGACCCTTAGCCACCTTGGCCAGGGCTGACTCCTTAAATTTCTGGATGATGATGATT +GTTATTTAATAGCCAGAGGCTCATATAATTGGCCTCTTTGGAAGAGGCCTCATGGCCTCC +TTACTCTCACCAAAGCAATTTTTCCCTCAGGGGGGCTCCCATCTTCTTACACAgagaggc +agctgaggcaggacagtgggGCTAACTGTAGACCAGGCGAGGGCACGGGCTGCTGGGGTG +GCCCTGCTTCCCCAGTGTACATATTGTATCTGTGTAACATTTTGTATATTCCAGGGGTAG +GGCCGCCCCCTGTATCATACCTAGCAGAGGTTGGAGCTGGCACATGGGGAGGAGGTTCTA +ATAATTATTTGGGGCTGGGAAACTTATTTATTGATAGCATAGGACAGAGGAAGGAGGCGG +GGATGGGGTCGTGGCGCCCTGGTGATGCGACtcctgtttattttgctttttatttcggAA +TAAATGGATTTAGCCATA +>rna-NM_016569.4 CDS=976-3207 Dbxref=GeneID:6926,Genbank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;Name=NM_016569.4;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4;description=T-box transcription factor 3;gene_biotype=protein_coding;gene_synonym=TBX3-ISO,UMS,XHL;CDS_Dbxref=CCDS:CCDS9176.1,GeneID:6926,Genbank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;CDS_Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;CDS_gbkey=CDS;CDS_product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +AGACGCCCGGTGAATTCTAGAGGCGGCGGAGGGTGGCGAGGAGCTCTCGCTTTCTCTCGC +TCCCTCCCTCTCcgactccgtctctctctctctctctctctctcccctccctctctttcc +ctctgttCCATTTTTTCCCCCTCTAAATCCTCCCTGCCCTGCGCGCCTGGACACAGATTT +AGGAAGCGAATTCGCTCACGTTTTAGgacaaggaagagagagaggcacGGGAGAAGAGCC +CAGCAAGATTTGGATTGAAACCGAGACACCCTCCGGAGGCTCggagcagaggaaggagga +ggagggcggCGAACGGAAGCCAGTTTGCAATTCAAGTTTTGATAGCGCTGGTAGAAGGGG +gtttaaatcagatttttttttttttaaaggagagagaCTTTTTCCGCTCTCTCGCTCCCT +GTTAAAGCCGGGTCTAGCACAGCTGCAGACGCCACCAgcgagaaagagggagaggaagac +agaTAGGGGGcgggggaagaagaaaaagaaaggtaaaaagtCTTCTAGGAGAACCTTTCA +CATTTGCAACAAAAGACCTAGGGGCTGGAGAGAGATTCCTGGGACGCAGGGCTGGAGTGT +CTATTTCGAGCTCAGCGGCAGGGCTCGGGCGCGAGTCGAGACCCTGCTCGCTCCTCTCGC +TTCTGAAACCGACGTTCAGGAGCGGCTTTTTAAAAACGCAAGGCACAAGGACGGTCACCC +GCGCGACTATGTTTGCTGATTTTTCGCCTTGCCCTCTTTAAAAGCGGCCTCCCATTCTCC +AAAAGAcacttcccctcctccctttGAAGTGCATTAGTTGTGATTtctgcctccttttct +tttttctttcttttttgttttgctttttccccCCTTTTGAATTATGTGCTGctgttaaac +aacaacaaaaaaacaacaaaacacagcaGCTGCGGACTTGTCCCCGGCTGGAGCCCAGCG +CCCCGCCTGGAGTGGATGAGCCTCTCCATGAGAGATCCGGTCATTCCTGGGACAAGCATG +GCCTACCATCCGTTCCTACCTCACCGGGCGCCGGACTTCGCCATGAGCGCGGTGCTGGGT +CACCAGCCGCCGTTCTTCCCCGCGCTGACGCTGCCTCCCAACGGCGCGGCGGCGCTCTCG +CTGCCGGGCGCCCTGGCCAAGCCGATCATGGATCAATTGGTGGGGGCGGCCGAGACCGGC +ATCCCGTTCTCCTCCCTGGGGCCCCAGGCGCATCTGAGGCCTTTGAAGACCATGGAGCCC +GAAGAAGAGGTGGAGGACGACCCCAAGGTGCACCTGGAGGCTAAAGAACTTTGGGATCAG +TTTCACAAGCGGGGCACCGAGATGGTCATTACCAAGTCGGGAAGGCGAATGTTTCCTCCA +TTTAAAGTGAGATGTTCTGGGCTGGATAAAAAagccaaatacattttattgatgGACATT +ATAGCTGCTGATGACTGTCGTTATAAATTTCACAATTCTCGGTGGATGGTGGCTGGTAAG +GCCGACCCCGAAATGCCAAAGAGGATGTACATTCACCCGGACAGCCCCGCTACTGGGGAA +CAGTGGATGTCCAAAGTCGTCACTTTCCACAAACTGAAACTCACCAACAACATTTCAGAC +AAACATGGATTTACTTTGGCCTTCCCAAGTGATCACGCTACGTGGCAGGGGAATTATAGT +TTTGGTACTCAGACTATATTGAACTCCATGCACAAATACCAGCCCCGGTTCCACATTGTA +AGAGCCAATGACATCTTGAAACTCCCTTATAGTACATTTCGGACATACTTGTTCCCCGAA +ACTGAATTCATCGCTGTGACTGCATACCAGAATGATAAGATAACCCAGTTAAAAATAGAC +AACAACCCTTTTGCAAAAGGTTTCCGGGACACTGGAAATGGCCGAAGAGAAAAAAGAAAA +CAGCTCACCCTGCAGTCCATGAGGGTGTTTGATGAAAGACACAAAAAGGAGAATGGGACC +TCTGATGAGTCCTCCAGTGAACAAGCAGCTTTCAACTGCTTCGCCCAGGCTTCTTCTCCA +GCCGCCTCCACTGTAGGGACATCGAACCTCAAAGATTTATGTCCCAGCGAGGGTGAGAGC +GACGCCGAGGCCGAGAGCAAAGAGGAGCATGGCCCCGAGGCCTGCGACGCGGCCAAGATC +TCCACCACCACGTCGGAGGAGCCCTGCCGTGACAAGGGCAGCCCCGCGGTCAAGGCTCAC +CTTTTCGCTGCTGAGCGGCCCCGGGACAGCGGGCGGCTGGACAAAGCGTCGCCCGACTCA +CGCCATAGCCCCGCCACCATCTCGTCCAGCACTCGCGGCCTGGGCGCGGAGGAGCGCAGG +AGCCCGGTTCGCGAGGGCACAGCGCCGGCCAAGGTGGAAGAGGCGCGCGCGCTCCCGGGC +AAGGAGGCCTTCGCGCCGCTCACGGTGCAGACGGACGCGGCCGCCGCGCACCTGGCCCAG +GGCCCCCTGCCTGGCCTCGGCTTCGCCCCGGGCCTGGCGGGCCAACAGTTCTTCAACGGG +CACCCGCTCTTCCTGCACCCCAGCCAGTTTGCCATGGGGGGCGCCTTCTCCAGCATGGCG +GCCGCTGGCATGGGTCCCCTCCTGGCCACGGTTTCTGGGGCCTCCACCGGTGTCTCGGGC +CTGGATTCCACGGCCATGGCCTCTGCCGCTGCGGCGCAGGGACTGTCCGGGGCGTCCGCG +GCCACCCTGCCCTTCCACCTCCAGCAGCACGTCCTGGCCTCTCAGGGCCTGGCCATGTCC +CCTTTCGGAAGCCTGTTCCCTTACCCCTACACGTACATGGCCGCAGCGGCGGCCGCCTCC +TCTGCGGCAGCCTCCAGCTCGGTGCACCGCCACCCCTTCCTCAATCTGAACACCATGCGC +CCGCGGCTGCGCTACAGCCCCTACTCCATCCCGGTGCCGGTCCCGGACGGCAGCAGTCTG +CTCACCACCGCCCTGCCCTCCATGGCGGCGGCCGCGGGGCCCCTGGACGGCAAAGTCGCC +GCCCTGGCCGCCAGCCCGGCCTCGGTGGCAGTGGACTCGGGCTCTGAACTCAACAGCCGC +TCCTCCACGCTCTCCTCCAGCTCCATGTCCTTGTCGCCCAAACTCTGCGCGGAGAAAGAG +GCGGCCACCAGCGAACTGCAGAGCATCCAGCGGTTGGTTAGCGGCTTGGAAGCCAAGCCG +GACAGGTCCCGCAGCGCGTCCCCGTAGACCCGTCCCAGACACGTCTTTTCATTCCAGTCC +AGTTCAGGCTGCCGTGCACTTTGTCGGATATAAAATAAACCACGGGCCCGCCATGGCGTT +AGCCCTTCCTTTTGCAGTTGCGTCTGGGAAGGGGCCCCGGACTCCCTCGAGAGAATGTGC +TAGAGACAGCCCCTGTCTTCTTGGCGTGGTTTATATGTCCGGGATCTGGATCAGATTCTG +GGGGCTCAGAAACGTCGGTTGCATTGAGCTACTGGGGGTAGGAGTTCCAACATTTATGTC +CAGAGCAACTTCCAGCAAGGCTGGTCTGGGTCTCTGCCCACCAGGCGGGGAGGTGTTCAA +AGACATCTCCCTCAGTGcggatttatatatatatttttccttcactgtGTCAagtggaaa +caaaaacaaaatctttcaaaaaaaaaatcgggACAAGTGAACACATTAACATGATTCTGT +TTGTGCAGATTAAAAACTTTATAGGGACTTGCATTATCGGTTCTCAATAAATTACTGAGC +AGCTTTGTTTGGGGAGGGAAGTCCCTACCATCCTTGTTTAGTCTATATTAAGAAAAtctg +tgtctttttaatattcttgtGATGTTTTCAGAGCCGCTGTAGGTCTCTTCTTGCATGTCC +ACAGTAATgtatttgtggtttttattttgaaCGCTTGCTTTTAGAGAGAAAACAATATAG +CCCCCTACCCTTTTCCCAATCCTTTGCCCTCAAATCAGTGACCCAAGGGAGGGGGGGATT +TAAAGGGAAGGAGTGGGCAAAAcacataaaatgaatttattatatCTAAGCTCTGTAGCA +GGATTCATGTCGTTCTTTGAcagttctttctctttcctgtatATGCAATaacaaggtttt +aaaaaaataataaagaagtgaGACTATTAGACAaagtatttatgtaattatttgatAACT +CTTGTAAATAGGTGGAATATGAATGCTTggaaaattaaactttaatttaTTGACATTGTA +CATAGCTCTGTGTAAATAGAATTGCAACTGTCAGGTTTTGTGTTCTTGTTTTCCTTTAGT +TGGGTTTATTTCCAGGTCACAGAATTGCTGTTAACACTAGAAAACACACTTCCTGCACCA +ACACCAATACCCTTTCAAAAGAGTTGTCtgcaacatttttgttttcttttttaatgtccA +AAAGTGGGGGAAAGTGCTATTTCCTATTTTCACCAAAATTGGGGAAGGAGTGCCACTTTC +CAGCTCCACTTCAAATTCCTTAAAATATAACTGAGAttgctgtggggagggaggagggca +gaggctgcggtttgactttttaatttttcttttgttatttgtatttgCTAGTCTCTGATT +TCCTCAAAACGAAGTGGAATTTACTACTGTTGTCAGTATCGGTGTTTTGAATTGGTGCCT +GCCTATAGAGATATATTCACAGTTCAAAAGTCAGGTGCTGAGAGATGGTTTAAAGACAAA +TTCATGAAGGTATATTTTGTGTTATAGTTGTTGATGAGTtctttggttttctgtattttt +ccccctctctttaaaacatcactgaaatttcaataaatttttattgaaatgtc +>rna-NM_001429.4 CDS=414-7658 Dbxref=GeneID:2033,Genbank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;Name=NM_001429.4;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_001429.4;description=E1A binding protein p300;gene_biotype=protein_coding;gene_synonym=KAT3B,MKHK2,p300,RSTS2;CDS_Dbxref=CCDS:CCDS14010.1,GeneID:2033,Genbank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;CDS_Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;CDS_gbkey=CDS;CDS_product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2 +GAGAAGGAGGAGGACAGCGCCGAGGAGGAAGAGGTTGATGGCGGCGGCGGAGCTCCGAGA +GACCTCGGCTGGGCAGGGGCCGGCCGTGGCGGGCCGGGGACTGCGCCTCTAGAGCCGCGA +GTTCTCGGGAATTCGCCGCAGCGGACGCGCTCGGCGAATTTGTGCTCTTGTGCCCTCCTC +CGGGCTTGGGCCCAGGCCCGGCCCCTCGCACTTGCCCTTACCTTTTCTATCGAGTCCGCA +TCCCTCTCCAGCCACTGCGACCCGGcgaagagaaaaaggaacttcCCCCACCCCCTCGGG +TGCCGTCGGAGCCCCCCAGCCCACCCCTGGGTGCGGCGCGGGGACCCCGGGCCGAAGAAG +AGATTTCCTGAGGATTCTGGTTTTCCTCGCTTGTATCTCCGAAAGAATTAAAAATGGCCG +AGAATGTGGTGGAACCGGGGCCGCCTTCAGCCAAGCGGCCTAAACTCTCATCTCCGGCCC +TCTCGGCGTCCGCCAGCGATGGCACAGATTTTGGCTCTCTATTTGACTTGGAGCACGACT +TACCAGATGAATTAATCAACTCTACAGAATTGGGACTAACCAATGGTGGTGATATTAATC +AGCTTCAGACAAGTCTTGGCATGGTACAAGATGCAGCTTCTAAACATAAACAGCTGTCAG +AATTGCTGCGATCTGGTAGTTCCCCTAACCTCAATATGGGAGTTGGTGGCCCAGGTCAAG +TCATGGCCAGCCAGGCCCAACAGAGCAGTCCTGGATTAGGTTTGATAAATAGCATGGTCA +AAAGCCCAATGACACAGGCAGGCTTGACTTCTCCCAACATGGGGATGGGCACTAGTGGAC +CAAATCAGGGTCCTACGCAGTCAACAGGTATGATGAACAGTCCAGTAAATCAGCCTGCCA +TGGGAATGAACACAGGGATGAATGCGGGCATGAATCCTGGAATGTTGGCTGCAGGCAATG +GACAAGGGATAATGCCTAATCAAGTCATGAACGGTTCAATTGGAGCAGGCCGAGGGCGAC +AGAATATGCAGTACCCAAACCCAGGCATGGGAAGTGCTGGCAACTTACTGACTGAGCCTC +TTCAGCAGGGCTCTCCCCAGATGGGAGGACAAACAGGATTGAGAGGCCCCCAGCCTCTTA +AGATGGGAATGATGAACAACCCCAATCCTTATGGTTCACCATATACTCAGAATCCTGGAC +AGCAGATTGGAGCCAGTGGCCTTGGTCTCCAGATTCAGACAAAAACTGTACTATCAAATA +ACTTATCTCCATTTGCTATGGACAAAAAGGCAGTTCCTGGTGGAGGAATGCCCAACATGG +GTCAACAGCCAGCCCCGCAGGTCcagcagccaggcctggtgactcCAGTTGCCCAAGGGA +TGGGTTCTGGAGCACATACAGCTGATCCAGAGAAGCGCAAGCTCATCCAGCAGCAGCTTG +TTCTCCTTTTGCATGCTCACAAGTGCCAGCGCCGGGAACAGGCCAATGGGGAAGTGAGGC +AGTGCAACCTTCCCCACTGTCGCACAATGAAGAATGTCCTAAACCACATGACACACTGCC +AGTCAGGCAAGTCTTGCCAAGtgGCACACTGTGCATCTTCTCGACAAATCATTTCACACT +GGAAGAATTGTACAAGACATGATTGTCCTGTGTGTCTCCCCCTCAAAAATGCTGGTGATA +AGAGAAATCAACAGCCAATTTTGACTGGAGCACCCGTTGGACTTGGAAATCCTAGCTCTC +TAGGGGTGGGTCAACAGTCTGCCCCCAACCTAAGCACTGTTAGTCAGATTGATCCCAGCT +CCATAGAAAGAGCCTATGCAGCTCTTGGACTACCCTATCAAGTAAATCAGATGCCGACAC +AACCCCAGGTGCAAGCAAAGAACCAGCAGAATCAGCAGCCTGGGCAGTCTCCCCAAGGCA +TGCGGCCCATGAGCAACATGAGTGCTAGTCCTATGGGAGTAAATGGAGGTGTAGGAGTTC +AAACGCCGAGTCTTCTTTCTGACTCAATGTTGCATTCAGCCATAAATTCTCAAAACCCAA +TGATGAGTGAAAATGCCAGTGTGCCCTCCCTGGGTCCTATGCCAACAGCAGCTCAACCAT +CCACTACTGGAATTCGGAAACAGTGGCACGAAGATATTACTCAGGATCTTCGAAATCATC +TTGTTCACAAACTcgTCCAAGCCATATTTCCTACGCCGGATCCTGCTGCTTTAAAAGACA +GACGGATGGAAAACCTAGTTGCATATGCTCGGAAAGTTGAAGGGGACATGTATGAATCTG +CAAACAATCGAGCGGAATACTACCACCTTCTAGCTGAGAAAATCTATAAGATCCAGAAAG +AACTAGAAGAAAAACGAAGGACCAGACTACAGAAGCAGAACATGCTACCAAATGCTGCAG +GCATGGTTCCAGTTTCCATGAATCCAGGGCCTAACATGGGACAGCCGCAACCAGGAATGA +CTTCTAATGGCCCTCTACCTGACCCAAGTATGATCCGTGGCAGTGTGCCAAACCAGATGA +TGCCTCGAATAACTCCACAATCTGGTTTGAATCAATTTGGCCAGATGAGCATGGCCCAGC +CCCCTATTGTACCCCGGCAAACCCCTCCTCTTCAGCACCATGGACAGTTGGCTCAACCTG +GAGCTCTCAACCCGcctatGGGCTATGGGCCTCGTATGCAACAGCCTTCCAACCAGGGCC +AGTTCCTTCCTCAGACTCAGTTCCCATCACAGGGAATGAATGTAACAAATATCCCTTTGG +CTCCGTCCAGCGGTCAAGCTCCAGTGTCTCAAgcACAAATGTCTAGTTCTTCCTGCCCGG +TGAACTCTCCTATAATGCCTCCAGGGTCTCAGGGGAGCCACATTCACTGTCCCCAGCTTC +CTCAACCAGCTCTTCATCAGAATTCACCCTCGCCTGTACCTAGTCGTACCCCCACCCCTC +ACCATACTCCCCCAAGCATAGGGGCTCAGCAGCCACCAGCAACAACAATTCCAGCCCCTG +TTCCTACACCTCCTGCCATGCCACCTGGGCCACAGTCCCAGGCTCTACATCCCCCTCCAA +GGCAGACACCTACACCACCAACAACACAACTTCCCCAACAAGtgcagccttcacttcctg +ctgcACCTTCTGCTGACCAGCCCCAGCAGCAGCCTCGCTCACAGCAGAGCACAGCAGCGT +CTGTTCCTACCCCAACAGCACCGCTGCTTCCTCCGCAGCCTGCAACTCCACTTTCCCAGC +CAGCTGTAAGCATTGAAGGACAGGTATCAAATCCTCCATCTACTAGTAGCACAGAAGTGA +ATTCTCAGGCCATTGCTGAGAAGCAGCCTTCCCAGGAAGTGAAGATGGAGGCCAAAATGG +AAGTGGATCAACCAGAACCAGCAGATACTCAGCCGGAGGATATTTCAGAGTCTAAAGTGG +AAGACTGTAAAATGGAATCTAccgaaacagaagagagaagcactgagttaaaaactgaaa +taaaagaggaggaaGACCAGCCAAGTACTTCAGCTACCCAGTCATCTCCGGCTCCAGGAC +AGTCAAAGAAAAAGAttttcaaaccAGAAGAACTACGACAGGCACTGATGCCAACTTTGG +AGGCACTTTACCGTCAGGATCCAGAATCCCTTCCCTTTCGTCAACCTGTGGACCCTCAGC +TTTTAGGAATCCCTGATTACTTTGATATTGTGAAGAGCCCCATGGATCTTTCTACCATTA +AGAGGAAGTTAGACACTGGACAGTATCAGGAGCCCTGGCAGTATGTCGATGATATTTGGC +TTATGTTCAATAATGCCTGGTTATATAACCGGAAAACATCACGGGTATACAAATACTGCT +CCAAGCTCTCTGAGGTCTTTGAACAAGAAATTGACCCAGTGATGCAAAGCCTTGGATACT +GTTGTGGCAGAAAGTTGGAGTTCTCTCCACAGACACTGTGTTGCTACGGCAAACAGTTGT +GCACAATACCTCGTGATGCCACTTATTACAGTTACCAGAACAGGTATCATTTCTGTGAGA +AGTGTTTCAATGAGATCCAAGGGGAGAGCGTTTCTTTGGGGGATGACCCTTCCCAGCCTC +AAACTACaataaataaagaacaatttTCCAAGAGAAAAAATGACACACTGGATCCTGAAC +TGTTTGTTGAATGTACAGAGTGCGGAAGAAAGATGCATCAGATCTGTGTCCTTCACCATG +AGATCATCTGGCCTGCTGGATTCGTCTGTGATGGCTGTTTAAAGAAAAGTGCACGAActa +ggaaagaaaataagttttctgCTAAAAGGTTGCCATCTACCAGACTTGGCACCTTTCTAG +AGAATCGTGTGAATGACTTTCTGAGGCGACAGAATCACCCTGAGTCAGGAGAGGTCACTG +TTAGAGTAGTTCATGCTTCTGACAAAACCGTGGAAGTAAAACCAGGCATGAAAGCAAGGT +TTGTGGACAGTGGAGAGATGGCAGAATCCTTTCCATACCGAACCAAAGCCCTCTTTGCCT +TTGAAGAAATTGATGGTGTTGACCTGTGCTTCTTTGGCATGCATGTTCAAGAGTATGGCT +CTGACTGCCCTCCACCCAACCAGAGGAGAGTATACATATCTTACCTCGATAGTGTTCATT +TCTTCCGTCCTAAATGCTTGAGGACTGCAGTCTATCATGAAATCCTAATTGGATATTTAG +AATATGTCAAGAAATTAGGTTACACAACAGGGCATATTTGGGCATGTCCACCAAGTGAGG +GAGATGATTATATCTTCCATTGCCATCCTCCTGACCAGAAGATACCCAAGCCCAAGCGAC +TGCAGGAATGGTACAAAAAAATGCTTGACAAGGCTGTATCAGAGCGTATTGTCCATGACT +ACAAGGATATTTTTAAACAAGCTACTGAAGATAGATTAACAAGTGCAAAGGAATTGCCTT +ATTTCGAGGGTGATTTCTGGCCCAATGTTCTGGAAGAAAGCATTAAGGAACTGgaacagg +aggaagaagagagaaaacgaGAGGAAAACACCAGCAATGAAAGCACAGATGTGACCAAGG +GAGACAGCAAAAATGctaaaaagaagaataataagAAAACCAGCAAAAATAAGAGCAGCC +TGAGTAGGGGCAACAAGAAGAAACCCGGGATGCCCAATGTATCTAACGACCTCTCACAGA +AACTATATGCCACCATGGAGAAGCATAAAGAGGTCTTCTTTGTGATCCGCCTCATTGCTG +GCCCTGCTGCCAACTCCCTGCCTCCCATTGTTGATCCTGATCCTCTCATCCCCTGCGATC +TGATGGATGGTCGGGATGCGTTTCTCACGCTGGCAAGGGACAAGCACCTGGAGTTCTCTT +CACTCCGAAGAGCCCAGTGGTCCACCATGTGCATGCTGGTGGAGCTGCACACGCAGAGCC +AGGACCGCTTTGTCTACACCTGCAATGAATGCAAGCACCATGTGGAGACACGCTGGCACT +GTACTGTCTGTGAGGATTATGACTTGTGTATCACCTGCTATAACACTAAAAACCATGACC +ACAAAATGGAGAAACTAGGCCTTGGCTTAGATGATGAGAGCAACAACCAGCAGGCTGCAG +CCACCCAGAGCCCAGGCGATTCTCGCCGCCTGAGTATCCAGCGCTGCATCCAGTCTCTGG +TCCATGCTTGCCAGTGTCGGAATGCCAATTGCTCACTGCCATCCTGCCAGAAGATGAAGC +GGGTTGTGCAGCATACCAAGGGTTGCAAACGGAAAACCAATGGCGGGTGCCCCATCTGCA +AGCAGCTCATTGCCCTCTGCTGCTACCATGCCAAGCACTGCCAGGAGAACAAATGCCCGG +TGCCGTTCTGCCTAAACATCAAGCAGAAGCTCCGGCAGCAACAGCTGCAGCACCGACTAC +AGCAGGCCCAAATGCTTCGCAGGAGGATGGCCAGCATGCAGCGGACTGGTGTGGTTGGGC +AGCAACAgggcctcccttcccccactcctgCCACTCCAACGACACCAACTGGCCAACAGC +CAACCACCCCGCAGACGCCCCAGCCCACTTCTCAGCCTCAGCCTACCCCTCCCAATAGCA +TGCCACCCTACTTGCCCAGGACTCAAGCTGCTGGCCCTGTGTCCCAGGGTAAGGCAGCAG +GCCAGGTGACCCCTCCAACCCCTCCTCAGACTGCTCAGCCACCCCTTCCAGGGCCCCCAC +CTGCAGCAGTGGAAATGGCAATGCAGATTCAGAGAGCAGCGGAGACGCAGCGCCAGATGG +CCCACGTGCAAATTTTTCAAAGGCCAATCCAACACCAGATGCCCCCGATGACTCCCATGG +CCCCCATGGGTATGAACCCACCTCCCATGACCAGAGGTCCCAGTGGGCATTTGGAGCCAG +GGATGGGACCGACAGGGATGCAGCAACAGCCACCCTGGAGCCAAGGAGGATTGCCTCAGC +CCCAGCAACTACAGTCTGGGATGCCAAGGCCAGCCATGATGTCAGTGGCCCAGCATGGTC +AACCTTTGAACATGGCTCCACAACCAGGATTGGGCCAGGTAGGTATCAGCCCACTCAAAC +CAGGCACTGTGTCTCAACAAGCCTTACAAAACCTTTTGCGGACTCTCAGGTCTCCCAGCT +CTCCCCTGCAGCAGCAACAGGTGCTTAGTATCCTTCACGCCAACCCCCAGCTGTTGGCTG +CATTCATCAAGCAGCGGGCTGCCAAGTATGCCAACTCTAATCCACAACCCATCCCTGGGC +AGCCTGGCATGCCCCAGGGGCAGCCAGGGCTACAGCCACCTACCATGCCAGGTCAGCAGG +GGGTCCACTCCAATCCAGCCATGCAGAACATGAATCCAATGCAGGCGGGCGTTCAGAGGG +CTGGCCTGCCCCAGCAGCAACCACAGCAGCAACTCCAGCCACCCATGGGAGGGATGAGCC +CCCAGGCTCAGCAGATGAACATGAACCACAACACCATGCCTTCACAATTCCGAGACATCT +TGAGACGACAGCAAATGatgcaacagcagcagcaacagggaGCAGGGCCAGGAATAGGCC +CTGGAATGGCCAACCATAACCAGTTCCAGCAACCCCAAGGAGTTGGCTACCcaccacagc +agcagcagcggaTGCAGCATCACATGCAACAGATGCAACAAGGAAATATGGGACAGATAG +GCCAGCTTCCCCAGGCCTTGGGAGCAGAGGCAGGTGCCAGTCTACAGGCCTATCAGCAGC +GACTCCTTCAGCAACAGATGGGGTCCCCTGTTCAGCCCAACCCCATGAGCCCCCAGCAGC +ATATGCTCCCAAATCAGGCCCAGTCCCCACACCTACAAGGCCAGCAGATCCCTAATTCTC +TCTCCAATCAAGTGCGCTCTCCCCAGCCTGTCCCTTCTCCACGGCCACAGTCCCAGCCCC +CCCACTCCAGTCCTTCCCCAAGgatgcagcctcagccttctccaCACCACGTTTCCCCAC +AGACAAGTTCCCCACATCCTGGACTGGTAGCTGCCCAGGCCAACCCCATGGAACAAGGGC +ATTTTGCCAGCCCGGACCAGAATTCAATGCTTTCTCAGCTTGCTAGCAATCCAGGCATGG +CAAACCTCCATGGTGCAAGCGCCACGGACCTGGGACTCAGCACCGATAACTCAGACTTGA +ATTCAAACCTCTCACAGAGTACACTAGACATACACTAGAGACACCTTGTAGTATTTTGGg +agcaaaaaaattattttctcttaacaAGACTTTTTgtactgaaaacaatttttttgaatc +TTTCGTAGCCTAAAAGACAATTTTCCTTGGAACACATAAGAACTGTGCAGTAGCCGTTTG +TGGTTTAAAGCAAACATGCAAGATGAACCTGAGGGATGATAGAatacaaagaatatattt +ttgttatggcTGGTTACCACCAGCCTTTCTTcccctttgtgtgtgtggttcAAGTGTGCa +ctgggaggaggctgaggcctgtgAAGCCAAACAATATGCTCCTGCCTTGCACCTCcaata +ggttttattattttttttaaattaatgaacatatgtaatattaatagttattatttaCTG +GTGCAGATGGTTGACATTTTTCCCTATTTTCCTCACTTTATGGAAGAGTTAAAACATTTC +TAAACCAGAGGACAAAAGGGGTTaatgttactttaaaattacattctatatatatataaa +tatatataaatatatattaaaataccaGTTTTTTTTCTCTGGGTGCAAAGatgttcattc +ttttaaaaaatgtttaaaaaaaaaaaaaaactgcctttcTTCCCCTCAAGTCAACTTTTG +TGCTCCAGAAAATTTTCTATTCTGTAAGTCTGAGCGTAAAACTTcaagtattaaaataat +ttgtacatgtagagagaaaaatgactttttcaaaaatatacagGGGCAGCTGCCAAAttg +atgtattatatattgtggtttctgtttcttgaaagaatttttttcGTTATTTTTACATct +aacaaagtaaaaaaattaaaaagagggtAAGAAACGATTCCGGTGGGATGATTTTAACAT +GCAAAATGTCCCTGGGGGTTTCttctttgcttgctttcttcctcCTTACCCTACccccca +ctcacacacacacacacacacacacacacacacacacacacacactttctatAAAACTTG +AAAATAGCAAAAACCCTCAACTGTTGTAAATCATGCAATTAAAGTTGATTACTTATAAAT +ATGAACTTTGGATCACTGTATAGACTGTTAAATTTGATTTCTTATTACCTATTGTTAAAT +AAACTGTGTGAGACAGACA + +>rna-NM_006559.3 CDS=129-1460 Dbxref=GeneID:10657,Genbank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;Name=NM_006559.3;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=RefSeq Select;transcript_id=NM_006559.3;description=KH RNA binding domain containing%2C signal transduction associated 1;gene_biotype=protein_coding;gene_synonym=p62,p68,Sam68;CDS_Dbxref=CCDS:CCDS350.1,GeneID:10657,Genbank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;CDS_Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;CDS_gbkey=CDS;CDS_product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1 +CTCTCGCTGGGTCGCTCGGGTCGGCTTCGGTCGCTACCGCTCCCGCTCTGCCACCCCCGC +CAACCGCCGCTCGGGCCTCCGTCGCTGCCGCGTCGCTTTCTCGCTCCTTGGATCGCACAT +CCTCCCAGATGCAGCGCCGGGACGACCCCGCCGCGCGCATGAGCCGGTCTTCGGGCCGTA +GCGGCTCCATGGACCCCTCCGGTGCCCACCCCTCGGTGCGTCAGACGCCGTCTCGGCAGC +CGCCGCTGCCTCACCGGTCCCGGGGAGGCGGAGGGGGATCCCGCGGGGGCGCCCGGGCCT +CGCCCGCCACGCAGCCGCCACCGCTGCTGCCGCCCTCGGCCACGGGTCCCGACGCGACAG +TGGGCGGGCCAGCGCCGACCCCGCTGCTGCCCCCCTCGGCCACAGCCTCGGTCAAGATGG +AGCCAGAGAACAAGTACCTGCCCGAACTCATGGCCGAGAAGGACTCGCTCGACCCGTCCT +TCACTCACGCCATGCAGCTGCTGACGGCAGAAATTGAGAAGATTCAGAAAGGAGACTCAA +AAAAGGATGATGAGGAGAATTACttggatttattttctcataagaACATGAAACTGAAAG +AGCGAGTGCTGATACCTGTCAAGCAGTATCCCAAGTTCAATTTTGTGGGGAAGATTCTTG +GACCACAAGGGAATACAATCAAAAGACTGCAGGAAGAGACTGGTGCAAAGATCTCTGTAT +TGGGAAAGGGCTCAATGAGAGACAAAGCCAAGGAGGAAGAGCTGCGCAAAGGTGGAGACC +CCAAATATGCCCACTTGAATATGGATCTGCATGTCTTCATTGAAGTCTTTGGACCCCCAT +GTGAGGCTTATGCTCTTATGGCCCATGCCATGGAGGAAGTCAAGAAATTTCTAGTACCGG +ATATGATGGATGATATCTGTCAGGAGCAATTTCTAGAGCTGTCCTACTTGAATGGAGTAC +CTGAACCCTCTCGTGGACGTGGGGTGCCAGTGAGAGGCCGGGGAGCTGCACCTCCTCCAC +CACCTGTTCCCAGGGGCCGTGGTGTTGGACCACCTCGGGGGGCTTTGGTACGTGGTACAC +CAGTAAGGGGAGCCATCACCAGAGGTGCCACTGTGACTCGAGGCGTGCCACCCCCACCTA +CTGTGAGGGGTGCTCCAGCACCAAGAGCACGGACAGCGGGCATCCAGAGGATACCtttgc +ctccacctcctgcacCAGAAACATATGAAGAATATgGATATGATGATACATACGCAGAAC +AAAGTTACGAAGGCTACGAAGGCTATTACAGCCAGAGTCAAGGGGACTCAGAATATTATG +ACTATGGACATGGGGAGGTTCAAGATTCTTATGAAGCTTATGGCCAGGACGACTGGAATG +GGACCAGGCCGTCGCTGAAGGCCCCTCCTGCTAGGCCAGTGAAGGGAGCATACAGAGAGC +ACCCATATGGAcgttattaaaaacaaacatgagGGGAAAATATCAGTTATGAGCAAAGTT +GTTACTGATTTCTTGTATCTCCCAGGATTCCTGTTGCTTTACCCACAACAGACAAGTAAT +TGTCTAAGTGTTTTTCTTCGTGGTCCCCTTCTTCTCCCCACCTTATTCCATTCTTAACTC +TGCATTCTGGCTTCTGtatgtagtattttaaaatgagttaaaatagATTTAGgaatattg +aattaattttttaagtgtgtagatgcttttttctttgttgtttaaatataaacagaagtg +taccttttataataaaaaaaagaagttgagtaaaaaaaaaaaacacacaaacctgTTAGT +TTCAAAAATGACATTGCTTGCTTAAAGGTTCTGAAGTAAAGGCTTGTTAAGTTTCTCTTA +GTTTTGATTTGAGGCATCCCGTAAAGTTGTAGTTGCAGAATCCCAAACTAGGCTACATTT +CAAAATTCAGGGCTGTTTAAGATTTAAAATCACAAACATTAACGGCAGTAGGCACCACCA +TGTAAAAGTGAGCTCAGACGTCtctaaaaaatgtttcctttataaaAGCACATGGCGGTT +GAATCTTAAggttaaattttaatatgaaagatCCTCATGAATTAAATAGTTGATGCAATT +TTTAACGTTaattgatataaaaaaaaaaacaacaaaattaggCTTGTAAAACTGACTTTT +TCATTACGTGGGTTTTGAAATCTAGCCCCAGACATACTGTGTTGAGAGATACTTAGAGGG +AGGGAGTAGGTTTTGAAGAGGTtgatggtggtggggagggaaggcCTCCTGAATTGAGTT +TGATGCAGAGCTTTTTAGCCATGAAGAATCTTTCAGTCATAGTACTAATAATTaaatttt +cagtatttaaaaagacaaagtattTTGTCCATTTGAGATTCTGCACTCCATGAAAAGTTC +ACTTGGACGCTGGGGCCAAAAGCTGTTGATTTTCTTAAGTTGACGGTTGTCAATATATCG +AACTGTTCCCAAGTTAGTCAAGTATGTCTCAACACTAGCATGATATAAAAAGGGACACTG +CAGCTGAATGAAAAAGGAATCAAAATCCACTTTGTACATAAGTTAAAGTCCTAATTGGAT +TTGTACCGTCCTCCCATTTTGTTCTCGGAAGATTAAATGCTACATGTGTAAGTCTGCCTA +AATAGGTAGCTTAAACTTATGTCAAAATGTCTGCAGCAGTTTGTCAATAAAGTTTAGTCC +TTTTTTAATCAAA + +>rna-NM_001457.4 CDS=144-7952 Dbxref=GeneID:2317,Genbank:NM_001457.4,HGNC:HGNC:3755,MIM:603381;Name=NM_001457.4;gbkey=mRNA;gene=FLNB;product=filamin B%2C transcript variant 2;tag=RefSeq Select;transcript_id=NM_001457.4;description=filamin B;gene_biotype=protein_coding;gene_synonym=ABP-278,ABP-280,AOI,FH1,FLN-B,FLN1L,LRS1,SCT,TABP,TAP;CDS_Dbxref=CCDS:CCDS2885.1,GeneID:2317,Genbank:NP_001448.2,HGNC:HGNC:3755,MIM:603381;CDS_Name=NP_001448.2;Note=isoform 2 is encoded by transcript variant 2;CDS_gbkey=CDS;CDS_product=filamin-B isoform 2;protein_id=NP_001448.2 +AGAGCAGCACCGGCCGTGGCTCCGGTAGCAGCAAGTTCGAACCCCGCTCCCGCTCCGCTT +CGGTTCTCGCTCCTTCGGCCCTTGGGCCTCCAAACACCAGTCCCCGGCAGCTCGTTGCGC +ATTGCGCTCTCCCCGCCACCAGGATGCCGGTAACCGAGAAGGATCTAGCTGAGGACGCGC +CTTGGAAGAAGATCCAGCAGAACACGTTCACACGCTGGTGCAACGAGCACCTCAAGTGCG +TGAACAAACGCATCGGCAACCTGCAGACCGACCTGAGCGACGGGCTGCGGCTCATCGCGC +TGCTCGAGGTGCTCAGCCAGAAGCGCATGTACCGCAAGTACCATCAGCGGCCCACCTTTC +GCCAGATGCAGCTCGAGAATGTGTCCGTGGCGCTCGAGTTCCTGGACCGTGAGAGCATCA +AGCTCGTGTCCATCGATAGCAAAGCCATTGTGGATGGGAACCTGAAGCTCATCTTGGGTC +TGGTGTGGACGCTGATCCTCCACTACTCCATCTCCATGCCCGTGTGGGAGGATGAAGGGG +ATGATGATGCCAAGAAGCAGACGCCAAAGCAGAGGCTGCTGGGGTGGATTCAGAACAAGA +TCCCCTACTTGCCCATCACCAACTTTAACCAGAACTGGCAAGACGGCAAAGCCCTGGGAG +CCCTGGTAGACAGCTGTGCTCCAGGTCTGTGCCCAGACTGGGAATCCTGGGACCCGCAGA +AGCCTGTGGATAATGCACGAGAAGCCATGCAGCAGGCAGATGACTGGCTGGGTGTCCCAC +AGGTCATCACTCCTGAAGAAATCATTCACCCGGATGTGGACGAGCACTCAGTTATGACTT +ACCTGTCCCAGTTCCCCAAAGCCAAGCTCAAGCCGGGGGCTCCTCTCAAACCCAAACTCA +ACCCGAAGAAAGCCAGGGCCTATGGCAGAGGAATCGAGCCCACTGGAAACATGGTGAAGC +AGCCAGCCAAGTTCACTGTGGACACCATCAGCGCCGGGCAAGGAGACGTGATGGTGTTTG +TTGAGGACCCAGAAGGGAACAAAGAGGAGGCACAAGTGACCCCTGACAGTGACAAGAACA +AGACATACTCTGTGGAGTATCTGCCCAAGGTCACCGGGCTACACAAAGTCACAGTCCTCT +TTGCAGGACAGCACATCTCCAAGAGCCCATTTGAAGTGAGTGTTGACAAGGCCCAGGGAG +ATGCCAGTAAAGTCACTGCAAAAGGTCCAGGGTTGGAAGCTGTAGGGAACATCGCCAATA +AGCCCACCTACTTTGACATCTATACGGCAGGAGCTGGTGTGGGTGACATTGGTGTGGAGG +TGGAAGATCCCCAGGGGAAGAACACCGTGGAGTTGCTCGTGGAAGACAAAGGAAACCAGG +TGTATCGATGTGTGTACAAACCCATGCAGCCTGGCCCTCACGTGGTCAAGATCTTCTTTG +CTGGGGACACTATTCCTAAGAGTCCCTTCGTTGTGCAGGTTGGGGAAGCCTGCAATCCAA +ATGCCTGCCGGGCCAGTGGCCGAGGCCTACAACCCAAAGGCGTCCGTATCCGGGAGACCA +CAGATTTCAAGGTTGACACCAAAGCTGCAGGAAGTGGGGAGCTCGGTGTAACCATGAAGG +GTCCTAAGGGTCTGGAGGAGCTGGTGAAGCAGAAAGACTTTCTGGATGGGGTCTACGCAT +TCGAGTATTACCCCAGCACCCCGGGGAGATACAGCATTGCCATCACATGGGGGGGACACC +ACATTCCAAAGAGCCCCTTTGAAGTTCAAGTTGGCCCTGAAGCGGGTATGCAGAAAGTCC +GTGCTTGGGGCCCTGGGCTCCATGGTGGGATTGTCGGGCGGTCAGCGGACTTCGTGGTAG +AATCCATTGGCTCTGAAGTGGGGTCTCTGGGGTTTGCCATTGAAGGCCCCTCTCAGGCAA +AGATTGAGTACAACGACCAGAATGATGGATCGTGTGATGTCAAATACTGGCCCAAGGAGC +CTGGCGAATATGCTGTTCACATCATGTGTGACGACGAAGACATCAAGGACAGCCCGTACA +TGGCCTTCATCCACCCAGCCACGGGAGGCTACAACCCTGATCTGGTTCGAGCATACGGGC +CAGGTTTGGAGAAATCTGGATGCATTGTCAACAACCTGGCCGAGTTCACTGTGGATCCTA +AGGATGCTGGAAAAGCTCCCTTAAAGATATTTGCTCAGGATGGGGAAGGCCAACGCATTG +ACATCCAGATGAAGAACCGGATGGACGGCACATATGCATGCTCATACACCCCGGTGAAGG +CCATCAAGCACACCATTGCTGTGGTCTGGGGAGGCGTGAACATCCCGCACAGCCCCTACA +GGGTCAACATCGGGCAAGGTAGCCATCCTCAGAAGGTCAAAGtgtttgggccaggtgtgg +agAGAAGTGGTCTGAAGGCAAATGAACCTACACACTTCACGGTGGACTGTACTGAGGCTG +GGGAAGGTGATGTCAGTGTTGGCATTAAGTGTGATGCCCGGGTGTTAAGTGAAGATGAGG +AAGACGTGGATTTTGACATTATTCACAATGCCAATGATACGTTCACAGTCAAATATGTGC +CTCCTGCTGCTGGGCGATACACTATCAAAGTTCTCTTTGCATCTCAGGAAATCCCCGCCA +GCCCTTTCAGAGTCAAAGTTGACCCTTCCCACGATGCCAGCAAAGTGAAGGCAGAAGGCC +CAGGGCTCAGCAAAGCAGGTGTGGAAAATGGGAAACCGACCCACTTCACTGTCTACACCA +AGGGGGCTGGGAAAGCCCCGCTCAACGTGCAGTTCAACAGCCCTCTTCCTGGCGATGCAG +TGAAGGATTTGGATATCATCGATAATTATGACTACTCTCACACGGTTAAATATACACCCA +CCCAACAGGGCAACATGCAGGTTCTGGTGACTTACGGTGGCGATCCCATCCCTAAAAGCC +CTTTCACTGTGGGTGTTGCTGCACCGCTGGATCTGAGCAAGATAAAACTCAATGGGCTGG +AAAACAGGGTGGAAGTTGGGAAGGATCAGGAGTTCACCGTTGATACCAGGGGGGCAGGAG +GCCAGGGGAAGCTGGACGTGACAATCCTCAGCCCCTCTCGGAAGGTCGTGCCATGCCTAG +TGACACCTGTGACAGGCCGGGAGAACAGCACGGCCAAGTTCATCCCTCGGGAGGAGGGGC +TGTATGCTGTAGACGTGACCTACGATGGACACCCTGTGCCCGGGAGCCCCTACACAGTGG +AGGCCTCGCTGCCACCAGATCCCAGCAAGGTGAAGGCCCACGGTCCCGGCCTCGAAGGTG +GTCTCGTGGGCAAGCCTGCCGAGTTCACCATCGATACCAAAGGAGCTGGTACTGGAGGTC +TGGGCTTAACGGTGGAAGGTCCGTGCGAGGCCAAAATCGAGTGCTCCGACAATGGTGATG +GGACCTGCTCCGTCTCTTACCTTCCCACAAAACCCGGGGAGTACTTCGTCAACATCCTCT +TTGAAGAAGTCCACATACCTGGGTCTCCCTTCAAAGCTGACATTGAAATGCCCTTTGACC +CCTCTAAAGTCGTGGCATCGGGGCCAGGTCTCGAGCACGGGAAGGTGGGTGAAGCTGGCC +TCCTTAGCGTCGACTGCTCGGAAGCGGGAccgggggccctgggcctggaaGCTGTCTCGG +ACTCGGGAACAAAAGCCGAAGTCAGTATTCAGAACAACAAAGATGGCACCTACGCGGTGA +CCTACGTGCCCCTGACGGCCGGCATGTACACGTTGACCATGAAGTATGGTGGCGAACTCG +TGCCACACTTCCCCGCCCGGGTCAAGGTGGAGCCCGCCGTGGACACCAGCAGGATCAAAG +TCTTTGGACCAGGAATAGAAGGGAAAGATGTGTTCCGGGAAGCTACCACCGACTTTACAG +TTGACTCTCGGCCGCTGACCCAGGTTGGGGGTGACCACATCAAGGCCCACATTGCCAACC +CCTCAGGGGCCTCCACCGAGTGCTTTGTCACAGACAATGCGGATGGGACCTACCAGGTGG +AATACACACCCTTTGAGAAAGGTCTCCATGTAGTGGAGGTGACATATGATGACGTGCCTA +TCCCAAACAGTCCCTTCAAGGTGGCTGTCACTGAAGGCTGCCAGCCATCTAGGGTGCAAG +CCCAAGGACCTGGATTGAAAGAGGCCTTTACCAACAAGCCCAATGTCTTCACCGTGGTTA +CCAGAGGCGCAGGAATTGGTGGGCTTGGCATAACTGTTGAGGGACCATCAGAGTCGAAGA +TAAATTGCAGAGACAACAAGGATGGCAGCTGCAGTGCTGAGTACATTCCTTTCGCACCGG +GGGATTACGATGTTAATATCACATATGGAGGAGCCCACATCCCCGGCAGCCCCTTCAGGG +TTCCTGTGAAGGATGTTGTGGACCCCAGCAAGGTCAAGATTGCCGGCCCCGGGCTGGGCT +CAGGCGTCCGAGCCCGTGTCCTGCAGTCCTTCACGGTGGACAGCAGCAAGGCTGGCCTGG +CTCCGCTGGAAGTGAGGGTTCTGGGCCCACGAGGCTTGGTGGAGCCAGTGAACGTGGTGG +ACAATGGAGATGGCACACACACAGTAACCTACACCCCATCTCAGGAGGGACCTTACATGG +TCTCAGTTAAATATGCTGATGAAGAGATTCCTCGCAGTCCCTTCAAGGTCAAGGTCCTTC +CCACATATGATGCCAGCAAAGTGACTGCCAGTGGCCCCGGCCTTAGTTCCTATGGTGTGC +CTGCCAGTCTACCTGTGGACTTTGCAATTGATGCCCGAGATGCCGGGGAAGGCCTGCTTG +CTGTTCAAATAACGGACCAAGAAGGAAAACCCAAAAGAGCCATTGTCCATGACAATAAAG +ATGGCACGTATGCTGTCACCTACATCCCCGACAAGACTGGGCGCTATATGATTGGAGTCA +CCTACGGGGGTGACGACATCCCACTTTCTCCTTATCGCATCCGAGCCACACAGACGGGTG +ATGCCAGCAAGTGCCTGGCCACGGGTCCTGGAATCGCCTCCACTGTGAAAACTGGCGAAG +AAGTAGGCTTTGTGGTTGATGCCAAGACTGCCGGGAAGGGTAAAGTGACCTGCACGGTTC +TGACCCCAGATGGCACTGAGGCCGAGGCCGATGTCATTGAGAATGAAGATGGAACCTATG +ACATCTTCTACACAGCTGCCAAGCCGGGCACATATGTGATCTATGTGCGCTTCGGTGGTG +TTGATATTCCTAACAGCCCCTTCACTGTCATGGCCACAGATGGGGAAGTCACAGCCGTGG +AGGAGGCACCGGTAAATGCATGTCCCCCTGGATTCAGGCCCTGGGTGACCGAAGAGGCCT +ATGTCCCAGTGAGTGACATGAACGGCCTGGGATTTAAGCCTTTTGACCTGGTCATTCCGT +TTGCTGTCAGGAAAGGAGAAATCACTGGAGAGGTCCACATGCCTTCTGGGAAGACAGCCA +CACCTGAGATTGTGGACAACAAGGACGGCACGGTCACTGTTAGATATGCCCCCACTGAGG +TCGGGCTCCATGAGATGCACATCAAATACATGGGCAGCCACATCCCTGAGAGCCCACTCC +AGTTCTACGTGAACTACCCCAACAGTGGAAGTGTTTCTGCATACGGTCCAGGCCTCGTGT +ATGGAGTGGCCAACAAAACTGCCACCTTCACCATCGTCACAGAGGATGCAGGAGAAGGTG +GTCTGGACTTGGCTATTGAGGGCCCCTCAAAAGCAGAAATCAGCTGCATTGACAATAAAG +ATGGGACATGCACAGTGACCTACCTGCCGACTCTGCCAGGCGACTACAGCATTCTGGTCA +AGTACAATGACAAGCACATCCCTGGCAGCCCCTTCACAGCCAAGATCACAGATGACAGCA +GGCGGTGCTCCCAGGTGAAGTTGGGCTCAGCCGCTGACTTCCTGCTCGACATCAGTGAGA +CTGACCTCAGCAGCCTGACGGCCAGCATTAAGGCCCCATCTGGCCGAGACGAGCCCTGTC +TCCTGAAGAGGCTGCCCAACAACCACATTGGCATCTCCTTCATCCCCCGGGAAGTGGGCG +AACATCTGGTCAGCATCAAGAAAAATGGCAACCATGTGGCCAACAGCCCCGTGTCTATCA +TGGTGGTCCAGTCGGAGATTGGTGACGCCCGCCGAGCCAAAGTCTATGGCCGCGGCCTGT +CAGAAGGCCGGACTTTCGAGATGTCTGACTTCATCGTGGACACAAGGGATGCAGGTTATG +GTGGCATATCCTTGGCGGTGGAAGGCCCCAGCAAAGTGGACATCCAGACGGAGGACCTGG +AAGATGGCACCTGCAAAGTCTCCTACTTCCCTACCGTGCCTGGGGTTTATATCGTCTCCA +CCAAATTCGCTGACGAGCACGTGCCTGGGAGCCCATTTACCGTGAAGATCAGTGGGGAGG +GAAGAGTCAAAGAGAGCATCACCCGCACCAGTCGGGCCCCGTCCGTGGCCACTGTCGGGA +GCATTTGTGACCTGAACCTGAAAATCCCAGAAATCAACAGCAGTGATATGTCGGCCCACG +TCACCAGCCCCTCTGGCCGTGTGACTGAGGCAGAGATTGTGCCCATGGGGAAGAACTCAC +ACTGCGTCCGGTTTGTGCCCCAGGAGATGGGCGTGCACACGGTCAGCGTCAAGTACCGTG +GGCAGCACGTCACCGGCAGCCCCTTCCAGTTCACCGTGGGGCCACTTGGTGAAGGAGGCG +CCCACAAGGTGCGGGCAGGAGGCCCTGGCCTGGAGAGAGGAGAAGCGGGAGTCCCAGCTG +AGTTCAGCATTTGGACCCGGGAAGCAGGCGCTGGAGGCCTCTCCATCGCTGTTGAGGGCC +CCAGTAAGGCCGAGATTACATTCGATGACCATAAAAATGGGTCGTGCGGTGTATCTTATA +TTGCCCAAGAGCCTGGTAACTACGAGGTGTCCATCAAGTTCAATGATGAGCACATCCCGG +AAAGCCCCTACCTGGTGCCGGTCATCGCACCCTCCGACGACGCCCGCCGCCTCACTGTTA +TGAGCCTTCAGGAATCGGGATTAAAAGTTAACCAGCCAGCATCCTTTGCTATAAGGTTGA +ATGGCGCAAAAGGCAAGATTGATGCAAAGGTGCACAGCCCCTCTGGAGCCGTGGAGGAGT +GCCACGTGTCTGAGCTGGAGCCAGATAAGTATGCTGTTCGCTTCATCCCTCATGAGAATG +GTGTCCACACCATCGATGTCAAGTTCAATGGGAGCCACGTGGTTGGAAGCCCCTTCAAAG +TGCGCGTTGGGGAGCCTGGACAAGCGGGGAACCCTGCCCTGGTGTCCGCCTATGGCACGG +GACTCGAAGGGGGCACCACAGGTATCCAGTCGGAATTCTTTATTAACACCACCCGAGCAG +GTCCAGGGACATTATCCGTCACCATCGAAGGCCCATCCAAGGTTAAAATGGATTGCCAGG +AAACACCTGAAGGGTACAAAGTCATGTACACCCCCATGGCTCCTGGTAACTACCTGATCA +GCGTCAAATACGGTGGGCCCAACCACATCGTGGGCAGTCCCTTCAAGGCCAAGGTGACAG +GCCAGCGTCTAGTTAGCCCTGGCTCAGCCAACGAGACCTCATCCATCCTGGTGGAGTCAG +TGACCAGGTCGTCTACAGAGACCTGCTATAGCGCCATTCCCAAGGCATCCTCGGACGCCA +GCAAGGTGACCTCTAAGGGGGCAGGGCTCTCAAAGGCCTTTGTGGGCCAGAAGAGTTCCT +TCCTGGTGGACTGCAGCAAAGCTGGCTCCAACATGCTGCTGATCGGGGTCCATGGGCCCA +CCACCCCCTGCGAGGAGGTCTCCATGAAGCATGTAGGCAACCAGCAATACAACGTCACAT +ACGTCGTCAAGGAGAGGGGCGATTATGTGCTGGCTGTGAAGTGGGGGGAGGAACACATCC +CTGGCAGCCCTTTTCATGTCACAGTGCCTTAAAACAGTTTTCTCAAATCCTGGAGAGAGT +TCTTGTggttgcttttgttgcttgtttgtAATTCATTTTATACAAAGCCCTCCAGCCTGT +TTGTGGGGCtgaaaccccatccctaaaaTATTGCTGTTGTAAAATGCCTTCAGAAATAAG +TCCTAGACTGGACTCTTGAGGGACATATTGGAGAATCTTAAGAAATGCAAGCTTGTTCAG +GGGGCTGAGAAGATCCTGAGTACACTAGGTGCAAACCAGAACTCTTGGTGGAACAGACCA +GCCACTGCAGCAGACAGACCAGGAACACAATGAGACtgacatttcaaaaaaacaaaactg +gctaGCCTGAGCTGCTGGTTCACTCTTCAGCATTTATGAAACAAGGCTAGGGGAAGATGG +GCAGAGAAAAAGGGGACACCTAGTTTGGTTGTCATTTGGCAAAGGAGATGACTTAAAATC +CGCTTAATCTCTTCCAGTGTCCGTGTTAATGTATTTGGCTATTAGATCACTAGCACTGCT +TTACCGCTCCTCATCGCCAACACCCCCATGCTCTGTGGCCTTCTTACACTTCTCAGAGGG +CAGAGTGGCAGCCGGGCACCCTACAGAAACTCAGAGGGCAGAGTGGCAGCCAGGCCCACA +TGTCTCTCAAGTACCTGTCCCCTCGCTCTGGTGATTATTTCTTGCAGAATCACCACACGA +GACCATCCCGGCAGTCATGGTTTTGCTTTAGTTTTCCAAGTCCGTTTCAGTCCCTTCCTT +GGTCTGAAGAAATTCTGCAGTGGCGAGCAGTTTCCCACTTGCCAAAGATCCCTTTTAACC +AACACTAGCCCTTGTTTTTAACACACGCTCCAGCCCTTCATCAGCCTGGGCAGTCTTAcc +aaaatgtttaaagtgatcTCAGAGGGGCCCATGGATTAACGCCCTCATCCCAAGGTCCGT +CCCATGACATAACACTCCACACCCGCCCCAGCCAACTTCATGGGTCactttttctggaaa +ataatgATCTGTACAGACAGGACAGAATGAAACTCCTGCGGGTCTTTGGCCTGAAAGTTG +GGAATGGTTGGGGGAGAGAAGGGCAGCAGCTTATTGGTGGTCTTTTCACCATTGGCAGAA +ACAGTGAGAGCTGTGTGGTGCAGAAATCCAGAAATGAGGTGTAGGGAATTTTGCCTGCCT +TCCTGCAGACCTGAGCTGGCTTTGGAATGAGGTTAAAGTGTCAGGGACGTTGCCTGAGCC +CAAATGTGTAGTGTGGTCTGGGCAGGCAGACCTTTAGGTTTTGCTGCTTAGTCCTGAGGA +AGTGGCCACTCTTGTGGCAGGTGTAGTATCTGGGGCGAGTGTTGGGGGTAAAAGCCCACC +CTACAGAAAGTGGAACAGCCCGGAGCCTGATGTGAAAGGACCACGGGTGTTGTAAGCTGG +GACACGGAAGCCAAACTGGAATCAAACGCCGACTGTAAATTGTATCTTATaacttattaa +ataaaacatttgctcCGTAAA + +>rna-NM_012207.3 CDS=177-1217 Dbxref=GeneID:3189,Genbank:NM_012207.3,HGNC:HGNC:5043,MIM:602324;Name=NM_012207.3;gbkey=mRNA;gene=HNRNPH3;product=heterogeneous nuclear ribonucleoprotein H3%2C transcript variant 2H9;tag=RefSeq Select;transcript_id=NM_012207.3;description=heterogeneous nuclear ribonucleoprotein H3;gene_biotype=protein_coding;gene_synonym=2H9,HNRPH3;CDS_Dbxref=CCDS:CCDS7278.1,GeneID:3189,Genbank:NP_036339.1,HGNC:HGNC:5043,MIM:602324;CDS_Name=NP_036339.1;Note=isoform a is encoded by transcript variant 2H9;CDS_gbkey=CDS;CDS_product=heterogeneous nuclear ribonucleoprotein H3 isoform a;protein_id=NP_036339.1 +AGTAGCTGTGCTGCGCAGCTCCCTAAGCGGTTGTCACCGCTGGAGACGGTTGGGAGAACC +GTTGTGGCGAGCGCTACACGAGGCAAACGACTTCTCCCTTCTTTGAACTGGACCCCGCGA +GCACCAGAGTCGGCGTAACTATCGCCTGACAGGcatttaaaTCAAACGGTATTGAGATGG +ATTGGGTTATGAAACATAATGGTCCAAATGACGCTAGTGATGGGACAGTACGACTTCGTG +GACTACCATTTGGTTGCAGCAAAGAGGAAATAGTTCAGTTCTTTCAAGGGTTGGAAATCG +TGCCAAATGGGATAACATTGACGATGGACTACCAGGGGAGAAGCACAGGGGAGGCCTTCG +TGCAGTTTGCTTCAAAGGAGATAGCAGAAAATGCTCTGGGGAAACACAAGGAAAGAATAG +GGCACAGgtaTATTGAGATCTTCAGAAGTAGCAGGAGTGAAATCAAAGGATTTTATGATC +CACCAAGAAGATTGCTGGGACAGCGACCGGGACCATATGATAGACCAATAGGAGGAAGAG +GGGGTTATTATGGAGCTGGGCGTGGAAGTATGTATGACAGAATGCGACGAGGAGGTGATG +GATATGATGGTGGTTATGGAGGTTTTGATGACTATGGTGGCTATAATAATTACGGCTATG +GGAATGATGGCTTTGATGACAGAATGAGAGATGGAAgagGTATGGGAGGACATGGCTATG +GTGGAGCTGGTGATGCAAGTTCAGGTTTTCATGGTGGTCATTTCGTACATATGAGAGGGT +TGCCTTTTCGTGCAACTGAAAATGACATTGCTAATttcttctcaCCACTAAATCCAATAC +GAGTTCATATTGATATTGGAGCTGATGGCAGAGCCACAGGAGAAGCAGATGTAGAGTTTG +TGACACATGAAGATGCAGTAGCTGCCATgtctaaagataaaaataacatgCaacatCGAT +ATATTGAACTCTTCTTGAATTCTACTCCTGGAGGCGGCTCTGGCATGGGAGGTTCTGGAA +TGGGAGGCTACGGAAGAGATGGAATGGataatcAGGGAGGCTATGGATCAGTTGGAAGAA +TGGGAATGGGGAACAATTACAGTGGAGGATATGGTACTCCTGATGGTTTGGGTGGTTATG +GCCGTGGTGGTGGAGGCAGTGGAGGTTACTATGGGCAAGGCGGCATGAGTGGAGGTGGAT +GGCGTGGGATGTACTGAAAGCAAAAACACCAACATACAAGTCTTGACAACAGCATCTGGT +CTACTAGACTTTCTTacagatttaatttcttttgtattttaagaacTTTATAATGACTGA +AGGaatgtgttttcaaaatattatttggtAAAGCAACAGATTGTGATGGGAAAATGTTTT +CTGTAGGTTTATTTGTTGCATActttgacttaaaaataaatttttatattcaaaCCACTG +ATGTTGATACTTTTTATATACTAGTTACTCCTAAAGATGTGCTGCCTTCATAAGATTTGG +GTTGATGTATTTTACTATTAGTTCTACAAGAAGTAGTGTGGTGTAATTTTAGAGGATAAT +GGTTCACCTCTGCGTAAACTGCAAGTCTTAAGCAGACATCTGGAATAGAGCTTGACAAAT +AATTagtgtaacttttttctttagttcctCCTGGACAACACTGTAAATATAAAGCCTAAA +GATGAAGTGGCTTCAGGAGTATAAATTCAGctaattatttctatattattatttttcaaa +tgtcattTATCAGGCATAGCTCTGAAACATTGATGATCTAAGAGGTATTGATTTCTGAAT +ATTCATAATTGTGTTACCTGGGTATGAGAGTGTTGGAAGCTGAATTCTAGCCCTAGATTT +TGGAGTAAAACCCCTTCAGCACTTGACCGAAataccaaaaatgtctccaaaaaaTTGATA +GTTGCAGGTTATCGCAAGATGTCTTAGAGTAGGGTTAAGGTTCTCAGTGACACAAGAATT +CAGTATTAAGTACATAGGTATTTACTATGGAGTATAATTCTCACaattgtattttcagtt +ttctgcccAATAGAGTTTAAATAACTGTATAAatgatgactttaaaaaaatgtaagcaaC +AAGTCCATGTCATAGTCAATAAAAACAATCCTGCAGTTGGGTTTTGTATCTGATCCCTGC +TTGGAGTTTTAGTTTAAAGAATCTATATGTAGCAAGGAAAaggtgctttttaattttaat +ccctTTGATCAATATGGCTTTTTTCCAAATTGGCTAATGGATCAAAATGAAACCTGTTGA +TGTGAATTCAGTTATTGAACTTGTTACTTGTTTTTGCCAGAAATGTTATTAATAAATGTC +ATTGTGGGAGATAATA diff --git a/pgatk/testdata/test_cbioportal_ncbi_grch38.gff b/pgatk/testdata/test_cbioportal_ncbi_grch38.gff new file mode 100644 index 00000000..e167b6e7 --- /dev/null +++ b/pgatk/testdata/test_cbioportal_ncbi_grch38.gff @@ -0,0 +1,317 @@ +##gff-version 3 +#!gff-spec-version 1.21 +#!processor NCBI annotwriter +#!genome-build GRCh38.p14 +#!genome-build-accession NCBI_Assembly:GCF_000001405.40 +NC_000001.11 BestRefSeq mRNA 43358981 43363203 . + . ID=rna-NM_001255.3;Parent=gene-CDC20;Dbxref=Ensembl:ENST00000310955.11,GeneID:991,GenBank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;Name=NM_001255.3;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=MANE Select;transcript_id=NM_001255.3 +NC_000001.11 BestRefSeq exon 43358981 43359006 . + . ID=exon-NM_001255.3-1;Parent=rna-NM_001255.3;Dbxref=Ensembl:ENST00000310955.11,GeneID:991,GenBank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=MANE Select;transcript_id=NM_001255.3 +NC_000001.11 BestRefSeq exon 43359167 43359396 . + . ID=exon-NM_001255.3-2;Parent=rna-NM_001255.3;Dbxref=Ensembl:ENST00000310955.11,GeneID:991,GenBank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=MANE Select;transcript_id=NM_001255.3 +NC_000001.11 BestRefSeq exon 43359490 43359638 . + . ID=exon-NM_001255.3-3;Parent=rna-NM_001255.3;Dbxref=Ensembl:ENST00000310955.11,GeneID:991,GenBank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=MANE Select;transcript_id=NM_001255.3 +NC_000001.11 BestRefSeq exon 43359725 43359821 . + . ID=exon-NM_001255.3-4;Parent=rna-NM_001255.3;Dbxref=Ensembl:ENST00000310955.11,GeneID:991,GenBank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=MANE Select;transcript_id=NM_001255.3 +NC_000001.11 BestRefSeq exon 43359969 43360097 . + . ID=exon-NM_001255.3-5;Parent=rna-NM_001255.3;Dbxref=Ensembl:ENST00000310955.11,GeneID:991,GenBank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=MANE Select;transcript_id=NM_001255.3 +NC_000001.11 BestRefSeq exon 43360193 43360389 . + . ID=exon-NM_001255.3-6;Parent=rna-NM_001255.3;Dbxref=Ensembl:ENST00000310955.11,GeneID:991,GenBank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=MANE Select;transcript_id=NM_001255.3 +NC_000001.11 BestRefSeq exon 43360499 43360593 . + . ID=exon-NM_001255.3-7;Parent=rna-NM_001255.3;Dbxref=Ensembl:ENST00000310955.11,GeneID:991,GenBank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=MANE Select;transcript_id=NM_001255.3 +NC_000001.11 BestRefSeq exon 43360733 43360961 . + . ID=exon-NM_001255.3-8;Parent=rna-NM_001255.3;Dbxref=Ensembl:ENST00000310955.11,GeneID:991,GenBank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=MANE Select;transcript_id=NM_001255.3 +NC_000001.11 BestRefSeq exon 43361120 43361245 . + . ID=exon-NM_001255.3-9;Parent=rna-NM_001255.3;Dbxref=Ensembl:ENST00000310955.11,GeneID:991,GenBank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=MANE Select;transcript_id=NM_001255.3 +NC_000001.11 BestRefSeq exon 43362195 43362312 . + . ID=exon-NM_001255.3-10;Parent=rna-NM_001255.3;Dbxref=Ensembl:ENST00000310955.11,GeneID:991,GenBank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=MANE Select;transcript_id=NM_001255.3 +NC_000001.11 BestRefSeq exon 43362951 43363203 . + . ID=exon-NM_001255.3-11;Parent=rna-NM_001255.3;Dbxref=Ensembl:ENST00000310955.11,GeneID:991,GenBank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=MANE Select;transcript_id=NM_001255.3 +NC_000001.11 BestRefSeq CDS 43359216 43359396 . + 0 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,Ensembl:ENSP00000308450.5,GeneID:991,GenBank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=MANE Select +NC_000001.11 BestRefSeq CDS 43359490 43359638 . + 2 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,Ensembl:ENSP00000308450.5,GeneID:991,GenBank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=MANE Select +NC_000001.11 BestRefSeq CDS 43359725 43359821 . + 0 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,Ensembl:ENSP00000308450.5,GeneID:991,GenBank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=MANE Select +NC_000001.11 BestRefSeq CDS 43359969 43360097 . + 2 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,Ensembl:ENSP00000308450.5,GeneID:991,GenBank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=MANE Select +NC_000001.11 BestRefSeq CDS 43360193 43360389 . + 2 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,Ensembl:ENSP00000308450.5,GeneID:991,GenBank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=MANE Select +NC_000001.11 BestRefSeq CDS 43360499 43360593 . + 0 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,Ensembl:ENSP00000308450.5,GeneID:991,GenBank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=MANE Select +NC_000001.11 BestRefSeq CDS 43360733 43360961 . + 1 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,Ensembl:ENSP00000308450.5,GeneID:991,GenBank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=MANE Select +NC_000001.11 BestRefSeq CDS 43361120 43361245 . + 0 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,Ensembl:ENSP00000308450.5,GeneID:991,GenBank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=MANE Select +NC_000001.11 BestRefSeq CDS 43362195 43362312 . + 0 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,Ensembl:ENSP00000308450.5,GeneID:991,GenBank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=MANE Select +NC_000001.11 BestRefSeq CDS 43362951 43363129 . + 2 ID=cds-NP_001246.2;Parent=rna-NM_001255.3;Dbxref=CCDS:CCDS484.1,Ensembl:ENSP00000308450.5,GeneID:991,GenBank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;Name=NP_001246.2;gbkey=CDS;gene=CDC20;product=cell division cycle protein 20 homolog;protein_id=NP_001246.2;tag=MANE Select +NC_000001.11 BestRefSeq mRNA 85318485 85465159 . - . ID=rna-NM_012137.4;Parent=gene-DDAH1;Dbxref=Ensembl:ENST00000284031.13,GeneID:23576,GenBank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;Name=NM_012137.4;gbkey=mRNA;gene=DDAH1;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_012137.4 +NC_000001.11 BestRefSeq exon 85464743 85465159 . - . ID=exon-NM_012137.4-1;Parent=rna-NM_012137.4;Dbxref=Ensembl:ENST00000284031.13,GeneID:23576,GenBank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;gbkey=mRNA;gene=DDAH1;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_012137.4 +NC_000001.11 BestRefSeq exon 85358748 85358847 . - . ID=exon-NM_012137.4-2;Parent=rna-NM_012137.4;Dbxref=Ensembl:ENST00000284031.13,GeneID:23576,GenBank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;gbkey=mRNA;gene=DDAH1;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_012137.4 +NC_000001.11 BestRefSeq exon 85351506 85351579 . - . ID=exon-NM_012137.4-3;Parent=rna-NM_012137.4;Dbxref=Ensembl:ENST00000284031.13,GeneID:23576,GenBank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;gbkey=mRNA;gene=DDAH1;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_012137.4 +NC_000001.11 BestRefSeq exon 85350415 85350534 . - . ID=exon-NM_012137.4-4;Parent=rna-NM_012137.4;Dbxref=Ensembl:ENST00000284031.13,GeneID:23576,GenBank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;gbkey=mRNA;gene=DDAH1;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_012137.4 +NC_000001.11 BestRefSeq exon 85324740 85324883 . - . ID=exon-NM_012137.4-5;Parent=rna-NM_012137.4;Dbxref=Ensembl:ENST00000284031.13,GeneID:23576,GenBank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;gbkey=mRNA;gene=DDAH1;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_012137.4 +NC_000001.11 BestRefSeq exon 85318485 85321568 . - . ID=exon-NM_012137.4-6;Parent=rna-NM_012137.4;Dbxref=Ensembl:ENST00000284031.13,GeneID:23576,GenBank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;gbkey=mRNA;gene=DDAH1;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_012137.4 +NC_000001.11 BestRefSeq CDS 85464743 85465045 . - 0 ID=cds-NP_036269.1;Parent=rna-NM_012137.4;Dbxref=CCDS:CCDS705.1,Ensembl:ENSP00000284031.8,GeneID:23576,GenBank:NP_036269.1,HGNC:HGNC:2715,MIM:604743;Name=NP_036269.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=DDAH1;product=N(G)%2CN(G)-dimethylarginine dimethylaminohydrolase 1 isoform 1;protein_id=NP_036269.1;tag=MANE Select +NC_000001.11 BestRefSeq CDS 85358748 85358847 . - 0 ID=cds-NP_036269.1;Parent=rna-NM_012137.4;Dbxref=CCDS:CCDS705.1,Ensembl:ENSP00000284031.8,GeneID:23576,GenBank:NP_036269.1,HGNC:HGNC:2715,MIM:604743;Name=NP_036269.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=DDAH1;product=N(G)%2CN(G)-dimethylarginine dimethylaminohydrolase 1 isoform 1;protein_id=NP_036269.1;tag=MANE Select +NC_000001.11 BestRefSeq CDS 85351506 85351579 . - 2 ID=cds-NP_036269.1;Parent=rna-NM_012137.4;Dbxref=CCDS:CCDS705.1,Ensembl:ENSP00000284031.8,GeneID:23576,GenBank:NP_036269.1,HGNC:HGNC:2715,MIM:604743;Name=NP_036269.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=DDAH1;product=N(G)%2CN(G)-dimethylarginine dimethylaminohydrolase 1 isoform 1;protein_id=NP_036269.1;tag=MANE Select +NC_000001.11 BestRefSeq CDS 85350415 85350534 . - 0 ID=cds-NP_036269.1;Parent=rna-NM_012137.4;Dbxref=CCDS:CCDS705.1,Ensembl:ENSP00000284031.8,GeneID:23576,GenBank:NP_036269.1,HGNC:HGNC:2715,MIM:604743;Name=NP_036269.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=DDAH1;product=N(G)%2CN(G)-dimethylarginine dimethylaminohydrolase 1 isoform 1;protein_id=NP_036269.1;tag=MANE Select +NC_000001.11 BestRefSeq CDS 85324740 85324883 . - 0 ID=cds-NP_036269.1;Parent=rna-NM_012137.4;Dbxref=CCDS:CCDS705.1,Ensembl:ENSP00000284031.8,GeneID:23576,GenBank:NP_036269.1,HGNC:HGNC:2715,MIM:604743;Name=NP_036269.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=DDAH1;product=N(G)%2CN(G)-dimethylarginine dimethylaminohydrolase 1 isoform 1;protein_id=NP_036269.1;tag=MANE Select +NC_000001.11 BestRefSeq CDS 85321452 85321568 . - 0 ID=cds-NP_036269.1;Parent=rna-NM_012137.4;Dbxref=CCDS:CCDS705.1,Ensembl:ENSP00000284031.8,GeneID:23576,GenBank:NP_036269.1,HGNC:HGNC:2715,MIM:604743;Name=NP_036269.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=DDAH1;product=N(G)%2CN(G)-dimethylarginine dimethylaminohydrolase 1 isoform 1;protein_id=NP_036269.1;tag=MANE Select +NC_000005.10 BestRefSeq mRNA 58453982 58460086 . - . ID=rna-NM_006622.4;Parent=gene-PLK2;Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;Name=NM_006622.4;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4 +NC_000005.10 BestRefSeq exon 58459690 58460086 . - . ID=exon-NM_006622.4-1;Parent=rna-NM_006622.4;Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4 +NC_000005.10 BestRefSeq exon 58458985 58459092 . - . ID=exon-NM_006622.4-2;Parent=rna-NM_006622.4;Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4 +NC_000005.10 BestRefSeq exon 58458725 58458841 . - . ID=exon-NM_006622.4-3;Parent=rna-NM_006622.4;Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4 +NC_000005.10 BestRefSeq exon 58458399 58458528 . - . ID=exon-NM_006622.4-4;Parent=rna-NM_006622.4;Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4 +NC_000005.10 BestRefSeq exon 58458084 58458171 . - . ID=exon-NM_006622.4-5;Parent=rna-NM_006622.4;Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4 +NC_000005.10 BestRefSeq exon 58457488 58457583 . - . ID=exon-NM_006622.4-6;Parent=rna-NM_006622.4;Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4 +NC_000005.10 BestRefSeq exon 58457181 58457379 . - . ID=exon-NM_006622.4-7;Parent=rna-NM_006622.4;Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4 +NC_000005.10 BestRefSeq exon 58456945 58457092 . - . ID=exon-NM_006622.4-8;Parent=rna-NM_006622.4;Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4 +NC_000005.10 BestRefSeq exon 58456492 58456589 . - . ID=exon-NM_006622.4-9;Parent=rna-NM_006622.4;Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4 +NC_000005.10 BestRefSeq exon 58456026 58456155 . - . ID=exon-NM_006622.4-10;Parent=rna-NM_006622.4;Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4 +NC_000005.10 BestRefSeq exon 58455539 58455779 . - . ID=exon-NM_006622.4-11;Parent=rna-NM_006622.4;Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4 +NC_000005.10 BestRefSeq exon 58455285 58455414 . - . ID=exon-NM_006622.4-12;Parent=rna-NM_006622.4;Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4 +NC_000005.10 BestRefSeq exon 58454911 58455021 . - . ID=exon-NM_006622.4-13;Parent=rna-NM_006622.4;Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4 +NC_000005.10 BestRefSeq exon 58453982 58454774 . - . ID=exon-NM_006622.4-14;Parent=rna-NM_006622.4;Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4 +NC_000005.10 BestRefSeq CDS 58459690 58459959 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,Ensembl:ENSP00000274289.3,GeneID:10769,GenBank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=MANE Select +NC_000005.10 BestRefSeq CDS 58458985 58459092 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,Ensembl:ENSP00000274289.3,GeneID:10769,GenBank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=MANE Select +NC_000005.10 BestRefSeq CDS 58458725 58458841 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,Ensembl:ENSP00000274289.3,GeneID:10769,GenBank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=MANE Select +NC_000005.10 BestRefSeq CDS 58458399 58458528 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,Ensembl:ENSP00000274289.3,GeneID:10769,GenBank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=MANE Select +NC_000005.10 BestRefSeq CDS 58458084 58458171 . - 2 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,Ensembl:ENSP00000274289.3,GeneID:10769,GenBank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=MANE Select +NC_000005.10 BestRefSeq CDS 58457488 58457583 . - 1 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,Ensembl:ENSP00000274289.3,GeneID:10769,GenBank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=MANE Select +NC_000005.10 BestRefSeq CDS 58457181 58457379 . - 1 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,Ensembl:ENSP00000274289.3,GeneID:10769,GenBank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=MANE Select +NC_000005.10 BestRefSeq CDS 58456945 58457092 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,Ensembl:ENSP00000274289.3,GeneID:10769,GenBank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=MANE Select +NC_000005.10 BestRefSeq CDS 58456492 58456589 . - 2 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,Ensembl:ENSP00000274289.3,GeneID:10769,GenBank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=MANE Select +NC_000005.10 BestRefSeq CDS 58456026 58456155 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,Ensembl:ENSP00000274289.3,GeneID:10769,GenBank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=MANE Select +NC_000005.10 BestRefSeq CDS 58455539 58455779 . - 2 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,Ensembl:ENSP00000274289.3,GeneID:10769,GenBank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=MANE Select +NC_000005.10 BestRefSeq CDS 58455285 58455414 . - 1 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,Ensembl:ENSP00000274289.3,GeneID:10769,GenBank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=MANE Select +NC_000005.10 BestRefSeq CDS 58454911 58455021 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,Ensembl:ENSP00000274289.3,GeneID:10769,GenBank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=MANE Select +NC_000005.10 BestRefSeq CDS 58454583 58454774 . - 0 ID=cds-NP_006613.2;Parent=rna-NM_006622.4;Dbxref=CCDS:CCDS3974.1,Ensembl:ENSP00000274289.3,GeneID:10769,GenBank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PLK2;product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2;tag=MANE Select +NC_000005.10 BestRefSeq mRNA 157161846 157166264 . - . ID=rna-NM_130899.3;Parent=gene-GARIN3;Dbxref=Ensembl:ENST00000302938.4,GeneID:153745,GenBank:NM_130899.3,HGNC:HGNC:28397,MIM:619883;Name=NM_130899.3;gbkey=mRNA;gene=GARIN3;product=golgi associated RAB2 interactor family member 3;tag=MANE Select;transcript_id=NM_130899.3 +NC_000005.10 BestRefSeq exon 157165563 157166264 . - . ID=exon-NM_130899.3-1;Parent=rna-NM_130899.3;Dbxref=Ensembl:ENST00000302938.4,GeneID:153745,GenBank:NM_130899.3,HGNC:HGNC:28397,MIM:619883;gbkey=mRNA;gene=GARIN3;product=golgi associated RAB2 interactor family member 3;tag=MANE Select;transcript_id=NM_130899.3 +NC_000005.10 BestRefSeq exon 157161846 157163658 . - . ID=exon-NM_130899.3-2;Parent=rna-NM_130899.3;Dbxref=Ensembl:ENST00000302938.4,GeneID:153745,GenBank:NM_130899.3,HGNC:HGNC:28397,MIM:619883;gbkey=mRNA;gene=GARIN3;product=golgi associated RAB2 interactor family member 3;tag=MANE Select;transcript_id=NM_130899.3 +NC_000005.10 BestRefSeq CDS 157165563 157166168 . - 0 ID=cds-NP_570969.2;Parent=rna-NM_130899.3;Dbxref=CCDS:CCDS4335.1,Ensembl:ENSP00000305596.4,GeneID:153745,GenBank:NP_570969.2,HGNC:HGNC:28397,MIM:619883;Name=NP_570969.2;gbkey=CDS;gene=GARIN3;product=Golgi-associated RAB2 interactor protein 3;protein_id=NP_570969.2;tag=MANE Select +NC_000005.10 BestRefSeq CDS 157162447 157163658 . - 0 ID=cds-NP_570969.2;Parent=rna-NM_130899.3;Dbxref=CCDS:CCDS4335.1,Ensembl:ENSP00000305596.4,GeneID:153745,GenBank:NP_570969.2,HGNC:HGNC:28397,MIM:619883;Name=NP_570969.2;gbkey=CDS;gene=GARIN3;product=Golgi-associated RAB2 interactor protein 3;protein_id=NP_570969.2;tag=MANE Select +NC_000007.14 BestRefSeq mRNA 56051765 56063989 . + . ID=rna-NM_001762.4;Parent=gene-CCT6A;Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;Name=NM_001762.4;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4 +NC_000007.14 BestRefSeq exon 56051765 56051985 . + . ID=exon-NM_001762.4-1;Parent=rna-NM_001762.4;Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4 +NC_000007.14 BestRefSeq exon 56052422 56052485 . + . ID=exon-NM_001762.4-2;Parent=rna-NM_001762.4;Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4 +NC_000007.14 BestRefSeq exon 56054369 56054503 . + . ID=exon-NM_001762.4-3;Parent=rna-NM_001762.4;Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4 +NC_000007.14 BestRefSeq exon 56055624 56055797 . + . ID=exon-NM_001762.4-4;Parent=rna-NM_001762.4;Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4 +NC_000007.14 BestRefSeq exon 56056311 56056414 . + . ID=exon-NM_001762.4-5;Parent=rna-NM_001762.4;Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4 +NC_000007.14 BestRefSeq exon 56057993 56058103 . + . ID=exon-NM_001762.4-6;Parent=rna-NM_001762.4;Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4 +NC_000007.14 BestRefSeq exon 56058362 56058521 . + . ID=exon-NM_001762.4-7;Parent=rna-NM_001762.4;Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4 +NC_000007.14 BestRefSeq exon 56058620 56058702 . + . ID=exon-NM_001762.4-8;Parent=rna-NM_001762.4;Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4 +NC_000007.14 BestRefSeq exon 56059544 56059640 . + . ID=exon-NM_001762.4-9;Parent=rna-NM_001762.4;Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4 +NC_000007.14 BestRefSeq exon 56060269 56060416 . + . ID=exon-NM_001762.4-10;Parent=rna-NM_001762.4;Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4 +NC_000007.14 BestRefSeq exon 56060807 56060940 . + . ID=exon-NM_001762.4-11;Parent=rna-NM_001762.4;Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4 +NC_000007.14 BestRefSeq exon 56061747 56061849 . + . ID=exon-NM_001762.4-12;Parent=rna-NM_001762.4;Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4 +NC_000007.14 BestRefSeq exon 56062683 56062755 . + . ID=exon-NM_001762.4-13;Parent=rna-NM_001762.4;Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4 +NC_000007.14 BestRefSeq exon 56063013 56063989 . + . ID=exon-NM_001762.4-14;Parent=rna-NM_001762.4;Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4 +NC_000007.14 BestRefSeq CDS 56051849 56051985 . + 0 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,Ensembl:ENSP00000275603.4,GeneID:908,GenBank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=MANE Select +NC_000007.14 BestRefSeq CDS 56052422 56052485 . + 1 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,Ensembl:ENSP00000275603.4,GeneID:908,GenBank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=MANE Select +NC_000007.14 BestRefSeq CDS 56054369 56054503 . + 0 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,Ensembl:ENSP00000275603.4,GeneID:908,GenBank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=MANE Select +NC_000007.14 BestRefSeq CDS 56055624 56055797 . + 0 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,Ensembl:ENSP00000275603.4,GeneID:908,GenBank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=MANE Select +NC_000007.14 BestRefSeq CDS 56056311 56056414 . + 0 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,Ensembl:ENSP00000275603.4,GeneID:908,GenBank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=MANE Select +NC_000007.14 BestRefSeq CDS 56057993 56058103 . + 1 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,Ensembl:ENSP00000275603.4,GeneID:908,GenBank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=MANE Select +NC_000007.14 BestRefSeq CDS 56058362 56058521 . + 1 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,Ensembl:ENSP00000275603.4,GeneID:908,GenBank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=MANE Select +NC_000007.14 BestRefSeq CDS 56058620 56058702 . + 0 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,Ensembl:ENSP00000275603.4,GeneID:908,GenBank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=MANE Select +NC_000007.14 BestRefSeq CDS 56059544 56059640 . + 1 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,Ensembl:ENSP00000275603.4,GeneID:908,GenBank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=MANE Select +NC_000007.14 BestRefSeq CDS 56060269 56060416 . + 0 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,Ensembl:ENSP00000275603.4,GeneID:908,GenBank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=MANE Select +NC_000007.14 BestRefSeq CDS 56060807 56060940 . + 2 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,Ensembl:ENSP00000275603.4,GeneID:908,GenBank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=MANE Select +NC_000007.14 BestRefSeq CDS 56061747 56061849 . + 0 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,Ensembl:ENSP00000275603.4,GeneID:908,GenBank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=MANE Select +NC_000007.14 BestRefSeq CDS 56062683 56062755 . + 2 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,Ensembl:ENSP00000275603.4,GeneID:908,GenBank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=MANE Select +NC_000007.14 BestRefSeq CDS 56063013 56063085 . + 1 ID=cds-NP_001753.1;Parent=rna-NM_001762.4;Dbxref=CCDS:CCDS5523.1,Ensembl:ENSP00000275603.4,GeneID:908,GenBank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;gbkey=CDS;gene=CCT6A;product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1;tag=MANE Select +NC_000009.12 BestRefSeq mRNA 128255829 128276007 . - . ID=rna-NM_004486.6;Parent=gene-GOLGA2;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;Name=NM_004486.6;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128275893 128276007 . - . ID=exon-NM_004486.6-1;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128273850 128273972 . - . ID=exon-NM_004486.6-2;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128268420 128268524 . - . ID=exon-NM_004486.6-3;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128268117 128268160 . - . ID=exon-NM_004486.6-4;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128267934 128267997 . - . ID=exon-NM_004486.6-5;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128267458 128267517 . - . ID=exon-NM_004486.6-6;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128267194 128267274 . - . ID=exon-NM_004486.6-7;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128266287 128266325 . - . ID=exon-NM_004486.6-8;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128265970 128266020 . - . ID=exon-NM_004486.6-9;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128265788 128265881 . - . ID=exon-NM_004486.6-10;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128265585 128265691 . - . ID=exon-NM_004486.6-11;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128263034 128263092 . - . ID=exon-NM_004486.6-12;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128262563 128262704 . - . ID=exon-NM_004486.6-13;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128261668 128261757 . - . ID=exon-NM_004486.6-14;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128261454 128261561 . - . ID=exon-NM_004486.6-15;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128261172 128261259 . - . ID=exon-NM_004486.6-16;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128260465 128260802 . - . ID=exon-NM_004486.6-17;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128260076 128260189 . - . ID=exon-NM_004486.6-18;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128259167 128259391 . - . ID=exon-NM_004486.6-19;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128259007 128259082 . - . ID=exon-NM_004486.6-20;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128258455 128258570 . - . ID=exon-NM_004486.6-21;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128257980 128258198 . - . ID=exon-NM_004486.6-22;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128257790 128257892 . - . ID=exon-NM_004486.6-23;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128257601 128257707 . - . ID=exon-NM_004486.6-24;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128257369 128257525 . - . ID=exon-NM_004486.6-25;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq exon 128255829 128257281 . - . ID=exon-NM_004486.6-26;Parent=rna-NM_004486.6;Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6 +NC_000009.12 BestRefSeq CDS 128275893 128275976 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128273850 128273972 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128268420 128268524 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128268117 128268160 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128267934 128267997 . - 1 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128267458 128267517 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128267194 128267274 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128266287 128266325 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128265970 128266020 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128265788 128265881 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128265585 128265691 . - 2 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128263034 128263092 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128262563 128262704 . - 1 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128261668 128261757 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128261454 128261561 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128261172 128261259 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128260465 128260802 . - 2 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128260076 128260189 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128259167 128259391 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128259007 128259082 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128258455 128258570 . - 2 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128257980 128258198 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128257790 128257892 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128257601 128257707 . - 2 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128257369 128257525 . - 0 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000009.12 BestRefSeq CDS 128257067 128257281 . - 2 ID=cds-NP_004477.5;Parent=rna-NM_004486.6;Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=GOLGA2;product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +NC_000012.12 BestRefSeq mRNA 114670255 114684175 . - . ID=rna-NM_016569.4;Parent=gene-TBX3;Dbxref=GeneID:6926,GenBank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;Name=NM_016569.4;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.12 BestRefSeq exon 114682812 114684175 . - . ID=exon-NM_016569.4-1;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,GenBank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.12 BestRefSeq exon 114680879 114681146 . - . ID=exon-NM_016569.4-2;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,GenBank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.12 BestRefSeq exon 114679913 114679972 . - . ID=exon-NM_016569.4-3;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,GenBank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.12 BestRefSeq exon 114679505 114679651 . - . ID=exon-NM_016569.4-4;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,GenBank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.12 BestRefSeq exon 114677580 114677656 . - . ID=exon-NM_016569.4-5;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,GenBank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.12 BestRefSeq exon 114676313 114676470 . - . ID=exon-NM_016569.4-6;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,GenBank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.12 BestRefSeq exon 114674165 114674835 . - . ID=exon-NM_016569.4-7;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,GenBank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.12 BestRefSeq exon 114670255 114672302 . - . ID=exon-NM_016569.4-8;Parent=rna-NM_016569.4;Dbxref=GeneID:6926,GenBank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4 +NC_000012.12 BestRefSeq CDS 114682812 114683200 . - 0 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,GenBank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000012.12 BestRefSeq CDS 114680879 114681146 . - 1 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,GenBank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000012.12 BestRefSeq CDS 114679913 114679972 . - 0 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,GenBank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000012.12 BestRefSeq CDS 114679505 114679651 . - 0 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,GenBank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000012.12 BestRefSeq CDS 114677580 114677656 . - 0 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,GenBank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000012.12 BestRefSeq CDS 114676313 114676470 . - 1 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,GenBank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000012.12 BestRefSeq CDS 114674165 114674835 . - 2 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,GenBank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000012.12 BestRefSeq CDS 114671841 114672302 . - 0 ID=cds-NP_057653.3;Parent=rna-NM_016569.4;Dbxref=CCDS:CCDS9176.1,GeneID:6926,GenBank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;gbkey=CDS;gene=TBX3;product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +NC_000022.11 BestRefSeq mRNA 41092592 41180077 . + . ID=rna-NM_001429.4;Parent=gene-EP300;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;Name=NM_001429.4;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41092592 41093098 . + . ID=exon-NM_001429.4-1;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41117187 41117821 . + . ID=exon-NM_001429.4-2;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41125864 41126040 . + . ID=exon-NM_001429.4-3;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41127487 41127748 . + . ID=exon-NM_001429.4-4;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41129890 41130003 . + . ID=exon-NM_001429.4-5;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41131388 41131633 . + . ID=exon-NM_001429.4-6;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41135813 41135906 . + . ID=exon-NM_001429.4-7;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41137653 41137790 . + . ID=exon-NM_001429.4-8;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41140140 41140257 . + . ID=exon-NM_001429.4-9;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41141048 41141222 . + . ID=exon-NM_001429.4-10;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41146739 41146816 . + . ID=exon-NM_001429.4-11;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41147837 41147946 . + . ID=exon-NM_001429.4-12;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41149038 41149175 . + . ID=exon-NM_001429.4-13;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41149761 41150198 . + . ID=exon-NM_001429.4-14;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41151833 41152012 . + . ID=exon-NM_001429.4-15;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41152206 41152350 . + . ID=exon-NM_001429.4-16;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41154995 41155113 . + . ID=exon-NM_001429.4-17;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41157169 41157408 . + . ID=exon-NM_001429.4-18;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41158412 41158500 . + . ID=exon-NM_001429.4-19;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41160642 41160722 . + . ID=exon-NM_001429.4-20;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41162723 41162779 . + . ID=exon-NM_001429.4-21;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41164053 41164130 . + . ID=exon-NM_001429.4-22;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41166599 41166666 . + . ID=exon-NM_001429.4-23;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41168449 41168599 . + . ID=exon-NM_001429.4-24;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41168721 41168867 . + . ID=exon-NM_001429.4-25;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41169503 41169616 . + . ID=exon-NM_001429.4-26;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41170406 41170571 . + . ID=exon-NM_001429.4-27;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41172499 41172663 . + . ID=exon-NM_001429.4-28;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41173623 41173784 . + . ID=exon-NM_001429.4-29;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41176247 41176528 . + . ID=exon-NM_001429.4-30;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq exon 41176773 41180077 . + . ID=exon-NM_001429.4-31;Parent=rna-NM_001429.4;Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4 +NC_000022.11 BestRefSeq CDS 41093005 41093098 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41117187 41117821 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41125864 41126040 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41127487 41127748 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41129890 41130003 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41131388 41131633 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41135813 41135906 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41137653 41137790 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41140140 41140257 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41141048 41141222 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41146739 41146816 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41147837 41147946 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41149038 41149175 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41149761 41150198 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41151833 41152012 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41152206 41152350 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41154995 41155113 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41157169 41157408 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41158412 41158500 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41160642 41160722 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41162723 41162779 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41164053 41164130 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41166599 41166666 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41168449 41168599 . + 2 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41168721 41168867 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41169503 41169616 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41170406 41170571 . + 1 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41172499 41172663 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41173623 41173784 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41176247 41176528 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000022.11 BestRefSeq CDS 41176773 41178956 . + 0 ID=cds-NP_001420.2;Parent=rna-NM_001429.4;Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=EP300;product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2;tag=MANE Select +NC_000001.11 BestRefSeq mRNA 32013868 32043877 . + . ID=rna-NM_006559.3;Parent=gene-KHDRBS1;Dbxref=Ensembl:ENST00000327300.12,GeneID:10657,GenBank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;Name=NM_006559.3;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006559.3 +NC_000001.11 BestRefSeq exon 32013868 32014377 . + . ID=exon-NM_006559.3-1;Parent=rna-NM_006559.3;Dbxref=Ensembl:ENST00000327300.12,GeneID:10657,GenBank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006559.3 +NC_000001.11 BestRefSeq exon 32030298 32030422 . + . ID=exon-NM_006559.3-2;Parent=rna-NM_006559.3;Dbxref=Ensembl:ENST00000327300.12,GeneID:10657,GenBank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006559.3 +NC_000001.11 BestRefSeq exon 32031524 32031640 . + . ID=exon-NM_006559.3-3;Parent=rna-NM_006559.3;Dbxref=Ensembl:ENST00000327300.12,GeneID:10657,GenBank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006559.3 +NC_000001.11 BestRefSeq exon 32033188 32033334 . + . ID=exon-NM_006559.3-4;Parent=rna-NM_006559.3;Dbxref=Ensembl:ENST00000327300.12,GeneID:10657,GenBank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006559.3 +NC_000001.11 BestRefSeq exon 32036910 32037043 . + . ID=exon-NM_006559.3-5;Parent=rna-NM_006559.3;Dbxref=Ensembl:ENST00000327300.12,GeneID:10657,GenBank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006559.3 +NC_000001.11 BestRefSeq exon 32037835 32038036 . + . ID=exon-NM_006559.3-6;Parent=rna-NM_006559.3;Dbxref=Ensembl:ENST00000327300.12,GeneID:10657,GenBank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006559.3 +NC_000001.11 BestRefSeq exon 32038552 32038619 . + . ID=exon-NM_006559.3-7;Parent=rna-NM_006559.3;Dbxref=Ensembl:ENST00000327300.12,GeneID:10657,GenBank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006559.3 +NC_000001.11 BestRefSeq exon 32039515 32039573 . + . ID=exon-NM_006559.3-8;Parent=rna-NM_006559.3;Dbxref=Ensembl:ENST00000327300.12,GeneID:10657,GenBank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006559.3 +NC_000001.11 BestRefSeq exon 32042527 32043877 . + . ID=exon-NM_006559.3-9;Parent=rna-NM_006559.3;Dbxref=Ensembl:ENST00000327300.12,GeneID:10657,GenBank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006559.3 +NC_000001.11 BestRefSeq CDS 32013996 32014377 . + 0 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,Ensembl:ENSP00000313829.7,GeneID:10657,GenBank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=MANE Select +NC_000001.11 BestRefSeq CDS 32030298 32030422 . + 2 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,Ensembl:ENSP00000313829.7,GeneID:10657,GenBank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=MANE Select +NC_000001.11 BestRefSeq CDS 32031524 32031640 . + 0 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,Ensembl:ENSP00000313829.7,GeneID:10657,GenBank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=MANE Select +NC_000001.11 BestRefSeq CDS 32033188 32033334 . + 0 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,Ensembl:ENSP00000313829.7,GeneID:10657,GenBank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=MANE Select +NC_000001.11 BestRefSeq CDS 32036910 32037043 . + 0 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,Ensembl:ENSP00000313829.7,GeneID:10657,GenBank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=MANE Select +NC_000001.11 BestRefSeq CDS 32037835 32038036 . + 1 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,Ensembl:ENSP00000313829.7,GeneID:10657,GenBank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=MANE Select +NC_000001.11 BestRefSeq CDS 32038552 32038619 . + 0 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,Ensembl:ENSP00000313829.7,GeneID:10657,GenBank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=MANE Select +NC_000001.11 BestRefSeq CDS 32039515 32039573 . + 1 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,Ensembl:ENSP00000313829.7,GeneID:10657,GenBank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=MANE Select +NC_000001.11 BestRefSeq CDS 32042527 32042624 . + 2 ID=cds-NP_006550.1;Parent=rna-NM_006559.3;Dbxref=CCDS:CCDS350.1,Ensembl:ENSP00000313829.7,GeneID:10657,GenBank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=KHDRBS1;product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1;tag=MANE Select +NC_000005.10 BestRefSeq mRNA 68215756 68301821 . + . ID=rna-NM_181523.3;Parent=gene-PIK3R1;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;Name=NM_181523.3;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68215756 68215949 . + . ID=exon-NM_181523.3-1;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68226290 68227009 . + . ID=exon-NM_181523.3-2;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68273390 68273482 . + . ID=exon-NM_181523.3-3;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68273939 68274013 . + . ID=exon-NM_181523.3-4;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68279602 68279733 . + . ID=exon-NM_181523.3-5;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68280528 68280729 . + . ID=exon-NM_181523.3-6;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68280927 68281006 . + . ID=exon-NM_181523.3-7;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68292259 68292361 . + . ID=exon-NM_181523.3-8;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68293101 68293199 . + . ID=exon-NM_181523.3-9;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68293303 68293483 . + . ID=exon-NM_181523.3-10;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68293709 68293834 . + . ID=exon-NM_181523.3-11;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68294536 68294678 . + . ID=exon-NM_181523.3-12;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68295148 68295324 . + . ID=exon-NM_181523.3-13;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68295420 68295488 . + . ID=exon-NM_181523.3-14;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68296171 68296341 . + . ID=exon-NM_181523.3-15;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq exon 68297412 68301821 . + . ID=exon-NM_181523.3-16;Parent=rna-NM_181523.3;Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3 +NC_000005.10 BestRefSeq CDS 68226676 68227009 . + 0 ID=cds-NP_852664.1;Parent=rna-NM_181523.3;Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PIK3R1;product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1;tag=MANE Select +NC_000005.10 BestRefSeq CDS 68273390 68273482 . + 2 ID=cds-NP_852664.1;Parent=rna-NM_181523.3;Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PIK3R1;product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1;tag=MANE Select +NC_000005.10 BestRefSeq CDS 68273939 68274013 . + 2 ID=cds-NP_852664.1;Parent=rna-NM_181523.3;Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PIK3R1;product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1;tag=MANE Select +NC_000005.10 BestRefSeq CDS 68279602 68279733 . + 2 ID=cds-NP_852664.1;Parent=rna-NM_181523.3;Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PIK3R1;product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1;tag=MANE Select +NC_000005.10 BestRefSeq CDS 68280528 68280729 . + 2 ID=cds-NP_852664.1;Parent=rna-NM_181523.3;Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PIK3R1;product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1;tag=MANE Select +NC_000005.10 BestRefSeq CDS 68280927 68281006 . + 1 ID=cds-NP_852664.1;Parent=rna-NM_181523.3;Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PIK3R1;product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1;tag=MANE Select +NC_000005.10 BestRefSeq CDS 68292259 68292361 . + 2 ID=cds-NP_852664.1;Parent=rna-NM_181523.3;Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PIK3R1;product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1;tag=MANE Select +NC_000005.10 BestRefSeq CDS 68293101 68293199 . + 1 ID=cds-NP_852664.1;Parent=rna-NM_181523.3;Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PIK3R1;product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1;tag=MANE Select +NC_000005.10 BestRefSeq CDS 68293303 68293483 . + 1 ID=cds-NP_852664.1;Parent=rna-NM_181523.3;Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PIK3R1;product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1;tag=MANE Select +NC_000005.10 BestRefSeq CDS 68293709 68293834 . + 0 ID=cds-NP_852664.1;Parent=rna-NM_181523.3;Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PIK3R1;product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1;tag=MANE Select +NC_000005.10 BestRefSeq CDS 68294536 68294678 . + 0 ID=cds-NP_852664.1;Parent=rna-NM_181523.3;Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PIK3R1;product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1;tag=MANE Select +NC_000005.10 BestRefSeq CDS 68295148 68295324 . + 1 ID=cds-NP_852664.1;Parent=rna-NM_181523.3;Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PIK3R1;product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1;tag=MANE Select +NC_000005.10 BestRefSeq CDS 68295420 68295488 . + 1 ID=cds-NP_852664.1;Parent=rna-NM_181523.3;Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PIK3R1;product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1;tag=MANE Select +NC_000005.10 BestRefSeq CDS 68296171 68296341 . + 1 ID=cds-NP_852664.1;Parent=rna-NM_181523.3;Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PIK3R1;product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1;tag=MANE Select +NC_000005.10 BestRefSeq CDS 68297412 68297601 . + 1 ID=cds-NP_852664.1;Parent=rna-NM_181523.3;Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=PIK3R1;product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1;tag=MANE Select +NC_000003.12 BestRefSeq mRNA 195863364 195908551 . - . ID=rna-NM_005781.5;Parent=gene-TNK2;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;Name=NM_005781.5;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq exon 195908485 195908551 . - . ID=exon-NM_005781.5-1;Parent=rna-NM_005781.5;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq exon 195888426 195888606 . - . ID=exon-NM_005781.5-2;Parent=rna-NM_005781.5;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq exon 195886977 195887047 . - . ID=exon-NM_005781.5-3;Parent=rna-NM_005781.5;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq exon 195884812 195885033 . - . ID=exon-NM_005781.5-4;Parent=rna-NM_005781.5;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq exon 195883157 195883309 . - . ID=exon-NM_005781.5-5;Parent=rna-NM_005781.5;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq exon 195882051 195882328 . - . ID=exon-NM_005781.5-6;Parent=rna-NM_005781.5;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq exon 195879049 195879175 . - . ID=exon-NM_005781.5-7;Parent=rna-NM_005781.5;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq exon 195878446 195878592 . - . ID=exon-NM_005781.5-8;Parent=rna-NM_005781.5;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq exon 195878253 195878347 . - . ID=exon-NM_005781.5-9;Parent=rna-NM_005781.5;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq exon 195872276 195872470 . - . ID=exon-NM_005781.5-10;Parent=rna-NM_005781.5;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq exon 195870114 195870205 . - . ID=exon-NM_005781.5-11;Parent=rna-NM_005781.5;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq exon 195867361 195868709 . - . ID=exon-NM_005781.5-12;Parent=rna-NM_005781.5;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq exon 195867169 195867258 . - . ID=exon-NM_005781.5-13;Parent=rna-NM_005781.5;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq exon 195866889 195867016 . - . ID=exon-NM_005781.5-14;Parent=rna-NM_005781.5;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq exon 195863364 195864187 . - . ID=exon-NM_005781.5-15;Parent=rna-NM_005781.5;Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5 +NC_000003.12 BestRefSeq CDS 195888426 195888588 . - 0 ID=cds-NP_005772.3;Parent=rna-NM_005781.5;Dbxref=CCDS:CCDS33928.1,GeneID:10188,GenBank:NP_005772.3,HGNC:HGNC:19297,MIM:606994;Name=NP_005772.3;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=TNK2;product=activated CDC42 kinase 1 isoform 1;protein_id=NP_005772.3 +NC_000003.12 BestRefSeq CDS 195886977 195887047 . - 2 ID=cds-NP_005772.3;Parent=rna-NM_005781.5;Dbxref=CCDS:CCDS33928.1,GeneID:10188,GenBank:NP_005772.3,HGNC:HGNC:19297,MIM:606994;Name=NP_005772.3;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=TNK2;product=activated CDC42 kinase 1 isoform 1;protein_id=NP_005772.3 +NC_000003.12 BestRefSeq CDS 195884812 195885033 . - 0 ID=cds-NP_005772.3;Parent=rna-NM_005781.5;Dbxref=CCDS:CCDS33928.1,GeneID:10188,GenBank:NP_005772.3,HGNC:HGNC:19297,MIM:606994;Name=NP_005772.3;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=TNK2;product=activated CDC42 kinase 1 isoform 1;protein_id=NP_005772.3 +NC_000003.12 BestRefSeq CDS 195883157 195883309 . - 0 ID=cds-NP_005772.3;Parent=rna-NM_005781.5;Dbxref=CCDS:CCDS33928.1,GeneID:10188,GenBank:NP_005772.3,HGNC:HGNC:19297,MIM:606994;Name=NP_005772.3;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=TNK2;product=activated CDC42 kinase 1 isoform 1;protein_id=NP_005772.3 +NC_000003.12 BestRefSeq CDS 195882051 195882328 . - 0 ID=cds-NP_005772.3;Parent=rna-NM_005781.5;Dbxref=CCDS:CCDS33928.1,GeneID:10188,GenBank:NP_005772.3,HGNC:HGNC:19297,MIM:606994;Name=NP_005772.3;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=TNK2;product=activated CDC42 kinase 1 isoform 1;protein_id=NP_005772.3 +NC_000003.12 BestRefSeq CDS 195879049 195879175 . - 1 ID=cds-NP_005772.3;Parent=rna-NM_005781.5;Dbxref=CCDS:CCDS33928.1,GeneID:10188,GenBank:NP_005772.3,HGNC:HGNC:19297,MIM:606994;Name=NP_005772.3;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=TNK2;product=activated CDC42 kinase 1 isoform 1;protein_id=NP_005772.3 +NC_000003.12 BestRefSeq CDS 195878446 195878592 . - 0 ID=cds-NP_005772.3;Parent=rna-NM_005781.5;Dbxref=CCDS:CCDS33928.1,GeneID:10188,GenBank:NP_005772.3,HGNC:HGNC:19297,MIM:606994;Name=NP_005772.3;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=TNK2;product=activated CDC42 kinase 1 isoform 1;protein_id=NP_005772.3 +NC_000003.12 BestRefSeq CDS 195878253 195878347 . - 0 ID=cds-NP_005772.3;Parent=rna-NM_005781.5;Dbxref=CCDS:CCDS33928.1,GeneID:10188,GenBank:NP_005772.3,HGNC:HGNC:19297,MIM:606994;Name=NP_005772.3;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=TNK2;product=activated CDC42 kinase 1 isoform 1;protein_id=NP_005772.3 +NC_000003.12 BestRefSeq CDS 195872276 195872470 . - 1 ID=cds-NP_005772.3;Parent=rna-NM_005781.5;Dbxref=CCDS:CCDS33928.1,GeneID:10188,GenBank:NP_005772.3,HGNC:HGNC:19297,MIM:606994;Name=NP_005772.3;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=TNK2;product=activated CDC42 kinase 1 isoform 1;protein_id=NP_005772.3 +NC_000003.12 BestRefSeq CDS 195870114 195870205 . - 1 ID=cds-NP_005772.3;Parent=rna-NM_005781.5;Dbxref=CCDS:CCDS33928.1,GeneID:10188,GenBank:NP_005772.3,HGNC:HGNC:19297,MIM:606994;Name=NP_005772.3;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=TNK2;product=activated CDC42 kinase 1 isoform 1;protein_id=NP_005772.3 +NC_000003.12 BestRefSeq CDS 195867361 195868709 . - 2 ID=cds-NP_005772.3;Parent=rna-NM_005781.5;Dbxref=CCDS:CCDS33928.1,GeneID:10188,GenBank:NP_005772.3,HGNC:HGNC:19297,MIM:606994;Name=NP_005772.3;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=TNK2;product=activated CDC42 kinase 1 isoform 1;protein_id=NP_005772.3 +NC_000003.12 BestRefSeq CDS 195867169 195867258 . - 0 ID=cds-NP_005772.3;Parent=rna-NM_005781.5;Dbxref=CCDS:CCDS33928.1,GeneID:10188,GenBank:NP_005772.3,HGNC:HGNC:19297,MIM:606994;Name=NP_005772.3;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=TNK2;product=activated CDC42 kinase 1 isoform 1;protein_id=NP_005772.3 +NC_000003.12 BestRefSeq CDS 195866889 195867016 . - 0 ID=cds-NP_005772.3;Parent=rna-NM_005781.5;Dbxref=CCDS:CCDS33928.1,GeneID:10188,GenBank:NP_005772.3,HGNC:HGNC:19297,MIM:606994;Name=NP_005772.3;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=TNK2;product=activated CDC42 kinase 1 isoform 1;protein_id=NP_005772.3 +NC_000003.12 BestRefSeq CDS 195864181 195864187 . - 1 ID=cds-NP_005772.3;Parent=rna-NM_005781.5;Dbxref=CCDS:CCDS33928.1,GeneID:10188,GenBank:NP_005772.3,HGNC:HGNC:19297,MIM:606994;Name=NP_005772.3;Note=isoform 1 is encoded by transcript variant 1;gbkey=CDS;gene=TNK2;product=activated CDC42 kinase 1 isoform 1;protein_id=NP_005772.3 diff --git a/pgatk/testdata/test_cbioportal_ncbi_grch38_transcripts.fa b/pgatk/testdata/test_cbioportal_ncbi_grch38_transcripts.fa new file mode 100644 index 00000000..5f67636a --- /dev/null +++ b/pgatk/testdata/test_cbioportal_ncbi_grch38_transcripts.fa @@ -0,0 +1,770 @@ +>rna-NM_001255.3 CDS=76-1575 Dbxref=Ensembl:ENST00000310955.11,GeneID:991,GenBank:NM_001255.3,HGNC:HGNC:1723,MIM:603618;Name=NM_001255.3;gbkey=mRNA;gene=CDC20;product=cell division cycle 20;tag=MANE Select;transcript_id=NM_001255.3;gene_biotype=protein_coding;gene_synonym=bA276H19.3,CDC20A,OOMD14,OZEMA14,p55CDC;CDS_Dbxref=CCDS:CCDS484.1,Ensembl:ENSP00000308450.5,GeneID:991,GenBank:NP_001246.2,HGNC:HGNC:1723,MIM:603618;CDS_Name=NP_001246.2;CDS_gbkey=CDS;CDS_product=cell division cycle protein 20 homolog;protein_id=NP_001246.2 +CGGTCGGAACTGCTCCGGAGGGCACGGGCTCCGTAGGCACCAACTGCAAGGACCCCTCCC +CCTGCGGGCGCTCCCATGGCACAGTTCGCGTTCGAGAGTGACCTGCACTCGCTGCTTCAG +CTGGATGCACCCATCCCCAATGCACCCCCTGCGCGCTGGCAGCGCAAAGCCAAGGAAGCC +GCAGGCCCGGCCCCCTCACCCATGCGGGCCGCCAACCGATCCCACAGCGCCGGCAGGACT +CCGGGCCGAACTCCTGGCAAATCCAGTTCCAAGGTTCAGACCACTCCTAGCAAACCTGGC +GGTGACCGCTATATCCCCCATCGCAGTGCTGCCCAGATGGAGGTGGCCAGCTTCCTCCTG +AGCAAGGAGAACCAGCCTGAAAACAGCCAGACGCCCACCAAGAAGGAACATCAGAAAGCC +TGGGCTTTGAACCTGAACGGTTTTGATGTAGAGGAAGCCAAGATCCTTCGGCTCAGTGGA +AAACCACAAAATGCGCCAGAGGGTTATCAGAACAGACTGAAAGTACTCTACAGCCAAAAG +GCCACTCCTGGCTCCAGCCGGAAGACCTGCCGTTACATTCCTTCCCTGCCAGACCGTATC +CTGGATGCGCCTGAAATCCGAAATGACTATTACCTGAACCTTGTGGATTGGAGTTCTGGG +AATGTACTGGCCGTGGCACTGGACAACAGTGTGTACCTGTGGAGTGCAAGCTCTGGTGAC +ATCCTGCAGCTTTTGCAAATGGAGCAGCCTGGGGAATATATATCCTCTGTGGCCTGGATC +AAAGAGGGCAACTACTTGGCTGTGGGCACCAGCAGTGCTGAGGTGCAGCTATGGGATGTG +CAGCAGCAGAAACGGCTTCGAAATATGACCAGTCACTCTGCCCGAGTGGGCTCCCTAAGC +TGGAACAGCTATATCCTGTCCAGtGGTTCACGTTCTGGCCACATCCACCACCATGATGTT +CGGGTAGCAGAACACCATGTGGCCACACTGAGTGGCCACAGCCAGGAAGTGTGTGGGCTG +CGCTGGGCCCCAGATGGACGACATTTGGCCAGTGGTGGTAATGATAACTTGGTCAATGTG +TGGCCTAGTGCTCCTGGAGAGGGTGGCTGGGTTCCTCTGCAGACATTCACCCAGCATCAA +GGGGCTGTCAAGGCCGTAGCATGGTGTCCCTGGCAGTCCAATGTCCTGGCAACAGGAGGG +GGCACCAGTGATCGACACATTCGCATCTGGAATGTGTGCTCTGGGGCCTGTCTGAGTGCC +GTGGATGCCCATTCCCAGGTGTGCTCCATCCTCTGGTCTCCCCATTACAAGGAGCTCATC +TCAGGCCATGGCTTTGCACAGAACCAGCTAGTTATTTGGAAGTACCCAACCATGGCCAAG +GTGGCTGAACTCAAAGGTCACACATCCCGGGTCCTGAGTCTGACCATGAGCCCAGATGGG +GCCACAGTGGCATCCGCAGCAGCAGATGAGACCCTGAGGCTATGGCGCTGTTTTGAGTTG +GACCCTGCGCGGCGGCGGGAGCGGGAGAAGGCCAGTGCAGCCAAAAGCAGCCTCATCCAC +CAAGGCATCCGCTGAAGACCAACCCATCACctcagttgttttttatttttctaataaagt +cATGTCTcccttcatgttttttttttaaa +>rna-NM_012137.4 CDS=115-972 Dbxref=Ensembl:ENST00000284031.13,GeneID:23576,GenBank:NM_012137.4,HGNC:HGNC:2715,MIM:604743;Name=NM_012137.4;gbkey=mRNA;gene=DDAH1;product=dimethylarginine dimethylaminohydrolase 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_012137.4;description=dimethylarginine dimethylaminohydrolase 1;gene_biotype=protein_coding;gene_synonym=DDAH,DDAH-1,DDAHI,HEL-S-16;CDS_Dbxref=CCDS:CCDS705.1,Ensembl:ENSP00000284031.8,GeneID:23576,GenBank:NP_036269.1,HGNC:HGNC:2715,MIM:604743;CDS_Name=NP_036269.1;Note=isoform 1 is encoded by transcript variant 1;CDS_gbkey=CDS;CDS_product=N(G)%2CN(G)-dimethylarginine dimethylaminohydrolase 1 isoform 1;protein_id=NP_036269.1 +ACATTCAGCGGCTGCCAAGAGGAGCCGACGGGCGCTCGCAGGCTCAGCGCGCGCTGCCCG +CGGCAGGACCCGgccgcctccgccgccgccgccgcccctaAGCCTCCCGAAGCCATGGCC +GGGCTCGGCCACCCCGCCGCCTTCGGCCGGGCCACCCACGCCGTGGTGCGGGCGCTACCC +GAGTCGCTCGGCCAGCACGCGCTGAGAAGCGCCAAGGGCGAGGAGGTGGACGTCGCCCGC +GCGGAACGGCAGCACCAGCTCTACGTGGGCGTGCTGGGCAGcaagctggggctgcaggtg +gtgGAGCTGCCGGCCGACGAGAGCCTTCCGGACTGCGTCTTCGTGGAGGACGTGGCCGTG +GTGTGCGAGGAGACGGCCCTCATCACCCGACCCGGGGCGCCGAGCCGGAGGAAGGAGgTT +GACATGATGAAAGAAGCATTAGAAAAACTTCAGCTCAATATAGTagagatgaaagatgaa +aatgCAACTTTAGATGGCGGAGATGTTTTATTCACAGGCAGAGAATTTTTTGTGGGCCTT +TCCAAAAGGACAAATCAACGAGGTGCTGAAATCTTGGCTGATACTTTTAAGGACTATGCA +GTCTCCACAGTGCCAGTGGCAGATGGGTTGCATTTGAAGAGTTTCTGCAGCATGGCTGGG +CCTAACCTGATCGCAATTGGGTCTAGTGAATCTGCACAGAAGGCCCTTAAGatcatgCAA +CAGATGAGTGACCACCGCTACGACAAACTCACTGTGCCTGATGACATAGCAGCAAACTGT +ATATATCTAAATATCCCCAACAAAGGGCACGTCTTGCTGCACCGAACCCCGGAAGAGTAT +CCAGAAAGTGCAAAGGTTTATGAGAAACTGAAGGACCATATGCTGATCCCCGTGAGCATG +TCTGAACTGGAAAAGGTGGATGGgctgctcacctgctgctcaGTTTTAATTAACAAGAAA +GTAGACTCCTGAGCTGCAGAGTCCCCCCCGGTAGCCGGCAAGACCGCACAGGCAAGGCCG +ATGACTCTGTGCCCACTCCTGTTGTTTTCCTTGACAATCTACTGTGCCACTGTGCTACTA +ACTCTTGTTTACAAAATTTGATTCTAAGTTGAATTGCTTCATTCAacacccccaccctcc +ctcccctcgAGGTGGTACCTAAGCTGTGGATTTGCTAAATGAATTAAGCAACCTAGAAGA +TACAGAGCTAatgaattatcaaaatgtgattAATCCCAGTAAGGAAACACTCATTTAGTG +TCTGTATTTTTGGTGTGAAAATTATTTAGTTGCCAGTATATTCTGAAGAATGTCTTCTTG +ATCAGTCAGataagcttgctttttttttttttttttttcatgaatcatGTTTGGTTCCTG +TGAAAGTCCCTGGTCCAGGgatcctcctcctttctcttttactTCTGAATTCTGAAATTC +AGTTAGTTACTTTTGCCTTTCGCTCTTCTATCACAGCCACCTTGACCTTGGGTAAAACCC +AAGGTCTTTCCTTCTGGCTACCTTCCTGCAGGTCCACCCTGTCTGCCATTGGTCTCCTCT +GCCTCTGACTACATCTGCCACCAACaaccctcccctcacccctgccaGGGGCAGACAGGC +TTCTCAGCAGAACTGTGACTGAAATCAGAGCTGCTGTCTGGGGCAGTGTTAACTACACAG +AGGCACATCCTGACAGGGTTTGCCCCAGAGATCTAAATTCCAGAAGGAGGGCACCACACC +TAGGAAGGTAAATCCAGTATCAGAAGGTTGCTAAAAGATTAAAGATCAAGAAGCTTGGAA +ACATCCCATGGGTACAATGTCTTAGAAAGTCTTTAAGTCACATACCATGAATTTTTGCTT +CATTACTGACCATATATGACCTTggaggaactcttttttttttttccttctactcatTTC +TGTTTCCACCTACCCTGACTCACCGTATTTCCAGTCTTCTACCCCTGCAGTTATCCTAGT +CCAGCAAAGTCATTTCTTTCAAAAGAGACATCATGTCTGAAAATAATTACTGGTAGTCTA +ATATGAGCCAGAGTAAACAGCTCCTCATGGTCAATGAACATGTTCAGGAAGCGATCACCT +TGATGCTTGAACCCAACCCCAGACAGTGGACAATTCTACTTTGAAATATCCGTGAATATT +TACTGTGGGATCCAATTTAAACTTCTTTCTTCTCTAGCCTTTAAATTACACAACTTTGAA +CTGACACGGATCTCTTACAAAGAACAATGCGGCACTGAAGGAAGAGATGATTCCTTTACT +CAAACCTGCAGGAATCAGCCTATTAACAGGCAGGGGAAACGGTACTTTCCAATGAATGGT +AACTGATCCAGGCACATTATCACACTTCCTAGTCATCTCCACCTTTCCTGTATTGCCTGT +GGCTTGTTGTTTAAGATTAAGAATCAAAGAGATTAAGAAGTATCACTTCAAATCTTGCTC +TGCTCACTTCTATGTTTGCAGTCAAATTATTCCTTATGTTGGTGACCTAAAGAGAAttac +tttcattcatttcatttcccCCGTAGCAGATGGAAGGAGAAACctctgagaaaatgaaaa +catcctTAACCACTATCTTTCccttttatttgattattttatgtcagaaatttgcaaaag +tttttttctcctccttctcttccttgttGCTTAACTTTTTAATTCATGCCATATGCAGAT +ATCCAATTATGTGCATCCTGTGAATAAACCACGTCTTGGTCACTGTCATATTTTGAACCA +TCTCATCAGAGATGAATAATATCTTTTTACCAGAGAGAGAACGAATGTTAGCCACATGCC +CaagttaacaaagaaaaaatgttctcaAGGTTGTCCTTTTGGGTTAAATCTGGCCCTTCC +TTGGCAAAAGCAAAAATTCTCCCTGTGAGAGCTCAACATCTCAAATACAACCACAGGAAA +AATGGCCCAATCTGCCAGTTTAGGCTTACcagcatataatttttaatatctttacttCTA +TCATCCCAAATCAAAGAACTCTTCTCTATTATGTTTAATCAATTGCAAGcaaatagattt +ttctttgtaACAATTTGTTCTGCAGAAGgctgtttttcacttttcctttcttttgcttct +ttctgtctttccttctcttttgtctGGAGAAATCACTTAGACTCTGTGTGCCTCTTCTAC +ATTGCATTCTGCTCTGCTATGTTACCTGCTAGGCTGGCTTCTTTGGACTCCCTATATGAT +TGATGATGTGAAAACCTAAATTACTTGCAGCATAGTATTACTTCTTTGATGTTCTCATTA +GCATaatgttatttttgaaaaggaaagataCTATCACATAAGTTTTCCTCATCTGTTGTG +ATATACACCAATGGATAAACTAACGGAAACTGCTTTTTGACATTAAAAGACAGGAGAAAT +TATATTTAACTAAGTAAAAGTTAAGTCAGAATTACTTGGGTGATGTGATTCAATTTAGTT +AAAGGATGATAtagagaaaatacattatttagcATTATTTCTTCAGCTATAATGAATTGC +TATAGAAATCAGGCAGATCTTTCTAATGTGTATTGATTGGTCTTTTCAGCTACTCTGAAC +AGATTACTAAGGCCATCTCCTCATCTCTAAGGGAGAAAAATAGTCTGTAGATGAATAATG +TAAGGTAAAGAGTTGCATGTCAGTCTTTGTAATTATTTACACTTTAACTTTCTCCAGAAC +TCAGACATGATTTCAACATGGTGTtagatttgtgcattttattttcctgacCACCTCATT +CCAGCCAATGTATGGTTATCCACTCTGTGTgccaaaaccaatcatgcctttcacGGCCCT +TTAGTTCAGAGAAGTTCTGCACTGATTTTTAGTCTCTTGATGTCTCAATCTTACATGTAT +AccaatcacaatggaataaagtGTTGAGTTGTACTGTGA +>rna-NM_006622.4 CDS=128-2185 Dbxref=Ensembl:ENST00000274289.8,GeneID:10769,GenBank:NM_006622.4,HGNC:HGNC:19699,MIM:607023;Name=NM_006622.4;gbkey=mRNA;gene=PLK2;product=polo like kinase 2%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006622.4;description=polo like kinase 2;gene_biotype=protein_coding;gene_synonym=hPlk2,hSNK,SNK;CDS_Dbxref=CCDS:CCDS3974.1,Ensembl:ENSP00000274289.3,GeneID:10769,GenBank:NP_006613.2,HGNC:HGNC:19699,MIM:607023;CDS_Name=NP_006613.2;Note=isoform 1 is encoded by transcript variant 1;CDS_gbkey=CDS;CDS_product=serine/threonine-protein kinase PLK2 isoform 1;protein_id=NP_006613.2 +GCACAAGTGGACCGGGGTGTTGGGTGCTAGTCGGCACCAGAGGCAAGGGTGCGAGGACCA +CGGCCGGCTCGGACGTGTGACCGCGCCTAGGGGGTGGCAGCGGGCAGTGCGGGGCGGCAA +GGCGACCATGGAGCTTTTGCGGACTATCACCTACCAGCCAGCCGCCAGCACCAAAATGTG +CGAGCAGGCGCTGGGCAAGGGTTGCGGAGCGGACTCGAAGAAGAAGCGGCCGCCGCAGCC +CCCCGAGGAATCGCAGCCACCTCAGTCCCAGGCGCAAGTGCCCCCGGCGGCccctcacca +ccatcaccaccattcgcACTCGGGGCCGGAGATCTCGCGGATTATCGTCGACCCCACGAC +TGGGAAGCGCTACTGCCGGGGCAAAGTGCTGGGAAAGGGTGGCTTTGCAAAATGTTACGA +GATGACAGATTTGACAAATAACAAAGTCTACGCCGCAAAAATTATTCCTCACAGCAGAGT +AGCTAAACCTCATCAAAGGGAAAAGATTGACAAAGAAATAGAGCTTCACAGAATTCTTCA +TCATAAGCATGTAGTGCAGTTTTACCACTACTTCGaggacaaagaaaacatttacattcT +CTTGGAATACTGCAGTAGAAGGtCAATGGCTCATATTTTGAAAGCAAGAAAGGTGTTGAC +AGAGCCAGAAGTTCGATACTACCTCAGGCAGATTGTGTCTGGACTGAAATACCTTCATGA +ACAAGAAATCTTGCACAGAGATCTCAAACTAGGGAACTTTTTTATTAATGAAGCCATGGA +ACTAAAAGTTGGGGACTTCGGTCTGGCAGCCAGGCTAGAACCCTTGGAACACAGAAGGAG +AACGATATGTGGTACCCCAAATTATCTCTCTCCTGAAGTCCTCAACAAACAAGGACATGG +CTGTGAATCAGACATTTGGGCCCTGGGCTGTGTAATGTATACAATGTTACTAGGGAGGCC +CCCATTTGAAACTACAAATCTCAAAGAAACTTATAGGTGCATAAGGGAAGCAAGGTATAC +AATGCCGTCCTCATTGCTGGCTCCTGCCAAGCACTTAATTGCTAGTATGTTGTCCAAAAA +CCCAGAGGATCGTCCCAGTTTGGATGACATCATTCGACATGACTTTTTTTTGCAGGGCTT +CACTCCGGACAGACTGTCTTCTAGCTGTTGTCATACAGTTCCAGATTTCCACTTATCAAG +CCCAGCTAAGAATTTCTTTAAGAAAGCAGCTGCTGCTCTTTTTGGTGGCAAAAAAGACAA +AGCAAGATATATTGACACACATAATAGAGTGTCTAAAGAAGATGAAGACATCTACAAGCT +TAGGCATGATTTGAAAAAGACTTCAATAACTCAGCAACCCAGCAAACACAGGACAGATGA +GGAGCTCCAGCCACCTACCACCACAGTTGCCAGGTCTGGAACACCCGCAGTAGAAAACAA +GCAGCAGATTGGGGATGCTATTCGGATGATAGTCAGAGGGACTCTTGGCAGCTGTAGCAG +CAGCAGTGAATGCCTTGAAGACAGTACCATGGGAAGTGTTGCAGACACAGTGGCAAGGGT +TCTTCGGGGATGTCTGGAAAACATGCCGGAAGCTGATTGCATTCCCAAAGAGCAGCTGAG +CACATCATTTCAGTGGGTCACCAAATGGGTTGATTACTCTAACAAATATGGCTTTGGGTA +CCAGCTCTCAGACCACACCGTCGGTGTCCTTTTCAACAATGGTGCTCACATGAGCCTCCT +TCCAGACAAAAAAACAGTTCACTATTACGCAGAGCTTGGCCAAtgctcagttttcccagc +aacagaTGCTCCTGAGCAATTTATTAGTCAAGTGACGGTGCTGAAATACTTTTCTCATTA +CATGGAGGAGAACCTCATGGATGGTGGAGATCTGCCTAGTGTTACTGATATTCGAAGACC +TCGGCTCTACCTCCTTCAGTGGCTAAAATCTGATAAGGCCCTAATGATGCTCTTTAATGA +TGGCACCTTTCAGgtgaATTTCTACCATGATCATACAAAAATCATCATCTGTAGCCAAAA +TGAAGAATACCTTCTCACCTACATCAATGAGGATAGGATATCTACAACTTTCAGGCTGAC +AACTCTGCTGATGTCTGGCTGTTCATCAGAATTAAAAAATCGAATGGAATATGCCCTGAA +CATGCTCTTACAAAGATGTAACTGAAAGACTTTTCGAATGGACCCTATGGGACTCCTCTT +TTCCACTGTGAGATCTACAGGGAAGCCAAAAGAATGATCTAGAGTATGTTGAAGAAGATG +GACATGTGGTGGTACGAAAACAATTCCCCTGTGGCCTGCTGGACTGGTTGGAACCAGAAC +AGGCTAAGGCATACAGTTCTTGACTTTGGACAATCCAAGAGTGAACCAGAATGCAGTTTT +CCTTGAGATACCTGTTTTAAAAGGTTTTTCAGACAATTTTGCAGAAAGGTGCATTGATTC +TTAAATTCTCTCTGTTGAGAGCATTTCAGCCAGAGGACTTTGGAACTGTGAATATACTTC +ctgaaggggagggagaagggaggaagctCCCATGTTGTTTAAAGGCTGTAATTGGAGCAG +CTTTTGGCTGCGTAACTGTGAACTATggccatatataattttttttcattaatttttgaa +gataCTTGTGGCTGGAAAAGTGCATTCCTtgttaataaactttttatttattacagCCCA +AAGAGCAGTATTTATtatcaaaatgtctttttttttatgttgaccATTTTAAACCGTTGG +CAATAAAGAGTATGAAAACGCAGAAA +>rna-NM_130899.3 CDS=97-1914 Dbxref=Ensembl:ENST00000302938.4,GeneID:153745,GenBank:NM_130899.3,HGNC:HGNC:28397,MIM:619883;Name=NM_130899.3;gbkey=mRNA;gene=GARIN3;product=golgi associated RAB2 interactor family member 3;tag=MANE Select;transcript_id=NM_130899.3;gene_biotype=protein_coding;gene_synonym=FAM71B,GARI-L3;CDS_Dbxref=CCDS:CCDS4335.1,Ensembl:ENSP00000305596.4,GeneID:153745,GenBank:NP_570969.2,HGNC:HGNC:28397,MIM:619883;CDS_Name=NP_570969.2;CDS_gbkey=CDS;CDS_product=Golgi-associated RAB2 interactor protein 3;protein_id=NP_570969.2 +AGAAGTCCTGTAGGGAGATGGGCAGTTACcttctctccgtctctctctcggGGACTCTAT +TTGTGGCTGGTGGAGCTGTCTTAAACGAAGAGAACCATGAGCAATGAATCTTGTTTACCT +TATTACACAGCCCACAGCTACTCTTCAATGAGTGCGTTCAAAACCTCCATGGGGGACCTG +CAACGACAATTGTACAACAGAGGAGAGTACAACATTTTCAAGTATGCACCAATGTTCGAG +AGTAATTTTATTCAGATAAACAAAAAGGGAGAGGTGATTGATGTACACAACCGTGTCCGa +atggtgacagtgggcatcgtCTGCACCAGCCCCATCCTCCCACTGCCTGACGTCATGGTT +CTGGCCCAACCAACTAAAATCTGTGAACAGCATGTCAGATGGGGCCGGTTTGCCAAGGGG +AGAGGTCGCAGGCCCGTCAAGACTCTAGAGCTCACGAGACTGCTTCCCTTGAAATTTGTG +AAGATCTCCATCCACGATCATGAGAAACAGCAGCTGCGCCTGAAACTCGCCACTGGCCGT +ACTTTTTATCTGCAGTTGTGTCCCTCTTCTGACACACGGGAAGATCTCTTTTGCTATTGG +GAAAAACTTGTCTATCTCCTGAGGCCACCAGTAGAGAGTTACTGCAGTACCCCAACACTT +CTATCTGGGGACGCACCACCCGAAGACAACAAAAGCCTAGTGGCTGCAGAGCTCCACAGA +GAAGGGGATCAGAGTGAGACTGGGCTCTACAAGCCTTGTGATGTATCTGCAGCCACCTCT +TCTGCTTATGCTGGGGGAGAGGGAATCCAACATGCCTCCCACGGAACGGCTAGTGCGGCT +TCTCCATCCACGAGCACTCCAGGGGCTGCTGAAGGAGGAGCAGCAAGGACAGCAGGTGGC +ATGGCAGTGGCAGGAACAGCAACAGGACCTAGAACAGATGTGGCAATAGCAGGGGCAGCA +ATGAGTCCTGCAACAGGTGCTATGAGCATAGCAACAACCAAATCTGCAGGCCCAGGTCAA +GTGACCACAGCGCTGGCGGGAGCAGCTATCAAAAATCCAGGAGAAAATGAATCCAGCAAG +TCCATGGCAGGTGCTGCCAACATATCCTCAGAGGGTATTAGCTTGGCCTTGGTGGGTGCT +GCAAGCACCTCCTTGGAAGGTACTTCCACCTCGATGGCGGGGGCCGCCAGTCTCTCCCAA +GACAGCAGCTTGAGTGCGGCGTTTGCAGGCAGTATTACGACCAGCAAGTGTGCAGCAGAA +AGAACTGAAGGACCAGCAGTGGGACCCCTCATCTCCACCTTGCAAAGCGAAGGCTACATG +AGTGAACGAGATGGAAGCCAGAAAGTTTCCCAGCCCAGTGCTGAAGTCTGGaatgaaaac +aaggaaagaagagaaaagaaggacaGACATCCCAGTAGGAAAAGTTCTCATCACCGCAAG +GCAGGTGAAAGTCACCGCAGGAGAGCGGGGGACAAGAATCAGAAAGCGTCTTCCCACCGG +TCCGCATCTGGCCATAAAAACACGAGagatgacaaaaaagaaaaagggtacAGCAACGTA +AGGGGCAAGCGACATGGCTCCTCTCGCAAGAGCTCCACCCACAGCTCCACCAAAAAGGAG +TCGAGAACAACTCAGGAACTGGGGAAGAACCAATCTGCATCTAGCACAGGAGCTTTACAA +AAGAAAGCCAGTAAGATCAGCTCTTTTTTAAGGAGCCTCAGGGCCACTCCTGGTTCAAAA +ACAAGGGTCACATCACATGACAGAGAGGTAGATATCGTGGCTAAGATGGTGGAGAAGCAA +AACATAGAGGCCAAAGTGGAGAAAGCCCAGGgtggccaggagctggagatgaTCAGTGGC +ACTATGACATCCGAGAAGACGGAGATGATCGTCTTTGAAACCAAATCCATTTAAAGAGGA +GCCAGGGCTACAACCGCCCAGGGATCTGGAAGTATCCCTAGAGGAGCCCATCCCAGCTTT +CTTTACTGCAGTTCAAATAATAAAGGAAATCGTACAACTCCAAAAGAAATACAATCTCCT +GCTTGAATTTTTCTGCCCATAGCCTGGTGGTGACCTCACAGTGGCTTCTGTGATGGTGGC +TATGCTACAGCTGGAGACCCCAGCCTCCAGGCAAGTAGAGCTCCACCACCCGCCCACGGC +CAGCAGAGCCAACGTGAGTGTTCAGCTTTGCCTCAATCCCTTTTGCTTCCCCGAGACTGT +CAAAGCCACAGACTAAGAGCTGGGATGCATGGCCACCACCATGTCCCCTCGCCCATTCTC +CTCTTTTCCCTGAATGCCCCTGAACATGGACATTCAGTCCAGTTCTTAGCCTATGCAGAG +ACAGGATTCACATCCCCTCAGGGGATATTCAGGGTAGGAAGGAGCAATACAGCAGTATTT +GTAGGCAATTAGAATAGGAAATCTATTCTTCTAGATCAGGAATTGGCAAATCATGTTCTG +AGGTCCAAATCTTACCAGCTGCCTggatttgtaaataaagttttattggaacata +>rna-NM_001762.4 CDS=85-1680 Dbxref=Ensembl:ENST00000275603.9,GeneID:908,GenBank:NM_001762.4,HGNC:HGNC:1620,MIM:104613;Name=NM_001762.4;gbkey=mRNA;gene=CCT6A;product=chaperonin containing TCP1 subunit 6A%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001762.4;description=chaperonin containing TCP1 subunit 6A;gene_biotype=protein_coding;gene_synonym=CCT-zeta,CCT-zeta-1,CCT6,Cctz,HTR3,MoDP-2,TCP-1-zeta,TCP20,TCPZ,TTCP20;CDS_Dbxref=CCDS:CCDS5523.1,Ensembl:ENSP00000275603.4,GeneID:908,GenBank:NP_001753.1,HGNC:HGNC:1620,MIM:104613;CDS_Name=NP_001753.1;Note=isoform a is encoded by transcript variant 1;CDS_gbkey=CDS;CDS_product=T-complex protein 1 subunit zeta isoform a;protein_id=NP_001753.1 +AGAAGACCCGGATAGTTCCTCCCGGCCACGCCGCGCCGGCTCTGGGCACTCAGCATCGTT +TCCTTTTCCTCCGCTGGAGCAGCTATGGCGGCGGTGAAGACCCTGAACCCCAAGGCCGAG +GTGGCCCGAGCGCAGGCGGCGCTGGCGGTCAACATCAGCGCAGCGCGGGGTCTGCAGGAC +GTGCTAAGGACCAACCTGGGGCCCAAGGGCACCATGAAGATGCTCGTTTCTGGCGCTGGA +GACATCAAACTTACTAAAGACGGCAATGTGCTGCTTCACGAAATGCAAATTCAACACCCA +ACAGCTTCCTTAATAGCAAAGGTAGCAACAGCCCAGGATGATATAACTGGTGATGGTACG +ACTTCTAATGTCCTAATCATTGGAGAGCTGCTGAAACAGGCGGATCTCTACATTTCTGAA +gGCCTTCATCCTAGAATAATCACTGAAGGATTTGAAGCTGCAAAGGAAAAGGCCCTTCAG +TTTTTGGAAGAAGTCAaagtaagcagagagatggacaGGGAAACACTTATAGATGTGGCC +AGAACATCTCTTCGTACTAAAGTTCATGCTGAACTTGCAGATGTCTTAACAGAGGCTGTA +GTGGACTCCATTTTGGCCATTAAAAAGCAAGATGAACCTATTGATCTCTTCATGATTGAG +ATCATGGAGATGAAACATAAATCTGAAACTGATACAAGCTTAATCAGAGGGCTTGTTTTG +GACCACGGAGCACGGCATCCTGATATGAAGAAAAGGGTGGAGGATGCATACATCCTCACT +TGTAACGTGTCATTAGAGTATGAGAAAACagaaGTGAATTCTGGCTTTTTTTACAAGAgt +gcagaagagagagaaaaactcgTGAAAGCTGAAAGAAAATTCATTGAAGAtagggttaaa +aaaataatagaactgAAAAGGAAAGTCTGTGGCGATTCAGATAAAGGATTTGTTGTTATT +AATCAAAAGgGAATTGACCCCTTTTCCTTAGATGCtctttcaaaagaaggcatagtTGCT +CTGCGCAGAGCTAAAAGGAGAAATATGGAGAGGCTGACTCTTGCTTGTGGTGGGGTAGCC +CTGAATTCTTTTGACGACCTAAGTCCTGACTGCTTGGGACATGCAGGACTTGTATATGAG +TATACATTGGGAGAAGAGAAGTTTACCTTTATTGAGAAATGTAACAACCCTCGTTCTGTC +ACATTATTGATCAAAGGACCAAATAAGCACACACTCACTCAGATCAAAGATGCAGTGAGG +GACGGCTTGAGGGCTGTCAAAAATGCTATTGATGATGGCTGTGTGGTTCCAGGTGCTGGT +GCCGTGGAAGTGGCAATGGCAGAAGCCCTGATTAAACATAAGCCCAGTGTAAAGGGCAGG +GCACAGCTTGGAGTCCAAGCATTTGCTGATGCATTGCTCATTATTCCCAAGGTTCTTGCT +CAGAACTCTGGTTTTGACCTTCAGGAAACATTAGTTAAAATTCAAGCAGAACATTCAGAA +TCAGGTCAGCTTGTGGGTGTGGACCTGAACACAGGTGAGCCAATGGTGGCAGCAGAAGTA +GGCGTATGGGATAACTATTGTGTAAAGAAACAGCTTCTTCACTCCTGCACTGTGATTGCC +ACCAACATTCTCTTGGTTGATGAGATCATGCGAGCTGGAATGTCTTCTCTGAAAGGTTGA +ATTGAAGCTTCCTCTGTATCTGAATCTTGAAGACTGCAAAGTGATCCTGAGGATTACAGC +TGTGGAATTTTTGTCCAAgcttcaaataattttgaaagaaattttccCATATGAAAAAAG +GAGAGAACACTGGCATCTGTTGAAATTTGGAAGTTCTgaaattatagtatttttaaaaat +tgcactgAAGTGTATACACATAAAGCAGGTCTTTTATCCAGTGAACAGGATGTTTTGCTT +TAGCAGCAGTGACATAAAATTCCATGTTAGATAAGCATATGTTACTTACcttgttattaa +atatttcttgaaaagcaaattttaatgGTTTAATTTTATGTGGACGTATGTTAAATTATC +CAACTACCCTATTGTTAagcatttggttttaaaatttttatgctaATATAAATGctcaag +taatttaaaatattgaaagcatCCCTGTTGGTATAAATTTCTGAGTAAATGCATTGGATC +AGTTGGACTTTGAACGCCTTTGAAATGGCTTTGCTAAAATGCTCCCGCCACAAAGTTGTA +GGAAATGGGAAGAGGAGTCAACTAGAGGCAAGGGAGTTGAGAGAGCTGCAACTGTAAAGG +GCAAGAACAGGCAGAGGTAAAAAGATGATGGAAGGTGTGGTGACTAAGGGCCACGGTTAT +TGGGTGAAATTTGAGATTGTAGGCCAACTGTATTTTCAAGCTTCTGAACTTAGGCAAAAT +ATTCATCGCAAAGTCTCTAGCGTCATATTTTTCTCACCCAAATTACGTTTCCACGagatt +atttatatatagttGGTCTATCTCTGCAGTCCTTGAAGGTGAAGTTGTGTGTTACTAGGC +TGTGTTTTGGGATGTCAGCAGTGGCCTGAAGTGAGTTGTGCAATAAATGTTAAGTTGAAA +CCTC +>rna-NM_004486.6 CDS=32-3040 Dbxref=GeneID:2801,GenBank:NM_004486.6,HGNC:HGNC:4425,MIM:602580;Name=NM_004486.6;gbkey=mRNA;gene=GOLGA2;product=golgin A2%2C transcript variant 2;transcript_id=NM_004486.6;description=golgin A2;gene_biotype=protein_coding;gene_synonym=DEDHMB,GM130;CDS_Dbxref=CCDS:CCDS6896.2,GeneID:2801,GenBank:NP_004477.5,HGNC:HGNC:4425,MIM:602580;CDS_Name=NP_004477.5;Note=isoform 2 is encoded by transcript variant 2;CDS_gbkey=CDS;CDS_product=golgin subfamily A member 2 isoform 2;protein_id=NP_004477.5 +GACTTCCGCAGTGGTTGCCGGGATCGCGCTGATGTGGCCCCAACCCCGCCTCCCTCCCCG +CCCCGCGATGTCGGAAGAAACCCGACAGAGCAAATTGGCCGCAGCGAAGAAAAAGTTGAG +AGAATATCAGCAGAGGAATAGCCCTGGTGTTCCTACAGGAgcgaaaaagaagaagaaaat +aaaaaatggcagTAACCCTGAGACAACCACTTCTGGTGGTTGCCACTCACCTGAGGATAC +ACCCAAGGACAATGCTGCTactctacaaccatctgatgaCACCGTGTTACCTGGCGGTGT +CCCTTCCCCTGGTGCCAGTCTCACTAGCATGGCGGCATCTCAGAATCATGATGCTGACAA +TGTCCCTAATCTCATGGATGAAACCAAGACTTTCTCATCAACCGAGAGCCTGCGACAACT +CTCCCAACAGCTCAATGGTCTTGTTTGTGAGTCTGCGACATGTGTCAATGGGGAGGGCCC +TGCATCGTCTGCTAACCTGAAGGATCTGGAGAGCCGGTACCAACAGCTAGCGGTAGCCCT +GGACTCCAGCTAtgtaacaaacaaacaactcaataTCACGATAGAGAAATTGAAACAACA +GAACCAAGAAATTACGGATCAGTTGGAAGAAgaaaagaaagaatgccaCCAAAAGCAGGG +AGCCCTAAGGGAGCAGTTACAGGTTCACATTCAGACCATAGGGATCCTCGTATCAGAGAA +AGCTGAGTTACAGACAGCCCTGGCTCACACTCAGCATGCTGCCAGGCAGAAAGAAGGAGA +GTCTGAAGATCTGGCCAGCCGCCTGCAGTATTCCCGGCGGCGTGTGGGAGAGTTGGAGCG +GGCTCTCTCTGCTGTCTCCACGCAGCAGAAGAAGGCAGACAGGTACAACAAGGAGTTAAC +CAAAGAGAGAGACGCCCTCAGGCTGGAGTTATACAAGAACACCCAAAGCAATGAGGACCT +GAAGCAAGAGAAATCAGAATTGGAAGAGAAGCTTCGGGTCCTAGTGACTGAGAAGGCTGG +CATGCAGCTTAACTTGGAAGAATTGCAAAAGAAGTTAGAGATGACGGAACTCCTGCTTCA +ACAGTTTTCAAGCCGGTGTGAAGCCCCTGATGCTAACCAGCAGTTACAGCAGGCCATGGA +GGAGCGGGCACAGCTGGAAGCACACCTGGGGCAGgtAATGGAGTCGGTTAGACAACTACA +AATGGAGAGAGATAAATATGCGGAGAATCTCAAAGGAGAGAGCGCCATGTGGCGGCAGAG +GATGCAGCAGATGTCAGAGCAGGTGCACACATTGAGAGAGGAGAAGGAATGTAGCATGAG +TCGGGTACAGGAGCTGGAGACGAGCTTGGCTGAACTGAGGAACCAGATGGCTGAACCCCC +GCCCCCAGAGCCCCCAGCAGGGCCCTCCGAGGTGGAGCAGCAGCTACAAGCGGAGGCTGA +GCACCTGCGGAAGGAGCTGGAGGGTCTGGCAGGACAGCTTCAAGCCCAGGTGCAAGACAA +TGAGGGCTTGAGTCGCCTGAAccgggagcaggaggagaggctgcTGGAGCTGGAGCGGGC +GGCCGAGCTCTGGGGGGAGCAGGCGGAGGCGCGCAGGCAAATCCTGGAGACCATGCAGAA +CGACCGCACTACCATCAGCCGCGCACTCTCCCAGAACCGGGAGCTCAAGGAGCAGCTGGC +TGAGCTGCAGAGCGGATTTGTAAAGCTGACTAATGAGAACATGGAGATCACCAGCGCACT +GCAGTCGGAGCAGCACGTCAAGAGGGAGCTGGGAAAGAAGCTGGGCGAGCTGCAGGAGAA +GCTGAGCGAGCTGAAGGAAACGGTGGAGCTGAAGAGCCAAGAGGCTCAAAGTCTGCAGCA +GCAGCGAGACCAGTACCTGGGACACCTGCAGCAGTATGTGGCCGCCTATCAGCAGCTGAC +CTCTGAGAAGGAGGTGCTGCATAATCAGCTACTGCTGCAGACCCAGCTCGTGGaccagct +gcagcagcaggaagCTCAGGGCAAAGCGGTGGCCGAGATGGCCCGCCAAGAGTTGCAGGA +AACCCAGGAGCGCCTGGAAGCTGCCACCCAGCAGAATCAGCAGCTACGGGCCCAGTTGAG +CCTCATGGCTCACCCTGGGGAAGGAGATGGACTGGaccgggaggaggaggaggatgagga +ggaggaggaggaggaggcggtggCAGTACCTCAGCCCATGCCAAGCATCCCGGAGGACCT +GGAGAGCCGGGAAGCCATGGTGGCATTTTTCAACTCAGCTGTAGCCAGTGCCGAGGAGGA +GCAGGCAAGGCTACGTGGGCAGCTGAAGGAGCAAAGGGTGCGCTGCCGGCGCCTGGCTCA +CCTGCTGGCCTCGGCCCAGAAGGAGCCTgaggcagcagccccagccccagggaccGGGGG +TGATTCTGTGTGTGGGGAGACCCACCGGGCCCTGCAGGGGGCCATGGAGAAGCTGCAGAG +CCGCTTTATGGAGCTCATGCAGGAGAAGGCAGACCTGAAGGAGAGGGTAGAGGAACTGGA +ACATCGCTGCATCCAGCTTTCTGGAGAGACAGACACCATTGGAGAGTACATTGCACTGTA +CCAGAGCCAGAGGGCAGTGCTGAAGGAGCGGCACCGGGAGAAGGAGGAGTACATCAGCAG +GCTGGCCCAAGACAAGGAGGAGATGAAGGTGAAGCTGCTGGAGCTGCAGGAGCTGGTCTT +ACGGCTTGTGGGCGACCGCAACGAGTGGCATGGCAGATTCCTGGCAGCTGCCCAGAACCC +TGCTGATGAGCCCACTTCAGGGGCCCCAGCCCCCCAGGAACTTGGGGCTGCCAACCAGCA +GGGTGATCTTTGCGAGGTGAGCCTCGCCGGCAGTGTGGAGCCTGCccaaggagaggccag +ggagggttCTCCCCGTGACAACCCCACTGCACAGCAGATCATGCAGCTGCTTCGTGAGAT +GCAGAACCCCCGGGAGCGCCCAGGCTTGGGCAGCAACCcctgcattccttttttttaCCG +GGCTGACGAGAATGATGAGGTGAAGATCACTGTCATCTAAAAGCCGGCTACTGTCAGCAA +AGCCTGAAGAAGTGGGGCTGGATACCCTGCCCCCACCATATCCCTACCATCCCTTCTCAG +TCAACCCTTTACCCTTACAGTAGCAAGCATAGACCCCTGTCTAACGGGGGTAGACAGGTG +CAGATGAGGTGAAGATCACTGTCATCTAAAAGCTGgccactaaattaaaaaaaaattaaa +agttatggGATTAAAAAAAGTTATGGGATAAAAAAGGTTATGGGTAACTTATGGTATAAA +AGTTAtgaaaaaaggccaggtgcagtggctcacgcctgtaatcccagcacttttgggagg +ctgaggttgggagttcaagaccagcctggtcaacatggtgaaactgtgtctctactaaaa +atacaaaaattagccaggcatggtggcacgtgcctgtaatcccagctactcgggaggctg +aggcaggagaatcgcttgaacctgggaggtggaggttgcagtgggctgagatcacgccat +tgcactccagcctgggcgacagagtgagactctgtctcaaaaaaaaaaaaaattatgaaa +aaagttATGGGATTAAAGAAAGTcaggataaaaattttaaaaagcaggccaCTGTCAGCA +AAGCCTGGAGAAGTGGGGCCGGAGGCTCCGCCCCCATCATGTGCCTGCCACCCCTTCCCA +GTCATCCCTTTACTCTTACAGTAGCAAATAAGACCCCTGTCTAATGGGGGGAGACAAATG +TGTAGACCCTTAGCCACCTTGGCCAGGGCTGACTCCTTAAATTTCTGGATGATGATGATT +GTTATTTAATAGCCAGAGGCTCATATAATTGGCCTCTTTGGAAGAGGCCTCATGGCCTCC +TTACTCTCACCAAAGCAATTTTTCCCTCAGGGGGGCTCCCATCTTCTTACACAgagaggc +agctgaggcaggacagtgggGCTAACTGTAGACCAGGCGAGGGCACGGGCTGCTGGGGTG +GCCCTGCTTCCCCAGTGTACATATTGTATCTGTGTAACATTTTGTATATTCCAGGGGTAG +GGCCGCCCCCTGTATCATACCTAGCAGAGGTTGGAGCTGGCACATGGGGAGGAGGTTCTA +ATAATTATTTGGGGCTGGGAAACTTATTTATTGATAGCATAGGACAGAGGAAGGAGGCGG +GGATGGGGTCGTGGCGCCCTGGTGATGCGACtcctgtttattttgctttttatttcggAA +TAAATGGATTTAGCCATA +>rna-NM_016569.4 CDS=976-3207 Dbxref=GeneID:6926,GenBank:NM_016569.4,HGNC:HGNC:11602,MIM:601621;Name=NM_016569.4;gbkey=mRNA;gene=TBX3;product=T-box transcription factor 3%2C transcript variant 2;transcript_id=NM_016569.4;description=T-box transcription factor 3;gene_biotype=protein_coding;gene_synonym=TBX3-ISO,UMS,XHL;CDS_Dbxref=CCDS:CCDS9176.1,GeneID:6926,GenBank:NP_057653.3,HGNC:HGNC:11602,MIM:601621;CDS_Name=NP_057653.3;Note=isoform 2 is encoded by transcript variant 2;CDS_gbkey=CDS;CDS_product=T-box transcription factor TBX3 isoform 2;protein_id=NP_057653.3 +AGACGCCCGGTGAATTCTAGAGGCGGCGGAGGGTGGCGAGGAGCTCTCGCTTTCTCTCGC +TCCCTCCCTCTCcgactccgtctctctctctctctctctctctcccctccctctctttcc +ctctgttCCATTTTTTCCCCCTCTAAATCCTCCCTGCCCTGCGCGCCTGGACACAGATTT +AGGAAGCGAATTCGCTCACGTTTTAGgacaaggaagagagagaggcacGGGAGAAGAGCC +CAGCAAGATTTGGATTGAAACCGAGACACCCTCCGGAGGCTCggagcagaggaaggagga +ggagggcggCGAACGGAAGCCAGTTTGCAATTCAAGTTTTGATAGCGCTGGTAGAAGGGG +gtttaaatcagatttttttttttttaaaggagagagaCTTTTTCCGCTCTCTCGCTCCCT +GTTAAAGCCGGGTCTAGCACAGCTGCAGACGCCACCAgcgagaaagagggagaggaagac +agaTAGGGGGcgggggaagaagaaaaagaaaggtaaaaagtCTTCTAGGAGAACCTTTCA +CATTTGCAACAAAAGACCTAGGGGCTGGAGAGAGATTCCTGGGACGCAGGGCTGGAGTGT +CTATTTCGAGCTCAGCGGCAGGGCTCGGGCGCGAGTCGAGACCCTGCTCGCTCCTCTCGC +TTCTGAAACCGACGTTCAGGAGCGGCTTTTTAAAAACGCAAGGCACAAGGACGGTCACCC +GCGCGACTATGTTTGCTGATTTTTCGCCTTGCCCTCTTTAAAAGCGGCCTCCCATTCTCC +AAAAGAcacttcccctcctccctttGAAGTGCATTAGTTGTGATTtctgcctccttttct +tttttctttcttttttgttttgctttttccccCCTTTTGAATTATGTGCTGctgttaaac +aacaacaaaaaaacaacaaaacacagcaGCTGCGGACTTGTCCCCGGCTGGAGCCCAGCG +CCCCGCCTGGAGTGGATGAGCCTCTCCATGAGAGATCCGGTCATTCCTGGGACAAGCATG +GCCTACCATCCGTTCCTACCTCACCGGGCGCCGGACTTCGCCATGAGCGCGGTGCTGGGT +CACCAGCCGCCGTTCTTCCCCGCGCTGACGCTGCCTCCCAACGGCGCGGCGGCGCTCTCG +CTGCCGGGCGCCCTGGCCAAGCCGATCATGGATCAATTGGTGGGGGCGGCCGAGACCGGC +ATCCCGTTCTCCTCCCTGGGGCCCCAGGCGCATCTGAGGCCTTTGAAGACCATGGAGCCC +GAAGAAGAGGTGGAGGACGACCCCAAGGTGCACCTGGAGGCTAAAGAACTTTGGGATCAG +TTTCACAAGCGGGGCACCGAGATGGTCATTACCAAGTCGGGAAGGCGAATGTTTCCTCCA +TTTAAAGTGAGATGTTCTGGGCTGGATAAAAAagccaaatacattttattgatgGACATT +ATAGCTGCTGATGACTGTCGTTATAAATTTCACAATTCTCGGTGGATGGTGGCTGGTAAG +GCCGACCCCGAAATGCCAAAGAGGATGTACATTCACCCGGACAGCCCCGCTACTGGGGAA +CAGTGGATGTCCAAAGTCGTCACTTTCCACAAACTGAAACTCACCAACAACATTTCAGAC +AAACATGGATTTACTTTGGCCTTCCCAAGTGATCACGCTACGTGGCAGGGGAATTATAGT +TTTGGTACTCAGACTATATTGAACTCCATGCACAAATACCAGCCCCGGTTCCACATTGTA +AGAGCCAATGACATCTTGAAACTCCCTTATAGTACATTTCGGACATACTTGTTCCCCGAA +ACTGAATTCATCGCTGTGACTGCATACCAGAATGATAAGATAACCCAGTTAAAAATAGAC +AACAACCCTTTTGCAAAAGGTTTCCGGGACACTGGAAATGGCCGAAGAGAAAAAAGAAAA +CAGCTCACCCTGCAGTCCATGAGGGTGTTTGATGAAAGACACAAAAAGGAGAATGGGACC +TCTGATGAGTCCTCCAGTGAACAAGCAGCTTTCAACTGCTTCGCCCAGGCTTCTTCTCCA +GCCGCCTCCACTGTAGGGACATCGAACCTCAAAGATTTATGTCCCAGCGAGGGTGAGAGC +GACGCCGAGGCCGAGAGCAAAGAGGAGCATGGCCCCGAGGCCTGCGACGCGGCCAAGATC +TCCACCACCACGTCGGAGGAGCCCTGCCGTGACAAGGGCAGCCCCGCGGTCAAGGCTCAC +CTTTTCGCTGCTGAGCGGCCCCGGGACAGCGGGCGGCTGGACAAAGCGTCGCCCGACTCA +CGCCATAGCCCCGCCACCATCTCGTCCAGCACTCGCGGCCTGGGCGCGGAGGAGCGCAGG +AGCCCGGTTCGCGAGGGCACAGCGCCGGCCAAGGTGGAAGAGGCGCGCGCGCTCCCGGGC +AAGGAGGCCTTCGCGCCGCTCACGGTGCAGACGGACGCGGCCGCCGCGCACCTGGCCCAG +GGCCCCCTGCCTGGCCTCGGCTTCGCCCCGGGCCTGGCGGGCCAACAGTTCTTCAACGGG +CACCCGCTCTTCCTGCACCCCAGCCAGTTTGCCATGGGGGGCGCCTTCTCCAGCATGGCG +GCCGCTGGCATGGGTCCCCTCCTGGCCACGGTTTCTGGGGCCTCCACCGGTGTCTCGGGC +CTGGATTCCACGGCCATGGCCTCTGCCGCTGCGGCGCAGGGACTGTCCGGGGCGTCCGCG +GCCACCCTGCCCTTCCACCTCCAGCAGCACGTCCTGGCCTCTCAGGGCCTGGCCATGTCC +CCTTTCGGAAGCCTGTTCCCTTACCCCTACACGTACATGGCCGCAGCGGCGGCCGCCTCC +TCTGCGGCAGCCTCCAGCTCGGTGCACCGCCACCCCTTCCTCAATCTGAACACCATGCGC +CCGCGGCTGCGCTACAGCCCCTACTCCATCCCGGTGCCGGTCCCGGACGGCAGCAGTCTG +CTCACCACCGCCCTGCCCTCCATGGCGGCGGCCGCGGGGCCCCTGGACGGCAAAGTCGCC +GCCCTGGCCGCCAGCCCGGCCTCGGTGGCAGTGGACTCGGGCTCTGAACTCAACAGCCGC +TCCTCCACGCTCTCCTCCAGCTCCATGTCCTTGTCGCCCAAACTCTGCGCGGAGAAAGAG +GCGGCCACCAGCGAACTGCAGAGCATCCAGCGGTTGGTTAGCGGCTTGGAAGCCAAGCCG +GACAGGTCCCGCAGCGCGTCCCCGTAGACCCGTCCCAGACACGTCTTTTCATTCCAGTCC +AGTTCAGGCTGCCGTGCACTTTGTCGGATATAAAATAAACCACGGGCCCGCCATGGCGTT +AGCCCTTCCTTTTGCAGTTGCGTCTGGGAAGGGGCCCCGGACTCCCTCGAGAGAATGTGC +TAGAGACAGCCCCTGTCTTCTTGGCGTGGTTTATATGTCCGGGATCTGGATCAGATTCTG +GGGGCTCAGAAACGTCGGTTGCATTGAGCTACTGGGGGTAGGAGTTCCAACATTTATGTC +CAGAGCAACTTCCAGCAAGGCTGGTCTGGGTCTCTGCCCACCAGGCGGGGAGGTGTTCAA +AGACATCTCCCTCAGTGcggatttatatatatatttttccttcactgtGTCAagtggaaa +caaaaacaaaatctttcaaaaaaaaaatcgggACAAGTGAACACATTAACATGATTCTGT +TTGTGCAGATTAAAAACTTTATAGGGACTTGCATTATCGGTTCTCAATAAATTACTGAGC +AGCTTTGTTTGGGGAGGGAAGTCCCTACCATCCTTGTTTAGTCTATATTAAGAAAAtctg +tgtctttttaatattcttgtGATGTTTTCAGAGCCGCTGTAGGTCTCTTCTTGCATGTCC +ACAGTAATgtatttgtggtttttattttgaaCGCTTGCTTTTAGAGAGAAAACAATATAG +CCCCCTACCCTTTTCCCAATCCTTTGCCCTCAAATCAGTGACCCAAGGGAGGGGGGGATT +TAAAGGGAAGGAGTGGGCAAAAcacataaaatgaatttattatatCTAAGCTCTGTAGCA +GGATTCATGTCGTTCTTTGAcagttctttctctttcctgtatATGCAATaacaaggtttt +aaaaaaataataaagaagtgaGACTATTAGACAaagtatttatgtaattatttgatAACT +CTTGTAAATAGGTGGAATATGAATGCTTggaaaattaaactttaatttaTTGACATTGTA +CATAGCTCTGTGTAAATAGAATTGCAACTGTCAGGTTTTGTGTTCTTGTTTTCCTTTAGT +TGGGTTTATTTCCAGGTCACAGAATTGCTGTTAACACTAGAAAACACACTTCCTGCACCA +ACACCAATACCCTTTCAAAAGAGTTGTCtgcaacatttttgttttcttttttaatgtccA +AAAGTGGGGGAAAGTGCTATTTCCTATTTTCACCAAAATTGGGGAAGGAGTGCCACTTTC +CAGCTCCACTTCAAATTCCTTAAAATATAACTGAGAttgctgtggggagggaggagggca +gaggctgcggtttgactttttaatttttcttttgttatttgtatttgCTAGTCTCTGATT +TCCTCAAAACGAAGTGGAATTTACTACTGTTGTCAGTATCGGTGTTTTGAATTGGTGCCT +GCCTATAGAGATATATTCACAGTTCAAAAGTCAGGTGCTGAGAGATGGTTTAAAGACAAA +TTCATGAAGGTATATTTTGTGTTATAGTTGTTGATGAGTtctttggttttctgtattttt +ccccctctctttaaaacatcactgaaatttcaataaatttttattgaaatgtc +>rna-NM_001429.4 CDS=414-7658 Dbxref=Ensembl:ENST00000263253.9,GeneID:2033,GenBank:NM_001429.4,HGNC:HGNC:3373,MIM:602700;Name=NM_001429.4;gbkey=mRNA;gene=EP300;product=E1A binding protein p300%2C transcript variant 1;tag=MANE Select;transcript_id=NM_001429.4;description=E1A binding protein p300;gene_biotype=protein_coding;gene_synonym=KAT3B,MKHK2,p300,RSTS2;CDS_Dbxref=CCDS:CCDS14010.1,Ensembl:ENSP00000263253.7,GeneID:2033,GenBank:NP_001420.2,HGNC:HGNC:3373,MIM:602700;CDS_Name=NP_001420.2;Note=isoform 1 is encoded by transcript variant 1;CDS_gbkey=CDS;CDS_product=histone acetyltransferase p300 isoform 1;protein_id=NP_001420.2 +GAGAAGGAGGAGGACAGCGCCGAGGAGGAAGAGGTTGATGGCGGCGGCGGAGCTCCGAGA +GACCTCGGCTGGGCAGGGGCCGGCCGTGGCGGGCCGGGGACTGCGCCTCTAGAGCCGCGA +GTTCTCGGGAATTCGCCGCAGCGGACGCGCTCGGCGAATTTGTGCTCTTGTGCCCTCCTC +CGGGCTTGGGCCCAGGCCCGGCCCCTCGCACTTGCCCTTACCTTTTCTATCGAGTCCGCA +TCCCTCTCCAGCCACTGCGACCCGGcgaagagaaaaaggaacttcCCCCACCCCCTCGGG +TGCCGTCGGAGCCCCCCAGCCCACCCCTGGGTGCGGCGCGGGGACCCCGGGCCGAAGAAG +AGATTTCCTGAGGATTCTGGTTTTCCTCGCTTGTATCTCCGAAAGAATTAAAAATGGCCG +AGAATGTGGTGGAACCGGGGCCGCCTTCAGCCAAGCGGCCTAAACTCTCATCTCCGGCCC +TCTCGGCGTCCGCCAGCGATGGCACAGATTTTGGCTCTCTATTTGACTTGGAGCACGACT +TACCAGATGAATTAATCAACTCTACAGAATTGGGACTAACCAATGGTGGTGATATTAATC +AGCTTCAGACAAGTCTTGGCATGGTACAAGATGCAGCTTCTAAACATAAACAGCTGTCAG +AATTGCTGCGATCTGGTAGTTCCCCTAACCTCAATATGGGAGTTGGTGGCCCAGGTCAAG +TCATGGCCAGCCAGGCCCAACAGAGCAGTCCTGGATTAGGTTTGATAAATAGCATGGTCA +AAAGCCCAATGACACAGGCAGGCTTGACTTCTCCCAACATGGGGATGGGCACTAGTGGAC +CAAATCAGGGTCCTACGCAGTCAACAGGTATGATGAACAGTCCAGTAAATCAGCCTGCCA +TGGGAATGAACACAGGGATGAATGCGGGCATGAATCCTGGAATGTTGGCTGCAGGCAATG +GACAAGGGATAATGCCTAATCAAGTCATGAACGGTTCAATTGGAGCAGGCCGAGGGCGAC +AGAATATGCAGTACCCAAACCCAGGCATGGGAAGTGCTGGCAACTTACTGACTGAGCCTC +TTCAGCAGGGCTCTCCCCAGATGGGAGGACAAACAGGATTGAGAGGCCCCCAGCCTCTTA +AGATGGGAATGATGAACAACCCCAATCCTTATGGTTCACCATATACTCAGAATCCTGGAC +AGCAGATTGGAGCCAGTGGCCTTGGTCTCCAGATTCAGACAAAAACTGTACTATCAAATA +ACTTATCTCCATTTGCTATGGACAAAAAGGCAGTTCCTGGTGGAGGAATGCCCAACATGG +GTCAACAGCCAGCCCCGCAGGTCcagcagccaggcctggtgactcCAGTTGCCCAAGGGA +TGGGTTCTGGAGCACATACAGCTGATCCAGAGAAGCGCAAGCTCATCCAGCAGCAGCTTG +TTCTCCTTTTGCATGCTCACAAGTGCCAGCGCCGGGAACAGGCCAATGGGGAAGTGAGGC +AGTGCAACCTTCCCCACTGTCGCACAATGAAGAATGTCCTAAACCACATGACACACTGCC +AGTCAGGCAAGTCTTGCCAAGtgGCACACTGTGCATCTTCTCGACAAATCATTTCACACT +GGAAGAATTGTACAAGACATGATTGTCCTGTGTGTCTCCCCCTCAAAAATGCTGGTGATA +AGAGAAATCAACAGCCAATTTTGACTGGAGCACCCGTTGGACTTGGAAATCCTAGCTCTC +TAGGGGTGGGTCAACAGTCTGCCCCCAACCTAAGCACTGTTAGTCAGATTGATCCCAGCT +CCATAGAAAGAGCCTATGCAGCTCTTGGACTACCCTATCAAGTAAATCAGATGCCGACAC +AACCCCAGGTGCAAGCAAAGAACCAGCAGAATCAGCAGCCTGGGCAGTCTCCCCAAGGCA +TGCGGCCCATGAGCAACATGAGTGCTAGTCCTATGGGAGTAAATGGAGGTGTAGGAGTTC +AAACGCCGAGTCTTCTTTCTGACTCAATGTTGCATTCAGCCATAAATTCTCAAAACCCAA +TGATGAGTGAAAATGCCAGTGTGCCCTCCCTGGGTCCTATGCCAACAGCAGCTCAACCAT +CCACTACTGGAATTCGGAAACAGTGGCACGAAGATATTACTCAGGATCTTCGAAATCATC +TTGTTCACAAACTcgTCCAAGCCATATTTCCTACGCCGGATCCTGCTGCTTTAAAAGACA +GACGGATGGAAAACCTAGTTGCATATGCTCGGAAAGTTGAAGGGGACATGTATGAATCTG +CAAACAATCGAGCGGAATACTACCACCTTCTAGCTGAGAAAATCTATAAGATCCAGAAAG +AACTAGAAGAAAAACGAAGGACCAGACTACAGAAGCAGAACATGCTACCAAATGCTGCAG +GCATGGTTCCAGTTTCCATGAATCCAGGGCCTAACATGGGACAGCCGCAACCAGGAATGA +CTTCTAATGGCCCTCTACCTGACCCAAGTATGATCCGTGGCAGTGTGCCAAACCAGATGA +TGCCTCGAATAACTCCACAATCTGGTTTGAATCAATTTGGCCAGATGAGCATGGCCCAGC +CCCCTATTGTACCCCGGCAAACCCCTCCTCTTCAGCACCATGGACAGTTGGCTCAACCTG +GAGCTCTCAACCCGcctatGGGCTATGGGCCTCGTATGCAACAGCCTTCCAACCAGGGCC +AGTTCCTTCCTCAGACTCAGTTCCCATCACAGGGAATGAATGTAACAAATATCCCTTTGG +CTCCGTCCAGCGGTCAAGCTCCAGTGTCTCAAgcACAAATGTCTAGTTCTTCCTGCCCGG +TGAACTCTCCTATAATGCCTCCAGGGTCTCAGGGGAGCCACATTCACTGTCCCCAGCTTC +CTCAACCAGCTCTTCATCAGAATTCACCCTCGCCTGTACCTAGTCGTACCCCCACCCCTC +ACCATACTCCCCCAAGCATAGGGGCTCAGCAGCCACCAGCAACAACAATTCCAGCCCCTG +TTCCTACACCTCCTGCCATGCCACCTGGGCCACAGTCCCAGGCTCTACATCCCCCTCCAA +GGCAGACACCTACACCACCAACAACACAACTTCCCCAACAAGtgcagccttcacttcctg +ctgcACCTTCTGCTGACCAGCCCCAGCAGCAGCCTCGCTCACAGCAGAGCACAGCAGCGT +CTGTTCCTACCCCAACAGCACCGCTGCTTCCTCCGCAGCCTGCAACTCCACTTTCCCAGC +CAGCTGTAAGCATTGAAGGACAGGTATCAAATCCTCCATCTACTAGTAGCACAGAAGTGA +ATTCTCAGGCCATTGCTGAGAAGCAGCCTTCCCAGGAAGTGAAGATGGAGGCCAAAATGG +AAGTGGATCAACCAGAACCAGCAGATACTCAGCCGGAGGATATTTCAGAGTCTAAAGTGG +AAGACTGTAAAATGGAATCTAccgaaacagaagagagaagcactgagttaaaaactgaaa +taaaagaggaggaaGACCAGCCAAGTACTTCAGCTACCCAGTCATCTCCGGCTCCAGGAC +AGTCAAAGAAAAAGAttttcaaaccAGAAGAACTACGACAGGCACTGATGCCAACTTTGG +AGGCACTTTACCGTCAGGATCCAGAATCCCTTCCCTTTCGTCAACCTGTGGACCCTCAGC +TTTTAGGAATCCCTGATTACTTTGATATTGTGAAGAGCCCCATGGATCTTTCTACCATTA +AGAGGAAGTTAGACACTGGACAGTATCAGGAGCCCTGGCAGTATGTCGATGATATTTGGC +TTATGTTCAATAATGCCTGGTTATATAACCGGAAAACATCACGGGTATACAAATACTGCT +CCAAGCTCTCTGAGGTCTTTGAACAAGAAATTGACCCAGTGATGCAAAGCCTTGGATACT +GTTGTGGCAGAAAGTTGGAGTTCTCTCCACAGACACTGTGTTGCTACGGCAAACAGTTGT +GCACAATACCTCGTGATGCCACTTATTACAGTTACCAGAACAGGTATCATTTCTGTGAGA +AGTGTTTCAATGAGATCCAAGGGGAGAGCGTTTCTTTGGGGGATGACCCTTCCCAGCCTC +AAACTACaataaataaagaacaatttTCCAAGAGAAAAAATGACACACTGGATCCTGAAC +TGTTTGTTGAATGTACAGAGTGCGGAAGAAAGATGCATCAGATCTGTGTCCTTCACCATG +AGATCATCTGGCCTGCTGGATTCGTCTGTGATGGCTGTTTAAAGAAAAGTGCACGAActa +ggaaagaaaataagttttctgCTAAAAGGTTGCCATCTACCAGACTTGGCACCTTTCTAG +AGAATCGTGTGAATGACTTTCTGAGGCGACAGAATCACCCTGAGTCAGGAGAGGTCACTG +TTAGAGTAGTTCATGCTTCTGACAAAACCGTGGAAGTAAAACCAGGCATGAAAGCAAGGT +TTGTGGACAGTGGAGAGATGGCAGAATCCTTTCCATACCGAACCAAAGCCCTCTTTGCCT +TTGAAGAAATTGATGGTGTTGACCTGTGCTTCTTTGGCATGCATGTTCAAGAGTATGGCT +CTGACTGCCCTCCACCCAACCAGAGGAGAGTATACATATCTTACCTCGATAGTGTTCATT +TCTTCCGTCCTAAATGCTTGAGGACTGCAGTCTATCATGAAATCCTAATTGGATATTTAG +AATATGTCAAGAAATTAGGTTACACAACAGGGCATATTTGGGCATGTCCACCAAGTGAGG +GAGATGATTATATCTTCCATTGCCATCCTCCTGACCAGAAGATACCCAAGCCCAAGCGAC +TGCAGGAATGGTACAAAAAAATGCTTGACAAGGCTGTATCAGAGCGTATTGTCCATGACT +ACAAGGATATTTTTAAACAAGCTACTGAAGATAGATTAACAAGTGCAAAGGAATTGCCTT +ATTTCGAGGGTGATTTCTGGCCCAATGTTCTGGAAGAAAGCATTAAGGAACTGgaacagg +aggaagaagagagaaaacgaGAGGAAAACACCAGCAATGAAAGCACAGATGTGACCAAGG +GAGACAGCAAAAATGctaaaaagaagaataataagAAAACCAGCAAAAATAAGAGCAGCC +TGAGTAGGGGCAACAAGAAGAAACCCGGGATGCCCAATGTATCTAACGACCTCTCACAGA +AACTATATGCCACCATGGAGAAGCATAAAGAGGTCTTCTTTGTGATCCGCCTCATTGCTG +GCCCTGCTGCCAACTCCCTGCCTCCCATTGTTGATCCTGATCCTCTCATCCCCTGCGATC +TGATGGATGGTCGGGATGCGTTTCTCACGCTGGCAAGGGACAAGCACCTGGAGTTCTCTT +CACTCCGAAGAGCCCAGTGGTCCACCATGTGCATGCTGGTGGAGCTGCACACGCAGAGCC +AGGACCGCTTTGTCTACACCTGCAATGAATGCAAGCACCATGTGGAGACACGCTGGCACT +GTACTGTCTGTGAGGATTATGACTTGTGTATCACCTGCTATAACACTAAAAACCATGACC +ACAAAATGGAGAAACTAGGCCTTGGCTTAGATGATGAGAGCAACAACCAGCAGGCTGCAG +CCACCCAGAGCCCAGGCGATTCTCGCCGCCTGAGTATCCAGCGCTGCATCCAGTCTCTGG +TCCATGCTTGCCAGTGTCGGAATGCCAATTGCTCACTGCCATCCTGCCAGAAGATGAAGC +GGGTTGTGCAGCATACCAAGGGTTGCAAACGGAAAACCAATGGCGGGTGCCCCATCTGCA +AGCAGCTCATTGCCCTCTGCTGCTACCATGCCAAGCACTGCCAGGAGAACAAATGCCCGG +TGCCGTTCTGCCTAAACATCAAGCAGAAGCTCCGGCAGCAACAGCTGCAGCACCGACTAC +AGCAGGCCCAAATGCTTCGCAGGAGGATGGCCAGCATGCAGCGGACTGGTGTGGTTGGGC +AGCAACAgggcctcccttcccccactcctgCCACTCCAACGACACCAACTGGCCAACAGC +CAACCACCCCGCAGACGCCCCAGCCCACTTCTCAGCCTCAGCCTACCCCTCCCAATAGCA +TGCCACCCTACTTGCCCAGGACTCAAGCTGCTGGCCCTGTGTCCCAGGGTAAGGCAGCAG +GCCAGGTGACCCCTCCAACCCCTCCTCAGACTGCTCAGCCACCCCTTCCAGGGCCCCCAC +CTGCAGCAGTGGAAATGGCAATGCAGATTCAGAGAGCAGCGGAGACGCAGCGCCAGATGG +CCCACGTGCAAATTTTTCAAAGGCCAATCCAACACCAGATGCCCCCGATGACTCCCATGG +CCCCCATGGGTATGAACCCACCTCCCATGACCAGAGGTCCCAGTGGGCATTTGGAGCCAG +GGATGGGACCGACAGGGATGCAGCAACAGCCACCCTGGAGCCAAGGAGGATTGCCTCAGC +CCCAGCAACTACAGTCTGGGATGCCAAGGCCAGCCATGATGTCAGTGGCCCAGCATGGTC +AACCTTTGAACATGGCTCCACAACCAGGATTGGGCCAGGTAGGTATCAGCCCACTCAAAC +CAGGCACTGTGTCTCAACAAGCCTTACAAAACCTTTTGCGGACTCTCAGGTCTCCCAGCT +CTCCCCTGCAGCAGCAACAGGTGCTTAGTATCCTTCACGCCAACCCCCAGCTGTTGGCTG +CATTCATCAAGCAGCGGGCTGCCAAGTATGCCAACTCTAATCCACAACCCATCCCTGGGC +AGCCTGGCATGCCCCAGGGGCAGCCAGGGCTACAGCCACCTACCATGCCAGGTCAGCAGG +GGGTCCACTCCAATCCAGCCATGCAGAACATGAATCCAATGCAGGCGGGCGTTCAGAGGG +CTGGCCTGCCCCAGCAGCAACCACAGCAGCAACTCCAGCCACCCATGGGAGGGATGAGCC +CCCAGGCTCAGCAGATGAACATGAACCACAACACCATGCCTTCACAATTCCGAGACATCT +TGAGACGACAGCAAATGatgcaacagcagcagcaacagggaGCAGGGCCAGGAATAGGCC +CTGGAATGGCCAACCATAACCAGTTCCAGCAACCCCAAGGAGTTGGCTACCcaccacagc +agcagcagcggaTGCAGCATCACATGCAACAGATGCAACAAGGAAATATGGGACAGATAG +GCCAGCTTCCCCAGGCCTTGGGAGCAGAGGCAGGTGCCAGTCTACAGGCCTATCAGCAGC +GACTCCTTCAGCAACAGATGGGGTCCCCTGTTCAGCCCAACCCCATGAGCCCCCAGCAGC +ATATGCTCCCAAATCAGGCCCAGTCCCCACACCTACAAGGCCAGCAGATCCCTAATTCTC +TCTCCAATCAAGTGCGCTCTCCCCAGCCTGTCCCTTCTCCACGGCCACAGTCCCAGCCCC +CCCACTCCAGTCCTTCCCCAAGgatgcagcctcagccttctccaCACCACGTTTCCCCAC +AGACAAGTTCCCCACATCCTGGACTGGTAGCTGCCCAGGCCAACCCCATGGAACAAGGGC +ATTTTGCCAGCCCGGACCAGAATTCAATGCTTTCTCAGCTTGCTAGCAATCCAGGCATGG +CAAACCTCCATGGTGCAAGCGCCACGGACCTGGGACTCAGCACCGATAACTCAGACTTGA +ATTCAAACCTCTCACAGAGTACACTAGACATACACTAGAGACACCTTGTAGTATTTTGGg +agcaaaaaaattattttctcttaacaAGACTTTTTgtactgaaaacaatttttttgaatc +TTTCGTAGCCTAAAAGACAATTTTCCTTGGAACACATAAGAACTGTGCAGTAGCCGTTTG +TGGTTTAAAGCAAACATGCAAGATGAACCTGAGGGATGATAGAatacaaagaatatattt +ttgttatggcTGGTTACCACCAGCCTTTCTTcccctttgtgtgtgtggttcAAGTGTGCa +ctgggaggaggctgaggcctgtgAAGCCAAACAATATGCTCCTGCCTTGCACCTCcaata +ggttttattattttttttaaattaatgaacatatgtaatattaatagttattatttaCTG +GTGCAGATGGTTGACATTTTTCCCTATTTTCCTCACTTTATGGAAGAGTTAAAACATTTC +TAAACCAGAGGACAAAAGGGGTTaatgttactttaaaattacattctatatatatataaa +tatatataaatatatattaaaataccaGTTTTTTTTCTCTGGGTGCAAAGatgttcattc +ttttaaaaaatgtttaaaaaaaaaaaaaaactgcctttcTTCCCCTCAAGTCAACTTTTG +TGCTCCAGAAAATTTTCTATTCTGTAAGTCTGAGCGTAAAACTTcaagtattaaaataat +ttgtacatgtagagagaaaaatgactttttcaaaaatatacagGGGCAGCTGCCAAAttg +atgtattatatattgtggtttctgtttcttgaaagaatttttttcGTTATTTTTACATct +aacaaagtaaaaaaattaaaaagagggtAAGAAACGATTCCGGTGGGATGATTTTAACAT +GCAAAATGTCCCTGGGGGTTTCttctttgcttgctttcttcctcCTTACCCTACccccca +ctcacacacacacacacacacacacacacacacacacacacacactttctatAAAACTTG +AAAATAGCAAAAACCCTCAACTGTTGTAAATCATGCAATTAAAGTTGATTACTTATAAAT +ATGAACTTTGGATCACTGTATAGACTGTTAAATTTGATTTCTTATTACCTATTGTTAAAT +AAACTGTGTGAGACAGACA + +>rna-NM_006559.3 CDS=129-1460 Dbxref=Ensembl:ENST00000327300.12,GeneID:10657,GenBank:NM_006559.3,HGNC:HGNC:18116,MIM:602489;Name=NM_006559.3;gbkey=mRNA;gene=KHDRBS1;product=KH RNA binding domain containing%2C signal transduction associated 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_006559.3;description=KH RNA binding domain containing%2C signal transduction associated 1;gene_biotype=protein_coding;gene_synonym=p62,p68,Sam68;CDS_Dbxref=CCDS:CCDS350.1,Ensembl:ENSP00000313829.7,GeneID:10657,GenBank:NP_006550.1,HGNC:HGNC:18116,MIM:602489;CDS_Name=NP_006550.1;Note=isoform 1 is encoded by transcript variant 1;CDS_gbkey=CDS;CDS_product=KH domain-containing%2C RNA-binding%2C signal transduction-associated protein 1 isoform 1;protein_id=NP_006550.1 +CTCTCGCTGGGTCGCTCGGGTCGGCTTCGGTCGCTACCGCTCCCGCTCTGCCACCCCCGC +CAACCGCCGCTCGGGCCTCCGTCGCTGCCGCGTCGCTTTCTCGCTCCTTGGATCGCACAT +CCTCCCAGATGCAGCGCCGGGACGACCCCGCCGCGCGCATGAGCCGGTCTTCGGGCCGTA +GCGGCTCCATGGACCCCTCCGGTGCCCACCCCTCGGTGCGTCAGACGCCGTCTCGGCAGC +CGCCGCTGCCTCACCGGTCCCGGGGAGGCGGAGGGGGATCCCGCGGGGGCGCCCGGGCCT +CGCCCGCCACGCAGCCGCCACCGCTGCTGCCGCCCTCGGCCACGGGTCCCGACGCGACAG +TGGGCGGGCCAGCGCCGACCCCGCTGCTGCCCCCCTCGGCCACAGCCTCGGTCAAGATGG +AGCCAGAGAACAAGTACCTGCCCGAACTCATGGCCGAGAAGGACTCGCTCGACCCGTCCT +TCACTCACGCCATGCAGCTGCTGACGGCAGAAATTGAGAAGATTCAGAAAGGAGACTCAA +AAAAGGATGATGAGGAGAATTACttggatttattttctcataagaACATGAAACTGAAAG +AGCGAGTGCTGATACCTGTCAAGCAGTATCCCAAGTTCAATTTTGTGGGGAAGATTCTTG +GACCACAAGGGAATACAATCAAAAGACTGCAGGAAGAGACTGGTGCAAAGATCTCTGTAT +TGGGAAAGGGCTCAATGAGAGACAAAGCCAAGGAGGAAGAGCTGCGCAAAGGTGGAGACC +CCAAATATGCCCACTTGAATATGGATCTGCATGTCTTCATTGAAGTCTTTGGACCCCCAT +GTGAGGCTTATGCTCTTATGGCCCATGCCATGGAGGAAGTCAAGAAATTTCTAGTACCGG +ATATGATGGATGATATCTGTCAGGAGCAATTTCTAGAGCTGTCCTACTTGAATGGAGTAC +CTGAACCCTCTCGTGGACGTGGGGTGCCAGTGAGAGGCCGGGGAGCTGCACCTCCTCCAC +CACCTGTTCCCAGGGGCCGTGGTGTTGGACCACCTCGGGGGGCTTTGGTACGTGGTACAC +CAGTAAGGGGAGCCATCACCAGAGGTGCCACTGTGACTCGAGGCGTGCCACCCCCACCTA +CTGTGAGGGGTGCTCCAGCACCAAGAGCACGGACAGCGGGCATCCAGAGGATACCtttgc +ctccacctcctgcacCAGAAACATATGAAGAATATgGATATGATGATACATACGCAGAAC +AAAGTTACGAAGGCTACGAAGGCTATTACAGCCAGAGTCAAGGGGACTCAGAATATTATG +ACTATGGACATGGGGAGGTTCAAGATTCTTATGAAGCTTATGGCCAGGACGACTGGAATG +GGACCAGGCCGTCGCTGAAGGCCCCTCCTGCTAGGCCAGTGAAGGGAGCATACAGAGAGC +ACCCATATGGAcgttattaaaaacaaacatgagGGGAAAATATCAGTTATGAGCAAAGTT +GTTACTGATTTCTTGTATCTCCCAGGATTCCTGTTGCTTTACCCACAACAGACAAGTAAT +TGTCTAAGTGTTTTTCTTCGTGGTCCCCTTCTTCTCCCCACCTTATTCCATTCTTAACTC +TGCATTCTGGCTTCTGtatgtagtattttaaaatgagttaaaatagATTTAGgaatattg +aattaattttttaagtgtgtagatgcttttttctttgttgtttaaatataaacagaagtg +taccttttataataaaaaaaagaagttgagtaaaaaaaaaaaacacacaaacctgTTAGT +TTCAAAAATGACATTGCTTGCTTAAAGGTTCTGAAGTAAAGGCTTGTTAAGTTTCTCTTA +GTTTTGATTTGAGGCATCCCGTAAAGTTGTAGTTGCAGAATCCCAAACTAGGCTACATTT +CAAAATTCAGGGCTGTTTAAGATTTAAAATCACAAACATTAACGGCAGTAGGCACCACCA +TGTAAAAGTGAGCTCAGACGTCtctaaaaaatgtttcctttataaaAGCACATGGCGGTT +GAATCTTAAggttaaattttaatatgaaagatCCTCATGAATTAAATAGTTGATGCAATT +TTTAACGTTaattgatataaaaaaaaaaacaacaaaattaggCTTGTAAAACTGACTTTT +TCATTACGTGGGTTTTGAAATCTAGCCCCAGACATACTGTGTTGAGAGATACTTAGAGGG +AGGGAGTAGGTTTTGAAGAGGTtgatggtggtggggagggaaggcCTCCTGAATTGAGTT +TGATGCAGAGCTTTTTAGCCATGAAGAATCTTTCAGTCATAGTACTAATAATTaaatttt +cagtatttaaaaagacaaagtattTTGTCCATTTGAGATTCTGCACTCCATGAAAAGTTC +ACTTGGACGCTGGGGCCAAAAGCTGTTGATTTTCTTAAGTTGACGGTTGTCAATATATCG +AACTGTTCCCAAGTTAGTCAAGTATGTCTCAACACTAGCATGATATAAAAAGGGACACTG +CAGCTGAATGAAAAAGGAATCAAAATCCACTTTGTACATAAGTTAAAGTCCTAATTGGAT +TTGTACCGTCCTCCCATTTTGTTCTCGGAAGATTAAATGCTACATGTGTAAGTCTGCCTA +AATAGGTAGCTTAAACTTATGTCAAAATGTCTGCAGCAGTTTGTCAATAAAGTTTAGTCC +TTTTTTAATCAAA + +>rna-NM_181523.3 CDS=581-2755 Dbxref=Ensembl:ENST00000521381.6,GeneID:5295,GenBank:NM_181523.3,HGNC:HGNC:8979,MIM:171833;Name=NM_181523.3;gbkey=mRNA;gene=PIK3R1;product=phosphoinositide-3-kinase regulatory subunit 1%2C transcript variant 1;tag=MANE Select;transcript_id=NM_181523.3;description=phosphoinositide-3-kinase regulatory subunit 1;gene_biotype=protein_coding;gene_synonym=AGM7,GRB1,IMD36,p85,p85-ALPHA,p85alpha;CDS_Dbxref=CCDS:CCDS3993.1,Ensembl:ENSP00000428056.1,GeneID:5295,GenBank:NP_852664.1,HGNC:HGNC:8979,MIM:171833;CDS_Name=NP_852664.1;Note=isoform 1 is encoded by transcript variant 1;CDS_gbkey=CDS;CDS_product=phosphatidylinositol 3-kinase regulatory subunit alpha isoform 1;protein_id=NP_852664.1 +GTCGCCAGCAGCTGGAGCGGAGTTGGAGGAAGCAGCGGCAGCGGCGAGGGCGGCAGGCTA +GCTGTCGGAGACGGCAAGCACGGATCGGGCACGGCCGGCGGGTCGCAGCCGGGCTGGAGG +CCGGTCGGAACCGAGCGGGCAGGAGGCCACCGCTGCAGCGCGGGCCCCGCAGAGGAAGGA +AGCCGGCGGGCGGGGTGAAGCTCGTGTGTGGAGTGCCACGGTACAATCAGACGACAGATG +GACAGTGTGACAAAAGTGTCAGAAAGGATTGGGCCTCGCTGTGAGAGTCAGCCTGGATTC +AAAGTGTTGACAAGTTGCTGAAAAGGAAGCCAGTGAGAGGACTGTGGCACGCAGAGGAAG +TGGAGCCCTGTCTTCGGTCACACCATTGATGGAGGACAGATGGACAGCCGTATGGCCAGT +CACCTCTCCTCTTAAACCTTTGGAGAGTGGTCCTTTGTCCTCTGCTGGACACATAATAGG +AATTCTAACACATTCTCTGAATTCACTTTTCATAAAAACGTAAAATCAGACTGCTCTGTA +CAACCAGGCTCAACTGTTGCATGGTAGCAGATTTGCAAACATGAGTGCTGAGGGGTACCA +GTACAGAGCGCTGTATgattataaaaaggaaagagaagaagataTTGACTTGCACTTGGG +TGACATATTGACTGTGAATAAAGGGTCCTTAGTAGCTCTTGGATTCAGTGATGGACAGGA +AGCCAGGCCTGAAGAAATTGGCTGGTTAAATGGCTATAATGAAACCACAGGGGAAAGGGG +GGACTTTCCGGGAACTTACGTAGAATatattggaaggaaaaaaatctcgCCTCCCACACC +AAAGCCCCGGCCACCTCGGCCTCTTCCTGTTGCACCAGGTTCTTCGAAAACTGAAGCAGA +TGTTGAACAACAAGCTTTGACTCTCCCGGATCTTGCAGAGCAGTTTGCCCCTCCTGACAT +TGCCCCGCCTCTTCTTATCAAGCTCGTGGAAGCCATTGAAAAGAAAGGTctggaatgttc +aactctatacAGAACACAGAGCTCCAGCAACCTGGCAGAATTACGACAGCTTCTTGATTG +TGATACACCCTCCGTGGACTTGGAAATGATCGATGTGCACGTTTTGGCTGACGCTTTCAA +ACGCTATCTCCTGGACTTACCAAATCCTGTCATTCCAGCAGCCGTTTACAGTGAAATGAT +TTCTTTAGCTccagaAGTACAAAGCTCCGAAGAATATATTCAGCTATTGAAGAAGCTTAT +TAGGTCGCCTAGCATACCTCATCAGTATTGGCTTACGCTTCAGTATTTGTTAAAACATTT +CTTCAAGCTCTCTCAAACCTCCAGCAAAAATCTGTTGAATGCAAGAGTACTCTCTGAAAT +TTTCAGCCCTATGCTTTTCAGATTCTCAGCAGCCAGCTCTGATAATACTGAAAACCTCAT +AAAAGTTATAGAAATTTTAATCTCAACTGAATGGAATGAACGACAGCCTGCACCAGCACT +GCCTCCTAAACCACCAAAACCTACTACTGTAGCCAACAACGGTATGAATAACAATATGTC +CTTACAAGATGCTGAATGGTACTGGGGAGATATCTCGAGgGAAGAAGTGAATGAAAAACT +TCGAGATACAGCAGACGGGACCTTTTTGGTACGAGATGCGTCTACTAAAATGCATGGTGA +TTATACTCTTACACTAAGGAAAGGGGGAAATAAcaaattaatcaaaatatttcatcGAGA +TGGGAAATATGGCTTCTCTGACCCATTAACCTTCAGTTCTGTGGTTGAATTAATAAACCA +CTACCGGAATGAATCTCTAGCTCAGTATAATCCCAAATTGGATGTGAAATTACTTTATCC +AGTATCCAAATACCAACAGGATCAAGTTGTCAAAGAAGATAATATTGAAGCTGTAGGGAA +AAAATTACATGAATATAACACTCAGTTTCAAGAAAAAAGTCGAGAATATGATAGATTATA +TGAAGAATATACCCGCACATCCCAGGAAATCCAAATGAAAAGGACAGCTATTGAAGCATt +taatgaaaccataaaaatatttgaagaacagTGCCAGACCCAAGAGCGGTACAGCAAAGA +ATACATAGAAAAGTTTAAACGTGAAGGCaatgagaaagaaatacaaagGATTATGCATAA +TTATGATAAGTTGAAGTCTCGAATCAGTGAAATTATTGACAGTAGAAGAAGATTGGAAGA +AGACTTGAAGAAGCAGGCAGCTGAGTATCGAGAAATTGACAAACGTATGAACAGCATTAA +ACCAGACCTTATCCAGCTGAGAAAGACGAGAGACCAATACTTGATGTGGTTGACTCAAAA +AGGTGTTCGGCAAAAGAAGTTGAACGAGTGGTTGGGCAATGAAAACACTGAAGACCAATA +TTCACTGGTGGAAGATGATGAAGATTTGCCCCATCATGATGAGAAGACATGGAATGTTGG +AAGCAGCAACCGAAACAAAGCTGAAAACCTGTTGCGAGGGAAGCGAGATGGCACTTTTCT +TGTCCGGGAGAGCAGTAAACAGGGCTGCTATGCCTGCTCTGTAGTGGTGGACGGCGAAGT +AAAGCATTGTGTCATAAACAAAACAGCAACTGGCTATGGCTTTGCCGAGCCCTATAACTT +GTACAGCTCTCTGAAAGAACTGGTGCTACATTACCAACACACCTCCCTTGTGCAGCACAA +CGACTCCCTCAATGTCACACTAGCCTACCCAGTATATGCACAGCAGAGGCGATGAAGCGC +TTACTCTTTGATCCTTCTCCTGAAGTTCAGCCACCCTGAGGCCTCTGGAAAGCAAAGGGC +TCCTCTCCAGTCTGATCTGTGAATTGAGCTGCAGAAACGAAGCCATCTTTCTTTGGATGG +GACTAGAGCTTTCTTTCACAAAAAAGAAGTAGGGGAAGACATGCAGCCTAAGGCTGTATG +ATGACCACACGTTCCTAAGCTGGAGTGCTtatcccttctttttctttttttctttggttt +aattTAAAGCCACAACCACAtacaacacaaagagaaaaagaaatgcaaaaatctcTGCGT +GCAGGGACAAAGAGGCCTTTAACCATGGTGCTTGTTAATGCTTTCTGAAGCTTTACCAGC +TGAAAGTTGGGACTCTGGAGAGcggaggagagagaggcagaagaacCCTGGCCTGAGAAG +GTTTGGTCCAGCCTGGTTTAGCCTGGATGTTGCTGTGCACGGTGGACCCAGACACATCGC +ACTgtggattatttcattttgtaacaAATGAACGATATGTAGCAGAAAGGCACGTCCACT +CACAAGGGACGCTTTGGGAGAATGTCAGTTCATGTATGTTCAGAAGAAATTCTGTCATAG +AAAGTGCCAGAAAGTGTTTAacttgtcaaaaaacaaaaacccagcaaCAGAAAAATGGAG +TTTGGAAAACAGGACTTAAAATGACATtcagtatataaaatatgtacataatattGGATG +ACTAACTATCAAATAGATGGATTTGTATCAATACCAAAtagcttctgttttgttttgctg +aagGCTAAATTCACAGCGCTATGCAATTCTTAATTTTCATTAAGTTGTTATTTCAGTTTT +AAATGTACCTTCAGAATAAGCTTCCCCACCCCAGTTTTTGTTGCTTGAAAATATTGTTGT +CCCGGATTTTTgttaatattcatttttgttatccttttttaaaagtaaatgtacaggatg +ccagtaaaaaaaaaaaatggcttcagaattaaaactatgaaatattttacagtttttctt +gTACAGAGTACTTGGCTGTTAGCCCAAGGTTAAAAAGTTcataacagattttttttggaC +TGTTTTGTTGGGCAGTGCCTGATAAGCTTCAAAGCTGctttattcaataaaaaaaagaaa +tgaaaaagatatatGAATATGACAAAGTATTGCTGAGTCCAACAATGTTGTTTTAAGACT +CTTAAAATACGGTACCTGGCAATGTTTATTTCATAAAGAATTGTGAACTTCTTGAATCTA +GGGAGGGGGAATGTAGTGAAGGGATGTATCaagtggggtggtgggagggggaggcAAGGT +TATATGCACTTTCTCATGATTTACAGAGAAGTGAATAACTGCAAAGTGAAGTTGCTTCTT +CTACTTCAGTCTTCTCTCACTTTGATTTGCTAGTTGTTATCAATTAATGACAATTACAAA +CCTACTGTATCTCTAATACAGTGTGACTGGTCAGGTATTTCAGTTCTTAGGAAGGAAGTG +CCAAGTTTGTTTTTGGGTTCCTGGAACAGCGCTCACCTTTGTTTAGAACACTGGTTTAAA +GGGATAATCATCTCTGTCACATTAGACTATCCATCATGACCAGCAAATActcattttagg +aaaaaaaaaagcatgatctGAAAAATACTTTTGGTGGTATGTTGGTTACCCTCCTAGCTT +TCCATTTGGTTTAGAACATAAAGCAAATAGACACAGTCATACTGTCACTGCTCTGGACTG +TGTGGAGCTCGCTAAAGTCATGGTCATTGCAGGAATCCAAGTGGCAGTCCTTCTCATTCA +TTCTAATCATTGTATGTGCTTCACTACGGGGGGGAGAAGGAAACGTTAGCATCATGTTTC +CCATTTAGGGCAGGAGTGAGAGGTCTCTCTTCCTGATTTAGATATGCAAAAGCTGGTATG +TTCAGTAGGAACTGTACATGTGTTGGGAGGCATAAAGACTAATTAGCAACCATAATATGG +TCACTACCCTAATAGACTAAATGAAATCTTGCAATTtcaaattactctttctccatatTA +GATTTACCCACAGCTATATTTCTGTTTAAGTACTAGGGTGAGGGTTTTctgttactttgt +tttttaatgttgttcCTTTTGAAAGAATCAGTCTTGCAGCTGAGTGAAAAATCTGTGGAA +TGTATTATTTGTCCTCTTTACATGAAACTACTCATACTTAAGCAAAAGTCAGTCTTATAG +CAAGACTGTTAGCCCTCAAACTTGACTCTACTGATCTGACCATTTCCCTCTCATCGCCAG +ACAACTGACGATTTCCCTGGTTTTAGTCTGCGTCTCTGCTTTAAAGTTATTGTGATATCC +TTCTAGATCATACACAAGTCTAACAGTTAATTAGTTAACAGTTTTTAAACTAGGTTTGTG +GGTATTTTTTTGGTAGCACATGTATGCTATTacatacaaatttttatttctaaaatataa +gatCTGAGattgaatattttcattaaaagctACAGTTTTGTGAATCTTTGTGCTTCAACA +TTCTTTGCAAGATGATACGGTATTtaggcatttgccttatttttgCATCTCACAAACATA +AGTGCAATAGATCTTTTCATTGAACAGCAAAGTAGGATTCATCATTCCATATGACTTGAG +TTACACCAGACCTGTTCTGCCCAATGCCTTTTTGATTACAGTGTAGCTTGCCCACCGCAT +TTGTCGTTTTAGATACTTTGCTAGCCGGCCACTTTGGATTTCATCAGACAGTCCTAACAA +TATTGTCTGAACGGCTGAATATGAATAGATACAGCAGAGGCACTCCTGATATATGATTTT +TATCCATGCGTCAGTTTTTCCCACCCAGTGTAGCATCCTAAAGATAAAGCCAGAAGCTAA +GCTGCAGTGAGGCTGTGATTGGGCGTAGAAGTGGGAGCATTGGGACCTCACATTACACAC +ACGAGAGATCATAACCATGTGAAAAGGCAAAAAGCATGTGTTTGCAACATCTGATAACTT +CATGGcctttgataaatgtatatatgtatatgtgcatggaCTGTGTTTCCAGTACACCTT +TCAGCCAAAACAGATCCACAGTAGTTGTTGAGTTCAAGTACATAAAGTACATAACAAGCG +AACGTCTAGTACAATTCTTACTTATGTGTATGGGATTTTTCCCTTTGAGGTTGCTTTGTT +TTGTCTTACAAAGGTGAAAATTGTTTGTAAGTGAAGTGAGAAGTTCatatttctttggct +tttttgtgtttttaaaagttactccTTTTAGGGAGCTGGTCTGATGACTTGCTTAGCTTG +GAAATCCTTGTTTTCAGTGTGTCGAGTCAAAATGTGTTTATGTGAGCTGTCACTGTGGGG +AACCAATTGCTTTGTCATATAGCTGGTTATGAACTAGTAACATGTTTGGGAAGTCCTACT +GATGTTCCTTTGGAAGAAAAAATCTGCTGGTTTTAACAACTGTGCTTTTGCTATGTATGG +TATCCAAGTTAGTTGAAACGCAGACACTGAGATCTGTTTGAGTTTAGGGTCATTTTTAGA +AAGGGGCAGTTTAAAGCACAATGTCTCACATGGGACAAAGTTCCAAAATgccaaattctt +attttttaaaaagctagttcTATAAAATACTGGTATTATGGGTGGGGAGGAAATAGAATT +GAGTCAATTGGAAAGACTATCCAACTTAACATGAAACTTGTCACCATGAGATAGCATTAG +CTGCCCAGGAtgctgctatatatatatatatatatatatatgtgtgtgtgtgtgtgtgtg +tgtgtgtatatatatatatatatatatatatatatatatatatatatgtgtgtgtatata +tatatatatgtgtatatatatatgtatatacatatatgtatatatatgcacatatatata +tgtatttaaaaaaatcaaaacaaaaaaaaactcatttatacctgtgtattttttaaagct +acaatctgttcaatgtttttaaaaatctgtttatatgACATTGTTAAAATAAAGTTGGTC +TTTTGACGAGAGGGAGGATGTCACGGTCAGTTGTAACTTTGCCTTCACAAGGCaactggg +gtggggggtgggggtagtgTGCCTCCTTGACATTTCGTTCAAGTTATAGATTCAATGGAG +CTATGTCTTGTTTTAAGTTGCTTTAATGCATTGTATTAGATCTTCAAACAGAATAAAGGT +tgttttgaaactgaa + +>rna-NM_005781.5 CDS=86-3202 Dbxref=GeneID:10188,GenBank:NM_005781.5,HGNC:HGNC:19297,MIM:606994;Name=NM_005781.5;gbkey=mRNA;gene=TNK2;product=tyrosine kinase non receptor 2%2C transcript variant 1;transcript_id=NM_005781.5;description=tyrosine kinase non receptor 2;gene_biotype=protein_coding;gene_synonym=ACK,ACK-1,ACK1,p21cdc42Hs;CDS_Dbxref=CCDS:CCDS33928.1,GeneID:10188,GenBank:NP_005772.3,HGNC:HGNC:19297,MIM:606994;CDS_Name=NP_005772.3;Note=isoform 1 is encoded by transcript variant 1;CDS_gbkey=CDS;CDS_product=activated CDC42 kinase 1 isoform 1;protein_id=NP_005772.3 +CTCTTCTGCCGTCTCAGCCTGGGCGTCGCTGAAGCTGTGTCTGCGGGGAGGCAGCGGAAG +GCGGCAGAGGCTGGGAGGCGGCAGAATGCAGCCAGAGGAGGGCACAGGCTGGCTGCTGGA +GCTGCTGTCCGAGGTGCAGCTGCAACAGTACTTCCTGCGGCTCCGAGATGACCTCAACGT +CACCCGCCTGTCCCACTTTGAGTACGTCAAGAATGAGGACCTGGAGAAGATCGGCATGGG +TCGGCCTGGCCAGCGGCGGCTGTGGGAGGCTGTGAAGAGGAGGAAGGCCTTGTGCAAACG +CAAGTCGTGGATGAGTAAGGTGTTCAGTGGAAAGCGACTGGAGGCTGAGTTCCCACCTCA +TCACTCTCAGAGCACCTTCCGGAAGACCTCGCCCGCCCCTGGGGGCCCAGCAGGGGAGGG +GCCCCTGCAGAGCCTCACCTGCCTCATTGGGGAGAAGGACCTGCGCCTCCTGGAGAAGCT +GGGTGATGGTTCCTTTGGCGTGGTGCGCAGGGGCGAGTGGGACGCGCCCTCAGGGAAGAC +GGTGAGTGTGGCTGTGAAGTGCCTGAAGCCCGATGTCCTGAGCCAGCCAGAAGCCATGGA +CGACTTCATCCGGGAGGTCAATGCCATGCACTCGCTCGACCACCGAAACCTCATCCGCCT +CTACGGGGTGGTGCTCACGCCGCCCATGAAGATGGTGACAGAGCTGGCACCTCTGGGATC +GTTGTTGGACCGGCTACGTAAGCACCAGGGCCACTTCCTCCTGGGGACTCTGAGCCGCTA +CGCTGTGCAGGTGGCTGAGGGCATGGGCTACCTGGAGTCCAAGCGCTTTATTCACCGTGA +CCTGGCTGCCCGCAATCTGCTGTTGGCTACCCGCGACCTGGTCAAGATCGGGGACTTTGG +GCTGATGCGAGCACTACCTCAGAATGACGACCATTACGTCATGCAGGAACATCGCAAGGT +GCCCTTCGCCTGGTGTGCCCCCGAGAGCCTGAAGACACGCACCTTCTCCCATGCCAGCGA +CACCTGGATGTTCGGGGTGACACTGTGGGAAATGTTCACCTACGGCCAGGAGCCCTGGAT +CGGCCTCAACGGCAGTCAGATCCTGCATAAGATCGACAAGGAGGGGGAGCGGCTGCCCCG +GCCCGAGGACTGTCCCCAGGACATCTACAACGTCATGGTCCAGTGCTGGGCTCACAAGCC +AGAGGACAGACCCACGTTTGTGGCCCTGCGGGACTTCCTGCTGGAGgcCCAGCCCACAGA +CATGCGGGCCCTTCAGGACTTTGAGGAACCGGACAAGCTGCACATCCAGATGAATGATGT +CATCACCGTCATCGAGGGAAGGGCCGAGAACTACTGGTGGCGTGGCCAGAACACACGGAC +GCTGTGTGTGGGGCCCTTCCCTCGCAACGTGGTGACCTCCGTGGCCGGCCTGTCGGCCCA +GGACATCAGCCAGCCCCTGCAGAACAGCTTCATCCACACAGGGCATGGCGACAGTGACCC +CCGCCACTGCTGGGGCTTCCCGGACAGGATTGACGAACTGTATCTGGGAAACCCCATGGA +CCCCCCCGACCTCCTGAGCGTGGAACTGAGCACCTCCCGGCCCCCCCAGCATCTAGGAGG +GGTGAAAAAACCAACCTATGACCCTGTGAGCGAGGACCAAGACCCCTTGTCCAGCGACTT +CAAGAGGCTGGGCCTGCGGAAGCCAGGCCTGCCCCGAGGGCTGTGGCTGGCGAAGCCCTC +GGCGCGGGTGCCGGGCACCAAGGCCAGCCGAGGCAGCGGGGCTGAGGTCACGCTCATCGA +CTTCGGTGAGGAGCCCGTGGTCCCGGCCCTACGGCCCTGCGCGCCCTCCCTGGCGCAGCT +GGCCATGGACGCCTGCTCCCTGCTGGACGAGACCCCGCCTCAGAGCCCCACGCGGGCACT +GCCCCGGCCCCTGCACCCCACGCCTGTGGTGGACTGGGACGCACGCCCGCTGCCCCCCCC +GCCCGCCTATGACGACGTGGCCCAGGATGAGGATGACTTTGAGATCTGCTCCATCAACAG +CACCCTCGTGGGCGCGGGGGTCCCTGCCGGGCCCAGCCAGGGCCAGACCAACTACGCCTT +TGTGCCTGAGCAGGCGCGGCCGCCCCCTCCCCTGGAGGACAACCTGTTCCTCCCGCCCCA +GGGTGGGGGCAAGCCGCCCAGCTCCGCACAGACCGCAGAGATCTTCCAGGCGCTACAGCA +GGAGTGCATGAGGCAACTGCAGGCTCCGGCCGGCTCCCCGGCCCCCTCTCCCAGCCCGGG +GGGTGACGACAAGCCCCAGGTGCCTCCTCGGGTACCCATCCCCCCTCGGCCCACGCGCCC +ACACGTCCAGCTGTCTCCAGCCCCCCCGGGCGAGGAGGAGACCAGCCAGTGGCCTGGACC +TGCTTCCCCTCCCCGGGTGCCTCCGCGGGAGCCCCTGTCCCCTCAAGGCTCGAGGACACC +CAGCCCCCTGGTACCACCTGGCAGCTCCCCGCTGCCACCCCGGCTCTCAAGCTCACCTGG +GAAGACCATGCCCACCACCCAGAGCTTTGCCTCAGACCCCAAGTACGCCACCCCCCAGGT +GATCCAGGCCCCTGGCCCGCGGGCTGGTCCCTGCATCCTGCCCATCGTCCGGGATGGCAA +GAAGGTCAGCAGCACCCACTATTACTTGCTGCCCGAGCGACCATCCTACCTGGAGCGCTA +CCAGCGCTTCCTGCGTGAGGCCCAGAGCCCCGAGGAGCCTACCCCCCTGCCTGTGCCTCT +GCTGCTGCCCCCACCCAGCACCCCAGCCCCCGCCGCCCCCACGGCCACCGTGCGGCCGAT +GCCCCAGGCTGCCTTGGACCCCAAGGCCAACTTCTCCACCAACAACAGCAACCCAGGGGC +CCGGCCACCACCCCCGAGGGCCACTGCTCGGCTGCCACAGAGGGGCTGCCCTGGCGATGG +GCCAGAGGCGGGCCGGCCAGCAGACAAGATCCAGATGGCCATGGTGCATGGGGTGACCAC +AGAGGAGTGCCAGGCGGCCCTGCAGTGCCACGGCTGGAGCGTGCAGAGGGCTGCCCAGTA +TCTGAAGGTGGAGCAGCTCTTCGGGCTGGGTCTGCGGCCCAGAGGGGAGTGCCACAAAGT +GCTGGAGATGTTCGACTGGAACCTGGAGCAGGCCGGCTGCCACCTTCTGGGCTCCTGGGG +CCCTGCCCACCACAAGCGCTGAGATGCGTCTGGAGAGCCAGAGGGCCTGCCTGAaggaat +cacctgagcctgtcCGTCCACCAGGAGTGGGGAGATGCCCCCATCCAGTCCTGGAGGACC +CGCTGCTCCTGCTGCTCCCGGGGATGGAGCAAGGCCAAGGCTGCGGGAGGCTgggagccc +tgccctgcccatccCTCCTGCACCAGCGCTGTCCCTGCACACTTTGGTTCAGTCCCGGTG +CCCCTGCCAAGATGTGGAAGGGGCCGGGTGAAGACAGGCTTGAGGGCTGCCCCAGCAGGC +TCTGGGTATGACCTGCCTCTGGCCCTGGTCCTGGGCGGGGCCTGTGGGTGGAGTAGTacc +cccaggccctgccctgggtgacagactggGAGGAAACCAGGCTGGACCTGGGCAGGCGGG +ATGTGTTGGCCACAGGGAGAGGCGGACCGGCACCCGGTGGGACCTCCTAGGACTGGGCCT +TCTTCCAGGGGGCCCCTGGCAGCAGCTGGGGTGTCGGGCAGAATGTGACTTGTGGCCTTA +CCATGGACTTGAATGGGACTTGGCTGGCCTCAGGATCTTGTGCCTGGAAATAGCCTGAGG +TGGCTCAGGAAGCGGAGAAAGGGTGCCAGACCATTCTCTGGCGGGGACCAGGGCCCAAGG +CCCCAGGGCTGGAAGGAGACCAAGGGGCAGCCGCCCTGGAGGGACATCAGTGCTTCCTCT +TCCACCCAATTCCCCCACGCGGTTCCATGTTTTCCCACCAGCCTGTTGGCGAAGTTGCTG +CTCCGGCATTCAGTACCTGCTTCTTCCAGAGAAATAAAGTTAGTTTCTATTTTATGTTA diff --git a/pgatk/testdata/test_cosmic_classification.tsv b/pgatk/testdata/test_cosmic_classification.tsv new file mode 100644 index 00000000..e5a9f9c3 --- /dev/null +++ b/pgatk/testdata/test_cosmic_classification.tsv @@ -0,0 +1,9 @@ +COSMIC_PHENOTYPE_ID PRIMARY_SITE PRIMARY_HISTOLOGY SITE_SUBTYPE_1 HISTOLOGY_SUBTYPE_1 +COSO1001 upper_aerodigestive_tract carcinoma mouth squamous_cell_carcinoma +COSO1002 skin carcinoma upper_leg squamous_cell_carcinoma +COSO1003 bone other femur giant_cell_tumour +COSO1004 thyroid adenoma-nodule-goitre NS NS +COSO1005 liver other NS neoplasm +COSO1006 haematopoietic_and_lymphoid_tissue haematopoietic_neoplasm NS acute_myeloid_leukaemia +COSO1007 bone carcinoma NS NS +COSO1008 skin carcinoma NS NS diff --git a/pgatk/testdata/test_cosmic_mutations.tsv b/pgatk/testdata/test_cosmic_mutations.tsv index f4a9ba41..254cef56 100644 --- a/pgatk/testdata/test_cosmic_mutations.tsv +++ b/pgatk/testdata/test_cosmic_mutations.tsv @@ -1,13 +1,13 @@ -Gene name Accession Number Gene CDS length HGNC ID Sample name ID_sample ID_tumour Primary site Site subtype 1 Site subtype 2 Site subtype 3 Primary histology Histology subtype 1 Histology subtype 2 Histology subtype 3 Genome-wide screen Mutation ID Mutation CDS Mutation AA Mutation Description Mutation zygosity LOH GRCh Mutation genome position Mutation strand SNP Resistance Mutation FATHMM prediction FATHMM score Mutation somatic status Pubmed_PMID ID_STUDY Sample Type Tumour origin Age -HRAS ENST00000397596 570 5173 HN12PT 1542873 1465176 upper_aerodigestive_tract mouth NS NS carcinoma squamous_cell_carcinoma NS NS y COSM486 c.37G>C p.G13R Substitution - Missense u 38 11:534286-534286 - n - PATHOGENIC .99415 Confirmed somatic variant 21798897 surgery fresh/frozen primary -HRAS ENST00000397596 570 5173 V19 2688774 2547756 skin upper_leg NS NS carcinoma squamous_cell_carcinoma NS NS n COSM486 c.37G>C p.G13R Substitution - Missense u 38 11:534286-534286 - n - PATHOGENIC .99415 Confirmed somatic variant 24662767 surgery fresh/frozen NS -HRAS ENST00000397596 570 5173 S23372 702100 629222 bone femur NS NS other giant_cell_tumour NS NS n COSM487 c.37G>A p.G13S Substitution - Missense y 38 11:534286-534286 - n - PATHOGENIC .99324 Reported in another cancer sample as somatic 11903582 surgery-fixed recurrent 42 -HRAS ENST00000397596 570 5173 pel-102 720047 644990 upper_aerodigestive_tract mouth lip NS carcinoma squamous_cell_carcinoma NS NS n COSM484 c.35G>A p.G12D Substitution - Missense n 38 11:534288-534288 - n - PATHOGENIC .99322 Reported in another cancer sample as somatic 8253528 surgery fresh/frozen primary -HRAS ENST00000397596 570 5173 1965078 1965078 1851573 skin chest NS NS benign_melanocytic_nevus NS NS NS n COSM498 c.182A>T p.Q61L Substitution - Missense u 38 11:533874-533874 - n - PATHOGENIC .97511 Reported in another cancer sample as somatic 23599145 NS NS 30 -HRAS ENST00000397596 570 5173 1571189 1571189 1492737 skin NS NS NS other atypical_Spitzoid_tumour NS NS n COSM498 c.182A>T p.Q61L Substitution - Missense het u 38 11:533874-533874 - n - PATHOGENIC .97511 Reported in another cancer sample as somatic 21496703 surgery-fixed NS -HRAS ENST00000397596 570 5173 S61945 741791 664521 thyroid NS NS NS adenoma-nodule-goitre NS NS NS n COSM499 c.182A>G p.Q61R Substitution - Missense y 38 11:533874-533874 - n - PATHOGENIC .97179 Reported in another cancer sample as somatic 12727991 NS primary -HRAS ENST00000397596 570 5173 49T 2745889 2604592 liver NS NS NS other neoplasm NS NS y COSM1729837 c.403C>T p.R135* Substitution - Nonsense u 38 11:533500-533500 - n - PATHOGENIC .97257 Confirmed somatic variant 660 NS primary 67 -HRAS ENST00000397596 570 5173 DM3T4S 2762863 2621122 thyroid NS NS NS carcinoma follicular_carcinoma NS NS n COSM499 c.182A>G p.Q61R Substitution - Missense u 38 11:533874-533874 - n - PATHOGENIC .97179 Reported in another cancer sample as somatic 29615459 NS metastasis 58 -HRAS ENST00000397596 570 5173 TESTSAMPLE 9999991 9999981 haematopoietic_and_lymphoid_tissue NS NS NS haematopoietic_neoplasm acute_myeloid_leukaemia NS NS n COSM_TEST1 c.? p.G13(H^K) Substitution - Missense u 38 11:534286-534286 - n - PATHOGENIC .99415 Confirmed somatic variant 25858894 blood-bone marrow primary -HRAS ENST00000397596 570 5173 TESTSAMPLE 9999991 9999981 haematopoietic_and_lymphoid_tissue NS NS NS haematopoietic_neoplasm acute_myeloid_leukaemia NS NS n COSM_TEST2 c.? p.13_14>21 Complex - insertion inframe u 38 11:534286-534286 - n - PATHOGENIC .99415 Confirmed somatic variant 25858894 blood-bone marrow primary -HRAS ENST00000397596 570 5173 TESTSAMPLE 9999991 9999981 haematopoietic_and_lymphoid_tissue NS NS NS haematopoietic_neoplasm acute_myeloid_leukaemia NS NS n COSM_TEST3 c.? p.G13_S14>GS Insertion - In frame u 38 11:534286-534286 - n - PATHOGENIC .99415 Confirmed somatic variant 25858894 blood-bone marrow primary +GENE_SYMBOL COSMIC_GENE_ID TRANSCRIPT_ACCESSION COSMIC_SAMPLE_ID SAMPLE_NAME COSMIC_PHENOTYPE_ID GENOMIC_MUTATION_ID LEGACY_MUTATION_ID MUTATION_ID MUTATION_CDS MUTATION_AA MUTATION_DESCRIPTION MUTATION_ZYGOSITY LOH CHROMOSOME GENOME_START GENOME_STOP STRAND PUBMED_PMID COSMIC_STUDY_ID HGVSP HGVSC HGVSG GENOMIC_WT_ALLELE GENOMIC_MUT_ALLELE MUTATION_SOMATIC_STATUS POSITIVE_SCREEN +HRAS COSG11180 ENST00000397596 COSS1542873 HN12PT COSO1001 COSV56056559 COSM486 COSM486 c.37G>C p.G13R missense_variant u 11 534286 534286 - 21798897 p.Gly13Arg c.37G>C G C Confirmed somatic variant y +HRAS COSG11180 ENST00000397596 COSS2688774 V19 COSO1002 COSV56056559 COSM486 COSM486 c.37G>C p.G13R missense_variant u 11 534286 534286 - 24662767 p.Gly13Arg c.37G>C G C Confirmed somatic variant n +HRAS COSG11180 ENST00000397596 COSS702100 S23372 COSO1003 COSV56056558 COSM487 COSM487 c.37G>A p.G13S missense_variant y 11 534286 534286 - 11903582 p.Gly13Ser c.37G>A G A Reported in another cancer sample as somatic n +HRAS COSG11180 ENST00000397596 COSS720047 pel-102 COSO1001 COSV56056557 COSM484 COSM484 c.35G>A p.G12D missense_variant n 11 534288 534288 - 8253528 p.Gly12Asp c.35G>A G A Reported in another cancer sample as somatic n +HRAS COSG11180 ENST00000397596 COSS1965078 1965078 COSO1002 COSV56056584 COSM498 COSM498 c.182A>T p.Q61L missense_variant u 11 533874 533874 - 23599145 p.Gln61Leu c.182A>T A T Reported in another cancer sample as somatic n +HRAS COSG11180 ENST00000397596 COSS1571189 1571189 COSO1002 COSV56056584 COSM498 COSM498 c.182A>T p.Q61L missense_variant het u 11 533874 533874 - 21496703 p.Gln61Leu c.182A>T A T Reported in another cancer sample as somatic n +HRAS COSG11180 ENST00000397596 COSS741791 S61945 COSO1004 COSV56056585 COSM499 COSM499 c.182A>G p.Q61R missense_variant y 11 533874 533874 - 12727991 p.Gln61Arg c.182A>G A G Reported in another cancer sample as somatic n +HRAS COSG11180 ENST00000397596 COSS2745889 49T COSO1005 COSV56070001 COSM1729837 COSM1729837 c.403C>T p.R135* stop_gained u 11 533500 533500 - 660 p.Arg135Ter c.403C>T C T Confirmed somatic variant y +HRAS COSG11180 ENST00000397596 COSS2762863 DM3T4S COSO1004 COSV56056585 COSM499 COSM499 c.182A>G p.Q61R missense_variant u 11 533874 533874 - 29615459 p.Gln61Arg c.182A>G A G Reported in another cancer sample as somatic n +HRAS COSG11180 ENST00000397596 COSS9999991 TESTSAMPLE COSO1006 COSV_TEST1 COSM_TEST1 COSM_TEST1 c.36C>T p.G12= synonymous_variant u 11 534287 534287 - p.Gly12Gly c.36C>T C T Confirmed somatic variant n +HRAS COSG11180 ENST00000397596 COSS9999992 TESTSAMPLE2 COSO1007 COSV_TEST2 COSM_TEST2 COSM_TEST2 c.34_36del p.G12del inframe_deletion u 11 534285 534287 - p.Gly12del c.34_36del GGC - Confirmed somatic variant n +HRAS COSG11180 ENST00000397596 COSS9999993 TESTSAMPLE3 COSO1008 COSV_TEST3 COSM_TEST3 COSM_TEST3 c.? p.? frameshift_variant u 11 534286 534287 - p.? c.? . . Confirmed somatic variant n diff --git a/pgatk/testdata/test_cosmic_mutations_proteindb.fa b/pgatk/testdata/test_cosmic_mutations_proteindb.fa deleted file mode 100644 index 9516b34d..00000000 --- a/pgatk/testdata/test_cosmic_mutations_proteindb.fa +++ /dev/null @@ -1,12 +0,0 @@ ->COSMIC:HRAS:p.G13R:Substitution-Missense -MTEYKLVVVGAGRVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS* ->COSMIC:HRAS:p.G13S:Substitution-Missense -MTEYKLVVVGAGSVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS* ->COSMIC:HRAS:p.G12D:Substitution-Missense -MTEYKLVVVGADGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS* ->COSMIC:HRAS:p.Q61L:Substitution-Missense -MTEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGLEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS* ->COSMIC:HRAS:p.Q61R:Substitution-Missense -MTEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGREEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS* ->COSMIC:HRAS:p.R135*:Substitution-Nonsense -MTEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLA*SYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS* diff --git a/pgatk/testdata/test_cosmic_mutations_proteindb_bone.fa b/pgatk/testdata/test_cosmic_mutations_proteindb_bone.fa deleted file mode 100644 index 3be6bf80..00000000 --- a/pgatk/testdata/test_cosmic_mutations_proteindb_bone.fa +++ /dev/null @@ -1,2 +0,0 @@ ->COSMIC:HRAS:p.G13S:Substitution-Missense -MTEYKLVVVGAGSVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS* diff --git a/pgatk/testdata/test_cosmic_mutations_proteindb_liver.fa b/pgatk/testdata/test_cosmic_mutations_proteindb_liver.fa deleted file mode 100644 index fc6d70d2..00000000 --- a/pgatk/testdata/test_cosmic_mutations_proteindb_liver.fa +++ /dev/null @@ -1,2 +0,0 @@ ->COSMIC:HRAS:p.R135*:Substitution-Nonsense -MTEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLA*SYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS* diff --git a/pgatk/testdata/test_cosmic_mutations_proteindb_skin.fa b/pgatk/testdata/test_cosmic_mutations_proteindb_skin.fa deleted file mode 100644 index b3652105..00000000 --- a/pgatk/testdata/test_cosmic_mutations_proteindb_skin.fa +++ /dev/null @@ -1,4 +0,0 @@ ->COSMIC:HRAS:p.G13R:Substitution-Missense -MTEYKLVVVGAGRVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS* ->COSMIC:HRAS:p.Q61L:Substitution-Missense -MTEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGLEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS* diff --git a/pgatk/testdata/test_cosmic_mutations_proteindb_thyroid.fa b/pgatk/testdata/test_cosmic_mutations_proteindb_thyroid.fa deleted file mode 100644 index dc17c3d3..00000000 --- a/pgatk/testdata/test_cosmic_mutations_proteindb_thyroid.fa +++ /dev/null @@ -1,2 +0,0 @@ ->COSMIC:HRAS:p.Q61R:Substitution-Missense -MTEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGREEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS* diff --git a/pgatk/testdata/test_cosmic_mutations_proteindb_upperaerodigestivetract.fa b/pgatk/testdata/test_cosmic_mutations_proteindb_upperaerodigestivetract.fa deleted file mode 100644 index f3118aed..00000000 --- a/pgatk/testdata/test_cosmic_mutations_proteindb_upperaerodigestivetract.fa +++ /dev/null @@ -1,4 +0,0 @@ ->COSMIC:HRAS:p.G13R:Substitution-Missense -MTEYKLVVVGAGRVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS* ->COSMIC:HRAS:p.G12D:Substitution-Missense -MTEYKLVVVGADGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS* diff --git a/pgatk/testdata/test_ensembl_v2p.fa b/pgatk/testdata/test_ensembl_v2p.fa new file mode 100644 index 00000000..cc23c8dc --- /dev/null +++ b/pgatk/testdata/test_ensembl_v2p.fa @@ -0,0 +1,36 @@ +>ENST00000643195 CDS=1-948 gene_version=6;transcript_version=1;gene_name=OR11H1;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=OR11H1-201;transcript_source=havana;transcript_biotype=protein_coding;tag=Ensembl_canonical;ccds_id=CCDS74807;exon_version=1;protein_id=ENSP00000495403;protein_version=1 +ATGAATGTCTCTGAGCCAAATTCCAGCTTTGCTTTTGTAAATGAATTTATACTCCAAGGTTTCTCTTGTG +AGTGGACAATTCAGATCTTCCTCTTCTCACTCTTTACTACAACATATGCACTGACTATAACAGGGAATGG +AGCCATTGCTTTTGTCCTGTGGTGTGACCGGCGACTTCACACTCCCATGTACATGTTCCTGGGAAATTTC +TCCTTTTTAGAGATATGGTATGTCTCTTCTACAGTTCCCAAGATGTTGGTCAACTTCCTTTCAGAGaaaa +aaaaCATCTCCTTTGCTGGATGTTTTCTCCAGTTTTATTTCTTCTTCTCTTTGGGTACATCAGAATGCTT +GCTTTTGACTGTGATGGCCTTTGATCAGTACCTTGCTATCTGCCGTCCCTTGCTCTATCCTAATATCATG +ACTGGGCATCTCTATGCCAAACTGGTCATACTGTGCTGGGTTTGTGGATTTCTGTGGTTCCTGATCCCCA +TTGTTCTCATCTCTCAGATGCCCTTCTGTGGCCCAAACATTATTGACCATGTTGTGTGTGACCCAGGGCC +ACGATTTGCATTGGATTGTGTTTCTGCCCCAAGAATCCAACTGTTTTGCTACACTCTAAGCTCATTAGTT +ATTTTTGGTAACTTCCTCTTTATTATTGGATCCTATACTCTTGTCCTGAAAGCTATGTTGGGTATGCCTT +CAAGCACTGGGAGACATAAGGCCTTCTCTACCTGTGGGTCTCATTTGGCTGTGGTATCACTGTGCTATAG +CTCTCTTATGGTCATGTATGTGAGCCCAGGACTCGGACATTCTACAGGGATGCAGAAAATTGAAACTTTG +TTCTATGCTATGGTGACCCCACTCTTCAATCCCCTTATCTATAGCCTCCAGAATAAGGAGATAAAGGCAG +CCCTGAGGAAAGTTCTGGGGAGTTCCAACATAATCTAA +>ENST00000550946 gene_version=20;transcript_version=5;gene_name=BID;gene_source=ensembl_havana;gene_biotype=protein_coding;transcript_name=BID-207;transcript_source=havana;transcript_biotype=retained_intron;transcript_support_level=1;exon_version=1 +ggacgcgcccgcgcccccgcggcTGGAGGGTGGTCGCCACTGGGACACTGTGAACCAGGAGTGAGTCGGA +GCTGCCGCGCTGCCCAGGCCATGGACTGTGAGGTCAACAACGGTTCCAGCCTCAGGGATGAGTGCATCAC +AAACCTACTGGTGTTTGGCTTCCTCCAAAGCTGTTCTGACAACAGCTTCCGCAGAGAGCTGGACGCACTG +GGCCACGAGCTGCCAGTGCTGGCTCCCCAGTGGGAGGGCTACGATGAGCTGCAGACTGATGGCAACCGCA +GCAGCCACTCCCGCTTGGGAAGAATAGAGGCAGgggcgtcagacaataaCACAGCAAGTGCTGAGGAAGA +AACGGAGGCGGCAGGGAGCGTGGCAGTTGAGCGTGGCCTTCATGGAGCTGCGACAGTGGTACTCGGGCAG +GGGCAGCACGGAGGCTGTGCGCCAGAGGAGGAGGACTGAGGGGCAAGGGGGAGAGCTCTGGTTGGAAAGG +CAGGGGAGATTCTCCAGGGCCTTGCCGGTGCCAGTGACAACTGGGGTTTTCCTGAGACGGGACTGCGAGG +AATGGGGGCTCTCAGGCTTGAGAGGGCAAAAGTGGGTCTGGGATGCCGTCTGCCCACAGAGCCCCTTCCC +CAACGGCTGCCCAGGCCAAGGCCAACCCTGTTGGGTTGTGTGGTGTGAGCCATGAAGCCGCTGCCAGGCT +TGTACCTCAGGCGTGGTCGTGATGCCCCAGCTTCACCGGCCCTGCCTGTGGGGACGTGGTGCCTGTGTGC +GGGAGCCTGGGCCTCAGCCGAGGCCCTGAGCTCCGGCACTGCCCAGAACCCAGCTCAGCGCTGGTACTCA +GCCCGCCCGCTGTGGCCCTGGTGGAGTGGAGCACGTGCCCAGTGGGGGCTGGCCTTGTCCCATCGCGGAC +CTGTCCTTTCCCGGGGCAGGGTGGTGTGGGAGAGGGTATCAGGGACATTTTCTGAGTCTGCTCTGTCTCT +GCCGCCCCTGCCTGAACACAGATTCTGAAAGTCAAGAAGACATCATCCGGAATATTGCCAGGCACCTCGC +CCAGGTCGGGGACAGCATGGACCGTAGCATCCCTCCGGGCCTGGTGAACGGCCTGGCCCTGCAGCTCAGG +AACACCAGCCGGTCGGAGGAGGACCGGAACAGGGACCTGGCCACTGCCCTGGAGCAGCTGCTGCAGGCCT +ACCCTAGAGACATGGAGAAGGAGAAGACCATGCTGGTGCTGGCCCTGCTGCTGGCCAAGAAGGTGGCCAG +TCACACGCCGTCCTTGCTCCGTGATGTCTTTCACACAACAGTGAATTTTATTAACCAGAACCTACGCACC +TACGTGAGGAGCTTAGCCAGAAATGGGATGGACTGAACGGACAGTTCCAGAAGTGTGACTGGCT diff --git a/pgatk/testdata/test_ensembl_v2p.gtf b/pgatk/testdata/test_ensembl_v2p.gtf new file mode 100644 index 00000000..236c1a38 --- /dev/null +++ b/pgatk/testdata/test_ensembl_v2p.gtf @@ -0,0 +1,17 @@ +#!genome-build GRCh38.p14 +#!genome-version GRCh38 +#!genome-date 2013-12 +#!genome-build-accession NCBI:GCA_000001405.29 +#!genebuild-last-updated 2023-09 +22 havana transcript 15528192 15529139 . + . gene_id "ENSG00000130538"; gene_version "6"; transcript_id "ENST00000643195"; transcript_version "1"; gene_name "OR11H1"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "OR11H1-201"; transcript_source "havana"; transcript_biotype "protein_coding"; tag "Ensembl_canonical"; +22 havana exon 15528192 15529139 . + . gene_id "ENSG00000130538"; gene_version "6"; transcript_id "ENST00000643195"; transcript_version "1"; exon_number "1"; gene_name "OR11H1"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "OR11H1-201"; transcript_source "havana"; transcript_biotype "protein_coding"; exon_id "ENSE00003825272"; exon_version "1"; tag "Ensembl_canonical"; +22 havana CDS 15528192 15529136 . + 0 gene_id "ENSG00000130538"; gene_version "6"; transcript_id "ENST00000643195"; transcript_version "1"; exon_number "1"; gene_name "OR11H1"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "OR11H1-201"; transcript_source "havana"; transcript_biotype "protein_coding"; protein_id "ENSP00000495403"; protein_version "1"; tag "Ensembl_canonical"; +22 havana start_codon 15528192 15528194 . + 0 gene_id "ENSG00000130538"; gene_version "6"; transcript_id "ENST00000643195"; transcript_version "1"; exon_number "1"; gene_name "OR11H1"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "OR11H1-201"; transcript_source "havana"; transcript_biotype "protein_coding"; tag "Ensembl_canonical"; +22 havana stop_codon 15529137 15529139 . + 0 gene_id "ENSG00000130538"; gene_version "6"; transcript_id "ENST00000643195"; transcript_version "1"; exon_number "1"; gene_name "OR11H1"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "OR11H1-201"; transcript_source "havana"; transcript_biotype "protein_coding"; tag "Ensembl_canonical"; +22 havana transcript 17735552 17774412 . - . gene_id "ENSG00000015475"; gene_version "20"; transcript_id "ENST00000550946"; transcript_version "5"; gene_name "BID"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "BID-207"; transcript_source "havana"; transcript_biotype "retained_intron"; transcript_support_level "1"; +22 havana exon 17774381 17774412 . - . gene_id "ENSG00000015475"; gene_version "20"; transcript_id "ENST00000550946"; transcript_version "5"; exon_number "1"; gene_name "BID"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "BID-207"; transcript_source "havana"; transcript_biotype "retained_intron"; exon_id "ENSE00002195037"; exon_version "1"; transcript_support_level "1"; +22 havana exon 17750105 17750174 . - . gene_id "ENSG00000015475"; gene_version "20"; transcript_id "ENST00000550946"; transcript_version "5"; exon_number "2"; gene_name "BID"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "BID-207"; transcript_source "havana"; transcript_biotype "retained_intron"; exon_id "ENSE00003590401"; exon_version "1"; transcript_support_level "1"; +22 havana exon 17743803 17744013 . - . gene_id "ENSG00000015475"; gene_version "20"; transcript_id "ENST00000550946"; transcript_version "5"; exon_number "3"; gene_name "BID"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "BID-207"; transcript_source "havana"; transcript_biotype "retained_intron"; exon_id "ENSE00003489267"; exon_version "1"; transcript_support_level "1"; +22 havana exon 17739349 17740176 . - . gene_id "ENSG00000015475"; gene_version "20"; transcript_id "ENST00000550946"; transcript_version "5"; exon_number "4"; gene_name "BID"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "BID-207"; transcript_source "havana"; transcript_biotype "retained_intron"; exon_id "ENSE00002394631"; exon_version "1"; transcript_support_level "1"; +22 havana exon 17738017 17738229 . - . gene_id "ENSG00000015475"; gene_version "20"; transcript_id "ENST00000550946"; transcript_version "5"; exon_number "5"; gene_name "BID"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "BID-207"; transcript_source "havana"; transcript_biotype "retained_intron"; exon_id "ENSE00003683851"; exon_version "1"; transcript_support_level "1"; +22 havana exon 17735552 17735591 . - . gene_id "ENSG00000015475"; gene_version "20"; transcript_id "ENST00000550946"; transcript_version "5"; exon_number "6"; gene_name "BID"; gene_source "ensembl_havana"; gene_biotype "protein_coding"; transcript_name "BID-207"; transcript_source "havana"; transcript_biotype "retained_intron"; exon_id "ENSE00003539371"; exon_version "1"; transcript_support_level "1"; diff --git a/pgatk/testdata/test_ensembl_v2p.vcf b/pgatk/testdata/test_ensembl_v2p.vcf new file mode 100644 index 00000000..5422c4f6 --- /dev/null +++ b/pgatk/testdata/test_ensembl_v2p.vcf @@ -0,0 +1,18 @@ +##fileformat=VCFv4.1 +##fileDate=20250624 +##source=ensembl;version=115;url=https://e115.ensembl.org/homo_sapiens +##reference=https://ftp.ensembl.org/pub/release-115/fasta/homo_sapiens/dna/ +##INFO= +##INFO= +##INFO= +#CHROM POS ID REF ALT QUAL FILTER INFO +22 15528192 rs1211697244 A G . . TSA=SNV;MAF=0.002;CSQ=G|start_lost|mRNA|ENST00000643195|M/V|deleterious_-_low_confidence(0.01) +22 15528195 rs1410655344 A G . . TSA=SNV;MAF=0.012;CSQ=G|missense_variant|mRNA|ENST00000643195|N/D|tolerated_-_low_confidence(0.05) +22 15528197 rs1394965478 T C . . TSA=SNV;MAF=0.008;CSQ=C|synonymous_variant|mRNA|ENST00000643195|N/N| +22 15528197 rs1402769459 TG T . . TSA=deletion;MAF=0.003;CSQ=-|frameshift_variant|mRNA|ENST00000643195|V/X| +22 15528234 rs1420478920 G T . . TSA=SNV;MAF=0.004;CSQ=T|stop_gained|mRNA|ENST00000643195|E/*| +22 15528914 rs1203023715 CTTC C . . TSA=indel;MAF=0.001;CSQ=CT|inframe_deletion|mRNA|ENST00000643195|AFS/AS| +22 15528961 rs1986039639 G GCTG . . TSA=indel;MAF=0.002;CSQ=GCTGCT|protein_altering_variant|mRNA|ENST00000643195|SS/SCS| +22 15529137 rs1986046473 T A . . TSA=SNV;MAF=0.001;CSQ=A|stop_lost|mRNA|ENST00000643195|*/K| +22 15529138 rs1986046579 A G . . TSA=SNV;MAF=0.003;CSQ=G|stop_retained_variant|mRNA|ENST00000643195|*/*| +22 17740102 rs147461488 GGCCACGCTCAACT G . . TSA=deletion;MAF=0.168;CSQ=-|non_coding_transcript_exon_variant|ncRNA|ENST00000550946|| diff --git a/pgatk/testdata/test_gencode.db b/pgatk/testdata/test_gencode.db deleted file mode 100644 index c784222f..00000000 Binary files a/pgatk/testdata/test_gencode.db and /dev/null differ diff --git a/pgatk/testdata/test_gnomad_bgz.vcf.gz b/pgatk/testdata/test_gnomad_bgz.vcf.gz new file mode 100644 index 00000000..024b271e Binary files /dev/null and b/pgatk/testdata/test_gnomad_bgz.vcf.gz differ diff --git a/pgatk/testdata/test_gnomad_gencode.fa b/pgatk/testdata/test_gnomad_gencode.fa new file mode 100644 index 00000000..ce5c0baf --- /dev/null +++ b/pgatk/testdata/test_gnomad_gencode.fa @@ -0,0 +1,15 @@ +>ENST00000643195.1 CDS=1-948 gene_type=protein_coding;gene_name=OR11H1;transcript_type=protein_coding;transcript_name=OR11H1-201;level=2;protein_id=ENSP00000495403.1;hgnc_id=HGNC:15404;tag=appris_principal_1;havana_gene=OTTHUMG00000030069.4;havana_transcript=OTTHUMT00000074923.4 +ATGAATGTCTCTGAGCCAAATTCCAGCTTTGCTTTTGTAAATGAATTTATACTCCAAGGTTTCTCTTGTG +AGTGGACAATTCAGATCTTCCTCTTCTCACTCTTTACTACAACATATGCACTGACTATAACAGGGAATGG +AGCCATTGCTTTTGTCCTGTGGTGTGACCGGCGACTTCACACTCCCATGTACATGTTCCTGGGAAATTTC +TCCTTTTTAGAGATATGGTATGTCTCTTCTACAGTTCCCAAGATGTTGGTCAACTTCCTTTCAGAGAAAA +AAAACATCTCCTTTGCTGGATGTTTTCTCCAGTTTTATTTCTTCTTCTCTTTGGGTACATCAGAATGCTT +GCTTTTGACTGTGATGGCCTTTGATCAGTACCTTGCTATCTGCCGTCCCTTGCTCTATCCTAATATCATG +ACTGGGCATCTCTATGCCAAACTGGTCATACTGTGCTGGGTTTGTGGATTTCTGTGGTTCCTGATCCCCA +TTGTTCTCATCTCTCAGATGCCCTTCTGTGGCCCAAACATTATTGACCATGTTGTGTGTGACCCAGGGCC +ACGATTTGCATTGGATTGTGTTTCTGCCCCAAGAATCCAACTGTTTTGCTACACTCTAAGCTCATTAGTT +ATTTTTGGTAACTTCCTCTTTATTATTGGATCCTATACTCTTGTCCTGAAAGCTATGTTGGGTATGCCTT +CAAGCACTGGGAGACATAAGGCCTTCTCTACCTGTGGGTCTCATTTGGCTGTGGTATCACTGTGCTATAG +CTCTCTTATGGTCATGTATGTGAGCCCAGGACTCGGACATTCTACAGGGATGCAGAAAATTGAAACTTTG +TTCTATGCTATGGTGACCCCACTCTTCAATCCCCTTATCTATAGCCTCCAGAATAAGGAGATAAAGGCAG +CCCTGAGGAAAGTTCTGGGGAGTTCCAACATAATCTAA diff --git a/pgatk/testdata/test_gnomad_gencode.gtf b/pgatk/testdata/test_gnomad_gencode.gtf new file mode 100644 index 00000000..cb282364 --- /dev/null +++ b/pgatk/testdata/test_gnomad_gencode.gtf @@ -0,0 +1,6 @@ +chr22 HAVANA transcript 15528192 15529139 . + . gene_id "ENSG00000130538.6"; transcript_id "ENST00000643195.1"; gene_type "protein_coding"; gene_name "OR11H1"; transcript_type "protein_coding"; transcript_name "OR11H1-201"; level 2; protein_id "ENSP00000495403.1"; hgnc_id "HGNC:15404"; tag "basic"; tag "Ensembl_canonical"; tag "MANE_Select"; tag "appris_principal_1"; havana_gene "OTTHUMG00000030069.4"; havana_transcript "OTTHUMT00000074923.4"; +chr22 HAVANA exon 15528192 15529139 . + . gene_id "ENSG00000130538.6"; transcript_id "ENST00000643195.1"; gene_type "protein_coding"; gene_name "OR11H1"; transcript_type "protein_coding"; transcript_name "OR11H1-201"; exon_number 1; exon_id "ENSE00003825272.1"; level 2; protein_id "ENSP00000495403.1"; hgnc_id "HGNC:15404"; tag "basic"; tag "Ensembl_canonical"; tag "MANE_Select"; tag "appris_principal_1"; havana_gene "OTTHUMG00000030069.4"; havana_transcript "OTTHUMT00000074923.4"; +chr22 HAVANA CDS 15528192 15529136 . + 0 gene_id "ENSG00000130538.6"; transcript_id "ENST00000643195.1"; gene_type "protein_coding"; gene_name "OR11H1"; transcript_type "protein_coding"; transcript_name "OR11H1-201"; exon_number 1; exon_id "ENSE00003825272.1"; level 2; protein_id "ENSP00000495403.1"; hgnc_id "HGNC:15404"; tag "basic"; tag "Ensembl_canonical"; tag "MANE_Select"; tag "appris_principal_1"; havana_gene "OTTHUMG00000030069.4"; havana_transcript "OTTHUMT00000074923.4"; +chr22 HAVANA start_codon 15528192 15528194 . + 0 gene_id "ENSG00000130538.6"; transcript_id "ENST00000643195.1"; gene_type "protein_coding"; gene_name "OR11H1"; transcript_type "protein_coding"; transcript_name "OR11H1-201"; exon_number 1; exon_id "ENSE00003825272.1"; level 2; protein_id "ENSP00000495403.1"; hgnc_id "HGNC:15404"; tag "basic"; tag "Ensembl_canonical"; tag "MANE_Select"; tag "appris_principal_1"; havana_gene "OTTHUMG00000030069.4"; havana_transcript "OTTHUMT00000074923.4"; +chr22 HAVANA stop_codon 15529137 15529139 . + 0 gene_id "ENSG00000130538.6"; transcript_id "ENST00000643195.1"; gene_type "protein_coding"; gene_name "OR11H1"; transcript_type "protein_coding"; transcript_name "OR11H1-201"; exon_number 1; exon_id "ENSE00003825272.1"; level 2; protein_id "ENSP00000495403.1"; hgnc_id "HGNC:15404"; tag "basic"; tag "Ensembl_canonical"; tag "MANE_Select"; tag "appris_principal_1"; havana_gene "OTTHUMG00000030069.4"; havana_transcript "OTTHUMT00000074923.4"; +chr22 HAVANA UTR 15529137 15529139 . + . gene_id "ENSG00000130538.6"; transcript_id "ENST00000643195.1"; gene_type "protein_coding"; gene_name "OR11H1"; transcript_type "protein_coding"; transcript_name "OR11H1-201"; exon_number 1; exon_id "ENSE00003825272.1"; level 2; protein_id "ENSP00000495403.1"; hgnc_id "HGNC:15404"; tag "basic"; tag "Ensembl_canonical"; tag "MANE_Select"; tag "appris_principal_1"; havana_gene "OTTHUMG00000030069.4"; havana_transcript "OTTHUMT00000074923.4"; diff --git a/pgatk/testdata/test_validate_psms_out.tsv b/pgatk/testdata/test_validate_psms_out.tsv deleted file mode 100644 index cdda22d9..00000000 --- a/pgatk/testdata/test_validate_psms_out.tsv +++ /dev/null @@ -1,3 +0,0 @@ -SpecFile Biological.set Retention.time.min. Ion.injection.time.ms. SpecID ScanNum FragMethod Precursor IsotopeError PrecursorError(ppm) Charge Peptide Protein DeNovoScore MSGFScore SpecEValue EValue percolator.svm.score PSM.q.value peptide.q.value tmt10plex_126 tmt10plex_127N tmt10plex_127C tmt10plex_128N tmt10plex_128C tmt10plex_129N tmt10plex_129C tmt10plex_130N tmt10plex_130C tmt10plex_131 position Variant Peptide peptide_length status ions_support support_ions sum.supportions.intensity flanking_ions_support flanking_ions sum.flanking.ions.intensity matched_ions sum.matchedions.intensity sum.fragmentions.intensity maxintensity average_intensity median_intensity -test_validate.mzML Set1 59.558592 83.3344385 controllerType=0 controllerNumber=1 scan=19937 19937 HCD 1052.5897 0 -0.115971394 2 +229.163TIAEC+57.021LAEELINAAK+229.163 =_18600958@4.20978040680119@fr10:1378089(pre=-,post=-) 188 171 5.79e-18 6.76e-10 1.897 0.0 0.0 128042.0 61780.0 190414.0 226202 244759.0 139458.0 116483.0 176833.0 133302.0 137712.0 8 TIAECLAEELINAAK 15 checked YES ,y8,y9,b9,b10,y11,y13 80535.43920898438 NO y8,b7 39766.16796875 b1,y1,b2,y2,b3,y3,y4,b4,y5,b5,y6,b6,b7,y8,y9,b9,b10,y11,y13 1209473.0 5231726.0 304900.65625 20843.529296875 4134.62646484375 -test_validate.mzML Set1 27.764549 150.000006 controllerType=0 controllerNumber=1 scan=8461 8461 HCD 1068.8729 2 -7.502769 3 +229.163K+229.163AAAPTPEEEMDEC+57.021EQALAAEPK+229.163 =_21935565@4.06037609192942@fr8:1746571(pre=-,post=-) 192 55 7.83e-12 0.001002411 0.854 0.007575758 0.005524862 28336.2 6073.63 30612.8 22688 30643.6 24194.2 11743.9 21621.2 15252.3 15450.5 6 KAAAPTPEEEMDECEQALAAEPK 23 checked NO 0.0 NO b5 3320.781982421875 y1,y2,b1,y3,b2,y4,b3,y5,b4,y6,b5,y7,y8,y9 423367.4375 1454776.25 185478.5625 6735.0751953125 2132.603515625 diff --git a/pgatk/tests/pgatk_tests.py b/pgatk/tests/pgatk_tests.py index 825a642e..8dcebb64 100644 --- a/pgatk/tests/pgatk_tests.py +++ b/pgatk/tests/pgatk_tests.py @@ -151,22 +151,39 @@ def test_dnaseq_altorfs_to_proteindb(self): '--include_biotypes', 'altORFs', '--skip_including_all_cds']) self.assertEqual(result.exit_code, 0) - def test_cbioportal_to_proteindb(self): + def test_cbioportal_to_proteindb_grch37(self): + """ + Test cbioportal-to-proteindb with real GRCh37 TCGA BRCA data. + Uses coordinate-based translation (no HGVSc) via --gff. """ - Test generation proteinDB from cBioportal mutations using cbioportal-to-proteindb tool - :return: - """ runner = CliRunner() result = runner.invoke(cli, - ['cbioportal-to-proteindb', '--config_file', 'config/cbioportal_config.yaml', - '--input_mutation', 'testdata/test_cbioportal_data_mutations_mskcc.txt', - '--input_cds', 'testdata/test_cbioportal_genes.fa', - '--output_db', 'testdata/test_cbioportal_data_mutations_mskcc_proteindb.fa', - '--clinical_sample_file', 'testdata/test_cbioportal_data_clinical_sample.txt', + ['cbioportal-to-proteindb', + '--config_file', 'config/cbioportal_config.yaml', + '--input_mutation', 'testdata/test_cbioportal_grch37_mutations.txt', + '--input_fasta', 'testdata/test_cbioportal_ncbi_grch37_transcripts.fa', + '--gff', 'testdata/test_cbioportal_ncbi_grch37.gff', + '--output_db', 'testdata/test_cbioportal_grch37_proteindb.fa', + '--clinical_sample_file', 'testdata/test_cbioportal_grch37_clinical_sample.txt', '--filter_column', 'CANCER_TYPE', '--split_by_filter_column', '--accepted_values', 'all']) self.assertEqual(result.exit_code, 0) + def test_cbioportal_to_proteindb_grch38(self): + """ + Test cbioportal-to-proteindb with real GRCh38 TCGA BRCA data. + Uses coordinate-based translation (no HGVSc) via --gff, no clinical file. + """ + runner = CliRunner() + result = runner.invoke(cli, + ['cbioportal-to-proteindb', + '--config_file', 'config/cbioportal_config.yaml', + '--input_mutation', 'testdata/test_cbioportal_grch38_mutations.txt', + '--input_fasta', 'testdata/test_cbioportal_ncbi_grch38_transcripts.fa', + '--gff', 'testdata/test_cbioportal_ncbi_grch38.gff', + '--output_db', 'testdata/test_cbioportal_grch38_proteindb.fa']) + self.assertEqual(result.exit_code, 0) + def test_cosmic_to_proteindb(self): """ Test generation proteinDB from altORFs using dnaseq-to-proteindb tool @@ -178,7 +195,8 @@ def test_cosmic_to_proteindb(self): '--input_mutation', 'testdata/test_cosmic_mutations.tsv', '--input_genes', 'testdata/test_cosmic_genes.fa', '--output_db', 'testdata/test_cosmic_mutations_proteindb.fa', - '--filter_column', 'Primary site', + '--clinical_sample_file', 'testdata/test_cosmic_classification.tsv', + '--filter_column', 'PRIMARY_SITE', '--split_by_filter_column', '--accepted_values', 'all']) if result.exit_code != 0: print(result.exception) @@ -267,6 +285,22 @@ def test_download_ensembl_data_37(self): def test_check_ensembl_database(self): runner = CliRunner() + # ensembl-check operates on a protein DB produced by vcf-to-proteindb; + # generate it here so the test does not rely on alphabetical test ordering. + if not os.path.exists('testdata/proteindb_from_ENSEMBL_VCF.fa'): + prep = runner.invoke(cli, + ['vcf-to-proteindb', '--config_file', 'config/ensembl_config.yaml', + '--vcf', 'testdata/test.vcf', + '--input_fasta', 'testdata/test.fa', + '--gene_annotations_gtf', 'testdata/test.gtf', + '--protein_prefix', 'ensvar', + '--af_field', 'MAF', + '--output_proteindb', 'testdata/proteindb_from_ENSEMBL_VCF.fa', + '--annotation_field_name', 'CSQ', + '--biotype_str', 'feature_type', + '--include_biotypes', 'mRNA,ncRNA']) + self.assertEqual(prep.exit_code, 0, + f"Failed to prepare ENSEMBL proteindb fixture: {prep.output}") result = runner.invoke(cli, ['ensembl-check', '--config_file', 'config/ensembl_config.yaml', '--input_fasta', 'testdata/proteindb_from_ENSEMBL_VCF.fa', '--output', diff --git a/pgatk/tests/test_cbioportal_translation.py b/pgatk/tests/test_cbioportal_translation.py new file mode 100644 index 00000000..c74eba9c --- /dev/null +++ b/pgatk/tests/test_cbioportal_translation.py @@ -0,0 +1,470 @@ +"""Tests for cbioportal_to_proteindb biotype filtering and improved translation. + +Covers: +- _parse_cbio_fasta_header: CDS= and gene_biotype= extraction +- Variant_Classification filtering (Nonsense_Mutation excluded by default) +- Biotype filtering (protein_coding default, lncRNA excluded) +- 3-frame translation when include_biotypes=all for non-CDS transcripts +- CDS slice extraction: HGVSc positions are CDS-relative after slicing +""" + +from pathlib import Path + +import pytest +from Bio import SeqIO + +from pgatk.cgenomes.cgenomes_proteindb import CancerGenomesService + +_TESTDATA = Path(__file__).resolve().parent.parent / "testdata" + + +def _translate_ref_cds(fasta_path, nm_id: str) -> str: + """Translate the CDS of an NCBI gffread transcript record. + + Strips the 'rna-' prefix and version suffix to match bare NM_ IDs. + Returns an empty string when the transcript is not found. + """ + for rec in SeqIO.parse(str(fasta_path), "fasta"): + if rec.id.removeprefix("rna-").split(".")[0] != nm_id: + continue + for tok in rec.description.split(): + stripped = tok.strip("[]") + if stripped.startswith("CDS="): + s, e = (int(x) for x in stripped.split("=")[1].split("-")) + return str(rec.seq[s - 1:e].translate()) + return "" + +# Minimal transcript FASTA (gffread -F -w format): +# - NM_PROT01: protein_coding, CDS=4-27 in a 30-base transcript +# full seq: AAA ATG AAA CGT TTT AAG GGG TGG TAA TTT +# positions: 1-3 4----------------------------27 28-30 +# CDS protein reference: M-K-R-F-K-G-W-* (MKRFKGW*, length 8) +# - NR_LNCRNA1: lncRNA, no CDS= header +# seq: ATGAAATTTCCCGGGCAGTTTTAA (24 bases) +# position 3 = G; c.3G>T produces ATTAAATTTCCCGGGCAGTTTTAA +_FASTA = """\ +>rna-NM_PROT01.1 CDS=4-27 Dbxref=X;gene_biotype=protein_coding;transcript_id=NM_PROT01.1 +AAAATGAAACGTTTTAAGGGGTGGTAATTT +>rna-NR_LNCRNA1.1 Dbxref=X;gene_biotype=lncRNA;transcript_id=NR_LNCRNA1.1 +ATGAAATTTCCCGGGCAGTTTTAA +""" + +# MAF-style mutation table (only columns required by cbioportal_to_proteindb) +# c.7C>T on NM_PROT01 (CDS pos 7, C→T): CGT→TGT, R→C → protein MKCFKGW* +# Same position but Nonsense_Mutation: tests default exclusion +# lncRNA mutation c.3G>T: tests biotype filter (excluded by default) +# lncRNA mutation c.3G>T again: used in include_biotypes=all test +_MAF_HEADER = "Hugo_Symbol\tTranscript_ID\tHGVSc\tHGVSp_Short\tVariant_Type\tVariant_Classification\tTumor_Sample_Barcode" +_MISSENSE_ROW = "GENE1\tNM_PROT01\tNM_PROT01.1:c.7C>T\tp.R3C\tSNP\tMissense_Mutation\tSAMPLE1" +_NONSENSE_ROW = "GENE1\tNM_PROT01\tNM_PROT01.1:c.7C>T\tp.R3*\tSNP\tNonsense_Mutation\tSAMPLE1" +_LNCRNA_ROW = "GENE2\tNR_LNCRNA1\tNR_LNCRNA1.1:c.3G>T\tp.?\tSNP\tMissense_Mutation\tSAMPLE1" + + +def _make_service(tmp_path, fasta_text, maf_rows, extra_args=None): + """Write temp FASTA + MAF, return a configured CancerGenomesService.""" + fasta_path = tmp_path / "transcripts.fa" + fasta_path.write_text(fasta_text) + + maf_path = tmp_path / "mutations.txt" + maf_path.write_text("\n".join(maf_rows) + "\n") + + output_path = tmp_path / "output.fa" + + pipeline_args = { + CancerGenomesService.CONFIG_CANCER_GENOMES_MUTATION_FILE: str(maf_path), + CancerGenomesService.CONFIG_COMPLETE_GENES_FILE: str(fasta_path), + CancerGenomesService.CONFIG_OUTPUT_FILE: str(output_path), + } + if extra_args: + pipeline_args.update(extra_args) + + return CancerGenomesService({}, pipeline_args), output_path + + +class TestParseCbioFastaHeader: + """Unit tests for the CDS= / biotype header parser.""" + + def test_protein_coding_cds_present(self): + desc = "rna-NM_PROT01.1 CDS=4-27 Dbxref=X;gene_biotype=protein_coding;transcript_id=NM_PROT01.1" + cds_info, biotype, _ = CancerGenomesService._parse_cbio_fasta_header(desc, "gene_biotype") + assert cds_info == [4, 27] + assert biotype == "protein_coding" + + def test_lncrna_no_cds(self): + desc = "rna-NR_LNCRNA1.1 Dbxref=X;gene_biotype=lncRNA;transcript_id=NR_LNCRNA1.1" + cds_info, biotype, _ = CancerGenomesService._parse_cbio_fasta_header(desc, "gene_biotype") + assert cds_info == [] + assert biotype == "lncRNA" + + def test_missing_biotype(self): + desc = "rna-NM_NOBIOTYPE.1 CDS=1-9" + cds_info, biotype, _ = CancerGenomesService._parse_cbio_fasta_header(desc, "gene_biotype") + assert cds_info == [1, 9] + assert biotype == "" + + def test_no_cds_no_biotype(self): + desc = "some_transcript_without_annotations" + cds_info, biotype, _ = CancerGenomesService._parse_cbio_fasta_header(desc, "gene_biotype") + assert cds_info == [] + assert biotype == "" + + +class TestCbioportalToProteindb: + """Integration tests for cbioportal_to_proteindb with biotype + classification filters.""" + + def test_missense_protein_coding_included(self, tmp_path): + service, output_path = _make_service( + tmp_path, _FASTA, + [_MAF_HEADER, _MISSENSE_ROW], + ) + service.cbioportal_to_proteindb() + + output = output_path.read_text() + # Missense on protein_coding transcript must be translated + assert "cbiomut:NM_PROT01:GENE1:p.R3C:Missense_Mutation" in output + # No reading-frame suffix for CDS transcripts (1-frame) + assert "_RF1" not in output + + def test_missense_protein_correct_substitution(self, tmp_path): + """c.7C>T on CDS=4-27: codon 3 CGT→TGT gives R→C; expect MKCFKGW*.""" + service, output_path = _make_service( + tmp_path, _FASTA, + [_MAF_HEADER, _MISSENSE_ROW], + ) + service.cbioportal_to_proteindb() + + output = output_path.read_text() + lines = output.strip().split("\n") + # Find the protein sequence for the missense entry + for i, line in enumerate(lines): + if "cbiomut:NM_PROT01" in line: + protein = lines[i + 1] + # Position 3 should be C (cysteine), not R (arginine) + assert protein[2] == "C", f"Expected C at pos 3, got: {protein}" + assert protein.startswith("MK") + break + else: + pytest.fail("Missense entry not found in output") + + def test_nonsense_excluded_by_default(self, tmp_path): + service, output_path = _make_service( + tmp_path, _FASTA, + [_MAF_HEADER, _NONSENSE_ROW], + ) + service.cbioportal_to_proteindb() + + output = output_path.read_text() + assert "Nonsense_Mutation" not in output + + def test_nonsense_included_when_configured(self, tmp_path): + service, output_path = _make_service( + tmp_path, _FASTA, + [_MAF_HEADER, _NONSENSE_ROW], + extra_args={CancerGenomesService.EXCLUDE_VARIANT_CLASSIFICATIONS: ""}, + ) + service.cbioportal_to_proteindb() + + output = output_path.read_text() + assert "Nonsense_Mutation" in output + + def test_lncrna_excluded_by_default(self, tmp_path): + service, output_path = _make_service( + tmp_path, _FASTA, + [_MAF_HEADER, _LNCRNA_ROW], + ) + service.cbioportal_to_proteindb() + + output = output_path.read_text() + # lncRNA excluded because default include_biotypes=protein_coding + assert "NR_LNCRNA1" not in output + + def test_lncrna_3frame_when_include_biotypes_all(self, tmp_path): + service, output_path = _make_service( + tmp_path, _FASTA, + [_MAF_HEADER, _LNCRNA_ROW], + extra_args={CancerGenomesService.INCLUDE_BIOTYPES: "all"}, + ) + service.cbioportal_to_proteindb() + + output = output_path.read_text() + # lncRNA has no CDS=, so 3-frame translation produces _RF1/_RF2/_RF3 headers + assert "_RF1" in output + assert "_RF2" in output + assert "_RF3" in output + # All entries belong to the lncRNA transcript + assert "NR_LNCRNA1" in output + + def test_include_biotypes_protein_coding_excludes_lncrna(self, tmp_path): + """Explicit protein_coding filter: same as default but set explicitly.""" + service, output_path = _make_service( + tmp_path, _FASTA, + [_MAF_HEADER, _MISSENSE_ROW, _LNCRNA_ROW], + extra_args={CancerGenomesService.INCLUDE_BIOTYPES: "protein_coding"}, + ) + service.cbioportal_to_proteindb() + + output = output_path.read_text() + assert "NM_PROT01" in output + assert "NR_LNCRNA1" not in output + + +class TestParallelEquivalence: + """workers=2 must produce the same protein set as workers=1 (sequential).""" + + def _run(self, tmp_path, workers): + output_path = tmp_path / f"proteindb_w{workers}.fa" + service = CancerGenomesService({}, { + CancerGenomesService.CONFIG_CANCER_GENOMES_MUTATION_FILE: str( + _TESTDATA / "test_cbioportal_grch37_mutations.txt"), + CancerGenomesService.CONFIG_COMPLETE_GENES_FILE: str( + _TESTDATA / "test_cbioportal_ncbi_grch37_transcripts.fa"), + CancerGenomesService.CONFIG_OUTPUT_FILE: str(output_path), + CancerGenomesService.CONFIG_GFF_FILE: str( + _TESTDATA / "test_cbioportal_ncbi_grch37.gff"), + CancerGenomesService.WORKERS: workers, + CancerGenomesService.CBIO_BATCH_SIZE: 3, # small batch to exercise multi-batch logic + }) + service.cbioportal_to_proteindb() + return {r.id: str(r.seq) for r in SeqIO.parse(str(output_path), "fasta")} + + def test_parallel_matches_sequential(self, tmp_path): + seq = self._run(tmp_path, workers=1) + par = self._run(tmp_path, workers=2) + assert set(par.keys()) == set(seq.keys()), ( + f"Header mismatch: only_sequential={set(seq.keys()) - set(par.keys())} " + f"only_parallel={set(par.keys()) - set(seq.keys())}" + ) + for key in seq: + assert par[key] == seq[key], f"Sequence mismatch for {key}" + + +class TestSplitByFilterColumn: + """Tests for split_by_filter_column: per-group proteinDB file generation. + + Covers: + - A per-group FASTA is created alongside the main output (group name + is derived by stripping non-alpha characters from the clinical + CANCER_TYPE value, e.g. "Breast Cancer" -> "BreastCancer"). + - The group file IDs match the reference snapshot. + - The group file is a subset of the main output. + - Samples absent from the clinical file are skipped from both outputs. + """ + + def _run_split(self, tmp_path): + output_path = tmp_path / "proteindb.fa" + service = CancerGenomesService({}, { + CancerGenomesService.CONFIG_CANCER_GENOMES_MUTATION_FILE: str( + _TESTDATA / "test_cbioportal_grch37_mutations.txt"), + CancerGenomesService.CONFIG_COMPLETE_GENES_FILE: str( + _TESTDATA / "test_cbioportal_ncbi_grch37_transcripts.fa"), + CancerGenomesService.CONFIG_OUTPUT_FILE: str(output_path), + CancerGenomesService.CONFIG_GFF_FILE: str( + _TESTDATA / "test_cbioportal_ncbi_grch37.gff"), + CancerGenomesService.CLINICAL_SAMPLE_FILE: str( + _TESTDATA / "test_cbioportal_grch37_clinical_sample.txt"), + CancerGenomesService.SPLIT_BY_FILTER_COLUMN: True, + }) + service.cbioportal_to_proteindb() + return output_path + + def test_split_creates_group_file(self, tmp_path): + output_path = self._run_split(tmp_path) + group_file = output_path.with_name("proteindb_BreastCancer.fa") + assert group_file.exists(), "Expected per-group output file for BreastCancer" + assert group_file.stat().st_size > 0 + + def test_split_group_file_matches_reference(self, tmp_path): + output_path = self._run_split(tmp_path) + group_file = output_path.with_name("proteindb_BreastCancer.fa") + + expected = {r.id for r in SeqIO.parse( + str(_TESTDATA / "test_cbioportal_grch37_proteindb_BreastCancer.fa"), "fasta")} + actual = {r.id for r in SeqIO.parse(str(group_file), "fasta")} + assert actual == expected + + def test_split_group_is_subset_of_main_output(self, tmp_path): + output_path = self._run_split(tmp_path) + group_file = output_path.with_name("proteindb_BreastCancer.fa") + + main_ids = {r.id for r in SeqIO.parse(str(output_path), "fasta")} + group_ids = {r.id for r in SeqIO.parse(str(group_file), "fasta")} + assert group_ids.issubset(main_ids) + + def test_split_unknown_sample_produces_empty_output(self, tmp_path): + """Samples absent from the clinical file are skipped when split_by_filter_column=True.""" + clinical_path = tmp_path / "clinical.txt" + clinical_path.write_text("SAMPLE_ID\tCANCER_TYPE\nSAMPLE_OTHER\tBreast Cancer\n") + + service, output_path = _make_service( + tmp_path, _FASTA, + [_MAF_HEADER, _MISSENSE_ROW], + extra_args={ + CancerGenomesService.SPLIT_BY_FILTER_COLUMN: True, + CancerGenomesService.CLINICAL_SAMPLE_FILE: str(clinical_path), + }, + ) + service.cbioportal_to_proteindb() + + records = list(SeqIO.parse(str(output_path), "fasta")) + assert records == [], "Unknown sample must produce no output when split_by_filter_column=True" + + +class TestRealDataHgvsVerification: + """Verify pipeline output against HGVSp annotations using real TCGA BRCA data. + + Each test runs cbioportal_to_proteindb on real GRCh37/GRCh38 NCBI data and + checks that every translated protein matches its annotated HGVSp: + - missense: exact amino acid at the mutated position + - frameshift: prefix up to mutation site is identical to reference translation + """ + + def _run(self, tmp_path, mutations, fasta, gff): + output_path = tmp_path / "proteindb.fa" + service = CancerGenomesService({}, { + CancerGenomesService.CONFIG_CANCER_GENOMES_MUTATION_FILE: str(mutations), + CancerGenomesService.CONFIG_COMPLETE_GENES_FILE: str(fasta), + CancerGenomesService.CONFIG_OUTPUT_FILE: str(output_path), + CancerGenomesService.CONFIG_GFF_FILE: str(gff), + }) + service.cbioportal_to_proteindb() + return {r.id: str(r.seq) + for r in SeqIO.parse(str(output_path), "fasta")} + + def test_grch37_hgvsp_verification(self, tmp_path): + prots = self._run( + tmp_path, + _TESTDATA / "test_cbioportal_grch37_mutations.txt", + _TESTDATA / "test_cbioportal_ncbi_grch37_transcripts.fa", + _TESTDATA / "test_cbioportal_ncbi_grch37.gff", + ) + fa = _TESTDATA / "test_cbioportal_ncbi_grch37_transcripts.fa" + + # CDC20 p.H410Y — missense SNP, position 410 His→Tyr + key = "cbiomut:NM_001255:CDC20:p.H410Y:Missense_Mutation" + assert key in prots, "CDC20 p.H410Y entry missing" + ref = _translate_ref_cds(fa, "NM_001255") + mut = prots[key] + assert ref[409] == "H", "CDC20 ref pos 410 should be His" + assert mut[409] == "Y", "CDC20 mut pos 410 should be Tyr (p.H410Y)" + assert ref[400:409] == mut[400:409], "CDC20 flanking residues 401-409 unchanged" + + # GOLGA2 p.A167V — missense SNP, position 167 Ala→Val + key = "cbiomut:NM_004486:GOLGA2:p.A167V:Missense_Mutation" + assert key in prots, "GOLGA2 p.A167V entry missing" + ref = _translate_ref_cds(fa, "NM_004486") + mut = prots[key] + assert ref[166] == "A", "GOLGA2 ref pos 167 should be Ala" + assert mut[166] == "V", "GOLGA2 mut pos 167 should be Val (p.A167V)" + assert ref[157:166] == mut[157:166], "GOLGA2 flanking residues 158-166 unchanged" + + # EP300 p.M1339Ifs*2 — frameshift insertion, prefix 1-1338 identical + key = "cbiomut:NM_001429:EP300:p.M1339Ifs*2:Frame_Shift_Ins" + assert key in prots, "EP300 p.M1339Ifs*2 entry missing" + ref = _translate_ref_cds(fa, "NM_001429") + mut = prots[key] + assert mut[:1338] == ref[:1338], "EP300 prefix 1-1338 should match reference" + assert mut[1338:1342] != ref[1338:1342], "EP300 residues after frameshift should differ" + + # TBX3 p.Y265Lfs*12 — frameshift deletion, prefix 1-264 identical + key = "cbiomut:NM_016569:TBX3:p.Y265Lfs*12:Frame_Shift_Del" + assert key in prots, "TBX3 p.Y265Lfs*12 entry missing" + ref = _translate_ref_cds(fa, "NM_016569") + mut = prots[key] + assert mut[:264] == ref[:264], "TBX3 prefix 1-264 should match reference" + assert mut[264] != ref[264], "TBX3 position 265 should differ (Y265L frameshift)" + + # PLK2 p.R387Sfs*3 — frameshift deletion, prefix 1-386 identical + key = "cbiomut:NM_006622:PLK2:p.R387Sfs*3:Frame_Shift_Del" + assert key in prots, "PLK2 p.R387Sfs*3 entry missing" + ref = _translate_ref_cds(fa, "NM_006622") + mut = prots[key] + assert mut[:386] == ref[:386], "PLK2 prefix 1-386 should match reference" + assert mut[386] != ref[386], "PLK2 position 387 should differ (R387S frameshift)" + + # KHDRBS1 p.E143del — in-frame deletion: one AA shorter, prefix 1-142 intact, suffix shifts left by 1 + key = "cbiomut:NM_006559:KHDRBS1:p.E143del:In_Frame_Del" + assert key in prots, "KHDRBS1 p.E143del entry missing" + ref = _translate_ref_cds(fa, "NM_006559") + mut = prots[key] + assert len(mut) == len(ref) - 1, "KHDRBS1 p.E143del: protein should be 1 AA shorter" + assert ref[142] == "E", "KHDRBS1 ref position 143 should be Glu" + assert mut[:142] == ref[:142], "KHDRBS1 prefix 1-142 should match reference" + assert mut[142:150] == ref[143:151], "KHDRBS1 suffix after deletion should shift left by 1" + + # FLNB p.S2107dup — in-frame insertion: one AA longer, C-terminal suffix preserved + key = "cbiomut:NM_001457:FLNB:p.S2107dup:In_Frame_Ins" + assert key in prots, "FLNB p.S2107dup entry missing" + ref = _translate_ref_cds(fa, "NM_001457") + mut = prots[key] + assert len(mut) == len(ref) + 1, "FLNB p.S2107dup: protein should be 1 AA longer" + assert ref[2106] == "S", "FLNB ref position 2107 should be Ser" + assert mut[-50:] == ref[-50:], "FLNB C-terminal 50 AA should be unchanged after insertion" + + # HNRNPH3 p.*347Sext*32 — nonstop: stop codon at 347 replaced by AA; extension into 3'UTR not modelled + key = "cbiomut:NM_012207:HNRNPH3:p.*347Sext*32:Nonstop_Mutation" + assert key in prots, "HNRNPH3 p.*347Sext*32 entry missing" + ref = _translate_ref_cds(fa, "NM_012207") + mut = prots[key] + assert ref[346] == "*", "HNRNPH3 ref position 347 should be stop (*)" + assert mut[346] != "*", "HNRNPH3 mut position 347 should be a non-stop AA" + assert mut[:346] == ref[:346], "HNRNPH3 prefix 1-346 should match reference" + + def test_grch38_hgvsp_verification(self, tmp_path): + prots = self._run( + tmp_path, + _TESTDATA / "test_cbioportal_grch38_mutations.txt", + _TESTDATA / "test_cbioportal_ncbi_grch38_transcripts.fa", + _TESTDATA / "test_cbioportal_ncbi_grch38.gff", + ) + fa = _TESTDATA / "test_cbioportal_ncbi_grch38_transcripts.fa" + + # EP300 p.M1339Ifs*2 — frameshift insertion, prefix 1-1338 identical + key = "cbiomut:NM_001429:EP300:p.M1339Ifs*2:Frame_Shift_Ins" + assert key in prots, "EP300 p.M1339Ifs*2 entry missing (GRCh38)" + ref = _translate_ref_cds(fa, "NM_001429") + mut = prots[key] + assert mut[:1338] == ref[:1338], "EP300 prefix 1-1338 should match reference (GRCh38)" + assert mut[1338:1342] != ref[1338:1342], "EP300 residues after frameshift should differ (GRCh38)" + + # TBX3 p.Y265Lfs*17 — frameshift deletion, prefix 1-264 identical + key = "cbiomut:NM_016569:TBX3:p.Y265Lfs*17:Frame_Shift_Del" + assert key in prots, "TBX3 p.Y265Lfs*17 entry missing (GRCh38)" + ref = _translate_ref_cds(fa, "NM_016569") + mut = prots[key] + assert mut[:264] == ref[:264], "TBX3 prefix 1-264 should match reference (GRCh38)" + assert mut[264] != ref[264], "TBX3 position 265 should differ (GRCh38)" + + # PLK2 p.R387Sfs*3 — frameshift deletion, prefix 1-386 identical + key = "cbiomut:NM_006622:PLK2:p.R387Sfs*3:Frame_Shift_Del" + assert key in prots, "PLK2 p.R387Sfs*3 entry missing (GRCh38)" + ref = _translate_ref_cds(fa, "NM_006622") + mut = prots[key] + assert mut[:386] == ref[:386], "PLK2 prefix 1-386 should match reference (GRCh38)" + assert mut[386] != ref[386], "PLK2 position 387 should differ (GRCh38)" + + # KHDRBS1 p.E143del — in-frame deletion, prefix 1-142 intact, 1 AA shorter + key = "cbiomut:NM_006559:KHDRBS1:p.E143del:In_Frame_Del" + assert key in prots, "KHDRBS1 p.E143del entry missing (GRCh38)" + ref = _translate_ref_cds(fa, "NM_006559") + mut = prots[key] + assert len(mut) == len(ref) - 1, "KHDRBS1 p.E143del: protein should be 1 AA shorter (GRCh38)" + assert ref[142] == "E", "KHDRBS1 ref position 143 should be Glu (GRCh38)" + assert mut[:142] == ref[:142], "KHDRBS1 prefix 1-142 should match reference (GRCh38)" + assert mut[142:150] == ref[143:151], "KHDRBS1 suffix after deletion should shift left by 1 (GRCh38)" + + # PIK3R1 p.K575_T576dup — in-frame insertion: 2 AAs longer (6-nt insertion), C-terminal preserved + key = "cbiomut:NM_181523:PIK3R1:p.K575_T576dup:In_Frame_Ins" + assert key in prots, "PIK3R1 p.K575_T576dup entry missing (GRCh38)" + ref = _translate_ref_cds(fa, "NM_181523") + mut = prots[key] + assert len(mut) == len(ref) + 2, "PIK3R1 p.K575_T576dup: protein should be 2 AAs longer (GRCh38)" + assert mut[-50:] == ref[-50:], "PIK3R1 C-terminal 50 AA should be unchanged after insertion (GRCh38)" + + # TNK2 p.*1039Sext*15 — nonstop: stop at 1039 becomes non-stop AA; 3'UTR extension not modelled + key = "cbiomut:NM_005781:TNK2:p.*1039Sext*15:Nonstop_Mutation" + assert key in prots, "TNK2 p.*1039Sext*15 entry missing (GRCh38)" + ref = _translate_ref_cds(fa, "NM_005781") + mut = prots[key] + assert ref[1038] == "*", "TNK2 ref position 1039 should be stop (*) (GRCh38)" + assert mut[1038] != "*", "TNK2 mut position 1039 should be a non-stop AA (GRCh38)" + assert mut[:1038] == ref[:1038], "TNK2 prefix 1-1038 should match reference (GRCh38)" diff --git a/pgatk/tests/test_clinvar/test_clinvar_integration.py b/pgatk/tests/test_clinvar/test_clinvar_integration.py index cf7b5861..e959e5b2 100644 --- a/pgatk/tests/test_clinvar/test_clinvar_integration.py +++ b/pgatk/tests/test_clinvar/test_clinvar_integration.py @@ -16,13 +16,13 @@ def clinvar_testdata(tmp_path): """Copy ClinVar test data to tmp_path so gffutils .db files are isolated. - gffutils creates a ``.db`` file next to the GTF. By copying the GTF - into *tmp_path* we avoid polluting the source tree and ensure each test run - starts from a clean state. + gffutils creates a ``.db`` file next to the annotation file. By + copying into *tmp_path* we avoid polluting the source tree and ensure each + test run starts from a clean state. """ for name in ( "mini_clinvar.vcf", - "mini_refseq.gtf", + "mini_refseq.gff", "mini_refseq_protein.faa", "mini_assembly_report.txt", ): @@ -39,7 +39,7 @@ def test_cli_produces_output(self, tmp_path, clinvar_testdata): result = runner.invoke(cli, [ "clinvar-to-proteindb", "--vcf", str(clinvar_testdata / "mini_clinvar.vcf"), - "--gtf", str(clinvar_testdata / "mini_refseq.gtf"), + "--gff", str(clinvar_testdata / "mini_refseq.gff"), "--fasta", str(clinvar_testdata / "mini_refseq_protein.faa"), "--assembly-report", str(clinvar_testdata / "mini_assembly_report.txt"), "--output", str(output_file), @@ -72,7 +72,7 @@ def test_cli_filters_synonymous_variants(self, tmp_path, clinvar_testdata): result = runner.invoke(cli, [ "clinvar-to-proteindb", "--vcf", str(clinvar_testdata / "mini_clinvar.vcf"), - "--gtf", str(clinvar_testdata / "mini_refseq.gtf"), + "--gff", str(clinvar_testdata / "mini_refseq.gff"), "--fasta", str(clinvar_testdata / "mini_refseq_protein.faa"), "--assembly-report", str(clinvar_testdata / "mini_assembly_report.txt"), "--output", str(output_file), @@ -91,7 +91,7 @@ def test_pipeline_output_contains_clnsig_in_header(self, tmp_path, clinvar_testd result = runner.invoke(cli, [ "clinvar-to-proteindb", "--vcf", str(clinvar_testdata / "mini_clinvar.vcf"), - "--gtf", str(clinvar_testdata / "mini_refseq.gtf"), + "--gff", str(clinvar_testdata / "mini_refseq.gff"), "--fasta", str(clinvar_testdata / "mini_refseq_protein.faa"), "--assembly-report", str(clinvar_testdata / "mini_assembly_report.txt"), "--output", str(output_file), diff --git a/pgatk/tests/test_clinvar/test_clinvar_service.py b/pgatk/tests/test_clinvar/test_clinvar_service.py index 5f5e84bd..1c480988 100644 --- a/pgatk/tests/test_clinvar/test_clinvar_service.py +++ b/pgatk/tests/test_clinvar/test_clinvar_service.py @@ -11,7 +11,7 @@ TESTDATA_DIR = Path(__file__).resolve().parent.parent.parent / "testdata" / "clinvar" MINI_VCF = str(TESTDATA_DIR / "mini_clinvar.vcf") -MINI_GTF = str(TESTDATA_DIR / "mini_refseq.gtf") +MINI_GFF = str(TESTDATA_DIR / "mini_refseq.gff") MINI_FASTA = str(TESTDATA_DIR / "mini_refseq_protein.faa") ASSEMBLY_REPORT = str(TESTDATA_DIR / "mini_assembly_report.txt") @@ -200,7 +200,7 @@ class TestClinVarPipeline: @pytest.fixture(autouse=True) def _cleanup_db(self): """Remove gffutils DB before/after test to ensure fresh state.""" - db_path = Path(MINI_GTF).with_suffix(".db") + db_path = Path(MINI_GFF).with_suffix(".db") if db_path.exists(): db_path.unlink() yield @@ -212,7 +212,7 @@ def test_pipeline_produces_output(self, tmp_path): output_file = str(tmp_path / "output.fa") service = ClinVarService( vcf_file=MINI_VCF, - gtf_file=MINI_GTF, + gff_file=MINI_GFF, fasta_file=MINI_FASTA, assembly_report=ASSEMBLY_REPORT, output_file=output_file, @@ -228,7 +228,7 @@ def test_benign_variant_excluded(self, tmp_path): output_file = str(tmp_path / "output.fa") service = ClinVarService( vcf_file=MINI_VCF, - gtf_file=MINI_GTF, + gff_file=MINI_GFF, fasta_file=MINI_FASTA, assembly_report=ASSEMBLY_REPORT, output_file=output_file, @@ -244,7 +244,7 @@ def test_pathogenic_variant_present(self, tmp_path): output_file = str(tmp_path / "output.fa") service = ClinVarService( vcf_file=MINI_VCF, - gtf_file=MINI_GTF, + gff_file=MINI_GFF, fasta_file=MINI_FASTA, assembly_report=ASSEMBLY_REPORT, output_file=output_file, @@ -260,7 +260,7 @@ def test_likely_pathogenic_variant_present(self, tmp_path): output_file = str(tmp_path / "output.fa") service = ClinVarService( vcf_file=MINI_VCF, - gtf_file=MINI_GTF, + gff_file=MINI_GFF, fasta_file=MINI_FASTA, assembly_report=ASSEMBLY_REPORT, output_file=output_file, @@ -276,7 +276,7 @@ def test_synonymous_variant_excluded(self, tmp_path): output_file = str(tmp_path / "output.fa") service = ClinVarService( vcf_file=MINI_VCF, - gtf_file=MINI_GTF, + gff_file=MINI_GFF, fasta_file=MINI_FASTA, assembly_report=ASSEMBLY_REPORT, output_file=output_file, @@ -293,34 +293,32 @@ def test_synonymous_variant_excluded(self, tmp_path): class TestBuildOverlapMap: - """Tests for _build_overlap_map (DataFrame-based BedTools annotation).""" + """Tests for _build_overlap_map.""" @pytest.fixture(autouse=True) def _cleanup_db(self): - db_path = Path(MINI_GTF).with_suffix(".db") + db_path = Path(MINI_GFF).with_suffix(".db") if db_path.exists(): db_path.unlink() yield if db_path.exists(): db_path.unlink() - def test_build_overlap_map_from_dataframe(self): - """_build_overlap_map should accept a DataFrame and return overlap dict.""" + def test_build_overlap_map_from_records(self): + """_build_overlap_map should accept a list of VCFRecords and return overlap dict.""" from pgatk.clinvar.chromosome_mapper import ChromosomeMapper chrom_mapper = ChromosomeMapper.from_assembly_report(ASSEMBLY_REPORT) - _meta, vcf_df = ClinVarService._read_vcf(MINI_VCF) - overlap_map = ClinVarService._build_overlap_map(vcf_df, MINI_GTF, chrom_mapper) + _meta, vcf_records = ClinVarService._read_vcf(MINI_VCF) + overlap_map = ClinVarService._build_overlap_map(vcf_records, MINI_GFF, chrom_mapper) assert isinstance(overlap_map, dict) - # rs00001 at chr1:1006 should overlap NM_000001.1 CDS (1000-1299) - assert any("1:1006:" in k for k in overlap_map) + # rs00001 at chr1:69500 should overlap NM_001005484.2 CDS (69037-70008) + assert any("1:69500:" in k for k in overlap_map) - def test_build_overlap_map_empty_df(self): - """Empty DataFrame should return empty dict.""" - import pandas as pd + def test_build_overlap_map_empty_list(self): + """Empty record list should return empty dict.""" from pgatk.clinvar.chromosome_mapper import ChromosomeMapper chrom_mapper = ChromosomeMapper.from_assembly_report(ASSEMBLY_REPORT) - empty_df = pd.DataFrame(columns=["CHROM", "POS", "ID", "REF", "ALT", "QUAL", "FILTER", "INFO"]) - overlap_map = ClinVarService._build_overlap_map(empty_df, MINI_GTF, chrom_mapper) + overlap_map = ClinVarService._build_overlap_map([], MINI_GFF, chrom_mapper) assert overlap_map == {} @@ -334,7 +332,7 @@ class TestBiotypeFiltering: @pytest.fixture(autouse=True) def _cleanup_db(self): - db_path = Path(MINI_GTF).with_suffix(".db") + db_path = Path(MINI_GFF).with_suffix(".db") if db_path.exists(): db_path.unlink() yield @@ -343,21 +341,21 @@ def _cleanup_db(self): def test_get_biotype_from_db(self): """_get_transcript_biotype should extract gene_biotype from gffutils DB.""" - db = ClinVarService._parse_gtf(MINI_GTF) - biotype = ClinVarService._get_transcript_biotype(db, "NM_000001.1") + db = ClinVarService._parse_gtf(MINI_GFF) + biotype = ClinVarService._get_transcript_biotype(db, "NM_001005484.2") assert biotype == "protein_coding" def test_get_biotype_missing_returns_empty(self): """Missing transcript returns empty string.""" - db = ClinVarService._parse_gtf(MINI_GTF) + db = ClinVarService._parse_gtf(MINI_GFF) biotype = ClinVarService._get_transcript_biotype(db, "NONEXISTENT") assert biotype == "" def test_get_biotype_without_version(self): """Should find transcript even without version number.""" - db = ClinVarService._parse_gtf(MINI_GTF) - # NM_000001 without .1 should still find NM_000001.1 - biotype = ClinVarService._get_transcript_biotype(db, "NM_000001") + db = ClinVarService._parse_gtf(MINI_GFF) + # NM_001005484 without .2 should still find NM_001005484.2 + biotype = ClinVarService._get_transcript_biotype(db, "NM_001005484") assert biotype == "protein_coding" @@ -371,7 +369,7 @@ class TestDuplicateGuard: @pytest.fixture(autouse=True) def _cleanup_db(self): - db_path = Path(MINI_GTF).with_suffix(".db") + db_path = Path(MINI_GFF).with_suffix(".db") if db_path.exists(): db_path.unlink() yield @@ -383,7 +381,7 @@ def test_no_duplicate_fasta_entries(self, tmp_path): output_file = str(tmp_path / "output.fa") service = ClinVarService( vcf_file=MINI_VCF, - gtf_file=MINI_GTF, + gff_file=MINI_GFF, fasta_file=MINI_FASTA, assembly_report=ASSEMBLY_REPORT, output_file=output_file, diff --git a/pgatk/tests/test_clinvar/test_clinvar_translation.py b/pgatk/tests/test_clinvar/test_clinvar_translation.py new file mode 100644 index 00000000..57f524e6 --- /dev/null +++ b/pgatk/tests/test_clinvar/test_clinvar_translation.py @@ -0,0 +1,532 @@ +"""Tests for ClinVar-to-proteindb variant translation, covering all mutation types. + +Unit tests (TestGetAltseq*) exercise get_altseq() + get_orfs_vcf() directly +with synthetic sequences of known structure — no file I/O required. + +Multi-exon tests (TestGetAltseqMultiExon) use the mini ISG15 CDS FASTA +(clinvar_isg15_cds.fna, CDS=1-495) from pgatk/testdata/clinvar/. + +Integration tests (TestClinVarISG15Integration) run the full ClinVarService +pipeline against the same mini ISG15 testdata. + +Real variant sources used (all ISG15, NM_005101.4): + missense chr1:1013997 C>A ClinVar ID 1035971 (Uncertain_significance) + stop_gained chr1:1014026 C>T engineered from codon 16 CAG→TAG + inframe_del chr1:1014223 TCTGAGCATC>T ClinVar ID 915424 (Uncertain_significance) + frameshift chr1:1014316 C>CG ClinVar ID 161455 (Pathogenic) + inframe_ins chr1:1014459 A>AGCCCGT ClinVar ID 1038082 (Uncertain_significance) + benign chr1:1013541 T>C ClinVar ID 1185394 (Benign — filtered out) +""" +from __future__ import annotations + +import shutil +import warnings +from pathlib import Path + +import pytest +from Bio.Seq import Seq + +from pgatk.toolbox.vcf_utils import get_altseq, get_orfs_vcf + +# --------------------------------------------------------------------------- +# Paths +# --------------------------------------------------------------------------- + +TESTDATA_DIR = Path(__file__).resolve().parent.parent.parent / "testdata" / "clinvar" + +# --------------------------------------------------------------------------- +# Unit-test shared fixture +# --------------------------------------------------------------------------- +# Synthetic 18-bp single-CDS-exon transcript on + strand. +# +# mRNA: A T G A A A C C C G G G T T T T G G +# pos: 1000 ... 1017 (genomic, 1-based) +# codons: ATG(M) AAA(K) CCC(P) GGG(G) TTT(F) TGG(W) +# protein: M K P G F W +# +# cds_info = [1, 18] means the whole sequence is CDS (no UTR). +# features_info lists the single exon in gffutils format [[start, end, type]]. + +SYNTH_SEQ = Seq("ATGAAACCCGGGTTTTGG") +SYNTH_FEATURES = [[1000, 1017, "CDS"]] +SYNTH_CDS_INFO = [1, 18] +SYNTH_REF_PROTEIN = "MKPGFW" # translate(to_stop=False) + +# For minus-strand tests the same sequence occupies pos 2000-2017 on the +# reverse strand (complement is read right-to-left). +SYNTH_MINUS_FEATURES = [[2000, 2017, "CDS"]] + +# ISG15 CDS exon features used in multi-exon and integration tests. +# Genomic coords (1-based, gffutils style): +# exon 1: NC_000001.11 1013574–1013576 (3 bp) +# exon 2: NC_000001.11 1013984–1014475 (492 bp) +ISG15_CDS_EXONS = [[1013574, 1013576, "CDS"], [1013984, 1014475, "CDS"]] +ISG15_CDS_INFO = [1, 495] # CDS=1-495 matches clinvar_isg15_cds.fna (CDS-only FASTA) + + +def _translate(seq: Seq) -> str: + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + return str(seq.translate(to_stop=False)) + + +def _altseq_and_protein(ref_seq, ref_allele, alt_allele, pos, + strand="+", features=None, cds_info=None): + features = features or SYNTH_FEATURES + cds_info = cds_info or SYNTH_CDS_INFO + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + coding_ref, coding_alt = get_altseq( + ref_seq, Seq(ref_allele), Seq(alt_allele), + pos, strand, features, cds_info, + ) + ref_orfs, alt_orfs = get_orfs_vcf(coding_ref, coding_alt, 1, 1) + return str(ref_orfs[0]), str(alt_orfs[0]) + + +# =========================================================================== +# TestGetAltseqMissense +# =========================================================================== + +class TestGetAltseqMissense: + """SNP that substitutes one amino acid without altering protein length.""" + + def test_missense_changes_single_amino_acid(self): + """pos 1003 A>C changes codon 2 AAA(K) → CAA(Q).""" + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "A", "C", 1003) + assert len(ref_p) == len(alt_p), "missense must not alter protein length" + assert ref_p[1] == "K" + assert alt_p[1] == "Q" + + def test_missense_leaves_surrounding_aas_unchanged(self): + """Residues outside the mutated codon must be identical.""" + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "A", "C", 1003) + assert ref_p[0] == alt_p[0] == "M" + assert ref_p[2:] == alt_p[2:] + + def test_missense_ref_protein_matches_known_sequence(self): + ref_p, _ = _altseq_and_protein(SYNTH_SEQ, "A", "C", 1003) + assert ref_p == SYNTH_REF_PROTEIN + + def test_missense_at_last_codon(self): + """SNP in the final coding codon TGG(W) → AGG(R): pos 1015 T>A. + + pos 1015 = index 15 = first base of the last codon (TGG = Trp). + Using REF='T' (the actual base) and ALT='A' → AGG (Arg). + """ + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "T", "A", 1015) + assert ref_p[-1] == "W" + assert alt_p[-1] == "R" + assert ref_p[:-1] == alt_p[:-1] + + def test_same_ref_alt_returns_identical_proteins(self): + """When REF == ALT the output proteins must be identical.""" + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "A", "A", 1003) + assert ref_p == alt_p + + +# =========================================================================== +# TestGetAltseqStopGained +# =========================================================================== + +class TestGetAltseqStopGained: + """SNP that introduces a premature stop codon.""" + + def test_stop_gained_inserts_stop_at_mutated_position(self): + """pos 1003 A>T changes codon 2 AAA(K) → TAA(*): stop at position 1.""" + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "A", "T", 1003) + assert ref_p[1] == "K" + assert alt_p[1] == "*", "codon 2 should become a stop codon" + + def test_stop_gained_protein_length_equal_with_to_stop_false(self): + """translate(to_stop=False) keeps the full-length sequence including '*'.""" + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "A", "T", 1003) + assert len(ref_p) == len(alt_p) + + def test_stop_gained_sequence_before_stop_unchanged(self): + """Amino acids before the stop codon must be identical to reference.""" + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "A", "T", 1003) + assert alt_p[0] == ref_p[0] == "M" + + def test_stop_gained_at_first_coding_codon(self): + """SNP that destroys the start methionine context is still handled.""" + # pos 1001 T>A changes codon 1 ATG → AAG (not a stop, but tests boundary) + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "T", "A", 1001) + assert ref_p[0] == "M" + assert alt_p[0] == "K" + + +# =========================================================================== +# TestGetAltseqFrameshiftVariant +# =========================================================================== + +class TestGetAltseqFrameshiftVariant: + """Single-base indels that shift the reading frame.""" + + def test_frameshift_insertion_changes_downstream_aas(self): + """Inserting G at pos 1006 (between codon 2 and 3) shifts frame from codon 3.""" + # alt: ATGAAA TG CCGGGTTTTGG → MKCRVL... + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "T", "TG", 1006) + assert ref_p[:2] == alt_p[:2] == "MK", "first 2 codons precede the insertion" + assert ref_p[2] != alt_p[2], "codon 3 must change due to frameshift" + + def test_frameshift_deletion_changes_downstream_aas(self): + """Deleting one A at pos 1004 (within codon 2) shifts frame from codon 2.""" + # REF=AA ALT=A → delete second base of codon 2 + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "AA", "A", 1003) + assert ref_p[0] == alt_p[0] == "M" + assert ref_p[1] != alt_p[1], "codon 2 must change due to frameshift" + + def test_frameshift_insertion_alters_protein_length(self): + """A +1 insertion shifts the reading frame from codon 3 onward. + + 18 bp + 1 inserted base = 19 bp. Biopython drops the trailing 1-base + partial codon so both ref and alt translate to 6 aa — lengths are equal. + The real frameshift signature is that all residues from the insertion + point onward differ, which is the invariant we assert here. + """ + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "T", "TG", 1006) + assert ref_p[:2] == alt_p[:2] == "MK", "first 2 AAs precede the insertion" + assert ref_p[2:] != alt_p[2:], "all residues from insertion point must change" + + def test_frameshift_proteins_are_different(self): + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "T", "TG", 1006) + assert ref_p != alt_p + + +# =========================================================================== +# TestGetAltseqInframeDeletion +# =========================================================================== + +class TestGetAltseqInframeDeletion: + """Deletion of a multiple-of-3 bases: removes whole codons, no frame shift.""" + + def test_inframe_deletion_shortens_protein_by_one_aa(self): + """Delete codon 2 (AAA) via GAAA>G at pos 1002; protein loses K.""" + # REF=GAAA ALT=G → delete positions 1003-1005 + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "GAAA", "G", 1002) + assert len(alt_p) == len(ref_p) - 1 + assert "K" in ref_p + # K should no longer appear at position 1 + assert alt_p[1] != "K" + + def test_inframe_deletion_preserves_flanking_aas(self): + """Start Met and codons after the deletion must be preserved.""" + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "GAAA", "G", 1002) + assert alt_p[0] == "M" + # Codons 3-6 of ref → codons 2-5 of alt (P G F W) + assert alt_p[1:] == "PGFW" + + def test_inframe_deletion_six_bases_removes_two_aas(self): + """Delete 6 bases (codons 2-3: AAA CCC) via GAAACCC>G.""" + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "GAAACCC", "G", 1002) + assert len(alt_p) == len(ref_p) - 2 + assert alt_p == "MGFW" + + +# =========================================================================== +# TestGetAltseqInframeInsertion +# =========================================================================== + +class TestGetAltseqInframeInsertion: + """Insertion of a multiple-of-3 bases: adds whole codons, no frame shift.""" + + def test_inframe_insertion_lengthens_protein_by_one_aa(self): + """Insert CAT (His) after codon 2 via A>ACAT at pos 1005.""" + # alt: ATGAAA CAT CCCGGGTTTTGG → MKHPGFW + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "A", "ACAT", 1005) + assert len(alt_p) == len(ref_p) + 1 + + def test_inframe_insertion_adds_correct_amino_acid(self): + """CAT encodes His (H); it should appear between position 2 and 3.""" + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "A", "ACAT", 1005) + assert alt_p == "MKHPGFW" + + def test_inframe_insertion_preserves_flanking_aas(self): + """Codons before and after the insertion must be unchanged.""" + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "A", "ACAT", 1005) + assert alt_p[:2] == "MK" + assert alt_p[3:] == "PGFW" + + def test_inframe_insertion_six_bases_adds_two_aas(self): + """Insert CATGGG (His + Gly) via A>ACATGGG at pos 1005.""" + ref_p, alt_p = _altseq_and_protein(SYNTH_SEQ, "A", "ACATGGG", 1005) + assert len(alt_p) == len(ref_p) + 2 + assert alt_p == "MKHGPGFW" + + +# =========================================================================== +# TestGetAltseqMinusStrand +# =========================================================================== + +class TestGetAltseqMinusStrand: + """Variant application on reverse-complement (minus) strand transcripts.""" + + def test_minus_strand_missense_changes_protein(self): + """The same SNP applied to a minus-strand gene changes a codon.""" + # Minus-strand gene: genomic pos 2000-2017, sequence complement read right-to-left. + # The ref_seq for get_altseq is still the mRNA (5'→3'). + ref_p, alt_p = _altseq_and_protein( + SYNTH_SEQ, "A", "C", 2014, + strand="-", features=SYNTH_MINUS_FEATURES, + ) + assert ref_p != alt_p + + def test_minus_strand_ref_protein_same_length(self): + """A missense on minus strand must not alter protein length.""" + ref_p, alt_p = _altseq_and_protein( + SYNTH_SEQ, "A", "C", 2014, + strand="-", features=SYNTH_MINUS_FEATURES, + ) + assert len(ref_p) == len(alt_p) + + +# =========================================================================== +# TestGetAltseqMultiExon — uses ISG15 CDS exon structure +# =========================================================================== + +class TestGetAltseqMultiExon: + """Variant handling across a real two-exon CDS (ISG15 NM_005101.4).""" + + @pytest.fixture(autouse=True) + def _load_isg15(self): + """Load ISG15 CDS from the mini testdata FASTA.""" + from Bio import SeqIO + fasta = TESTDATA_DIR / "clinvar_isg15_cds.fna" + idx = SeqIO.index(str(fasta), "fasta") + self.isg15_seq = idx["NM_005101.4"].seq + + def test_missense_in_exon2_changes_protein(self): + """chr1:1013997 C>A (in CDS exon 2, ClinVar ID 1035971) changes AA 6. + + var_index_in_cds = 3 (exon1 length) + (1013997 - 1013984) = 16. + Codon index = 16 // 3 = 5 → 0-based protein index 5 (the 6th AA). + """ + ref_p, alt_p = _altseq_and_protein( + self.isg15_seq, "C", "A", 1013997, + features=ISG15_CDS_EXONS, cds_info=ISG15_CDS_INFO, + ) + assert ref_p != alt_p + assert len(ref_p) == len(alt_p), "missense must not alter length" + assert ref_p[5] != alt_p[5], "change should be at AA position 6 (index 5)" + + def test_stop_gained_creates_premature_stop(self): + """chr1:1014026 C>T (codon 16 CAG→TAG) inserts stop at AA 15 (index).""" + ref_p, alt_p = _altseq_and_protein( + self.isg15_seq, "C", "T", 1014026, + features=ISG15_CDS_EXONS, cds_info=ISG15_CDS_INFO, + ) + assert alt_p[15] == "*", "codon 16 (index 15) must become a stop" + assert ref_p[15] != "*" + + def test_frameshift_insertion_diverges_at_cds_position_113(self): + """chr1:1014316 C>CG (ClinVar ID 161455, Pathogenic) shifts frame at AA 113.""" + ref_p, alt_p = _altseq_and_protein( + self.isg15_seq, "C", "CG", 1014316, + features=ISG15_CDS_EXONS, cds_info=ISG15_CDS_INFO, + ) + assert ref_p[:113] == alt_p[:113], "residues before frameshift must be unchanged" + assert ref_p[113] != alt_p[113], "residue 113 must diverge after frameshift" + + def test_inframe_deletion_shortens_protein_by_3aa(self): + """chr1:1014223 TCTGAGCATC>T (ClinVar ID 915424) removes 3 aa (9 bp del).""" + ref_p, alt_p = _altseq_and_protein( + self.isg15_seq, "TCTGAGCATC", "T", 1014223, + features=ISG15_CDS_EXONS, cds_info=ISG15_CDS_INFO, + ) + assert len(alt_p) == len(ref_p) - 3 + + def test_inframe_insertion_lengthens_protein_by_2aa(self): + """chr1:1014459 A>AGCCCGT (ClinVar ID 1038082) inserts 2 aa (6 bp ins).""" + ref_p, alt_p = _altseq_and_protein( + self.isg15_seq, "A", "AGCCCGT", 1014459, + features=ISG15_CDS_EXONS, cds_info=ISG15_CDS_INFO, + ) + assert len(alt_p) == len(ref_p) + 2 + + def test_variant_in_exon1_cds_is_handled(self): + """A variant overlapping the tiny 3-bp CDS exon 1 must still be applied.""" + # CDS exon 1 spans genomic 1013574-1013576; pos 1013574 = first CDS base + ref_p, alt_p = _altseq_and_protein( + self.isg15_seq, "A", "T", 1013574, + features=ISG15_CDS_EXONS, cds_info=ISG15_CDS_INFO, + ) + assert ref_p != alt_p + + +# =========================================================================== +# TestClinVarISG15Integration — full pipeline, real ISG15 data +# =========================================================================== + +@pytest.mark.skipif( + not shutil.which("bedtools"), + reason="bedtools not installed", +) +class TestClinVarISG15Integration: + """End-to-end pipeline tests using mini ISG15 testdata. + + Uses clinvar_isg15_cds.fna (header has CDS=1-495) so the service runs 1-frame CDS + translation and produces the canonical ISG15 protein for comparison. + + Each test exercises one mutation type so that every branch of the + ClinVar translation pipeline is covered by at least one real variant. + Benign and Uncertain_significance variants are included to verify that + the default CLNSIG filter behaviour is correct. + """ + + MINI_VCF = str(TESTDATA_DIR / "clinvar_isg15_mutation_types.vcf") + # CDS-only FASTA: entire 495-bp sequence is CDS (CDS=1-495 in header) + _ISG15_CDS_ONLY_INFO = [1, 495] + + @pytest.fixture() + def run_pipeline(self, tmp_path): + """Run ClinVarService using mini ISG15 testdata; returns parsed output.""" + from pgatk.clinvar.clinvar_service import ClinVarService + from Bio import SeqIO + + def _run(output_name="output.fa"): + output_file = str(tmp_path / output_name) + svc = ClinVarService( + vcf_file=self.MINI_VCF, + gff_file=str(TESTDATA_DIR / "clinvar_isg15_cds.gff"), + fasta_file=str(TESTDATA_DIR / "clinvar_isg15_cds.fna"), + assembly_report=str(TESTDATA_DIR / "clinvar_isg15_assembly_report.txt"), + output_file=output_file, + ) + svc.run() + records = {} + if Path(output_file).exists(): + for rec in SeqIO.parse(output_file, "fasta"): + records[rec.id] = str(rec.seq) + return records + + return _run + + def test_pipeline_runs_without_error(self, run_pipeline): + """Service must complete without raising an exception.""" + records = run_pipeline() + assert isinstance(records, dict) + + def test_benign_variant_is_filtered_out(self, run_pipeline): + """CLNSIG=Benign (ID 1185394) must not appear in output.""" + records = run_pipeline() + assert not any("1185394" in k for k in records), ( + "Benign variant 1185394 should be excluded by default CLNSIG filter" + ) + + def test_missense_variant_produces_output(self, run_pipeline): + """CLNSIG=Uncertain_significance missense (ID 1035971) must appear in output.""" + records = run_pipeline() + assert any("1035971" in k for k in records), ( + "missense variant 1035971 (Uncertain_significance) should pass the filter" + ) + + def test_stop_gained_variant_produces_output(self, run_pipeline): + """CLNSIG=Pathogenic stop_gained (ID 9000001) must appear in output.""" + records = run_pipeline() + assert any("9000001" in k for k in records), ( + "stop_gained variant 9000001 (Pathogenic) should produce output" + ) + + def test_frameshift_variant_produces_output(self, run_pipeline): + """CLNSIG=Pathogenic frameshift (ClinVar 161455) must appear in output.""" + records = run_pipeline() + assert any("161455" in k for k in records), ( + "frameshift variant 161455 (Pathogenic) should produce output" + ) + + def test_inframe_deletion_produces_output(self, run_pipeline): + """Inframe deletion (ClinVar 915424, Uncertain_significance) must appear.""" + records = run_pipeline() + assert any("915424" in k for k in records), ( + "inframe_deletion variant 915424 should produce output" + ) + + def test_inframe_insertion_produces_output(self, run_pipeline): + """Inframe insertion (ClinVar 1038082, Uncertain_significance) must appear.""" + records = run_pipeline() + assert any("1038082" in k for k in records), ( + "inframe_insertion variant 1038082 should produce output" + ) + + def test_missense_alt_protein_differs_from_ref_at_single_position(self, run_pipeline): + """The missense alt protein must differ from reference at exactly one AA.""" + from Bio import SeqIO + + records = run_pipeline() + missense_seqs = [seq for k, seq in records.items() if "1035971" in k] + assert missense_seqs, "no output for missense variant" + + idx = SeqIO.index(str(TESTDATA_DIR / "clinvar_isg15_cds.fna"), "fasta") + isg15_seq = idx["NM_005101.4"].seq + ref_p, _ = _altseq_and_protein( + isg15_seq, "C", "C", 1013997, # REF==ALT → identity (reference protein) + features=ISG15_CDS_EXONS, cds_info=self._ISG15_CDS_ONLY_INFO, + ) + alt_p = missense_seqs[0].rstrip("*") + ref_p_stripped = ref_p.rstrip("*") + + diffs = sum(1 for r, a in zip(ref_p_stripped, alt_p) if r != a) + assert diffs == 1, f"missense should change exactly 1 AA, got {diffs}" + + def test_frameshift_protein_diverges_at_expected_position(self, run_pipeline): + """Frameshift alt protein (ID 161455) must match reference up to AA 113.""" + from Bio import SeqIO + + records = run_pipeline() + fs_seqs = [seq for k, seq in records.items() if "161455" in k] + assert fs_seqs, "no output for frameshift variant" + + idx = SeqIO.index(str(TESTDATA_DIR / "clinvar_isg15_cds.fna"), "fasta") + isg15_seq = idx["NM_005101.4"].seq + ref_p, _ = _altseq_and_protein( + isg15_seq, "C", "C", 1014316, + features=ISG15_CDS_EXONS, cds_info=self._ISG15_CDS_ONLY_INFO, + ) + alt_p = fs_seqs[0] + assert alt_p[:113] == ref_p[:113], ( + "frameshift variant 161455 should match reference up to AA 113" + ) + assert alt_p[113] != ref_p[113], ( + "frameshift variant 161455 must diverge at AA 113" + ) + + def test_inframe_deletion_alt_protein_is_shorter(self, run_pipeline): + """Inframe deletion (9-bp, ID 915424) must reduce protein length by 3 aa.""" + from Bio import SeqIO + + records = run_pipeline() + del_seqs = [seq for k, seq in records.items() if "915424" in k] + assert del_seqs, "no output for inframe_deletion variant" + + idx = SeqIO.index(str(TESTDATA_DIR / "clinvar_isg15_cds.fna"), "fasta") + isg15_seq = idx["NM_005101.4"].seq + ref_p, _ = _altseq_and_protein( + isg15_seq, "TCTGAGCATC", "TCTGAGCATC", 1014223, + features=ISG15_CDS_EXONS, cds_info=self._ISG15_CDS_ONLY_INFO, + ) + alt_p = del_seqs[0] + assert len(alt_p) == len(ref_p) - 3, ( + f"9-bp inframe deletion should shorten protein by 3 aa; " + f"ref={len(ref_p)}, alt={len(alt_p)}" + ) + + def test_inframe_insertion_alt_protein_is_longer(self, run_pipeline): + """Inframe insertion (6-bp, ID 1038082) must extend protein by 2 aa.""" + from Bio import SeqIO + + records = run_pipeline() + ins_seqs = [seq for k, seq in records.items() if "1038082" in k] + assert ins_seqs, "no output for inframe_insertion variant" + + idx = SeqIO.index(str(TESTDATA_DIR / "clinvar_isg15_cds.fna"), "fasta") + isg15_seq = idx["NM_005101.4"].seq + ref_p, _ = _altseq_and_protein( + isg15_seq, "A", "A", 1014459, + features=ISG15_CDS_EXONS, cds_info=self._ISG15_CDS_ONLY_INFO, + ) + alt_p = ins_seqs[0] + assert len(alt_p) == len(ref_p) + 2, ( + f"6-bp inframe insertion should lengthen protein by 2 aa; " + f"ref={len(ref_p)}, alt={len(alt_p)}" + ) diff --git a/pgatk/tests/test_clinvar/test_data_downloader.py b/pgatk/tests/test_clinvar/test_data_downloader.py index e7b59ab9..a69b33b7 100644 --- a/pgatk/tests/test_clinvar/test_data_downloader.py +++ b/pgatk/tests/test_clinvar/test_data_downloader.py @@ -14,9 +14,14 @@ def test_build_refseq_urls(self): downloader = NcbiDataDownloader(output_dir="/tmp/test") urls = downloader.get_refseq_urls() assert len(urls) == 3 - assert any("GRCh38_latest_genomic.gtf.gz" in u for u in urls) - assert any("GRCh38_latest_rna.fna.gz" in u for u in urls) + assert any("GRCh38_latest_genomic.fna.gz" in u for u in urls) + assert any("GRCh38_latest_genomic.gff.gz" in u for u in urls), ( + "GFF3 is required for gffread; GTF lacks the parent hierarchy" + ) assert any("assembly_report.txt" in u for u in urls) + assert not any("GRCh38_latest_genomic.gtf.gz" in u for u in urls), ( + "GTF no longer downloaded; use GFF3 for gffread transcript generation" + ) def test_build_clinvar_urls(self): downloader = NcbiDataDownloader(output_dir="/tmp/test") @@ -27,7 +32,7 @@ def test_build_clinvar_urls(self): def test_expected_files_list(self): downloader = NcbiDataDownloader(output_dir="/tmp/test") files = downloader.expected_files() - assert len(files) == 5 # 3 refseq + 2 clinvar + assert len(files) == 5 # 3 refseq (genomic.fna, genomic.gff, assembly_report) + 2 clinvar def test_output_dir_created(self, tmp_path): out_dir = tmp_path / "ncbi_data" diff --git a/pgatk/tests/test_cosmic_core.py b/pgatk/tests/test_cosmic_core.py index e352c8be..9dcded23 100644 --- a/pgatk/tests/test_cosmic_core.py +++ b/pgatk/tests/test_cosmic_core.py @@ -238,7 +238,7 @@ def test_missense_non_alpha_last_char_returns_empty(self): assert result == "" def test_dna_substitution_ref_mismatch(self): - """When DNA ref allele doesn't match the sequence, return empty.""" + """When DNA ref allele doesn't match the sequence, return None (REF mismatch sentinel).""" seq = Seq("ATGAAATTT") # pos 4 = 'A' snp = SNP( gene="TEST", @@ -248,5 +248,22 @@ def test_dna_substitution_ref_mismatch(self): mutation_type="Substitution" ) result = CancerGenomesService.get_mut_pro_seq(snp, seq) - # ref_dna = 'C', seq[3] = 'A' -> mismatch -> mut_pro_seq stays "" - assert result == "" + # ref_dna = 'C', seq[3] = 'A' -> mismatch -> returns None to distinguish from unsupported HGVS + assert result is None + + def test_leading_n_stripped_before_position_lookup(self): + """FASTA entries with a leading N (masked base) are stripped so HGVS c. positions align correctly.""" + # NATGAAATTT: real CDS starts at index 1 (ATG). + # c.4C>T should match index 3 of the real CDS = 'A' of 'ATGAAATTT'[3] = 'A'. + # Without the strip, seq[3] = 'G' (the G of ATG) and the lookup would be wrong. + seq = Seq("NATGAAATTT") # leading N before ATG + snp = SNP( + gene="TEST", + mrna="ENST0001", + dna_mut="c.4A>T", # pos 4 of real CDS = 'A' (after stripping N) -> valid substitution + aa_mut="p.K2*", + mutation_type="Substitution" + ) + result = CancerGenomesService.get_mut_pro_seq(snp, seq) + # Should succeed (not None, not "") because REF=A matches the stripped sequence at pos 4 + assert result is not None and result != "" diff --git a/pgatk/tests/test_cosmic_downloader.py b/pgatk/tests/test_cosmic_downloader.py new file mode 100644 index 00000000..55644956 --- /dev/null +++ b/pgatk/tests/test_cosmic_downloader.py @@ -0,0 +1,46 @@ +"""Unit tests for the COSMIC downloader URL construction and auth token. + +No network. Two tests: + * `test_build_api_url_pattern` — verifies build_api_url() composes the + scripted-download endpoint correctly from server, api_endpoint, path + and bucket. + * `test_basic_auth_token_format` — verifies the base64(user:password) + token has no trailing newline (a common pitfall when echo'ing). +""" +from pgatk.cgenomes.cosmic_downloader import CosmicDownloadService +from pgatk.config.registry import load_config + + +def test_build_api_url_pattern(tmp_path): + """The API URL should be {server}/{endpoint}?path={path}&bucket={bucket}.""" + config_data = load_config("cosmic", None) + pipeline_arguments = { + CosmicDownloadService.CONFIG_OUTPUT_DIRECTORY: str(tmp_path), + CosmicDownloadService.CONFIG_COSMIC_FTP_USER: "user@example.com", + CosmicDownloadService.CONFIG_COSMIC_FTP_PASSWORD: "secret", + } + svc = CosmicDownloadService(config_data, pipeline_arguments) + + url = svc.build_api_url("grch38/cosmic/v103/Cosmic_MutantCensus_Tsv_v103_GRCh38.tar") + + assert url == ( + "https://cancer.sanger.ac.uk/api/mono/products/v1/downloads/scripted" + "?path=grch38/cosmic/v103/Cosmic_MutantCensus_Tsv_v103_GRCh38.tar" + "&bucket=downloads" + ) + + +def test_basic_auth_token_format(tmp_path): + """Auth token is base64(user:password), no trailing newline.""" + import base64 + + config_data = load_config("cosmic", None) + pipeline_arguments = { + CosmicDownloadService.CONFIG_OUTPUT_DIRECTORY: str(tmp_path), + CosmicDownloadService.CONFIG_COSMIC_FTP_USER: "user@example.com", + CosmicDownloadService.CONFIG_COSMIC_FTP_PASSWORD: "secret", + } + svc = CosmicDownloadService(config_data, pipeline_arguments) + + expected = base64.b64encode(b"user@example.com:secret").decode("utf-8") + assert svc._cosmic_token == expected diff --git a/pgatk/tests/test_ensembl_core.py b/pgatk/tests/test_ensembl_core.py index 46c09161..38d6d10d 100644 --- a/pgatk/tests/test_ensembl_core.py +++ b/pgatk/tests/test_ensembl_core.py @@ -1,8 +1,71 @@ """Unit tests for EnsemblDataService core static methods.""" +import logging +from pathlib import Path + +import pytest from Bio.Seq import Seq -from pgatk.ensembl.ensembl import EnsemblDataService +from pgatk.ensembl.ensembl import EnsemblDataService, _split_vcf_into_batches + +# --------------------------------------------------------------------------- +# Shared helpers +# --------------------------------------------------------------------------- + +_VCF_HEADER = ( + "##fileformat=VCFv4.1\n" + '##INFO=\n' + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\n" +) + + +def _write_vcf(path, n_variants, header=_VCF_HEADER, chrom="1"): + """Write a minimal VCF with n_variants data lines; return path as str.""" + with open(path, "w") as fh: + fh.write(header) + for i in range(n_variants): + fh.write(f"{chrom}\t{100 + i}\t.\tA\tT\t.\t.\t" + f"CSQ=A|missense_variant|Transcript|ENST{i:06d}||\n") + return str(path) + + +def _data_line_count(vcf_path): + with open(vcf_path) as fh: + return sum(1 for ln in fh if ln.strip() and not ln.startswith("#")) + + +def _header_lines(vcf_path): + with open(vcf_path) as fh: + return [ln for ln in fh if ln.startswith("#")] + + +class _StubSvc: + """Duck-typed stub for _parse_annotation_indices unit tests. + + Provides only the instance attributes and get_logger() that the method + reads, without going through ParameterConfiguration.__init__. + """ + _annotation_field_name = "CSQ" + _transcript_str = "FEATURE" + _consequence_str = "CONSEQUENCE" + _biotype_str = "transcript_biotype" + + @staticmethod + def get_logger(): + return logging.getLogger("test_ensembl") + + +# Pipeline args that mirror the vcf-to-proteindb testdata invocation. +_CHUNK_PIPELINE_ARGS = { + "annotation_field_name": "CSQ", + "transcript_str": "FEATURE", + "consequence_str": "CONSEQUENCE", + "biotype_str": "feature_type", + "include_biotypes": "mRNA,ncRNA", + "af_field": "MAF", + "protein_prefix": "ensvar", +} # --------------------------------------------------------------------------- @@ -375,3 +438,405 @@ def test_stop_codon_in_translation(self): alt_seq = Seq("ATGTAATTT") ref_orfs, _alt_orfs = EnsemblDataService.get_orfs_vcf(ref_seq, alt_seq, 1, num_orfs=1) assert "*" in str(ref_orfs[0]) + + +# --------------------------------------------------------------------------- +# _split_vcf_into_batches +# --------------------------------------------------------------------------- + +class TestSplitVcfIntoBatches: + + def test_header_only_returns_no_batches(self, tmp_path): + """A VCF with no data lines produces an empty batch list.""" + vcf = _write_vcf(tmp_path / "in.vcf", n_variants=0) + assert _split_vcf_into_batches(vcf, str(tmp_path), batch_size=10) == [] + + def test_fewer_variants_than_batch_size(self, tmp_path): + """When n_variants < batch_size all variants land in a single file.""" + vcf = _write_vcf(tmp_path / "in.vcf", n_variants=3) + batches = _split_vcf_into_batches(vcf, str(tmp_path), batch_size=10) + assert len(batches) == 1 + assert _data_line_count(batches[0]) == 3 + + def test_exactly_batch_size_produces_one_file(self, tmp_path): + """Exactly batch_size variants → exactly one batch file.""" + vcf = _write_vcf(tmp_path / "in.vcf", n_variants=5) + batches = _split_vcf_into_batches(vcf, str(tmp_path), batch_size=5) + assert len(batches) == 1 + assert _data_line_count(batches[0]) == 5 + + def test_one_over_batch_size_produces_two_files(self, tmp_path): + """batch_size + 1 variants must split into exactly 2 files (full + remainder).""" + vcf = _write_vcf(tmp_path / "in.vcf", n_variants=6) + batches = _split_vcf_into_batches(vcf, str(tmp_path), batch_size=5) + assert len(batches) == 2 + assert _data_line_count(batches[0]) == 5 + assert _data_line_count(batches[1]) == 1 + + def test_header_copied_to_every_batch(self, tmp_path): + """Every batch file starts with the same header lines as the source VCF.""" + vcf = _write_vcf(tmp_path / "in.vcf", n_variants=12) + expected = _header_lines(vcf) + batches = _split_vcf_into_batches(vcf, str(tmp_path), batch_size=5) + assert len(batches) > 1 + for batch in batches: + assert _header_lines(batch) == expected + + def test_batch_files_are_ordered(self, tmp_path): + """Returned list is in creation order (batch_0000 before batch_0001, …).""" + vcf = _write_vcf(tmp_path / "in.vcf", n_variants=10) + batches = _split_vcf_into_batches(vcf, str(tmp_path), batch_size=4) + names = [Path(b).name for b in batches] + assert names == sorted(names) + + def test_blank_lines_not_counted_as_variants(self, tmp_path): + """Blank lines within the data section are skipped and not split into batches.""" + vcf_path = tmp_path / "blank.vcf" + with vcf_path.open("w") as fh: + fh.write(_VCF_HEADER) + fh.write("1\t100\t.\tA\tT\t.\t.\t.\n") + fh.write("\n") + fh.write("1\t200\t.\tG\tC\t.\t.\t.\n") + batches = _split_vcf_into_batches(str(vcf_path), str(tmp_path), batch_size=10) + assert len(batches) == 1 + assert _data_line_count(batches[0]) == 2 + + def test_total_variant_count_preserved_across_batches(self, tmp_path): + """Sum of data lines across all batches equals the original variant count.""" + n = 23 + vcf = _write_vcf(tmp_path / "in.vcf", n_variants=n) + batches = _split_vcf_into_batches(vcf, str(tmp_path), batch_size=7) + assert sum(_data_line_count(b) for b in batches) == n + + def test_batches_may_span_chromosomes(self, tmp_path): + """Batches are not bounded by chromosome; a single batch can contain + variants from multiple chromosomes.""" + vcf_path = tmp_path / "multi_chrom.vcf" + with vcf_path.open("w") as fh: + fh.write(_VCF_HEADER) + for chrom, pos in [("1", 100), ("1", 200), ("2", 100), ("2", 200)]: + fh.write(f"{chrom}\t{pos}\t.\tA\tT\t.\t.\t.\n") + batches = _split_vcf_into_batches(str(vcf_path), str(tmp_path), batch_size=10) + assert len(batches) == 1 + assert _data_line_count(batches[0]) == 4 + + +# --------------------------------------------------------------------------- +# _parse_annotation_indices +# --------------------------------------------------------------------------- + +class TestParseAnnotationIndices: + """Tests for EnsemblDataService._parse_annotation_indices(). + + Uses _StubSvc (duck-typed) so the method can be tested in isolation + without the ParameterConfiguration initialisation overhead. + The testdata CSQ FORMAT is: + ALLELE|CONSEQUENCE|FEATURE_TYPE|FEATURE|AMINO_ACIDS|SIFT + After upper-casing: indices 0..5. FEATURE → 3, CONSEQUENCE → 1. + """ + + # Metadata matching testdata/test.vcf CSQ FORMAT + _META = [ + "##fileformat=VCFv4.1\n", + '##INFO=\n', + "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\n", + ] + + def test_finds_consequence_and_feature_indices(self): + """CONSEQUENCE at column 1 and FEATURE at column 3 are found correctly.""" + ti, ci, bi = EnsemblDataService._parse_annotation_indices(_StubSvc(), self._META) + assert ci == 1 + assert ti == 3 + + def test_missing_biotype_returns_none(self): + """transcript_biotype is absent from this FORMAT → bi is None.""" + ti, ci, bi = EnsemblDataService._parse_annotation_indices(_StubSvc(), self._META) + assert bi is None + + def test_biotype_found_when_present(self): + """When biotype_str IS in the FORMAT, bi is set correctly.""" + meta = [ + '##INFO=\n', + "#CHROM\n", + ] + stub = _StubSvc() + stub._biotype_str = "transcript_biotype" + ti, ci, bi = EnsemblDataService._parse_annotation_indices(stub, meta) + assert bi == 4 + + def test_trailing_vcf_syntax_stripped_from_last_field(self): + """The closing `">` of the INFO Description must not corrupt the last field. + + If TRANSCRIPT_BIOTYPE is the last FORMAT field, the raw split produces + 'TRANSCRIPT_BIOTYPE">\\n'; the strip must clean that so the index is found. + """ + meta = [ + '##INFO=\n', + "#CHROM\n", + ] + stub = _StubSvc() + stub._biotype_str = "transcript_biotype" + ti, ci, bi = EnsemblDataService._parse_annotation_indices(stub, meta) + assert bi is not None, "TRANSCRIPT_BIOTYPE should be found as the last field after stripping" + assert bi == 3 + + def test_transcript_absent_falls_back_to_zero(self): + """When _transcript_str is not in the FORMAT, ti falls back to 0.""" + stub = _StubSvc() + stub._transcript_str = "NOT_PRESENT" + ti, ci, bi = EnsemblDataService._parse_annotation_indices(stub, self._META) + assert ti == 0 + + def test_no_matching_info_header_all_indices_default(self): + """When no ##INFO= line exists, annotation_cols is empty; + ti falls back to 0, ci and bi remain None.""" + meta = ["##fileformat=VCFv4.1\n", "#CHROM\tPOS\n"] + ti, ci, bi = EnsemblDataService._parse_annotation_indices(_StubSvc(), meta) + assert ti == 0 + assert ci is None + assert bi is None + + def test_real_testdata_vcf_header(self, testdata_dir): + """Parsed against the actual testdata/test.vcf header.""" + svc = EnsemblDataService({}, {}) + meta, _ = svc.vcf_from_file(str(testdata_dir / "test.vcf")) + ti, ci, bi = svc._parse_annotation_indices(meta, str(testdata_dir / "test.vcf")) + # CSQ FORMAT: ALLELE|CONSEQUENCE|FEATURE_TYPE|FEATURE|AMINO_ACIDS|SIFT + assert ti == 3 # FEATURE + assert ci == 1 # CONSEQUENCE + assert bi is None # transcript_biotype not in this VCF's CSQ FORMAT + + +# --------------------------------------------------------------------------- +# _vcf_to_proteindb_chunk +# --------------------------------------------------------------------------- + +_STATS_KEYS = frozenset({ + "# variants with invalid record", + "# variants not passing Filter", + "# variants not passing AF threshold", + "# feature IDs from VCF that are not found in the given FASTA file", + "# variants successfully translated", +}) + + +@pytest.fixture +def chunk_svc(): + """EnsemblDataService configured to match the testdata VCF.""" + return EnsemblDataService({}, _CHUNK_PIPELINE_ARGS) + + +def _run_chunk(svc, tmp_path, suffix="out", **kwargs): + """Call _vcf_to_proteindb_chunk on testdata files; returns (path, stats).""" + return svc._vcf_to_proteindb_chunk( + "testdata/test.vcf", + "testdata/test.fa", + "testdata/test.gtf", + str(tmp_path / f"{suffix}.fa"), + **kwargs, + ) + + +class TestVcfToProteindbChunk: + + def test_return_type_is_tuple_of_str_and_dict(self, chunk_svc, tmp_path): + """_vcf_to_proteindb_chunk returns (str, dict).""" + result = _run_chunk(chunk_svc, tmp_path) + assert isinstance(result, tuple) and len(result) == 2 + out_path, stats = result + assert isinstance(out_path, str) + assert isinstance(stats, dict) + + def test_stats_dict_has_all_expected_keys(self, chunk_svc, tmp_path): + """The returned stats dict contains exactly the standard counter keys.""" + _, stats = _run_chunk(chunk_svc, tmp_path) + assert set(stats.keys()) == _STATS_KEYS + + def test_all_stats_counts_are_non_negative(self, chunk_svc, tmp_path): + """Every counter in the stats dict is ≥ 0.""" + _, stats = _run_chunk(chunk_svc, tmp_path) + for key, val in stats.items(): + assert val >= 0, f"Negative count for '{key}': {val}" + + def test_log_summary_false_suppresses_info_line(self, chunk_svc, tmp_path, caplog): + """With log_summary=False no 'Translation summary' INFO line is emitted.""" + with caplog.at_level(logging.INFO): + _run_chunk(chunk_svc, tmp_path, log_summary=False) + hits = [r for r in caplog.records + if r.levelno == logging.INFO and "Translation summary" in r.message] + assert hits == [] + + def test_log_summary_true_emits_info_line(self, chunk_svc, tmp_path, caplog): + """With log_summary=True (the default) a 'Translation summary' INFO line appears.""" + with caplog.at_level(logging.INFO): + _run_chunk(chunk_svc, tmp_path, log_summary=True) + hits = [r for r in caplog.records + if r.levelno == logging.INFO and "Translation summary" in r.message] + assert len(hits) >= 1 + + def test_annotation_indices_precomputed_matches_auto(self, chunk_svc, tmp_path): + """Pre-supplying annotation_indices produces identical stats to letting + the chunk compute them from the VCF header itself.""" + meta, _ = chunk_svc.vcf_from_file("testdata/test.vcf") + indices = chunk_svc._parse_annotation_indices(meta, "testdata/test.vcf") + + _, stats_auto = _run_chunk(chunk_svc, tmp_path, suffix="auto", + log_summary=False) + _, stats_pre = _run_chunk(chunk_svc, tmp_path, suffix="pre", + annotation_indices=indices, log_summary=False) + assert stats_auto == stats_pre + + def test_output_fasta_written_to_given_path(self, chunk_svc, tmp_path): + """The returned path matches the argument and the file exists on disk.""" + out_path, _ = _run_chunk(chunk_svc, tmp_path) + assert out_path == str(tmp_path / "out.fa") + assert Path(out_path).exists() + + +# --------------------------------------------------------------------------- +# vcf_from_file — bgz/gzip-compressed input +# Regression test: previously raised UnicodeDecodeError on .gz/.bgz files +# because the file was opened with plain open() instead of gzip.open(). +# --------------------------------------------------------------------------- + +class TestBgzVcfReading: + """vcf_from_file must transparently decompress .gz/.bgz VCF files.""" + + _BGZ_VCF = "testdata/test_gnomad_bgz.vcf.gz" + + def test_vcf_from_file_reads_bgz_without_error(self): + """Reading a gzip-compressed VCF must not raise UnicodeDecodeError.""" + meta, records = EnsemblDataService.vcf_from_file(self._BGZ_VCF) + assert isinstance(meta, list) + assert len(list(records)) > 0 + + def test_vcf_from_file_bgz_metadata_contains_vep_header(self): + """The vep ##INFO header line must be present in the parsed metadata.""" + meta, _ = EnsemblDataService.vcf_from_file(self._BGZ_VCF) + assert any("ID=vep" in line for line in meta) + + def test_vcf_from_file_bgz_data_has_expected_variant_count(self): + """All four data lines in the compressed VCF are returned by the iterator.""" + _, records = EnsemblDataService.vcf_from_file(self._BGZ_VCF) + assert len(list(records)) == 4 + + def test_vcf_from_file_bgz_chrom_column_parsed(self): + """The CHROM field is correctly parsed from the compressed file.""" + _, records = EnsemblDataService.vcf_from_file(self._BGZ_VCF) + assert all(r.CHROM == "chr22" for r in records) + + +# --------------------------------------------------------------------------- +# _vcf_to_proteindb_chunk — gnomAD bgz-style VCF with GENCODE transcript FASTA +# +# testdata/test_gnomad_gencode.fa uses gffread-generated format with CDS= headers +# (ENST00000643195.1 CDS=1-948 gene_type=...). get_key() strips at the first +# space (or pipe), returning the versioned transcript ID. The gnomAD VCF carries +# bare IDs (ENST00000643195); the pipeline version-strips FASTA keys on the first +# cache miss so both forms resolve to the same sequence. +# --------------------------------------------------------------------------- + +_GNOMAD_CHUNK_ARGS = { + "annotation_field_name": "vep", + "transcript_str": "Feature", # column name in VEP Format header + "consequence_str": "Consequence", + "biotype_str": "biotype", # matches BIOTYPE column in VEP header + "include_biotypes": "protein_coding", + "include_consequences": "missense_variant,inframe_deletion", + "af_field": "AF_afr", + "af_threshold": 0.01, + "protein_prefix": "gnomadvar", +} + + +@pytest.fixture +def gnomad_svc(): + """EnsemblDataService configured for gnomAD vep + AF_afr pipeline.""" + return EnsemblDataService({}, _GNOMAD_CHUNK_ARGS) + + +def _run_gnomad_chunk(svc, tmp_path, suffix="out", **kwargs): + """Call _vcf_to_proteindb_chunk with the gnomAD bgz VCF and GENCODE v39 references.""" + return svc._vcf_to_proteindb_chunk( + "testdata/test_gnomad_bgz.vcf.gz", + "testdata/test_gnomad_gencode.fa", + "testdata/test_gnomad_gencode.gtf", + str(tmp_path / f"{suffix}.fa"), + **kwargs, + ) + + +class TestVcfToProteindbChunkGnomad: + """End-to-end pipeline tests using a gnomAD-style gzip-compressed VCF. + + Reference files are real GENCODE v39 records: + - test_gnomad_gencode.fa -- gffread-generated, CDS=1-948 header + (ENST00000643195.1 CDS=1-948 ...); + CDS= triggers 1-frame CDS translation + - test_gnomad_gencode.gtf -- GENCODE v39, chr22 chromosome prefix, + transcript_type attribute + + Test VCF contains four real gnomAD v4.1.1 variants for OR11H1 (chr22): + - rs199856986 missense V78A AF_afr=0.124 → passes all filters → translated + - rs1203023715 inframe_del AF_afr=0.015 → passes all filters → translated + - rs1410655344 missense N2D AF_afr=6e-05 → below AF threshold → filtered + - rs751806421 stop_gained Q19* AF_afr=0.02 → fails consequence filter + """ + + def test_gnomad_bgz_chunk_runs_without_error(self, gnomad_svc, tmp_path): + """Pipeline completes without raising on a gzip-compressed gnomAD VCF.""" + out_path, stats = _run_gnomad_chunk(gnomad_svc, tmp_path) + assert isinstance(out_path, str) + assert isinstance(stats, dict) + + def test_gnomad_bgz_chunk_stats_has_all_expected_keys(self, gnomad_svc, tmp_path): + """Stats dict contains the standard counter keys.""" + _, stats = _run_gnomad_chunk(gnomad_svc, tmp_path) + assert set(stats.keys()) == _STATS_KEYS + + def test_gnomad_bgz_chunk_af_filter_applied(self, gnomad_svc, tmp_path): + """rs1410655344 (AF_afr=6e-05, below threshold 0.01) is counted as AF-filtered.""" + _, stats = _run_gnomad_chunk(gnomad_svc, tmp_path) + assert stats["# variants not passing AF threshold"] == 1 + + def test_gnomad_bgz_chunk_translates_passing_variants(self, gnomad_svc, tmp_path): + """At least one variant passes all filters and is successfully translated.""" + _, stats = _run_gnomad_chunk(gnomad_svc, tmp_path) + assert stats["# variants successfully translated"] >= 1 + + def test_gnomad_bgz_chunk_output_fasta_exists(self, gnomad_svc, tmp_path): + """The output protein FASTA file is created at the given path.""" + out_path, _ = _run_gnomad_chunk(gnomad_svc, tmp_path) + assert Path(out_path).exists() + + def test_gnomad_bgz_chunk_annotation_indices_resolve_correctly(self, gnomad_svc): + """vep FORMAT header is parsed: Feature→transcript_index, Consequence→consequence_index.""" + meta, _ = gnomad_svc.vcf_from_file("testdata/test_gnomad_bgz.vcf.gz") + ti, ci, bi = gnomad_svc._parse_annotation_indices(meta, "testdata/test_gnomad_bgz.vcf.gz") + assert ti == 6 # Feature is the 7th column (0-indexed) + assert ci == 1 # Consequence is the 2nd column + assert bi == 7 # BIOTYPE is the 8th column + + def test_gencode_versioned_id_key_extraction(self): + """get_key strips at the first '|', returning the versioned ID from a GENCODE header.""" + header = "ENST00000643195.1|ENSG00000130538.6|OTTHUMG00000183615.4|OR11H1-201|OR11H1|948|protein_coding|" + assert EnsemblDataService.get_key(header) == "ENST00000643195.1" + + def test_gencode_versioned_id_resolves_to_sequence(self): + """Bare VCF transcript ID (no version) maps to the versioned FASTA entry. + + The pipeline builds {stripped_id: versioned_id} on the first cache miss. + This test verifies that ENST00000643195 (VCF) → ENST00000643195.1 (FASTA). + get_key works on both pipe-delimited and gffread (space-delimited) headers. + """ + from Bio import SeqIO + td = SeqIO.to_dict( + SeqIO.parse("testdata/test_gnomad_gencode.fa", "fasta"), + key_function=lambda r: EnsemblDataService.get_key(r.description), + ) + assert "ENST00000643195.1" in td + mapping = {k.split(".")[0]: k for k in td.keys()} + assert mapping["ENST00000643195"] == "ENST00000643195.1" diff --git a/pgatk/tests/test_ensembl_translation.py b/pgatk/tests/test_ensembl_translation.py new file mode 100644 index 00000000..80da2828 --- /dev/null +++ b/pgatk/tests/test_ensembl_translation.py @@ -0,0 +1,361 @@ +"""Translation-correctness tests for Ensembl vcf-to-proteindb. + +Unit tests (TestGetAltseqOR11H1) call get_altseq() + get_orfs_vcf() directly +on OR11H1 (ENST00000643195, chr22 + strand, single-exon CDS=1-948), covering +all mutation types present in test_ensembl_v2p.vcf. + +Integration tests (TestEnsemblPipelineTranslation) run _vcf_to_proteindb_chunk +end-to-end on those same files and assert that each output protein has the +correct biological properties. + +OR11H1 genomic layout (GRCh38, chr22, + strand): + CDS exon: 15528192–15529136 (945 bp → 315 coding codons) + stop codon: 15529137–15529139 (3 bp) + CDS=1-948 in gffread FASTA header (CDS + stop codon included) + +Variants from test_ensembl_v2p.vcf used for unit tests: + rs1211697244 22:15528192 A>G start_lost M→V at AA 0 + rs1410655344 22:15528195 A>G missense N→D at AA 1 + rs1394965478 22:15528197 T>C synonymous no protein change + rs1402769459 22:15528197 TG>T frameshift diverges at AA 2 + rs1420478920 22:15528234 G>T stop_gained E→* at AA 14 + rs1203023715 22:15528914 CTTC>C inframe_del removes 1 AA (3 bp del) + rs1986039639 22:15528961 G>GCTG inframe_ins adds 1 AA (3 bp ins) + rs1986046473 22:15529137 T>A stop_lost * removed, protein extends +""" +from __future__ import annotations + +import warnings +from pathlib import Path + +import pytest +from Bio import SeqIO +from Bio.Seq import Seq + +from pgatk.toolbox.vcf_utils import get_altseq, get_orfs_vcf + +# --------------------------------------------------------------------------- +# Constants +# --------------------------------------------------------------------------- + +# Genomic CDS features for OR11H1 ENST00000643195 (1-based, inclusive) +OR11H1_CDS_FEAT = [[15528192, 15529136, "CDS"]] +OR11H1_STOP_FEAT = [[15529137, 15529139, "stop_codon"]] +OR11H1_CDS_AND_STOP = OR11H1_CDS_FEAT + OR11H1_STOP_FEAT + +# CDS positions in the gffread-generated FASTA (CDS=1-948 includes stop codon) +OR11H1_CDS_INFO = [1, 948] + +# Absolute testdata directory — needed for module-scoped fixtures that run +# before the autouse _chdir_to_package_root function-scoped fixture fires. +_TESTDATA = Path(__file__).resolve().parent.parent / "testdata" + + +# --------------------------------------------------------------------------- +# Shared helpers +# --------------------------------------------------------------------------- + +@pytest.fixture(scope="module") +def or11h1_seq(): + """OR11H1 CDS sequence from test_ensembl_v2p.fa (gffread, CDS=1-948).""" + idx = SeqIO.index(str(_TESTDATA / "test_ensembl_v2p.fa"), "fasta") + return idx["ENST00000643195"].seq + + +def _translate(seq: Seq) -> str: + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + return str(seq.translate(to_stop=False)) + + +def _altseq_protein(ref_seq, ref_allele, alt_allele, pos, features=None, cds_info=None): + """Return (ref_protein, alt_protein) for a variant on the + strand.""" + features = features if features is not None else OR11H1_CDS_FEAT + cds_info = cds_info if cds_info is not None else OR11H1_CDS_INFO + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + coding_ref, coding_alt = get_altseq( + ref_seq, Seq(ref_allele), Seq(alt_allele), pos, "+", features, cds_info + ) + ref_orfs, alt_orfs = get_orfs_vcf(coding_ref, coding_alt, 1, 1) + return str(ref_orfs[0]), str(alt_orfs[0]) + + +# =========================================================================== +# TestGetAltseqOR11H1 — unit tests per mutation type +# =========================================================================== + +class TestGetAltseqOR11H1: + """Direct get_altseq / get_orfs_vcf tests on real OR11H1 CDS coordinates.""" + + def test_reference_protein_starts_with_met(self, or11h1_seq): + """The reference translation begins with Met.""" + ref_p, _ = _altseq_protein(or11h1_seq, "A", "A", 15528192) + assert ref_p[0] == "M", f"expected M, got {ref_p[0]}" + + def test_reference_protein_length(self, or11h1_seq): + """CDS=1-948 → 948/3 = 316 codons (315 coding + 1 stop).""" + ref_p, _ = _altseq_protein(or11h1_seq, "A", "A", 15528192) + assert len(ref_p) == 316 + + def test_reference_protein_ends_with_stop(self, or11h1_seq): + """Canonical translation ends with '*' (stop codon).""" + ref_p, _ = _altseq_protein(or11h1_seq, "A", "A", 15528192) + assert ref_p[-1] == "*" + + # --- start_lost --------------------------------------------------------- + + def test_start_lost_changes_first_aa(self, or11h1_seq): + """22:15528192 A>G (rs1211697244): Met codon ATG → GTG (Met → Val).""" + ref_p, alt_p = _altseq_protein(or11h1_seq, "A", "G", 15528192) + assert ref_p[0] == "M" + assert alt_p[0] == "V" + + def test_start_lost_does_not_alter_length(self, or11h1_seq): + """start_lost is a missense at AA 0 — protein length is unchanged.""" + ref_p, alt_p = _altseq_protein(or11h1_seq, "A", "G", 15528192) + assert len(ref_p) == len(alt_p) + + def test_start_lost_downstream_aas_unchanged(self, or11h1_seq): + """All residues after position 0 must be identical to reference.""" + ref_p, alt_p = _altseq_protein(or11h1_seq, "A", "G", 15528192) + assert ref_p[1:] == alt_p[1:] + + # --- missense ----------------------------------------------------------- + + def test_missense_changes_single_aa(self, or11h1_seq): + """22:15528195 A>G (rs1410655344): codon 2 AAT→GAT (Asn→Asp).""" + ref_p, alt_p = _altseq_protein(or11h1_seq, "A", "G", 15528195) + assert ref_p[1] == "N" + assert alt_p[1] == "D" + + def test_missense_length_unchanged(self, or11h1_seq): + ref_p, alt_p = _altseq_protein(or11h1_seq, "A", "G", 15528195) + assert len(ref_p) == len(alt_p) + + def test_missense_only_one_aa_differs(self, or11h1_seq): + ref_p, alt_p = _altseq_protein(or11h1_seq, "A", "G", 15528195) + diffs = sum(1 for r, a in zip(ref_p, alt_p) if r != a) + assert diffs == 1 + + # --- synonymous --------------------------------------------------------- + + def test_synonymous_leaves_protein_unchanged(self, or11h1_seq): + """22:15528197 T>C (rs1394965478): synonymous — protein identical.""" + ref_p, alt_p = _altseq_protein(or11h1_seq, "T", "C", 15528197) + assert ref_p == alt_p + + # --- stop_gained -------------------------------------------------------- + + def test_stop_gained_inserts_stop_at_aa14(self, or11h1_seq): + """22:15528234 G>T (rs1420478920): codon 15 GAG→TAG (Glu→*).""" + ref_p, alt_p = _altseq_protein(or11h1_seq, "G", "T", 15528234) + assert ref_p[14] == "E" + assert alt_p[14] == "*" + + def test_stop_gained_aas_before_stop_unchanged(self, or11h1_seq): + ref_p, alt_p = _altseq_protein(or11h1_seq, "G", "T", 15528234) + assert ref_p[:14] == alt_p[:14] + + # --- frameshift --------------------------------------------------------- + + def test_frameshift_diverges_from_ref(self, or11h1_seq): + """22:15528197 TG>T (rs1402769459): -1 deletion; frame shifts at AA 2.""" + ref_p, alt_p = _altseq_protein(or11h1_seq, "TG", "T", 15528197) + assert ref_p[:2] == alt_p[:2], "first 2 AAs precede the deletion" + assert ref_p[2] != alt_p[2], "AA 2 must change after frameshift" + + def test_frameshift_proteins_are_different(self, or11h1_seq): + ref_p, alt_p = _altseq_protein(or11h1_seq, "TG", "T", 15528197) + assert ref_p != alt_p + + # --- inframe_deletion --------------------------------------------------- + + def test_inframe_deletion_shortens_protein_by_one_aa(self, or11h1_seq): + """22:15528914 CTTC>C (rs1203023715): 3-bp deletion removes 1 codon.""" + ref_p, alt_p = _altseq_protein(or11h1_seq, "CTTC", "C", 15528914) + assert len(alt_p) == len(ref_p) - 1 + + def test_inframe_deletion_preserves_upstream_aas(self, or11h1_seq): + """Residues before the deletion are identical in ref and alt.""" + ref_p, alt_p = _altseq_protein(or11h1_seq, "CTTC", "C", 15528914) + # deletion starts at CDS index 722 → AA 240 + del_aa = (15528914 - 15528192) // 3 + assert ref_p[:del_aa] == alt_p[:del_aa] + + # --- inframe_insertion -------------------------------------------------- + + def test_inframe_insertion_lengthens_protein_by_one_aa(self, or11h1_seq): + """22:15528961 G>GCTG (rs1986039639): 3-bp insertion adds 1 codon.""" + ref_p, alt_p = _altseq_protein(or11h1_seq, "G", "GCTG", 15528961) + assert len(alt_p) == len(ref_p) + 1 + + def test_inframe_insertion_preserves_upstream_aas(self, or11h1_seq): + ref_p, alt_p = _altseq_protein(or11h1_seq, "G", "GCTG", 15528961) + ins_aa = (15528961 - 15528192) // 3 + assert ref_p[:ins_aa] == alt_p[:ins_aa] + + # --- stop_lost ---------------------------------------------------------- + + def test_stop_lost_removes_stop_codon(self, or11h1_seq): + """22:15529137 T>A (rs1986046473): stop codon TAA→AAA; '*' disappears.""" + ref_p, alt_p = _altseq_protein( + or11h1_seq, "T", "A", 15529137, + features=OR11H1_CDS_AND_STOP, + ) + assert ref_p[-1] == "*", "reference must end with stop" + assert "*" not in alt_p, "stop_lost alt protein must have no stop codon" + + def test_stop_lost_alt_protein_extends_past_normal_terminus(self, or11h1_seq): + """Alt protein is longer than reference (stop removed, reads through).""" + ref_p, alt_p = _altseq_protein( + or11h1_seq, "T", "A", 15529137, + features=OR11H1_CDS_AND_STOP, + ) + assert len(alt_p) > len(ref_p) - 1, "alt must extend past normal stop" + + +# =========================================================================== +# TestEnsemblPipelineTranslation — full pipeline integration +# =========================================================================== + +_V2P_PIPELINE_ARGS = { + "annotation_field_name": "CSQ", + "transcript_str": "Feature", + "consequence_str": "Consequence", + "biotype_str": "feature_type", + "include_biotypes": "mRNA,ncRNA", + "af_field": "MAF", + "af_threshold": 0.001, + "protein_prefix": "var", +} + + +@pytest.fixture(scope="module") +def ensembl_pipeline_records(tmp_path_factory): + """Run _vcf_to_proteindb_chunk on OR11H1 testdata; return parsed records.""" + from pgatk.ensembl.ensembl import EnsemblDataService + out = str(tmp_path_factory.mktemp("ensembl_translation") / "out.fa") + svc = EnsemblDataService({}, _V2P_PIPELINE_ARGS) + svc._vcf_to_proteindb_chunk( + str(_TESTDATA / "test_ensembl_v2p.vcf"), + str(_TESTDATA / "test_ensembl_v2p.fa"), + str(_TESTDATA / "test_ensembl_v2p.gtf"), + out, + ) + records = {} + if Path(out).exists(): + for rec in SeqIO.parse(out, "fasta"): + records[rec.id] = str(rec.seq) + return records + + +@pytest.fixture(scope="module") +def or11h1_ref_protein(): + """Reference OR11H1 protein computed with identity variant.""" + idx = SeqIO.index(str(_TESTDATA / "test_ensembl_v2p.fa"), "fasta") + seq = idx["ENST00000643195"].seq + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + coding_ref, _ = get_altseq(seq, Seq("A"), Seq("A"), 15528192, "+", + OR11H1_CDS_FEAT, OR11H1_CDS_INFO) + ref_orfs, _ = get_orfs_vcf(coding_ref, coding_ref, 1, 1) + return str(ref_orfs[0]) + + +class TestEnsemblPipelineTranslation: + """End-to-end pipeline correctness for each OR11H1 mutation type.""" + + def test_pipeline_produces_output(self, ensembl_pipeline_records): + assert ensembl_pipeline_records, "pipeline output must not be empty" + + def test_synonymous_variant_absent_from_output(self, ensembl_pipeline_records): + """rs1394965478 (synonymous) should not appear — identical to reference.""" + assert not any("rs1394965478" in k for k in ensembl_pipeline_records) + + def test_missense_produces_output(self, ensembl_pipeline_records): + assert any("rs1410655344" in k for k in ensembl_pipeline_records) + + def test_stop_gained_produces_output(self, ensembl_pipeline_records): + assert any("rs1420478920" in k for k in ensembl_pipeline_records) + + def test_frameshift_produces_output(self, ensembl_pipeline_records): + assert any("rs1402769459" in k for k in ensembl_pipeline_records) + + def test_inframe_deletion_produces_output(self, ensembl_pipeline_records): + assert any("rs1203023715" in k for k in ensembl_pipeline_records) + + def test_inframe_insertion_produces_output(self, ensembl_pipeline_records): + assert any("rs1986039639" in k for k in ensembl_pipeline_records) + + def test_stop_lost_produces_output(self, ensembl_pipeline_records): + assert any("rs1986046473" in k for k in ensembl_pipeline_records) + + def test_missense_differs_at_exactly_one_position( + self, ensembl_pipeline_records, or11h1_ref_protein + ): + """rs1410655344 (N→D) must change exactly 1 AA.""" + seqs = [s for k, s in ensembl_pipeline_records.items() if "rs1410655344" in k] + assert seqs, "no output for missense variant" + alt_p = seqs[0] + ref_stripped = or11h1_ref_protein.rstrip("*") + alt_stripped = alt_p.rstrip("*") + diffs = sum(1 for r, a in zip(ref_stripped, alt_stripped) if r != a) + assert diffs == 1, f"expected 1 AA diff, got {diffs}" + + def test_stop_gained_introduces_early_stop( + self, ensembl_pipeline_records, or11h1_ref_protein + ): + """rs1420478920 (E→* at AA 14): alt protein has '*' at index 14.""" + seqs = [s for k, s in ensembl_pipeline_records.items() if "rs1420478920" in k] + assert seqs, "no output for stop_gained variant" + alt_p = seqs[0] + assert alt_p[14] == "*", f"expected * at AA 14, got {alt_p[14]}" + assert or11h1_ref_protein[14] == "E" + + def test_frameshift_diverges_from_ref( + self, ensembl_pipeline_records, or11h1_ref_protein + ): + """rs1402769459 (−1 del): alt and ref diverge from AA 2 onward.""" + seqs = [s for k, s in ensembl_pipeline_records.items() if "rs1402769459" in k] + assert seqs, "no output for frameshift variant" + alt_p = seqs[0] + assert alt_p[:2] == or11h1_ref_protein[:2], "first 2 AAs must match" + assert alt_p[2] != or11h1_ref_protein[2], "AA 2 must diverge" + + def test_inframe_deletion_alt_protein_shorter( + self, ensembl_pipeline_records, or11h1_ref_protein + ): + """rs1203023715 (3-bp del): alt protein is 1 AA shorter than reference.""" + seqs = [s for k, s in ensembl_pipeline_records.items() if "rs1203023715" in k] + assert seqs, "no output for inframe_deletion variant" + alt_p = seqs[0] + ref_len = len(or11h1_ref_protein.rstrip("*")) + alt_len = len(alt_p.rstrip("*")) + assert alt_len == ref_len - 1, ( + f"expected ref_len-1={ref_len - 1}, got {alt_len}" + ) + + def test_inframe_insertion_alt_protein_longer( + self, ensembl_pipeline_records, or11h1_ref_protein + ): + """rs1986039639 (3-bp ins): alt protein is 1 AA longer than reference.""" + seqs = [s for k, s in ensembl_pipeline_records.items() if "rs1986039639" in k] + assert seqs, "no output for inframe_insertion variant" + alt_p = seqs[0] + ref_len = len(or11h1_ref_protein.rstrip("*")) + alt_len = len(alt_p.rstrip("*")) + assert alt_len == ref_len + 1, ( + f"expected ref_len+1={ref_len + 1}, got {alt_len}" + ) + + def test_stop_lost_alt_protein_extends_past_stop( + self, ensembl_pipeline_records, or11h1_ref_protein + ): + """rs1986046473 (stop_lost): alt protein extends past normal terminus.""" + seqs = [s for k, s in ensembl_pipeline_records.items() if "rs1986046473" in k] + assert seqs, "no output for stop_lost variant" + alt_p = seqs[0] + assert len(alt_p) > len(or11h1_ref_protein) - 1, ( + "stop_lost alt must be longer than canonical coding sequence" + ) diff --git a/pgatk/tests/test_gnomad_translation.py b/pgatk/tests/test_gnomad_translation.py new file mode 100644 index 00000000..4a4e9fb4 --- /dev/null +++ b/pgatk/tests/test_gnomad_translation.py @@ -0,0 +1,289 @@ +"""Translation-correctness tests for gnomAD vcf-to-proteindb. + +Unit tests (TestGetAltseqGnomADOR11H1) call get_altseq() + get_orfs_vcf() directly +on OR11H1 (ENST00000643195, chr22 + strand, single-exon) using 3-frame exon translation +regardless of the FASTA header. + +Integration tests (TestGnomADPipelineTranslation) run _vcf_to_proteindb_chunk +end-to-end with the gffread-generated FASTA (CDS=1-948 header), which triggers +1-frame CDS translation: one record per variant, no _1/_2/_3 suffixes in record IDs. + +OR11H1 genomic layout (GRCh38, chr22, + strand): + Exon / CDS: 15528192–15529136 (945 bp = 315 coding codons) + Stop codon: 15529137–15529139 (3 bp) + Total FASTA: 948 bp; CDS=1-948 in gffread header + No 5′ UTR — FASTA sequence begins at ATG start codon. + +GENCODE FASTA key (gffread format, space-delimited, CDS= header): + SeqIO key: ENST00000643195.1 + Header: >ENST00000643195.1 CDS=1-948 gene_type=protein_coding;gene_name=OR11H1;... + +Variants in test_gnomad_bgz.vcf.gz (real gnomAD v4.1.1 records, 44-field VEP): + rs1410655344 22:15528195 A>G missense N2D AF_afr=6.0507e-05 → FILTERED (AF < 0.01) + rs751806421 22:15528246 C>T stop_gained Q19* AF_afr=0.02 → FILTERED (consequence) + rs199856986 22:15528424 T>C missense V78A AF_afr=0.1239 → PASS + rs1203023715 22:15528913 CCTT>C inframe_del AF_afr=0.015 → PASS +""" +from __future__ import annotations + +import warnings +from pathlib import Path + +import pytest +from Bio import SeqIO +from Bio.Seq import Seq + +from pgatk.toolbox.vcf_utils import get_altseq, get_orfs_vcf + +# --------------------------------------------------------------------------- +# Constants +# --------------------------------------------------------------------------- + +# Absolute testdata directory — needed for module-scoped fixtures that run +# before the autouse _chdir_to_package_root function-scoped fixture fires. +_TESTDATA = Path(__file__).resolve().parent.parent / "testdata" + +# Exon features for OR11H1 ENST00000643195 (1-based, inclusive, + strand) +OR11H1_EXON_FEAT = [[15528192, 15529139, "exon"]] + +# gffread-format FASTA key — SeqIO uses only the text before the first space +_GENCODE_OR11H1_KEY = "ENST00000643195.1" + + +# --------------------------------------------------------------------------- +# Shared helpers +# --------------------------------------------------------------------------- + +@pytest.fixture(scope="module") +def or11h1_gnomad_seq(): + """OR11H1 sequence from test_gnomad_gencode.fa (gffread, CDS=1-948 header).""" + idx = SeqIO.index(str(_TESTDATA / "test_gnomad_gencode.fa"), "fasta") + return idx[_GENCODE_OR11H1_KEY].seq + + +def _altseq_protein(ref_seq, ref_allele, alt_allele, pos, features=None): + """Return (ref_protein_frame1, alt_protein_frame1) for a + strand variant. + + Always uses 3-frame exon translation (explicit exon features, no cds_info); + returns the frame-1 ORF (index 0). Since OR11H1 has no 5′ UTR, frame 1 + equals the canonical CDS protein in all cases. + """ + features = features if features is not None else OR11H1_EXON_FEAT + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + coding_ref, coding_alt = get_altseq( + ref_seq, Seq(ref_allele), Seq(alt_allele), pos, "+", features, None + ) + ref_orfs, alt_orfs = get_orfs_vcf(coding_ref, coding_alt, 1, 3) + return str(ref_orfs[0]), str(alt_orfs[0]) + + +# =========================================================================== +# TestGetAltseqGnomADOR11H1 — unit tests per mutation type +# =========================================================================== + +class TestGetAltseqGnomADOR11H1: + """Direct get_altseq / get_orfs_vcf tests on OR11H1 using 3-frame exon mode. + + 3-frame exon translation is used (cds_info=None, features=exon). + Since OR11H1 has no 5′ UTR, frame 1 equals the canonical CDS protein. + """ + + def test_reference_protein_starts_with_met(self, or11h1_gnomad_seq): + """Frame-1 translation begins with Met (ATG at position 0 of FASTA).""" + ref_p, _ = _altseq_protein(or11h1_gnomad_seq, "A", "A", 15528192) + assert ref_p[0] == "M", f"expected M, got {ref_p[0]}" + + def test_reference_protein_length(self, or11h1_gnomad_seq): + """FASTA is 948 nt → 948/3 = 316 codons (315 coding + 1 stop).""" + ref_p, _ = _altseq_protein(or11h1_gnomad_seq, "A", "A", 15528192) + assert len(ref_p) == 316 + + def test_reference_protein_ends_with_stop(self, or11h1_gnomad_seq): + """Canonical frame-1 translation ends with '*'.""" + ref_p, _ = _altseq_protein(or11h1_gnomad_seq, "A", "A", 15528192) + assert ref_p[-1] == "*" + + def test_three_frame_translation_returns_three_orfs(self, or11h1_gnomad_seq): + """get_orfs_vcf with num_orfs=3 returns exactly 3 ORF sequences.""" + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + coding_ref, coding_alt = get_altseq( + or11h1_gnomad_seq, Seq("A"), Seq("A"), 15528192, + "+", OR11H1_EXON_FEAT, None, + ) + ref_orfs, alt_orfs = get_orfs_vcf(coding_ref, coding_alt, 1, 3) + assert len(ref_orfs) == 3, f"expected 3 ORFs, got {len(ref_orfs)}" + assert len(alt_orfs) == 3 + + def test_frame1_is_canonical_protein(self, or11h1_gnomad_seq): + """Frame-1 ORF (index 0) gives canonical MNVSE... protein.""" + ref_p, _ = _altseq_protein(or11h1_gnomad_seq, "A", "A", 15528192) + assert ref_p[:5] == "MNVSE", f"expected MNVSE, got {ref_p[:5]}" + + # --- missense (rs199856986, 15528424 T>C, Val78Ala) ----------------------- + + def test_missense_changes_single_aa(self, or11h1_gnomad_seq): + """22:15528424 T>C (rs199856986): codon 78 gTc→gCc (Val→Ala).""" + ref_p, alt_p = _altseq_protein(or11h1_gnomad_seq, "T", "C", 15528424) + assert ref_p[77] == "V", f"expected V at AA 77, got {ref_p[77]}" + assert alt_p[77] == "A", f"expected A at AA 77, got {alt_p[77]}" + + def test_missense_length_unchanged(self, or11h1_gnomad_seq): + ref_p, alt_p = _altseq_protein(or11h1_gnomad_seq, "T", "C", 15528424) + assert len(ref_p) == len(alt_p) + + def test_missense_only_one_aa_differs(self, or11h1_gnomad_seq): + ref_p, alt_p = _altseq_protein(or11h1_gnomad_seq, "T", "C", 15528424) + diffs = sum(1 for r, a in zip(ref_p, alt_p) if r != a) + assert diffs == 1 + + # --- inframe_deletion (rs1203023715, 15528913 CCTT>C, Phe242del) ---------- + + def test_inframe_deletion_shortens_protein_by_one_aa(self, or11h1_gnomad_seq): + """22:15528913 CCTT>C (rs1203023715): 3-bp deletion removes 1 codon (Phe242).""" + ref_p, alt_p = _altseq_protein(or11h1_gnomad_seq, "CCTT", "C", 15528913) + assert len(alt_p) == len(ref_p) - 1 + + def test_inframe_deletion_preserves_upstream_aas(self, or11h1_gnomad_seq): + """Residues before the deletion site (codons 1–240) are identical in ref and alt.""" + ref_p, alt_p = _altseq_protein(or11h1_gnomad_seq, "CCTT", "C", 15528913) + del_aa = (15528913 - 15528192) // 3 # 721 // 3 = 240 + assert ref_p[:del_aa] == alt_p[:del_aa] + + # --- AF-filtered missense (rs1410655344, 15528195 A>G, Asn2Asp) ----------- + + def test_af_filtered_missense_is_real_missense(self, or11h1_gnomad_seq): + """22:15528195 A>G (rs1410655344): real missense N→D at AA 1 (AF_afr=6e-05).""" + ref_p, alt_p = _altseq_protein(or11h1_gnomad_seq, "A", "G", 15528195) + assert ref_p[1] == "N", f"expected N at AA 1, got {ref_p[1]}" + assert alt_p[1] == "D", f"expected D at AA 1, got {alt_p[1]}" + + # --- stop_gained (rs751806421, 15528246 C>T) — filtered by consequence --- + + def test_stop_gained_inserts_stop_at_aa18(self, or11h1_gnomad_seq): + """22:15528246 C>T (rs751806421): codon 19 Caa→Taa (Gln→*) at index 18.""" + ref_p, alt_p = _altseq_protein(or11h1_gnomad_seq, "C", "T", 15528246) + assert ref_p[18] == "Q", f"expected Q at AA 18, got {ref_p[18]}" + assert alt_p[18] == "*", f"expected * at AA 18, got {alt_p[18]}" + + +# =========================================================================== +# TestGnomADPipelineTranslation — full pipeline integration +# =========================================================================== + +_GNOMAD_CHUNK_ARGS = { + "annotation_field_name": "vep", + "transcript_str": "Feature", + "consequence_str": "Consequence", + "biotype_str": "BIOTYPE", + "include_biotypes": "protein_coding", + "include_consequences": "missense_variant,inframe_deletion", + "af_field": "AF_afr", + "af_threshold": 0.01, + "protein_prefix": "gnomadvar", +} + + +@pytest.fixture(scope="module") +def gnomad_pipeline_records(tmp_path_factory): + """Run _vcf_to_proteindb_chunk on gnomAD testdata; return parsed records.""" + from pgatk.ensembl.ensembl import EnsemblDataService + out = str(tmp_path_factory.mktemp("gnomad_translation") / "out.fa") + svc = EnsemblDataService({}, _GNOMAD_CHUNK_ARGS) + svc._vcf_to_proteindb_chunk( + str(_TESTDATA / "test_gnomad_bgz.vcf.gz"), + str(_TESTDATA / "test_gnomad_gencode.fa"), + str(_TESTDATA / "test_gnomad_gencode.gtf"), + out, + ) + records = {} + if Path(out).exists(): + for rec in SeqIO.parse(out, "fasta"): + records[rec.id] = str(rec.seq) + return records + + +@pytest.fixture(scope="module") +def gnomad_ref_protein(): + """Reference OR11H1 protein (frame 1, 3-frame exon mode) for diff comparison. + + Since OR11H1 has no 5′ UTR, this matches the pipeline's CDS-mode output. + """ + idx = SeqIO.index(str(_TESTDATA / "test_gnomad_gencode.fa"), "fasta") + seq = idx[_GENCODE_OR11H1_KEY].seq + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + coding_ref, _ = get_altseq( + seq, Seq("A"), Seq("A"), 15528192, "+", OR11H1_EXON_FEAT, None + ) + ref_orfs, _ = get_orfs_vcf(coding_ref, coding_ref, 1, 3) + return str(ref_orfs[0]) # frame-1 canonical protein + + +class TestGnomADPipelineTranslation: + """End-to-end pipeline correctness for gnomAD variant filtering and translation. + + The FASTA has CDS=1-948 → 1-frame CDS translation → one record per variant, + no _1/_2/_3 frame suffixes in record IDs. + """ + + def test_pipeline_produces_output(self, gnomad_pipeline_records): + assert gnomad_pipeline_records, "pipeline output must not be empty" + + def test_af_filtered_variant_absent(self, gnomad_pipeline_records): + """rs1410655344 (missense, AF_afr=6e-05 < 0.01) must be absent.""" + assert not any("rs1410655344" in k for k in gnomad_pipeline_records) + + def test_consequence_filtered_variant_absent(self, gnomad_pipeline_records): + """rs751806421 (stop_gained, AF_afr=0.02) must be absent — not in include_consequences.""" + assert not any("rs751806421" in k for k in gnomad_pipeline_records) + + def test_missense_produces_output(self, gnomad_pipeline_records): + """rs199856986 (missense V78A, AF_afr=0.124) passes all filters.""" + assert any("rs199856986" in k for k in gnomad_pipeline_records) + + def test_inframe_deletion_produces_output(self, gnomad_pipeline_records): + """rs1203023715 (inframe_del Phe242del, AF_afr=0.015) passes all filters.""" + assert any("rs1203023715" in k for k in gnomad_pipeline_records) + + def test_one_orf_emitted_per_variant(self, gnomad_pipeline_records): + """CDS= header triggers 1-frame translation → exactly 1 record per passing variant.""" + missense_keys = [k for k in gnomad_pipeline_records if "rs199856986" in k] + assert len(missense_keys) == 1, ( + f"expected 1 CDS-mode record for missense, got {len(missense_keys)}" + ) + + def test_missense_differs_at_exactly_one_position( + self, gnomad_pipeline_records, gnomad_ref_protein + ): + """rs199856986 (V78A): alt protein differs from reference at exactly 1 position.""" + seqs = [s for k, s in gnomad_pipeline_records.items() if "rs199856986" in k] + assert seqs, "no output for missense variant" + alt_p = seqs[0] + ref_stripped = gnomad_ref_protein.rstrip("*") + alt_stripped = alt_p.rstrip("*") + diffs = sum(1 for r, a in zip(ref_stripped, alt_stripped) if r != a) + assert diffs == 1, f"expected 1 AA diff, got {diffs}" + + def test_missense_has_ala_at_position77( + self, gnomad_pipeline_records, gnomad_ref_protein + ): + """rs199856986 (V78A): alt protein has A at position 77 (0-indexed); reference has V.""" + seqs = [s for k, s in gnomad_pipeline_records.items() if "rs199856986" in k] + assert seqs, "no output for missense variant" + assert gnomad_ref_protein[77] == "V", "reference must have V at AA 77" + assert seqs[0][77] == "A", f"expected A at AA 77, got {seqs[0][77]}" + + def test_inframe_deletion_shorter( + self, gnomad_pipeline_records, gnomad_ref_protein + ): + """rs1203023715 (Phe242del): alt protein is 1 AA shorter than reference.""" + seqs = [s for k, s in gnomad_pipeline_records.items() if "rs1203023715" in k] + assert seqs, "no output for inframe_deletion variant" + alt_p = seqs[0] + ref_len = len(gnomad_ref_protein.rstrip("*")) + alt_len = len(alt_p.rstrip("*")) + assert alt_len == ref_len - 1, ( + f"expected ref_len-1={ref_len - 1}, got {alt_len}" + ) diff --git a/pgatk/tests/test_variant_types_hgvs.py b/pgatk/tests/test_variant_types_hgvs.py new file mode 100644 index 00000000..f6990880 --- /dev/null +++ b/pgatk/tests/test_variant_types_hgvs.py @@ -0,0 +1,449 @@ +"""HGVS compliance tests for get_mut_pro_seq across all SO variant types. + +Each test uses a real mutation from Cosmic_CompleteTargetedScreensMutant_v103_GRCh38.tsv +paired with the matching CDS from Cosmic_Genes_v103_GRCh38.fasta. + +HGVS rules verified per type: + missense_variant – single AA substitution, length unchanged + stop_gained – stop (*) introduced at predicted position + inframe_deletion – protein shortened by exact number of deleted codons + inframe_insertion – protein lengthened by exact number of inserted codons (dup) + protein_altering_variant– delins produces a non-empty altered sequence + frameshift_variant – out-of-frame deletion produces a non-empty translated sequence + start_lost – start codon destroyed; first AA is no longer Met + stop_lost – stop codon removed; protein extends past original terminus + stop_retained_variant – stop codon changed but still a stop; length unchanged + synonymous_variant – filtered before get_mut_pro_seq (pre-processing step) + intron_variant – p.? guard returns empty string + 3_prime_UTR_variant – p.? guard returns empty string + 5_prime_UTR_variant – p.? guard returns empty string + coding_sequence_variant – p.? guard returns empty string + splice_acceptor_variant – p.? guard returns empty string + splice_donor_variant – intronic offset guard returns empty string + splice_region_variant – treated as missense when combined type contains missense_variant + incomplete_terminal_codon_variant – not present in v103 targeted screens; p.? returns "" +""" +from Bio.Seq import Seq + +from pgatk.cgenomes.cgenomes_proteindb import CancerGenomesService +from pgatk.cgenomes.models import SNP + +# --------------------------------------------------------------------------- +# CDS sequences from Cosmic_Genes_v103_GRCh38.fasta +# Key: gene symbol Value: CDS nucleotide string (ENST accession in comment) +# --------------------------------------------------------------------------- +_CDS = { + # ENST00000483967.5 – used for missense_variant + "EZH2": ( + "ATGGGCCAGACTGGGAAGAAATCTGAGAAGGGACCAGTTTGTTGGCGGAAGCGTGTAAAATCAGAGTACATGCGACTGAGACAGCTCAAGAGGTTCAGACGAGCTGATGAAGTAAAGAGTATGTTTAGTTCCAATCGTCAGAAAATTTTGGAAAGAACGGAAATCTTAAACCAAGAATGGAAACAGCGAAGGATACAGCCTGTGCACATCCTGACTTCTTGTTCGGTGACCAGTGACTTGGATTTTCCAACACAAGTCATCCCATTAAAGACTCTGAATGCAGTTGCTTCAGTACCCATAATGTATTCTTGGTCTCCCCTACAGCAGAATTTTATGGTGGAAGATGAAACTGTTTTACATAACATTCCTTATATGGGAGATGAAGTTTTAGATCAGGATGGTACTTTCATTGAAGAACTAATAAAAAATTATGATGGGAAAGTACACGGGGATAGAGAATGTGGGTTTATAAATGATGAAATTTTTGTGGAGTTGGTGAATGCCCTTGGTCAATATAATGATGATGACGATGATGATGATGGAGACGATCCTGAAGAAAGAGAAGAAAAGCAGAAAGATCTGGAGGATCACCGAGATGATAAAGAAAGCCGCCCACCTCGGAAATTTCCTTCTGATAAAATTTTTGAAGCCATTTCCTCAATGTTTCCAGATAAGGGCACAGCAGAAGAACTAAAGGAAAAATATAAAGAACTCACCGAACAGCAGCTCCCAGGCGCACTTCCTCCTGAATGTACCCCCAACATAGATGGACCAAATGCTAAATCTGTTCAGAGAGAGCAAAGCTTACACTCCTTTCATACGCTTTTCTGTAGGCGATGTTTTAAATATGACTGCTTCCTACATCCTTTTCATGCAACACCCAACACTTATAAGCGGAAGAACACAGAAACAGCTCTAGACAACAAACCTTGTGGACCACAGTGTTACCAGCATTTGGAGGGAGCAAAGGAGTTTGCTGCTGCTCTCACCGCTGAGCGGATAAAGACCCCACCAAAACGTCCAGGAGGCCGCAGAAGAGGACGGCTTCCCAATAACAGTAGCAGGCCCAGCACCCCCACCATTAATGTGCTGGAATCAAAGGATACAGACAGTGATAGGGAAGCAGGGACTGAAACGGGGGGAGAGAACAATGATAAAGAAGAAGAAGAGAAGAAAGATGAAACTTCGAGCTCCTCTGAAGCAAATTCTCGGTGTCAAACACCAATAAAGATGAAGCCAAATATTGAACCTCCTGAGAATGTGGAGTGGAGTGGTGCTGAAGCCTCAATGTTTAGAGTCCTCATTGGCACTTACTATGACAATTTCTGTGCCATTGCTAGGTTAATTGGGACCAAAACATGTAGACAGGTGTATGAGTTTAGAGTCAAAGAATCTAGCATCATAGCTCCAGCTCCCGCTGAGGATGTGGATACTCCTCCAAGGAAAAAGAAGAGGAAACACCGGTTGTGGGCTGCACACTGCAGAAAGATACAGCTGAAAAAGGACGGCTCCTCTAACCATGTTTACAACTATCAACCCTGTGATCATCCACGGCAGCCTTGTGACAGTTCGTGCCCTTGTGTGATAGCACAAAATTTTTGTGAAAAGTTTTGTCAATGTAGTTCAGAGTGTCAAAACCGCTTTCCGGGATGCCGCTGCAAAGCACAGTGCAACACCAAGCAGTGCCCGTGCTACCTGGCTGTCCGAGAGTGTGACCCTGACCTCTGTCTTACTTGTGGAGCCGCTGACCATTGGGACAGTAAAAATGTGTCCTGCAAGAACTGCAGTATTCAGCGGGGCTCCAAAAAGCATCTATTGCTGGCACCATCTGACGTGGCAGGCTGGGGGATTTTTATCAAAGATCCTGTGCAGAAAAATGAATTCATCTCAGAATACTGTGGAGAGATTATTTCTCAAGATGAAGCTGACAGAAGAGGGAAAGTGTATGATAAATACATGTGCAGCTTTCTGTTCAACTTGAACAATGATTTTGTGGTGGATGCAACCCGCAAGGGTAACAAAATTCGTTTTGCAAATCATTCGGTAAATCCAAACTGCTATGCAAAAGTTATGATGGTTAACGGTGATCACAGGATAGGTATTTTTGCCAAGAGAGCCATCCAGACTGGCGAAGAGCTGTTTTTTGATTACAGATACAGCCAGGCTGATGCCCTGAAGTATGTCGGCATCGAAAGAGAAATGGAAATCCCTTGA" + ), + # ENST00000613418.4 – used for stop_gained + "FCGR3B": ( + "ATGCGGACTGAAGATCTCCCAAAGGCTGTGGTGTTCCTGGAGCCTCAATGGTACAGCGTGCTTGAGAAGGACAGTGTGACTCTGAAGTGCCAGGGAGCC" + "TACTCCCCTGAGGACAATTCCACACAGTGGTTTCACAATGAGAACCTCATCTCAAGCCAGGCCTCGAGCTACTTCATTGACGCTGCCACAGTCAACGAC" + "AGTGGAGAGTACAGGTGCCAGACAAACCTCTCCACCCTCAGTGACCCGGTGCAGCTAGAAGTCCATATCGGCTGGCTGTTGCTCCAGGCCCCTCGGTGGG" + "TGTTCAAGGAGGAAGACCCTATTCACCTGAGGTGTCACAGCTGGAAGAACACTGCTCTGCATAAGGTCACATATTTACAGAATGGCAAAGACAGGAAGTAT" + "TTTCATCATAATTCTGACTTCCACATTCCAAAAGCCACACTCAAAGATAGCGGCTCCTACTTCTGCAGGGGGCTTGTTGGGAGTAAAAATGTGTCTTCAGA" + "GACTGTGAACATCACCATCACTCAAGGTTTGGCAGTGTCAACCATCTCATCATTCTCTCCACCTGGGTACCAAGTCTCTTTCTGCTTGGTGATGGTACTCC" + "TTTTTGCAGTGGACACAGGACTATATTTCTCTGTGAAGACAAACATTTGA" + ), + # ENST00000646174.1 – used for inframe_deletion + "CTNNB1": ( + "ATGGAGTTGGACATGGCCATGGAACCAGACAGAAAAGCGGCTGTTAGTCACTGGCAGCAACAGTCTTACCTGGACTCTGGAATCCATTCTGGTGCCACTAC" + "CACAGCTCCTTCTCTGAGTGGTAAAGGCAATCCTGAGGAAGAGGATGTGGATACCTCCCAAGTCCTGTATGAGTGGGAACAGGGATTTTCTCAGTCCTTCA" + "CTCAAGAACAAGTAGCTGATATTGATGGACAGTATGCAATGACTCGAGCTCAGAGGGTACGAGCTGCTATGTTCCCTGAGACATTAGATGAGGGCATGCAGA" + "TCCCATCTACACAGTTTGATGCTGCTCATCCCACTAATGTCCAGCGTTTGGCTGAACCATCACAGATGCTGAAACATGCAGTTGTAAACTTGATTAACTATCA" + "AGATGATGCAGAACTTGCCACACGTGCAATCCCTGAACTGACAAAACTGCTAAATGACGAGGACCAGGTGGTGGTTAATAAGGCTGCAGTTATGGTCCATCAG" + "CTTTCTAAAAAGGAAGCTTCCAGACACGCTATCATGCGTTCTCCTCAGATGGTGTCTGCTATTGTACGTACCATGCAGAATACAAATGATGTAGAAACAGCTCG" + "TTGTACCGCTGGGACCTTGCATAACCTTTCCCATCATCGTGAGGGCTTACTGGCCATCTTTAAGTCTGGAGGCATTCCTGCCCTGGTGAAAATGCTTGGTTCAC" + "CAGTGGATTCTGTGTTGTTTTATGCCATTACAACTCTCCACAACCTTTTATTACATCAAGAAGGAGCTAAAATGGCAGTGCGTTTAGCTGGTGGGCTGCAGAAAA" + "TGGTTGCCTTGCTCAACAAAACAAATGTTAAATTCTTGGCTATTACGACAGACTGCCTTCAAATTTTAGCTTATGGCAACCAAGAAAGCAAGCTCATCATACTGG" + "CTAGTGGTGGACCCCAAGCTTTAGTAAATATAATGAGGACCTATACTTACGAAAAACTACTGTGGACCACAAGCAGAGTGCTGAAGGTGCTATCTGTCTGCTCTA" + "GTAATAAGCCGGCTATTGTAGAAGCTGGTGGAATGCAAGCTTTAGGACTTCACCTGACAGATCCAAGTCAACGTCTTGTTCAGAACTGTCTTTGGACTCTCAGGA" + "ATCTTTCAGATGCTGCAACTAAACAGGAAGGGATGGAAGGTCTCCTTGGGACTCTTGTTCAGCTTCTGGGTTCAGATGATATAAATGTGGTCACCTGTGCAGCTG" + "GAATTCTTTCTAACCTCACTTGCAATAATTATAAGAACAAGATGATGGTCTGCCAAGTGGGTGGTATAGAGGCTCTTGTGCGTACTGTCCTTCGGGCTGGTGACAG" + "GGAAGACATCACTGAGCCTGCCATCTGTGCTCTTCGTCATCTGACCAGCCGACACCAAGAAGCAGAGATGGCCCAGAATGCAGTTCGCCTTCACTATGGACTACCA" + "GTTGTGGTTAAGCTCTTACACCCACCATCCCACTGGCCTCTGATAAAGGCTACTGTTGGATTGATTCGAAATCTTGCCCTTTGTCCCGCAAATCATGCACCTTTGC" + "GTGAGCAGGGTGCCATTCCACGACTAGTTCAGTTGCTTGTTCGTGCACATCAGGATACCCAGCGCCGTACGTCCATGGGTGGGACACAGCAGCAATTTGTGGAGGG" + "GGTCCGCATGGAAGAAATAGTTGAAGGTTGTACCGGAGCCCTTCACATCCTAGCTCGGGATGTTCACAACCGAATTGTTATCAGAGGACTAAATACCATTCCATTG" + "TTTGTGCAGCTGCTTTATTCTCCCATTGAAAACATCCAAAGAGTAGCTGCAGGGGTCCTCTGTGAACTTGCTCAGGACAAGGAAGCTGCAGAAGCTATTGAAGCTG" + "AGGGAGCCACAGCTCCTCTGACAGAGTTACTTCACTCTAGGAATGAAGGTGTGGCGACATATGCAGCTGCTGTTTTGTTCCGAATGTCTGAGGACAAGCCACAAGAT" + "TACAAGAAACGGCTTTCAGTTGAGCTGACCAGCTCTCTCTTCAGAACAGAGCCAATGGCTTGGAATGAGACTGCTGATCTTGGACTTGATATTGGTGCCCAGGGAGAA" + "CCCCTTGGATATCGCCAGGATGATCCTAGCTATCGTTCTTTTCACTCTGGTGGATATGGCCAGGATGCCTTGGGTATGGACCCCATGATGGAACATGAGATGGGTGGC" + "CACCACCCTGGTGCTGACTATCCAGTTGATGGGCTGCCAGATCTGGGGCATGCCCAGGACCTCATGGATGGGCTGCCTCCAGGTGACAGCAATCAGCTGGCCTGGTTT" + "GATACTGACCTGTAA" + ), + # ENST00000370452.7 – used for inframe_insertion (dup) + "SMAP1": ( + "ATGGCGACGCGCTCCTGTCGGGAGAAGGCTCAGAAGCTGAACGAGCAGCACCAGCTCATCCTATCCAAGCTTCTGAGGGAGGAGGACAACAAGTACTGCGCC" + "GACTGCGAGGCCAAAGGTCCTCGATGGGCTTCCTGGAATATTGGTGTGTTTATTTGCATCAGATGTGCTGGAATTCATAGAAATCTTGGGGTTCATATATCC" + "AGGGTCAAATCAGTCAACCTAGACCAATGGACAGCAGAACAGATACAGTGCATGCAAGATATGGGAAATACTAAAGCAAGACTACTCTATGAAGCCAATCTTCC" + "AGAGAACTTTCGAAGACCACAGACAGATCAAGCAGTGGAATTTTTCATCAGAGATAAATATGAAAAGAAGAAATACTACGATAAAAATGCCATAGCTATTACAAAT" + "AAAGAAAAGGAAGAAAAAAAAGGAAGAGAAAAAGAGAGAAAAGGAGCCAGAAAAGCCGGCAAAACCACTTACAGCTGAAAAGCTGCAGAAGAAAGATCAGCAACTGG" + "AGCCTAAAAAAAGTACCAGCCCTAAAAAAGCTGCGGAGCCCACTGTGGATCTTTTAGGACTTGATGGCCCTGCTGTGGCACCAGTGACCAACGGGAACACAACGGTG" + "CCACCCCTGAACGATGATCTGGACATCTTTGGACCGATGATTTCTAATCCCTTACCTGCAACTGTCATGCCCCCAGCTCAGGGGACACCCTCTGCACCAGCAGCTGCA" + "ACCCTGTCTACAGTAACATCTGGGGATCTAGATTTATTCACTGAGCAAACTACAAAATCAGAAGAAGTGGCAAAGAAACAACTTTCCAAAGACTCCATCTTATCTCTG" + "TATGGCACAGGAACCATTCAACAGCAAAGTACTCCTGGTGTATTTATGGGACCCACAAATATACCATTTACCTCACAAGCACCAGCTGCATTTCAGGGCTTTCCATCG" + "ATGGGCGTGCCTGTGCCTGCAGCTCCTGGCCTTATAGGAAATGTGATGGGACAGAGTCCAAGCATGATGGTGGGCATGCCCATGCCCAATGGGTTTATGGGAAATGCA" + "CAAACTGGTGTGATGCCACTTCCTCAGAACGTTGTTGGCCCCCAAGGAGGAATGGTGGGACAAATGGGTGCACCCCAGAGTAAGTTTGGCCTGCCGCAAGCTCAGCAG" + "CCCCAGTGGAGCCTCTCACAGATAATGCAGAAGGGTGATGCTGTTCTCCAGCACTCCATCAGTGCAATCTACTGGCCAATGACAAGGTGGTTAAAATGTCCTTTAGT" + "AGATGAATCAGCAGATGGCTGGCATGAGTATCAGTAG" + ), + # ENST00000361676.8 – used for protein_altering_variant + "NF2": ( + "ATGGCCGGGGCCATCGCTTCCCGCATGAGCTTCAGCTCTCTCAAGAGGAAGCAACCCAAGACGTTCACCGTGAGGATCGTCACCATGGACGCCGAGATGGAG" + "TTCAATTGCGAGGTACTGGATCATGATGTTTCAAAGGAAGAACCAGTCACCTTTCACTTCTTGGCCAAATTTTATCCTGAGAATGCTGAAGAGGAGCTGGTT" + "CAGGAGATCACACAACATTTATTCTTCTTACAGGTAAAGAAGCAGATTTTAGATGAAAAGATCTACTGCCCTCCTGAGGCTTCTGTGCTCCTGGCTTCTTACG" + "CCGTCCAGGCCAAGTATGGTGACTACGACCCCAGTGTTCACAAGCGGGGATTTTTGGCCCAAGAGGAATTGCTTCCAAAAAGGGTAATAAATCTGTATCAGAT" + "GACTCCGGAAATGTGGGAGGAGAGAATTACTGCTTGGTACGCAGAGCACCGAGGCCGAGCCAGGGATGAAGCTGAAATGGAATATCTGAAGATAGCTCAGGAC" + "CTGGAGATGTACGGTGTGAACTACTTTGCAATCCGGAATAAAAAGGGCACAGAGCTGCTGCTTGGAGTGGATGCCCTGGGGCTTCACATTTATGACCCTGAGA" + "ACAGACTGACCCCCAAGATCTCCTTCCCGTGGAATGAAATCCGAAACATCTCGTACAGTGACAAGGAGTTTACTATTAAACCACTGGATAAGAAAATTGATGTC" + "TTCAAGTTTAACTCCTCAAAGCTTCGTGTTAATAAGCTGATTCTCCAGCTATGTATCGGGAACCATGATCTATTTATGAGGAGAAGGAAAGCCGATTCTTTGGAA" + "GTTCAGCAGATGAAAGCCCAGGCCAGGGAGGAGAAGGCTAGAAAGCAGATGGAGCGGCAGCGCCTCGCTCGAGAGAAGCAGATGAGGGAGGAGGCTGAACGCACG" + "AGGGATGAGTTGGAGAGGAGGCTGCTGCAGATGAAAGAAGAAGCAACAATGGCCAACGAAGCACTGATGCGGTCTGAGGAGACAGCTGACCTGTTGGCTGAAAAG" + "GCCCAGATCACCGAGGAGGAGGCAAAACTTCTGGCCCAGAAGGCCGCAGAGGCTGAGCAGGAAATGCAGCGCATCAAGGCCACAGCGATTCGCACGGAGGAGGAG" + "AAGCGCCTGATGGAGCAGAAGGTGCTGGAAGCCGAGGTGCTGGCACTGAAGATGGCTGAGGAGTCAGAGAGGAGGGCCAAAGAGGCAGATCAGCTGAAGCAGGAC" + "CTGCAGGAAGCACGCGAGGCGGAGCGAAGAGCCAAGCAGAAGCTCCTGGAGATTGCCACCAAGCCCACGTACCCGCCCATGAACCCAATTCCAGCACCGTTGCCTC" + "CTGACATACCAAGCTTCAACCTCATTGGTGACAGCCTGTCTTTCGACTTCAAAGATACTGACATGAAGCGGCTTTCCATGGAGATAGAGAAAGAAAAAGTGGAATAC" + "ATGGAAAAGAGCAAGCATCTGCAGGAGCAGCTCAATGAACTCAAGACAGAAATCGAGGCCTTGAAACTGAAAGAGAGGGAGACAGCTCTGGATATTCTGCACAATGA" + "GAACTCCGACAGGGGTGGCAGCAGCAAGCACAATACCATTAAAAAGCCTCAAGCCCAAGGCAGAAGACCTATCTGCATTTGA" + ), + # ENST00000394374.6 – used for frameshift_variant + "MEN1": ( + "ATGGGGCTGAAGGCCGCCCAGAAGACGCTGTTCCCGCTGCGCTCCATCGACGACGTGGTGCGCCTGTTTGCTGCCGAGCTGGGCCGAGAGGAGCCGGACCTG" + "GTGCTCCTTTCCTTGGTGCTGGGCTTCGTGGAGCATTTTCTGGCTGTCAACCGCGTCATCCCTACCAACGTTCCCGAGCTCACCTTCCAGCCCAGCCCCGCCC" + "CCGACCCGCCTGGCGGCCTCACCTACTTTCCCGTGGCCGACCTGTCTATCATCGCCGCCCTCTATGCCCGCTTCACCGCCCAGATCCGAGGCGCCGTCGACCTG" + "TCCCTCTATCCTCGAGAAGGGGGTGTCTCCAGCCGTGAGCTGGTGAAGAAGGTCTCCGATGTCATATGGAACAGCCTCAGCCGCTCCTACTTCAAGGATCGGGCC" + "CACATCCAGTCCCTCTTCAGCTTCATCACAGGTTGGAGCCCAGTAGGCACCAAATTGGACAGCTCCGGTGTGGCCTTTGCTGTGGTTGGGGCCTGCCAGGCCCTGG" + "GTCTCCGGGATGTCCACCTCGCCCTGTCTGAGGATCATGCCTGGGTAGTGTTTGGGCCCAATGGGGAGCAGACAGCTGAGGTCACCTGGCACGGCAAGGGCAACGA" + "GGACCGCAGGGGCCAGACAGTCAATGCCGGTGTGGCTGAGCGGAGCTGGCTGTACCTGAAAGGATCATACATGCGCTGTGACCGCAAGATGGAGGTGGCGTTCATG" + "GTGTGTGCCATCAACCCTTCCATTGACCTGCACACCGACTCGCTGGAGCTTCTGCAGCTGCAGCAGAAGCTGCTCTGGCTGCTCTATGACCTGGGACATCTGGAAAG" + "GTACCCCATGGCCTTAGGGAACCTGGCAGATCTAGAGGAGCTGGAGCCCACCCCTGGCCGGCCAGACCCACTCACCCTCTACCACAAGGGCATTGCCTCAGCCAAGAC" + "CTACTATCGGGATGAACACATCTACCCCTACATGTACCTGGCTGGCTACCACTGTCGCAACCGCAATGTGCGGGAAGCCCTGCAGGCCTGGGCGGACACGGCCACTGT" + "CATCCAGGACTACAACTACTGCCGGGAAGACGAGGAGATCTACAAGGAGTTCTTTGAAGTAGCCAATGATGTCATCCCCAACCTGCTGAAGGAGGCAGCCAGCTTGCT" + "GGAGGCGGGCGAGGAGCGGCCGGGGGAGCAAAGCCAGGGCACCCAGAGCCAAGGTTCCGCCCTCCAGGACCCTGAGTGCTTCGCCCACCTGCTGCGATTCTACGACGG" + "CATCTGCAAATGGGAGGAGGGCAGTCCCACGCCTGTGCTGCATGTGGGCTGGGCCACCTTTCTTGTGCAGTCCCTAGGCCGTTTTGAGGGACAGGTGCGGCAGAAGGT" + "GCGCATAGTGAGCCGAGAGGCCGAGGCGGCCGAGGCCGAGGAGCCGTGGGGCGAGGAAGCCCGGGAAGGCCGGCGGCGGGGCCCACGGCGGGAGTCCAAGCCAGAGGAG" + "CCCCCGCCGCCCAAGAAGCCAGCACTGGACAAGGGCCTGGGCACCGGCCAGGGTGCAGTGTCAGGACCCCCCCGGAAGCCTCCTGGGACTGTCGCTGGCACAGCCCGAGG" + "CCCTGAAGGTGGCAGCACGGCTCAGGTGCCAGCACCCACAGCATCACCACCGCCGGAGGGTCCAGTGCTCACTTTCCAGAGTGAGAAGATGAAGGGCATGAAGGAGCTGC" + "TGGTGGCCACCAAGATCAACTCGAGCGCCATCAAGCTGCAACTCACGGCACAGTCGCAAGTGCAGATGAAGAAGCAGAAAGTGTCCACCCCTAGTGACTACACTCTGTCT" + "TTCCTCAAGCGGCAGCGCAAAGGCCTCTGA" + ), + # ENST00000513000.5 – used for start_lost + "INPP4B": ( + "ATGGAAATTAAAGAGGAAGGGGCATCAGAAGAAGGGCAGCACTTTCTTCCTACAGCCCAGGCCAATGATCCCGGGGACTGTCAGTTCACAAGTATCCAGAAGAC" + "TCCAAATGAACCGCAGTTGGAATTCATCCTTGCATGCAAGGATCTCGTGGCTCCTGTCCGTGATCGTAAACTGAATACACTGGTGCAGATCTCCGTAATCCACC" + "CCGTGGAGCAGAGTCTGACAAGATACTCCAGCACCGAAATTGTGGAGGGAACAAGGGACCCACTGTTTTTGACTGGTGTCACATTCCCATCTGAGTATCCCATCT" + "ATGAGGAGACCAAAATAAAACTAACAGTCTATGATGTCAAGGATAAGTCTCATGACACCGTTCGAACCAGTGTCCTACCAGAACATAAGGATCCCCCGCCAGAAGT" + "TGGGCGAAGTTTCTTGGGCTATGCCAGTTTTAAAGTGGGAGAGCTGCTGAAGTCAAAGGAGCAATTGCTGGTCCTGAGCCTGAGAACTTCAGATGGTGGCAAAGTG" + "GTTGGCACCATAGAAGTCAGTGTCGTGAAGATGGGGGAGATTGAGGATGGGGAAGCCGACCACATCACCACAGATGTACAGGGACAAAAGTGTGCCCTGGTATGTGA" + "ATGTACAGCCCCGGAAAGTGTGAGCGGAAAAGATAACTTACCTTTTTTGAATTCAGTGTTAAAGAACCCAGTATGTAAATTATATAGATTTCCCACATCTGACAATAAG" + "TGGATGCGAATTCGAGAGCAGATGTCAGAGAGCATTCTTTCCTTTCATATTCCTAAGGAATTGATTTCCCTTCACATTAAAGAAGATTTGTGCAGAAACCAGGAGATA" + "AAAGAACTTGGTGAGCTTTCTCCACATTGGGACAATCTGCGAAAAAATGTCCTTACTCACTGTGATCAAATGGTGAATATGTACCAAGACATTCTGACAGAACTTAGCA" + "AGGAAACAGGGTCCTCTTTCAAATCAAGCAGCAGCAAAGGAGAGAAAACATTAGAATTTGTTCCAATAAATCTACATCTGCAAAGAATGCAGGTACACAGCCCTCACTTG" + "AAAGATGCTCTCTACGATGTCATCACTGTGGGAGCCCCAGCTGCCCATTTTCAGGGATTTAAGAATGGTGGTCTTCGGAAGCTACTCCATAGATTTGAAACAGAAAGAAG" + "AAATACCGGATACCAGTTTATTTACTATTCACCTGAAAACACAGCCAAAGCAAAGGAAGTTCTCAGCAACATCAATCAACTACAACCTCTTATAGCAACCCATGCAGACC" + "TACTGCTTAATTCTGCAAGCCAGCATTCTCCAGACAGCTTGAAGAATTCTTTAAAGATGCTTTCAGAAAAAACAGAGCTTTTTGTACATGCCTTCAAGGATCAACTTGTC" + "AGGAGTGCTCTTTTAGCACTCTACACTGCAAGGCCAGGAGGCATTCTTAAGAAGCCACCCTCTCCTAAGAGCAGCACAGAGGAGAGCAGTCCCCAAGACCAACCCCCAGT" + "GATGAGAGGGCAGGACTCCATACCACATCATTCAGACTATGATGAGGAAGAGTGGGACAGGGTGTGGGCCAATGTGGGGAAGAGCCTGAACTGCATTATTGCTATGGTGG" + "ACAAACTGATTGAAAGAGATGGTGGCAGTGAAGGCAGTGGCGGCAACAATGATGGAGAAAAGGAACCTTCATTAACAGATGCCATTCCCTCTCACCCAAGAGAGGACTGG" + "TATGAACAGTTGTATCCCCTCATCCTTACCCTGAAGGACTGCATGGGAGAAGTGGTGAACCGAGCCAAGCAGTCCCTGACATTTGTGCTCCTTCAGGAACTTGCGTACAGC" + "TTGCCCCAGTGTCTGATGCTGACGCTAAGAAGAGACATCGTCTTCAGCCAAGCACTTGCTGGATTGGTTTGTGGTTTTATCATCAAATTACAGACAAGTCTGTATGACCC" + "AGGCTTCCTACAGCAGCTTCACACAGTGGGGTTGATAGTACAATATGAAGGACTGCTAAGTACATACAGCGATGAAATTGGAATGCTAGAGGACATGGCCGTTGGCATTTC" + "CGATTTAAAGAAAGTTGCATTTAAAATAATTGAAGCCAAATCCAATGATGTGTTGCCAGTTATAACAGGAAGACGAGAACATTACGTGGTAGAGGTCAAGCTTCCAGCCAG" + "AATGTTTGAGTCACTACCTCTACAGATTAAAGAAGGACAGTTGCTTCATGTGTATCCAGTACTTTTTAATGTTGGAATCAATGAACAGCAAACTCTGGCTGAAAGGTTTGG" + "AGATGTCTCTTTGCAAGAAAGTATTAATCAGGAAAACTTCGAACTTCTACAAGAATATTACAAGATATTTATGGAAAAGATGCCTCCTGATTATATTTCACATTTTCAGGAA" + "CAAAATGATTTAAAAGCATTGCTAGAAAATCTCCTTCAAAATATCCAATCCAAAAAAAGAAAGAATGTAGAAATTATGTGGCTGGCTGCAACGATTTGCCGCAAACTGAATG" + "GTATTCGTTTCACCTGTTGTAAAAGTGCCAAAGACAGGACATCGATGTCAGTGACACTTGAACAATGCTCAATCTTGAGAGATGAGCACCAGTTACACAAGGACTTCTTTAT" + "CCGAGCGCTGGATTGCATGAGAAGAGAAGGATGCCGCATAGAGAATGTACTGAAGAATATCAAATGCAGAAAGTATGCTTTCAACATGCTACAGCTGATGGCTTTCCCCAAG" + "TACTACAGACCTCCAGAGGGGACTTATGGAAAAGCTGACACCTAA" + ), + # ENST00000443433.6 – used for stop_lost + "MYD88": ( + "ATGCGACCCGACCGCGCTGAGGCTCCAGGACCGCCCGCCATGGCTGCAGGAGGTCCCGGCGCGGGGTCTGCGGCCCCGGTCTCCTCCACATCCTCCCTTCCCC" + "TGGCTGCTCTCAACATGCGAGTGCGGCGCCGCCTGTCTCTGTTCTTGAACGTGCGGACACAGGTGGCGGCCGACTGGACCGCGCTGGCGGAGGAGATGGACTTT" + "GAGTACTTGGAGATCCGGCAACTGGAGACACAAGCGGACCCCACTGGCAGGCTGCTGGACGCCTGGCAGGGACGCCCTGGCGCCTCTGTAGGCCGACTGCTCGAG" + "CTGCTTACCAAGCTGGGCCGCGACGACGTGCTGCTGGAGCTGGGACCCAGCATTGAGGAGGATTGCCAAAAGTATATCTTGAAGCAGCAGCAGGAGGAGGCTGAG" + "AAGCCTTTACAGGTGGCCGCTGTAGACAGCAGTGTCCCACGGACAGCAGAGCTGGCGGGCATCACCACACTTGATGACCCCCTGGGTGCCGCCGGATGGTGGTGGT" + "TGTCTCTGATGATTACCTGCAGAGCAAGGAATGTGACTTCCAGACCAAATTTGCACTCAGCCTCTCTCCAGGTGCCCATCAGAAGCGACTGA" + ), + # ENST00000494014.1 – used for stop_retained_variant + "EPHA3": ( + "ATGGATTGTCAGCTCTCCATCCTCCTCCTTCTCAGCTGCTCTGTTCTCGACAGCTTCGGGGAACTGATTCCGCAGCCTTCCAATGAAGTCAATCTACTGGATTC" + "AAAAACAATTCAAGGGGAGCTGGGCTGGATCTCTTATCCATCACATGGGTGGGAAGAGATCAGTGGTGTGGATGAACATTACACACCCATCAGGACTTACCAGGTG" + "TGCAATGTCATGGACCACAGTCAAAACAATTGGCTGAGAACAAACTGGGTCCCCAGGAACTCAGCTCAGAAGATTTATGTGGAGCTCAAGTTCACTCTACGAGACTG" + "CAATAGCATTCCATTGGTTTTAGGAACTTGCAAGGAGACATTCAACCTGTACTACATGGAGTCTGATGATGATCATGGGGTGAAATTTCGAGAGCATCAGTTTACAAA" + "GATTGACACCATTGCAGCTGATGAAAGTTTCACTCAAATGGATCTTGGGGACCGTATTCTGAAGCTCAACACTGAGATTAGAGAAGTAGGTCCTGTCAACAAGAAGGG" + "ATTTTATTTGGCATTTCAAGATGTTGGTGCTTGTGTTGCCTTGGTGTCTGTGAGAGTATACTTCAAAAAGTGCCCATTTACAGTGAAGAATCTGGCTATGTTTCCAGA" + "CACGGTACCCATGGACTCCCAGTCCCTGGTGGAGGTTAGAGGGTCTTGTGTCAACAATTCTAAGGAGGAAGATCCTCCAAGGATGTACTGCAGTACAGAAGGCGAATGG" + "CTTGTACCCATTGGCAAGTGTTCCTGCAATGCTGGCTATGAAGAAAGAGGTTTTATGTGCCAAGCTTGTCGACCAGGTTTCTACAAGGCATTGGATGGTAATATGAAGT" + "GTGCTAAGTGCCCGCCTCACAGTTCTACTCAGGAAGATGGTTCAATGAACTGCAGGTGTGAGAATAATTACTTCCGGGCAGACAAAGACCCTCCATCCATGGCTTGTACC" + "CGACCTCCATCTTCACCAAGAAATGTTATCTCTAATATAAACGAGACCTCAGTTATCCTGGACTGGAGTTGGCCCCTGGACACAGGAGGCCGGAAAGATGTTACCTTCAAC" + "ATCATATGTAAAAAATGTGGGTGGAATATAAAACAGTGTGAGCCATGCAGCCCAAATGTCCGCTTCCTCCCTCGACAGTTTGGACTCACCAACACCACGGTGACAGTGACAG" + "ACCTTCTGGCACATACTAACTACACCTTTGAGATTGATGCCGTTAATGGGGTGTCAGAGCTGAGCTCCCCACCAAGACAGTTTGCTGCGGTCAGCATCACAACTAATCAGGC" + "TGCTCCATCACCTGTCCTGACGATTAAGAAAGATCGGACCTCCAGAAATAGCATCTCTTTGTCCTGGCAAGAACCTGAACATCCTAATGGGATCATATTGGACTACGAGGTC" + "AAATACTATGAAAAGCAGGAACAAGAAACAAGTTATACCATTCTGAGGGCAAGAGGCACAAATGTTACCATCAGTAGCCTCAAGCCTGACACTATATACGTATTCCAAATCC" + "GAGCCCGAACAGCCGCTGGATATGGGACGAACAGCCGCAAGTTTGAGTTTGAAACTAGTCCAGACTCTTTCTCCATCTCTGGTGAAAGTAGCCAAGTGGTCATGATCGCCAT" + "TTCAGCGGCAGTAGCAATTATTCTCCTCACTGTTGTCATCTATGTTTTGATTGGGAGGTTCTGTGGCTATAAGTCAAAACATGGGGCAGATGAAAAAAGACTTCATTTTGGC" + "AATGGGCATTTAAAACTTCCAGGTCTCAGGACTTATGTTGACCCACATACATATGAAGACCCTACCCAAGCTGTTCATGAGTTTGCCAAGGAATTGGATGCCACCAACATATC" + "CATTGATAAAGTTGTTGGAGCAGGTGAATTTGGAGAGGTGTGCAGTGGTCGCTTAAAACTTCCTTCAAAAAAAGAGATTTCAGTGGCCATTAAGACCCTGAAAGTTGGCTAC" + "ACAGAAAAGCAGAGGAGAGACTTCCTGGGAGAAGCAAGCATTATGGGACAGTTTGACCACCCCAATATCATTCGACTGGAAGGAGTTGTTACCAAAAGTAAGCCAGTTATGA" + "TTGTCACAGAATACATGGAGAATGGTTCCTTGGATAGTTTCCTACGTAAACACGATGCCCAGTTTACTGTCATTCAGCTAGTGGGGATGCTTCGAGGGATAGCATCTGGCAT" + "GAAGTACCTGTCAGACATGGGCTATGTTCACCGAGACCTCGCTGCTCGGAACATCTTGATCAACAGTAACTTGGTGTGTAAGGTTTCTGATTTCGGACTTTCGCGTGTCCTG" + "GAGGATGACCCAGAAGCTGCTTATACAACAAGAGGAGGGAAGATCCCAATCAGGTGGACATCACCAGAAGCTATAGCCTACCGCAAGTTCACGTCAGCCAGCGATGTATGGAG" + "TTATGGGATTGTTCTCTGGGAGGTGATGTCTTATGGAGAGAGACCATACTGGGAGATGTCCAATCAGGATGTAATTAAAGCTGTAGATGAGGGCTATCGACTGCCACCCCCC" + "ATGGACTGCCCAGCTGCCTTGTATCAGCTGATGCTGGACTGCTGGCAGAAAGACAGGAACAACAGACCCAAGTTTGAGCAGATTGTTAGTATTCTGGACAAGCTTATCCGGA" + "ATCCCGGCAGCCTGAAGATCATCACCAGTGCAGCCGCAAGGCCATCAAACCTTCTTCTGGACCAAAGCAATGTGGATATCACTACCTTCCGCACAACAGTGACATGA" + ), +} + + +def _seq(gene: str) -> Seq: + return Seq("".join(_CDS[gene].split())) + + +def _wt_protein(gene: str) -> str: + return str(_seq(gene).translate(to_stop=False)) + + +def _call(gene, dna_mut, aa_mut, mutation_type) -> str: + snp = SNP(gene=gene, mrna="", dna_mut=dna_mut, aa_mut=aa_mut, mutation_type=mutation_type) + return CancerGenomesService.get_mut_pro_seq(snp, _seq(gene)) + + +# --------------------------------------------------------------------------- +# Actionable types — should produce a non-empty mutant protein +# --------------------------------------------------------------------------- + +class TestActionableVariantTypes: + + def test_missense_variant(self): + """HGVS rule: single AA substitution leaves total protein length unchanged. + + Source: EZH2 c.656C>T p.S219F (missense_variant) + DNA path: substitution at position 656 (C→T) changes codon 219 from Ser to Phe. + """ + wt = _wt_protein("EZH2") + result = _call("EZH2", "c.656C>T", "p.S219F", "missense_variant") + + assert result, "missense_variant must produce a non-empty protein" + assert len(result) == len(wt), ( + f"Missense must preserve protein length: wt={len(wt)}, mut={len(result)}" + ) + assert result[218] == "F", ( + f"Position 219 (index 218) must change to Phe; got '{result[218]}'" + ) + assert result[:218] == wt[:218], "Residues before the substitution must be unchanged" + assert result[219:] == wt[219:], "Residues after the substitution must be unchanged" + + def test_stop_gained(self): + """HGVS rule: stop codon (*) introduced at the predicted position. + + Source: FCGR3B c.394A>T p.K132* (stop_gained) + DNA path: substitution at position 394 (A→T) converts codon 132 to a stop. + """ + result = _call("FCGR3B", "c.394A>T", "p.K132*", "stop_gained") + + assert result, "stop_gained must produce a non-empty translated sequence" + assert result[131] == "*", ( + f"Stop codon must be introduced at position 132 (index 131); got '{result[131]}'" + ) + + def test_inframe_deletion(self): + """HGVS rule: in-frame deletion shortens the protein by exactly the number of deleted codons. + + Source: CTNNB1 c.104_124del p.T35_G41del (inframe_deletion) + DNA path: deletes 21 nucleotides (positions 104–124) = 7 codons = 7 amino acids. + """ + wt = _wt_protein("CTNNB1") + result = _call("CTNNB1", "c.104_124del", "p.T35_G41del", "inframe_deletion") + + deleted_nt = 124 - 104 + 1 # 21 nt = 7 codons + deleted_aa = deleted_nt // 3 + + assert result, "inframe_deletion must produce a non-empty protein" + assert len(result) == len(wt) - deleted_aa, ( + f"Inframe deletion of {deleted_aa} AAs: expected len {len(wt) - deleted_aa}, " + f"got {len(result)}" + ) + assert result[:34] == wt[:34], "Residues before the deletion must be unchanged" + + def test_inframe_insertion_dup(self): + """HGVS rule: in-frame duplication lengthens the protein by exactly the number of duplicated codons. + + Source: SMAP1 c.1226_1228dup p.I409dup (inframe_insertion) + DNA path: duplicates 3 nucleotides (positions 1226–1228) = 1 codon = 1 amino acid inserted. + """ + wt = _wt_protein("SMAP1") + result = _call("SMAP1", "c.1226_1228dup", "p.I409dup", "inframe_insertion") + + inserted_nt = 1228 - 1226 + 1 # 3 nt = 1 codon + inserted_aa = inserted_nt // 3 + + assert result, "inframe_insertion (dup) must produce a non-empty protein" + assert len(result) == len(wt) + inserted_aa, ( + f"Duplication of {inserted_aa} AA: expected len {len(wt) + inserted_aa}, " + f"got {len(result)}" + ) + assert result[:409] == wt[:409], "Residues before the duplication site must be unchanged" + + def test_protein_altering_variant(self): + """HGVS rule: delins replaces a nucleotide range; result is non-empty and differs from WT. + + Source: NF2 c.252_262delinsCT p.L85_K88delins* (protein_altering_variant) + DNA path: deletes positions 252–262 (11 nt) and inserts CT (2 nt). + The AA annotation (delins*) predicts a premature stop in the altered sequence. + """ + wt = _wt_protein("NF2") + result = _call("NF2", "c.252_262delinsCT", "p.L85_K88delins*", "protein_altering_variant") + + assert result, "protein_altering_variant must produce a non-empty sequence" + assert result != wt, "protein_altering_variant must differ from the wild-type sequence" + + def test_frameshift_variant(self): + """HGVS rule: out-of-frame deletion disrupts the reading frame; the code translates the + resulting sequence as-is (to_stop=False) producing a non-empty aberrant protein. + + Source: MEN1 c.292del p.R98Efs*21 (frameshift_variant) + DNA path: single-nucleotide deletion at position 292 shifts the reading frame. + """ + result = _call("MEN1", "c.292del", "p.R98Efs*21", "frameshift_variant") + + assert result, "frameshift_variant must produce a non-empty translated sequence" + + def test_start_lost(self): + """HGVS rule: start codon destroyed; the processed sequence no longer begins with Met. + + Source: INPP4B c.3G>T p.M1? (start_lost) + The annotation is p.M1? (ambiguous protein consequence) but dna_mut is unambiguous, + so the DNA substitution path is taken. ATG (Met) → ATT (Ile) at codon 1. + """ + result = _call("INPP4B", "c.3G>T", "p.M1?", "start_lost") + + assert result, "start_lost must produce a non-empty translated sequence via the DNA path" + assert result[0] != "M", "Start codon is destroyed; first AA must no longer be Met" + assert result[0] == "I", "ATG→ATT encodes Ile; first AA must be Ile" + + def test_stop_lost(self): + """HGVS rule: stop codon removed; the protein extends past the original terminus. + + Source: MYD88 c.611_613delinsGCGGCCCCC p.D204_*205delinsGGPR (protein_altering_variant,stop_lost) + DNA path: delins at 611–613 removes the original stop codon; the protein extends. + """ + wt = _wt_protein("MYD88") + result = _call( + "MYD88", + "c.611_613delinsGCGGCCCCC", + "p.D204_*205delinsGGPR", + "protein_altering_variant,stop_lost", + ) + + assert result, "stop_lost must produce a non-empty protein" + assert len(result) > len(wt), ( + f"Stop-lost protein must be longer than WT: wt={len(wt)}, mut={len(result)}" + ) + + def test_stop_retained_variant(self): + """HGVS rule: synonymous change at the stop codon; stop is preserved; length unchanged. + + Source: EPHA3 c.2756G>A p.*919= (stop_retained_variant) + DNA path: TGA (stop) → TAA (stop); both are stop codons, protein length is unchanged. + """ + wt = _wt_protein("EPHA3") + result = _call("EPHA3", "c.2756G>A", "p.*919=", "stop_retained_variant") + + assert result, "stop_retained_variant must produce a non-empty sequence" + assert len(result) == len(wt), ( + f"Stop-retained must preserve protein length: wt={len(wt)}, mut={len(result)}" + ) + assert result[-1] == "*", "Stop codon must still be present at the terminus" + + +# --------------------------------------------------------------------------- +# Filtered / skipped types — get_mut_pro_seq must return an empty string +# --------------------------------------------------------------------------- + +class TestSkippedVariantTypes: + + def test_synonymous_variant_is_prefiltered(self): + """synonymous_variant rows are discarded in cosmic_to_proteindb before get_mut_pro_seq + is ever called. Verify the filter expression matches the v103 SO term. + """ + assert "synonymous_variant" in "synonymous_variant" + assert "synonymous_variant" in "splice_region_variant,synonymous_variant" + assert "synonymous_variant" not in "missense_variant" + + def test_intron_variant_returns_empty(self): + """intron_variant always carries p.? — the p.? guard returns an empty string. + + Source: RAD51C c.145+706C>T p.? (intron_variant) + """ + result = _call("EZH2", "c.145+706C>T", "p.?", "intron_variant") + assert result == "", f"intron_variant with p.? must return ''; got {repr(result)}" + + def test_3_prime_utr_variant_returns_empty(self): + """3_prime_UTR_variant always carries p.? — the p.? guard returns an empty string. + + Source: SUFU c.*2816G>A p.? (3_prime_UTR_variant) + The c.*N notation signals a 3'UTR position; the outer if-condition fails on p.?. + """ + result = _call("EZH2", "c.*2816G>A", "p.?", "3_prime_UTR_variant") + assert result == "", f"3_prime_UTR_variant with p.? must return ''; got {repr(result)}" + + def test_5_prime_utr_variant_returns_empty(self): + """5_prime_UTR_variant always carries p.? — the p.? guard returns an empty string. + + Source: PSMD13 c.-20C>T p.? (5_prime_UTR_variant) + """ + result = _call("EZH2", "c.-20C>T", "p.?", "5_prime_UTR_variant") + assert result == "", f"5_prime_UTR_variant with p.? must return ''; got {repr(result)}" + + def test_coding_sequence_variant_returns_empty(self): + """coding_sequence_variant in v103 uses intronic-offset positions with p.?. + + Source: OAS2 c.2157+2A>G p.? (coding_sequence_variant) + Both the intronic offset guard ('+' in coord) and the p.? guard ensure ''. + """ + result = _call("EZH2", "c.2157+2A>G", "p.?", "coding_sequence_variant") + assert result == "", f"coding_sequence_variant with p.? must return ''; got {repr(result)}" + + def test_splice_acceptor_variant_returns_empty(self): + """splice_acceptor_variant uses intronic-offset position notation with p.?. + + Source: TSHR c.171-1G>A p.? (splice_acceptor_variant) + The '-' offset guard in the delins branch (and p.? in the substitution guard) return ''. + """ + result = _call("EZH2", "c.171-1G>A", "p.?", "splice_acceptor_variant") + assert result == "", f"splice_acceptor_variant with p.? must return ''; got {repr(result)}" + + def test_splice_donor_variant_returns_empty(self): + """splice_donor_variant uses downstream-offset position notation with p.?. + + Source: PTCH1 c.3306+2T>G p.? (splice_donor_variant) + """ + result = _call("EZH2", "c.3306+2T>G", "p.?", "splice_donor_variant") + assert result == "", f"splice_donor_variant with p.? must return ''; got {repr(result)}" + + def test_splice_region_variant_composite_treated_as_primary_type(self): + """splice_region_variant only appears in v103 as part of a composite type string. + When combined with missense_variant, the missense guard fires first and the + mutation is processed as a missense — same-length result with a single AA change. + + Source: EZH2 c.656C>T p.S219F (missense_variant — re-used with composite type) + """ + wt = _wt_protein("EZH2") + result = _call( + "EZH2", "c.656C>T", "p.S219F", "missense_variant,splice_region_variant" + ) + assert result, "composite type containing missense_variant must produce a result" + assert len(result) == len(wt), "missense-handled result must preserve protein length" + assert result[218] == "F", "Substitution at codon 219 must produce Phe" + + def test_incomplete_terminal_codon_variant_returns_empty(self): + """incomplete_terminal_codon_variant is absent from v103 targeted-screen data. + By convention it carries p.?, so get_mut_pro_seq returns an empty string. + """ + result = _call("EZH2", "c.2213_2214insA", "p.?", "incomplete_terminal_codon_variant") + assert result == "", ( + f"incomplete_terminal_codon_variant with p.? must return ''; got {repr(result)}" + ) diff --git a/pgatk/tests/test_vcf_to_proteindb_parallel.py b/pgatk/tests/test_vcf_to_proteindb_parallel.py new file mode 100644 index 00000000..c9183ff9 --- /dev/null +++ b/pgatk/tests/test_vcf_to_proteindb_parallel.py @@ -0,0 +1,64 @@ +"""Equivalence test: vcf_to_proteindb with workers=2 produces the same sequence +content as workers=1 on a small fixture.""" +import os +from pathlib import Path + +from click.testing import CliRunner + +from pgatk.cli import cli + + +def _sequence_set(fasta_path) -> set: + seqs = [] + current = [] + with open(fasta_path, 'r', encoding='utf-8') as f: + for line in f: + if line.startswith('>'): + if current: + seqs.append(''.join(current)) + current = [] + else: + current.append(line.strip()) + if current: + seqs.append(''.join(current)) + return set(seqs) + + +def test_parallel_matches_sequential(tmp_path): + # pgatk package root: .../pgatk/pgatk/ + pkg_root = Path(__file__).resolve().parents[1] + testdata = pkg_root / 'testdata' + config = pkg_root / 'config' / 'ensembl_config.yaml' + out_seq = tmp_path / 'seq.fa' + out_par = tmp_path / 'par.fa' + + common_args = [ + 'vcf-to-proteindb', + '--config_file', str(config), + '--vcf', str(testdata / 'test.vcf'), + '--input_fasta', str(testdata / 'test.fa'), + '--gene_annotations_gtf', str(testdata / 'test.gtf'), + '--protein_prefix', 'ensvar', + '--af_field', 'MAF', + '--annotation_field_name', 'CSQ', + '--biotype_str', 'feature_type', + '--include_biotypes', 'mRNA,ncRNA', + ] + + runner = CliRunner() + orig_dir = os.getcwd() + try: + # Run from the package root so the .db file is created next to the .gtf. + os.chdir(str(pkg_root)) + + r1 = runner.invoke(cli, common_args + ['--output_proteindb', str(out_seq)]) + assert r1.exit_code == 0, r1.output + (str(r1.exception) if r1.exception else '') + + r2 = runner.invoke(cli, common_args + ['--output_proteindb', str(out_par), '--workers', '2']) + assert r2.exit_code == 0, r2.output + (str(r2.exception) if r2.exception else '') + finally: + os.chdir(orig_dir) + + # FASTA header order may differ across runs (per-worker ordering); compare + # sequence content as a set. + assert _sequence_set(out_seq) == _sequence_set(out_par) diff --git a/pgatk/toolbox/general.py b/pgatk/toolbox/general.py index 15f76031..b19d4357 100644 --- a/pgatk/toolbox/general.py +++ b/pgatk/toolbox/general.py @@ -17,7 +17,6 @@ import yaml import gzip -# Logging defaults from requests import HTTPError from pgatk.toolbox.exceptions import ToolBoxException @@ -61,7 +60,6 @@ def __init__(self, root_config_name: str, yaml_configuration: dict, pipeline_par else: self._default_params = {} - # Prepare Logging subsystem if self._default_params is not None and self._ROOT_CONFIG_NAME in self._default_params: if self._CONFIG_LOGGER in self._default_params[self._ROOT_CONFIG_NAME]: if self._CONFIG_LOGGER_LEVEL in self._default_params[self._ROOT_CONFIG_NAME][self._CONFIG_LOGGER]: @@ -96,10 +94,8 @@ def get_config_value(self, key: str, default: Any = None) -> Any: Checks pipeline_parameters first (flat lookup), then default_params[_ROOT_CONFIG_NAME][key], then returns default. """ - # Check pipeline params first (flat lookup by key) if key in self._pipeline_parameters: return self._pipeline_parameters[key] - # Then check default config params under root config name root = self._ROOT_CONFIG_NAME if (self._default_params is not None and root in self._default_params @@ -117,12 +113,10 @@ def get_log_handlers(self) -> list: return self._log_handlers def get_logger(self) -> logging.Logger: - # Get own logger return self._logger def get_session_log_files(self) -> list: log_files = [] - # Add the application logs log_files.extend(self._log_files) return log_files @@ -195,7 +189,15 @@ def clear_cache() -> None: request.urlcleanup() -def download_file(file_url: str, file_name: str, log: logging, url_file: Optional[Any] = None) -> Optional[str]: +def open_vcf(path: str): + """Return a text-mode file handle for *path*, decompressing on-the-fly for .gz/.bgz.""" + if path.endswith('.gz') or path.endswith('.bgz'): + return gzip.open(path, 'rt', encoding='utf-8') + return open(path, 'r', encoding='utf-8') + + +def download_file(file_url: str, file_name: str, log: logging, url_file: Optional[Any] = None, + progress_prefix: str = "") -> Optional[str]: """ Download file_url and move it to file_name, do nothing if file_name already exists. @@ -203,6 +205,7 @@ def download_file(file_url: str, file_name: str, log: logging, url_file: Optiona :param file_url: file url to be download :param file_name: file name where the data will be downloaded :param url_file: the url file is used to write the urls to be downloaded, if None, the function will download the file + :param progress_prefix: optional label shown in progress log lines (e.g. file name) :return: name of the file if the file can be download. """ if os.path.isfile(file_name): @@ -226,22 +229,36 @@ def download_file(file_url: str, file_name: str, log: logging, url_file: Optiona f"Only {', '.join(allowed_schemes)}:// are allowed for security reasons." ) + # Reporthook: logs progress at every 10% increment for files with known size, + # or every 100 MB for chunked/unknown-size transfers. + _last_pct: list = [-1] + + def _reporthook(block_count: int, block_size: int, total_size: int) -> None: + downloaded = block_count * block_size + prefix = f"{progress_prefix} " if progress_prefix else "" + if total_size > 0: + pct = min(100, downloaded * 100 // total_size) + if pct >= _last_pct[0] + 10: + _last_pct[0] = pct - (pct % 10) + log.info("%s%d%% (%d / %d MB)", + prefix, _last_pct[0], + downloaded // (1024 * 1024), + total_size // (1024 * 1024)) + else: + mb = downloaded // (1024 * 1024) + if mb > 0 and mb % 100 == 0 and mb != _last_pct[0]: + _last_pct[0] = mb + log.info("%s%d MB downloaded ...", prefix, mb) + remaining_download_tries = REMAINING_DOWNLOAD_TRIES downloaded_file = None while remaining_download_tries > 0: try: - # urlretrieve is safe here because we've validated the scheme above - # Only http:// and https:// URLs can reach this point - downloaded_file, _ = request.urlretrieve(file_url, file_name) + # Scheme restricted to http/https/ftp above; rejects file:// and custom schemes. + downloaded_file, _ = request.urlretrieve( # nosec B310 - allowed_schemes enforced + file_url, file_name, reporthook=_reporthook + ) log.debug("File downloaded -- " + downloaded_file) - if downloaded_file.endswith('.gz'): - extracted_file = downloaded_file.replace('.gz', '') - with open(extracted_file, 'wb') as outfile: - with gzip.open(downloaded_file, 'rb') as infile: - shutil.copyfileobj(infile, outfile) - os.remove(downloaded_file) - downloaded_file = extracted_file - log.debug("File extracted-- " + downloaded_file) break except (HTTPError, URLError, OSError) as error: logging.error("Error downloading -- Incorrect URL or file not found: " + file_url + " on trial no: " + str( @@ -267,14 +284,12 @@ def check_create_folders_overwrite(folders: List[str]) -> None: if not os.path.isdir(folder): invalid_folders.append(folder) if invalid_folders: - # If there's any invalid folder, we don't make any change, and we report the situation by raising an exception raise ToolBoxException("The following folders ARE NOT FOLDERS - '{}'" .format(invalid_folders)) for folder in folders: try: shutil.rmtree(folder) except FileNotFoundError: - # It is find if the folder is not there pass check_create_folders(folders) @@ -347,7 +362,6 @@ def gunzip_files(files: List[str]) -> list[tuple[str, str]]: (stdout, stderr) = gunzip_subprocess.communicate(timeout=timeout) if gunzip_subprocess.poll() is not None: if gunzip_subprocess.returncode != 0: - # ERROR - Report this err_msg = "ERROR uncompressing file '{}' output from subprocess STDOUT: {}\nSTDERR: {}" \ .format(file, stdout.decode('utf8'), stderr.decode('utf8')) files_with_error.append((file, err_msg)) diff --git a/pgatk/toolbox/vcf_utils.py b/pgatk/toolbox/vcf_utils.py index 61fe4db6..1d51d14d 100644 --- a/pgatk/toolbox/vcf_utils.py +++ b/pgatk/toolbox/vcf_utils.py @@ -8,8 +8,11 @@ from __future__ import annotations import logging +import warnings from typing import Any, Optional +from Bio import BiopythonWarning + logger = logging.getLogger(__name__) @@ -30,7 +33,6 @@ def check_overlap(var_start: int, var_end: int, features_info: Optional[list] = features_info = [[0, 1, 'type']] if var_start == -1: return True - # check if the var overlaps any of the features for feature_pos in features_info: pep_start = feature_pos[0] pep_end = feature_pos[1] @@ -175,9 +177,11 @@ def get_orfs_vcf( """ ref_orfs = [] alt_orfs = [] - for n in range(0, num_orfs): - ref_orfs.append(ref_seq[n::].translate(translation_table)) - alt_orfs.append(alt_seq[n::].translate(translation_table)) + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", message="Partial codon", category=BiopythonWarning) + for n in range(0, num_orfs): + ref_orfs.append(ref_seq[n::].translate(translation_table)) + alt_orfs.append(alt_seq[n::].translate(translation_table)) return ref_orfs, alt_orfs diff --git a/pyproject.toml b/pyproject.toml index 610da6c3..1d4b6e26 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "pgatk" -version = "0.0.26" +version = "0.0.27" description = "Python tools for proteogenomics" readme = "README.md" requires-python = ">=3.9" @@ -71,3 +71,10 @@ exclude = ["tests*", "*.tests*", "*.tests.*", "tests.*"] [tool.setuptools.package-data] pgatk = ["config/*.yaml", "config/*.json"] + +[tool.pydocstyle] +# D211 conflicts with D203 (which we follow: one blank line before class docstring). +# D213 conflicts with D212 (which we follow: multi-line summary on the first line). +# pydocstyle errors when both rules in each pair are enabled; explicitly disable +# the ones we don't follow. +add-ignore = ["D211", "D213"] diff --git a/scripts/benchmark_vcf_to_proteindb.py b/scripts/benchmark_vcf_to_proteindb.py new file mode 100755 index 00000000..89015656 --- /dev/null +++ b/scripts/benchmark_vcf_to_proteindb.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 +"""One-shot benchmark / profiler for ``pgatk vcf-to-proteindb``. + +Times one full run end-to-end. With ``--profile-out PATH``, also wraps the +run in cProfile and writes a ``.prof`` file; print the top-N hotspots with +``--print-top``. Not invoked by CI. + +Basic usage: + python scripts/benchmark_vcf_to_proteindb.py \ + --vcf /path/to/sample.vcf \ + --fasta /path/to/transcripts.fa \ + --gtf /path/to/annotation.gtf \ + --output /tmp/benchmark_proteindb.fa + +Profile a chr22 run and print the 30 hottest functions: + python scripts/benchmark_vcf_to_proteindb.py \ + --vcf chr22.vcf --fasta tx.fa --gtf chr22.gtf \ + --output /tmp/chr22.fa \ + --profile-out /tmp/chr22.prof --print-top 30 +""" +import argparse +import cProfile +import io +import pstats +import time +from pathlib import Path + +from pgatk.ensembl.ensembl import EnsemblDataService +from pgatk.config.registry import load_config + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--vcf", required=True, help="Input VCF (annotated or raw)") + parser.add_argument("--fasta", required=True, help="Transcript FASTA matching the GTF") + parser.add_argument("--gtf", required=True, help="Gene annotations GTF") + parser.add_argument("--output", required=True, help="Output protein DB FASTA") + parser.add_argument( + "--annotation-field-name", + default="CSQ", + help="VCF INFO field that carries per-transcript annotation (default: CSQ). " + "Use empty string to force re-annotation via bedtools intersect.", + ) + parser.add_argument( + "--profile-out", + help="If set, wrap the run in cProfile and write the .prof file here.", + ) + parser.add_argument( + "--print-top", + type=int, + default=0, + help="With --profile-out, also print the top-N functions by cumulative time " + "(default: 0, no printing). Recommended N=30 for a first look.", + ) + args = parser.parse_args() + + config_data = load_config("ensembl_config", None) + pipeline_arguments = { + EnsemblDataService.PROTEIN_DB_OUTPUT: args.output, + EnsemblDataService.ANNOTATION_FIELD_NAME: args.annotation_field_name, + } + svc = EnsemblDataService(config_data, pipeline_arguments) + + profiler = cProfile.Profile() if args.profile_out else None + start = time.perf_counter() + if profiler is not None: + profiler.enable() + try: + svc.vcf_to_proteindb(args.vcf, args.fasta, args.gtf) + finally: + if profiler is not None: + profiler.disable() + elapsed = time.perf_counter() - start + + if profiler is not None: + profiler.dump_stats(args.profile_out) + + output_path = Path(args.output) + output_size = output_path.stat().st_size if output_path.exists() else 0 + seq_count = 0 + if output_path.exists(): + with open(output_path, "r", encoding="utf-8") as fh: + for line in fh: + if line.startswith(">"): + seq_count += 1 + + print() + print("=== BENCHMARK RESULT ===") + print(f" VCF: {args.vcf}") + print(f" Elapsed: {elapsed:.2f} s ({elapsed / 60:.2f} min)") + print(f" Output: {args.output} ({output_size} bytes, {seq_count} sequences)") + if args.profile_out: + print(f" Profile: {args.profile_out}") + + if args.profile_out and args.print_top > 0: + print() + print(f"=== TOP {args.print_top} BY CUMULATIVE TIME ===") + buf = io.StringIO() + stats = pstats.Stats(args.profile_out, stream=buf) + stats.strip_dirs().sort_stats('cumulative').print_stats(args.print_top) + print(buf.getvalue()) + print(f"=== TOP {args.print_top} BY OWN (tottime) TIME ===") + buf = io.StringIO() + stats = pstats.Stats(args.profile_out, stream=buf) + stats.strip_dirs().sort_stats('tottime').print_stats(args.print_top) + print(buf.getvalue()) + + +if __name__ == "__main__": + main() diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 00000000..2baaabd2 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,15 @@ +[pydocstyle] +# D211 conflicts with D203 (we follow D203 — one blank line before class docstring). +# D213 conflicts with D212 (we follow D212 — multi-line summary on the first line). +# Both pairs of rules cannot be satisfied simultaneously; pick one side per pair. +add-ignore = D211,D213 + +[bandit] +# B101 fires on every `assert` used in pytest tests. Pytest depends on assert +# rewriting; the bytecode-stripping concern doesn't apply to test files. +# Exclude test directories entirely so pytest assertions are not flagged. +exclude_dirs = ./pgatk/tests,./tests +# B202 (tarfile.extractall) — _safe_extract_tar in pgatk/cgenomes/cosmic_downloader.py +# performs explicit member-by-member validation before calling extractall(members=…) +# with the validated list. Annotated with `# nosec B202` at the call site. +skips = B101