Module phc.easy.omics.options.genomic_short_variant
Expand source code
from enum import Enum
from typing import List, Optional, Union
from phc.easy.omics.options.coding_effect import CodingEffect
from phc.easy.omics.options.chromosome import Chromosome
from phc.easy.omics.options.clinvar_significance import ClinVarSignificance
from phc.easy.omics.options.clinvar_review import ClinVarReview
from phc.easy.omics.options.gene_class import GeneClass
from phc.easy.omics.options.zygosity import Zygosity
from phc.easy.omics.options.common import GenomicVariantInclude
from phc.easy.abstract.paging_api_item import PagingApiOptions
from pydantic import Field, constr
RS_ID = r"^rs(\d+)$"
NUM_DECIMAL_RANGE = constr(regex=r"^\d+(\.\d+)?\-\d+(\.\d+)?$")
NUM_RANGE = constr(regex=r"^(\d+\-\d+|\d+)$")
MAPPINGS = {
"variant_set_ids": "variantSetIds",
"rs_id": "rsid",
"clinvar_allele_id": "clinvarAlleleId",
"clinvar_disease": "clinvarDisease",
"clinvar_review": "clinvarReview",
"clinvar_significance": "clinvarSignificance",
"cosmic_id": "cosmicId",
"cosmic_status": "cosmicStatus",
"cosmic_histology": "cosmicHistology",
"cosmic_tumor_site": "cosmicTumorSite",
"coding_effect": "group",
"variant_class": "class",
"transcript_id": "transcriptId",
"gene_class": "biotype",
"protein_changes": "aminoAcidChange",
"sequence_type": "sequenceType",
# Used cosmic_min_count instead to match PHC interface
# "cosmic_sample_count": "cosmicSampleCount",
"min_allele_frequency": "minAlleleFrequency",
"max_allele_frequency": "maxAlleleFrequency",
"pop_allele_frequency": "popAlleleFrequency",
"exac_allele_frequency": "exacAlleleFrequency",
"exac_homozygous": "exacHomozygous",
"dbnsfp_damaging_count": "dbnsfpDamagingCount",
"dbnsfp_damaging_predictor": "dbnsfpDamagingPredictor",
"dbnsfp_damaging_vote": "dbnsfpDamagingVote",
"dbnsfp_fathmm_rankscore": "dbnsfpFathmmRankscore",
"dbnsfp_fathmm_pred": "dbnsfpFathmmPred",
"dbnsfp_mean_rankscore": "dbnsfpMeanRankscore",
"dbnsfp_mean_rankscore_predictor": "dbnsfpMeanRankscorePredictor",
"dbnsfp_mutationtaster_rankscore": "dbnsfpMutationtasterRankscore",
"dbnsfp_mutationtaster_pred": "dbnsfpMutationtasterPred",
"dbnsfp_sift_rankscore": "dbnsfpSiftRankscore",
"dbnsfp_sift_pred": "dbnsfpSiftPred",
"variant_allele_frequency": "variantAlleleFrequency",
"read_depth": "readDepth",
"alt_read_depth": "altReadDepth",
"ref_read_depth": "refReadDepth",
"variant_filter": "filter",
"in_ckb": "drugAssociations",
}
class GenomicShortVariantOptions(PagingApiOptions):
"""Options to pass to `/v1/genomics/variants`"""
# TODO: Add remaining options from Omics Explorer in PHC
# - Variant Quality
# - Variant Allele Freq
# - Combined In Silico Prediction
# - Individual In Silico Predictors
variant_set_ids: List[str] = Field(..., min_items=1)
include: List[GenomicVariantInclude] = ["vcf"]
gene: List[str] = []
rs_id: List[constr(regex=RS_ID)] = []
chromosome: List[Chromosome] = []
clinvar_allele_id: List[str] = []
clinvar_disease: List[str] = []
clinvar_review: List[ClinVarReview] = []
clinvar_significance: List[ClinVarSignificance] = []
cosmic_id: List[str] = []
cosmic_status: List[str] = []
cosmic_histology: List[str] = []
cosmic_tumor_site: List[str] = []
variant_class: List[str] = [] # Renamed from 'class'
coding_effect: List[CodingEffect] = []
impact: List[str] = []
transcript_id: List[str] = []
gene_class: List[GeneClass] = []
protein_changes: List[str] = []
sequence_type: List[str] = []
position: List[Union[int, NUM_RANGE]] = []
cosmic_min_count: Optional[int] = None
min_allele_frequency: Optional[NUM_DECIMAL_RANGE] = None
max_allele_frequency: Optional[NUM_DECIMAL_RANGE] = None
pop_allele_frequency: Optional[NUM_DECIMAL_RANGE] = None
exac_allele_frequency: Optional[NUM_DECIMAL_RANGE] = None
exac_homozygous: List[str] = []
dbnsfp_damaging_count: List[str] = []
dbnsfp_damaging_predictor: List[str] = []
dbnsfp_damaging_vote: List[str] = []
dbnsfp_fathmm_rankscore: List[str] = []
dbnsfp_fathmm_pred: List[str] = []
dbnsfp_mean_rankscore: List[str] = []
dbnsfp_mean_rankscore_predictor: List[str] = []
dbnsfp_mutationtaster_rankscore: List[str] = []
dbnsfp_mutationtaster_pred: List[str] = []
dbnsfp_sift_rankscore: List[str] = []
dbnsfp_sift_pred: List[str] = []
zygosity: List[Zygosity] = []
genotype: List[str] = []
variant_allele_frequency: List[str] = []
quality: List[str] = []
read_depth: List[str] = []
alt_read_depth: List[str] = []
ref_read_depth: List[str] = []
variant_filter: List[str] = []
in_ckb: Optional[bool]
@staticmethod
def transform(key, value):
if isinstance(value, list):
value = ",".join(
[elem if isinstance(elem, str) else str(elem) for elem in value]
)
elif isinstance(value, bool):
value = "true" if value else None
if key == "cosmic_min_count" and value is not None:
return ("cosmicSampleCount", f"{value}:gte")
return (MAPPINGS.get(key, key), value)
Classes
class NUM_DECIMAL_RANGE (...)
-
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str
Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.str() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to 'strict'.
Ancestors
- pydantic.types.ConstrainedStr
- builtins.str
Class variables
var curtail_length
var max_length
var min_length
var regex
var strict
var strip_whitespace
var to_lower
var to_upper
class NUM_RANGE (...)
-
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str
Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.str() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to 'strict'.
Ancestors
- pydantic.types.ConstrainedStr
- builtins.str
Class variables
var curtail_length
var max_length
var min_length
var regex
var strict
var strip_whitespace
var to_lower
var to_upper
class GenomicShortVariantOptions (**data: Any)
-
Options to pass to
/v1/genomics/variants
Create a new model by parsing and validating input data from keyword arguments.
Raises ValidationError if the input data cannot be parsed to form a valid model.
Expand source code
class GenomicShortVariantOptions(PagingApiOptions): """Options to pass to `/v1/genomics/variants`""" # TODO: Add remaining options from Omics Explorer in PHC # - Variant Quality # - Variant Allele Freq # - Combined In Silico Prediction # - Individual In Silico Predictors variant_set_ids: List[str] = Field(..., min_items=1) include: List[GenomicVariantInclude] = ["vcf"] gene: List[str] = [] rs_id: List[constr(regex=RS_ID)] = [] chromosome: List[Chromosome] = [] clinvar_allele_id: List[str] = [] clinvar_disease: List[str] = [] clinvar_review: List[ClinVarReview] = [] clinvar_significance: List[ClinVarSignificance] = [] cosmic_id: List[str] = [] cosmic_status: List[str] = [] cosmic_histology: List[str] = [] cosmic_tumor_site: List[str] = [] variant_class: List[str] = [] # Renamed from 'class' coding_effect: List[CodingEffect] = [] impact: List[str] = [] transcript_id: List[str] = [] gene_class: List[GeneClass] = [] protein_changes: List[str] = [] sequence_type: List[str] = [] position: List[Union[int, NUM_RANGE]] = [] cosmic_min_count: Optional[int] = None min_allele_frequency: Optional[NUM_DECIMAL_RANGE] = None max_allele_frequency: Optional[NUM_DECIMAL_RANGE] = None pop_allele_frequency: Optional[NUM_DECIMAL_RANGE] = None exac_allele_frequency: Optional[NUM_DECIMAL_RANGE] = None exac_homozygous: List[str] = [] dbnsfp_damaging_count: List[str] = [] dbnsfp_damaging_predictor: List[str] = [] dbnsfp_damaging_vote: List[str] = [] dbnsfp_fathmm_rankscore: List[str] = [] dbnsfp_fathmm_pred: List[str] = [] dbnsfp_mean_rankscore: List[str] = [] dbnsfp_mean_rankscore_predictor: List[str] = [] dbnsfp_mutationtaster_rankscore: List[str] = [] dbnsfp_mutationtaster_pred: List[str] = [] dbnsfp_sift_rankscore: List[str] = [] dbnsfp_sift_pred: List[str] = [] zygosity: List[Zygosity] = [] genotype: List[str] = [] variant_allele_frequency: List[str] = [] quality: List[str] = [] read_depth: List[str] = [] alt_read_depth: List[str] = [] ref_read_depth: List[str] = [] variant_filter: List[str] = [] in_ckb: Optional[bool] @staticmethod def transform(key, value): if isinstance(value, list): value = ",".join( [elem if isinstance(elem, str) else str(elem) for elem in value] ) elif isinstance(value, bool): value = "true" if value else None if key == "cosmic_min_count" and value is not None: return ("cosmicSampleCount", f"{value}:gte") return (MAPPINGS.get(key, key), value)
Ancestors
- PagingApiOptions
- pydantic.main.BaseModel
- pydantic.utils.Representation
Class variables
var alt_read_depth : List[str]
var chromosome : List[Chromosome]
var clinvar_allele_id : List[str]
var clinvar_disease : List[str]
var clinvar_review : List[ClinVarReview]
var clinvar_significance : List[ClinVarSignificance]
var coding_effect : List[CodingEffect]
var cosmic_histology : List[str]
var cosmic_id : List[str]
var cosmic_min_count : Optional[int]
var cosmic_status : List[str]
var cosmic_tumor_site : List[str]
var dbnsfp_damaging_count : List[str]
var dbnsfp_damaging_predictor : List[str]
var dbnsfp_damaging_vote : List[str]
var dbnsfp_fathmm_pred : List[str]
var dbnsfp_fathmm_rankscore : List[str]
var dbnsfp_mean_rankscore : List[str]
var dbnsfp_mean_rankscore_predictor : List[str]
var dbnsfp_mutationtaster_pred : List[str]
var dbnsfp_mutationtaster_rankscore : List[str]
var dbnsfp_sift_pred : List[str]
var dbnsfp_sift_rankscore : List[str]
var exac_allele_frequency : Optional[ConstrainedStrValue]
var exac_homozygous : List[str]
var gene : List[str]
var gene_class : List[GeneClass]
var genotype : List[str]
var impact : List[str]
var in_ckb : Optional[bool]
var include : List[GenomicVariantInclude]
var max_allele_frequency : Optional[ConstrainedStrValue]
var min_allele_frequency : Optional[ConstrainedStrValue]
var pop_allele_frequency : Optional[ConstrainedStrValue]
var position : List[Union[int, ConstrainedStrValue]]
var protein_changes : List[str]
var quality : List[str]
var read_depth : List[str]
var ref_read_depth : List[str]
var rs_id : List[ConstrainedStrValue]
var sequence_type : List[str]
var transcript_id : List[str]
var variant_allele_frequency : List[str]
var variant_class : List[str]
var variant_filter : List[str]
var variant_set_ids : List[str]
var zygosity : List[Zygosity]
Static methods
def transform(key, value)
-
Expand source code
@staticmethod def transform(key, value): if isinstance(value, list): value = ",".join( [elem if isinstance(elem, str) else str(elem) for elem in value] ) elif isinstance(value, bool): value = "true" if value else None if key == "cosmic_min_count" and value is not None: return ("cosmicSampleCount", f"{value}:gte") return (MAPPINGS.get(key, key), value)
Methods
def dict(self)
-
Inherited from:
PagingApiOptions
.dict
Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.