"""
DO NOT EDIT THIS FILE!!
This file is automatically generated by the process_schemas.py program
in the scripts directory. It is not intended to be edited directly. If
you need to update the GEL protocol classes, please run the script
on the appropriate schema version.
"""
from protocols.protocol import ProtocolElement
from protocols.protocol import SearchRequest
from protocols.protocol import SearchResponse
from protocols.protocol import avro_parse

import avro.schema

version = '3.0.0'


class ACMGClassification(object):
    """
    No documentation
    """
    pathogenic_variant = "pathogenic_variant"
    likely_pathogenic_variant = "likely_pathogenic_variant"
    variant_of_unknown_clinical_significance = "variant_of_unknown_clinical_significance"
    likely_benign_variant = "likely_benign_variant"
    benign_variant = "benign_variant"
    not_assessed = "not_assessed"

    def __hash__(self):
        return str(self).__hash__()


class ActionType(object):
    """
    this is the type of actionability for the reported event
    """
    Therapy = "Therapy"
    Therapeutic = "Therapeutic"
    Prognosis = "Prognosis"
    Diagnosis = "Diagnosis"

    def __hash__(self):
        return str(self).__hash__()


class Actionability(object):
    """
    No documentation
    """
    yes = "yes"
    no = "no"
    not_yet = "not_yet"
    na = "na"

    def __hash__(self):
        return str(self).__hash__()


class Actions(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "Actions", "namespace": "org.gel.models.report.avro", "fields": [{"name":
"actionType", "type": "string"}, {"name": "evidence", "type": ["null", {"type": "array", "items":
"string"}], "doc": ""}, {"name": "drug", "type": ["null", "string"], "doc": ""}, {"name": "status",
"type": ["null", "string"], "doc": ""}, {"name": "variantActionable", "type": "boolean", "doc": ""},
{"name": "comments", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name":
"url", "type": ["null", "string"], "doc": ""}, {"name": "evidenceType", "type": ["null", "string"],
"doc": ""}, {"name": "source", "type": "string", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "actionType",
        "comments",
        "drug",
        "evidence",
        "evidenceType",
        "source",
        "status",
        "url",
        "variantActionable",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'actionType', 'comments', 'drug', 'evidence', 'evidenceType',
        'source', 'status', 'url', 'variantActionable'
    ]

    def __init__(self, **kwargs):
        self.actionType = kwargs.get(
            'actionType', None)
        self.comments = kwargs.get(
            'comments', None)
        self.drug = kwargs.get(
            'drug', None)
        self.evidence = kwargs.get(
            'evidence', None)
        self.evidenceType = kwargs.get(
            'evidenceType', None)
        self.source = kwargs.get(
            'source', None)
        self.status = kwargs.get(
            'status', None)
        self.url = kwargs.get(
            'url', None)
        self.variantActionable = kwargs.get(
            'variantActionable', None)


class AdditionalAnalysisPanel(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "AdditionalAnalysisPanel", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "specificDisease", "type": "string"}, {"name": "panelName", "type": "string"},
{"name": "panelVersion", "type": ["null", "string"]}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "panelName",
        "panelVersion",
        "specificDisease",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'panelName', 'panelVersion', 'specificDisease'
    ]

    def __init__(self, **kwargs):
        self.panelName = kwargs.get(
            'panelName', None)
        self.panelVersion = kwargs.get(
            'panelVersion', None)
        self.specificDisease = kwargs.get(
            'specificDisease', None)


class AdoptedStatus(object):
    """
    adoptedin means adopted into the family adoptedout means child
    belonged to the family and was adopted out
    """
    not_adopted = "not_adopted"
    adoptedin = "adoptedin"
    adoptedout = "adoptedout"

    def __hash__(self):
        return str(self).__hash__()


class AffectionStatus(object):
    """
    Affection Status
    """
    unaffected = "unaffected"
    affected = "affected"
    unknown = "unknown"

    def __hash__(self):
        return str(self).__hash__()


class AnalysisPanel(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "AnalysisPanel", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "specificDisease", "type": "string"}, {"name": "panelName", "type": "string"}, {"name":
"panelVersion", "type": ["null", "string"]}, {"name": "review_outcome", "type": "string"}, {"name":
"multiple_genetic_origins", "type": "string"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "multiple_genetic_origins",
        "panelName",
        "panelVersion",
        "review_outcome",
        "specificDisease",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'multiple_genetic_origins', 'panelName', 'panelVersion',
        'review_outcome', 'specificDisease'
    ]

    def __init__(self, **kwargs):
        self.multiple_genetic_origins = kwargs.get(
            'multiple_genetic_origins', None)
        self.panelName = kwargs.get(
            'panelName', None)
        self.panelVersion = kwargs.get(
            'panelVersion', None)
        self.review_outcome = kwargs.get(
            'review_outcome', None)
        self.specificDisease = kwargs.get(
            'specificDisease', None)


class Ancestries(ProtocolElement):
    """
    Ancestries, defined as Ethnic category(ies) and Chi-square test
    """
    _schemaSource = """
{"type": "record", "name": "Ancestries", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "mothersEthnicOrigin", "type": ["null", {"type": "enum", "name":
"EthnicCategory", "doc": "", "symbols": ["D", "E", "F", "G", "A", "B", "C", "L", "M", "N", "H", "J",
"K", "P", "S", "R", "Z"]}], "doc": ""}, {"name": "mothersOtherRelevantAncestry", "type": ["null",
"string"], "doc": ""}, {"name": "fathersEthnicOrigin", "type": ["null", "EthnicCategory"], "doc":
""}, {"name": "fathersOtherRelevantAncestry", "type": ["null", "string"], "doc": ""}, {"name":
"chiSquare1KGenomesPhase3Pop", "type": ["null", {"type": "array", "items": {"type": "record",
"name": "ChiSquare1KGenomesPhase3Pop", "doc": "", "fields": [{"name": "kGSuperPopCategory", "type":
{"type": "enum", "name": "KGSuperPopCategory", "doc": "", "symbols": ["AFR", "AMR", "EAS", "EUR",
"SAS"]}, "doc": ""}, {"name": "kGPopCategory", "type": ["null", {"type": "enum", "name":
"KGPopCategory", "doc": "", "symbols": ["ACB", "ASW", "BEB", "CDX", "CEU", "CHB", "CHS", "CLM",
"ESN", "FIN", "GBR", "GIH", "GWD", "IBS", "ITU", "JPT", "KHV", "LWK", "MSL", "MXL", "PEL", "PJL",
"PUR", "STU", "TSI", "YRI"]}], "doc": ""}, {"name": "chiSquare", "type": "float", "doc": ""}]}}],
"doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "chiSquare1KGenomesPhase3Pop",
        "fathersEthnicOrigin",
        "fathersOtherRelevantAncestry",
        "mothersEthnicOrigin",
        "mothersOtherRelevantAncestry",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'chiSquare1KGenomesPhase3Pop': ChiSquare1KGenomesPhase3Pop,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'chiSquare1KGenomesPhase3Pop': ChiSquare1KGenomesPhase3Pop,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'chiSquare1KGenomesPhase3Pop', 'fathersEthnicOrigin',
        'fathersOtherRelevantAncestry', 'mothersEthnicOrigin',
        'mothersOtherRelevantAncestry'
    ]

    def __init__(self, **kwargs):
        self.chiSquare1KGenomesPhase3Pop = kwargs.get(
            'chiSquare1KGenomesPhase3Pop', None)
        self.fathersEthnicOrigin = kwargs.get(
            'fathersEthnicOrigin', None)
        self.fathersOtherRelevantAncestry = kwargs.get(
            'fathersOtherRelevantAncestry', None)
        self.mothersEthnicOrigin = kwargs.get(
            'mothersEthnicOrigin', None)
        self.mothersOtherRelevantAncestry = kwargs.get(
            'mothersOtherRelevantAncestry', None)


class ArrayConcordance(ProtocolElement):
    """
    Array concordance with WGS data  * `numberOfSites`: Number of
    sites considered * `numberOfDiscordantSites`: Number of sites
    discordant between WGS and Genotyping Array
    """
    _schemaSource = """
{"type": "record", "name": "ArrayConcordance", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "numberOfSites", "type": "double"}, {"name": "numberOfDiscordantSites", "type":
"double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "numberOfDiscordantSites",
        "numberOfSites",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'numberOfDiscordantSites', 'numberOfSites'
    ]

    def __init__(self, **kwargs):
        self.numberOfDiscordantSites = kwargs.get(
            'numberOfDiscordantSites', None)
        self.numberOfSites = kwargs.get(
            'numberOfSites', None)


class ArrayGenotypingRate(ProtocolElement):
    """
    Array genotyping rate for the sample * `IID` - Individual sample
    ID * `number_missing_genotypes`: The number of missing genotypes *
    `number_total_genotypes`: The number of total genotypes
    """
    _schemaSource = """
{"type": "record", "name": "ArrayGenotypingRate", "namespace": "org.gel.models.report.avro", "doc":
"", "fields": [{"name": "IID", "type": "string"}, {"name": "number_missing_genotypes", "type":
"double"}, {"name": "number_total_genotypes", "type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "IID",
        "number_missing_genotypes",
        "number_total_genotypes",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'IID', 'number_missing_genotypes', 'number_total_genotypes'
    ]

    def __init__(self, **kwargs):
        self.IID = kwargs.get(
            'IID', None)
        self.number_missing_genotypes = kwargs.get(
            'number_missing_genotypes', None)
        self.number_total_genotypes = kwargs.get(
            'number_total_genotypes', None)


class AuditLog(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "AuditLog", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "interpretationRequestID", "type": "string", "doc": ""}, {"name":
"interpretationRequestVersion", "type": "string", "doc": ""}, {"name": "code", "type": {"type":
"enum", "name": "Code", "doc": "", "symbols": ["C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7"]}},
{"name": "caseShared", "type": ["null", {"type": "record", "name": "CaseShared", "fields": [{"name":
"previousGroups", "type": {"type": "array", "items": "string"}}, {"name": "modifiedGroups", "type":
{"type": "array", "items": "string"}}]}]}, {"name": "supportingEvidences", "type": ["null", {"type":
"record", "name": "SupportingEvidences", "fields": [{"name": "previousSupportingEvidences", "type":
{"type": "array", "items": "string"}}, {"name": "modifiedSupportingEvidences", "type": {"type":
"array", "items": "string"}}]}]}, {"name": "modifiedVariants", "type": ["null", {"type": "array",
"items": {"type": "record", "name": "ModifiedVariant", "fields": [{"name": "previousVariant",
"type": {"type": "record", "name": "ReportedVariant", "fields": [{"name": "chromosome", "type":
"string", "doc": ""}, {"name": "dbSNPid", "type": ["null", "string"], "doc": ""}, {"name":
"position", "type": "int", "doc": ""}, {"name": "reference", "type": "string", "doc": ""}, {"name":
"alternate", "type": "string", "doc": ""}, {"name": "calledGenotypes", "type": {"type": "array",
"items": {"type": "record", "name": "CalledGenotype", "doc": "", "fields": [{"name": "gelId",
"type": "string", "doc": ""}, {"name": "sampleId", "type": "string", "doc": ""}, {"name":
"genotype", "type": {"type": "enum", "name": "Zygosity", "doc": "", "symbols":
["reference_homozygous", "heterozygous", "alternate_homozygous", "missing",
"half_missing_reference", "half_missing_alternate", "alternate_hemizigous", "reference_hemizigous",
"unk"]}, "doc": ""}, {"name": "phaseSet", "type": ["null", "int"], "doc": ""}, {"name":
"depthReference", "type": ["null", "int"], "doc": ""}, {"name": "depthAlternate", "type": ["null",
"int"], "doc": ""}, {"name": "copyNumber", "type": ["null", "int"], "doc": ""}]}}, "doc": ""},
{"name": "reportEvents", "type": {"type": "array", "items": {"type": "record", "name":
"ReportEvent", "fields": [{"name": "reportEventId", "type": "string", "doc": ""}, {"name":
"phenotype", "type": "string", "doc": ""}, {"name": "panelName", "type": ["null", "string"], "doc":
""}, {"name": "panelVersion", "type": ["null", "string"], "doc": ""}, {"name": "modeOfInheritance",
"type": {"type": "enum", "name": "ReportedModeOfInheritance", "doc": "", "symbols": ["monoallelic",
"monoallelic_not_imprinted", "monoallelic_maternally_imprinted", "monoallelic_paternally_imprinted",
"biallelic", "monoallelic_and_biallelic", "monoallelic_and_more_severe_biallelic",
"xlinked_biallelic", "xlinked_monoallelic", "mitochondrial", "unknown"]}, "doc": ""}, {"name":
"genomicFeature", "type": {"type": "record", "name": "GenomicFeature", "fields": [{"name":
"featureType", "type": {"type": "enum", "name": "FeatureTypes", "symbols": ["RegulatoryRegion",
"Gene", "Transcript"]}, "doc": ""}, {"name": "ensemblId", "type": "string", "doc": ""}, {"name":
"HGNC", "type": ["null", "string"], "doc": ""}, {"name": "other_ids", "type": ["null", {"type":
"map", "values": "string"}], "doc": ""}]}, "doc": ""}, {"name": "penetrance", "type": {"type":
"enum", "name": "Penetrance", "doc": "", "symbols": ["complete", "incomplete"]}, "doc": ""},
{"name": "score", "type": "float", "doc": ""}, {"name": "vendorSpecificScores", "type": ["null",
{"type": "map", "values": "float"}], "doc": ""}, {"name": "variantClassification", "type": ["null",
{"type": "enum", "name": "VariantClassification", "doc": "", "symbols": ["BENIGN", "LIKELY_BENIGN",
"VUS", "LIKELY_PATHOGENIC", "PATHOGENIC"]}], "doc": ""}, {"name": "fullyExplainsPhenotype", "type":
["null", "boolean"], "doc": ""}, {"name": "groupOfVariants", "type": ["null", "int"], "doc": ""},
{"name": "eventJustification", "type": "string", "doc": ""}, {"name": "tier", "type": ["null",
{"type": "enum", "name": "Tier", "doc": "", "symbols": ["NONE", "TIER1", "TIER2", "TIER3"]}], "doc":
""}]}}, "doc": ""}, {"name": "additionalTextualVariantAnnotations", "type": ["null", {"type": "map",
"values": "string"}], "doc": ""}, {"name": "evidenceIds", "type": ["null", {"type": "map", "values":
"string"}], "doc": ""}, {"name": "additionalNumericVariantAnnotations", "type": ["null", {"type":
"map", "values": "float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}]}}, {"name": "modifiedVariant", "type": "ReportedVariant"}]}}]},
{"name": "addedVariants", "type": ["null", {"type": "array", "items": "ReportedVariant"}]}, {"name":
"removedVariants", "type": ["null", {"type": "array", "items": "ReportedVariant"}]}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "addedVariants",
        "caseShared",
        "code",
        "interpretationRequestID",
        "interpretationRequestVersion",
        "modifiedVariants",
        "removedVariants",
        "supportingEvidences",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'addedVariants': ReportedVariant,
            'caseShared': CaseShared,
            'modifiedVariants': ModifiedVariant,
            'removedVariants': ReportedVariant,
            'supportingEvidences': SupportingEvidences,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'addedVariants': ReportedVariant,
            'caseShared': CaseShared,
            'modifiedVariants': ModifiedVariant,
            'removedVariants': ReportedVariant,
            'supportingEvidences': SupportingEvidences,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'addedVariants', 'caseShared', 'code',
        'interpretationRequestID', 'interpretationRequestVersion',
        'modifiedVariants', 'removedVariants', 'supportingEvidences'
    ]

    def __init__(self, **kwargs):
        self.addedVariants = kwargs.get(
            'addedVariants', None)
        self.caseShared = kwargs.get(
            'caseShared', None)
        self.code = kwargs.get(
            'code', None)
        self.interpretationRequestID = kwargs.get(
            'interpretationRequestID', None)
        self.interpretationRequestVersion = kwargs.get(
            'interpretationRequestVersion', None)
        self.modifiedVariants = kwargs.get(
            'modifiedVariants', None)
        self.removedVariants = kwargs.get(
            'removedVariants', None)
        self.supportingEvidences = kwargs.get(
            'supportingEvidences', None)


class BamHeaderMachine(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "BamHeaderMachine", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "machines", "type": {"type": "array", "items": {"type": "record", "name": "Machine",
"fields": [{"name": "DATE", "type": "double"}, {"name": "MACHINE", "type": "string"}, {"name":
"FLOWCELL", "type": "string"}, {"name": "RUN", "type": "string"}]}}}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "machines",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'machines': Machine,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'machines': Machine,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'machines'
    ]

    def __init__(self, **kwargs):
        self.machines = kwargs.get(
            'machines', None)


class BamHeaderOther(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "BamHeaderOther", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "PIPELINE_ID", "type": "string"}, {"name": "PIPELINE_VERSION", "type": "string"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "PIPELINE_ID",
        "PIPELINE_VERSION",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'PIPELINE_ID', 'PIPELINE_VERSION'
    ]

    def __init__(self, **kwargs):
        self.PIPELINE_ID = kwargs.get(
            'PIPELINE_ID', None)
        self.PIPELINE_VERSION = kwargs.get(
            'PIPELINE_VERSION', None)


class CalledGenotype(ProtocolElement):
    """
    This is intended to hold the genotypes for the family members In
    principle it is a phased zygosity as in VCF spec and called by the
    analysis provider if further phasing is conducted
    """
    _schemaSource = """
{"type": "record", "name": "CalledGenotype", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "gelId", "type": "string", "doc": ""}, {"name": "sampleId", "type": "string",
"doc": ""}, {"name": "genotype", "type": {"type": "enum", "name": "Zygosity", "doc": "", "symbols":
["reference_homozygous", "heterozygous", "alternate_homozygous", "missing",
"half_missing_reference", "half_missing_alternate", "alternate_hemizigous", "reference_hemizigous",
"unk"]}, "doc": ""}, {"name": "phaseSet", "type": ["null", "int"], "doc": ""}, {"name":
"depthReference", "type": ["null", "int"], "doc": ""}, {"name": "depthAlternate", "type": ["null",
"int"], "doc": ""}, {"name": "copyNumber", "type": ["null", "int"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "copyNumber",
        "depthAlternate",
        "depthReference",
        "gelId",
        "genotype",
        "phaseSet",
        "sampleId",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'copyNumber', 'depthAlternate', 'depthReference', 'gelId',
        'genotype', 'phaseSet', 'sampleId'
    ]

    def __init__(self, **kwargs):
        self.copyNumber = kwargs.get(
            'copyNumber', None)
        self.depthAlternate = kwargs.get(
            'depthAlternate', None)
        self.depthReference = kwargs.get(
            'depthReference', None)
        self.gelId = kwargs.get(
            'gelId', None)
        self.genotype = kwargs.get(
            'genotype', None)
        self.phaseSet = kwargs.get(
            'phaseSet', None)
        self.sampleId = kwargs.get(
            'sampleId', None)


class CancerDemographics(ProtocolElement):
    """
    This defines a Cancer Demographics
    """
    _schemaSource = """
{"type": "record", "name": "CancerDemographics", "namespace": "org.gel.models.report.avro", "doc":
"", "fields": [{"name": "gelId", "type": "string", "doc": ""}, {"name": "center", "type": "string",
"doc": ""}, {"name": "centerPatientId", "type": ["null", "string"], "doc": ""}, {"name":
"labkeyParticipantId", "type": ["null", "string"], "doc": ""}, {"name": "primaryDiagnosis", "type":
["null", "string"], "doc": ""}, {"name": "sex", "type": ["null", {"type": "enum", "name": "Sex",
"symbols": ["M", "F"]}], "doc": ""}, {"name": "consentStatus", "type": {"type": "record", "name":
"ConsentStatus", "doc": "", "fields": [{"name": "programmeConsent", "type": "boolean", "doc": "",
"default": false}, {"name": "primaryFindingConsent", "type": "boolean", "doc": "", "default":
false}, {"name": "secondaryFindingConsent", "type": "boolean", "doc": "", "default": false},
{"name": "carrierStatusConsent", "type": "boolean", "doc": "", "default": false}]}, "doc": ""},
{"name": "additionalInformation", "type": ["null", {"type": "map", "values": "string"}], "doc": ""},
{"name": "sampleId", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name":
"assignedICD10", "type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "additionalInformation",
        "assignedICD10",
        "center",
        "centerPatientId",
        "consentStatus",
        "gelId",
        "labkeyParticipantId",
        "primaryDiagnosis",
        "sampleId",
        "sex",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'consentStatus': ConsentStatus,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'consentStatus': ConsentStatus,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'additionalInformation', 'assignedICD10', 'center',
        'centerPatientId', 'consentStatus', 'gelId',
        'labkeyParticipantId', 'primaryDiagnosis', 'sampleId', 'sex'
    ]

    def __init__(self, **kwargs):
        self.additionalInformation = kwargs.get(
            'additionalInformation', None)
        self.assignedICD10 = kwargs.get(
            'assignedICD10', None)
        self.center = kwargs.get(
            'center', None)
        self.centerPatientId = kwargs.get(
            'centerPatientId', None)
        self.consentStatus = kwargs.get(
            'consentStatus', ConsentStatus())
        self.gelId = kwargs.get(
            'gelId', None)
        self.labkeyParticipantId = kwargs.get(
            'labkeyParticipantId', None)
        self.primaryDiagnosis = kwargs.get(
            'primaryDiagnosis', None)
        self.sampleId = kwargs.get(
            'sampleId', None)
        self.sex = kwargs.get(
            'sex', None)


class CancerInterpretationRequest(ProtocolElement):
    """
    This record represents basic information for this report
    """
    _schemaSource = """
{"type": "record", "name": "CancerInterpretationRequest", "namespace": "org.gel.models.report.avro",
"doc": "", "fields": [{"name": "versionControl", "type": {"type": "record", "name":
"VersionControl", "fields": [{"name": "GitVersionControl", "type": "string", "doc": "", "default":
"3.0.0"}]}, "doc": ""}, {"name": "reportRequestId", "type": "string", "doc": ""}, {"name":
"reportVersion", "type": "int", "doc": ""}, {"name": "interpretGenome", "type": "boolean", "doc":
"", "default": false}, {"name": "BAMs", "type": {"type": "array", "items": {"type": "record",
"name": "File", "doc": "", "fields": [{"name": "SampleId", "type": ["null", "string", {"type":
"array", "items": "string"}], "doc": ""}, {"name": "URIFile", "type": "string", "doc": ""}, {"name":
"fileType", "type": {"type": "enum", "name": "FileType", "symbols": ["BAM", "gVCF", "VCF_small",
"VCF_somatic_small", "VCF_CNV", "VCF_somatic_CNV", "VCF_SV", "VCF_somatic_SV", "VCF_SV_CNV", "SVG",
"ANN", "BigWig", "MD5Sum", "ROH", "OTHER"]}}, {"name": "md5Sum", "type": ["null", "File"]}]}},
"doc": ""}, {"name": "VCFs", "type": {"type": "array", "items": "File"}, "doc": ""}, {"name":
"bigWigs", "type": {"type": "array", "items": "File"}, "doc": ""}, {"name": "annotationFile",
"type": ["null", "File"], "doc": ""}, {"name": "cancerParticipant", "type": {"type": "record",
"name": "CancerParticipant", "doc": "", "fields": [{"name": "versionControl", "type":
"VersionControl", "doc": ""}, {"name": "cancerDemographics", "type": {"type": "record", "name":
"CancerDemographics", "doc": "", "fields": [{"name": "gelId", "type": "string", "doc": ""}, {"name":
"center", "type": "string", "doc": ""}, {"name": "centerPatientId", "type": ["null", "string"],
"doc": ""}, {"name": "labkeyParticipantId", "type": ["null", "string"], "doc": ""}, {"name":
"primaryDiagnosis", "type": ["null", "string"], "doc": ""}, {"name": "sex", "type": ["null",
{"type": "enum", "name": "Sex", "symbols": ["M", "F"]}], "doc": ""}, {"name": "consentStatus",
"type": {"type": "record", "name": "ConsentStatus", "doc": "", "fields": [{"name":
"programmeConsent", "type": "boolean", "doc": "", "default": false}, {"name":
"primaryFindingConsent", "type": "boolean", "doc": "", "default": false}, {"name":
"secondaryFindingConsent", "type": "boolean", "doc": "", "default": false}, {"name":
"carrierStatusConsent", "type": "boolean", "doc": "", "default": false}]}, "doc": ""}, {"name":
"additionalInformation", "type": ["null", {"type": "map", "values": "string"}], "doc": ""}, {"name":
"sampleId", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name":
"assignedICD10", "type": ["null", "string"], "doc": ""}]}, "doc": ""}, {"name": "cancerSamples",
"type": {"type": "array", "items": {"type": "record", "name": "CancerSample", "fields": [{"name":
"sampleId", "type": "string", "doc": ""}, {"name": "labId", "type": ["null", "string"], "doc": ""},
{"name": "gelPhase", "type": ["null", {"type": "enum", "name": "GelPhase", "symbols": ["CRUK",
"OXFORD", "CLL", "IIP", "MAIN", "EXPT"]}], "doc": ""}, {"name": "sampleType", "type": {"type":
"enum", "name": "SampleType", "symbols": ["germline", "tumor"]}, "doc": ""}, {"name":
"sampleDiagnosis", "type": ["null", "string"], "doc": ""}, {"name": "tumorType", "type": ["null",
"string"], "doc": ""}, {"name": "tumorSubType", "type": ["null", "string"], "doc": ""}, {"name":
"preservationMethod", "type": ["null", {"type": "enum", "name": "PreservationMethod", "symbols":
["FFPE", "FF", "UNKNOWN", "BLOOD", "GL", "SALIVA", "LEUK"]}], "doc": ""}, {"name": "phase", "type":
["null", {"type": "enum", "name": "Phase", "symbols": ["PRIMARY", "METASTATIC", "RECURRENCE"]}],
"doc": ""}, {"name": "method", "type": ["null", {"type": "enum", "name": "Method", "symbols":
["RESECTION", "BIOPSY", "BLOOD"]}], "doc": ""}, {"name": "tumorPurity", "type": ["null", "double"],
"doc": ""}, {"name": "tumorContent", "type": ["null", "string"], "doc": ""}, {"name": "grade",
"type": ["null", "string"], "doc": ""}, {"name": "tnm_stage_version", "type": ["null", "string"],
"doc": ""}, {"name": "tmn_stage_grouping", "type": ["null", "string"], "doc": ""}]}}, "doc": ""},
{"name": "matchedSamples", "type": {"type": "array", "items": {"type": "record", "name":
"MatchedSamples", "doc": "", "fields": [{"name": "germlineSampleId", "type": ["null", "string"],
"doc": ""}, {"name": "tumorSampleId", "type": ["null", "string"], "doc": ""}]}}, "doc": ""}]}},
{"name": "analysisURI", "type": "string", "doc": ""}, {"name": "analysisVersion", "type": "string",
"doc": ""}, {"name": "TieredVariants", "type": {"type": "array", "items": {"type": "record", "name":
"ReportedSomaticVariants", "fields": [{"name": "reportedVariantCancer", "type": {"type": "record",
"name": "ReportedVariantCancer", "fields": [{"name": "chromosome", "type": "string", "doc": ""},
{"name": "position", "type": "int", "doc": ""}, {"name": "reference", "type": "string", "doc": ""},
{"name": "alternate", "type": "string", "doc": ""}, {"name": "CosmicIds", "type": ["null", {"type":
"array", "items": "string"}], "doc": ""}, {"name": "ClinVarIds", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}, {"name": "dbSNPid", "type": ["null", "string"], "doc": ""},
{"name": "cDNAchange", "type": ["null", "string"], "doc": ""}, {"name": "proteinChange", "type":
["null", "string"], "doc": ""}, {"name": "depthReference", "type": ["null", "int"], "doc": ""},
{"name": "depthAlternate", "type": ["null", "int"], "doc": ""}, {"name": "VAF", "type": ["null",
"double"], "doc": ""}, {"name": "commonAF", "type": ["null", "int"], "doc": ""}, {"name": "IHP",
"type": ["null", "int"], "doc": ""}, {"name": "additionalTextualVariantAnnotations", "type":
["null", {"type": "map", "values": "string"}], "doc": ""}, {"name":
"additionalNumericVariantAnnotations", "type": ["null", {"type": "map", "values": "float"}], "doc":
""}, {"name": "comments", "type": ["null", {"type": "array", "items": "string"}], "doc": ""},
{"name": "reportEvents", "type": {"type": "array", "items": {"type": "record", "name":
"ReportEventCancer", "fields": [{"name": "reportEventId", "type": "string", "doc": ""}, {"name":
"genomicFeatureCancer", "type": {"type": "record", "name": "GenomicFeatureCancer", "fields":
[{"name": "featureType", "type": {"type": "enum", "name": "FeatureTypes", "symbols":
["RegulatoryRegion", "Gene", "Transcript"]}, "doc": ""}, {"name": "ensemblId", "type": "string",
"doc": ""}, {"name": "refSeqTranscriptId", "type": "string", "doc": ""}, {"name": "refSeqProteinId",
"type": "string", "doc": ""}, {"name": "geneName", "type": "string", "doc": ""}, {"name":
"roleInCancer", "type": ["null", "string"], "doc": ""}]}, "doc": ""}, {"name": "soTerms", "type":
{"type": "array", "items": "string"}, "doc": ""}, {"name": "soNames", "type": {"type": "array",
"items": "string"}, "doc": ""}, {"name": "actions", "type": {"type": "array", "items": {"type":
"record", "name": "Actions", "fields": [{"name": "actionType", "type": "string"}, {"name":
"evidence", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name": "drug",
"type": ["null", "string"], "doc": ""}, {"name": "status", "type": ["null", "string"], "doc": ""},
{"name": "variantActionable", "type": "boolean", "doc": ""}, {"name": "comments", "type": ["null",
{"type": "array", "items": "string"}], "doc": ""}, {"name": "url", "type": ["null", "string"],
"doc": ""}, {"name": "evidenceType", "type": ["null", "string"], "doc": ""}, {"name": "source",
"type": "string", "doc": ""}]}}, "doc": ""}, {"name": "tier", "type": ["null", {"type": "enum",
"name": "Tier", "doc": "", "symbols": ["NONE", "TIER1", "TIER2", "TIER3"]}], "doc": ""}]}}}]},
"doc": ""}, {"name": "somaticOrGermline", "type": {"type": "enum", "name": "SomaticOrGermline",
"doc": "", "symbols": ["unknown", "somatic", "germline"]}, "doc": ""}]}}, "doc": ""}, {"name":
"structuralTieredVariants", "type": {"type": "array", "items": {"type": "record", "name":
"ReportedSomaticStructuralVariants", "fields": [{"name": "reportedStructuralVariantCancer", "type":
{"type": "record", "name": "ReportedStructuralVariantCancer", "fields": [{"name": "chromosome",
"type": "string", "doc": ""}, {"name": "start", "type": "int", "doc": ""}, {"name": "end", "type":
"int", "doc": ""}, {"name": "type", "type": "string", "doc": ""}, {"name": "reference", "type":
"string", "doc": ""}, {"name": "alternate", "type": "string", "doc": ""}, {"name":
"additionalTextualVariantAnnotations", "type": ["null", {"type": "map", "values": "string"}], "doc":
""}, {"name": "additionalNumericVariantAnnotations", "type": ["null", {"type": "map", "values":
"float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array", "items": "string"}],
"doc": ""}]}, "doc": ""}, {"name": "somaticOrGermline", "type": "SomaticOrGermline", "doc": ""}]}},
"doc": ""}, {"name": "TieringVersion", "type": "string", "doc": ""}, {"name": "workspace", "type":
{"type": "array", "items": "string"}, "doc": ""}, {"name": "additionalInfo", "type": ["null",
{"type": "map", "values": "string"}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "BAMs",
        "TieredVariants",
        "TieringVersion",
        "VCFs",
        "additionalInfo",
        "analysisURI",
        "analysisVersion",
        "annotationFile",
        "bigWigs",
        "cancerParticipant",
        "reportRequestId",
        "reportVersion",
        "structuralTieredVariants",
        "versionControl",
        "workspace",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'BAMs': File,
            'TieredVariants': ReportedSomaticVariants,
            'VCFs': File,
            'annotationFile': File,
            'bigWigs': File,
            'cancerParticipant': CancerParticipant,
            'structuralTieredVariants': ReportedSomaticStructuralVariants,
            'versionControl': VersionControl,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'BAMs': File,
            'TieredVariants': ReportedSomaticVariants,
            'VCFs': File,
            'annotationFile': File,
            'bigWigs': File,
            'cancerParticipant': CancerParticipant,
            'structuralTieredVariants': ReportedSomaticStructuralVariants,
            'versionControl': VersionControl,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'BAMs', 'TieredVariants', 'TieringVersion', 'VCFs',
        'additionalInfo', 'analysisURI', 'analysisVersion',
        'annotationFile', 'bigWigs', 'cancerParticipant',
        'interpretGenome', 'reportRequestId', 'reportVersion',
        'structuralTieredVariants', 'versionControl', 'workspace'
    ]

    def __init__(self, **kwargs):
        self.BAMs = kwargs.get(
            'BAMs', None)
        self.TieredVariants = kwargs.get(
            'TieredVariants', None)
        self.TieringVersion = kwargs.get(
            'TieringVersion', None)
        self.VCFs = kwargs.get(
            'VCFs', None)
        self.additionalInfo = kwargs.get(
            'additionalInfo', None)
        self.analysisURI = kwargs.get(
            'analysisURI', None)
        self.analysisVersion = kwargs.get(
            'analysisVersion', None)
        self.annotationFile = kwargs.get(
            'annotationFile', None)
        self.bigWigs = kwargs.get(
            'bigWigs', None)
        self.cancerParticipant = kwargs.get(
            'cancerParticipant', CancerParticipant())
        self.interpretGenome = kwargs.get(
            'interpretGenome', False)
        self.reportRequestId = kwargs.get(
            'reportRequestId', None)
        self.reportVersion = kwargs.get(
            'reportVersion', None)
        self.structuralTieredVariants = kwargs.get(
            'structuralTieredVariants', None)
        self.versionControl = kwargs.get(
            'versionControl', VersionControl())
        self.workspace = kwargs.get(
            'workspace', None)


class CancerInterpretedGenome(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "CancerInterpretedGenome", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "versionControl", "type": {"type": "record", "name": "VersionControl", "fields":
[{"name": "GitVersionControl", "type": "string", "doc": "", "default": "3.0.0"}]}, "doc": ""},
{"name": "reportRequestId", "type": "string", "doc": ""}, {"name": "analysisId", "type": "string",
"doc": ""}, {"name": "reportURI", "type": "string", "doc": ""}, {"name":
"referenceDatabasesVersions", "type": {"type": "map", "values": "string"}, "doc": ""}, {"name":
"softwareVersions", "type": {"type": "map", "values": "string"}, "doc": ""}, {"name":
"reportedVariants", "type": {"type": "array", "items": {"type": "record", "name":
"ReportedSomaticVariants", "fields": [{"name": "reportedVariantCancer", "type": {"type": "record",
"name": "ReportedVariantCancer", "fields": [{"name": "chromosome", "type": "string", "doc": ""},
{"name": "position", "type": "int", "doc": ""}, {"name": "reference", "type": "string", "doc": ""},
{"name": "alternate", "type": "string", "doc": ""}, {"name": "CosmicIds", "type": ["null", {"type":
"array", "items": "string"}], "doc": ""}, {"name": "ClinVarIds", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}, {"name": "dbSNPid", "type": ["null", "string"], "doc": ""},
{"name": "cDNAchange", "type": ["null", "string"], "doc": ""}, {"name": "proteinChange", "type":
["null", "string"], "doc": ""}, {"name": "depthReference", "type": ["null", "int"], "doc": ""},
{"name": "depthAlternate", "type": ["null", "int"], "doc": ""}, {"name": "VAF", "type": ["null",
"double"], "doc": ""}, {"name": "commonAF", "type": ["null", "int"], "doc": ""}, {"name": "IHP",
"type": ["null", "int"], "doc": ""}, {"name": "additionalTextualVariantAnnotations", "type":
["null", {"type": "map", "values": "string"}], "doc": ""}, {"name":
"additionalNumericVariantAnnotations", "type": ["null", {"type": "map", "values": "float"}], "doc":
""}, {"name": "comments", "type": ["null", {"type": "array", "items": "string"}], "doc": ""},
{"name": "reportEvents", "type": {"type": "array", "items": {"type": "record", "name":
"ReportEventCancer", "fields": [{"name": "reportEventId", "type": "string", "doc": ""}, {"name":
"genomicFeatureCancer", "type": {"type": "record", "name": "GenomicFeatureCancer", "fields":
[{"name": "featureType", "type": {"type": "enum", "name": "FeatureTypes", "symbols":
["RegulatoryRegion", "Gene", "Transcript"]}, "doc": ""}, {"name": "ensemblId", "type": "string",
"doc": ""}, {"name": "refSeqTranscriptId", "type": "string", "doc": ""}, {"name": "refSeqProteinId",
"type": "string", "doc": ""}, {"name": "geneName", "type": "string", "doc": ""}, {"name":
"roleInCancer", "type": ["null", "string"], "doc": ""}]}, "doc": ""}, {"name": "soTerms", "type":
{"type": "array", "items": "string"}, "doc": ""}, {"name": "soNames", "type": {"type": "array",
"items": "string"}, "doc": ""}, {"name": "actions", "type": {"type": "array", "items": {"type":
"record", "name": "Actions", "fields": [{"name": "actionType", "type": "string"}, {"name":
"evidence", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name": "drug",
"type": ["null", "string"], "doc": ""}, {"name": "status", "type": ["null", "string"], "doc": ""},
{"name": "variantActionable", "type": "boolean", "doc": ""}, {"name": "comments", "type": ["null",
{"type": "array", "items": "string"}], "doc": ""}, {"name": "url", "type": ["null", "string"],
"doc": ""}, {"name": "evidenceType", "type": ["null", "string"], "doc": ""}, {"name": "source",
"type": "string", "doc": ""}]}}, "doc": ""}, {"name": "tier", "type": ["null", {"type": "enum",
"name": "Tier", "doc": "", "symbols": ["NONE", "TIER1", "TIER2", "TIER3"]}], "doc": ""}]}}}]},
"doc": ""}, {"name": "somaticOrGermline", "type": {"type": "enum", "name": "SomaticOrGermline",
"doc": "", "symbols": ["unknown", "somatic", "germline"]}, "doc": ""}]}}}, {"name":
"reportedStructuralVariants", "type": {"type": "array", "items": {"type": "record", "name":
"ReportedSomaticStructuralVariants", "fields": [{"name": "reportedStructuralVariantCancer", "type":
{"type": "record", "name": "ReportedStructuralVariantCancer", "fields": [{"name": "chromosome",
"type": "string", "doc": ""}, {"name": "start", "type": "int", "doc": ""}, {"name": "end", "type":
"int", "doc": ""}, {"name": "type", "type": "string", "doc": ""}, {"name": "reference", "type":
"string", "doc": ""}, {"name": "alternate", "type": "string", "doc": ""}, {"name":
"additionalTextualVariantAnnotations", "type": ["null", {"type": "map", "values": "string"}], "doc":
""}, {"name": "additionalNumericVariantAnnotations", "type": ["null", {"type": "map", "values":
"float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array", "items": "string"}],
"doc": ""}]}, "doc": ""}, {"name": "somaticOrGermline", "type": "SomaticOrGermline", "doc": ""}]}}},
{"name": "comments", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "analysisId",
        "comments",
        "referenceDatabasesVersions",
        "reportRequestId",
        "reportURI",
        "reportedStructuralVariants",
        "reportedVariants",
        "softwareVersions",
        "versionControl",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'reportedStructuralVariants': ReportedSomaticStructuralVariants,
            'reportedVariants': ReportedSomaticVariants,
            'versionControl': VersionControl,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'reportedStructuralVariants': ReportedSomaticStructuralVariants,
            'reportedVariants': ReportedSomaticVariants,
            'versionControl': VersionControl,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'analysisId', 'comments', 'referenceDatabasesVersions',
        'reportRequestId', 'reportURI', 'reportedStructuralVariants',
        'reportedVariants', 'softwareVersions', 'versionControl'
    ]

    def __init__(self, **kwargs):
        self.analysisId = kwargs.get(
            'analysisId', None)
        self.comments = kwargs.get(
            'comments', None)
        self.referenceDatabasesVersions = kwargs.get(
            'referenceDatabasesVersions', None)
        self.reportRequestId = kwargs.get(
            'reportRequestId', None)
        self.reportURI = kwargs.get(
            'reportURI', None)
        self.reportedStructuralVariants = kwargs.get(
            'reportedStructuralVariants', None)
        self.reportedVariants = kwargs.get(
            'reportedVariants', None)
        self.softwareVersions = kwargs.get(
            'softwareVersions', None)
        self.versionControl = kwargs.get(
            'versionControl', VersionControl())


class CancerParticipant(ProtocolElement):
    """
    This defines a Cancer Participant (demographics and sample
    information)
    """
    _schemaSource = """
{"type": "record", "name": "CancerParticipant", "namespace": "org.gel.models.report.avro", "doc":
"", "fields": [{"name": "versionControl", "type": {"type": "record", "name": "VersionControl",
"fields": [{"name": "GitVersionControl", "type": "string", "doc": "", "default": "3.0.0"}]}, "doc":
""}, {"name": "cancerDemographics", "type": {"type": "record", "name": "CancerDemographics", "doc":
"", "fields": [{"name": "gelId", "type": "string", "doc": ""}, {"name": "center", "type": "string",
"doc": ""}, {"name": "centerPatientId", "type": ["null", "string"], "doc": ""}, {"name":
"labkeyParticipantId", "type": ["null", "string"], "doc": ""}, {"name": "primaryDiagnosis", "type":
["null", "string"], "doc": ""}, {"name": "sex", "type": ["null", {"type": "enum", "name": "Sex",
"symbols": ["M", "F"]}], "doc": ""}, {"name": "consentStatus", "type": {"type": "record", "name":
"ConsentStatus", "doc": "", "fields": [{"name": "programmeConsent", "type": "boolean", "doc": "",
"default": false}, {"name": "primaryFindingConsent", "type": "boolean", "doc": "", "default":
false}, {"name": "secondaryFindingConsent", "type": "boolean", "doc": "", "default": false},
{"name": "carrierStatusConsent", "type": "boolean", "doc": "", "default": false}]}, "doc": ""},
{"name": "additionalInformation", "type": ["null", {"type": "map", "values": "string"}], "doc": ""},
{"name": "sampleId", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name":
"assignedICD10", "type": ["null", "string"], "doc": ""}]}, "doc": ""}, {"name": "cancerSamples",
"type": {"type": "array", "items": {"type": "record", "name": "CancerSample", "fields": [{"name":
"sampleId", "type": "string", "doc": ""}, {"name": "labId", "type": ["null", "string"], "doc": ""},
{"name": "gelPhase", "type": ["null", {"type": "enum", "name": "GelPhase", "symbols": ["CRUK",
"OXFORD", "CLL", "IIP", "MAIN", "EXPT"]}], "doc": ""}, {"name": "sampleType", "type": {"type":
"enum", "name": "SampleType", "symbols": ["germline", "tumor"]}, "doc": ""}, {"name":
"sampleDiagnosis", "type": ["null", "string"], "doc": ""}, {"name": "tumorType", "type": ["null",
"string"], "doc": ""}, {"name": "tumorSubType", "type": ["null", "string"], "doc": ""}, {"name":
"preservationMethod", "type": ["null", {"type": "enum", "name": "PreservationMethod", "symbols":
["FFPE", "FF", "UNKNOWN", "BLOOD", "GL", "SALIVA", "LEUK"]}], "doc": ""}, {"name": "phase", "type":
["null", {"type": "enum", "name": "Phase", "symbols": ["PRIMARY", "METASTATIC", "RECURRENCE"]}],
"doc": ""}, {"name": "method", "type": ["null", {"type": "enum", "name": "Method", "symbols":
["RESECTION", "BIOPSY", "BLOOD"]}], "doc": ""}, {"name": "tumorPurity", "type": ["null", "double"],
"doc": ""}, {"name": "tumorContent", "type": ["null", "string"], "doc": ""}, {"name": "grade",
"type": ["null", "string"], "doc": ""}, {"name": "tnm_stage_version", "type": ["null", "string"],
"doc": ""}, {"name": "tmn_stage_grouping", "type": ["null", "string"], "doc": ""}]}}, "doc": ""},
{"name": "matchedSamples", "type": {"type": "array", "items": {"type": "record", "name":
"MatchedSamples", "doc": "", "fields": [{"name": "germlineSampleId", "type": ["null", "string"],
"doc": ""}, {"name": "tumorSampleId", "type": ["null", "string"], "doc": ""}]}}, "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "cancerDemographics",
        "cancerSamples",
        "matchedSamples",
        "versionControl",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'cancerDemographics': CancerDemographics,
            'cancerSamples': CancerSample,
            'matchedSamples': MatchedSamples,
            'versionControl': VersionControl,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'cancerDemographics': CancerDemographics,
            'cancerSamples': CancerSample,
            'matchedSamples': MatchedSamples,
            'versionControl': VersionControl,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'cancerDemographics', 'cancerSamples', 'matchedSamples',
        'versionControl'
    ]

    def __init__(self, **kwargs):
        self.cancerDemographics = kwargs.get(
            'cancerDemographics', CancerDemographics())
        self.cancerSamples = kwargs.get(
            'cancerSamples', None)
        self.matchedSamples = kwargs.get(
            'matchedSamples', None)
        self.versionControl = kwargs.get(
            'versionControl', VersionControl())


class CancerSample(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "CancerSample", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "sampleId", "type": "string", "doc": ""}, {"name": "labId", "type": ["null", "string"],
"doc": ""}, {"name": "gelPhase", "type": ["null", {"type": "enum", "name": "GelPhase", "symbols":
["CRUK", "OXFORD", "CLL", "IIP", "MAIN", "EXPT"]}], "doc": ""}, {"name": "sampleType", "type":
{"type": "enum", "name": "SampleType", "symbols": ["germline", "tumor"]}, "doc": ""}, {"name":
"sampleDiagnosis", "type": ["null", "string"], "doc": ""}, {"name": "tumorType", "type": ["null",
"string"], "doc": ""}, {"name": "tumorSubType", "type": ["null", "string"], "doc": ""}, {"name":
"preservationMethod", "type": ["null", {"type": "enum", "name": "PreservationMethod", "symbols":
["FFPE", "FF", "UNKNOWN", "BLOOD", "GL", "SALIVA", "LEUK"]}], "doc": ""}, {"name": "phase", "type":
["null", {"type": "enum", "name": "Phase", "symbols": ["PRIMARY", "METASTATIC", "RECURRENCE"]}],
"doc": ""}, {"name": "method", "type": ["null", {"type": "enum", "name": "Method", "symbols":
["RESECTION", "BIOPSY", "BLOOD"]}], "doc": ""}, {"name": "tumorPurity", "type": ["null", "double"],
"doc": ""}, {"name": "tumorContent", "type": ["null", "string"], "doc": ""}, {"name": "grade",
"type": ["null", "string"], "doc": ""}, {"name": "tnm_stage_version", "type": ["null", "string"],
"doc": ""}, {"name": "tmn_stage_grouping", "type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "gelPhase",
        "grade",
        "labId",
        "method",
        "phase",
        "preservationMethod",
        "sampleDiagnosis",
        "sampleId",
        "sampleType",
        "tmn_stage_grouping",
        "tnm_stage_version",
        "tumorContent",
        "tumorPurity",
        "tumorSubType",
        "tumorType",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'gelPhase', 'grade', 'labId', 'method', 'phase',
        'preservationMethod', 'sampleDiagnosis', 'sampleId',
        'sampleType', 'tmn_stage_grouping', 'tnm_stage_version',
        'tumorContent', 'tumorPurity', 'tumorSubType', 'tumorType'
    ]

    def __init__(self, **kwargs):
        self.gelPhase = kwargs.get(
            'gelPhase', None)
        self.grade = kwargs.get(
            'grade', None)
        self.labId = kwargs.get(
            'labId', None)
        self.method = kwargs.get(
            'method', None)
        self.phase = kwargs.get(
            'phase', None)
        self.preservationMethod = kwargs.get(
            'preservationMethod', None)
        self.sampleDiagnosis = kwargs.get(
            'sampleDiagnosis', None)
        self.sampleId = kwargs.get(
            'sampleId', None)
        self.sampleType = kwargs.get(
            'sampleType', None)
        self.tmn_stage_grouping = kwargs.get(
            'tmn_stage_grouping', None)
        self.tnm_stage_version = kwargs.get(
            'tnm_stage_version', None)
        self.tumorContent = kwargs.get(
            'tumorContent', None)
        self.tumorPurity = kwargs.get(
            'tumorPurity', None)
        self.tumorSubType = kwargs.get(
            'tumorSubType', None)
        self.tumorType = kwargs.get(
            'tumorType', None)


class CancerSummaryMetrics(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "CancerSummaryMetrics", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "samtools_reads_mapped", "type": "double"}, {"name":
"samtools_reads_mapped_normal", "type": "double"}, {"name":
"samtools_pairs_on_different_chromosomes", "type": "double"}, {"name":
"samtools_pairs_on_different_chromosomes_normal", "type": "double"}, {"name":
"samtools_insert_size_average", "type": "double"}, {"name": "samtools_insert_size_average_normal",
"type": "double"}, {"name": "variantstats_total_snvs", "type": "int"}, {"name":
"variantstats_total_indels", "type": "int"}, {"name": "variantstats_total_svs", "type": ["null",
"int"]}, {"name": "tumor_contamination_cont_est", "type": "string"}, {"name":
"tumor_contamination_con_pair", "type": "string"}, {"name": "mean", "type": "double"}, {"name":
"mean_normal", "type": "double"}, {"name": "local_rmsd_normal", "type": "double"}, {"name":
"local_rmsd", "type": "double"}, {"name": "cosmic_30x_cov", "type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "cosmic_30x_cov",
        "local_rmsd",
        "local_rmsd_normal",
        "mean",
        "mean_normal",
        "samtools_insert_size_average",
        "samtools_insert_size_average_normal",
        "samtools_pairs_on_different_chromosomes",
        "samtools_pairs_on_different_chromosomes_normal",
        "samtools_reads_mapped",
        "samtools_reads_mapped_normal",
        "tumor_contamination_con_pair",
        "tumor_contamination_cont_est",
        "variantstats_total_indels",
        "variantstats_total_snvs",
        "variantstats_total_svs",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'cosmic_30x_cov', 'local_rmsd', 'local_rmsd_normal', 'mean',
        'mean_normal', 'samtools_insert_size_average',
        'samtools_insert_size_average_normal',
        'samtools_pairs_on_different_chromosomes',
        'samtools_pairs_on_different_chromosomes_normal',
        'samtools_reads_mapped', 'samtools_reads_mapped_normal',
        'tumor_contamination_con_pair',
        'tumor_contamination_cont_est', 'variantstats_total_indels',
        'variantstats_total_snvs', 'variantstats_total_svs'
    ]

    def __init__(self, **kwargs):
        self.cosmic_30x_cov = kwargs.get(
            'cosmic_30x_cov', None)
        self.local_rmsd = kwargs.get(
            'local_rmsd', None)
        self.local_rmsd_normal = kwargs.get(
            'local_rmsd_normal', None)
        self.mean = kwargs.get(
            'mean', None)
        self.mean_normal = kwargs.get(
            'mean_normal', None)
        self.samtools_insert_size_average = kwargs.get(
            'samtools_insert_size_average', None)
        self.samtools_insert_size_average_normal = kwargs.get(
            'samtools_insert_size_average_normal', None)
        self.samtools_pairs_on_different_chromosomes = kwargs.get(
            'samtools_pairs_on_different_chromosomes', None)
        self.samtools_pairs_on_different_chromosomes_normal = kwargs.get(
            'samtools_pairs_on_different_chromosomes_normal', None)
        self.samtools_reads_mapped = kwargs.get(
            'samtools_reads_mapped', None)
        self.samtools_reads_mapped_normal = kwargs.get(
            'samtools_reads_mapped_normal', None)
        self.tumor_contamination_con_pair = kwargs.get(
            'tumor_contamination_con_pair', None)
        self.tumor_contamination_cont_est = kwargs.get(
            'tumor_contamination_cont_est', None)
        self.variantstats_total_indels = kwargs.get(
            'variantstats_total_indels', None)
        self.variantstats_total_snvs = kwargs.get(
            'variantstats_total_snvs', None)
        self.variantstats_total_svs = kwargs.get(
            'variantstats_total_svs', None)


class CaseShared(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "CaseShared", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "previousGroups", "type": {"type": "array", "items": "string"}}, {"name":
"modifiedGroups", "type": {"type": "array", "items": "string"}}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "modifiedGroups",
        "previousGroups",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'modifiedGroups', 'previousGroups'
    ]

    def __init__(self, **kwargs):
        self.modifiedGroups = kwargs.get(
            'modifiedGroups', None)
        self.previousGroups = kwargs.get(
            'previousGroups', None)


class CaseSolvedFamily(object):
    """
    No documentation
    """
    yes = "yes"
    no = "no"
    partially = "partially"
    unknown = "unknown"

    def __hash__(self):
        return str(self).__hash__()


class ChiSquare1KGenomesPhase3Pop(ProtocolElement):
    """
    Chi-square test for goodness of fit of this sample to 1000 Genomes
    Phase 3 populations
    """
    _schemaSource = """
{"type": "record", "name": "ChiSquare1KGenomesPhase3Pop", "namespace": "org.gel.models.report.avro",
"doc": "", "fields": [{"name": "kGSuperPopCategory", "type": {"type": "enum", "name":
"KGSuperPopCategory", "doc": "", "symbols": ["AFR", "AMR", "EAS", "EUR", "SAS"]}, "doc": ""},
{"name": "kGPopCategory", "type": ["null", {"type": "enum", "name": "KGPopCategory", "doc": "",
"symbols": ["ACB", "ASW", "BEB", "CDX", "CEU", "CHB", "CHS", "CLM", "ESN", "FIN", "GBR", "GIH",
"GWD", "IBS", "ITU", "JPT", "KHV", "LWK", "MSL", "MXL", "PEL", "PJL", "PUR", "STU", "TSI", "YRI"]}],
"doc": ""}, {"name": "chiSquare", "type": "float", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "chiSquare",
        "kGPopCategory",
        "kGSuperPopCategory",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'chiSquare', 'kGPopCategory', 'kGSuperPopCategory'
    ]

    def __init__(self, **kwargs):
        self.chiSquare = kwargs.get(
            'chiSquare', None)
        self.kGPopCategory = kwargs.get(
            'kGPopCategory', None)
        self.kGSuperPopCategory = kwargs.get(
            'kGSuperPopCategory', None)


class ClinicalReportCancer(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "ClinicalReportCancer", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "interpretationRequestID", "type": "string", "doc": ""}, {"name":
"interpretationRequestVersion", "type": "string", "doc": ""}, {"name": "reportingDate", "type":
"string", "doc": ""}, {"name": "user", "type": "string", "doc": ""}, {"name": "candidateVariants",
"type": {"type": "array", "items": {"type": "record", "name": "ReportedSomaticVariants", "fields":
[{"name": "reportedVariantCancer", "type": {"type": "record", "name": "ReportedVariantCancer",
"fields": [{"name": "chromosome", "type": "string", "doc": ""}, {"name": "position", "type": "int",
"doc": ""}, {"name": "reference", "type": "string", "doc": ""}, {"name": "alternate", "type":
"string", "doc": ""}, {"name": "CosmicIds", "type": ["null", {"type": "array", "items": "string"}],
"doc": ""}, {"name": "ClinVarIds", "type": ["null", {"type": "array", "items": "string"}], "doc":
""}, {"name": "dbSNPid", "type": ["null", "string"], "doc": ""}, {"name": "cDNAchange", "type":
["null", "string"], "doc": ""}, {"name": "proteinChange", "type": ["null", "string"], "doc": ""},
{"name": "depthReference", "type": ["null", "int"], "doc": ""}, {"name": "depthAlternate", "type":
["null", "int"], "doc": ""}, {"name": "VAF", "type": ["null", "double"], "doc": ""}, {"name":
"commonAF", "type": ["null", "int"], "doc": ""}, {"name": "IHP", "type": ["null", "int"], "doc":
""}, {"name": "additionalTextualVariantAnnotations", "type": ["null", {"type": "map", "values":
"string"}], "doc": ""}, {"name": "additionalNumericVariantAnnotations", "type": ["null", {"type":
"map", "values": "float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}, {"name": "reportEvents", "type": {"type": "array", "items":
{"type": "record", "name": "ReportEventCancer", "fields": [{"name": "reportEventId", "type":
"string", "doc": ""}, {"name": "genomicFeatureCancer", "type": {"type": "record", "name":
"GenomicFeatureCancer", "fields": [{"name": "featureType", "type": {"type": "enum", "name":
"FeatureTypes", "symbols": ["RegulatoryRegion", "Gene", "Transcript"]}, "doc": ""}, {"name":
"ensemblId", "type": "string", "doc": ""}, {"name": "refSeqTranscriptId", "type": "string", "doc":
""}, {"name": "refSeqProteinId", "type": "string", "doc": ""}, {"name": "geneName", "type":
"string", "doc": ""}, {"name": "roleInCancer", "type": ["null", "string"], "doc": ""}]}, "doc": ""},
{"name": "soTerms", "type": {"type": "array", "items": "string"}, "doc": ""}, {"name": "soNames",
"type": {"type": "array", "items": "string"}, "doc": ""}, {"name": "actions", "type": {"type":
"array", "items": {"type": "record", "name": "Actions", "fields": [{"name": "actionType", "type":
"string"}, {"name": "evidence", "type": ["null", {"type": "array", "items": "string"}], "doc": ""},
{"name": "drug", "type": ["null", "string"], "doc": ""}, {"name": "status", "type": ["null",
"string"], "doc": ""}, {"name": "variantActionable", "type": "boolean", "doc": ""}, {"name":
"comments", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name": "url",
"type": ["null", "string"], "doc": ""}, {"name": "evidenceType", "type": ["null", "string"], "doc":
""}, {"name": "source", "type": "string", "doc": ""}]}}, "doc": ""}, {"name": "tier", "type":
["null", {"type": "enum", "name": "Tier", "doc": "", "symbols": ["NONE", "TIER1", "TIER2",
"TIER3"]}], "doc": ""}]}}}]}, "doc": ""}, {"name": "somaticOrGermline", "type": {"type": "enum",
"name": "SomaticOrGermline", "doc": "", "symbols": ["unknown", "somatic", "germline"]}, "doc":
""}]}}, "doc": ""}, {"name": "candidateStructuralVariants", "type": {"type": "array", "items":
{"type": "record", "name": "ReportedSomaticStructuralVariants", "fields": [{"name":
"reportedStructuralVariantCancer", "type": {"type": "record", "name":
"ReportedStructuralVariantCancer", "fields": [{"name": "chromosome", "type": "string", "doc": ""},
{"name": "start", "type": "int", "doc": ""}, {"name": "end", "type": "int", "doc": ""}, {"name":
"type", "type": "string", "doc": ""}, {"name": "reference", "type": "string", "doc": ""}, {"name":
"alternate", "type": "string", "doc": ""}, {"name": "additionalTextualVariantAnnotations", "type":
["null", {"type": "map", "values": "string"}], "doc": ""}, {"name":
"additionalNumericVariantAnnotations", "type": ["null", {"type": "map", "values": "float"}], "doc":
""}, {"name": "comments", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}]},
"doc": ""}, {"name": "somaticOrGermline", "type": "SomaticOrGermline", "doc": ""}]}}, "doc": ""},
{"name": "genomicInterpretation", "type": "string", "doc": ""}, {"name": "references", "type":
["null", {"type": "array", "items": "string"}], "doc": ""}, {"name": "referenceDatabasesVersions",
"type": {"type": "map", "values": "string"}, "doc": ""}, {"name": "softwareVersions", "type":
{"type": "map", "values": "string"}, "doc": ""}, {"name": "genePanelsCoverage", "type": {"type":
"map", "values": {"type": "array", "items": {"type": "map", "values": "string"}}}, "doc": ""},
{"name": "cancerParticipant", "type": {"type": "record", "name": "CancerParticipant", "doc": "",
"fields": [{"name": "versionControl", "type": {"type": "record", "name": "VersionControl", "fields":
[{"name": "GitVersionControl", "type": "string", "doc": "", "default": "3.0.0"}]}, "doc": ""},
{"name": "cancerDemographics", "type": {"type": "record", "name": "CancerDemographics", "doc": "",
"fields": [{"name": "gelId", "type": "string", "doc": ""}, {"name": "center", "type": "string",
"doc": ""}, {"name": "centerPatientId", "type": ["null", "string"], "doc": ""}, {"name":
"labkeyParticipantId", "type": ["null", "string"], "doc": ""}, {"name": "primaryDiagnosis", "type":
["null", "string"], "doc": ""}, {"name": "sex", "type": ["null", {"type": "enum", "name": "Sex",
"symbols": ["M", "F"]}], "doc": ""}, {"name": "consentStatus", "type": {"type": "record", "name":
"ConsentStatus", "doc": "", "fields": [{"name": "programmeConsent", "type": "boolean", "doc": "",
"default": false}, {"name": "primaryFindingConsent", "type": "boolean", "doc": "", "default":
false}, {"name": "secondaryFindingConsent", "type": "boolean", "doc": "", "default": false},
{"name": "carrierStatusConsent", "type": "boolean", "doc": "", "default": false}]}, "doc": ""},
{"name": "additionalInformation", "type": ["null", {"type": "map", "values": "string"}], "doc": ""},
{"name": "sampleId", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name":
"assignedICD10", "type": ["null", "string"], "doc": ""}]}, "doc": ""}, {"name": "cancerSamples",
"type": {"type": "array", "items": {"type": "record", "name": "CancerSample", "fields": [{"name":
"sampleId", "type": "string", "doc": ""}, {"name": "labId", "type": ["null", "string"], "doc": ""},
{"name": "gelPhase", "type": ["null", {"type": "enum", "name": "GelPhase", "symbols": ["CRUK",
"OXFORD", "CLL", "IIP", "MAIN", "EXPT"]}], "doc": ""}, {"name": "sampleType", "type": {"type":
"enum", "name": "SampleType", "symbols": ["germline", "tumor"]}, "doc": ""}, {"name":
"sampleDiagnosis", "type": ["null", "string"], "doc": ""}, {"name": "tumorType", "type": ["null",
"string"], "doc": ""}, {"name": "tumorSubType", "type": ["null", "string"], "doc": ""}, {"name":
"preservationMethod", "type": ["null", {"type": "enum", "name": "PreservationMethod", "symbols":
["FFPE", "FF", "UNKNOWN", "BLOOD", "GL", "SALIVA", "LEUK"]}], "doc": ""}, {"name": "phase", "type":
["null", {"type": "enum", "name": "Phase", "symbols": ["PRIMARY", "METASTATIC", "RECURRENCE"]}],
"doc": ""}, {"name": "method", "type": ["null", {"type": "enum", "name": "Method", "symbols":
["RESECTION", "BIOPSY", "BLOOD"]}], "doc": ""}, {"name": "tumorPurity", "type": ["null", "double"],
"doc": ""}, {"name": "tumorContent", "type": ["null", "string"], "doc": ""}, {"name": "grade",
"type": ["null", "string"], "doc": ""}, {"name": "tnm_stage_version", "type": ["null", "string"],
"doc": ""}, {"name": "tmn_stage_grouping", "type": ["null", "string"], "doc": ""}]}}, "doc": ""},
{"name": "matchedSamples", "type": {"type": "array", "items": {"type": "record", "name":
"MatchedSamples", "doc": "", "fields": [{"name": "germlineSampleId", "type": ["null", "string"],
"doc": ""}, {"name": "tumorSampleId", "type": ["null", "string"], "doc": ""}]}}, "doc": ""}]}}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "cancerParticipant",
        "candidateStructuralVariants",
        "candidateVariants",
        "genePanelsCoverage",
        "genomicInterpretation",
        "interpretationRequestID",
        "interpretationRequestVersion",
        "referenceDatabasesVersions",
        "references",
        "reportingDate",
        "softwareVersions",
        "user",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'cancerParticipant': CancerParticipant,
            'candidateStructuralVariants': ReportedSomaticStructuralVariants,
            'candidateVariants': ReportedSomaticVariants,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'cancerParticipant': CancerParticipant,
            'candidateStructuralVariants': ReportedSomaticStructuralVariants,
            'candidateVariants': ReportedSomaticVariants,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'cancerParticipant', 'candidateStructuralVariants',
        'candidateVariants', 'genePanelsCoverage',
        'genomicInterpretation', 'interpretationRequestID',
        'interpretationRequestVersion', 'referenceDatabasesVersions',
        'references', 'reportingDate', 'softwareVersions', 'user'
    ]

    def __init__(self, **kwargs):
        self.cancerParticipant = kwargs.get(
            'cancerParticipant', CancerParticipant())
        self.candidateStructuralVariants = kwargs.get(
            'candidateStructuralVariants', None)
        self.candidateVariants = kwargs.get(
            'candidateVariants', None)
        self.genePanelsCoverage = kwargs.get(
            'genePanelsCoverage', None)
        self.genomicInterpretation = kwargs.get(
            'genomicInterpretation', None)
        self.interpretationRequestID = kwargs.get(
            'interpretationRequestID', None)
        self.interpretationRequestVersion = kwargs.get(
            'interpretationRequestVersion', None)
        self.referenceDatabasesVersions = kwargs.get(
            'referenceDatabasesVersions', None)
        self.references = kwargs.get(
            'references', None)
        self.reportingDate = kwargs.get(
            'reportingDate', None)
        self.softwareVersions = kwargs.get(
            'softwareVersions', None)
        self.user = kwargs.get(
            'user', None)


class ClinicalReportRD(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "ClinicalReportRD", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "interpretationRequestID", "type": "string", "doc": ""}, {"name":
"interpretationRequestVersion", "type": "string", "doc": ""}, {"name":
"interpretationRequestAnalysisVersion", "type": "string", "doc": ""}, {"name": "reportingDate",
"type": "string", "doc": ""}, {"name": "user", "type": "string", "doc": ""}, {"name":
"candidateVariants", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"ReportedVariant", "fields": [{"name": "chromosome", "type": "string", "doc": ""}, {"name":
"dbSNPid", "type": ["null", "string"], "doc": ""}, {"name": "position", "type": "int", "doc": ""},
{"name": "reference", "type": "string", "doc": ""}, {"name": "alternate", "type": "string", "doc":
""}, {"name": "calledGenotypes", "type": {"type": "array", "items": {"type": "record", "name":
"CalledGenotype", "doc": "", "fields": [{"name": "gelId", "type": "string", "doc": ""}, {"name":
"sampleId", "type": "string", "doc": ""}, {"name": "genotype", "type": {"type": "enum", "name":
"Zygosity", "doc": "", "symbols": ["reference_homozygous", "heterozygous", "alternate_homozygous",
"missing", "half_missing_reference", "half_missing_alternate", "alternate_hemizigous",
"reference_hemizigous", "unk"]}, "doc": ""}, {"name": "phaseSet", "type": ["null", "int"], "doc":
""}, {"name": "depthReference", "type": ["null", "int"], "doc": ""}, {"name": "depthAlternate",
"type": ["null", "int"], "doc": ""}, {"name": "copyNumber", "type": ["null", "int"], "doc": ""}]}},
"doc": ""}, {"name": "reportEvents", "type": {"type": "array", "items": {"type": "record", "name":
"ReportEvent", "fields": [{"name": "reportEventId", "type": "string", "doc": ""}, {"name":
"phenotype", "type": "string", "doc": ""}, {"name": "panelName", "type": ["null", "string"], "doc":
""}, {"name": "panelVersion", "type": ["null", "string"], "doc": ""}, {"name": "modeOfInheritance",
"type": {"type": "enum", "name": "ReportedModeOfInheritance", "doc": "", "symbols": ["monoallelic",
"monoallelic_not_imprinted", "monoallelic_maternally_imprinted", "monoallelic_paternally_imprinted",
"biallelic", "monoallelic_and_biallelic", "monoallelic_and_more_severe_biallelic",
"xlinked_biallelic", "xlinked_monoallelic", "mitochondrial", "unknown"]}, "doc": ""}, {"name":
"genomicFeature", "type": {"type": "record", "name": "GenomicFeature", "fields": [{"name":
"featureType", "type": {"type": "enum", "name": "FeatureTypes", "symbols": ["RegulatoryRegion",
"Gene", "Transcript"]}, "doc": ""}, {"name": "ensemblId", "type": "string", "doc": ""}, {"name":
"HGNC", "type": ["null", "string"], "doc": ""}, {"name": "other_ids", "type": ["null", {"type":
"map", "values": "string"}], "doc": ""}]}, "doc": ""}, {"name": "penetrance", "type": {"type":
"enum", "name": "Penetrance", "doc": "", "symbols": ["complete", "incomplete"]}, "doc": ""},
{"name": "score", "type": "float", "doc": ""}, {"name": "vendorSpecificScores", "type": ["null",
{"type": "map", "values": "float"}], "doc": ""}, {"name": "variantClassification", "type": ["null",
{"type": "enum", "name": "VariantClassification", "doc": "", "symbols": ["BENIGN", "LIKELY_BENIGN",
"VUS", "LIKELY_PATHOGENIC", "PATHOGENIC"]}], "doc": ""}, {"name": "fullyExplainsPhenotype", "type":
["null", "boolean"], "doc": ""}, {"name": "groupOfVariants", "type": ["null", "int"], "doc": ""},
{"name": "eventJustification", "type": "string", "doc": ""}, {"name": "tier", "type": ["null",
{"type": "enum", "name": "Tier", "doc": "", "symbols": ["NONE", "TIER1", "TIER2", "TIER3"]}], "doc":
""}]}}, "doc": ""}, {"name": "additionalTextualVariantAnnotations", "type": ["null", {"type": "map",
"values": "string"}], "doc": ""}, {"name": "evidenceIds", "type": ["null", {"type": "map", "values":
"string"}], "doc": ""}, {"name": "additionalNumericVariantAnnotations", "type": ["null", {"type":
"map", "values": "float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}]}}], "doc": ""}, {"name": "candidateStructuralVariants", "type":
["null", {"type": "array", "items": {"type": "record", "name": "ReportedStructuralVariant",
"fields": [{"name": "chromosome", "type": "string", "doc": ""}, {"name": "start", "type": "int",
"doc": ""}, {"name": "end", "type": "int", "doc": ""}, {"name": "type", "type": "string", "doc":
""}, {"name": "reference", "type": "string", "doc": ""}, {"name": "alternate", "type": "string",
"doc": ""}, {"name": "calledGenotypes", "type": {"type": "array", "items": "CalledGenotype"}},
{"name": "reportEvents", "type": {"type": "array", "items": "ReportEvent"}, "doc": ""}, {"name":
"additionalTextualVariantAnnotations", "type": ["null", {"type": "map", "values": "string"}], "doc":
""}, {"name": "evidenceIds", "type": ["null", {"type": "map", "values": "string"}], "doc": ""},
{"name": "additionalNumericVariantAnnotations", "type": ["null", {"type": "map", "values":
"float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array", "items": "string"}],
"doc": ""}]}}], "doc": ""}, {"name": "genomicInterpretation", "type": "string", "doc": ""}, {"name":
"additionalAnalysisPanels", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"AdditionalAnalysisPanel", "fields": [{"name": "specificDisease", "type": "string"}, {"name":
"panelName", "type": "string"}, {"name": "panelVersion", "type": ["null", "string"]}]}}]}, {"name":
"supportingEvidence", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name":
"referenceDatabasesVersions", "type": {"type": "map", "values": "string"}, "doc": ""}, {"name":
"softwareVersions", "type": {"type": "map", "values": "string"}, "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "additionalAnalysisPanels",
        "candidateStructuralVariants",
        "candidateVariants",
        "genomicInterpretation",
        "interpretationRequestAnalysisVersion",
        "interpretationRequestID",
        "interpretationRequestVersion",
        "referenceDatabasesVersions",
        "reportingDate",
        "softwareVersions",
        "supportingEvidence",
        "user",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'additionalAnalysisPanels': AdditionalAnalysisPanel,
            'candidateStructuralVariants': ReportedStructuralVariant,
            'candidateVariants': ReportedVariant,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'additionalAnalysisPanels': AdditionalAnalysisPanel,
            'candidateStructuralVariants': ReportedStructuralVariant,
            'candidateVariants': ReportedVariant,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'additionalAnalysisPanels', 'candidateStructuralVariants',
        'candidateVariants', 'genomicInterpretation',
        'interpretationRequestAnalysisVersion',
        'interpretationRequestID', 'interpretationRequestVersion',
        'referenceDatabasesVersions', 'reportingDate',
        'softwareVersions', 'supportingEvidence', 'user'
    ]

    def __init__(self, **kwargs):
        self.additionalAnalysisPanels = kwargs.get(
            'additionalAnalysisPanels', None)
        self.candidateStructuralVariants = kwargs.get(
            'candidateStructuralVariants', None)
        self.candidateVariants = kwargs.get(
            'candidateVariants', None)
        self.genomicInterpretation = kwargs.get(
            'genomicInterpretation', None)
        self.interpretationRequestAnalysisVersion = kwargs.get(
            'interpretationRequestAnalysisVersion', None)
        self.interpretationRequestID = kwargs.get(
            'interpretationRequestID', None)
        self.interpretationRequestVersion = kwargs.get(
            'interpretationRequestVersion', None)
        self.referenceDatabasesVersions = kwargs.get(
            'referenceDatabasesVersions', None)
        self.reportingDate = kwargs.get(
            'reportingDate', None)
        self.softwareVersions = kwargs.get(
            'softwareVersions', None)
        self.supportingEvidence = kwargs.get(
            'supportingEvidence', None)
        self.user = kwargs.get(
            'user', None)


class ClinicalUtility(object):
    """
    No documentation
    """
    none = "none"
    change_in_medication = "change_in_medication"
    surgical_option = "surgical_option"
    additional_surveillance_for_proband_or_relatives = "additional_surveillance_for_proband_or_relatives"
    clinical_trial_eligibility = "clinical_trial_eligibility"
    informs_reproductive_choice = "informs_reproductive_choice"
    unknown = "unknown"
    other = "other"

    def __hash__(self):
        return str(self).__hash__()


class Code(object):
    """
    This code define the change type, it can define a general change
    in the case as CLOSED or can define a change in one or more
    variants:  * `C0`: **Case Closed successfully**: Clinical Report
    was generated with **one or more Candidate Variants**. * `C1`:
    **Case Closed unsuccessfully**: Clinical Report couldn't be
    generated because **no Candidate Variants were found**. * `C2`:
    **Case Blocked**: Errors were found in this cases and was sent to
    quarantine for further investigation * `C3`: **Case Shared**: This
    cases was shared with other group of users. * `C4`: **Supporting
    evidence change**: One or More supporting evidence were modified
    to the cases __(See ClinicalReport)__. * `C5`: **Variant added**:
    One or more variant were selected as Candidate Variants. * `C6`:
    **Variant removed**: One or more variant were removed as Candidate
    Variants. * `C7`: **Variant modified**: One or more Candidate
    Variants were modified __(Any change or comment over this variants
    should be capture)__.
    """
    C0 = "C0"
    C1 = "C1"
    C2 = "C2"
    C3 = "C3"
    C4 = "C4"
    C5 = "C5"
    C6 = "C6"
    C7 = "C7"

    def __hash__(self):
        return str(self).__hash__()


class ComplexGeneticPhenomena(object):
    """
    No documentation
    """
    mosaicism = "mosaicism"
    monosomy = "monosomy"
    disomy = "disomy"
    uniparental_disomy = "uniparental_disomy"
    trisomy = "trisomy"
    other_aneuploidy = "other_aneuploidy"

    def __hash__(self):
        return str(self).__hash__()


class ConfirmationDecision(object):
    """
    No documentation
    """
    yes = "yes"
    no = "no"
    na = "na"

    def __hash__(self):
        return str(self).__hash__()


class ConfirmationOutcome(object):
    """
    No documentation
    """
    yes = "yes"
    no = "no"
    na = "na"

    def __hash__(self):
        return str(self).__hash__()


class ConsentStatus(ProtocolElement):
    """
    Consent Status
    """
    _schemaSource = """
{"type": "record", "name": "ConsentStatus", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "programmeConsent", "type": "boolean", "doc": "", "default": false}, {"name":
"primaryFindingConsent", "type": "boolean", "doc": "", "default": false}, {"name":
"secondaryFindingConsent", "type": "boolean", "doc": "", "default": false}, {"name":
"carrierStatusConsent", "type": "boolean", "doc": "", "default": false}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {}

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'carrierStatusConsent', 'primaryFindingConsent',
        'programmeConsent', 'secondaryFindingConsent'
    ]

    def __init__(self, **kwargs):
        self.carrierStatusConsent = kwargs.get(
            'carrierStatusConsent', False)
        self.primaryFindingConsent = kwargs.get(
            'primaryFindingConsent', False)
        self.programmeConsent = kwargs.get(
            'programmeConsent', False)
        self.secondaryFindingConsent = kwargs.get(
            'secondaryFindingConsent', False)


class CoverageSummary(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "CoverageSummary", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "avg", "type": "double", "doc": ""}, {"name": "med", "type": "double", "doc": ""},
{"name": "bases", "type": "double", "doc": ""}, {"name": "pct25", "type": ["null", "double"], "doc":
""}, {"name": "pct75", "type": ["null", "double"], "doc": ""}, {"name": "lt15x", "type": ["null",
"double"], "doc": ""}, {"name": "gte15x", "type": ["null", "double"], "doc": ""}, {"name": "gte30x",
"type": ["null", "double"], "doc": ""}, {"name": "gte50x", "type": ["null", "double"], "doc": ""},
{"name": "sd", "type": ["null", "double"], "doc": ""}, {"name": "localRMSD", "type": ["null",
"double"], "doc": ""}, {"name": "scope", "type": "string", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "avg",
        "bases",
        "gte15x",
        "gte30x",
        "gte50x",
        "localRMSD",
        "lt15x",
        "med",
        "pct25",
        "pct75",
        "scope",
        "sd",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'avg', 'bases', 'gte15x', 'gte30x', 'gte50x', 'localRMSD',
        'lt15x', 'med', 'pct25', 'pct75', 'scope', 'sd'
    ]

    def __init__(self, **kwargs):
        self.avg = kwargs.get(
            'avg', None)
        self.bases = kwargs.get(
            'bases', None)
        self.gte15x = kwargs.get(
            'gte15x', None)
        self.gte30x = kwargs.get(
            'gte30x', None)
        self.gte50x = kwargs.get(
            'gte50x', None)
        self.localRMSD = kwargs.get(
            'localRMSD', None)
        self.lt15x = kwargs.get(
            'lt15x', None)
        self.med = kwargs.get(
            'med', None)
        self.pct25 = kwargs.get(
            'pct25', None)
        self.pct75 = kwargs.get(
            'pct75', None)
        self.scope = kwargs.get(
            'scope', None)
        self.sd = kwargs.get(
            'sd', None)


class DeliveryTask(ProtocolElement):
    """
    Defines a delivery task. A delivery task identifies an instance of
    the whole delivery     interaction cycle, whether successful or
    not. This allows traceability and identification     of failed
    deliveries
    """
    _schemaSource = """
{"type": "record", "name": "DeliveryTask", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "tieringResultId", "type": "int"}, {"name": "basePath", "type": "string", "doc":
""}, {"name": "protocolVersion", "type": "string"}, {"name": "rareOrCancer", "type": "string"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "basePath",
        "protocolVersion",
        "rareOrCancer",
        "tieringResultId",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'basePath', 'protocolVersion', 'rareOrCancer',
        'tieringResultId'
    ]

    def __init__(self, **kwargs):
        self.basePath = kwargs.get(
            'basePath', None)
        self.protocolVersion = kwargs.get(
            'protocolVersion', None)
        self.rareOrCancer = kwargs.get(
            'rareOrCancer', None)
        self.tieringResultId = kwargs.get(
            'tieringResultId', None)


class DiseasePenetrance(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "DiseasePenetrance", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "specificDisease", "type": "string"}, {"name": "penetrance", "type": {"type": "enum",
"name": "Penetrance", "doc": "", "symbols": ["complete", "incomplete"]}}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "penetrance",
        "specificDisease",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'penetrance', 'specificDisease'
    ]

    def __init__(self, **kwargs):
        self.penetrance = kwargs.get(
            'penetrance', None)
        self.specificDisease = kwargs.get(
            'specificDisease', None)


class Disorder(ProtocolElement):
    """
    This is quite GEL specific. This is the way is stored in
    ModelCatalogue and PanelApp. Currently all specific disease titles
    are assigned to a disease subgroup so really only specificDisease
    needs to be completed but we add the others for generality
    """
    _schemaSource = """
{"type": "record", "name": "Disorder", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "diseaseGroup", "type": ["null", "string"], "doc": ""}, {"name":
"diseaseSubGroup", "type": ["null", "string"], "doc": ""}, {"name": "specificDisease", "type":
["null", "string"], "doc": ""}, {"name": "ageOfOnset", "type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "ageOfOnset",
        "diseaseGroup",
        "diseaseSubGroup",
        "specificDisease",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'ageOfOnset', 'diseaseGroup', 'diseaseSubGroup',
        'specificDisease'
    ]

    def __init__(self, **kwargs):
        self.ageOfOnset = kwargs.get(
            'ageOfOnset', None)
        self.diseaseGroup = kwargs.get(
            'diseaseGroup', None)
        self.diseaseSubGroup = kwargs.get(
            'diseaseSubGroup', None)
        self.specificDisease = kwargs.get(
            'specificDisease', None)


class EthnicCategory(object):
    """
    This is the list of ethnics in ONS16  * `D`:  Mixed: White and
    Black Caribbean * `E`:  Mixed: White and Black African * `F`:
    Mixed: White and Asian * `G`:  Mixed: Any other mixed background *
    `A`:  White: British * `B`:  White: Irish * `C`:  White: Any other
    White background * `L`:  Asian or Asian British: Any other Asian
    background * `M`:  Black or Black British: Caribbean * `N`:  Black
    or Black British: African * `H`:  Asian or Asian British: Indian *
    `J`:  Asian or Asian British: Pakistani * `K`:  Asian or Asian
    British: Bangladeshi * `P`:  Black or Black British: Any other
    Black background * `S`:  Other Ethnic Groups: Any other ethnic
    group * `R`:  Other Ethnic Groups: Chinese * `Z`:  Not stated
    """
    D = "D"
    E = "E"
    F = "F"
    G = "G"
    A = "A"
    B = "B"
    C = "C"
    L = "L"
    M = "M"
    N = "N"
    H = "H"
    J = "J"
    K = "K"
    P = "P"
    S = "S"
    R = "R"
    Z = "Z"

    def __hash__(self):
        return str(self).__hash__()


class ExomeCoverage(ProtocolElement):
    """
    Renamed from ExonCoverage
    """
    _schemaSource = """
{"type": "record", "name": "ExomeCoverage", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "coverageSummary", "type": {"type": "array", "items": {"type": "record", "name":
"CoverageSummary", "fields": [{"name": "avg", "type": "double", "doc": ""}, {"name": "med", "type":
"double", "doc": ""}, {"name": "bases", "type": "double", "doc": ""}, {"name": "pct25", "type":
["null", "double"], "doc": ""}, {"name": "pct75", "type": ["null", "double"], "doc": ""}, {"name":
"lt15x", "type": ["null", "double"], "doc": ""}, {"name": "gte15x", "type": ["null", "double"],
"doc": ""}, {"name": "gte30x", "type": ["null", "double"], "doc": ""}, {"name": "gte50x", "type":
["null", "double"], "doc": ""}, {"name": "sd", "type": ["null", "double"], "doc": ""}, {"name":
"localRMSD", "type": ["null", "double"], "doc": ""}, {"name": "scope", "type": "string", "doc":
""}]}}}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "coverageSummary",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'coverageSummary': CoverageSummary,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'coverageSummary': CoverageSummary,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'coverageSummary'
    ]

    def __init__(self, **kwargs):
        self.coverageSummary = kwargs.get(
            'coverageSummary', None)


class FamilyLevelQuestions(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "FamilyLevelQuestions", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "caseSolvedFamily", "type": {"type": "enum", "name": "CaseSolvedFamily",
"symbols": ["yes", "no", "partially", "unknown"]}, "doc": ""}, {"name": "segregationQuestion",
"type": {"type": "enum", "name": "SegregationQuestion", "symbols": ["yes", "no"]}, "doc": ""},
{"name": "additionalComments", "type": "string", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "additionalComments",
        "caseSolvedFamily",
        "segregationQuestion",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'additionalComments', 'caseSolvedFamily',
        'segregationQuestion'
    ]

    def __init__(self, **kwargs):
        self.additionalComments = kwargs.get(
            'additionalComments', None)
        self.caseSolvedFamily = kwargs.get(
            'caseSolvedFamily', None)
        self.segregationQuestion = kwargs.get(
            'segregationQuestion', None)


class FeatureTypes(object):
    """
    No documentation
    """
    RegulatoryRegion = "RegulatoryRegion"
    Gene = "Gene"
    Transcript = "Transcript"

    def __hash__(self):
        return str(self).__hash__()


class File(ProtocolElement):
    """
    This defines a file This Record is defined by the sampleID and a
    URI Currently SampleID can be a single String or an array of
    strings if multiple samples are associated with the same file *
    """
    _schemaSource = """
{"type": "record", "name": "File", "namespace": "org.gel.models.report.avro", "doc": "", "fields":
[{"name": "SampleId", "type": ["null", "string", {"type": "array", "items": "string"}], "doc": ""},
{"name": "URIFile", "type": "string", "doc": ""}, {"name": "fileType", "type": {"type": "enum",
"name": "FileType", "symbols": ["BAM", "gVCF", "VCF_small", "VCF_somatic_small", "VCF_CNV",
"VCF_somatic_CNV", "VCF_SV", "VCF_somatic_SV", "VCF_SV_CNV", "SVG", "ANN", "BigWig", "MD5Sum",
"ROH", "OTHER"]}}, {"name": "md5Sum", "type": ["null", "File"]}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "SampleId",
        "URIFile",
        "fileType",
        "md5Sum",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'md5Sum': File,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'md5Sum': File,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'SampleId', 'URIFile', 'fileType', 'md5Sum'
    ]

    def __init__(self, **kwargs):
        self.SampleId = kwargs.get(
            'SampleId', None)
        self.URIFile = kwargs.get(
            'URIFile', None)
        self.fileType = kwargs.get(
            'fileType', None)
        self.md5Sum = kwargs.get(
            'md5Sum', None)


class FileType(object):
    """
    No documentation
    """
    BAM = "BAM"
    gVCF = "gVCF"
    VCF_small = "VCF_small"
    VCF_somatic_small = "VCF_somatic_small"
    VCF_CNV = "VCF_CNV"
    VCF_somatic_CNV = "VCF_somatic_CNV"
    VCF_SV = "VCF_SV"
    VCF_somatic_SV = "VCF_somatic_SV"
    VCF_SV_CNV = "VCF_SV_CNV"
    SVG = "SVG"
    ANN = "ANN"
    BigWig = "BigWig"
    MD5Sum = "MD5Sum"
    ROH = "ROH"
    OTHER = "OTHER"

    def __hash__(self):
        return str(self).__hash__()


class GelAtGcDrop(ProtocolElement):
    """
    GEL AT/GC dropout calculation
    """
    _schemaSource = """
{"type": "record", "name": "GelAtGcDrop", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "at_drop", "type": "double"}, {"name": "gc_drop", "type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "at_drop",
        "gc_drop",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'at_drop', 'gc_drop'
    ]

    def __init__(self, **kwargs):
        self.at_drop = kwargs.get(
            'at_drop', None)
        self.gc_drop = kwargs.get(
            'gc_drop', None)


class GelMetrics(ProtocolElement):
    """
    These are contractual metrics calculated by GEL  * `BaseDir` -
    Base directory of the data * `GbQ30NoDupsNoClip`: The number of
    missing genotypes * `perc_bases_ge_15x_mapQ_ge11`: Percentage of
    bases that have >=15x coverage and mapping quality >=11 *
    `InputDir`: Input dir of the data * `DirectoryType`: Illumina
    directory type version * `nBases_samtools`: number of bases from
    samtools * `FileRelativePath`: relative path of bam file *
    `md5checksum`: md5 of the delivery
    """
    _schemaSource = """
{"type": "record", "name": "GelMetrics", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "BaseDir", "type": "string"}, {"name": "GbQ30NoDupsNoClip", "type": "double"},
{"name": "perc_bases_ge_15x_mapQ_ge11", "type": "float"}, {"name": "InputDir", "type": "string"},
{"name": "DirectoryType", "type": "string"}, {"name": "nBases_samtools", "type": "double"}, {"name":
"FileRelativePath", "type": "string"}, {"name": "md5checksum", "type": "string"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "BaseDir",
        "DirectoryType",
        "FileRelativePath",
        "GbQ30NoDupsNoClip",
        "InputDir",
        "md5checksum",
        "nBases_samtools",
        "perc_bases_ge_15x_mapQ_ge11",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'BaseDir', 'DirectoryType', 'FileRelativePath',
        'GbQ30NoDupsNoClip', 'InputDir', 'md5checksum',
        'nBases_samtools', 'perc_bases_ge_15x_mapQ_ge11'
    ]

    def __init__(self, **kwargs):
        self.BaseDir = kwargs.get(
            'BaseDir', None)
        self.DirectoryType = kwargs.get(
            'DirectoryType', None)
        self.FileRelativePath = kwargs.get(
            'FileRelativePath', None)
        self.GbQ30NoDupsNoClip = kwargs.get(
            'GbQ30NoDupsNoClip', None)
        self.InputDir = kwargs.get(
            'InputDir', None)
        self.md5checksum = kwargs.get(
            'md5checksum', None)
        self.nBases_samtools = kwargs.get(
            'nBases_samtools', None)
        self.perc_bases_ge_15x_mapQ_ge11 = kwargs.get(
            'perc_bases_ge_15x_mapQ_ge11', None)


class GelPhase(object):
    """
    No documentation
    """
    CRUK = "CRUK"
    OXFORD = "OXFORD"
    CLL = "CLL"
    IIP = "IIP"
    MAIN = "MAIN"
    EXPT = "EXPT"

    def __hash__(self):
        return str(self).__hash__()


class GenomicFeature(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "GenomicFeature", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "featureType", "type": {"type": "enum", "name": "FeatureTypes", "symbols":
["RegulatoryRegion", "Gene", "Transcript"]}, "doc": ""}, {"name": "ensemblId", "type": "string",
"doc": ""}, {"name": "HGNC", "type": ["null", "string"], "doc": ""}, {"name": "other_ids", "type":
["null", {"type": "map", "values": "string"}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "HGNC",
        "ensemblId",
        "featureType",
        "other_ids",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'HGNC', 'ensemblId', 'featureType', 'other_ids'
    ]

    def __init__(self, **kwargs):
        self.HGNC = kwargs.get(
            'HGNC', None)
        self.ensemblId = kwargs.get(
            'ensemblId', None)
        self.featureType = kwargs.get(
            'featureType', None)
        self.other_ids = kwargs.get(
            'other_ids', None)


class GenomicFeatureCancer(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "GenomicFeatureCancer", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "featureType", "type": {"type": "enum", "name": "FeatureTypes", "symbols":
["RegulatoryRegion", "Gene", "Transcript"]}, "doc": ""}, {"name": "ensemblId", "type": "string",
"doc": ""}, {"name": "refSeqTranscriptId", "type": "string", "doc": ""}, {"name": "refSeqProteinId",
"type": "string", "doc": ""}, {"name": "geneName", "type": "string", "doc": ""}, {"name":
"roleInCancer", "type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "ensemblId",
        "featureType",
        "geneName",
        "refSeqProteinId",
        "refSeqTranscriptId",
        "roleInCancer",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'ensemblId', 'featureType', 'geneName', 'refSeqProteinId',
        'refSeqTranscriptId', 'roleInCancer'
    ]

    def __init__(self, **kwargs):
        self.ensemblId = kwargs.get(
            'ensemblId', None)
        self.featureType = kwargs.get(
            'featureType', None)
        self.geneName = kwargs.get(
            'geneName', None)
        self.refSeqProteinId = kwargs.get(
            'refSeqProteinId', None)
        self.refSeqTranscriptId = kwargs.get(
            'refSeqTranscriptId', None)
        self.roleInCancer = kwargs.get(
            'roleInCancer', None)


class HpoTerm(ProtocolElement):
    """
    This defines an HPO term and its modifiers (possibly multiple) If
    HPO term presence is unknown we don't have a entry on the list
    """
    _schemaSource = """
{"type": "record", "name": "HpoTerm", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "term", "type": "string", "doc": ""}, {"name": "termPresence", "type": ["null",
"boolean"], "doc": ""}, {"name": "modifiers", "type": ["null", {"type": "map", "values": "string"}],
"doc": ""}, {"name": "ageOfOnset", "type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "ageOfOnset",
        "modifiers",
        "term",
        "termPresence",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'ageOfOnset', 'modifiers', 'term', 'termPresence'
    ]

    def __init__(self, **kwargs):
        self.ageOfOnset = kwargs.get(
            'ageOfOnset', None)
        self.modifiers = kwargs.get(
            'modifiers', None)
        self.term = kwargs.get(
            'term', None)
        self.termPresence = kwargs.get(
            'termPresence', None)


class IlluminaSummaryCancerV2(ProtocolElement):
    """
    This is the summary provided by illumina for Somatic calls in V2
    (current) of their pipeline Fields of interest include
    `PURITY_TUMOR_PURITY` and `PURITY_TUMOR_PLOIDY`
    """
    _schemaSource = """
{"type": "record", "name": "IlluminaSummaryCancerV2", "namespace": "org.gel.models.report.avro",
"doc": "", "fields": [{"name": "illumina_version", "type": {"type": "enum", "name":
"IlluminaVersion", "symbols": ["IlluminaSummaryV1", "IlluminaSummaryV2", "IlluminaSummaryV4",
"IlluminaSummaryCancerV2", "IlluminaSummaryCancerV4"]}}, {"name": "VARIANTSTATS_STOP_GAINED_SNVS",
"type": "double"}, {"name": "VARIANTSTATS_MATURE_MIRNA_DELETIONS", "type": "double"}, {"name":
"VARIANTSTATS_SYNONYMOUS_SNVS", "type": "double"}, {"name": "BAMSTATS_NORMAL_PERCENT_BASES_GE_Q30",
"type": "double"}, {"name": "VARIANTSTATS_NON_SYNONYMOUS_INSERTIONS", "type": "double"}, {"name":
"VARIANTSTATS_SYNONYMOUS_INSERTIONS", "type": "double"}, {"name":
"BAMSTATS_TUMOR_PERCENT_BASES_GE_Q30", "type": "double"}, {"name": "PURITY_TUMOR_PLOIDY", "type":
["null", "double"]}, {"name": "SVSTATS_TANDEM_DUPLICATION_TOTAL", "type": "double"}, {"name":
"SVSTATS_INSERTION_NUMBER_IN_GENES", "type": "double"}, {"name": "VARIANTSTATS_TOTAL_DELETIONS",
"type": "double"}, {"name": "VARIANTSTATS_NUMBER_IN_CODING_REGIONS_SNVS", "type": "double"},
{"name": "VARIANTSTATS_FRAMESHIFT_INSERTIONS", "type": "double"}, {"name": "PURITY_TUMOR_PURITY",
"type": ["null", "double"]}, {"name": "SVSTATS_DELETION_NUMBER_IN_GENES", "type": "double"},
{"name": "VARIANTSTATS_TOTAL_INSERTIONS", "type": "double"}, {"name":
"VARIANTSTATS_NON_SYNONYMOUS_SNVS", "type": "double"}, {"name": "VARIANTSTATS_MATURE_MIRNA_SNVS",
"type": "double"}, {"name": "VARIANTSTATS_STOP_GAINED_INSERTIONS", "type": "double"}, {"name":
"VARIANTSTATS_FRAMESHIFT_DELETIONS", "type": "double"}, {"name":
"SVSTATS_TANDEM_DUPLICATION_NUMBER_IN_GENES", "type": "double"}, {"name":
"VARIANTSTATS_NUMBER_IN_EXONS_DELETIONS", "type": "double"}, {"name":
"VARIANTSTATS_NUMBER_IN_GENES_DELETIONS", "type": "double"}, {"name":
"VARIANTSTATS_UTR_REGION_DELETIONS", "type": "double"}, {"name":
"BAMSTATS_TUMOR_GIGABASES_PASSING_FILTER", "type": "double"}, {"name":
"VARIANTSTATS_DBSNP_INSERTIONS", "type": "double"}, {"name": "SVSTATS_CNV_TOTAL", "type": "double"},
{"name": "VARIANTSTATS_STOP_LOST_INSERTIONS", "type": "double"}, {"name":
"VARIANTSTATS_SPLICE_SITE_REGION_INSERTIONS", "type": "double"}, {"name": "SVSTATS_INVERSION_TOTAL",
"type": "double"}, {"name": "VARIANTSTATS_SYNONYMOUS_DELETIONS", "type": "double"}, {"name":
"VARIANTSTATS_STOP_LOST_SNVS", "type": "double"}, {"name":
"BAMSTATS_NORMAL_GIGABASES_PASSING_FILTER", "type": "double"}, {"name":
"VARIANTSTATS_MATURE_MIRNA_INSERTIONS", "type": "double"}, {"name":
"VARIANTSTATS_SPLICE_SITE_REGION_SNVS", "type": "double"}, {"name":
"VARIANTSTATS_NUMBER_IN_CODING_REGIONS_INSERTIONS", "type": "double"}, {"name":
"VARIANTSTATS_NUMBER_IN_GENES_SNVS", "type": "double"}, {"name":
"VARIANTSTATS_STOP_GAINED_DELETIONS", "type": "double"}, {"name":
"VARIANTSTATS_STOP_LOST_DELETIONS", "type": "double"}, {"name": "NORMAL_ID", "type": "string"},
{"name": "VARIANTSTATS_SPLICE_SITE_REGION_DELETIONS", "type": "double"}, {"name":
"VARIANTSTATS_UTR_REGION_INSERTIONS", "type": "double"}, {"name":
"VARIANTSTATS_NUMBER_IN_CODING_REGIONS_DELETIONS", "type": "double"}, {"name":
"SVSTATS_TRANSLOCATION_BREAKEND_TOTAL", "type": "double"}, {"name": "SVSTATS_CNV_NUMBER_IN_GENES",
"type": "double"}, {"name": "VARIANTSTATS_UTR_REGION_SNVS", "type": "double"}, {"name":
"VARIANTSTATS_NUMBER_IN_EXONS_INSERTIONS", "type": "double"}, {"name": "VARIANTSTATS_DBSNP_SNVS",
"type": "double"}, {"name": "VARIANTSTATS_DBSNP_DELETIONS", "type": "double"}, {"name":
"VARIANTSTATS_FRAMESHIFT_SNVS", "type": "double"}, {"name": "VARIANTSTATS_NUMBER_IN_EXONS_SNVS",
"type": "double"}, {"name": "VARIANTSTATS_NUMBER_IN_GENES_INSERTIONS", "type": "double"}, {"name":
"VARIANTSTATS_TOTAL_SNVS", "type": "double"}, {"name": "SVSTATS_DELETION_TOTAL", "type": "double"},
{"name": "SVSTATS_INVERSION_NUMBER_IN_GENES", "type": "double"}, {"name": "TUMOR_ID", "type":
"string"}, {"name": "SVSTATS_INSERTION_TOTAL", "type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "BAMSTATS_NORMAL_GIGABASES_PASSING_FILTER",
        "BAMSTATS_NORMAL_PERCENT_BASES_GE_Q30",
        "BAMSTATS_TUMOR_GIGABASES_PASSING_FILTER",
        "BAMSTATS_TUMOR_PERCENT_BASES_GE_Q30",
        "NORMAL_ID",
        "PURITY_TUMOR_PLOIDY",
        "PURITY_TUMOR_PURITY",
        "SVSTATS_CNV_NUMBER_IN_GENES",
        "SVSTATS_CNV_TOTAL",
        "SVSTATS_DELETION_NUMBER_IN_GENES",
        "SVSTATS_DELETION_TOTAL",
        "SVSTATS_INSERTION_NUMBER_IN_GENES",
        "SVSTATS_INSERTION_TOTAL",
        "SVSTATS_INVERSION_NUMBER_IN_GENES",
        "SVSTATS_INVERSION_TOTAL",
        "SVSTATS_TANDEM_DUPLICATION_NUMBER_IN_GENES",
        "SVSTATS_TANDEM_DUPLICATION_TOTAL",
        "SVSTATS_TRANSLOCATION_BREAKEND_TOTAL",
        "TUMOR_ID",
        "VARIANTSTATS_DBSNP_DELETIONS",
        "VARIANTSTATS_DBSNP_INSERTIONS",
        "VARIANTSTATS_DBSNP_SNVS",
        "VARIANTSTATS_FRAMESHIFT_DELETIONS",
        "VARIANTSTATS_FRAMESHIFT_INSERTIONS",
        "VARIANTSTATS_FRAMESHIFT_SNVS",
        "VARIANTSTATS_MATURE_MIRNA_DELETIONS",
        "VARIANTSTATS_MATURE_MIRNA_INSERTIONS",
        "VARIANTSTATS_MATURE_MIRNA_SNVS",
        "VARIANTSTATS_NON_SYNONYMOUS_INSERTIONS",
        "VARIANTSTATS_NON_SYNONYMOUS_SNVS",
        "VARIANTSTATS_NUMBER_IN_CODING_REGIONS_DELETIONS",
        "VARIANTSTATS_NUMBER_IN_CODING_REGIONS_INSERTIONS",
        "VARIANTSTATS_NUMBER_IN_CODING_REGIONS_SNVS",
        "VARIANTSTATS_NUMBER_IN_EXONS_DELETIONS",
        "VARIANTSTATS_NUMBER_IN_EXONS_INSERTIONS",
        "VARIANTSTATS_NUMBER_IN_EXONS_SNVS",
        "VARIANTSTATS_NUMBER_IN_GENES_DELETIONS",
        "VARIANTSTATS_NUMBER_IN_GENES_INSERTIONS",
        "VARIANTSTATS_NUMBER_IN_GENES_SNVS",
        "VARIANTSTATS_SPLICE_SITE_REGION_DELETIONS",
        "VARIANTSTATS_SPLICE_SITE_REGION_INSERTIONS",
        "VARIANTSTATS_SPLICE_SITE_REGION_SNVS",
        "VARIANTSTATS_STOP_GAINED_DELETIONS",
        "VARIANTSTATS_STOP_GAINED_INSERTIONS",
        "VARIANTSTATS_STOP_GAINED_SNVS",
        "VARIANTSTATS_STOP_LOST_DELETIONS",
        "VARIANTSTATS_STOP_LOST_INSERTIONS",
        "VARIANTSTATS_STOP_LOST_SNVS",
        "VARIANTSTATS_SYNONYMOUS_DELETIONS",
        "VARIANTSTATS_SYNONYMOUS_INSERTIONS",
        "VARIANTSTATS_SYNONYMOUS_SNVS",
        "VARIANTSTATS_TOTAL_DELETIONS",
        "VARIANTSTATS_TOTAL_INSERTIONS",
        "VARIANTSTATS_TOTAL_SNVS",
        "VARIANTSTATS_UTR_REGION_DELETIONS",
        "VARIANTSTATS_UTR_REGION_INSERTIONS",
        "VARIANTSTATS_UTR_REGION_SNVS",
        "illumina_version",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'BAMSTATS_NORMAL_GIGABASES_PASSING_FILTER',
        'BAMSTATS_NORMAL_PERCENT_BASES_GE_Q30',
        'BAMSTATS_TUMOR_GIGABASES_PASSING_FILTER',
        'BAMSTATS_TUMOR_PERCENT_BASES_GE_Q30', 'NORMAL_ID',
        'PURITY_TUMOR_PLOIDY', 'PURITY_TUMOR_PURITY',
        'SVSTATS_CNV_NUMBER_IN_GENES', 'SVSTATS_CNV_TOTAL',
        'SVSTATS_DELETION_NUMBER_IN_GENES', 'SVSTATS_DELETION_TOTAL',
        'SVSTATS_INSERTION_NUMBER_IN_GENES',
        'SVSTATS_INSERTION_TOTAL',
        'SVSTATS_INVERSION_NUMBER_IN_GENES',
        'SVSTATS_INVERSION_TOTAL',
        'SVSTATS_TANDEM_DUPLICATION_NUMBER_IN_GENES',
        'SVSTATS_TANDEM_DUPLICATION_TOTAL',
        'SVSTATS_TRANSLOCATION_BREAKEND_TOTAL', 'TUMOR_ID',
        'VARIANTSTATS_DBSNP_DELETIONS',
        'VARIANTSTATS_DBSNP_INSERTIONS', 'VARIANTSTATS_DBSNP_SNVS',
        'VARIANTSTATS_FRAMESHIFT_DELETIONS',
        'VARIANTSTATS_FRAMESHIFT_INSERTIONS',
        'VARIANTSTATS_FRAMESHIFT_SNVS',
        'VARIANTSTATS_MATURE_MIRNA_DELETIONS',
        'VARIANTSTATS_MATURE_MIRNA_INSERTIONS',
        'VARIANTSTATS_MATURE_MIRNA_SNVS',
        'VARIANTSTATS_NON_SYNONYMOUS_INSERTIONS',
        'VARIANTSTATS_NON_SYNONYMOUS_SNVS',
        'VARIANTSTATS_NUMBER_IN_CODING_REGIONS_DELETIONS',
        'VARIANTSTATS_NUMBER_IN_CODING_REGIONS_INSERTIONS',
        'VARIANTSTATS_NUMBER_IN_CODING_REGIONS_SNVS',
        'VARIANTSTATS_NUMBER_IN_EXONS_DELETIONS',
        'VARIANTSTATS_NUMBER_IN_EXONS_INSERTIONS',
        'VARIANTSTATS_NUMBER_IN_EXONS_SNVS',
        'VARIANTSTATS_NUMBER_IN_GENES_DELETIONS',
        'VARIANTSTATS_NUMBER_IN_GENES_INSERTIONS',
        'VARIANTSTATS_NUMBER_IN_GENES_SNVS',
        'VARIANTSTATS_SPLICE_SITE_REGION_DELETIONS',
        'VARIANTSTATS_SPLICE_SITE_REGION_INSERTIONS',
        'VARIANTSTATS_SPLICE_SITE_REGION_SNVS',
        'VARIANTSTATS_STOP_GAINED_DELETIONS',
        'VARIANTSTATS_STOP_GAINED_INSERTIONS',
        'VARIANTSTATS_STOP_GAINED_SNVS',
        'VARIANTSTATS_STOP_LOST_DELETIONS',
        'VARIANTSTATS_STOP_LOST_INSERTIONS',
        'VARIANTSTATS_STOP_LOST_SNVS',
        'VARIANTSTATS_SYNONYMOUS_DELETIONS',
        'VARIANTSTATS_SYNONYMOUS_INSERTIONS',
        'VARIANTSTATS_SYNONYMOUS_SNVS',
        'VARIANTSTATS_TOTAL_DELETIONS',
        'VARIANTSTATS_TOTAL_INSERTIONS', 'VARIANTSTATS_TOTAL_SNVS',
        'VARIANTSTATS_UTR_REGION_DELETIONS',
        'VARIANTSTATS_UTR_REGION_INSERTIONS',
        'VARIANTSTATS_UTR_REGION_SNVS', 'illumina_version'
    ]

    def __init__(self, **kwargs):
        self.BAMSTATS_NORMAL_GIGABASES_PASSING_FILTER = kwargs.get(
            'BAMSTATS_NORMAL_GIGABASES_PASSING_FILTER', None)
        self.BAMSTATS_NORMAL_PERCENT_BASES_GE_Q30 = kwargs.get(
            'BAMSTATS_NORMAL_PERCENT_BASES_GE_Q30', None)
        self.BAMSTATS_TUMOR_GIGABASES_PASSING_FILTER = kwargs.get(
            'BAMSTATS_TUMOR_GIGABASES_PASSING_FILTER', None)
        self.BAMSTATS_TUMOR_PERCENT_BASES_GE_Q30 = kwargs.get(
            'BAMSTATS_TUMOR_PERCENT_BASES_GE_Q30', None)
        self.NORMAL_ID = kwargs.get(
            'NORMAL_ID', None)
        self.PURITY_TUMOR_PLOIDY = kwargs.get(
            'PURITY_TUMOR_PLOIDY', None)
        self.PURITY_TUMOR_PURITY = kwargs.get(
            'PURITY_TUMOR_PURITY', None)
        self.SVSTATS_CNV_NUMBER_IN_GENES = kwargs.get(
            'SVSTATS_CNV_NUMBER_IN_GENES', None)
        self.SVSTATS_CNV_TOTAL = kwargs.get(
            'SVSTATS_CNV_TOTAL', None)
        self.SVSTATS_DELETION_NUMBER_IN_GENES = kwargs.get(
            'SVSTATS_DELETION_NUMBER_IN_GENES', None)
        self.SVSTATS_DELETION_TOTAL = kwargs.get(
            'SVSTATS_DELETION_TOTAL', None)
        self.SVSTATS_INSERTION_NUMBER_IN_GENES = kwargs.get(
            'SVSTATS_INSERTION_NUMBER_IN_GENES', None)
        self.SVSTATS_INSERTION_TOTAL = kwargs.get(
            'SVSTATS_INSERTION_TOTAL', None)
        self.SVSTATS_INVERSION_NUMBER_IN_GENES = kwargs.get(
            'SVSTATS_INVERSION_NUMBER_IN_GENES', None)
        self.SVSTATS_INVERSION_TOTAL = kwargs.get(
            'SVSTATS_INVERSION_TOTAL', None)
        self.SVSTATS_TANDEM_DUPLICATION_NUMBER_IN_GENES = kwargs.get(
            'SVSTATS_TANDEM_DUPLICATION_NUMBER_IN_GENES', None)
        self.SVSTATS_TANDEM_DUPLICATION_TOTAL = kwargs.get(
            'SVSTATS_TANDEM_DUPLICATION_TOTAL', None)
        self.SVSTATS_TRANSLOCATION_BREAKEND_TOTAL = kwargs.get(
            'SVSTATS_TRANSLOCATION_BREAKEND_TOTAL', None)
        self.TUMOR_ID = kwargs.get(
            'TUMOR_ID', None)
        self.VARIANTSTATS_DBSNP_DELETIONS = kwargs.get(
            'VARIANTSTATS_DBSNP_DELETIONS', None)
        self.VARIANTSTATS_DBSNP_INSERTIONS = kwargs.get(
            'VARIANTSTATS_DBSNP_INSERTIONS', None)
        self.VARIANTSTATS_DBSNP_SNVS = kwargs.get(
            'VARIANTSTATS_DBSNP_SNVS', None)
        self.VARIANTSTATS_FRAMESHIFT_DELETIONS = kwargs.get(
            'VARIANTSTATS_FRAMESHIFT_DELETIONS', None)
        self.VARIANTSTATS_FRAMESHIFT_INSERTIONS = kwargs.get(
            'VARIANTSTATS_FRAMESHIFT_INSERTIONS', None)
        self.VARIANTSTATS_FRAMESHIFT_SNVS = kwargs.get(
            'VARIANTSTATS_FRAMESHIFT_SNVS', None)
        self.VARIANTSTATS_MATURE_MIRNA_DELETIONS = kwargs.get(
            'VARIANTSTATS_MATURE_MIRNA_DELETIONS', None)
        self.VARIANTSTATS_MATURE_MIRNA_INSERTIONS = kwargs.get(
            'VARIANTSTATS_MATURE_MIRNA_INSERTIONS', None)
        self.VARIANTSTATS_MATURE_MIRNA_SNVS = kwargs.get(
            'VARIANTSTATS_MATURE_MIRNA_SNVS', None)
        self.VARIANTSTATS_NON_SYNONYMOUS_INSERTIONS = kwargs.get(
            'VARIANTSTATS_NON_SYNONYMOUS_INSERTIONS', None)
        self.VARIANTSTATS_NON_SYNONYMOUS_SNVS = kwargs.get(
            'VARIANTSTATS_NON_SYNONYMOUS_SNVS', None)
        self.VARIANTSTATS_NUMBER_IN_CODING_REGIONS_DELETIONS = kwargs.get(
            'VARIANTSTATS_NUMBER_IN_CODING_REGIONS_DELETIONS', None)
        self.VARIANTSTATS_NUMBER_IN_CODING_REGIONS_INSERTIONS = kwargs.get(
            'VARIANTSTATS_NUMBER_IN_CODING_REGIONS_INSERTIONS', None)
        self.VARIANTSTATS_NUMBER_IN_CODING_REGIONS_SNVS = kwargs.get(
            'VARIANTSTATS_NUMBER_IN_CODING_REGIONS_SNVS', None)
        self.VARIANTSTATS_NUMBER_IN_EXONS_DELETIONS = kwargs.get(
            'VARIANTSTATS_NUMBER_IN_EXONS_DELETIONS', None)
        self.VARIANTSTATS_NUMBER_IN_EXONS_INSERTIONS = kwargs.get(
            'VARIANTSTATS_NUMBER_IN_EXONS_INSERTIONS', None)
        self.VARIANTSTATS_NUMBER_IN_EXONS_SNVS = kwargs.get(
            'VARIANTSTATS_NUMBER_IN_EXONS_SNVS', None)
        self.VARIANTSTATS_NUMBER_IN_GENES_DELETIONS = kwargs.get(
            'VARIANTSTATS_NUMBER_IN_GENES_DELETIONS', None)
        self.VARIANTSTATS_NUMBER_IN_GENES_INSERTIONS = kwargs.get(
            'VARIANTSTATS_NUMBER_IN_GENES_INSERTIONS', None)
        self.VARIANTSTATS_NUMBER_IN_GENES_SNVS = kwargs.get(
            'VARIANTSTATS_NUMBER_IN_GENES_SNVS', None)
        self.VARIANTSTATS_SPLICE_SITE_REGION_DELETIONS = kwargs.get(
            'VARIANTSTATS_SPLICE_SITE_REGION_DELETIONS', None)
        self.VARIANTSTATS_SPLICE_SITE_REGION_INSERTIONS = kwargs.get(
            'VARIANTSTATS_SPLICE_SITE_REGION_INSERTIONS', None)
        self.VARIANTSTATS_SPLICE_SITE_REGION_SNVS = kwargs.get(
            'VARIANTSTATS_SPLICE_SITE_REGION_SNVS', None)
        self.VARIANTSTATS_STOP_GAINED_DELETIONS = kwargs.get(
            'VARIANTSTATS_STOP_GAINED_DELETIONS', None)
        self.VARIANTSTATS_STOP_GAINED_INSERTIONS = kwargs.get(
            'VARIANTSTATS_STOP_GAINED_INSERTIONS', None)
        self.VARIANTSTATS_STOP_GAINED_SNVS = kwargs.get(
            'VARIANTSTATS_STOP_GAINED_SNVS', None)
        self.VARIANTSTATS_STOP_LOST_DELETIONS = kwargs.get(
            'VARIANTSTATS_STOP_LOST_DELETIONS', None)
        self.VARIANTSTATS_STOP_LOST_INSERTIONS = kwargs.get(
            'VARIANTSTATS_STOP_LOST_INSERTIONS', None)
        self.VARIANTSTATS_STOP_LOST_SNVS = kwargs.get(
            'VARIANTSTATS_STOP_LOST_SNVS', None)
        self.VARIANTSTATS_SYNONYMOUS_DELETIONS = kwargs.get(
            'VARIANTSTATS_SYNONYMOUS_DELETIONS', None)
        self.VARIANTSTATS_SYNONYMOUS_INSERTIONS = kwargs.get(
            'VARIANTSTATS_SYNONYMOUS_INSERTIONS', None)
        self.VARIANTSTATS_SYNONYMOUS_SNVS = kwargs.get(
            'VARIANTSTATS_SYNONYMOUS_SNVS', None)
        self.VARIANTSTATS_TOTAL_DELETIONS = kwargs.get(
            'VARIANTSTATS_TOTAL_DELETIONS', None)
        self.VARIANTSTATS_TOTAL_INSERTIONS = kwargs.get(
            'VARIANTSTATS_TOTAL_INSERTIONS', None)
        self.VARIANTSTATS_TOTAL_SNVS = kwargs.get(
            'VARIANTSTATS_TOTAL_SNVS', None)
        self.VARIANTSTATS_UTR_REGION_DELETIONS = kwargs.get(
            'VARIANTSTATS_UTR_REGION_DELETIONS', None)
        self.VARIANTSTATS_UTR_REGION_INSERTIONS = kwargs.get(
            'VARIANTSTATS_UTR_REGION_INSERTIONS', None)
        self.VARIANTSTATS_UTR_REGION_SNVS = kwargs.get(
            'VARIANTSTATS_UTR_REGION_SNVS', None)
        self.illumina_version = kwargs.get(
            'illumina_version', None)


class IlluminaSummaryCancerV4(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "IlluminaSummaryCancerV4", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "illumina_version", "type": {"type": "enum", "name": "IlluminaVersion",
"symbols": ["IlluminaSummaryV1", "IlluminaSummaryV2", "IlluminaSummaryV4",
"IlluminaSummaryCancerV2", "IlluminaSummaryCancerV4"]}}, {"name": "NORMAL_TOTAL_PF_READS", "type":
"long"}, {"name": "NORMAL_PERCENT_ALIGNED_BASES_READ_2", "type": "double"}, {"name":
"NORMAL_PERCENT_ALIGNED_BASES_READ_1", "type": "double"}, {"name":
"TUMOR_MEDIAN_READ_LENGTH_READ_1", "type": "string"}, {"name": "TUMOR_MEDIAN_READ_LENGTH_READ_2",
"type": "string"}, {"name": "NORMAL_TOTAL_PF_BASES_READ_2", "type": "long"}, {"name":
"NORMAL_PERCENT_DUPLICATE_ALIGNED_READS", "type": "double"}, {"name":
"SOMATIC_DELETIONS_IN_MATURE_MIRNA", "type": "long"}, {"name": "NORMAL_TOTAL_PF_BASES_READ_1",
"type": "long"}, {"name": "TUMOR_SAMPLE_NAME", "type": "string"}, {"name":
"SOMATIC_SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES", "type": "double"}, {"name":
"NORMAL_MISMATCH_RATE", "type": "double"}, {"name": "NORMAL_TOTAL_PROPER_READ_PAIRS", "type":
"long"}, {"name": "FRAMESHIFT_SOMATIC_INSERTIONS", "type": "long"}, {"name":
"NORMAL_PERCENT_SOFT_CLIPPED_BASES", "type": "double"}, {"name": "SOMATIC_DELETIONS_IN_GENES",
"type": "long"}, {"name": "SOMATIC_INSERTIONS_IN_MATURE_MIRNA", "type": "long"}, {"name":
"NORMAL_PERCENT_Q30_BASES_READ_2", "type": "double"}, {"name":
"TUMOR_PERCENT_DUPLICATE_PROPER_READ_PAIRS", "type": "double"}, {"name":
"NORMAL_PERCENT_Q30_BASES_READ_1", "type": "double"}, {"name":
"SOMATIC_SV_PERCENT_BREAKENDS_IN_GENES", "type": "double"}, {"name":
"TUMOR_PERCENT_DUPLICATE_ALIGNED_READS", "type": "double"}, {"name": "SOMATIC_SV_DELETIONS", "type":
"long"}, {"name": "SOMATIC_INSERTIONS_IN_GENES", "type": "long"}, {"name":
"SOMATIC_INSERTIONS_IN_EXONS", "type": "long"}, {"name": "TUMOR_COVERAGE_AT_15X", "type": "double"},
{"name": "TUMOR_TOTAL_ALIGNED_READ_PAIRS", "type": "long"}, {"name": "OVERALL_PLOIDY", "type":
"double"}, {"name": "SOMATIC_INDELS", "type": "long"}, {"name": "TUMOR_MEAN_COVERAGE", "type":
"double"}, {"name": "NORMAL_MISMATCH_RATE_READ_2", "type": "double"}, {"name":
"NORMAL_PERCENT_GC_DROPOUT", "type": "double"}, {"name": "NORMAL_MISMATCH_RATE_READ_1", "type":
"double"}, {"name": "SOMATIC_INDELS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name":
"SOMATIC_SNVS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name":
"SOMATIC_DELETIONS_IN_SPLICE_SITE_REGIONS", "type": "long"}, {"name": "NORMAL_TOTAL_ALIGNED_READ_1",
"type": "long"}, {"name": "NORMAL_TOTAL_ALIGNED_READ_2", "type": "long"}, {"name":
"SOMATIC_SNV_TS_TV_RATIO", "type": "double"}, {"name": "SOMATIC_SV_INVERSIONS", "type": "long"},
{"name": "SOMATIC_INSERTIONS_IN_UTR_REGIONS", "type": "long"}, {"name":
"TUMOR_READ_ENRICHMENT_AT_80_GC", "type": "double"}, {"name": "SYNONYMOUS_SOMATIC_SNVS", "type":
"long"}, {"name": "SOMATIC_INSERTIONS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name":
"MEAN_SOMATIC_SNV_FREQUENCY", "type": "double"}, {"name": "SOMATIC_SNVS_IN_SPLICE_SITE_REGIONS",
"type": "long"}, {"name": "SOMATIC_DELETIONS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name":
"SOMATIC_SNVS_IN_EXONS", "type": "long"}, {"name": "SOMATIC_INSERTIONS_ALL", "type": "long"},
{"name": "SOMATIC_SV_BREAKENDS_ALL", "type": "long"}, {"name":
"SOMATIC_SV_TANDEM_DUPLICATIONS_IN_GENES", "type": "long"}, {"name": "TUMOR_MISMATCH_RATE", "type":
"double"}, {"name": "NORMAL_TOTAL_ALIGNED_READ_PAIRS", "type": "long"}, {"name":
"TUMOR_PERCENT_Q25_BASES_READ_1", "type": "double"}, {"name": "TUMOR_PERCENT_Q25_BASES_READ_2",
"type": "double"}, {"name": "TUMOR_PERCENT_ALIGNED_BASES_READ_1", "type": "double"}, {"name":
"SOMATIC_SV_BREAKENDS_IN_GENES", "type": "long"}, {"name": "STOP_LOST_SOMATIC_DELETIONS", "type":
"long"}, {"name": "NORMAL_TOTAL_DUPLICATE_PROPER_READ_PAIRS", "type": "long"}, {"name":
"NON_SYNONYMOUS_SOMATIC_INSERTIONS", "type": "long"}, {"name": "SOMATIC_SV_TANDEM_DUPLICATIONS",
"type": "long"}, {"name": "SOMATIC_SNVS_IN_CODING_REGIONS", "type": "long"}, {"name":
"STOP_GAINED_SOMATIC_DELETIONS", "type": "long"}, {"name": "ESTIMATED_CHROMOSOME_COUNT", "type":
"double"}, {"name": "NORMAL_TOTAL_PF_READ_1", "type": "long"}, {"name":
"NORMAL_TOTAL_MAPQ_GT_10_READS", "type": "long"}, {"name": "NORMAL_TOTAL_PF_READ_2", "type":
"long"}, {"name": "SOMATIC_SV_INSERTIONS_IN_GENES", "type": "long"}, {"name":
"TUMOR_PERCENT_ALIGNED_BASES", "type": "double"}, {"name": "TUMOR_READ_ENRICHMENT_AT_75_GC", "type":
"double"}, {"name": "SOMATIC_DELETIONS_IN_CODING_REGIONS", "type": "long"}, {"name":
"SOMATIC_SNVS_IN_UTR_REGIONS", "type": "long"}, {"name": "NORMAL_SAMPLE_ID", "type": "string"},
{"name": "NORMAL_COVERAGE_AT_1X", "type": "double"}, {"name": "TUMOR_TOTAL_PROPER_READ_PAIRS",
"type": "long"}, {"name": "NORMAL_PERCENT_Q25_BASES_READ_1", "type": "double"}, {"name":
"NORMAL_PERCENT_Q25_BASES_READ_2", "type": "double"}, {"name": "TUMOR_MEDIAN_READ_LENGTH", "type":
"string"}, {"name": "NORMAL_COVERAGE_AT_15X", "type": "double"}, {"name":
"STOP_GAINED_SOMATIC_SNVS", "type": "long"}, {"name": "TUMOR_TOTAL_PF_READ_2", "type": "long"},
{"name": "NORMAL_PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS", "type": "double"}, {"name":
"TUMOR_TOTAL_PF_READ_1", "type": "long"}, {"name": "TUMOR_MISMATCH_RATE_READ_2", "type": "double"},
{"name": "TUMOR_MISMATCH_RATE_READ_1", "type": "double"}, {"name": "TUMOR_PERCENT_ALIGNED_READS",
"type": "double"}, {"name": "TUMOR_TOTAL_PF_BASES", "type": "long"}, {"name": "SOMATIC_CNVS_ALL",
"type": "long"}, {"name": "SOMATIC_SV_INVERSIONS_ALL", "type": "long"}, {"name": "SOMATIC_CNVS",
"type": "long"}, {"name": "NORMAL_PERCENT_ALIGNED_READS", "type": "double"}, {"name":
"TUMOR_PERCENT_Q30_BASES_READ_2", "type": "double"}, {"name": "TUMOR_PERCENT_Q30_BASES_READ_1",
"type": "double"}, {"name": "NORMAL_MEDIAN_READ_LENGTH", "type": "string"}, {"name":
"STOP_LOST_SOMATIC_INSERTIONS", "type": "long"}, {"name": "SOMATIC_DELETIONS_IN_EXONS", "type":
"long"}, {"name": "SOMATIC_INSERTIONS", "type": "long"}, {"name": "TUMOR_PERCENT_GC_DROPOUT",
"type": "double"}, {"name": "NORMAL_TOTAL_PF_BASES", "type": "long"}, {"name":
"NORMAL_PERCENT_ALIGNED_READ_1", "type": "double"}, {"name": "TUMOR_PERCENT_Q30_BASES", "type":
"double"}, {"name": "NORMAL_PERCENT_ALIGNED_READ_2", "type": "double"}, {"name":
"SOMATIC_SV_INSERTIONS", "type": "long"}, {"name": "NORMAL_UNIQUE_ALIGNED_READS", "type": "long"},
{"name": "NORMAL_COVERAGE_AT_10X", "type": "double"}, {"name": "TUMOR_TOTAL_ALIGNED_READ_1", "type":
"long"}, {"name": "SOMATIC_DELETIONS_IN_UTR_REGIONS", "type": "long"}, {"name":
"TUMOR_TOTAL_ALIGNED_READ_2", "type": "long"}, {"name": "NORMAL_READ_ENRICHMENT_AT_75_GC", "type":
"double"}, {"name": "NORMAL_PERCENT_DUPLICATE_PROPER_READ_PAIRS", "type": "double"}, {"name":
"TUMOR_TOTAL_DUPLICATE_ALIGNED_READS", "type": "long"}, {"name": "SOMATIC_DELETIONS_ALL", "type":
"long"}, {"name": "STOP_LOST_SOMATIC_SNVS", "type": "long"}, {"name": "SOMATIC_SNVS_ALL", "type":
"long"}, {"name": "NON_SYNONYMOUS_SOMATIC_SNVS", "type": "long"}, {"name":
"TUMOR_TOTAL_PF_BASES_READ_1", "type": "long"}, {"name": "TUMOR_TOTAL_PF_BASES_READ_2", "type":
"long"}, {"name": "SOMATIC_SV_INSERTIONS_ALL", "type": "long"}, {"name":
"NORMAL_PERCENT_AT_DROPOUT", "type": "double"}, {"name": "SOMATIC_SNVS_IN_GENES", "type": "long"},
{"name": "TUMOR_PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS", "type": "double"}, {"name":
"NORMAL_PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES", "type": "double"}, {"name":
"SOMATIC_DELETIONS", "type": "long"}, {"name": "TUMOR_SAMPLE_ID", "type": "string"}, {"name":
"NORMAL_MEDIAN_READ_LENGTH_READ_2", "type": "string"}, {"name": "PERCENT_SOMATIC_CNVS_IN_GENES",
"type": "double"}, {"name": "NORMAL_MEDIAN_READ_LENGTH_READ_1", "type": "string"}, {"name":
"SOMATIC_SV_INVERSIONS_IN_GENES", "type": "long"}, {"name": "NORMAL_TOTAL_ALIGNED_BASES_READ_2",
"type": "long"}, {"name": "NORMAL_TOTAL_ALIGNED_BASES_READ_1", "type": "long"}, {"name":
"TUMOR_PERCENT_AT_DROPOUT", "type": "double"}, {"name": "SOMATIC_CNVS_IN_GENES", "type": "long"},
{"name": "TUMOR_COVERAGE_AT_10X", "type": "double"}, {"name": "TUMOR_TOTAL_ALIGNED_BASES_READ_2",
"type": "long"}, {"name": "TUMOR_TOTAL_MAPQ_GT_10_READS", "type": "long"}, {"name":
"TUMOR_TOTAL_ALIGNED_BASES_READ_1", "type": "long"}, {"name": "SOMATIC_SNVS", "type": "long"},
{"name": "NORMAL_PERCENT_Q30_BASES", "type": "double"}, {"name": "TUMOR_UNIQUE_ALIGNED_READS",
"type": "long"}, {"name": "SOMATIC_INSERTIONS_IN_CODING_REGIONS", "type": "long"}, {"name":
"TUMOR_Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES", "type": "long"}, {"name":
"NORMAL_SAMPLE_NAME", "type": "string"}, {"name": "NORMAL_TOTAL_ALIGNED_READS", "type": "long"},
{"name": "TUMOR_TOTAL_ALIGNED_READS", "type": "long"}, {"name": "SOMATIC_INDELS_ALL", "type":
"long"}, {"name": "NORMAL_MEAN_COVERAGE", "type": "double"}, {"name": "SOMATIC_SV_BREAKENDS",
"type": "long"}, {"name": "SOMATIC_SV_PERCENT_INSERTIONS_IN_GENES", "type": "double"}, {"name":
"NON_SYNONYMOUS_SOMATIC_DELETIONS", "type": "long"}, {"name": "TUMOR_COVERAGE_AT_1X", "type":
"double"}, {"name": "TUMOR_TOTAL_ALIGNED_BASES", "type": "long"}, {"name":
"SOMATIC_SV_PERCENT_DELETIONS_IN_GENES", "type": "double"}, {"name": "SOMATIC_SV_DELETIONS_ALL",
"type": "long"}, {"name": "ESTIMATED_PURITY", "type": "long"}, {"name":
"TUMOR_PERCENT_ALIGNED_BASES_READ_2", "type": "double"}, {"name":
"TUMOR_TOTAL_DUPLICATE_PROPER_READ_PAIRS", "type": "long"}, {"name": "SOMATIC_SNVS_IN_MATURE_MIRNA",
"type": "long"}, {"name": "TUMOR_TOTAL_PF_READS", "type": "long"}, {"name":
"SOMATIC_SV_TANDEM_DUPLICATIONS_ALL", "type": "long"}, {"name": "NORMAL_PERCENT_ALIGNED_BASES",
"type": "double"}, {"name": "TUMOR_PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES", "type":
"double"}, {"name": "SOMATIC_INSERTIONS_IN_SPLICE_SITE_REGIONS", "type": "long"}, {"name":
"SOMATIC_SV_PERCENT_INVERSIONS_IN_GENES", "type": "double"}, {"name":
"TUMOR_PERCENT_SOFT_CLIPPED_BASES", "type": "double"}, {"name": "NORMAL_READ_ENRICHMENT_AT_80_GC",
"type": "double"}, {"name": "FRAMESHIFT_SOMATIC_DELETIONS", "type": "long"}, {"name":
"TUMOR_PERCENT_ALIGNED_READ_1", "type": "double"}, {"name": "TUMOR_PERCENT_ALIGNED_READ_2", "type":
"double"}, {"name": "NORMAL_TOTAL_ALIGNED_BASES", "type": "long"}, {"name":
"SOMATIC_SV_DELETIONS_IN_GENES", "type": "long"}, {"name": "STOP_GAINED_SOMATIC_INSERTIONS", "type":
"long"}, {"name": "NORMAL_Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES", "type": "long"},
{"name": "MEDIAN_SOMATIC_SNV_DISTANCE", "type": "double"}, {"name":
"NORMAL_TOTAL_DUPLICATE_ALIGNED_READS", "type": "long"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "ESTIMATED_CHROMOSOME_COUNT",
        "ESTIMATED_PURITY",
        "FRAMESHIFT_SOMATIC_DELETIONS",
        "FRAMESHIFT_SOMATIC_INSERTIONS",
        "MEAN_SOMATIC_SNV_FREQUENCY",
        "MEDIAN_SOMATIC_SNV_DISTANCE",
        "NON_SYNONYMOUS_SOMATIC_DELETIONS",
        "NON_SYNONYMOUS_SOMATIC_INSERTIONS",
        "NON_SYNONYMOUS_SOMATIC_SNVS",
        "NORMAL_COVERAGE_AT_10X",
        "NORMAL_COVERAGE_AT_15X",
        "NORMAL_COVERAGE_AT_1X",
        "NORMAL_MEAN_COVERAGE",
        "NORMAL_MEDIAN_READ_LENGTH",
        "NORMAL_MEDIAN_READ_LENGTH_READ_1",
        "NORMAL_MEDIAN_READ_LENGTH_READ_2",
        "NORMAL_MISMATCH_RATE",
        "NORMAL_MISMATCH_RATE_READ_1",
        "NORMAL_MISMATCH_RATE_READ_2",
        "NORMAL_PERCENT_ALIGNED_BASES",
        "NORMAL_PERCENT_ALIGNED_BASES_READ_1",
        "NORMAL_PERCENT_ALIGNED_BASES_READ_2",
        "NORMAL_PERCENT_ALIGNED_READS",
        "NORMAL_PERCENT_ALIGNED_READ_1",
        "NORMAL_PERCENT_ALIGNED_READ_2",
        "NORMAL_PERCENT_AT_DROPOUT",
        "NORMAL_PERCENT_DUPLICATE_ALIGNED_READS",
        "NORMAL_PERCENT_DUPLICATE_PROPER_READ_PAIRS",
        "NORMAL_PERCENT_GC_DROPOUT",
        "NORMAL_PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS",
        "NORMAL_PERCENT_Q25_BASES_READ_1",
        "NORMAL_PERCENT_Q25_BASES_READ_2",
        "NORMAL_PERCENT_Q30_BASES",
        "NORMAL_PERCENT_Q30_BASES_READ_1",
        "NORMAL_PERCENT_Q30_BASES_READ_2",
        "NORMAL_PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES",
        "NORMAL_PERCENT_SOFT_CLIPPED_BASES",
        "NORMAL_Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES",
        "NORMAL_READ_ENRICHMENT_AT_75_GC",
        "NORMAL_READ_ENRICHMENT_AT_80_GC",
        "NORMAL_SAMPLE_ID",
        "NORMAL_SAMPLE_NAME",
        "NORMAL_TOTAL_ALIGNED_BASES",
        "NORMAL_TOTAL_ALIGNED_BASES_READ_1",
        "NORMAL_TOTAL_ALIGNED_BASES_READ_2",
        "NORMAL_TOTAL_ALIGNED_READS",
        "NORMAL_TOTAL_ALIGNED_READ_1",
        "NORMAL_TOTAL_ALIGNED_READ_2",
        "NORMAL_TOTAL_ALIGNED_READ_PAIRS",
        "NORMAL_TOTAL_DUPLICATE_ALIGNED_READS",
        "NORMAL_TOTAL_DUPLICATE_PROPER_READ_PAIRS",
        "NORMAL_TOTAL_MAPQ_GT_10_READS",
        "NORMAL_TOTAL_PF_BASES",
        "NORMAL_TOTAL_PF_BASES_READ_1",
        "NORMAL_TOTAL_PF_BASES_READ_2",
        "NORMAL_TOTAL_PF_READS",
        "NORMAL_TOTAL_PF_READ_1",
        "NORMAL_TOTAL_PF_READ_2",
        "NORMAL_TOTAL_PROPER_READ_PAIRS",
        "NORMAL_UNIQUE_ALIGNED_READS",
        "OVERALL_PLOIDY",
        "PERCENT_SOMATIC_CNVS_IN_GENES",
        "SOMATIC_CNVS",
        "SOMATIC_CNVS_ALL",
        "SOMATIC_CNVS_IN_GENES",
        "SOMATIC_DELETIONS",
        "SOMATIC_DELETIONS_ALL",
        "SOMATIC_DELETIONS_IN_CODING_REGIONS",
        "SOMATIC_DELETIONS_IN_EXONS",
        "SOMATIC_DELETIONS_IN_GENES",
        "SOMATIC_DELETIONS_IN_MATURE_MIRNA",
        "SOMATIC_DELETIONS_IN_SPLICE_SITE_REGIONS",
        "SOMATIC_DELETIONS_IN_UTR_REGIONS",
        "SOMATIC_DELETIONS_PERCENT_FOUND_IN_DBSNP",
        "SOMATIC_INDELS",
        "SOMATIC_INDELS_ALL",
        "SOMATIC_INDELS_PERCENT_FOUND_IN_DBSNP",
        "SOMATIC_INSERTIONS",
        "SOMATIC_INSERTIONS_ALL",
        "SOMATIC_INSERTIONS_IN_CODING_REGIONS",
        "SOMATIC_INSERTIONS_IN_EXONS",
        "SOMATIC_INSERTIONS_IN_GENES",
        "SOMATIC_INSERTIONS_IN_MATURE_MIRNA",
        "SOMATIC_INSERTIONS_IN_SPLICE_SITE_REGIONS",
        "SOMATIC_INSERTIONS_IN_UTR_REGIONS",
        "SOMATIC_INSERTIONS_PERCENT_FOUND_IN_DBSNP",
        "SOMATIC_SNVS",
        "SOMATIC_SNVS_ALL",
        "SOMATIC_SNVS_IN_CODING_REGIONS",
        "SOMATIC_SNVS_IN_EXONS",
        "SOMATIC_SNVS_IN_GENES",
        "SOMATIC_SNVS_IN_MATURE_MIRNA",
        "SOMATIC_SNVS_IN_SPLICE_SITE_REGIONS",
        "SOMATIC_SNVS_IN_UTR_REGIONS",
        "SOMATIC_SNVS_PERCENT_FOUND_IN_DBSNP",
        "SOMATIC_SNV_TS_TV_RATIO",
        "SOMATIC_SV_BREAKENDS",
        "SOMATIC_SV_BREAKENDS_ALL",
        "SOMATIC_SV_BREAKENDS_IN_GENES",
        "SOMATIC_SV_DELETIONS",
        "SOMATIC_SV_DELETIONS_ALL",
        "SOMATIC_SV_DELETIONS_IN_GENES",
        "SOMATIC_SV_INSERTIONS",
        "SOMATIC_SV_INSERTIONS_ALL",
        "SOMATIC_SV_INSERTIONS_IN_GENES",
        "SOMATIC_SV_INVERSIONS",
        "SOMATIC_SV_INVERSIONS_ALL",
        "SOMATIC_SV_INVERSIONS_IN_GENES",
        "SOMATIC_SV_PERCENT_BREAKENDS_IN_GENES",
        "SOMATIC_SV_PERCENT_DELETIONS_IN_GENES",
        "SOMATIC_SV_PERCENT_INSERTIONS_IN_GENES",
        "SOMATIC_SV_PERCENT_INVERSIONS_IN_GENES",
        "SOMATIC_SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES",
        "SOMATIC_SV_TANDEM_DUPLICATIONS",
        "SOMATIC_SV_TANDEM_DUPLICATIONS_ALL",
        "SOMATIC_SV_TANDEM_DUPLICATIONS_IN_GENES",
        "STOP_GAINED_SOMATIC_DELETIONS",
        "STOP_GAINED_SOMATIC_INSERTIONS",
        "STOP_GAINED_SOMATIC_SNVS",
        "STOP_LOST_SOMATIC_DELETIONS",
        "STOP_LOST_SOMATIC_INSERTIONS",
        "STOP_LOST_SOMATIC_SNVS",
        "SYNONYMOUS_SOMATIC_SNVS",
        "TUMOR_COVERAGE_AT_10X",
        "TUMOR_COVERAGE_AT_15X",
        "TUMOR_COVERAGE_AT_1X",
        "TUMOR_MEAN_COVERAGE",
        "TUMOR_MEDIAN_READ_LENGTH",
        "TUMOR_MEDIAN_READ_LENGTH_READ_1",
        "TUMOR_MEDIAN_READ_LENGTH_READ_2",
        "TUMOR_MISMATCH_RATE",
        "TUMOR_MISMATCH_RATE_READ_1",
        "TUMOR_MISMATCH_RATE_READ_2",
        "TUMOR_PERCENT_ALIGNED_BASES",
        "TUMOR_PERCENT_ALIGNED_BASES_READ_1",
        "TUMOR_PERCENT_ALIGNED_BASES_READ_2",
        "TUMOR_PERCENT_ALIGNED_READS",
        "TUMOR_PERCENT_ALIGNED_READ_1",
        "TUMOR_PERCENT_ALIGNED_READ_2",
        "TUMOR_PERCENT_AT_DROPOUT",
        "TUMOR_PERCENT_DUPLICATE_ALIGNED_READS",
        "TUMOR_PERCENT_DUPLICATE_PROPER_READ_PAIRS",
        "TUMOR_PERCENT_GC_DROPOUT",
        "TUMOR_PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS",
        "TUMOR_PERCENT_Q25_BASES_READ_1",
        "TUMOR_PERCENT_Q25_BASES_READ_2",
        "TUMOR_PERCENT_Q30_BASES",
        "TUMOR_PERCENT_Q30_BASES_READ_1",
        "TUMOR_PERCENT_Q30_BASES_READ_2",
        "TUMOR_PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES",
        "TUMOR_PERCENT_SOFT_CLIPPED_BASES",
        "TUMOR_Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES",
        "TUMOR_READ_ENRICHMENT_AT_75_GC",
        "TUMOR_READ_ENRICHMENT_AT_80_GC",
        "TUMOR_SAMPLE_ID",
        "TUMOR_SAMPLE_NAME",
        "TUMOR_TOTAL_ALIGNED_BASES",
        "TUMOR_TOTAL_ALIGNED_BASES_READ_1",
        "TUMOR_TOTAL_ALIGNED_BASES_READ_2",
        "TUMOR_TOTAL_ALIGNED_READS",
        "TUMOR_TOTAL_ALIGNED_READ_1",
        "TUMOR_TOTAL_ALIGNED_READ_2",
        "TUMOR_TOTAL_ALIGNED_READ_PAIRS",
        "TUMOR_TOTAL_DUPLICATE_ALIGNED_READS",
        "TUMOR_TOTAL_DUPLICATE_PROPER_READ_PAIRS",
        "TUMOR_TOTAL_MAPQ_GT_10_READS",
        "TUMOR_TOTAL_PF_BASES",
        "TUMOR_TOTAL_PF_BASES_READ_1",
        "TUMOR_TOTAL_PF_BASES_READ_2",
        "TUMOR_TOTAL_PF_READS",
        "TUMOR_TOTAL_PF_READ_1",
        "TUMOR_TOTAL_PF_READ_2",
        "TUMOR_TOTAL_PROPER_READ_PAIRS",
        "TUMOR_UNIQUE_ALIGNED_READS",
        "illumina_version",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'ESTIMATED_CHROMOSOME_COUNT', 'ESTIMATED_PURITY',
        'FRAMESHIFT_SOMATIC_DELETIONS',
        'FRAMESHIFT_SOMATIC_INSERTIONS', 'MEAN_SOMATIC_SNV_FREQUENCY',
        'MEDIAN_SOMATIC_SNV_DISTANCE',
        'NON_SYNONYMOUS_SOMATIC_DELETIONS',
        'NON_SYNONYMOUS_SOMATIC_INSERTIONS',
        'NON_SYNONYMOUS_SOMATIC_SNVS', 'NORMAL_COVERAGE_AT_10X',
        'NORMAL_COVERAGE_AT_15X', 'NORMAL_COVERAGE_AT_1X',
        'NORMAL_MEAN_COVERAGE', 'NORMAL_MEDIAN_READ_LENGTH',
        'NORMAL_MEDIAN_READ_LENGTH_READ_1',
        'NORMAL_MEDIAN_READ_LENGTH_READ_2', 'NORMAL_MISMATCH_RATE',
        'NORMAL_MISMATCH_RATE_READ_1', 'NORMAL_MISMATCH_RATE_READ_2',
        'NORMAL_PERCENT_ALIGNED_BASES',
        'NORMAL_PERCENT_ALIGNED_BASES_READ_1',
        'NORMAL_PERCENT_ALIGNED_BASES_READ_2',
        'NORMAL_PERCENT_ALIGNED_READS',
        'NORMAL_PERCENT_ALIGNED_READ_1',
        'NORMAL_PERCENT_ALIGNED_READ_2', 'NORMAL_PERCENT_AT_DROPOUT',
        'NORMAL_PERCENT_DUPLICATE_ALIGNED_READS',
        'NORMAL_PERCENT_DUPLICATE_PROPER_READ_PAIRS',
        'NORMAL_PERCENT_GC_DROPOUT',
        'NORMAL_PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS',
        'NORMAL_PERCENT_Q25_BASES_READ_1',
        'NORMAL_PERCENT_Q25_BASES_READ_2', 'NORMAL_PERCENT_Q30_BASES',
        'NORMAL_PERCENT_Q30_BASES_READ_1',
        'NORMAL_PERCENT_Q30_BASES_READ_2',
        'NORMAL_PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES',
        'NORMAL_PERCENT_SOFT_CLIPPED_BASES',
        'NORMAL_Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES',
        'NORMAL_READ_ENRICHMENT_AT_75_GC',
        'NORMAL_READ_ENRICHMENT_AT_80_GC', 'NORMAL_SAMPLE_ID',
        'NORMAL_SAMPLE_NAME', 'NORMAL_TOTAL_ALIGNED_BASES',
        'NORMAL_TOTAL_ALIGNED_BASES_READ_1',
        'NORMAL_TOTAL_ALIGNED_BASES_READ_2',
        'NORMAL_TOTAL_ALIGNED_READS', 'NORMAL_TOTAL_ALIGNED_READ_1',
        'NORMAL_TOTAL_ALIGNED_READ_2',
        'NORMAL_TOTAL_ALIGNED_READ_PAIRS',
        'NORMAL_TOTAL_DUPLICATE_ALIGNED_READS',
        'NORMAL_TOTAL_DUPLICATE_PROPER_READ_PAIRS',
        'NORMAL_TOTAL_MAPQ_GT_10_READS', 'NORMAL_TOTAL_PF_BASES',
        'NORMAL_TOTAL_PF_BASES_READ_1',
        'NORMAL_TOTAL_PF_BASES_READ_2', 'NORMAL_TOTAL_PF_READS',
        'NORMAL_TOTAL_PF_READ_1', 'NORMAL_TOTAL_PF_READ_2',
        'NORMAL_TOTAL_PROPER_READ_PAIRS',
        'NORMAL_UNIQUE_ALIGNED_READS', 'OVERALL_PLOIDY',
        'PERCENT_SOMATIC_CNVS_IN_GENES', 'SOMATIC_CNVS',
        'SOMATIC_CNVS_ALL', 'SOMATIC_CNVS_IN_GENES',
        'SOMATIC_DELETIONS', 'SOMATIC_DELETIONS_ALL',
        'SOMATIC_DELETIONS_IN_CODING_REGIONS',
        'SOMATIC_DELETIONS_IN_EXONS', 'SOMATIC_DELETIONS_IN_GENES',
        'SOMATIC_DELETIONS_IN_MATURE_MIRNA',
        'SOMATIC_DELETIONS_IN_SPLICE_SITE_REGIONS',
        'SOMATIC_DELETIONS_IN_UTR_REGIONS',
        'SOMATIC_DELETIONS_PERCENT_FOUND_IN_DBSNP', 'SOMATIC_INDELS',
        'SOMATIC_INDELS_ALL', 'SOMATIC_INDELS_PERCENT_FOUND_IN_DBSNP',
        'SOMATIC_INSERTIONS', 'SOMATIC_INSERTIONS_ALL',
        'SOMATIC_INSERTIONS_IN_CODING_REGIONS',
        'SOMATIC_INSERTIONS_IN_EXONS', 'SOMATIC_INSERTIONS_IN_GENES',
        'SOMATIC_INSERTIONS_IN_MATURE_MIRNA',
        'SOMATIC_INSERTIONS_IN_SPLICE_SITE_REGIONS',
        'SOMATIC_INSERTIONS_IN_UTR_REGIONS',
        'SOMATIC_INSERTIONS_PERCENT_FOUND_IN_DBSNP', 'SOMATIC_SNVS',
        'SOMATIC_SNVS_ALL', 'SOMATIC_SNVS_IN_CODING_REGIONS',
        'SOMATIC_SNVS_IN_EXONS', 'SOMATIC_SNVS_IN_GENES',
        'SOMATIC_SNVS_IN_MATURE_MIRNA',
        'SOMATIC_SNVS_IN_SPLICE_SITE_REGIONS',
        'SOMATIC_SNVS_IN_UTR_REGIONS',
        'SOMATIC_SNVS_PERCENT_FOUND_IN_DBSNP',
        'SOMATIC_SNV_TS_TV_RATIO', 'SOMATIC_SV_BREAKENDS',
        'SOMATIC_SV_BREAKENDS_ALL', 'SOMATIC_SV_BREAKENDS_IN_GENES',
        'SOMATIC_SV_DELETIONS', 'SOMATIC_SV_DELETIONS_ALL',
        'SOMATIC_SV_DELETIONS_IN_GENES', 'SOMATIC_SV_INSERTIONS',
        'SOMATIC_SV_INSERTIONS_ALL', 'SOMATIC_SV_INSERTIONS_IN_GENES',
        'SOMATIC_SV_INVERSIONS', 'SOMATIC_SV_INVERSIONS_ALL',
        'SOMATIC_SV_INVERSIONS_IN_GENES',
        'SOMATIC_SV_PERCENT_BREAKENDS_IN_GENES',
        'SOMATIC_SV_PERCENT_DELETIONS_IN_GENES',
        'SOMATIC_SV_PERCENT_INSERTIONS_IN_GENES',
        'SOMATIC_SV_PERCENT_INVERSIONS_IN_GENES',
        'SOMATIC_SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES',
        'SOMATIC_SV_TANDEM_DUPLICATIONS',
        'SOMATIC_SV_TANDEM_DUPLICATIONS_ALL',
        'SOMATIC_SV_TANDEM_DUPLICATIONS_IN_GENES',
        'STOP_GAINED_SOMATIC_DELETIONS',
        'STOP_GAINED_SOMATIC_INSERTIONS', 'STOP_GAINED_SOMATIC_SNVS',
        'STOP_LOST_SOMATIC_DELETIONS', 'STOP_LOST_SOMATIC_INSERTIONS',
        'STOP_LOST_SOMATIC_SNVS', 'SYNONYMOUS_SOMATIC_SNVS',
        'TUMOR_COVERAGE_AT_10X', 'TUMOR_COVERAGE_AT_15X',
        'TUMOR_COVERAGE_AT_1X', 'TUMOR_MEAN_COVERAGE',
        'TUMOR_MEDIAN_READ_LENGTH', 'TUMOR_MEDIAN_READ_LENGTH_READ_1',
        'TUMOR_MEDIAN_READ_LENGTH_READ_2', 'TUMOR_MISMATCH_RATE',
        'TUMOR_MISMATCH_RATE_READ_1', 'TUMOR_MISMATCH_RATE_READ_2',
        'TUMOR_PERCENT_ALIGNED_BASES',
        'TUMOR_PERCENT_ALIGNED_BASES_READ_1',
        'TUMOR_PERCENT_ALIGNED_BASES_READ_2',
        'TUMOR_PERCENT_ALIGNED_READS', 'TUMOR_PERCENT_ALIGNED_READ_1',
        'TUMOR_PERCENT_ALIGNED_READ_2', 'TUMOR_PERCENT_AT_DROPOUT',
        'TUMOR_PERCENT_DUPLICATE_ALIGNED_READS',
        'TUMOR_PERCENT_DUPLICATE_PROPER_READ_PAIRS',
        'TUMOR_PERCENT_GC_DROPOUT',
        'TUMOR_PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS',
        'TUMOR_PERCENT_Q25_BASES_READ_1',
        'TUMOR_PERCENT_Q25_BASES_READ_2', 'TUMOR_PERCENT_Q30_BASES',
        'TUMOR_PERCENT_Q30_BASES_READ_1',
        'TUMOR_PERCENT_Q30_BASES_READ_2',
        'TUMOR_PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES',
        'TUMOR_PERCENT_SOFT_CLIPPED_BASES',
        'TUMOR_Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES',
        'TUMOR_READ_ENRICHMENT_AT_75_GC',
        'TUMOR_READ_ENRICHMENT_AT_80_GC', 'TUMOR_SAMPLE_ID',
        'TUMOR_SAMPLE_NAME', 'TUMOR_TOTAL_ALIGNED_BASES',
        'TUMOR_TOTAL_ALIGNED_BASES_READ_1',
        'TUMOR_TOTAL_ALIGNED_BASES_READ_2',
        'TUMOR_TOTAL_ALIGNED_READS', 'TUMOR_TOTAL_ALIGNED_READ_1',
        'TUMOR_TOTAL_ALIGNED_READ_2',
        'TUMOR_TOTAL_ALIGNED_READ_PAIRS',
        'TUMOR_TOTAL_DUPLICATE_ALIGNED_READS',
        'TUMOR_TOTAL_DUPLICATE_PROPER_READ_PAIRS',
        'TUMOR_TOTAL_MAPQ_GT_10_READS', 'TUMOR_TOTAL_PF_BASES',
        'TUMOR_TOTAL_PF_BASES_READ_1', 'TUMOR_TOTAL_PF_BASES_READ_2',
        'TUMOR_TOTAL_PF_READS', 'TUMOR_TOTAL_PF_READ_1',
        'TUMOR_TOTAL_PF_READ_2', 'TUMOR_TOTAL_PROPER_READ_PAIRS',
        'TUMOR_UNIQUE_ALIGNED_READS', 'illumina_version'
    ]

    def __init__(self, **kwargs):
        self.ESTIMATED_CHROMOSOME_COUNT = kwargs.get(
            'ESTIMATED_CHROMOSOME_COUNT', None)
        self.ESTIMATED_PURITY = kwargs.get(
            'ESTIMATED_PURITY', None)
        self.FRAMESHIFT_SOMATIC_DELETIONS = kwargs.get(
            'FRAMESHIFT_SOMATIC_DELETIONS', None)
        self.FRAMESHIFT_SOMATIC_INSERTIONS = kwargs.get(
            'FRAMESHIFT_SOMATIC_INSERTIONS', None)
        self.MEAN_SOMATIC_SNV_FREQUENCY = kwargs.get(
            'MEAN_SOMATIC_SNV_FREQUENCY', None)
        self.MEDIAN_SOMATIC_SNV_DISTANCE = kwargs.get(
            'MEDIAN_SOMATIC_SNV_DISTANCE', None)
        self.NON_SYNONYMOUS_SOMATIC_DELETIONS = kwargs.get(
            'NON_SYNONYMOUS_SOMATIC_DELETIONS', None)
        self.NON_SYNONYMOUS_SOMATIC_INSERTIONS = kwargs.get(
            'NON_SYNONYMOUS_SOMATIC_INSERTIONS', None)
        self.NON_SYNONYMOUS_SOMATIC_SNVS = kwargs.get(
            'NON_SYNONYMOUS_SOMATIC_SNVS', None)
        self.NORMAL_COVERAGE_AT_10X = kwargs.get(
            'NORMAL_COVERAGE_AT_10X', None)
        self.NORMAL_COVERAGE_AT_15X = kwargs.get(
            'NORMAL_COVERAGE_AT_15X', None)
        self.NORMAL_COVERAGE_AT_1X = kwargs.get(
            'NORMAL_COVERAGE_AT_1X', None)
        self.NORMAL_MEAN_COVERAGE = kwargs.get(
            'NORMAL_MEAN_COVERAGE', None)
        self.NORMAL_MEDIAN_READ_LENGTH = kwargs.get(
            'NORMAL_MEDIAN_READ_LENGTH', None)
        self.NORMAL_MEDIAN_READ_LENGTH_READ_1 = kwargs.get(
            'NORMAL_MEDIAN_READ_LENGTH_READ_1', None)
        self.NORMAL_MEDIAN_READ_LENGTH_READ_2 = kwargs.get(
            'NORMAL_MEDIAN_READ_LENGTH_READ_2', None)
        self.NORMAL_MISMATCH_RATE = kwargs.get(
            'NORMAL_MISMATCH_RATE', None)
        self.NORMAL_MISMATCH_RATE_READ_1 = kwargs.get(
            'NORMAL_MISMATCH_RATE_READ_1', None)
        self.NORMAL_MISMATCH_RATE_READ_2 = kwargs.get(
            'NORMAL_MISMATCH_RATE_READ_2', None)
        self.NORMAL_PERCENT_ALIGNED_BASES = kwargs.get(
            'NORMAL_PERCENT_ALIGNED_BASES', None)
        self.NORMAL_PERCENT_ALIGNED_BASES_READ_1 = kwargs.get(
            'NORMAL_PERCENT_ALIGNED_BASES_READ_1', None)
        self.NORMAL_PERCENT_ALIGNED_BASES_READ_2 = kwargs.get(
            'NORMAL_PERCENT_ALIGNED_BASES_READ_2', None)
        self.NORMAL_PERCENT_ALIGNED_READS = kwargs.get(
            'NORMAL_PERCENT_ALIGNED_READS', None)
        self.NORMAL_PERCENT_ALIGNED_READ_1 = kwargs.get(
            'NORMAL_PERCENT_ALIGNED_READ_1', None)
        self.NORMAL_PERCENT_ALIGNED_READ_2 = kwargs.get(
            'NORMAL_PERCENT_ALIGNED_READ_2', None)
        self.NORMAL_PERCENT_AT_DROPOUT = kwargs.get(
            'NORMAL_PERCENT_AT_DROPOUT', None)
        self.NORMAL_PERCENT_DUPLICATE_ALIGNED_READS = kwargs.get(
            'NORMAL_PERCENT_DUPLICATE_ALIGNED_READS', None)
        self.NORMAL_PERCENT_DUPLICATE_PROPER_READ_PAIRS = kwargs.get(
            'NORMAL_PERCENT_DUPLICATE_PROPER_READ_PAIRS', None)
        self.NORMAL_PERCENT_GC_DROPOUT = kwargs.get(
            'NORMAL_PERCENT_GC_DROPOUT', None)
        self.NORMAL_PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS = kwargs.get(
            'NORMAL_PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS', None)
        self.NORMAL_PERCENT_Q25_BASES_READ_1 = kwargs.get(
            'NORMAL_PERCENT_Q25_BASES_READ_1', None)
        self.NORMAL_PERCENT_Q25_BASES_READ_2 = kwargs.get(
            'NORMAL_PERCENT_Q25_BASES_READ_2', None)
        self.NORMAL_PERCENT_Q30_BASES = kwargs.get(
            'NORMAL_PERCENT_Q30_BASES', None)
        self.NORMAL_PERCENT_Q30_BASES_READ_1 = kwargs.get(
            'NORMAL_PERCENT_Q30_BASES_READ_1', None)
        self.NORMAL_PERCENT_Q30_BASES_READ_2 = kwargs.get(
            'NORMAL_PERCENT_Q30_BASES_READ_2', None)
        self.NORMAL_PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES = kwargs.get(
            'NORMAL_PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES', None)
        self.NORMAL_PERCENT_SOFT_CLIPPED_BASES = kwargs.get(
            'NORMAL_PERCENT_SOFT_CLIPPED_BASES', None)
        self.NORMAL_Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES = kwargs.get(
            'NORMAL_Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES', None)
        self.NORMAL_READ_ENRICHMENT_AT_75_GC = kwargs.get(
            'NORMAL_READ_ENRICHMENT_AT_75_GC', None)
        self.NORMAL_READ_ENRICHMENT_AT_80_GC = kwargs.get(
            'NORMAL_READ_ENRICHMENT_AT_80_GC', None)
        self.NORMAL_SAMPLE_ID = kwargs.get(
            'NORMAL_SAMPLE_ID', None)
        self.NORMAL_SAMPLE_NAME = kwargs.get(
            'NORMAL_SAMPLE_NAME', None)
        self.NORMAL_TOTAL_ALIGNED_BASES = kwargs.get(
            'NORMAL_TOTAL_ALIGNED_BASES', None)
        self.NORMAL_TOTAL_ALIGNED_BASES_READ_1 = kwargs.get(
            'NORMAL_TOTAL_ALIGNED_BASES_READ_1', None)
        self.NORMAL_TOTAL_ALIGNED_BASES_READ_2 = kwargs.get(
            'NORMAL_TOTAL_ALIGNED_BASES_READ_2', None)
        self.NORMAL_TOTAL_ALIGNED_READS = kwargs.get(
            'NORMAL_TOTAL_ALIGNED_READS', None)
        self.NORMAL_TOTAL_ALIGNED_READ_1 = kwargs.get(
            'NORMAL_TOTAL_ALIGNED_READ_1', None)
        self.NORMAL_TOTAL_ALIGNED_READ_2 = kwargs.get(
            'NORMAL_TOTAL_ALIGNED_READ_2', None)
        self.NORMAL_TOTAL_ALIGNED_READ_PAIRS = kwargs.get(
            'NORMAL_TOTAL_ALIGNED_READ_PAIRS', None)
        self.NORMAL_TOTAL_DUPLICATE_ALIGNED_READS = kwargs.get(
            'NORMAL_TOTAL_DUPLICATE_ALIGNED_READS', None)
        self.NORMAL_TOTAL_DUPLICATE_PROPER_READ_PAIRS = kwargs.get(
            'NORMAL_TOTAL_DUPLICATE_PROPER_READ_PAIRS', None)
        self.NORMAL_TOTAL_MAPQ_GT_10_READS = kwargs.get(
            'NORMAL_TOTAL_MAPQ_GT_10_READS', None)
        self.NORMAL_TOTAL_PF_BASES = kwargs.get(
            'NORMAL_TOTAL_PF_BASES', None)
        self.NORMAL_TOTAL_PF_BASES_READ_1 = kwargs.get(
            'NORMAL_TOTAL_PF_BASES_READ_1', None)
        self.NORMAL_TOTAL_PF_BASES_READ_2 = kwargs.get(
            'NORMAL_TOTAL_PF_BASES_READ_2', None)
        self.NORMAL_TOTAL_PF_READS = kwargs.get(
            'NORMAL_TOTAL_PF_READS', None)
        self.NORMAL_TOTAL_PF_READ_1 = kwargs.get(
            'NORMAL_TOTAL_PF_READ_1', None)
        self.NORMAL_TOTAL_PF_READ_2 = kwargs.get(
            'NORMAL_TOTAL_PF_READ_2', None)
        self.NORMAL_TOTAL_PROPER_READ_PAIRS = kwargs.get(
            'NORMAL_TOTAL_PROPER_READ_PAIRS', None)
        self.NORMAL_UNIQUE_ALIGNED_READS = kwargs.get(
            'NORMAL_UNIQUE_ALIGNED_READS', None)
        self.OVERALL_PLOIDY = kwargs.get(
            'OVERALL_PLOIDY', None)
        self.PERCENT_SOMATIC_CNVS_IN_GENES = kwargs.get(
            'PERCENT_SOMATIC_CNVS_IN_GENES', None)
        self.SOMATIC_CNVS = kwargs.get(
            'SOMATIC_CNVS', None)
        self.SOMATIC_CNVS_ALL = kwargs.get(
            'SOMATIC_CNVS_ALL', None)
        self.SOMATIC_CNVS_IN_GENES = kwargs.get(
            'SOMATIC_CNVS_IN_GENES', None)
        self.SOMATIC_DELETIONS = kwargs.get(
            'SOMATIC_DELETIONS', None)
        self.SOMATIC_DELETIONS_ALL = kwargs.get(
            'SOMATIC_DELETIONS_ALL', None)
        self.SOMATIC_DELETIONS_IN_CODING_REGIONS = kwargs.get(
            'SOMATIC_DELETIONS_IN_CODING_REGIONS', None)
        self.SOMATIC_DELETIONS_IN_EXONS = kwargs.get(
            'SOMATIC_DELETIONS_IN_EXONS', None)
        self.SOMATIC_DELETIONS_IN_GENES = kwargs.get(
            'SOMATIC_DELETIONS_IN_GENES', None)
        self.SOMATIC_DELETIONS_IN_MATURE_MIRNA = kwargs.get(
            'SOMATIC_DELETIONS_IN_MATURE_MIRNA', None)
        self.SOMATIC_DELETIONS_IN_SPLICE_SITE_REGIONS = kwargs.get(
            'SOMATIC_DELETIONS_IN_SPLICE_SITE_REGIONS', None)
        self.SOMATIC_DELETIONS_IN_UTR_REGIONS = kwargs.get(
            'SOMATIC_DELETIONS_IN_UTR_REGIONS', None)
        self.SOMATIC_DELETIONS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'SOMATIC_DELETIONS_PERCENT_FOUND_IN_DBSNP', None)
        self.SOMATIC_INDELS = kwargs.get(
            'SOMATIC_INDELS', None)
        self.SOMATIC_INDELS_ALL = kwargs.get(
            'SOMATIC_INDELS_ALL', None)
        self.SOMATIC_INDELS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'SOMATIC_INDELS_PERCENT_FOUND_IN_DBSNP', None)
        self.SOMATIC_INSERTIONS = kwargs.get(
            'SOMATIC_INSERTIONS', None)
        self.SOMATIC_INSERTIONS_ALL = kwargs.get(
            'SOMATIC_INSERTIONS_ALL', None)
        self.SOMATIC_INSERTIONS_IN_CODING_REGIONS = kwargs.get(
            'SOMATIC_INSERTIONS_IN_CODING_REGIONS', None)
        self.SOMATIC_INSERTIONS_IN_EXONS = kwargs.get(
            'SOMATIC_INSERTIONS_IN_EXONS', None)
        self.SOMATIC_INSERTIONS_IN_GENES = kwargs.get(
            'SOMATIC_INSERTIONS_IN_GENES', None)
        self.SOMATIC_INSERTIONS_IN_MATURE_MIRNA = kwargs.get(
            'SOMATIC_INSERTIONS_IN_MATURE_MIRNA', None)
        self.SOMATIC_INSERTIONS_IN_SPLICE_SITE_REGIONS = kwargs.get(
            'SOMATIC_INSERTIONS_IN_SPLICE_SITE_REGIONS', None)
        self.SOMATIC_INSERTIONS_IN_UTR_REGIONS = kwargs.get(
            'SOMATIC_INSERTIONS_IN_UTR_REGIONS', None)
        self.SOMATIC_INSERTIONS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'SOMATIC_INSERTIONS_PERCENT_FOUND_IN_DBSNP', None)
        self.SOMATIC_SNVS = kwargs.get(
            'SOMATIC_SNVS', None)
        self.SOMATIC_SNVS_ALL = kwargs.get(
            'SOMATIC_SNVS_ALL', None)
        self.SOMATIC_SNVS_IN_CODING_REGIONS = kwargs.get(
            'SOMATIC_SNVS_IN_CODING_REGIONS', None)
        self.SOMATIC_SNVS_IN_EXONS = kwargs.get(
            'SOMATIC_SNVS_IN_EXONS', None)
        self.SOMATIC_SNVS_IN_GENES = kwargs.get(
            'SOMATIC_SNVS_IN_GENES', None)
        self.SOMATIC_SNVS_IN_MATURE_MIRNA = kwargs.get(
            'SOMATIC_SNVS_IN_MATURE_MIRNA', None)
        self.SOMATIC_SNVS_IN_SPLICE_SITE_REGIONS = kwargs.get(
            'SOMATIC_SNVS_IN_SPLICE_SITE_REGIONS', None)
        self.SOMATIC_SNVS_IN_UTR_REGIONS = kwargs.get(
            'SOMATIC_SNVS_IN_UTR_REGIONS', None)
        self.SOMATIC_SNVS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'SOMATIC_SNVS_PERCENT_FOUND_IN_DBSNP', None)
        self.SOMATIC_SNV_TS_TV_RATIO = kwargs.get(
            'SOMATIC_SNV_TS_TV_RATIO', None)
        self.SOMATIC_SV_BREAKENDS = kwargs.get(
            'SOMATIC_SV_BREAKENDS', None)
        self.SOMATIC_SV_BREAKENDS_ALL = kwargs.get(
            'SOMATIC_SV_BREAKENDS_ALL', None)
        self.SOMATIC_SV_BREAKENDS_IN_GENES = kwargs.get(
            'SOMATIC_SV_BREAKENDS_IN_GENES', None)
        self.SOMATIC_SV_DELETIONS = kwargs.get(
            'SOMATIC_SV_DELETIONS', None)
        self.SOMATIC_SV_DELETIONS_ALL = kwargs.get(
            'SOMATIC_SV_DELETIONS_ALL', None)
        self.SOMATIC_SV_DELETIONS_IN_GENES = kwargs.get(
            'SOMATIC_SV_DELETIONS_IN_GENES', None)
        self.SOMATIC_SV_INSERTIONS = kwargs.get(
            'SOMATIC_SV_INSERTIONS', None)
        self.SOMATIC_SV_INSERTIONS_ALL = kwargs.get(
            'SOMATIC_SV_INSERTIONS_ALL', None)
        self.SOMATIC_SV_INSERTIONS_IN_GENES = kwargs.get(
            'SOMATIC_SV_INSERTIONS_IN_GENES', None)
        self.SOMATIC_SV_INVERSIONS = kwargs.get(
            'SOMATIC_SV_INVERSIONS', None)
        self.SOMATIC_SV_INVERSIONS_ALL = kwargs.get(
            'SOMATIC_SV_INVERSIONS_ALL', None)
        self.SOMATIC_SV_INVERSIONS_IN_GENES = kwargs.get(
            'SOMATIC_SV_INVERSIONS_IN_GENES', None)
        self.SOMATIC_SV_PERCENT_BREAKENDS_IN_GENES = kwargs.get(
            'SOMATIC_SV_PERCENT_BREAKENDS_IN_GENES', None)
        self.SOMATIC_SV_PERCENT_DELETIONS_IN_GENES = kwargs.get(
            'SOMATIC_SV_PERCENT_DELETIONS_IN_GENES', None)
        self.SOMATIC_SV_PERCENT_INSERTIONS_IN_GENES = kwargs.get(
            'SOMATIC_SV_PERCENT_INSERTIONS_IN_GENES', None)
        self.SOMATIC_SV_PERCENT_INVERSIONS_IN_GENES = kwargs.get(
            'SOMATIC_SV_PERCENT_INVERSIONS_IN_GENES', None)
        self.SOMATIC_SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES = kwargs.get(
            'SOMATIC_SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES', None)
        self.SOMATIC_SV_TANDEM_DUPLICATIONS = kwargs.get(
            'SOMATIC_SV_TANDEM_DUPLICATIONS', None)
        self.SOMATIC_SV_TANDEM_DUPLICATIONS_ALL = kwargs.get(
            'SOMATIC_SV_TANDEM_DUPLICATIONS_ALL', None)
        self.SOMATIC_SV_TANDEM_DUPLICATIONS_IN_GENES = kwargs.get(
            'SOMATIC_SV_TANDEM_DUPLICATIONS_IN_GENES', None)
        self.STOP_GAINED_SOMATIC_DELETIONS = kwargs.get(
            'STOP_GAINED_SOMATIC_DELETIONS', None)
        self.STOP_GAINED_SOMATIC_INSERTIONS = kwargs.get(
            'STOP_GAINED_SOMATIC_INSERTIONS', None)
        self.STOP_GAINED_SOMATIC_SNVS = kwargs.get(
            'STOP_GAINED_SOMATIC_SNVS', None)
        self.STOP_LOST_SOMATIC_DELETIONS = kwargs.get(
            'STOP_LOST_SOMATIC_DELETIONS', None)
        self.STOP_LOST_SOMATIC_INSERTIONS = kwargs.get(
            'STOP_LOST_SOMATIC_INSERTIONS', None)
        self.STOP_LOST_SOMATIC_SNVS = kwargs.get(
            'STOP_LOST_SOMATIC_SNVS', None)
        self.SYNONYMOUS_SOMATIC_SNVS = kwargs.get(
            'SYNONYMOUS_SOMATIC_SNVS', None)
        self.TUMOR_COVERAGE_AT_10X = kwargs.get(
            'TUMOR_COVERAGE_AT_10X', None)
        self.TUMOR_COVERAGE_AT_15X = kwargs.get(
            'TUMOR_COVERAGE_AT_15X', None)
        self.TUMOR_COVERAGE_AT_1X = kwargs.get(
            'TUMOR_COVERAGE_AT_1X', None)
        self.TUMOR_MEAN_COVERAGE = kwargs.get(
            'TUMOR_MEAN_COVERAGE', None)
        self.TUMOR_MEDIAN_READ_LENGTH = kwargs.get(
            'TUMOR_MEDIAN_READ_LENGTH', None)
        self.TUMOR_MEDIAN_READ_LENGTH_READ_1 = kwargs.get(
            'TUMOR_MEDIAN_READ_LENGTH_READ_1', None)
        self.TUMOR_MEDIAN_READ_LENGTH_READ_2 = kwargs.get(
            'TUMOR_MEDIAN_READ_LENGTH_READ_2', None)
        self.TUMOR_MISMATCH_RATE = kwargs.get(
            'TUMOR_MISMATCH_RATE', None)
        self.TUMOR_MISMATCH_RATE_READ_1 = kwargs.get(
            'TUMOR_MISMATCH_RATE_READ_1', None)
        self.TUMOR_MISMATCH_RATE_READ_2 = kwargs.get(
            'TUMOR_MISMATCH_RATE_READ_2', None)
        self.TUMOR_PERCENT_ALIGNED_BASES = kwargs.get(
            'TUMOR_PERCENT_ALIGNED_BASES', None)
        self.TUMOR_PERCENT_ALIGNED_BASES_READ_1 = kwargs.get(
            'TUMOR_PERCENT_ALIGNED_BASES_READ_1', None)
        self.TUMOR_PERCENT_ALIGNED_BASES_READ_2 = kwargs.get(
            'TUMOR_PERCENT_ALIGNED_BASES_READ_2', None)
        self.TUMOR_PERCENT_ALIGNED_READS = kwargs.get(
            'TUMOR_PERCENT_ALIGNED_READS', None)
        self.TUMOR_PERCENT_ALIGNED_READ_1 = kwargs.get(
            'TUMOR_PERCENT_ALIGNED_READ_1', None)
        self.TUMOR_PERCENT_ALIGNED_READ_2 = kwargs.get(
            'TUMOR_PERCENT_ALIGNED_READ_2', None)
        self.TUMOR_PERCENT_AT_DROPOUT = kwargs.get(
            'TUMOR_PERCENT_AT_DROPOUT', None)
        self.TUMOR_PERCENT_DUPLICATE_ALIGNED_READS = kwargs.get(
            'TUMOR_PERCENT_DUPLICATE_ALIGNED_READS', None)
        self.TUMOR_PERCENT_DUPLICATE_PROPER_READ_PAIRS = kwargs.get(
            'TUMOR_PERCENT_DUPLICATE_PROPER_READ_PAIRS', None)
        self.TUMOR_PERCENT_GC_DROPOUT = kwargs.get(
            'TUMOR_PERCENT_GC_DROPOUT', None)
        self.TUMOR_PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS = kwargs.get(
            'TUMOR_PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS', None)
        self.TUMOR_PERCENT_Q25_BASES_READ_1 = kwargs.get(
            'TUMOR_PERCENT_Q25_BASES_READ_1', None)
        self.TUMOR_PERCENT_Q25_BASES_READ_2 = kwargs.get(
            'TUMOR_PERCENT_Q25_BASES_READ_2', None)
        self.TUMOR_PERCENT_Q30_BASES = kwargs.get(
            'TUMOR_PERCENT_Q30_BASES', None)
        self.TUMOR_PERCENT_Q30_BASES_READ_1 = kwargs.get(
            'TUMOR_PERCENT_Q30_BASES_READ_1', None)
        self.TUMOR_PERCENT_Q30_BASES_READ_2 = kwargs.get(
            'TUMOR_PERCENT_Q30_BASES_READ_2', None)
        self.TUMOR_PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES = kwargs.get(
            'TUMOR_PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES', None)
        self.TUMOR_PERCENT_SOFT_CLIPPED_BASES = kwargs.get(
            'TUMOR_PERCENT_SOFT_CLIPPED_BASES', None)
        self.TUMOR_Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES = kwargs.get(
            'TUMOR_Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES', None)
        self.TUMOR_READ_ENRICHMENT_AT_75_GC = kwargs.get(
            'TUMOR_READ_ENRICHMENT_AT_75_GC', None)
        self.TUMOR_READ_ENRICHMENT_AT_80_GC = kwargs.get(
            'TUMOR_READ_ENRICHMENT_AT_80_GC', None)
        self.TUMOR_SAMPLE_ID = kwargs.get(
            'TUMOR_SAMPLE_ID', None)
        self.TUMOR_SAMPLE_NAME = kwargs.get(
            'TUMOR_SAMPLE_NAME', None)
        self.TUMOR_TOTAL_ALIGNED_BASES = kwargs.get(
            'TUMOR_TOTAL_ALIGNED_BASES', None)
        self.TUMOR_TOTAL_ALIGNED_BASES_READ_1 = kwargs.get(
            'TUMOR_TOTAL_ALIGNED_BASES_READ_1', None)
        self.TUMOR_TOTAL_ALIGNED_BASES_READ_2 = kwargs.get(
            'TUMOR_TOTAL_ALIGNED_BASES_READ_2', None)
        self.TUMOR_TOTAL_ALIGNED_READS = kwargs.get(
            'TUMOR_TOTAL_ALIGNED_READS', None)
        self.TUMOR_TOTAL_ALIGNED_READ_1 = kwargs.get(
            'TUMOR_TOTAL_ALIGNED_READ_1', None)
        self.TUMOR_TOTAL_ALIGNED_READ_2 = kwargs.get(
            'TUMOR_TOTAL_ALIGNED_READ_2', None)
        self.TUMOR_TOTAL_ALIGNED_READ_PAIRS = kwargs.get(
            'TUMOR_TOTAL_ALIGNED_READ_PAIRS', None)
        self.TUMOR_TOTAL_DUPLICATE_ALIGNED_READS = kwargs.get(
            'TUMOR_TOTAL_DUPLICATE_ALIGNED_READS', None)
        self.TUMOR_TOTAL_DUPLICATE_PROPER_READ_PAIRS = kwargs.get(
            'TUMOR_TOTAL_DUPLICATE_PROPER_READ_PAIRS', None)
        self.TUMOR_TOTAL_MAPQ_GT_10_READS = kwargs.get(
            'TUMOR_TOTAL_MAPQ_GT_10_READS', None)
        self.TUMOR_TOTAL_PF_BASES = kwargs.get(
            'TUMOR_TOTAL_PF_BASES', None)
        self.TUMOR_TOTAL_PF_BASES_READ_1 = kwargs.get(
            'TUMOR_TOTAL_PF_BASES_READ_1', None)
        self.TUMOR_TOTAL_PF_BASES_READ_2 = kwargs.get(
            'TUMOR_TOTAL_PF_BASES_READ_2', None)
        self.TUMOR_TOTAL_PF_READS = kwargs.get(
            'TUMOR_TOTAL_PF_READS', None)
        self.TUMOR_TOTAL_PF_READ_1 = kwargs.get(
            'TUMOR_TOTAL_PF_READ_1', None)
        self.TUMOR_TOTAL_PF_READ_2 = kwargs.get(
            'TUMOR_TOTAL_PF_READ_2', None)
        self.TUMOR_TOTAL_PROPER_READ_PAIRS = kwargs.get(
            'TUMOR_TOTAL_PROPER_READ_PAIRS', None)
        self.TUMOR_UNIQUE_ALIGNED_READS = kwargs.get(
            'TUMOR_UNIQUE_ALIGNED_READS', None)
        self.illumina_version = kwargs.get(
            'illumina_version', None)


class IlluminaSummaryCancerV4_CancerStats(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "IlluminaSummaryCancerV4_CancerStats", "namespace":
"org.gel.models.report.avro", "fields": [{"name": "SAMPLE_ID", "type": "string"}, {"name":
"SAMPLE_NAME", "type": "string"}, {"name": "RUN_FOLDER", "type": "string"}, {"name":
"REFERENCE_GENOME", "type": "string"}, {"name": "PAIRED_END", "type": "boolean"}, {"name":
"METRICS_VERSION", "type": "string"}, {"name": "METRICS_DELIVERABLE", "type": "string"}, {"name":
"DIVERSITY", "type": "long"}, {"name": "AUTOSOME_MEAN_COVERAGE", "type": "double"}, {"name":
"AUTOSOME_COVERAGE_AT_1X", "type": "double"}, {"name": "AUTOSOME_COVERAGE_AT_10X", "type":
"double"}, {"name": "AUTOSOME_COVERAGE_AT_15X", "type": "double"}, {"name":
"AUTOSOME_EXON_MEAN_COVERAGE", "type": "double"}, {"name": "AUTOSOME_EXON_COVERAGE_AT_1X", "type":
"double"}, {"name": "AUTOSOME_EXON_COVERAGE_AT_10X", "type": "double"}, {"name":
"AUTOSOME_EXON_COVERAGE_AT_15X", "type": "double"}, {"name":
"MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X", "type": "double"}, {"name":
"MAPQ_GT_10_AUTOSOME_MEDIAN_COVERAGE", "type": "double"}, {"name":
"MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X", "type": "double"}, {"name": "TOTAL_PF_READS", "type":
"long"}, {"name": "TOTAL_PF_READ_1", "type": "long"}, {"name": "TOTAL_PF_READ_2", "type": "long"},
{"name": "MEDIAN_READ_LENGTH", "type": "string"}, {"name": "MEDIAN_READ_LENGTH_READ_1", "type":
"string"}, {"name": "MEDIAN_READ_LENGTH_READ_2", "type": "string"}, {"name":
"TOTAL_MAPQ_GT_10_READS", "type": "long"}, {"name": "TOTAL_ALIGNED_READS", "type": "long"}, {"name":
"UNIQUE_ALIGNED_READS", "type": "long"}, {"name": "TOTAL_DUPLICATE_ALIGNED_READS", "type": "long"},
{"name": "PERCENT_DUPLICATE_ALIGNED_READS", "type": "double"}, {"name": "TOTAL_ALIGNED_READ_1",
"type": "long"}, {"name": "TOTAL_ALIGNED_READ_2", "type": "long"}, {"name": "PERCENT_ALIGNED_READS",
"type": "double"}, {"name": "PERCENT_ALIGNED_READ_1", "type": "double"}, {"name":
"PERCENT_ALIGNED_READ_2", "type": "double"}, {"name": "TOTAL_PROPER_READ_PAIRS", "type": "long"},
{"name": "TOTAL_DUPLICATE_PROPER_READ_PAIRS", "type": "long"}, {"name":
"PERCENT_DUPLICATE_PROPER_READ_PAIRS", "type": "double"}, {"name":
"PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS", "type": "double"}, {"name": "TOTAL_ALIGNED_READ_PAIRS",
"type": "long"}, {"name": "PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES", "type": "double"},
{"name": "PERCENT_AT_DROPOUT", "type": "double"}, {"name": "PERCENT_GC_DROPOUT", "type": "double"},
{"name": "READ_ENRICHMENT_AT_75_GC", "type": "double"}, {"name": "READ_ENRICHMENT_AT_80_GC", "type":
"double"}, {"name": "TOTAL_PF_BASES", "type": "long"}, {"name": "TOTAL_PF_BASES_READ_1", "type":
"long"}, {"name": "TOTAL_PF_BASES_READ_2", "type": "long"}, {"name": "PERCENT_SOFT_CLIPPED_BASES",
"type": "double"}, {"name": "PERCENT_Q25_BASES_READ_1", "type": "double"}, {"name":
"PERCENT_Q25_BASES_READ_2", "type": "double"}, {"name": "PERCENT_Q30_BASES", "type": "double"},
{"name": "PERCENT_Q30_BASES_READ_1", "type": "double"}, {"name": "PERCENT_Q30_BASES_READ_2", "type":
"double"}, {"name": "TOTAL_ALIGNED_BASES", "type": "long"}, {"name": "TOTAL_ALIGNED_BASES_READ_1",
"type": "long"}, {"name": "TOTAL_ALIGNED_BASES_READ_2", "type": "long"}, {"name":
"PERCENT_ALIGNED_BASES", "type": "double"}, {"name": "PERCENT_ALIGNED_BASES_READ_1", "type":
"double"}, {"name": "PERCENT_ALIGNED_BASES_READ_2", "type": "double"}, {"name": "MISMATCH_RATE",
"type": "double"}, {"name": "MISMATCH_RATE_READ_1", "type": "double"}, {"name":
"MISMATCH_RATE_READ_2", "type": "double"}, {"name":
"Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES", "type": "long"}, {"name": "MEAN_COVERAGE",
"type": "double"}, {"name": "COVERAGE_AT_1X", "type": "double"}, {"name": "COVERAGE_AT_10X", "type":
"double"}, {"name": "COVERAGE_AT_15X", "type": "double"}, {"name": "FRAGMENT_LENGTH_MEDIAN", "type":
"long"}, {"name": "FRAGMENT_LENGTH_MIN", "type": "long"}, {"name": "FRAGMENT_LENGTH_MAX", "type":
"long"}, {"name": "FRAGMENT_LENGTH_SD", "type": "long"}, {"name": "PERCENT_OVERLAPPING_BASES",
"type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "AUTOSOME_COVERAGE_AT_10X",
        "AUTOSOME_COVERAGE_AT_15X",
        "AUTOSOME_COVERAGE_AT_1X",
        "AUTOSOME_EXON_COVERAGE_AT_10X",
        "AUTOSOME_EXON_COVERAGE_AT_15X",
        "AUTOSOME_EXON_COVERAGE_AT_1X",
        "AUTOSOME_EXON_MEAN_COVERAGE",
        "AUTOSOME_MEAN_COVERAGE",
        "COVERAGE_AT_10X",
        "COVERAGE_AT_15X",
        "COVERAGE_AT_1X",
        "DIVERSITY",
        "FRAGMENT_LENGTH_MAX",
        "FRAGMENT_LENGTH_MEDIAN",
        "FRAGMENT_LENGTH_MIN",
        "FRAGMENT_LENGTH_SD",
        "MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X",
        "MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X",
        "MAPQ_GT_10_AUTOSOME_MEDIAN_COVERAGE",
        "MEAN_COVERAGE",
        "MEDIAN_READ_LENGTH",
        "MEDIAN_READ_LENGTH_READ_1",
        "MEDIAN_READ_LENGTH_READ_2",
        "METRICS_DELIVERABLE",
        "METRICS_VERSION",
        "MISMATCH_RATE",
        "MISMATCH_RATE_READ_1",
        "MISMATCH_RATE_READ_2",
        "PAIRED_END",
        "PERCENT_ALIGNED_BASES",
        "PERCENT_ALIGNED_BASES_READ_1",
        "PERCENT_ALIGNED_BASES_READ_2",
        "PERCENT_ALIGNED_READS",
        "PERCENT_ALIGNED_READ_1",
        "PERCENT_ALIGNED_READ_2",
        "PERCENT_AT_DROPOUT",
        "PERCENT_DUPLICATE_ALIGNED_READS",
        "PERCENT_DUPLICATE_PROPER_READ_PAIRS",
        "PERCENT_GC_DROPOUT",
        "PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS",
        "PERCENT_OVERLAPPING_BASES",
        "PERCENT_Q25_BASES_READ_1",
        "PERCENT_Q25_BASES_READ_2",
        "PERCENT_Q30_BASES",
        "PERCENT_Q30_BASES_READ_1",
        "PERCENT_Q30_BASES_READ_2",
        "PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES",
        "PERCENT_SOFT_CLIPPED_BASES",
        "Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES",
        "READ_ENRICHMENT_AT_75_GC",
        "READ_ENRICHMENT_AT_80_GC",
        "REFERENCE_GENOME",
        "RUN_FOLDER",
        "SAMPLE_ID",
        "SAMPLE_NAME",
        "TOTAL_ALIGNED_BASES",
        "TOTAL_ALIGNED_BASES_READ_1",
        "TOTAL_ALIGNED_BASES_READ_2",
        "TOTAL_ALIGNED_READS",
        "TOTAL_ALIGNED_READ_1",
        "TOTAL_ALIGNED_READ_2",
        "TOTAL_ALIGNED_READ_PAIRS",
        "TOTAL_DUPLICATE_ALIGNED_READS",
        "TOTAL_DUPLICATE_PROPER_READ_PAIRS",
        "TOTAL_MAPQ_GT_10_READS",
        "TOTAL_PF_BASES",
        "TOTAL_PF_BASES_READ_1",
        "TOTAL_PF_BASES_READ_2",
        "TOTAL_PF_READS",
        "TOTAL_PF_READ_1",
        "TOTAL_PF_READ_2",
        "TOTAL_PROPER_READ_PAIRS",
        "UNIQUE_ALIGNED_READS",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'AUTOSOME_COVERAGE_AT_10X', 'AUTOSOME_COVERAGE_AT_15X',
        'AUTOSOME_COVERAGE_AT_1X', 'AUTOSOME_EXON_COVERAGE_AT_10X',
        'AUTOSOME_EXON_COVERAGE_AT_15X',
        'AUTOSOME_EXON_COVERAGE_AT_1X', 'AUTOSOME_EXON_MEAN_COVERAGE',
        'AUTOSOME_MEAN_COVERAGE', 'COVERAGE_AT_10X',
        'COVERAGE_AT_15X', 'COVERAGE_AT_1X', 'DIVERSITY',
        'FRAGMENT_LENGTH_MAX', 'FRAGMENT_LENGTH_MEDIAN',
        'FRAGMENT_LENGTH_MIN', 'FRAGMENT_LENGTH_SD',
        'MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X',
        'MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X',
        'MAPQ_GT_10_AUTOSOME_MEDIAN_COVERAGE', 'MEAN_COVERAGE',
        'MEDIAN_READ_LENGTH', 'MEDIAN_READ_LENGTH_READ_1',
        'MEDIAN_READ_LENGTH_READ_2', 'METRICS_DELIVERABLE',
        'METRICS_VERSION', 'MISMATCH_RATE', 'MISMATCH_RATE_READ_1',
        'MISMATCH_RATE_READ_2', 'PAIRED_END', 'PERCENT_ALIGNED_BASES',
        'PERCENT_ALIGNED_BASES_READ_1',
        'PERCENT_ALIGNED_BASES_READ_2', 'PERCENT_ALIGNED_READS',
        'PERCENT_ALIGNED_READ_1', 'PERCENT_ALIGNED_READ_2',
        'PERCENT_AT_DROPOUT', 'PERCENT_DUPLICATE_ALIGNED_READS',
        'PERCENT_DUPLICATE_PROPER_READ_PAIRS', 'PERCENT_GC_DROPOUT',
        'PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS',
        'PERCENT_OVERLAPPING_BASES', 'PERCENT_Q25_BASES_READ_1',
        'PERCENT_Q25_BASES_READ_2', 'PERCENT_Q30_BASES',
        'PERCENT_Q30_BASES_READ_1', 'PERCENT_Q30_BASES_READ_2',
        'PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES',
        'PERCENT_SOFT_CLIPPED_BASES',
        'Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES',
        'READ_ENRICHMENT_AT_75_GC', 'READ_ENRICHMENT_AT_80_GC',
        'REFERENCE_GENOME', 'RUN_FOLDER', 'SAMPLE_ID', 'SAMPLE_NAME',
        'TOTAL_ALIGNED_BASES', 'TOTAL_ALIGNED_BASES_READ_1',
        'TOTAL_ALIGNED_BASES_READ_2', 'TOTAL_ALIGNED_READS',
        'TOTAL_ALIGNED_READ_1', 'TOTAL_ALIGNED_READ_2',
        'TOTAL_ALIGNED_READ_PAIRS', 'TOTAL_DUPLICATE_ALIGNED_READS',
        'TOTAL_DUPLICATE_PROPER_READ_PAIRS', 'TOTAL_MAPQ_GT_10_READS',
        'TOTAL_PF_BASES', 'TOTAL_PF_BASES_READ_1',
        'TOTAL_PF_BASES_READ_2', 'TOTAL_PF_READS', 'TOTAL_PF_READ_1',
        'TOTAL_PF_READ_2', 'TOTAL_PROPER_READ_PAIRS',
        'UNIQUE_ALIGNED_READS'
    ]

    def __init__(self, **kwargs):
        self.AUTOSOME_COVERAGE_AT_10X = kwargs.get(
            'AUTOSOME_COVERAGE_AT_10X', None)
        self.AUTOSOME_COVERAGE_AT_15X = kwargs.get(
            'AUTOSOME_COVERAGE_AT_15X', None)
        self.AUTOSOME_COVERAGE_AT_1X = kwargs.get(
            'AUTOSOME_COVERAGE_AT_1X', None)
        self.AUTOSOME_EXON_COVERAGE_AT_10X = kwargs.get(
            'AUTOSOME_EXON_COVERAGE_AT_10X', None)
        self.AUTOSOME_EXON_COVERAGE_AT_15X = kwargs.get(
            'AUTOSOME_EXON_COVERAGE_AT_15X', None)
        self.AUTOSOME_EXON_COVERAGE_AT_1X = kwargs.get(
            'AUTOSOME_EXON_COVERAGE_AT_1X', None)
        self.AUTOSOME_EXON_MEAN_COVERAGE = kwargs.get(
            'AUTOSOME_EXON_MEAN_COVERAGE', None)
        self.AUTOSOME_MEAN_COVERAGE = kwargs.get(
            'AUTOSOME_MEAN_COVERAGE', None)
        self.COVERAGE_AT_10X = kwargs.get(
            'COVERAGE_AT_10X', None)
        self.COVERAGE_AT_15X = kwargs.get(
            'COVERAGE_AT_15X', None)
        self.COVERAGE_AT_1X = kwargs.get(
            'COVERAGE_AT_1X', None)
        self.DIVERSITY = kwargs.get(
            'DIVERSITY', None)
        self.FRAGMENT_LENGTH_MAX = kwargs.get(
            'FRAGMENT_LENGTH_MAX', None)
        self.FRAGMENT_LENGTH_MEDIAN = kwargs.get(
            'FRAGMENT_LENGTH_MEDIAN', None)
        self.FRAGMENT_LENGTH_MIN = kwargs.get(
            'FRAGMENT_LENGTH_MIN', None)
        self.FRAGMENT_LENGTH_SD = kwargs.get(
            'FRAGMENT_LENGTH_SD', None)
        self.MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X = kwargs.get(
            'MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X', None)
        self.MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X = kwargs.get(
            'MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X', None)
        self.MAPQ_GT_10_AUTOSOME_MEDIAN_COVERAGE = kwargs.get(
            'MAPQ_GT_10_AUTOSOME_MEDIAN_COVERAGE', None)
        self.MEAN_COVERAGE = kwargs.get(
            'MEAN_COVERAGE', None)
        self.MEDIAN_READ_LENGTH = kwargs.get(
            'MEDIAN_READ_LENGTH', None)
        self.MEDIAN_READ_LENGTH_READ_1 = kwargs.get(
            'MEDIAN_READ_LENGTH_READ_1', None)
        self.MEDIAN_READ_LENGTH_READ_2 = kwargs.get(
            'MEDIAN_READ_LENGTH_READ_2', None)
        self.METRICS_DELIVERABLE = kwargs.get(
            'METRICS_DELIVERABLE', None)
        self.METRICS_VERSION = kwargs.get(
            'METRICS_VERSION', None)
        self.MISMATCH_RATE = kwargs.get(
            'MISMATCH_RATE', None)
        self.MISMATCH_RATE_READ_1 = kwargs.get(
            'MISMATCH_RATE_READ_1', None)
        self.MISMATCH_RATE_READ_2 = kwargs.get(
            'MISMATCH_RATE_READ_2', None)
        self.PAIRED_END = kwargs.get(
            'PAIRED_END', None)
        self.PERCENT_ALIGNED_BASES = kwargs.get(
            'PERCENT_ALIGNED_BASES', None)
        self.PERCENT_ALIGNED_BASES_READ_1 = kwargs.get(
            'PERCENT_ALIGNED_BASES_READ_1', None)
        self.PERCENT_ALIGNED_BASES_READ_2 = kwargs.get(
            'PERCENT_ALIGNED_BASES_READ_2', None)
        self.PERCENT_ALIGNED_READS = kwargs.get(
            'PERCENT_ALIGNED_READS', None)
        self.PERCENT_ALIGNED_READ_1 = kwargs.get(
            'PERCENT_ALIGNED_READ_1', None)
        self.PERCENT_ALIGNED_READ_2 = kwargs.get(
            'PERCENT_ALIGNED_READ_2', None)
        self.PERCENT_AT_DROPOUT = kwargs.get(
            'PERCENT_AT_DROPOUT', None)
        self.PERCENT_DUPLICATE_ALIGNED_READS = kwargs.get(
            'PERCENT_DUPLICATE_ALIGNED_READS', None)
        self.PERCENT_DUPLICATE_PROPER_READ_PAIRS = kwargs.get(
            'PERCENT_DUPLICATE_PROPER_READ_PAIRS', None)
        self.PERCENT_GC_DROPOUT = kwargs.get(
            'PERCENT_GC_DROPOUT', None)
        self.PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS = kwargs.get(
            'PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS', None)
        self.PERCENT_OVERLAPPING_BASES = kwargs.get(
            'PERCENT_OVERLAPPING_BASES', None)
        self.PERCENT_Q25_BASES_READ_1 = kwargs.get(
            'PERCENT_Q25_BASES_READ_1', None)
        self.PERCENT_Q25_BASES_READ_2 = kwargs.get(
            'PERCENT_Q25_BASES_READ_2', None)
        self.PERCENT_Q30_BASES = kwargs.get(
            'PERCENT_Q30_BASES', None)
        self.PERCENT_Q30_BASES_READ_1 = kwargs.get(
            'PERCENT_Q30_BASES_READ_1', None)
        self.PERCENT_Q30_BASES_READ_2 = kwargs.get(
            'PERCENT_Q30_BASES_READ_2', None)
        self.PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES = kwargs.get(
            'PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES', None)
        self.PERCENT_SOFT_CLIPPED_BASES = kwargs.get(
            'PERCENT_SOFT_CLIPPED_BASES', None)
        self.Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES = kwargs.get(
            'Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES', None)
        self.READ_ENRICHMENT_AT_75_GC = kwargs.get(
            'READ_ENRICHMENT_AT_75_GC', None)
        self.READ_ENRICHMENT_AT_80_GC = kwargs.get(
            'READ_ENRICHMENT_AT_80_GC', None)
        self.REFERENCE_GENOME = kwargs.get(
            'REFERENCE_GENOME', None)
        self.RUN_FOLDER = kwargs.get(
            'RUN_FOLDER', None)
        self.SAMPLE_ID = kwargs.get(
            'SAMPLE_ID', None)
        self.SAMPLE_NAME = kwargs.get(
            'SAMPLE_NAME', None)
        self.TOTAL_ALIGNED_BASES = kwargs.get(
            'TOTAL_ALIGNED_BASES', None)
        self.TOTAL_ALIGNED_BASES_READ_1 = kwargs.get(
            'TOTAL_ALIGNED_BASES_READ_1', None)
        self.TOTAL_ALIGNED_BASES_READ_2 = kwargs.get(
            'TOTAL_ALIGNED_BASES_READ_2', None)
        self.TOTAL_ALIGNED_READS = kwargs.get(
            'TOTAL_ALIGNED_READS', None)
        self.TOTAL_ALIGNED_READ_1 = kwargs.get(
            'TOTAL_ALIGNED_READ_1', None)
        self.TOTAL_ALIGNED_READ_2 = kwargs.get(
            'TOTAL_ALIGNED_READ_2', None)
        self.TOTAL_ALIGNED_READ_PAIRS = kwargs.get(
            'TOTAL_ALIGNED_READ_PAIRS', None)
        self.TOTAL_DUPLICATE_ALIGNED_READS = kwargs.get(
            'TOTAL_DUPLICATE_ALIGNED_READS', None)
        self.TOTAL_DUPLICATE_PROPER_READ_PAIRS = kwargs.get(
            'TOTAL_DUPLICATE_PROPER_READ_PAIRS', None)
        self.TOTAL_MAPQ_GT_10_READS = kwargs.get(
            'TOTAL_MAPQ_GT_10_READS', None)
        self.TOTAL_PF_BASES = kwargs.get(
            'TOTAL_PF_BASES', None)
        self.TOTAL_PF_BASES_READ_1 = kwargs.get(
            'TOTAL_PF_BASES_READ_1', None)
        self.TOTAL_PF_BASES_READ_2 = kwargs.get(
            'TOTAL_PF_BASES_READ_2', None)
        self.TOTAL_PF_READS = kwargs.get(
            'TOTAL_PF_READS', None)
        self.TOTAL_PF_READ_1 = kwargs.get(
            'TOTAL_PF_READ_1', None)
        self.TOTAL_PF_READ_2 = kwargs.get(
            'TOTAL_PF_READ_2', None)
        self.TOTAL_PROPER_READ_PAIRS = kwargs.get(
            'TOTAL_PROPER_READ_PAIRS', None)
        self.UNIQUE_ALIGNED_READS = kwargs.get(
            'UNIQUE_ALIGNED_READS', None)


class IlluminaSummaryV1(ProtocolElement):
    """
    This is the summary provided by illumina for all V1 (old version)
    of their pipeline
    """
    _schemaSource = """
{"type": "record", "name": "IlluminaSummaryV1", "namespace": "org.gel.models.report.avro", "doc":
"", "fields": [{"name": "illumina_version", "type": {"type": "enum", "name": "IlluminaVersion",
"symbols": ["IlluminaSummaryV1", "IlluminaSummaryV2", "IlluminaSummaryV4",
"IlluminaSummaryCancerV2", "IlluminaSummaryCancerV4"]}}, {"name": "PERCENT_Q30_R1", "type":
"double"}, {"name": "PERCENT_Q30_R2", "type": "double"}, {"name": "PERCENT_ALIGNED_R1", "type":
"double"}, {"name": "INVERSIONCOUNT", "type": "double"}, {"name":
"DELETIONS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name": "PERCENT_ALIGNED_R2", "type":
"double"}, {"name": "INDELS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name": "STOPGAINEDINS",
"type": "double"}, {"name": "SYNONYMOUSSNVS", "type": "double"}, {"name": "SPLICESITEREGIONDEL",
"type": "double"}, {"name": "STOPLOSTSNVS", "type": "double"}, {"name": "SYNONYMOUSINS", "type":
"double"}, {"name": "SYNONYMOUSDEL", "type": "double"}, {"name": "NUMSNVSINCODINGREGIONS", "type":
"double"}, {"name": "STOPGAINEDSNVS", "type": "double"}, {"name": "SAMPLE_ID", "type": "string"},
{"name": "NUMDELINEXONS", "type": "double"}, {"name": "TANDEMDUPLICATIONPERCENTINGENES", "type":
"double"}, {"name": "SNVS_ALL", "type": "double"}, {"name": "CNVNUMBERINGENES", "type": "double"},
{"name": "CNVPERCENTINGENES", "type": "double"}, {"name": "NUMDELINGENES", "type": "double"},
{"name": "NUMSNVSINGENES", "type": "double"}, {"name": "INSERTIONS_PERCENT_FOUND_IN_DBSNP", "type":
"double"}, {"name": "SPLICESITEREGIONSNVS", "type": "double"}, {"name": "INSERTIONS", "type":
"double"}, {"name": "FRAGMENT_LENGTH_MIN", "type": "double"}, {"name": "STOPLOSTDEL", "type":
"double"}, {"name": "FRAGMENT_LENGTH_SD", "type": "double"}, {"name": "NONSYNONYMOUSINS", "type":
"double"}, {"name": "FRAGMENT_LENGTH_MAX", "type": "double"}, {"name": "FRAMESHIFTDEL", "type":
"double"}, {"name": "DELETIONPERCENTINGENES", "type": "double"}, {"name": "INDEL_HET_HOM_RATIO",
"type": "double"}, {"name": "UTRREGIONDEL", "type": "double"}, {"name": "RUNFOLDER", "type":
"string"}, {"name": "MATUREMIRNAINS", "type": "double"}, {"name": "INVERSIONNUMBERINGENES", "type":
"double"}, {"name": "NUMINSINCODINGREGIONS", "type": "double"}, {"name": "INSERTIONPERCENTINGENES",
"type": "double"}, {"name": "CALLABLE_AUTOSOMAL_FRACTION", "type": "double"}, {"name":
"NONSYNONYMOUSDEL", "type": "double"}, {"name": "FRAMESHIFTSNVS", "type": "double"}, {"name":
"SVSTATISTICSFLAG", "type": "string"}, {"name": "CNVCOUNT", "type": "double"}, {"name":
"NONSYNONYMOUSSNVS", "type": "double"}, {"name": "DELETIONCOUNT", "type": "double"}, {"name":
"CNVSTATISTICSFLAG", "type": "string"}, {"name": "INSERTIONNUMBERINGENES", "type": "double"},
{"name": "STOPGAINEDDEL", "type": "double"}, {"name": "MISMATCHRATE_R1", "type": "double"}, {"name":
"SNVS", "type": "double"}, {"name": "SNV_HET_HOM_RATIO", "type": "double"}, {"name":
"SPLICESITEREGIONINS", "type": "double"}, {"name": "NUMINSINEXONS", "type": "double"}, {"name":
"MISMATCHRATE_R2", "type": "double"}, {"name": "NUMDELINCODINGREGIONS", "type": "double"}, {"name":
"INSERTION_HET_HOM_RATIO", "type": "double"}, {"name": "NUMINSINGENES", "type": "double"}, {"name":
"SNV_TS_TV_RATIO", "type": "double"}, {"name": "TANDEMDUPLICATIONNUMBERINGENES", "type": "double"},
{"name": "SNVS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name": "UTRREGIONINS", "type":
"double"}, {"name": "MATUREMIRNASNVS", "type": "double"}, {"name": "DELETIONNUMBERINGENES", "type":
"double"}, {"name": "DELETIONS", "type": "double"}, {"name": "TOTALNUMBERINS", "type": "double"},
{"name": "TANDEMDUPLICATIONCOUNT", "type": "double"}, {"name": "PAIRED_END", "type": "string"},
{"name": "UTRREGIONSNVS", "type": "double"}, {"name": "INDELS", "type": "double"}, {"name":
"NUMSNVSINEXONS", "type": "double"}, {"name": "FRAMESHIFTINS", "type": "double"}, {"name":
"TOTALNUMBERSNVS", "type": "double"}, {"name": "DELETIONS_HET_HOM_RATIO", "type": "double"},
{"name": "FRAGMENT_LENGTH_MEDIAN", "type": "double"}, {"name": "REFERENCE_GENOME", "type":
"string"}, {"name": "SMALLVARIANTSTATISTICSFLAG", "type": "string"}, {"name": "TOTALNUMBERDEL",
"type": "double"}, {"name": "MATUREMIRNADEL", "type": "double"}, {"name": "INVERSIONPERCENTINGENES",
"type": "double"}, {"name": "STOPLOSTINS", "type": "double"}, {"name": "INSERTIONCOUNT", "type":
"double"}, {"name": "PERCENT_DUPLICATE_PAIRED_READS", "type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "CALLABLE_AUTOSOMAL_FRACTION",
        "CNVCOUNT",
        "CNVNUMBERINGENES",
        "CNVPERCENTINGENES",
        "CNVSTATISTICSFLAG",
        "DELETIONCOUNT",
        "DELETIONNUMBERINGENES",
        "DELETIONPERCENTINGENES",
        "DELETIONS",
        "DELETIONS_HET_HOM_RATIO",
        "DELETIONS_PERCENT_FOUND_IN_DBSNP",
        "FRAGMENT_LENGTH_MAX",
        "FRAGMENT_LENGTH_MEDIAN",
        "FRAGMENT_LENGTH_MIN",
        "FRAGMENT_LENGTH_SD",
        "FRAMESHIFTDEL",
        "FRAMESHIFTINS",
        "FRAMESHIFTSNVS",
        "INDELS",
        "INDELS_PERCENT_FOUND_IN_DBSNP",
        "INDEL_HET_HOM_RATIO",
        "INSERTIONCOUNT",
        "INSERTIONNUMBERINGENES",
        "INSERTIONPERCENTINGENES",
        "INSERTIONS",
        "INSERTIONS_PERCENT_FOUND_IN_DBSNP",
        "INSERTION_HET_HOM_RATIO",
        "INVERSIONCOUNT",
        "INVERSIONNUMBERINGENES",
        "INVERSIONPERCENTINGENES",
        "MATUREMIRNADEL",
        "MATUREMIRNAINS",
        "MATUREMIRNASNVS",
        "MISMATCHRATE_R1",
        "MISMATCHRATE_R2",
        "NONSYNONYMOUSDEL",
        "NONSYNONYMOUSINS",
        "NONSYNONYMOUSSNVS",
        "NUMDELINCODINGREGIONS",
        "NUMDELINEXONS",
        "NUMDELINGENES",
        "NUMINSINCODINGREGIONS",
        "NUMINSINEXONS",
        "NUMINSINGENES",
        "NUMSNVSINCODINGREGIONS",
        "NUMSNVSINEXONS",
        "NUMSNVSINGENES",
        "PAIRED_END",
        "PERCENT_ALIGNED_R1",
        "PERCENT_ALIGNED_R2",
        "PERCENT_DUPLICATE_PAIRED_READS",
        "PERCENT_Q30_R1",
        "PERCENT_Q30_R2",
        "REFERENCE_GENOME",
        "RUNFOLDER",
        "SAMPLE_ID",
        "SMALLVARIANTSTATISTICSFLAG",
        "SNVS",
        "SNVS_ALL",
        "SNVS_PERCENT_FOUND_IN_DBSNP",
        "SNV_HET_HOM_RATIO",
        "SNV_TS_TV_RATIO",
        "SPLICESITEREGIONDEL",
        "SPLICESITEREGIONINS",
        "SPLICESITEREGIONSNVS",
        "STOPGAINEDDEL",
        "STOPGAINEDINS",
        "STOPGAINEDSNVS",
        "STOPLOSTDEL",
        "STOPLOSTINS",
        "STOPLOSTSNVS",
        "SVSTATISTICSFLAG",
        "SYNONYMOUSDEL",
        "SYNONYMOUSINS",
        "SYNONYMOUSSNVS",
        "TANDEMDUPLICATIONCOUNT",
        "TANDEMDUPLICATIONNUMBERINGENES",
        "TANDEMDUPLICATIONPERCENTINGENES",
        "TOTALNUMBERDEL",
        "TOTALNUMBERINS",
        "TOTALNUMBERSNVS",
        "UTRREGIONDEL",
        "UTRREGIONINS",
        "UTRREGIONSNVS",
        "illumina_version",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'CALLABLE_AUTOSOMAL_FRACTION', 'CNVCOUNT', 'CNVNUMBERINGENES',
        'CNVPERCENTINGENES', 'CNVSTATISTICSFLAG', 'DELETIONCOUNT',
        'DELETIONNUMBERINGENES', 'DELETIONPERCENTINGENES',
        'DELETIONS', 'DELETIONS_HET_HOM_RATIO',
        'DELETIONS_PERCENT_FOUND_IN_DBSNP', 'FRAGMENT_LENGTH_MAX',
        'FRAGMENT_LENGTH_MEDIAN', 'FRAGMENT_LENGTH_MIN',
        'FRAGMENT_LENGTH_SD', 'FRAMESHIFTDEL', 'FRAMESHIFTINS',
        'FRAMESHIFTSNVS', 'INDELS', 'INDELS_PERCENT_FOUND_IN_DBSNP',
        'INDEL_HET_HOM_RATIO', 'INSERTIONCOUNT',
        'INSERTIONNUMBERINGENES', 'INSERTIONPERCENTINGENES',
        'INSERTIONS', 'INSERTIONS_PERCENT_FOUND_IN_DBSNP',
        'INSERTION_HET_HOM_RATIO', 'INVERSIONCOUNT',
        'INVERSIONNUMBERINGENES', 'INVERSIONPERCENTINGENES',
        'MATUREMIRNADEL', 'MATUREMIRNAINS', 'MATUREMIRNASNVS',
        'MISMATCHRATE_R1', 'MISMATCHRATE_R2', 'NONSYNONYMOUSDEL',
        'NONSYNONYMOUSINS', 'NONSYNONYMOUSSNVS',
        'NUMDELINCODINGREGIONS', 'NUMDELINEXONS', 'NUMDELINGENES',
        'NUMINSINCODINGREGIONS', 'NUMINSINEXONS', 'NUMINSINGENES',
        'NUMSNVSINCODINGREGIONS', 'NUMSNVSINEXONS', 'NUMSNVSINGENES',
        'PAIRED_END', 'PERCENT_ALIGNED_R1', 'PERCENT_ALIGNED_R2',
        'PERCENT_DUPLICATE_PAIRED_READS', 'PERCENT_Q30_R1',
        'PERCENT_Q30_R2', 'REFERENCE_GENOME', 'RUNFOLDER',
        'SAMPLE_ID', 'SMALLVARIANTSTATISTICSFLAG', 'SNVS', 'SNVS_ALL',
        'SNVS_PERCENT_FOUND_IN_DBSNP', 'SNV_HET_HOM_RATIO',
        'SNV_TS_TV_RATIO', 'SPLICESITEREGIONDEL',
        'SPLICESITEREGIONINS', 'SPLICESITEREGIONSNVS',
        'STOPGAINEDDEL', 'STOPGAINEDINS', 'STOPGAINEDSNVS',
        'STOPLOSTDEL', 'STOPLOSTINS', 'STOPLOSTSNVS',
        'SVSTATISTICSFLAG', 'SYNONYMOUSDEL', 'SYNONYMOUSINS',
        'SYNONYMOUSSNVS', 'TANDEMDUPLICATIONCOUNT',
        'TANDEMDUPLICATIONNUMBERINGENES',
        'TANDEMDUPLICATIONPERCENTINGENES', 'TOTALNUMBERDEL',
        'TOTALNUMBERINS', 'TOTALNUMBERSNVS', 'UTRREGIONDEL',
        'UTRREGIONINS', 'UTRREGIONSNVS', 'illumina_version'
    ]

    def __init__(self, **kwargs):
        self.CALLABLE_AUTOSOMAL_FRACTION = kwargs.get(
            'CALLABLE_AUTOSOMAL_FRACTION', None)
        self.CNVCOUNT = kwargs.get(
            'CNVCOUNT', None)
        self.CNVNUMBERINGENES = kwargs.get(
            'CNVNUMBERINGENES', None)
        self.CNVPERCENTINGENES = kwargs.get(
            'CNVPERCENTINGENES', None)
        self.CNVSTATISTICSFLAG = kwargs.get(
            'CNVSTATISTICSFLAG', None)
        self.DELETIONCOUNT = kwargs.get(
            'DELETIONCOUNT', None)
        self.DELETIONNUMBERINGENES = kwargs.get(
            'DELETIONNUMBERINGENES', None)
        self.DELETIONPERCENTINGENES = kwargs.get(
            'DELETIONPERCENTINGENES', None)
        self.DELETIONS = kwargs.get(
            'DELETIONS', None)
        self.DELETIONS_HET_HOM_RATIO = kwargs.get(
            'DELETIONS_HET_HOM_RATIO', None)
        self.DELETIONS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'DELETIONS_PERCENT_FOUND_IN_DBSNP', None)
        self.FRAGMENT_LENGTH_MAX = kwargs.get(
            'FRAGMENT_LENGTH_MAX', None)
        self.FRAGMENT_LENGTH_MEDIAN = kwargs.get(
            'FRAGMENT_LENGTH_MEDIAN', None)
        self.FRAGMENT_LENGTH_MIN = kwargs.get(
            'FRAGMENT_LENGTH_MIN', None)
        self.FRAGMENT_LENGTH_SD = kwargs.get(
            'FRAGMENT_LENGTH_SD', None)
        self.FRAMESHIFTDEL = kwargs.get(
            'FRAMESHIFTDEL', None)
        self.FRAMESHIFTINS = kwargs.get(
            'FRAMESHIFTINS', None)
        self.FRAMESHIFTSNVS = kwargs.get(
            'FRAMESHIFTSNVS', None)
        self.INDELS = kwargs.get(
            'INDELS', None)
        self.INDELS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'INDELS_PERCENT_FOUND_IN_DBSNP', None)
        self.INDEL_HET_HOM_RATIO = kwargs.get(
            'INDEL_HET_HOM_RATIO', None)
        self.INSERTIONCOUNT = kwargs.get(
            'INSERTIONCOUNT', None)
        self.INSERTIONNUMBERINGENES = kwargs.get(
            'INSERTIONNUMBERINGENES', None)
        self.INSERTIONPERCENTINGENES = kwargs.get(
            'INSERTIONPERCENTINGENES', None)
        self.INSERTIONS = kwargs.get(
            'INSERTIONS', None)
        self.INSERTIONS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'INSERTIONS_PERCENT_FOUND_IN_DBSNP', None)
        self.INSERTION_HET_HOM_RATIO = kwargs.get(
            'INSERTION_HET_HOM_RATIO', None)
        self.INVERSIONCOUNT = kwargs.get(
            'INVERSIONCOUNT', None)
        self.INVERSIONNUMBERINGENES = kwargs.get(
            'INVERSIONNUMBERINGENES', None)
        self.INVERSIONPERCENTINGENES = kwargs.get(
            'INVERSIONPERCENTINGENES', None)
        self.MATUREMIRNADEL = kwargs.get(
            'MATUREMIRNADEL', None)
        self.MATUREMIRNAINS = kwargs.get(
            'MATUREMIRNAINS', None)
        self.MATUREMIRNASNVS = kwargs.get(
            'MATUREMIRNASNVS', None)
        self.MISMATCHRATE_R1 = kwargs.get(
            'MISMATCHRATE_R1', None)
        self.MISMATCHRATE_R2 = kwargs.get(
            'MISMATCHRATE_R2', None)
        self.NONSYNONYMOUSDEL = kwargs.get(
            'NONSYNONYMOUSDEL', None)
        self.NONSYNONYMOUSINS = kwargs.get(
            'NONSYNONYMOUSINS', None)
        self.NONSYNONYMOUSSNVS = kwargs.get(
            'NONSYNONYMOUSSNVS', None)
        self.NUMDELINCODINGREGIONS = kwargs.get(
            'NUMDELINCODINGREGIONS', None)
        self.NUMDELINEXONS = kwargs.get(
            'NUMDELINEXONS', None)
        self.NUMDELINGENES = kwargs.get(
            'NUMDELINGENES', None)
        self.NUMINSINCODINGREGIONS = kwargs.get(
            'NUMINSINCODINGREGIONS', None)
        self.NUMINSINEXONS = kwargs.get(
            'NUMINSINEXONS', None)
        self.NUMINSINGENES = kwargs.get(
            'NUMINSINGENES', None)
        self.NUMSNVSINCODINGREGIONS = kwargs.get(
            'NUMSNVSINCODINGREGIONS', None)
        self.NUMSNVSINEXONS = kwargs.get(
            'NUMSNVSINEXONS', None)
        self.NUMSNVSINGENES = kwargs.get(
            'NUMSNVSINGENES', None)
        self.PAIRED_END = kwargs.get(
            'PAIRED_END', None)
        self.PERCENT_ALIGNED_R1 = kwargs.get(
            'PERCENT_ALIGNED_R1', None)
        self.PERCENT_ALIGNED_R2 = kwargs.get(
            'PERCENT_ALIGNED_R2', None)
        self.PERCENT_DUPLICATE_PAIRED_READS = kwargs.get(
            'PERCENT_DUPLICATE_PAIRED_READS', None)
        self.PERCENT_Q30_R1 = kwargs.get(
            'PERCENT_Q30_R1', None)
        self.PERCENT_Q30_R2 = kwargs.get(
            'PERCENT_Q30_R2', None)
        self.REFERENCE_GENOME = kwargs.get(
            'REFERENCE_GENOME', None)
        self.RUNFOLDER = kwargs.get(
            'RUNFOLDER', None)
        self.SAMPLE_ID = kwargs.get(
            'SAMPLE_ID', None)
        self.SMALLVARIANTSTATISTICSFLAG = kwargs.get(
            'SMALLVARIANTSTATISTICSFLAG', None)
        self.SNVS = kwargs.get(
            'SNVS', None)
        self.SNVS_ALL = kwargs.get(
            'SNVS_ALL', None)
        self.SNVS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'SNVS_PERCENT_FOUND_IN_DBSNP', None)
        self.SNV_HET_HOM_RATIO = kwargs.get(
            'SNV_HET_HOM_RATIO', None)
        self.SNV_TS_TV_RATIO = kwargs.get(
            'SNV_TS_TV_RATIO', None)
        self.SPLICESITEREGIONDEL = kwargs.get(
            'SPLICESITEREGIONDEL', None)
        self.SPLICESITEREGIONINS = kwargs.get(
            'SPLICESITEREGIONINS', None)
        self.SPLICESITEREGIONSNVS = kwargs.get(
            'SPLICESITEREGIONSNVS', None)
        self.STOPGAINEDDEL = kwargs.get(
            'STOPGAINEDDEL', None)
        self.STOPGAINEDINS = kwargs.get(
            'STOPGAINEDINS', None)
        self.STOPGAINEDSNVS = kwargs.get(
            'STOPGAINEDSNVS', None)
        self.STOPLOSTDEL = kwargs.get(
            'STOPLOSTDEL', None)
        self.STOPLOSTINS = kwargs.get(
            'STOPLOSTINS', None)
        self.STOPLOSTSNVS = kwargs.get(
            'STOPLOSTSNVS', None)
        self.SVSTATISTICSFLAG = kwargs.get(
            'SVSTATISTICSFLAG', None)
        self.SYNONYMOUSDEL = kwargs.get(
            'SYNONYMOUSDEL', None)
        self.SYNONYMOUSINS = kwargs.get(
            'SYNONYMOUSINS', None)
        self.SYNONYMOUSSNVS = kwargs.get(
            'SYNONYMOUSSNVS', None)
        self.TANDEMDUPLICATIONCOUNT = kwargs.get(
            'TANDEMDUPLICATIONCOUNT', None)
        self.TANDEMDUPLICATIONNUMBERINGENES = kwargs.get(
            'TANDEMDUPLICATIONNUMBERINGENES', None)
        self.TANDEMDUPLICATIONPERCENTINGENES = kwargs.get(
            'TANDEMDUPLICATIONPERCENTINGENES', None)
        self.TOTALNUMBERDEL = kwargs.get(
            'TOTALNUMBERDEL', None)
        self.TOTALNUMBERINS = kwargs.get(
            'TOTALNUMBERINS', None)
        self.TOTALNUMBERSNVS = kwargs.get(
            'TOTALNUMBERSNVS', None)
        self.UTRREGIONDEL = kwargs.get(
            'UTRREGIONDEL', None)
        self.UTRREGIONINS = kwargs.get(
            'UTRREGIONINS', None)
        self.UTRREGIONSNVS = kwargs.get(
            'UTRREGIONSNVS', None)
        self.illumina_version = kwargs.get(
            'illumina_version', None)


class IlluminaSummaryV2(ProtocolElement):
    """
    This is the summary provided by Illumina V2 germline samples
    """
    _schemaSource = """
{"type": "record", "name": "IlluminaSummaryV2", "namespace": "org.gel.models.report.avro", "doc":
"", "fields": [{"name": "illumina_version", "type": {"type": "enum", "name": "IlluminaVersion",
"symbols": ["IlluminaSummaryV1", "IlluminaSummaryV2", "IlluminaSummaryV4",
"IlluminaSummaryCancerV2", "IlluminaSummaryCancerV4"]}}, {"name": "STOP_LOST_SNVS", "type": "long"},
{"name": "SV_INSERTIONS_IN_GENES", "type": "long"}, {"name": "SAMPLE_ID", "type": "string"},
{"name": "DELETION_HET_HOM_RATIO", "type": "double"}, {"name": "STOP_GAINED_DELETIONS", "type":
"long"}, {"name": "INSERTIONS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name":
"FRAGMENT_LENGTH_SD", "type": "long"}, {"name": "PERCENT_Q30_BASES_READ_1", "type": "double"},
{"name": "PERCENT_Q30_BASES_READ_2", "type": "double"}, {"name": "STOP_GAINED_SNVS", "type":
"long"}, {"name": "CNV_IN_GENES", "type": "long"}, {"name": "TOTAL_PF_READS", "type": "long"},
{"name": "DELETIONS_IN_GENES", "type": "long"}, {"name": "DELETIONS_IN_SPLICE_SITE_REGIONS", "type":
"long"}, {"name": "PERCENT_Q30_BASES", "type": "double"}, {"name": "TOTAL_ALIGNED_BASES_READ_1",
"type": "long"}, {"name": "TOTAL_ALIGNED_BASES_READ_2", "type": "long"}, {"name":
"SV_INVERSIONS_IN_GENES", "type": "long"}, {"name": "SNV_TS_TV_RATIO", "type": "double"}, {"name":
"INSERTIONS_IN_MATURE_MIRNA", "type": "long"}, {"name": "DELETIONS", "type": "long"}, {"name":
"PERCENT_ALIGNED_BASES_READ_1", "type": "double"}, {"name": "INDELS_ALL", "type": "long"}, {"name":
"PERCENT_ALIGNED_BASES_READ_2", "type": "double"}, {"name": "NON_SYNONYMOUS_DELETIONS", "type":
"long"}, {"name": "TOTAL_PF_BASES", "type": "long"}, {"name": "PERCENT_DUPLICATE_PAIRED_READS",
"type": "double"}, {"name": "PERCENT_ALIGNED_READ_2", "type": "double"}, {"name":
"PERCENT_ALIGNED_READ_1", "type": "double"}, {"name": "NON_SYNONYMOUS_SNVS", "type": "long"},
{"name": "SV_PERCENT_DELETIONS_IN_GENES", "type": "double"}, {"name": "MISMATCH_RATE_READ_1",
"type": "double"}, {"name": "SV_DELETIONS_IN_GENES", "type": "long"}, {"name":
"DELETIONS_IN_CODING_REGIONS", "type": "long"}, {"name": "INSERTIONS_IN_SPLICE_SITE_REGIONS",
"type": "long"}, {"name": "SV_DELETIONS", "type": "long"}, {"name": "INSERTIONS", "type": "long"},
{"name": "FRAGMENT_LENGTH_MIN", "type": "long"}, {"name": "FRAGMENT_LENGTH_MAX", "type": "long"},
{"name": "RUNFOLDER", "type": "string"}, {"name": "SAMPLE_NAME", "type": "string"}, {"name":
"INSERTIONS_IN_GENES", "type": "long"}, {"name": "SV_PERCENT_INVERSIONS_IN_GENES", "type":
"double"}, {"name": "DELETIONS_IN_EXONS", "type": "long"}, {"name": "STOP_LOST_DELETIONS", "type":
"long"}, {"name": "SNVS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name":
"NON_SYNONYMOUS_INSERTIONS", "type": "long"}, {"name": "SNVS_IN_MATURE_MIRNA", "type": "long"},
{"name": "FRAMESHIFT_DELETIONS", "type": "long"}, {"name": "FRAGMENT_LENGTH_MEDIAN", "type":
"long"}, {"name": "SNVS_IN_UTR_REGIONS", "type": "long"}, {"name":
"SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES", "type": "double"}, {"name": "SV_INVERSIONS", "type":
"long"}, {"name": "SV_TANDEM_DUPLICATIONS_IN_GENES", "type": "long"}, {"name":
"DELETIONS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name": "SV_TANDEM_DUPLICATIONS", "type":
"long"}, {"name": "INDELS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name":
"SV_PERCENT_INSERTIONS_IN_GENES", "type": "double"}, {"name": "STOP_GAINED_INSERTIONS", "type":
"long"}, {"name": "MISMATCH_RATE_READ_2", "type": "double"}, {"name": "DELETIONS_ALL", "type":
"long"}, {"name": "TOTAL_PF_BASES_READ_2", "type": "long"}, {"name": "TOTAL_PF_BASES_READ_1",
"type": "long"}, {"name": "INDEL_HET_HOM_RATIO", "type": "double"}, {"name": "SYNONYMOUS_SNVS",
"type": "long"}, {"name": "DELETIONS_IN_MATURE_MIRNA", "type": "long"}, {"name":
"SNV_HET_HOM_RATIO", "type": "double"}, {"name": "INSERTIONS_IN_CODING_REGIONS", "type": "long"},
{"name": "SNVS_IN_GENES", "type": "long"}, {"name": "STOP_LOST_INSERTIONS", "type": "long"},
{"name": "PAIRED_END", "type": "boolean"}, {"name": "DIVERSITY", "type": "long"}, {"name":
"REFERENCE_GENOME", "type": "string"}, {"name": "SNVS_IN_EXONS", "type": "long"}, {"name":
"SNVS_IN_SPLICE_SITE_REGIONS", "type": "long"}, {"name": "FRAMESHIFT_INSERTIONS", "type": "long"},
{"name": "INSERTIONS_ALL", "type": "long"}, {"name": "SNVS_ALL", "type": "long"}, {"name":
"INSERTIONS_IN_UTR_REGIONS", "type": "long"}, {"name": "CNV_PERCENT_IN_GENES", "type": "double"},
{"name": "MEAN_COVERAGE", "type": "double"}, {"name": "CNV", "type": "long"}, {"name":
"SV_INSERTIONS", "type": "long"}, {"name": "SNVS_IN_CODING_REGIONS", "type": "long"}, {"name":
"SNVS", "type": "long"}, {"name": "INSERTION_HET_HOM_RATIO", "type": "double"}, {"name": "INDELS",
"type": "long"}, {"name": "TOTAL_ALIGNED_READ_2", "type": "long"}, {"name": "TOTAL_ALIGNED_READ_1",
"type": "long"}, {"name": "DELETIONS_IN_UTR_REGIONS", "type": "long"}, {"name":
"INSERTIONS_IN_EXONS", "type": "long"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "CNV",
        "CNV_IN_GENES",
        "CNV_PERCENT_IN_GENES",
        "DELETIONS",
        "DELETIONS_ALL",
        "DELETIONS_IN_CODING_REGIONS",
        "DELETIONS_IN_EXONS",
        "DELETIONS_IN_GENES",
        "DELETIONS_IN_MATURE_MIRNA",
        "DELETIONS_IN_SPLICE_SITE_REGIONS",
        "DELETIONS_IN_UTR_REGIONS",
        "DELETIONS_PERCENT_FOUND_IN_DBSNP",
        "DELETION_HET_HOM_RATIO",
        "DIVERSITY",
        "FRAGMENT_LENGTH_MAX",
        "FRAGMENT_LENGTH_MEDIAN",
        "FRAGMENT_LENGTH_MIN",
        "FRAGMENT_LENGTH_SD",
        "FRAMESHIFT_DELETIONS",
        "FRAMESHIFT_INSERTIONS",
        "INDELS",
        "INDELS_ALL",
        "INDELS_PERCENT_FOUND_IN_DBSNP",
        "INDEL_HET_HOM_RATIO",
        "INSERTIONS",
        "INSERTIONS_ALL",
        "INSERTIONS_IN_CODING_REGIONS",
        "INSERTIONS_IN_EXONS",
        "INSERTIONS_IN_GENES",
        "INSERTIONS_IN_MATURE_MIRNA",
        "INSERTIONS_IN_SPLICE_SITE_REGIONS",
        "INSERTIONS_IN_UTR_REGIONS",
        "INSERTIONS_PERCENT_FOUND_IN_DBSNP",
        "INSERTION_HET_HOM_RATIO",
        "MEAN_COVERAGE",
        "MISMATCH_RATE_READ_1",
        "MISMATCH_RATE_READ_2",
        "NON_SYNONYMOUS_DELETIONS",
        "NON_SYNONYMOUS_INSERTIONS",
        "NON_SYNONYMOUS_SNVS",
        "PAIRED_END",
        "PERCENT_ALIGNED_BASES_READ_1",
        "PERCENT_ALIGNED_BASES_READ_2",
        "PERCENT_ALIGNED_READ_1",
        "PERCENT_ALIGNED_READ_2",
        "PERCENT_DUPLICATE_PAIRED_READS",
        "PERCENT_Q30_BASES",
        "PERCENT_Q30_BASES_READ_1",
        "PERCENT_Q30_BASES_READ_2",
        "REFERENCE_GENOME",
        "RUNFOLDER",
        "SAMPLE_ID",
        "SAMPLE_NAME",
        "SNVS",
        "SNVS_ALL",
        "SNVS_IN_CODING_REGIONS",
        "SNVS_IN_EXONS",
        "SNVS_IN_GENES",
        "SNVS_IN_MATURE_MIRNA",
        "SNVS_IN_SPLICE_SITE_REGIONS",
        "SNVS_IN_UTR_REGIONS",
        "SNVS_PERCENT_FOUND_IN_DBSNP",
        "SNV_HET_HOM_RATIO",
        "SNV_TS_TV_RATIO",
        "STOP_GAINED_DELETIONS",
        "STOP_GAINED_INSERTIONS",
        "STOP_GAINED_SNVS",
        "STOP_LOST_DELETIONS",
        "STOP_LOST_INSERTIONS",
        "STOP_LOST_SNVS",
        "SV_DELETIONS",
        "SV_DELETIONS_IN_GENES",
        "SV_INSERTIONS",
        "SV_INSERTIONS_IN_GENES",
        "SV_INVERSIONS",
        "SV_INVERSIONS_IN_GENES",
        "SV_PERCENT_DELETIONS_IN_GENES",
        "SV_PERCENT_INSERTIONS_IN_GENES",
        "SV_PERCENT_INVERSIONS_IN_GENES",
        "SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES",
        "SV_TANDEM_DUPLICATIONS",
        "SV_TANDEM_DUPLICATIONS_IN_GENES",
        "SYNONYMOUS_SNVS",
        "TOTAL_ALIGNED_BASES_READ_1",
        "TOTAL_ALIGNED_BASES_READ_2",
        "TOTAL_ALIGNED_READ_1",
        "TOTAL_ALIGNED_READ_2",
        "TOTAL_PF_BASES",
        "TOTAL_PF_BASES_READ_1",
        "TOTAL_PF_BASES_READ_2",
        "TOTAL_PF_READS",
        "illumina_version",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'CNV', 'CNV_IN_GENES', 'CNV_PERCENT_IN_GENES', 'DELETIONS',
        'DELETIONS_ALL', 'DELETIONS_IN_CODING_REGIONS',
        'DELETIONS_IN_EXONS', 'DELETIONS_IN_GENES',
        'DELETIONS_IN_MATURE_MIRNA',
        'DELETIONS_IN_SPLICE_SITE_REGIONS',
        'DELETIONS_IN_UTR_REGIONS',
        'DELETIONS_PERCENT_FOUND_IN_DBSNP', 'DELETION_HET_HOM_RATIO',
        'DIVERSITY', 'FRAGMENT_LENGTH_MAX', 'FRAGMENT_LENGTH_MEDIAN',
        'FRAGMENT_LENGTH_MIN', 'FRAGMENT_LENGTH_SD',
        'FRAMESHIFT_DELETIONS', 'FRAMESHIFT_INSERTIONS', 'INDELS',
        'INDELS_ALL', 'INDELS_PERCENT_FOUND_IN_DBSNP',
        'INDEL_HET_HOM_RATIO', 'INSERTIONS', 'INSERTIONS_ALL',
        'INSERTIONS_IN_CODING_REGIONS', 'INSERTIONS_IN_EXONS',
        'INSERTIONS_IN_GENES', 'INSERTIONS_IN_MATURE_MIRNA',
        'INSERTIONS_IN_SPLICE_SITE_REGIONS',
        'INSERTIONS_IN_UTR_REGIONS',
        'INSERTIONS_PERCENT_FOUND_IN_DBSNP',
        'INSERTION_HET_HOM_RATIO', 'MEAN_COVERAGE',
        'MISMATCH_RATE_READ_1', 'MISMATCH_RATE_READ_2',
        'NON_SYNONYMOUS_DELETIONS', 'NON_SYNONYMOUS_INSERTIONS',
        'NON_SYNONYMOUS_SNVS', 'PAIRED_END',
        'PERCENT_ALIGNED_BASES_READ_1',
        'PERCENT_ALIGNED_BASES_READ_2', 'PERCENT_ALIGNED_READ_1',
        'PERCENT_ALIGNED_READ_2', 'PERCENT_DUPLICATE_PAIRED_READS',
        'PERCENT_Q30_BASES', 'PERCENT_Q30_BASES_READ_1',
        'PERCENT_Q30_BASES_READ_2', 'REFERENCE_GENOME', 'RUNFOLDER',
        'SAMPLE_ID', 'SAMPLE_NAME', 'SNVS', 'SNVS_ALL',
        'SNVS_IN_CODING_REGIONS', 'SNVS_IN_EXONS', 'SNVS_IN_GENES',
        'SNVS_IN_MATURE_MIRNA', 'SNVS_IN_SPLICE_SITE_REGIONS',
        'SNVS_IN_UTR_REGIONS', 'SNVS_PERCENT_FOUND_IN_DBSNP',
        'SNV_HET_HOM_RATIO', 'SNV_TS_TV_RATIO',
        'STOP_GAINED_DELETIONS', 'STOP_GAINED_INSERTIONS',
        'STOP_GAINED_SNVS', 'STOP_LOST_DELETIONS',
        'STOP_LOST_INSERTIONS', 'STOP_LOST_SNVS', 'SV_DELETIONS',
        'SV_DELETIONS_IN_GENES', 'SV_INSERTIONS',
        'SV_INSERTIONS_IN_GENES', 'SV_INVERSIONS',
        'SV_INVERSIONS_IN_GENES', 'SV_PERCENT_DELETIONS_IN_GENES',
        'SV_PERCENT_INSERTIONS_IN_GENES',
        'SV_PERCENT_INVERSIONS_IN_GENES',
        'SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES',
        'SV_TANDEM_DUPLICATIONS', 'SV_TANDEM_DUPLICATIONS_IN_GENES',
        'SYNONYMOUS_SNVS', 'TOTAL_ALIGNED_BASES_READ_1',
        'TOTAL_ALIGNED_BASES_READ_2', 'TOTAL_ALIGNED_READ_1',
        'TOTAL_ALIGNED_READ_2', 'TOTAL_PF_BASES',
        'TOTAL_PF_BASES_READ_1', 'TOTAL_PF_BASES_READ_2',
        'TOTAL_PF_READS', 'illumina_version'
    ]

    def __init__(self, **kwargs):
        self.CNV = kwargs.get(
            'CNV', None)
        self.CNV_IN_GENES = kwargs.get(
            'CNV_IN_GENES', None)
        self.CNV_PERCENT_IN_GENES = kwargs.get(
            'CNV_PERCENT_IN_GENES', None)
        self.DELETIONS = kwargs.get(
            'DELETIONS', None)
        self.DELETIONS_ALL = kwargs.get(
            'DELETIONS_ALL', None)
        self.DELETIONS_IN_CODING_REGIONS = kwargs.get(
            'DELETIONS_IN_CODING_REGIONS', None)
        self.DELETIONS_IN_EXONS = kwargs.get(
            'DELETIONS_IN_EXONS', None)
        self.DELETIONS_IN_GENES = kwargs.get(
            'DELETIONS_IN_GENES', None)
        self.DELETIONS_IN_MATURE_MIRNA = kwargs.get(
            'DELETIONS_IN_MATURE_MIRNA', None)
        self.DELETIONS_IN_SPLICE_SITE_REGIONS = kwargs.get(
            'DELETIONS_IN_SPLICE_SITE_REGIONS', None)
        self.DELETIONS_IN_UTR_REGIONS = kwargs.get(
            'DELETIONS_IN_UTR_REGIONS', None)
        self.DELETIONS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'DELETIONS_PERCENT_FOUND_IN_DBSNP', None)
        self.DELETION_HET_HOM_RATIO = kwargs.get(
            'DELETION_HET_HOM_RATIO', None)
        self.DIVERSITY = kwargs.get(
            'DIVERSITY', None)
        self.FRAGMENT_LENGTH_MAX = kwargs.get(
            'FRAGMENT_LENGTH_MAX', None)
        self.FRAGMENT_LENGTH_MEDIAN = kwargs.get(
            'FRAGMENT_LENGTH_MEDIAN', None)
        self.FRAGMENT_LENGTH_MIN = kwargs.get(
            'FRAGMENT_LENGTH_MIN', None)
        self.FRAGMENT_LENGTH_SD = kwargs.get(
            'FRAGMENT_LENGTH_SD', None)
        self.FRAMESHIFT_DELETIONS = kwargs.get(
            'FRAMESHIFT_DELETIONS', None)
        self.FRAMESHIFT_INSERTIONS = kwargs.get(
            'FRAMESHIFT_INSERTIONS', None)
        self.INDELS = kwargs.get(
            'INDELS', None)
        self.INDELS_ALL = kwargs.get(
            'INDELS_ALL', None)
        self.INDELS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'INDELS_PERCENT_FOUND_IN_DBSNP', None)
        self.INDEL_HET_HOM_RATIO = kwargs.get(
            'INDEL_HET_HOM_RATIO', None)
        self.INSERTIONS = kwargs.get(
            'INSERTIONS', None)
        self.INSERTIONS_ALL = kwargs.get(
            'INSERTIONS_ALL', None)
        self.INSERTIONS_IN_CODING_REGIONS = kwargs.get(
            'INSERTIONS_IN_CODING_REGIONS', None)
        self.INSERTIONS_IN_EXONS = kwargs.get(
            'INSERTIONS_IN_EXONS', None)
        self.INSERTIONS_IN_GENES = kwargs.get(
            'INSERTIONS_IN_GENES', None)
        self.INSERTIONS_IN_MATURE_MIRNA = kwargs.get(
            'INSERTIONS_IN_MATURE_MIRNA', None)
        self.INSERTIONS_IN_SPLICE_SITE_REGIONS = kwargs.get(
            'INSERTIONS_IN_SPLICE_SITE_REGIONS', None)
        self.INSERTIONS_IN_UTR_REGIONS = kwargs.get(
            'INSERTIONS_IN_UTR_REGIONS', None)
        self.INSERTIONS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'INSERTIONS_PERCENT_FOUND_IN_DBSNP', None)
        self.INSERTION_HET_HOM_RATIO = kwargs.get(
            'INSERTION_HET_HOM_RATIO', None)
        self.MEAN_COVERAGE = kwargs.get(
            'MEAN_COVERAGE', None)
        self.MISMATCH_RATE_READ_1 = kwargs.get(
            'MISMATCH_RATE_READ_1', None)
        self.MISMATCH_RATE_READ_2 = kwargs.get(
            'MISMATCH_RATE_READ_2', None)
        self.NON_SYNONYMOUS_DELETIONS = kwargs.get(
            'NON_SYNONYMOUS_DELETIONS', None)
        self.NON_SYNONYMOUS_INSERTIONS = kwargs.get(
            'NON_SYNONYMOUS_INSERTIONS', None)
        self.NON_SYNONYMOUS_SNVS = kwargs.get(
            'NON_SYNONYMOUS_SNVS', None)
        self.PAIRED_END = kwargs.get(
            'PAIRED_END', None)
        self.PERCENT_ALIGNED_BASES_READ_1 = kwargs.get(
            'PERCENT_ALIGNED_BASES_READ_1', None)
        self.PERCENT_ALIGNED_BASES_READ_2 = kwargs.get(
            'PERCENT_ALIGNED_BASES_READ_2', None)
        self.PERCENT_ALIGNED_READ_1 = kwargs.get(
            'PERCENT_ALIGNED_READ_1', None)
        self.PERCENT_ALIGNED_READ_2 = kwargs.get(
            'PERCENT_ALIGNED_READ_2', None)
        self.PERCENT_DUPLICATE_PAIRED_READS = kwargs.get(
            'PERCENT_DUPLICATE_PAIRED_READS', None)
        self.PERCENT_Q30_BASES = kwargs.get(
            'PERCENT_Q30_BASES', None)
        self.PERCENT_Q30_BASES_READ_1 = kwargs.get(
            'PERCENT_Q30_BASES_READ_1', None)
        self.PERCENT_Q30_BASES_READ_2 = kwargs.get(
            'PERCENT_Q30_BASES_READ_2', None)
        self.REFERENCE_GENOME = kwargs.get(
            'REFERENCE_GENOME', None)
        self.RUNFOLDER = kwargs.get(
            'RUNFOLDER', None)
        self.SAMPLE_ID = kwargs.get(
            'SAMPLE_ID', None)
        self.SAMPLE_NAME = kwargs.get(
            'SAMPLE_NAME', None)
        self.SNVS = kwargs.get(
            'SNVS', None)
        self.SNVS_ALL = kwargs.get(
            'SNVS_ALL', None)
        self.SNVS_IN_CODING_REGIONS = kwargs.get(
            'SNVS_IN_CODING_REGIONS', None)
        self.SNVS_IN_EXONS = kwargs.get(
            'SNVS_IN_EXONS', None)
        self.SNVS_IN_GENES = kwargs.get(
            'SNVS_IN_GENES', None)
        self.SNVS_IN_MATURE_MIRNA = kwargs.get(
            'SNVS_IN_MATURE_MIRNA', None)
        self.SNVS_IN_SPLICE_SITE_REGIONS = kwargs.get(
            'SNVS_IN_SPLICE_SITE_REGIONS', None)
        self.SNVS_IN_UTR_REGIONS = kwargs.get(
            'SNVS_IN_UTR_REGIONS', None)
        self.SNVS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'SNVS_PERCENT_FOUND_IN_DBSNP', None)
        self.SNV_HET_HOM_RATIO = kwargs.get(
            'SNV_HET_HOM_RATIO', None)
        self.SNV_TS_TV_RATIO = kwargs.get(
            'SNV_TS_TV_RATIO', None)
        self.STOP_GAINED_DELETIONS = kwargs.get(
            'STOP_GAINED_DELETIONS', None)
        self.STOP_GAINED_INSERTIONS = kwargs.get(
            'STOP_GAINED_INSERTIONS', None)
        self.STOP_GAINED_SNVS = kwargs.get(
            'STOP_GAINED_SNVS', None)
        self.STOP_LOST_DELETIONS = kwargs.get(
            'STOP_LOST_DELETIONS', None)
        self.STOP_LOST_INSERTIONS = kwargs.get(
            'STOP_LOST_INSERTIONS', None)
        self.STOP_LOST_SNVS = kwargs.get(
            'STOP_LOST_SNVS', None)
        self.SV_DELETIONS = kwargs.get(
            'SV_DELETIONS', None)
        self.SV_DELETIONS_IN_GENES = kwargs.get(
            'SV_DELETIONS_IN_GENES', None)
        self.SV_INSERTIONS = kwargs.get(
            'SV_INSERTIONS', None)
        self.SV_INSERTIONS_IN_GENES = kwargs.get(
            'SV_INSERTIONS_IN_GENES', None)
        self.SV_INVERSIONS = kwargs.get(
            'SV_INVERSIONS', None)
        self.SV_INVERSIONS_IN_GENES = kwargs.get(
            'SV_INVERSIONS_IN_GENES', None)
        self.SV_PERCENT_DELETIONS_IN_GENES = kwargs.get(
            'SV_PERCENT_DELETIONS_IN_GENES', None)
        self.SV_PERCENT_INSERTIONS_IN_GENES = kwargs.get(
            'SV_PERCENT_INSERTIONS_IN_GENES', None)
        self.SV_PERCENT_INVERSIONS_IN_GENES = kwargs.get(
            'SV_PERCENT_INVERSIONS_IN_GENES', None)
        self.SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES = kwargs.get(
            'SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES', None)
        self.SV_TANDEM_DUPLICATIONS = kwargs.get(
            'SV_TANDEM_DUPLICATIONS', None)
        self.SV_TANDEM_DUPLICATIONS_IN_GENES = kwargs.get(
            'SV_TANDEM_DUPLICATIONS_IN_GENES', None)
        self.SYNONYMOUS_SNVS = kwargs.get(
            'SYNONYMOUS_SNVS', None)
        self.TOTAL_ALIGNED_BASES_READ_1 = kwargs.get(
            'TOTAL_ALIGNED_BASES_READ_1', None)
        self.TOTAL_ALIGNED_BASES_READ_2 = kwargs.get(
            'TOTAL_ALIGNED_BASES_READ_2', None)
        self.TOTAL_ALIGNED_READ_1 = kwargs.get(
            'TOTAL_ALIGNED_READ_1', None)
        self.TOTAL_ALIGNED_READ_2 = kwargs.get(
            'TOTAL_ALIGNED_READ_2', None)
        self.TOTAL_PF_BASES = kwargs.get(
            'TOTAL_PF_BASES', None)
        self.TOTAL_PF_BASES_READ_1 = kwargs.get(
            'TOTAL_PF_BASES_READ_1', None)
        self.TOTAL_PF_BASES_READ_2 = kwargs.get(
            'TOTAL_PF_BASES_READ_2', None)
        self.TOTAL_PF_READS = kwargs.get(
            'TOTAL_PF_READS', None)
        self.illumina_version = kwargs.get(
            'illumina_version', None)


class IlluminaSummaryV4(ProtocolElement):
    """
    This is the summary provided by Illumina V4 germline samples in
    file SAMPLE_ID.summary.csv
    """
    _schemaSource = """
{"type": "record", "name": "IlluminaSummaryV4", "namespace": "org.gel.models.report.avro", "doc":
"", "fields": [{"name": "illumina_version", "type": {"type": "enum", "name": "IlluminaVersion",
"symbols": ["IlluminaSummaryV1", "IlluminaSummaryV2", "IlluminaSummaryV4",
"IlluminaSummaryCancerV2", "IlluminaSummaryCancerV4"]}}, {"name": "ARRAY_CONCORDANCE", "type":
["null", "double"]}, {"name": "ARRAY_CONCORDANCE_USAGE", "type": ["null", "double"]}, {"name":
"AUTOSOME_CALLABILITY", "type": "double"}, {"name": "AUTOSOME_COVERAGE_AT_10X", "type": "double"},
{"name": "AUTOSOME_COVERAGE_AT_15X", "type": "double"}, {"name": "AUTOSOME_COVERAGE_AT_1X", "type":
"double"}, {"name": "AUTOSOME_EXON_CALLABILITY", "type": "double"}, {"name":
"AUTOSOME_EXON_COVERAGE_AT_10X", "type": "double"}, {"name": "AUTOSOME_EXON_COVERAGE_AT_15X",
"type": "double"}, {"name": "AUTOSOME_EXON_COVERAGE_AT_1X", "type": "double"}, {"name":
"AUTOSOME_EXON_MEAN_COVERAGE", "type": "double"}, {"name": "AUTOSOME_MEAN_COVERAGE", "type":
"double"}, {"name": "CALLABILITY", "type": "double"}, {"name": "CNVS", "type": "long"}, {"name":
"CNVS_ALL", "type": "long"}, {"name": "CNVS_IN_GENES", "type": "long"}, {"name": "CONTAMINATION",
"type": "double"}, {"name": "COVERAGE_AT_10X", "type": "double"}, {"name": "COVERAGE_AT_15X",
"type": "double"}, {"name": "COVERAGE_AT_1X", "type": "double"}, {"name": "DELETIONS", "type":
"long"}, {"name": "DELETIONS_ALL", "type": "long"}, {"name": "DELETIONS_IN_CODING_REGIONS", "type":
"long"}, {"name": "DELETIONS_IN_EXONS", "type": "long"}, {"name": "DELETIONS_IN_GENES", "type":
"long"}, {"name": "DELETIONS_IN_MATURE_MIRNA", "type": "long"}, {"name":
"DELETIONS_IN_SPLICE_SITE_REGIONS", "type": "long"}, {"name": "DELETIONS_IN_UTR_REGIONS", "type":
"long"}, {"name": "DELETIONS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name":
"DELETION_HET_HOM_RATIO", "type": "double"}, {"name": "DIVERSITY", "type": "long"}, {"name":
"FRAGMENT_LENGTH_MAX", "type": "long"}, {"name": "FRAGMENT_LENGTH_MEDIAN", "type": "long"}, {"name":
"FRAGMENT_LENGTH_MIN", "type": "long"}, {"name": "FRAGMENT_LENGTH_SD", "type": "long"}, {"name":
"FRAMESHIFT_DELETIONS", "type": "long"}, {"name": "FRAMESHIFT_INSERTIONS", "type": "long"}, {"name":
"INDELS", "type": "long"}, {"name": "INDELS_ALL", "type": "long"}, {"name":
"INDELS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name": "INDEL_HET_HOM_RATIO", "type":
"double"}, {"name": "INSERTIONS", "type": "long"}, {"name": "INSERTIONS_ALL", "type": "long"},
{"name": "INSERTIONS_IN_CODING_REGIONS", "type": "long"}, {"name": "INSERTIONS_IN_EXONS", "type":
"long"}, {"name": "INSERTIONS_IN_GENES", "type": "long"}, {"name": "INSERTIONS_IN_MATURE_MIRNA",
"type": "long"}, {"name": "INSERTIONS_IN_SPLICE_SITE_REGIONS", "type": "long"}, {"name":
"INSERTIONS_IN_UTR_REGIONS", "type": "long"}, {"name": "INSERTIONS_PERCENT_FOUND_IN_DBSNP", "type":
"double"}, {"name": "INSERTION_HET_HOM_RATIO", "type": "double"}, {"name":
"MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X", "type": "double"}, {"name":
"MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X", "type": "double"}, {"name":
"MAPQ_GT_10_AUTOSOME_MEDIAN_COVERAGE", "type": "double"}, {"name": "MEAN_COVERAGE", "type":
"double"}, {"name": "MEDIAN_READ_LENGTH", "type": "string"}, {"name": "MEDIAN_READ_LENGTH_READ_1",
"type": "string"}, {"name": "MEDIAN_READ_LENGTH_READ_2", "type": "string"}, {"name":
"METRICS_DELIVERABLE", "type": "string"}, {"name": "METRICS_VERSION", "type": "string"}, {"name":
"MISMATCH_RATE", "type": "double"}, {"name": "MISMATCH_RATE_READ_1", "type": "double"}, {"name":
"MISMATCH_RATE_READ_2", "type": "double"}, {"name": "NON_SYNONYMOUS_DELETIONS", "type": "long"},
{"name": "NON_SYNONYMOUS_INSERTIONS", "type": "long"}, {"name": "NON_SYNONYMOUS_SNVS", "type":
"long"}, {"name": "PAIRED_END", "type": "boolean"}, {"name": "PERCENT_ALIGNED_BASES", "type":
"double"}, {"name": "PERCENT_ALIGNED_BASES_READ_1", "type": "double"}, {"name":
"PERCENT_ALIGNED_BASES_READ_2", "type": "double"}, {"name": "PERCENT_ALIGNED_READS", "type":
"double"}, {"name": "PERCENT_ALIGNED_READ_1", "type": "double"}, {"name": "PERCENT_ALIGNED_READ_2",
"type": "double"}, {"name": "PERCENT_AT_DROPOUT", "type": "double"}, {"name":
"PERCENT_CNVS_IN_GENES", "type": "double"}, {"name": "PERCENT_DUPLICATE_ALIGNED_READS", "type":
"double"}, {"name": "PERCENT_DUPLICATE_PROPER_READ_PAIRS", "type": "double"}, {"name":
"PERCENT_GC_DROPOUT", "type": "double"}, {"name": "PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS",
"type": "double"}, {"name": "PERCENT_OVERLAPPING_BASES", "type": "double"}, {"name":
"PERCENT_Q25_BASES_READ_1", "type": "double"}, {"name": "PERCENT_Q25_BASES_READ_2", "type":
"double"}, {"name": "PERCENT_Q30_BASES", "type": "double"}, {"name": "PERCENT_Q30_BASES_READ_1",
"type": "double"}, {"name": "PERCENT_Q30_BASES_READ_2", "type": "double"}, {"name":
"PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES", "type": "double"}, {"name":
"PERCENT_SOFT_CLIPPED_BASES", "type": "double"}, {"name":
"Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES", "type": "long"}, {"name":
"READ_ENRICHMENT_AT_75_GC", "type": "double"}, {"name": "READ_ENRICHMENT_AT_80_GC", "type":
"double"}, {"name": "REFERENCE_GENOME", "type": "string"}, {"name": "RUN_FOLDER", "type": "string"},
{"name": "SAMPLE_ID", "type": "string"}, {"name": "SAMPLE_NAME", "type": "string"}, {"name": "SNVS",
"type": "long"}, {"name": "SNVS_ALL", "type": "long"}, {"name": "SNVS_IN_CODING_REGIONS", "type":
"long"}, {"name": "SNVS_IN_EXONS", "type": "long"}, {"name": "SNVS_IN_GENES", "type": "long"},
{"name": "SNVS_IN_MATURE_MIRNA", "type": "long"}, {"name": "SNVS_IN_SPLICE_SITE_REGIONS", "type":
"long"}, {"name": "SNVS_IN_UTR_REGIONS", "type": "long"}, {"name": "SNVS_PERCENT_FOUND_IN_DBSNP",
"type": "double"}, {"name": "SNV_HET_HOM_RATIO", "type": "double"}, {"name": "SNV_TS_TV_RATIO",
"type": "double"}, {"name": "STOP_GAINED_DELETIONS", "type": "long"}, {"name":
"STOP_GAINED_INSERTIONS", "type": "long"}, {"name": "STOP_GAINED_SNVS", "type": "long"}, {"name":
"STOP_LOST_DELETIONS", "type": "long"}, {"name": "STOP_LOST_INSERTIONS", "type": "long"}, {"name":
"STOP_LOST_SNVS", "type": "long"}, {"name": "SV_BREAKENDS", "type": "long"}, {"name":
"SV_BREAKENDS_ALL", "type": "long"}, {"name": "SV_BREAKENDS_IN_GENES", "type": "long"}, {"name":
"SV_DELETIONS", "type": "long"}, {"name": "SV_DELETIONS_ALL", "type": "long"}, {"name":
"SV_DELETIONS_IN_GENES", "type": "long"}, {"name": "SV_INSERTIONS", "type": "long"}, {"name":
"SV_INSERTIONS_ALL", "type": "long"}, {"name": "SV_INSERTIONS_IN_GENES", "type": "long"}, {"name":
"SV_INVERSIONS", "type": "long"}, {"name": "SV_INVERSIONS_ALL", "type": "long"}, {"name":
"SV_INVERSIONS_IN_GENES", "type": "long"}, {"name": "SV_PERCENT_BREAKENDS_IN_GENES", "type":
"double"}, {"name": "SV_PERCENT_DELETIONS_IN_GENES", "type": "double"}, {"name":
"SV_PERCENT_INSERTIONS_IN_GENES", "type": "double"}, {"name": "SV_PERCENT_INVERSIONS_IN_GENES",
"type": "double"}, {"name": "SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES", "type": "double"}, {"name":
"SV_TANDEM_DUPLICATIONS", "type": "long"}, {"name": "SV_TANDEM_DUPLICATIONS_ALL", "type": "long"},
{"name": "SV_TANDEM_DUPLICATIONS_IN_GENES", "type": "long"}, {"name": "SYNONYMOUS_SNVS", "type":
"long"}, {"name": "TOTAL_ALIGNED_BASES", "type": "long"}, {"name": "TOTAL_ALIGNED_BASES_READ_1",
"type": "long"}, {"name": "TOTAL_ALIGNED_BASES_READ_2", "type": "long"}, {"name":
"TOTAL_ALIGNED_READS", "type": "long"}, {"name": "TOTAL_ALIGNED_READ_1", "type": "long"}, {"name":
"TOTAL_ALIGNED_READ_2", "type": "long"}, {"name": "TOTAL_ALIGNED_READ_PAIRS", "type": "long"},
{"name": "TOTAL_DUPLICATE_ALIGNED_READS", "type": "long"}, {"name":
"TOTAL_DUPLICATE_PROPER_READ_PAIRS", "type": "long"}, {"name": "TOTAL_MAPQ_GT_10_READS", "type":
"long"}, {"name": "TOTAL_PF_BASES", "type": "long"}, {"name": "TOTAL_PF_BASES_READ_1", "type":
"long"}, {"name": "TOTAL_PF_BASES_READ_2", "type": "long"}, {"name": "TOTAL_PF_READS", "type":
"long"}, {"name": "TOTAL_PF_READ_1", "type": "long"}, {"name": "TOTAL_PF_READ_2", "type": "long"},
{"name": "TOTAL_PROPER_READ_PAIRS", "type": "long"}, {"name": "UNIQUE_ALIGNED_READS", "type":
"long"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "ARRAY_CONCORDANCE",
        "ARRAY_CONCORDANCE_USAGE",
        "AUTOSOME_CALLABILITY",
        "AUTOSOME_COVERAGE_AT_10X",
        "AUTOSOME_COVERAGE_AT_15X",
        "AUTOSOME_COVERAGE_AT_1X",
        "AUTOSOME_EXON_CALLABILITY",
        "AUTOSOME_EXON_COVERAGE_AT_10X",
        "AUTOSOME_EXON_COVERAGE_AT_15X",
        "AUTOSOME_EXON_COVERAGE_AT_1X",
        "AUTOSOME_EXON_MEAN_COVERAGE",
        "AUTOSOME_MEAN_COVERAGE",
        "CALLABILITY",
        "CNVS",
        "CNVS_ALL",
        "CNVS_IN_GENES",
        "CONTAMINATION",
        "COVERAGE_AT_10X",
        "COVERAGE_AT_15X",
        "COVERAGE_AT_1X",
        "DELETIONS",
        "DELETIONS_ALL",
        "DELETIONS_IN_CODING_REGIONS",
        "DELETIONS_IN_EXONS",
        "DELETIONS_IN_GENES",
        "DELETIONS_IN_MATURE_MIRNA",
        "DELETIONS_IN_SPLICE_SITE_REGIONS",
        "DELETIONS_IN_UTR_REGIONS",
        "DELETIONS_PERCENT_FOUND_IN_DBSNP",
        "DELETION_HET_HOM_RATIO",
        "DIVERSITY",
        "FRAGMENT_LENGTH_MAX",
        "FRAGMENT_LENGTH_MEDIAN",
        "FRAGMENT_LENGTH_MIN",
        "FRAGMENT_LENGTH_SD",
        "FRAMESHIFT_DELETIONS",
        "FRAMESHIFT_INSERTIONS",
        "INDELS",
        "INDELS_ALL",
        "INDELS_PERCENT_FOUND_IN_DBSNP",
        "INDEL_HET_HOM_RATIO",
        "INSERTIONS",
        "INSERTIONS_ALL",
        "INSERTIONS_IN_CODING_REGIONS",
        "INSERTIONS_IN_EXONS",
        "INSERTIONS_IN_GENES",
        "INSERTIONS_IN_MATURE_MIRNA",
        "INSERTIONS_IN_SPLICE_SITE_REGIONS",
        "INSERTIONS_IN_UTR_REGIONS",
        "INSERTIONS_PERCENT_FOUND_IN_DBSNP",
        "INSERTION_HET_HOM_RATIO",
        "MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X",
        "MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X",
        "MAPQ_GT_10_AUTOSOME_MEDIAN_COVERAGE",
        "MEAN_COVERAGE",
        "MEDIAN_READ_LENGTH",
        "MEDIAN_READ_LENGTH_READ_1",
        "MEDIAN_READ_LENGTH_READ_2",
        "METRICS_DELIVERABLE",
        "METRICS_VERSION",
        "MISMATCH_RATE",
        "MISMATCH_RATE_READ_1",
        "MISMATCH_RATE_READ_2",
        "NON_SYNONYMOUS_DELETIONS",
        "NON_SYNONYMOUS_INSERTIONS",
        "NON_SYNONYMOUS_SNVS",
        "PAIRED_END",
        "PERCENT_ALIGNED_BASES",
        "PERCENT_ALIGNED_BASES_READ_1",
        "PERCENT_ALIGNED_BASES_READ_2",
        "PERCENT_ALIGNED_READS",
        "PERCENT_ALIGNED_READ_1",
        "PERCENT_ALIGNED_READ_2",
        "PERCENT_AT_DROPOUT",
        "PERCENT_CNVS_IN_GENES",
        "PERCENT_DUPLICATE_ALIGNED_READS",
        "PERCENT_DUPLICATE_PROPER_READ_PAIRS",
        "PERCENT_GC_DROPOUT",
        "PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS",
        "PERCENT_OVERLAPPING_BASES",
        "PERCENT_Q25_BASES_READ_1",
        "PERCENT_Q25_BASES_READ_2",
        "PERCENT_Q30_BASES",
        "PERCENT_Q30_BASES_READ_1",
        "PERCENT_Q30_BASES_READ_2",
        "PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES",
        "PERCENT_SOFT_CLIPPED_BASES",
        "Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES",
        "READ_ENRICHMENT_AT_75_GC",
        "READ_ENRICHMENT_AT_80_GC",
        "REFERENCE_GENOME",
        "RUN_FOLDER",
        "SAMPLE_ID",
        "SAMPLE_NAME",
        "SNVS",
        "SNVS_ALL",
        "SNVS_IN_CODING_REGIONS",
        "SNVS_IN_EXONS",
        "SNVS_IN_GENES",
        "SNVS_IN_MATURE_MIRNA",
        "SNVS_IN_SPLICE_SITE_REGIONS",
        "SNVS_IN_UTR_REGIONS",
        "SNVS_PERCENT_FOUND_IN_DBSNP",
        "SNV_HET_HOM_RATIO",
        "SNV_TS_TV_RATIO",
        "STOP_GAINED_DELETIONS",
        "STOP_GAINED_INSERTIONS",
        "STOP_GAINED_SNVS",
        "STOP_LOST_DELETIONS",
        "STOP_LOST_INSERTIONS",
        "STOP_LOST_SNVS",
        "SV_BREAKENDS",
        "SV_BREAKENDS_ALL",
        "SV_BREAKENDS_IN_GENES",
        "SV_DELETIONS",
        "SV_DELETIONS_ALL",
        "SV_DELETIONS_IN_GENES",
        "SV_INSERTIONS",
        "SV_INSERTIONS_ALL",
        "SV_INSERTIONS_IN_GENES",
        "SV_INVERSIONS",
        "SV_INVERSIONS_ALL",
        "SV_INVERSIONS_IN_GENES",
        "SV_PERCENT_BREAKENDS_IN_GENES",
        "SV_PERCENT_DELETIONS_IN_GENES",
        "SV_PERCENT_INSERTIONS_IN_GENES",
        "SV_PERCENT_INVERSIONS_IN_GENES",
        "SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES",
        "SV_TANDEM_DUPLICATIONS",
        "SV_TANDEM_DUPLICATIONS_ALL",
        "SV_TANDEM_DUPLICATIONS_IN_GENES",
        "SYNONYMOUS_SNVS",
        "TOTAL_ALIGNED_BASES",
        "TOTAL_ALIGNED_BASES_READ_1",
        "TOTAL_ALIGNED_BASES_READ_2",
        "TOTAL_ALIGNED_READS",
        "TOTAL_ALIGNED_READ_1",
        "TOTAL_ALIGNED_READ_2",
        "TOTAL_ALIGNED_READ_PAIRS",
        "TOTAL_DUPLICATE_ALIGNED_READS",
        "TOTAL_DUPLICATE_PROPER_READ_PAIRS",
        "TOTAL_MAPQ_GT_10_READS",
        "TOTAL_PF_BASES",
        "TOTAL_PF_BASES_READ_1",
        "TOTAL_PF_BASES_READ_2",
        "TOTAL_PF_READS",
        "TOTAL_PF_READ_1",
        "TOTAL_PF_READ_2",
        "TOTAL_PROPER_READ_PAIRS",
        "UNIQUE_ALIGNED_READS",
        "illumina_version",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'ARRAY_CONCORDANCE', 'ARRAY_CONCORDANCE_USAGE',
        'AUTOSOME_CALLABILITY', 'AUTOSOME_COVERAGE_AT_10X',
        'AUTOSOME_COVERAGE_AT_15X', 'AUTOSOME_COVERAGE_AT_1X',
        'AUTOSOME_EXON_CALLABILITY', 'AUTOSOME_EXON_COVERAGE_AT_10X',
        'AUTOSOME_EXON_COVERAGE_AT_15X',
        'AUTOSOME_EXON_COVERAGE_AT_1X', 'AUTOSOME_EXON_MEAN_COVERAGE',
        'AUTOSOME_MEAN_COVERAGE', 'CALLABILITY', 'CNVS', 'CNVS_ALL',
        'CNVS_IN_GENES', 'CONTAMINATION', 'COVERAGE_AT_10X',
        'COVERAGE_AT_15X', 'COVERAGE_AT_1X', 'DELETIONS',
        'DELETIONS_ALL', 'DELETIONS_IN_CODING_REGIONS',
        'DELETIONS_IN_EXONS', 'DELETIONS_IN_GENES',
        'DELETIONS_IN_MATURE_MIRNA',
        'DELETIONS_IN_SPLICE_SITE_REGIONS',
        'DELETIONS_IN_UTR_REGIONS',
        'DELETIONS_PERCENT_FOUND_IN_DBSNP', 'DELETION_HET_HOM_RATIO',
        'DIVERSITY', 'FRAGMENT_LENGTH_MAX', 'FRAGMENT_LENGTH_MEDIAN',
        'FRAGMENT_LENGTH_MIN', 'FRAGMENT_LENGTH_SD',
        'FRAMESHIFT_DELETIONS', 'FRAMESHIFT_INSERTIONS', 'INDELS',
        'INDELS_ALL', 'INDELS_PERCENT_FOUND_IN_DBSNP',
        'INDEL_HET_HOM_RATIO', 'INSERTIONS', 'INSERTIONS_ALL',
        'INSERTIONS_IN_CODING_REGIONS', 'INSERTIONS_IN_EXONS',
        'INSERTIONS_IN_GENES', 'INSERTIONS_IN_MATURE_MIRNA',
        'INSERTIONS_IN_SPLICE_SITE_REGIONS',
        'INSERTIONS_IN_UTR_REGIONS',
        'INSERTIONS_PERCENT_FOUND_IN_DBSNP',
        'INSERTION_HET_HOM_RATIO',
        'MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X',
        'MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X',
        'MAPQ_GT_10_AUTOSOME_MEDIAN_COVERAGE', 'MEAN_COVERAGE',
        'MEDIAN_READ_LENGTH', 'MEDIAN_READ_LENGTH_READ_1',
        'MEDIAN_READ_LENGTH_READ_2', 'METRICS_DELIVERABLE',
        'METRICS_VERSION', 'MISMATCH_RATE', 'MISMATCH_RATE_READ_1',
        'MISMATCH_RATE_READ_2', 'NON_SYNONYMOUS_DELETIONS',
        'NON_SYNONYMOUS_INSERTIONS', 'NON_SYNONYMOUS_SNVS',
        'PAIRED_END', 'PERCENT_ALIGNED_BASES',
        'PERCENT_ALIGNED_BASES_READ_1',
        'PERCENT_ALIGNED_BASES_READ_2', 'PERCENT_ALIGNED_READS',
        'PERCENT_ALIGNED_READ_1', 'PERCENT_ALIGNED_READ_2',
        'PERCENT_AT_DROPOUT', 'PERCENT_CNVS_IN_GENES',
        'PERCENT_DUPLICATE_ALIGNED_READS',
        'PERCENT_DUPLICATE_PROPER_READ_PAIRS', 'PERCENT_GC_DROPOUT',
        'PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS',
        'PERCENT_OVERLAPPING_BASES', 'PERCENT_Q25_BASES_READ_1',
        'PERCENT_Q25_BASES_READ_2', 'PERCENT_Q30_BASES',
        'PERCENT_Q30_BASES_READ_1', 'PERCENT_Q30_BASES_READ_2',
        'PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES',
        'PERCENT_SOFT_CLIPPED_BASES',
        'Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES',
        'READ_ENRICHMENT_AT_75_GC', 'READ_ENRICHMENT_AT_80_GC',
        'REFERENCE_GENOME', 'RUN_FOLDER', 'SAMPLE_ID', 'SAMPLE_NAME',
        'SNVS', 'SNVS_ALL', 'SNVS_IN_CODING_REGIONS', 'SNVS_IN_EXONS',
        'SNVS_IN_GENES', 'SNVS_IN_MATURE_MIRNA',
        'SNVS_IN_SPLICE_SITE_REGIONS', 'SNVS_IN_UTR_REGIONS',
        'SNVS_PERCENT_FOUND_IN_DBSNP', 'SNV_HET_HOM_RATIO',
        'SNV_TS_TV_RATIO', 'STOP_GAINED_DELETIONS',
        'STOP_GAINED_INSERTIONS', 'STOP_GAINED_SNVS',
        'STOP_LOST_DELETIONS', 'STOP_LOST_INSERTIONS',
        'STOP_LOST_SNVS', 'SV_BREAKENDS', 'SV_BREAKENDS_ALL',
        'SV_BREAKENDS_IN_GENES', 'SV_DELETIONS', 'SV_DELETIONS_ALL',
        'SV_DELETIONS_IN_GENES', 'SV_INSERTIONS', 'SV_INSERTIONS_ALL',
        'SV_INSERTIONS_IN_GENES', 'SV_INVERSIONS',
        'SV_INVERSIONS_ALL', 'SV_INVERSIONS_IN_GENES',
        'SV_PERCENT_BREAKENDS_IN_GENES',
        'SV_PERCENT_DELETIONS_IN_GENES',
        'SV_PERCENT_INSERTIONS_IN_GENES',
        'SV_PERCENT_INVERSIONS_IN_GENES',
        'SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES',
        'SV_TANDEM_DUPLICATIONS', 'SV_TANDEM_DUPLICATIONS_ALL',
        'SV_TANDEM_DUPLICATIONS_IN_GENES', 'SYNONYMOUS_SNVS',
        'TOTAL_ALIGNED_BASES', 'TOTAL_ALIGNED_BASES_READ_1',
        'TOTAL_ALIGNED_BASES_READ_2', 'TOTAL_ALIGNED_READS',
        'TOTAL_ALIGNED_READ_1', 'TOTAL_ALIGNED_READ_2',
        'TOTAL_ALIGNED_READ_PAIRS', 'TOTAL_DUPLICATE_ALIGNED_READS',
        'TOTAL_DUPLICATE_PROPER_READ_PAIRS', 'TOTAL_MAPQ_GT_10_READS',
        'TOTAL_PF_BASES', 'TOTAL_PF_BASES_READ_1',
        'TOTAL_PF_BASES_READ_2', 'TOTAL_PF_READS', 'TOTAL_PF_READ_1',
        'TOTAL_PF_READ_2', 'TOTAL_PROPER_READ_PAIRS',
        'UNIQUE_ALIGNED_READS', 'illumina_version'
    ]

    def __init__(self, **kwargs):
        self.ARRAY_CONCORDANCE = kwargs.get(
            'ARRAY_CONCORDANCE', None)
        self.ARRAY_CONCORDANCE_USAGE = kwargs.get(
            'ARRAY_CONCORDANCE_USAGE', None)
        self.AUTOSOME_CALLABILITY = kwargs.get(
            'AUTOSOME_CALLABILITY', None)
        self.AUTOSOME_COVERAGE_AT_10X = kwargs.get(
            'AUTOSOME_COVERAGE_AT_10X', None)
        self.AUTOSOME_COVERAGE_AT_15X = kwargs.get(
            'AUTOSOME_COVERAGE_AT_15X', None)
        self.AUTOSOME_COVERAGE_AT_1X = kwargs.get(
            'AUTOSOME_COVERAGE_AT_1X', None)
        self.AUTOSOME_EXON_CALLABILITY = kwargs.get(
            'AUTOSOME_EXON_CALLABILITY', None)
        self.AUTOSOME_EXON_COVERAGE_AT_10X = kwargs.get(
            'AUTOSOME_EXON_COVERAGE_AT_10X', None)
        self.AUTOSOME_EXON_COVERAGE_AT_15X = kwargs.get(
            'AUTOSOME_EXON_COVERAGE_AT_15X', None)
        self.AUTOSOME_EXON_COVERAGE_AT_1X = kwargs.get(
            'AUTOSOME_EXON_COVERAGE_AT_1X', None)
        self.AUTOSOME_EXON_MEAN_COVERAGE = kwargs.get(
            'AUTOSOME_EXON_MEAN_COVERAGE', None)
        self.AUTOSOME_MEAN_COVERAGE = kwargs.get(
            'AUTOSOME_MEAN_COVERAGE', None)
        self.CALLABILITY = kwargs.get(
            'CALLABILITY', None)
        self.CNVS = kwargs.get(
            'CNVS', None)
        self.CNVS_ALL = kwargs.get(
            'CNVS_ALL', None)
        self.CNVS_IN_GENES = kwargs.get(
            'CNVS_IN_GENES', None)
        self.CONTAMINATION = kwargs.get(
            'CONTAMINATION', None)
        self.COVERAGE_AT_10X = kwargs.get(
            'COVERAGE_AT_10X', None)
        self.COVERAGE_AT_15X = kwargs.get(
            'COVERAGE_AT_15X', None)
        self.COVERAGE_AT_1X = kwargs.get(
            'COVERAGE_AT_1X', None)
        self.DELETIONS = kwargs.get(
            'DELETIONS', None)
        self.DELETIONS_ALL = kwargs.get(
            'DELETIONS_ALL', None)
        self.DELETIONS_IN_CODING_REGIONS = kwargs.get(
            'DELETIONS_IN_CODING_REGIONS', None)
        self.DELETIONS_IN_EXONS = kwargs.get(
            'DELETIONS_IN_EXONS', None)
        self.DELETIONS_IN_GENES = kwargs.get(
            'DELETIONS_IN_GENES', None)
        self.DELETIONS_IN_MATURE_MIRNA = kwargs.get(
            'DELETIONS_IN_MATURE_MIRNA', None)
        self.DELETIONS_IN_SPLICE_SITE_REGIONS = kwargs.get(
            'DELETIONS_IN_SPLICE_SITE_REGIONS', None)
        self.DELETIONS_IN_UTR_REGIONS = kwargs.get(
            'DELETIONS_IN_UTR_REGIONS', None)
        self.DELETIONS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'DELETIONS_PERCENT_FOUND_IN_DBSNP', None)
        self.DELETION_HET_HOM_RATIO = kwargs.get(
            'DELETION_HET_HOM_RATIO', None)
        self.DIVERSITY = kwargs.get(
            'DIVERSITY', None)
        self.FRAGMENT_LENGTH_MAX = kwargs.get(
            'FRAGMENT_LENGTH_MAX', None)
        self.FRAGMENT_LENGTH_MEDIAN = kwargs.get(
            'FRAGMENT_LENGTH_MEDIAN', None)
        self.FRAGMENT_LENGTH_MIN = kwargs.get(
            'FRAGMENT_LENGTH_MIN', None)
        self.FRAGMENT_LENGTH_SD = kwargs.get(
            'FRAGMENT_LENGTH_SD', None)
        self.FRAMESHIFT_DELETIONS = kwargs.get(
            'FRAMESHIFT_DELETIONS', None)
        self.FRAMESHIFT_INSERTIONS = kwargs.get(
            'FRAMESHIFT_INSERTIONS', None)
        self.INDELS = kwargs.get(
            'INDELS', None)
        self.INDELS_ALL = kwargs.get(
            'INDELS_ALL', None)
        self.INDELS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'INDELS_PERCENT_FOUND_IN_DBSNP', None)
        self.INDEL_HET_HOM_RATIO = kwargs.get(
            'INDEL_HET_HOM_RATIO', None)
        self.INSERTIONS = kwargs.get(
            'INSERTIONS', None)
        self.INSERTIONS_ALL = kwargs.get(
            'INSERTIONS_ALL', None)
        self.INSERTIONS_IN_CODING_REGIONS = kwargs.get(
            'INSERTIONS_IN_CODING_REGIONS', None)
        self.INSERTIONS_IN_EXONS = kwargs.get(
            'INSERTIONS_IN_EXONS', None)
        self.INSERTIONS_IN_GENES = kwargs.get(
            'INSERTIONS_IN_GENES', None)
        self.INSERTIONS_IN_MATURE_MIRNA = kwargs.get(
            'INSERTIONS_IN_MATURE_MIRNA', None)
        self.INSERTIONS_IN_SPLICE_SITE_REGIONS = kwargs.get(
            'INSERTIONS_IN_SPLICE_SITE_REGIONS', None)
        self.INSERTIONS_IN_UTR_REGIONS = kwargs.get(
            'INSERTIONS_IN_UTR_REGIONS', None)
        self.INSERTIONS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'INSERTIONS_PERCENT_FOUND_IN_DBSNP', None)
        self.INSERTION_HET_HOM_RATIO = kwargs.get(
            'INSERTION_HET_HOM_RATIO', None)
        self.MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X = kwargs.get(
            'MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X', None)
        self.MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X = kwargs.get(
            'MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X', None)
        self.MAPQ_GT_10_AUTOSOME_MEDIAN_COVERAGE = kwargs.get(
            'MAPQ_GT_10_AUTOSOME_MEDIAN_COVERAGE', None)
        self.MEAN_COVERAGE = kwargs.get(
            'MEAN_COVERAGE', None)
        self.MEDIAN_READ_LENGTH = kwargs.get(
            'MEDIAN_READ_LENGTH', None)
        self.MEDIAN_READ_LENGTH_READ_1 = kwargs.get(
            'MEDIAN_READ_LENGTH_READ_1', None)
        self.MEDIAN_READ_LENGTH_READ_2 = kwargs.get(
            'MEDIAN_READ_LENGTH_READ_2', None)
        self.METRICS_DELIVERABLE = kwargs.get(
            'METRICS_DELIVERABLE', None)
        self.METRICS_VERSION = kwargs.get(
            'METRICS_VERSION', None)
        self.MISMATCH_RATE = kwargs.get(
            'MISMATCH_RATE', None)
        self.MISMATCH_RATE_READ_1 = kwargs.get(
            'MISMATCH_RATE_READ_1', None)
        self.MISMATCH_RATE_READ_2 = kwargs.get(
            'MISMATCH_RATE_READ_2', None)
        self.NON_SYNONYMOUS_DELETIONS = kwargs.get(
            'NON_SYNONYMOUS_DELETIONS', None)
        self.NON_SYNONYMOUS_INSERTIONS = kwargs.get(
            'NON_SYNONYMOUS_INSERTIONS', None)
        self.NON_SYNONYMOUS_SNVS = kwargs.get(
            'NON_SYNONYMOUS_SNVS', None)
        self.PAIRED_END = kwargs.get(
            'PAIRED_END', None)
        self.PERCENT_ALIGNED_BASES = kwargs.get(
            'PERCENT_ALIGNED_BASES', None)
        self.PERCENT_ALIGNED_BASES_READ_1 = kwargs.get(
            'PERCENT_ALIGNED_BASES_READ_1', None)
        self.PERCENT_ALIGNED_BASES_READ_2 = kwargs.get(
            'PERCENT_ALIGNED_BASES_READ_2', None)
        self.PERCENT_ALIGNED_READS = kwargs.get(
            'PERCENT_ALIGNED_READS', None)
        self.PERCENT_ALIGNED_READ_1 = kwargs.get(
            'PERCENT_ALIGNED_READ_1', None)
        self.PERCENT_ALIGNED_READ_2 = kwargs.get(
            'PERCENT_ALIGNED_READ_2', None)
        self.PERCENT_AT_DROPOUT = kwargs.get(
            'PERCENT_AT_DROPOUT', None)
        self.PERCENT_CNVS_IN_GENES = kwargs.get(
            'PERCENT_CNVS_IN_GENES', None)
        self.PERCENT_DUPLICATE_ALIGNED_READS = kwargs.get(
            'PERCENT_DUPLICATE_ALIGNED_READS', None)
        self.PERCENT_DUPLICATE_PROPER_READ_PAIRS = kwargs.get(
            'PERCENT_DUPLICATE_PROPER_READ_PAIRS', None)
        self.PERCENT_GC_DROPOUT = kwargs.get(
            'PERCENT_GC_DROPOUT', None)
        self.PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS = kwargs.get(
            'PERCENT_NON_SPATIAL_DUPLICATE_READ_PAIRS', None)
        self.PERCENT_OVERLAPPING_BASES = kwargs.get(
            'PERCENT_OVERLAPPING_BASES', None)
        self.PERCENT_Q25_BASES_READ_1 = kwargs.get(
            'PERCENT_Q25_BASES_READ_1', None)
        self.PERCENT_Q25_BASES_READ_2 = kwargs.get(
            'PERCENT_Q25_BASES_READ_2', None)
        self.PERCENT_Q30_BASES = kwargs.get(
            'PERCENT_Q30_BASES', None)
        self.PERCENT_Q30_BASES_READ_1 = kwargs.get(
            'PERCENT_Q30_BASES_READ_1', None)
        self.PERCENT_Q30_BASES_READ_2 = kwargs.get(
            'PERCENT_Q30_BASES_READ_2', None)
        self.PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES = kwargs.get(
            'PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES', None)
        self.PERCENT_SOFT_CLIPPED_BASES = kwargs.get(
            'PERCENT_SOFT_CLIPPED_BASES', None)
        self.Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES = kwargs.get(
            'Q30_BASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES', None)
        self.READ_ENRICHMENT_AT_75_GC = kwargs.get(
            'READ_ENRICHMENT_AT_75_GC', None)
        self.READ_ENRICHMENT_AT_80_GC = kwargs.get(
            'READ_ENRICHMENT_AT_80_GC', None)
        self.REFERENCE_GENOME = kwargs.get(
            'REFERENCE_GENOME', None)
        self.RUN_FOLDER = kwargs.get(
            'RUN_FOLDER', None)
        self.SAMPLE_ID = kwargs.get(
            'SAMPLE_ID', None)
        self.SAMPLE_NAME = kwargs.get(
            'SAMPLE_NAME', None)
        self.SNVS = kwargs.get(
            'SNVS', None)
        self.SNVS_ALL = kwargs.get(
            'SNVS_ALL', None)
        self.SNVS_IN_CODING_REGIONS = kwargs.get(
            'SNVS_IN_CODING_REGIONS', None)
        self.SNVS_IN_EXONS = kwargs.get(
            'SNVS_IN_EXONS', None)
        self.SNVS_IN_GENES = kwargs.get(
            'SNVS_IN_GENES', None)
        self.SNVS_IN_MATURE_MIRNA = kwargs.get(
            'SNVS_IN_MATURE_MIRNA', None)
        self.SNVS_IN_SPLICE_SITE_REGIONS = kwargs.get(
            'SNVS_IN_SPLICE_SITE_REGIONS', None)
        self.SNVS_IN_UTR_REGIONS = kwargs.get(
            'SNVS_IN_UTR_REGIONS', None)
        self.SNVS_PERCENT_FOUND_IN_DBSNP = kwargs.get(
            'SNVS_PERCENT_FOUND_IN_DBSNP', None)
        self.SNV_HET_HOM_RATIO = kwargs.get(
            'SNV_HET_HOM_RATIO', None)
        self.SNV_TS_TV_RATIO = kwargs.get(
            'SNV_TS_TV_RATIO', None)
        self.STOP_GAINED_DELETIONS = kwargs.get(
            'STOP_GAINED_DELETIONS', None)
        self.STOP_GAINED_INSERTIONS = kwargs.get(
            'STOP_GAINED_INSERTIONS', None)
        self.STOP_GAINED_SNVS = kwargs.get(
            'STOP_GAINED_SNVS', None)
        self.STOP_LOST_DELETIONS = kwargs.get(
            'STOP_LOST_DELETIONS', None)
        self.STOP_LOST_INSERTIONS = kwargs.get(
            'STOP_LOST_INSERTIONS', None)
        self.STOP_LOST_SNVS = kwargs.get(
            'STOP_LOST_SNVS', None)
        self.SV_BREAKENDS = kwargs.get(
            'SV_BREAKENDS', None)
        self.SV_BREAKENDS_ALL = kwargs.get(
            'SV_BREAKENDS_ALL', None)
        self.SV_BREAKENDS_IN_GENES = kwargs.get(
            'SV_BREAKENDS_IN_GENES', None)
        self.SV_DELETIONS = kwargs.get(
            'SV_DELETIONS', None)
        self.SV_DELETIONS_ALL = kwargs.get(
            'SV_DELETIONS_ALL', None)
        self.SV_DELETIONS_IN_GENES = kwargs.get(
            'SV_DELETIONS_IN_GENES', None)
        self.SV_INSERTIONS = kwargs.get(
            'SV_INSERTIONS', None)
        self.SV_INSERTIONS_ALL = kwargs.get(
            'SV_INSERTIONS_ALL', None)
        self.SV_INSERTIONS_IN_GENES = kwargs.get(
            'SV_INSERTIONS_IN_GENES', None)
        self.SV_INVERSIONS = kwargs.get(
            'SV_INVERSIONS', None)
        self.SV_INVERSIONS_ALL = kwargs.get(
            'SV_INVERSIONS_ALL', None)
        self.SV_INVERSIONS_IN_GENES = kwargs.get(
            'SV_INVERSIONS_IN_GENES', None)
        self.SV_PERCENT_BREAKENDS_IN_GENES = kwargs.get(
            'SV_PERCENT_BREAKENDS_IN_GENES', None)
        self.SV_PERCENT_DELETIONS_IN_GENES = kwargs.get(
            'SV_PERCENT_DELETIONS_IN_GENES', None)
        self.SV_PERCENT_INSERTIONS_IN_GENES = kwargs.get(
            'SV_PERCENT_INSERTIONS_IN_GENES', None)
        self.SV_PERCENT_INVERSIONS_IN_GENES = kwargs.get(
            'SV_PERCENT_INVERSIONS_IN_GENES', None)
        self.SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES = kwargs.get(
            'SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES', None)
        self.SV_TANDEM_DUPLICATIONS = kwargs.get(
            'SV_TANDEM_DUPLICATIONS', None)
        self.SV_TANDEM_DUPLICATIONS_ALL = kwargs.get(
            'SV_TANDEM_DUPLICATIONS_ALL', None)
        self.SV_TANDEM_DUPLICATIONS_IN_GENES = kwargs.get(
            'SV_TANDEM_DUPLICATIONS_IN_GENES', None)
        self.SYNONYMOUS_SNVS = kwargs.get(
            'SYNONYMOUS_SNVS', None)
        self.TOTAL_ALIGNED_BASES = kwargs.get(
            'TOTAL_ALIGNED_BASES', None)
        self.TOTAL_ALIGNED_BASES_READ_1 = kwargs.get(
            'TOTAL_ALIGNED_BASES_READ_1', None)
        self.TOTAL_ALIGNED_BASES_READ_2 = kwargs.get(
            'TOTAL_ALIGNED_BASES_READ_2', None)
        self.TOTAL_ALIGNED_READS = kwargs.get(
            'TOTAL_ALIGNED_READS', None)
        self.TOTAL_ALIGNED_READ_1 = kwargs.get(
            'TOTAL_ALIGNED_READ_1', None)
        self.TOTAL_ALIGNED_READ_2 = kwargs.get(
            'TOTAL_ALIGNED_READ_2', None)
        self.TOTAL_ALIGNED_READ_PAIRS = kwargs.get(
            'TOTAL_ALIGNED_READ_PAIRS', None)
        self.TOTAL_DUPLICATE_ALIGNED_READS = kwargs.get(
            'TOTAL_DUPLICATE_ALIGNED_READS', None)
        self.TOTAL_DUPLICATE_PROPER_READ_PAIRS = kwargs.get(
            'TOTAL_DUPLICATE_PROPER_READ_PAIRS', None)
        self.TOTAL_MAPQ_GT_10_READS = kwargs.get(
            'TOTAL_MAPQ_GT_10_READS', None)
        self.TOTAL_PF_BASES = kwargs.get(
            'TOTAL_PF_BASES', None)
        self.TOTAL_PF_BASES_READ_1 = kwargs.get(
            'TOTAL_PF_BASES_READ_1', None)
        self.TOTAL_PF_BASES_READ_2 = kwargs.get(
            'TOTAL_PF_BASES_READ_2', None)
        self.TOTAL_PF_READS = kwargs.get(
            'TOTAL_PF_READS', None)
        self.TOTAL_PF_READ_1 = kwargs.get(
            'TOTAL_PF_READ_1', None)
        self.TOTAL_PF_READ_2 = kwargs.get(
            'TOTAL_PF_READ_2', None)
        self.TOTAL_PROPER_READ_PAIRS = kwargs.get(
            'TOTAL_PROPER_READ_PAIRS', None)
        self.UNIQUE_ALIGNED_READS = kwargs.get(
            'UNIQUE_ALIGNED_READS', None)
        self.illumina_version = kwargs.get(
            'illumina_version', None)


class IlluminaVersion(object):
    """
    No documentation
    """
    IlluminaSummaryV1 = "IlluminaSummaryV1"
    IlluminaSummaryV2 = "IlluminaSummaryV2"
    IlluminaSummaryV4 = "IlluminaSummaryV4"
    IlluminaSummaryCancerV2 = "IlluminaSummaryCancerV2"
    IlluminaSummaryCancerV4 = "IlluminaSummaryCancerV4"

    def __hash__(self):
        return str(self).__hash__()


class InbreedingCoefficient(ProtocolElement):
    """
    Inbreeding coefficient
    """
    _schemaSource = """
{"type": "record", "name": "InbreedingCoefficient", "namespace": "org.gel.models.report.avro",
"doc": "", "fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name": "program", "type":
"string", "doc": ""}, {"name": "version", "type": "string", "doc": ""}, {"name": "estimationMethod",
"type": "string", "doc": ""}, {"name": "coefficient", "type": "double", "doc": ""}, {"name":
"standardError", "type": ["null", "double"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "coefficient",
        "estimationMethod",
        "program",
        "sampleId",
        "standardError",
        "version",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'coefficient', 'estimationMethod', 'program', 'sampleId',
        'standardError', 'version'
    ]

    def __init__(self, **kwargs):
        self.coefficient = kwargs.get(
            'coefficient', None)
        self.estimationMethod = kwargs.get(
            'estimationMethod', None)
        self.program = kwargs.get(
            'program', None)
        self.sampleId = kwargs.get(
            'sampleId', None)
        self.standardError = kwargs.get(
            'standardError', None)
        self.version = kwargs.get(
            'version', None)


class InbreedingCoefficientEstimates(ProtocolElement):
    """
    Inbreeding coefficient estimates
    """
    _schemaSource = """
{"type": "record", "name": "InbreedingCoefficientEstimates", "namespace":
"org.gel.models.report.avro", "doc": "", "fields": [{"name": "FID", "type": "string"}, {"name":
"IID", "type": "string"}, {"name": "O_HOM", "type": "double"}, {"name": "E_HOM", "type": "double"},
{"name": "N_NM", "type": "double"}, {"name": "F", "type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "E_HOM",
        "F",
        "FID",
        "IID",
        "N_NM",
        "O_HOM",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'E_HOM', 'F', 'FID', 'IID', 'N_NM', 'O_HOM'
    ]

    def __init__(self, **kwargs):
        self.E_HOM = kwargs.get(
            'E_HOM', None)
        self.F = kwargs.get(
            'F', None)
        self.FID = kwargs.get(
            'FID', None)
        self.IID = kwargs.get(
            'IID', None)
        self.N_NM = kwargs.get(
            'N_NM', None)
        self.O_HOM = kwargs.get(
            'O_HOM', None)


class IndividualState(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "IndividualState", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "state", "type": {"type": "enum", "name": "State", "symbols": ["ready", "pending", "hold",
"fail", "caution", "blocked"]}}, {"name": "reason", "type": ["null", {"type": "enum", "name":
"Reason", "symbols": ["duplicate", "consent", "pedigree", "contamination", "quality", "plinksex",
"inbreedingcoefficient", "in_qc"]}]}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "reason",
        "state",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'reason', 'state'
    ]

    def __init__(self, **kwargs):
        self.reason = kwargs.get(
            'reason', None)
        self.state = kwargs.get(
            'state', None)


class IndividualTests(ProtocolElement):
    """
    This is the master state for this sample, for example
    caution,quality could be used to say that a sample under this
    individual has quality issues.  See sample level for full details
    """
    _schemaSource = """
{"type": "record", "name": "IndividualTests", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "plinksex", "type": "boolean"}, {"name": "inbreedingcoefficient", "type":
"boolean"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "inbreedingcoefficient",
        "plinksex",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'inbreedingcoefficient', 'plinksex'
    ]

    def __init__(self, **kwargs):
        self.inbreedingcoefficient = kwargs.get(
            'inbreedingcoefficient', None)
        self.plinksex = kwargs.get(
            'plinksex', None)


class InsertSizeGel(ProtocolElement):
    """
    GEL Insert size calculation
    """
    _schemaSource = """
{"type": "record", "name": "InsertSizeGel", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "median_inward", "type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "median_inward",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'median_inward'
    ]

    def __init__(self, **kwargs):
        self.median_inward = kwargs.get(
            'median_inward', None)


class InterpretationData(ProtocolElement):
    """
    Represents the set of all interpretation data (excluding file
    contents) to be stored in MDT for     one TieringResult.
    Semantic restrictions (not automatically verifiable):         -
    All InterpretedGenomesRD in interpretationResults refer to the
    TieringResult tieringResult.         - All InterpretedGenomesRD in
    interpretationResults have passed the QC stage and have been
    approved by the originating GMCs
    """
    _schemaSource = """
{"type": "record", "name": "InterpretationData", "namespace": "org.gel.models.report.avro", "doc":
"", "fields": [{"name": "tieringResult", "type": {"type": "record", "name": "TieringResult", "doc":
"", "fields": [{"name": "versionControl", "type": {"type": "record", "name": "VersionControl",
"fields": [{"name": "GitVersionControl", "type": "string", "doc": "", "default": "3.0.0"}]}, "doc":
""}, {"name": "genomeAssemblyVersion", "type": "string", "doc": "", "default": "GRCh37.p13"},
{"name": "cellbaseVersion", "type": "string", "doc": "", "default": "4.0"}, {"name": "workspace",
"type": {"type": "array", "items": "string"}, "doc": ""}, {"name": "BAMs", "type": {"type": "array",
"items": {"type": "record", "name": "File", "doc": "", "fields": [{"name": "SampleId", "type":
["null", "string", {"type": "array", "items": "string"}], "doc": ""}, {"name": "URIFile", "type":
"string", "doc": ""}, {"name": "fileType", "type": {"type": "enum", "name": "FileType", "symbols":
["BAM", "gVCF", "VCF_small", "VCF_somatic_small", "VCF_CNV", "VCF_somatic_CNV", "VCF_SV",
"VCF_somatic_SV", "VCF_SV_CNV", "SVG", "ANN", "BigWig", "MD5Sum", "ROH", "OTHER"]}}, {"name":
"md5Sum", "type": ["null", "File"]}]}}, "doc": ""}, {"name": "VCFs", "type": {"type": "array",
"items": "File"}, "doc": ""}, {"name": "bigWigs", "type": ["null", {"type": "array", "items":
"File"}], "doc": ""}, {"name": "pedigreeDiagram", "type": ["null", "File"], "doc": ""}, {"name":
"annotationFile", "type": ["null", "File"], "doc": ""}, {"name": "otherFiles", "type": ["null",
{"type": "map", "values": "File"}], "doc": ""}, {"name": "pedigree", "type": {"type": "record",
"name": "Pedigree", "doc": "", "fields": [{"name": "versionControl", "type": "VersionControl",
"doc": ""}, {"name": "gelFamilyId", "type": "string", "doc": ""}, {"name": "participants", "type":
{"type": "array", "items": {"type": "record", "name": "RDParticipant", "doc": "", "fields":
[{"name": "versionControl", "type": "VersionControl", "doc": ""}, {"name": "pedigreeId", "type":
"int", "doc": ""}, {"name": "isProband", "type": "boolean", "doc": ""}, {"name": "gelId", "type":
["null", "string"], "doc": ""}, {"name": "gelFamilyId", "type": "string", "doc": ""}, {"name":
"gelSuperFamilyId", "type": ["null", "string"], "doc": ""}, {"name": "sex", "type": {"type": "enum",
"name": "Sex", "doc": "", "symbols": ["male", "female", "unknown", "undetermined"]}, "doc": ""},
{"name": "personKaryotipicSex", "type": ["null", {"type": "enum", "name": "PersonKaryotipicSex",
"doc": "", "symbols": ["unknown", "XX", "XY", "XO", "XXY", "XXX", "XXYY", "XXXY", "XXXX", "XYY",
"other"]}], "doc": ""}, {"name": "yearOfBirth", "type": ["null", "string"], "doc": ""}, {"name":
"fatherId", "type": ["null", "int"], "doc": ""}, {"name": "motherId", "type": ["null", "int"],
"doc": ""}, {"name": "superFatherId", "type": ["null", "int"], "doc": ""}, {"name": "superMotherId",
"type": ["null", "int"], "doc": ""}, {"name": "twinGroup", "type": ["null", "int"], "doc": ""},
{"name": "monozygotic", "type": ["null", {"type": "enum", "name": "TernaryOption", "doc": "",
"symbols": ["yes", "no", "unknown"]}], "doc": ""}, {"name": "adoptedStatus", "type": {"type":
"enum", "name": "AdoptedStatus", "doc": "", "symbols": ["not_adopted", "adoptedin", "adoptedout"]},
"doc": ""}, {"name": "lifeStatus", "type": {"type": "enum", "name": "LifeStatus", "doc": "",
"symbols": ["alive", "aborted", "deceased", "unborn", "stillborn", "miscarriage"]}, "doc": ""},
{"name": "consanguineousParents", "type": "TernaryOption", "doc": ""}, {"name":
"consanguineousPopulation", "type": ["null", "string"], "doc": ""}, {"name": "affectionStatus",
"type": {"type": "enum", "name": "AffectionStatus", "doc": "", "symbols": ["unaffected", "affected",
"unknown"]}, "doc": ""}, {"name": "disorderList", "type": {"type": "array", "items": {"type":
"record", "name": "Disorder", "doc": "", "fields": [{"name": "diseaseGroup", "type": ["null",
"string"], "doc": ""}, {"name": "diseaseSubGroup", "type": ["null", "string"], "doc": ""}, {"name":
"specificDisease", "type": ["null", "string"], "doc": ""}, {"name": "ageOfOnset", "type": ["null",
"string"], "doc": ""}]}}, "doc": ""}, {"name": "hpoTermList", "type": {"type": "array", "items":
{"type": "record", "name": "HpoTerm", "doc": "", "fields": [{"name": "term", "type": "string",
"doc": ""}, {"name": "termPresence", "type": ["null", "boolean"], "doc": ""}, {"name": "modifiers",
"type": ["null", {"type": "map", "values": "string"}], "doc": ""}, {"name": "ageOfOnset", "type":
["null", "string"], "doc": ""}]}}, "doc": ""}, {"name": "ancestries", "type": {"type": "record",
"name": "Ancestries", "doc": "", "fields": [{"name": "mothersEthnicOrigin", "type": ["null",
{"type": "enum", "name": "EthnicCategory", "doc": "", "symbols": ["D", "E", "F", "G", "A", "B", "C",
"L", "M", "N", "H", "J", "K", "P", "S", "R", "Z"]}], "doc": ""}, {"name":
"mothersOtherRelevantAncestry", "type": ["null", "string"], "doc": ""}, {"name":
"fathersEthnicOrigin", "type": ["null", "EthnicCategory"], "doc": ""}, {"name":
"fathersOtherRelevantAncestry", "type": ["null", "string"], "doc": ""}, {"name":
"chiSquare1KGenomesPhase3Pop", "type": ["null", {"type": "array", "items": {"type": "record",
"name": "ChiSquare1KGenomesPhase3Pop", "doc": "", "fields": [{"name": "kGSuperPopCategory", "type":
{"type": "enum", "name": "KGSuperPopCategory", "doc": "", "symbols": ["AFR", "AMR", "EAS", "EUR",
"SAS"]}, "doc": ""}, {"name": "kGPopCategory", "type": ["null", {"type": "enum", "name":
"KGPopCategory", "doc": "", "symbols": ["ACB", "ASW", "BEB", "CDX", "CEU", "CHB", "CHS", "CLM",
"ESN", "FIN", "GBR", "GIH", "GWD", "IBS", "ITU", "JPT", "KHV", "LWK", "MSL", "MXL", "PEL", "PJL",
"PUR", "STU", "TSI", "YRI"]}], "doc": ""}, {"name": "chiSquare", "type": "float", "doc": ""}]}}],
"doc": ""}]}, "doc": ""}, {"name": "consentStatus", "type": {"type": "record", "name":
"ConsentStatus", "doc": "", "fields": [{"name": "programmeConsent", "type": "boolean", "doc": "",
"default": false}, {"name": "primaryFindingConsent", "type": "boolean", "doc": "", "default":
false}, {"name": "secondaryFindingConsent", "type": "boolean", "doc": "", "default": false},
{"name": "carrierStatusConsent", "type": "boolean", "doc": "", "default": false}]}, "doc": ""},
{"name": "samples", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name":
"inbreedingCoefficient", "type": ["null", {"type": "record", "name": "InbreedingCoefficient", "doc":
"", "fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name": "program", "type":
"string", "doc": ""}, {"name": "version", "type": "string", "doc": ""}, {"name": "estimationMethod",
"type": "string", "doc": ""}, {"name": "coefficient", "type": "double", "doc": ""}, {"name":
"standardError", "type": ["null", "double"], "doc": ""}]}], "doc": ""}, {"name":
"additionalInformation", "type": ["null", {"type": "map", "values": "string"}], "doc": ""}]}}},
{"name": "analysisPanels", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"AnalysisPanel", "fields": [{"name": "specificDisease", "type": "string"}, {"name": "panelName",
"type": "string"}, {"name": "panelVersion", "type": ["null", "string"]}, {"name": "review_outcome",
"type": "string"}, {"name": "multiple_genetic_origins", "type": "string"}]}}]}, {"name":
"diseasePenetrances", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"DiseasePenetrance", "fields": [{"name": "specificDisease", "type": "string"}, {"name":
"penetrance", "type": {"type": "enum", "name": "Penetrance", "doc": "", "symbols": ["complete",
"incomplete"]}}]}}]}]}, "doc": ""}, {"name": "TieredVariants", "type": {"type": "array", "items":
{"type": "record", "name": "ReportedVariant", "fields": [{"name": "chromosome", "type": "string",
"doc": ""}, {"name": "dbSNPid", "type": ["null", "string"], "doc": ""}, {"name": "position", "type":
"int", "doc": ""}, {"name": "reference", "type": "string", "doc": ""}, {"name": "alternate", "type":
"string", "doc": ""}, {"name": "calledGenotypes", "type": {"type": "array", "items": {"type":
"record", "name": "CalledGenotype", "doc": "", "fields": [{"name": "gelId", "type": "string", "doc":
""}, {"name": "sampleId", "type": "string", "doc": ""}, {"name": "genotype", "type": {"type":
"enum", "name": "Zygosity", "doc": "", "symbols": ["reference_homozygous", "heterozygous",
"alternate_homozygous", "missing", "half_missing_reference", "half_missing_alternate",
"alternate_hemizigous", "reference_hemizigous", "unk"]}, "doc": ""}, {"name": "phaseSet", "type":
["null", "int"], "doc": ""}, {"name": "depthReference", "type": ["null", "int"], "doc": ""},
{"name": "depthAlternate", "type": ["null", "int"], "doc": ""}, {"name": "copyNumber", "type":
["null", "int"], "doc": ""}]}}, "doc": ""}, {"name": "reportEvents", "type": {"type": "array",
"items": {"type": "record", "name": "ReportEvent", "fields": [{"name": "reportEventId", "type":
"string", "doc": ""}, {"name": "phenotype", "type": "string", "doc": ""}, {"name": "panelName",
"type": ["null", "string"], "doc": ""}, {"name": "panelVersion", "type": ["null", "string"], "doc":
""}, {"name": "modeOfInheritance", "type": {"type": "enum", "name": "ReportedModeOfInheritance",
"doc": "", "symbols": ["monoallelic", "monoallelic_not_imprinted",
"monoallelic_maternally_imprinted", "monoallelic_paternally_imprinted", "biallelic",
"monoallelic_and_biallelic", "monoallelic_and_more_severe_biallelic", "xlinked_biallelic",
"xlinked_monoallelic", "mitochondrial", "unknown"]}, "doc": ""}, {"name": "genomicFeature", "type":
{"type": "record", "name": "GenomicFeature", "fields": [{"name": "featureType", "type": {"type":
"enum", "name": "FeatureTypes", "symbols": ["RegulatoryRegion", "Gene", "Transcript"]}, "doc": ""},
{"name": "ensemblId", "type": "string", "doc": ""}, {"name": "HGNC", "type": ["null", "string"],
"doc": ""}, {"name": "other_ids", "type": ["null", {"type": "map", "values": "string"}], "doc":
""}]}, "doc": ""}, {"name": "penetrance", "type": "Penetrance", "doc": ""}, {"name": "score",
"type": "float", "doc": ""}, {"name": "vendorSpecificScores", "type": ["null", {"type": "map",
"values": "float"}], "doc": ""}, {"name": "variantClassification", "type": ["null", {"type": "enum",
"name": "VariantClassification", "doc": "", "symbols": ["BENIGN", "LIKELY_BENIGN", "VUS",
"LIKELY_PATHOGENIC", "PATHOGENIC"]}], "doc": ""}, {"name": "fullyExplainsPhenotype", "type":
["null", "boolean"], "doc": ""}, {"name": "groupOfVariants", "type": ["null", "int"], "doc": ""},
{"name": "eventJustification", "type": "string", "doc": ""}, {"name": "tier", "type": ["null",
{"type": "enum", "name": "Tier", "doc": "", "symbols": ["NONE", "TIER1", "TIER2", "TIER3"]}], "doc":
""}]}}, "doc": ""}, {"name": "additionalTextualVariantAnnotations", "type": ["null", {"type": "map",
"values": "string"}], "doc": ""}, {"name": "evidenceIds", "type": ["null", {"type": "map", "values":
"string"}], "doc": ""}, {"name": "additionalNumericVariantAnnotations", "type": ["null", {"type":
"map", "values": "float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}]}}, "doc": ""}, {"name": "TieringVersion", "type": "string", "doc":
""}, {"name": "complexGeneticPhenomena", "type": ["null", {"type": "enum", "name":
"ComplexGeneticPhenomena", "symbols": ["mosaicism", "monosomy", "disomy", "uniparental_disomy",
"trisomy", "other_aneuploidy"]}], "doc": ""}, {"name": "otherFamilyHistory", "type": ["null",
{"type": "record", "name": "OtherFamilyHistory", "doc": "", "fields": [{"name":
"maternalFamilyHistory", "type": ["null", {"type": "array", "items": "string"}], "doc": ""},
{"name": "paternalFamilyHistory", "type": ["null", {"type": "array", "items": "string"}], "doc":
""}]}], "doc": ""}, {"name": "genePanelsCoverage", "type": ["null", {"type": "map", "values":
{"type": "map", "values": {"type": "map", "values": "float"}}}], "doc": ""}, {"name":
"additionalInfo", "type": ["null", {"type": "map", "values": "string"}], "doc": ""}]}}, {"name":
"interpretationResults", "type": {"type": "array", "items": {"type": "record", "name":
"InterpretedGenomeRD", "fields": [{"name": "versionControl", "type": "VersionControl", "doc": ""},
{"name": "InterpretationRequestID", "type": "string", "doc": ""}, {"name": "analysisId", "type":
"string", "doc": ""}, {"name": "companyName", "type": "string", "doc": ""}, {"name": "reportURI",
"type": "string", "doc": ""}, {"name": "reportURL", "type": "string", "doc": ""}, {"name":
"reportedVariants", "type": {"type": "array", "items": "ReportedVariant"}, "doc": ""}, {"name":
"referenceDatabasesVersions", "type": {"type": "map", "values": "string"}, "doc": ""}, {"name":
"softwareVersions", "type": {"type": "map", "values": "string"}, "doc": ""}, {"name":
"reportedStructuralVariants", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"ReportedStructuralVariant", "fields": [{"name": "chromosome", "type": "string", "doc": ""},
{"name": "start", "type": "int", "doc": ""}, {"name": "end", "type": "int", "doc": ""}, {"name":
"type", "type": "string", "doc": ""}, {"name": "reference", "type": "string", "doc": ""}, {"name":
"alternate", "type": "string", "doc": ""}, {"name": "calledGenotypes", "type": {"type": "array",
"items": "CalledGenotype"}}, {"name": "reportEvents", "type": {"type": "array", "items":
"ReportEvent"}, "doc": ""}, {"name": "additionalTextualVariantAnnotations", "type": ["null",
{"type": "map", "values": "string"}], "doc": ""}, {"name": "evidenceIds", "type": ["null", {"type":
"map", "values": "string"}], "doc": ""}, {"name": "additionalNumericVariantAnnotations", "type":
["null", {"type": "map", "values": "float"}], "doc": ""}, {"name": "comments", "type": ["null",
{"type": "array", "items": "string"}], "doc": ""}]}}], "doc": ""}, {"name": "comments", "type":
["null", {"type": "array", "items": "string"}], "doc": ""}]}}}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "interpretationResults",
        "tieringResult",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'interpretationResults': InterpretedGenomeRD,
            'tieringResult': TieringResult,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'interpretationResults': InterpretedGenomeRD,
            'tieringResult': TieringResult,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'interpretationResults', 'tieringResult'
    ]

    def __init__(self, **kwargs):
        self.interpretationResults = kwargs.get(
            'interpretationResults', None)
        self.tieringResult = kwargs.get(
            'tieringResult', TieringResult())


class InterpretationRequestRD(ProtocolElement):
    """
    This record represents basic information for this report
    """
    _schemaSource = """
{"type": "record", "name": "InterpretationRequestRD", "namespace": "org.gel.models.report.avro",
"doc": "", "fields": [{"name": "versionControl", "type": {"type": "record", "name":
"VersionControl", "fields": [{"name": "GitVersionControl", "type": "string", "doc": "", "default":
"3.0.0"}]}, "doc": ""}, {"name": "InterpretationRequestID", "type": "string", "doc": ""}, {"name":
"genomeAssemblyVersion", "type": "string", "doc": "", "default": "GRCh37.p13"}, {"name":
"cellbaseVersion", "type": "string", "doc": "", "default": "4.0"}, {"name":
"InterpretationRequestVersion", "type": "int", "doc": ""}, {"name": "interpretGenome", "type":
"boolean", "doc": "", "default": false}, {"name": "workspace", "type": {"type": "array", "items":
"string"}, "doc": ""}, {"name": "BAMs", "type": {"type": "array", "items": {"type": "record",
"name": "File", "doc": "", "fields": [{"name": "SampleId", "type": ["null", "string", {"type":
"array", "items": "string"}], "doc": ""}, {"name": "URIFile", "type": "string", "doc": ""}, {"name":
"fileType", "type": {"type": "enum", "name": "FileType", "symbols": ["BAM", "gVCF", "VCF_small",
"VCF_somatic_small", "VCF_CNV", "VCF_somatic_CNV", "VCF_SV", "VCF_somatic_SV", "VCF_SV_CNV", "SVG",
"ANN", "BigWig", "MD5Sum", "ROH", "OTHER"]}}, {"name": "md5Sum", "type": ["null", "File"]}]}},
"doc": ""}, {"name": "VCFs", "type": {"type": "array", "items": "File"}, "doc": ""}, {"name":
"bigWigs", "type": ["null", {"type": "array", "items": "File"}], "doc": ""}, {"name":
"pedigreeDiagram", "type": ["null", "File"], "doc": ""}, {"name": "annotationFile", "type": ["null",
"File"], "doc": ""}, {"name": "otherFiles", "type": ["null", {"type": "map", "values": "File"}],
"doc": ""}, {"name": "pedigree", "type": {"type": "record", "name": "Pedigree", "doc": "", "fields":
[{"name": "versionControl", "type": "VersionControl", "doc": ""}, {"name": "gelFamilyId", "type":
"string", "doc": ""}, {"name": "participants", "type": {"type": "array", "items": {"type": "record",
"name": "RDParticipant", "doc": "", "fields": [{"name": "versionControl", "type": "VersionControl",
"doc": ""}, {"name": "pedigreeId", "type": "int", "doc": ""}, {"name": "isProband", "type":
"boolean", "doc": ""}, {"name": "gelId", "type": ["null", "string"], "doc": ""}, {"name":
"gelFamilyId", "type": "string", "doc": ""}, {"name": "gelSuperFamilyId", "type": ["null",
"string"], "doc": ""}, {"name": "sex", "type": {"type": "enum", "name": "Sex", "doc": "", "symbols":
["male", "female", "unknown", "undetermined"]}, "doc": ""}, {"name": "personKaryotipicSex", "type":
["null", {"type": "enum", "name": "PersonKaryotipicSex", "doc": "", "symbols": ["unknown", "XX",
"XY", "XO", "XXY", "XXX", "XXYY", "XXXY", "XXXX", "XYY", "other"]}], "doc": ""}, {"name":
"yearOfBirth", "type": ["null", "string"], "doc": ""}, {"name": "fatherId", "type": ["null", "int"],
"doc": ""}, {"name": "motherId", "type": ["null", "int"], "doc": ""}, {"name": "superFatherId",
"type": ["null", "int"], "doc": ""}, {"name": "superMotherId", "type": ["null", "int"], "doc": ""},
{"name": "twinGroup", "type": ["null", "int"], "doc": ""}, {"name": "monozygotic", "type": ["null",
{"type": "enum", "name": "TernaryOption", "doc": "", "symbols": ["yes", "no", "unknown"]}], "doc":
""}, {"name": "adoptedStatus", "type": {"type": "enum", "name": "AdoptedStatus", "doc": "",
"symbols": ["not_adopted", "adoptedin", "adoptedout"]}, "doc": ""}, {"name": "lifeStatus", "type":
{"type": "enum", "name": "LifeStatus", "doc": "", "symbols": ["alive", "aborted", "deceased",
"unborn", "stillborn", "miscarriage"]}, "doc": ""}, {"name": "consanguineousParents", "type":
"TernaryOption", "doc": ""}, {"name": "consanguineousPopulation", "type": ["null", "string"], "doc":
""}, {"name": "affectionStatus", "type": {"type": "enum", "name": "AffectionStatus", "doc": "",
"symbols": ["unaffected", "affected", "unknown"]}, "doc": ""}, {"name": "disorderList", "type":
{"type": "array", "items": {"type": "record", "name": "Disorder", "doc": "", "fields": [{"name":
"diseaseGroup", "type": ["null", "string"], "doc": ""}, {"name": "diseaseSubGroup", "type": ["null",
"string"], "doc": ""}, {"name": "specificDisease", "type": ["null", "string"], "doc": ""}, {"name":
"ageOfOnset", "type": ["null", "string"], "doc": ""}]}}, "doc": ""}, {"name": "hpoTermList", "type":
{"type": "array", "items": {"type": "record", "name": "HpoTerm", "doc": "", "fields": [{"name":
"term", "type": "string", "doc": ""}, {"name": "termPresence", "type": ["null", "boolean"], "doc":
""}, {"name": "modifiers", "type": ["null", {"type": "map", "values": "string"}], "doc": ""},
{"name": "ageOfOnset", "type": ["null", "string"], "doc": ""}]}}, "doc": ""}, {"name": "ancestries",
"type": {"type": "record", "name": "Ancestries", "doc": "", "fields": [{"name":
"mothersEthnicOrigin", "type": ["null", {"type": "enum", "name": "EthnicCategory", "doc": "",
"symbols": ["D", "E", "F", "G", "A", "B", "C", "L", "M", "N", "H", "J", "K", "P", "S", "R", "Z"]}],
"doc": ""}, {"name": "mothersOtherRelevantAncestry", "type": ["null", "string"], "doc": ""},
{"name": "fathersEthnicOrigin", "type": ["null", "EthnicCategory"], "doc": ""}, {"name":
"fathersOtherRelevantAncestry", "type": ["null", "string"], "doc": ""}, {"name":
"chiSquare1KGenomesPhase3Pop", "type": ["null", {"type": "array", "items": {"type": "record",
"name": "ChiSquare1KGenomesPhase3Pop", "doc": "", "fields": [{"name": "kGSuperPopCategory", "type":
{"type": "enum", "name": "KGSuperPopCategory", "doc": "", "symbols": ["AFR", "AMR", "EAS", "EUR",
"SAS"]}, "doc": ""}, {"name": "kGPopCategory", "type": ["null", {"type": "enum", "name":
"KGPopCategory", "doc": "", "symbols": ["ACB", "ASW", "BEB", "CDX", "CEU", "CHB", "CHS", "CLM",
"ESN", "FIN", "GBR", "GIH", "GWD", "IBS", "ITU", "JPT", "KHV", "LWK", "MSL", "MXL", "PEL", "PJL",
"PUR", "STU", "TSI", "YRI"]}], "doc": ""}, {"name": "chiSquare", "type": "float", "doc": ""}]}}],
"doc": ""}]}, "doc": ""}, {"name": "consentStatus", "type": {"type": "record", "name":
"ConsentStatus", "doc": "", "fields": [{"name": "programmeConsent", "type": "boolean", "doc": "",
"default": false}, {"name": "primaryFindingConsent", "type": "boolean", "doc": "", "default":
false}, {"name": "secondaryFindingConsent", "type": "boolean", "doc": "", "default": false},
{"name": "carrierStatusConsent", "type": "boolean", "doc": "", "default": false}]}, "doc": ""},
{"name": "samples", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name":
"inbreedingCoefficient", "type": ["null", {"type": "record", "name": "InbreedingCoefficient", "doc":
"", "fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name": "program", "type":
"string", "doc": ""}, {"name": "version", "type": "string", "doc": ""}, {"name": "estimationMethod",
"type": "string", "doc": ""}, {"name": "coefficient", "type": "double", "doc": ""}, {"name":
"standardError", "type": ["null", "double"], "doc": ""}]}], "doc": ""}, {"name":
"additionalInformation", "type": ["null", {"type": "map", "values": "string"}], "doc": ""}]}}},
{"name": "analysisPanels", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"AnalysisPanel", "fields": [{"name": "specificDisease", "type": "string"}, {"name": "panelName",
"type": "string"}, {"name": "panelVersion", "type": ["null", "string"]}, {"name": "review_outcome",
"type": "string"}, {"name": "multiple_genetic_origins", "type": "string"}]}}]}, {"name":
"diseasePenetrances", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"DiseasePenetrance", "fields": [{"name": "specificDisease", "type": "string"}, {"name":
"penetrance", "type": {"type": "enum", "name": "Penetrance", "doc": "", "symbols": ["complete",
"incomplete"]}}]}}]}]}, "doc": ""}, {"name": "TieredVariants", "type": {"type": "array", "items":
{"type": "record", "name": "ReportedVariant", "fields": [{"name": "chromosome", "type": "string",
"doc": ""}, {"name": "dbSNPid", "type": ["null", "string"], "doc": ""}, {"name": "position", "type":
"int", "doc": ""}, {"name": "reference", "type": "string", "doc": ""}, {"name": "alternate", "type":
"string", "doc": ""}, {"name": "calledGenotypes", "type": {"type": "array", "items": {"type":
"record", "name": "CalledGenotype", "doc": "", "fields": [{"name": "gelId", "type": "string", "doc":
""}, {"name": "sampleId", "type": "string", "doc": ""}, {"name": "genotype", "type": {"type":
"enum", "name": "Zygosity", "doc": "", "symbols": ["reference_homozygous", "heterozygous",
"alternate_homozygous", "missing", "half_missing_reference", "half_missing_alternate",
"alternate_hemizigous", "reference_hemizigous", "unk"]}, "doc": ""}, {"name": "phaseSet", "type":
["null", "int"], "doc": ""}, {"name": "depthReference", "type": ["null", "int"], "doc": ""},
{"name": "depthAlternate", "type": ["null", "int"], "doc": ""}, {"name": "copyNumber", "type":
["null", "int"], "doc": ""}]}}, "doc": ""}, {"name": "reportEvents", "type": {"type": "array",
"items": {"type": "record", "name": "ReportEvent", "fields": [{"name": "reportEventId", "type":
"string", "doc": ""}, {"name": "phenotype", "type": "string", "doc": ""}, {"name": "panelName",
"type": ["null", "string"], "doc": ""}, {"name": "panelVersion", "type": ["null", "string"], "doc":
""}, {"name": "modeOfInheritance", "type": {"type": "enum", "name": "ReportedModeOfInheritance",
"doc": "", "symbols": ["monoallelic", "monoallelic_not_imprinted",
"monoallelic_maternally_imprinted", "monoallelic_paternally_imprinted", "biallelic",
"monoallelic_and_biallelic", "monoallelic_and_more_severe_biallelic", "xlinked_biallelic",
"xlinked_monoallelic", "mitochondrial", "unknown"]}, "doc": ""}, {"name": "genomicFeature", "type":
{"type": "record", "name": "GenomicFeature", "fields": [{"name": "featureType", "type": {"type":
"enum", "name": "FeatureTypes", "symbols": ["RegulatoryRegion", "Gene", "Transcript"]}, "doc": ""},
{"name": "ensemblId", "type": "string", "doc": ""}, {"name": "HGNC", "type": ["null", "string"],
"doc": ""}, {"name": "other_ids", "type": ["null", {"type": "map", "values": "string"}], "doc":
""}]}, "doc": ""}, {"name": "penetrance", "type": "Penetrance", "doc": ""}, {"name": "score",
"type": "float", "doc": ""}, {"name": "vendorSpecificScores", "type": ["null", {"type": "map",
"values": "float"}], "doc": ""}, {"name": "variantClassification", "type": ["null", {"type": "enum",
"name": "VariantClassification", "doc": "", "symbols": ["BENIGN", "LIKELY_BENIGN", "VUS",
"LIKELY_PATHOGENIC", "PATHOGENIC"]}], "doc": ""}, {"name": "fullyExplainsPhenotype", "type":
["null", "boolean"], "doc": ""}, {"name": "groupOfVariants", "type": ["null", "int"], "doc": ""},
{"name": "eventJustification", "type": "string", "doc": ""}, {"name": "tier", "type": ["null",
{"type": "enum", "name": "Tier", "doc": "", "symbols": ["NONE", "TIER1", "TIER2", "TIER3"]}], "doc":
""}]}}, "doc": ""}, {"name": "additionalTextualVariantAnnotations", "type": ["null", {"type": "map",
"values": "string"}], "doc": ""}, {"name": "evidenceIds", "type": ["null", {"type": "map", "values":
"string"}], "doc": ""}, {"name": "additionalNumericVariantAnnotations", "type": ["null", {"type":
"map", "values": "float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}]}}, "doc": ""}, {"name": "TieringVersion", "type": "string", "doc":
""}, {"name": "complexGeneticPhenomena", "type": ["null", {"type": "enum", "name":
"ComplexGeneticPhenomena", "symbols": ["mosaicism", "monosomy", "disomy", "uniparental_disomy",
"trisomy", "other_aneuploidy"]}], "doc": ""}, {"name": "otherFamilyHistory", "type": ["null",
{"type": "record", "name": "OtherFamilyHistory", "doc": "", "fields": [{"name":
"maternalFamilyHistory", "type": ["null", {"type": "array", "items": "string"}], "doc": ""},
{"name": "paternalFamilyHistory", "type": ["null", {"type": "array", "items": "string"}], "doc":
""}]}], "doc": ""}, {"name": "analysisReturnURI", "type": "string", "doc": ""}, {"name":
"analysisVersion", "type": ["null", "string"], "doc": ""}, {"name": "genePanelsCoverage", "type":
["null", {"type": "map", "values": {"type": "map", "values": {"type": "map", "values": "float"}}}],
"doc": ""}, {"name": "additionalInfo", "type": ["null", {"type": "map", "values": "string"}], "doc":
""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "BAMs",
        "InterpretationRequestID",
        "InterpretationRequestVersion",
        "TieredVariants",
        "TieringVersion",
        "VCFs",
        "additionalInfo",
        "analysisReturnURI",
        "analysisVersion",
        "annotationFile",
        "bigWigs",
        "complexGeneticPhenomena",
        "genePanelsCoverage",
        "otherFamilyHistory",
        "otherFiles",
        "pedigree",
        "pedigreeDiagram",
        "versionControl",
        "workspace",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'BAMs': File,
            'TieredVariants': ReportedVariant,
            'VCFs': File,
            'annotationFile': File,
            'bigWigs': File,
            'otherFamilyHistory': OtherFamilyHistory,
            'otherFiles': File,
            'pedigree': Pedigree,
            'pedigreeDiagram': File,
            'versionControl': VersionControl,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'BAMs': File,
            'TieredVariants': ReportedVariant,
            'VCFs': File,
            'annotationFile': File,
            'bigWigs': File,
            'otherFamilyHistory': OtherFamilyHistory,
            'otherFiles': File,
            'pedigree': Pedigree,
            'pedigreeDiagram': File,
            'versionControl': VersionControl,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'BAMs', 'InterpretationRequestID',
        'InterpretationRequestVersion', 'TieredVariants',
        'TieringVersion', 'VCFs', 'additionalInfo',
        'analysisReturnURI', 'analysisVersion', 'annotationFile',
        'bigWigs', 'cellbaseVersion', 'complexGeneticPhenomena',
        'genePanelsCoverage', 'genomeAssemblyVersion',
        'interpretGenome', 'otherFamilyHistory', 'otherFiles',
        'pedigree', 'pedigreeDiagram', 'versionControl', 'workspace'
    ]

    def __init__(self, **kwargs):
        self.BAMs = kwargs.get(
            'BAMs', None)
        self.InterpretationRequestID = kwargs.get(
            'InterpretationRequestID', None)
        self.InterpretationRequestVersion = kwargs.get(
            'InterpretationRequestVersion', None)
        self.TieredVariants = kwargs.get(
            'TieredVariants', None)
        self.TieringVersion = kwargs.get(
            'TieringVersion', None)
        self.VCFs = kwargs.get(
            'VCFs', None)
        self.additionalInfo = kwargs.get(
            'additionalInfo', None)
        self.analysisReturnURI = kwargs.get(
            'analysisReturnURI', None)
        self.analysisVersion = kwargs.get(
            'analysisVersion', None)
        self.annotationFile = kwargs.get(
            'annotationFile', None)
        self.bigWigs = kwargs.get(
            'bigWigs', None)
        self.cellbaseVersion = kwargs.get(
            'cellbaseVersion', '4.0')
        self.complexGeneticPhenomena = kwargs.get(
            'complexGeneticPhenomena', None)
        self.genePanelsCoverage = kwargs.get(
            'genePanelsCoverage', None)
        self.genomeAssemblyVersion = kwargs.get(
            'genomeAssemblyVersion', 'GRCh37.p13')
        self.interpretGenome = kwargs.get(
            'interpretGenome', False)
        self.otherFamilyHistory = kwargs.get(
            'otherFamilyHistory', None)
        self.otherFiles = kwargs.get(
            'otherFiles', None)
        self.pedigree = kwargs.get(
            'pedigree', Pedigree())
        self.pedigreeDiagram = kwargs.get(
            'pedigreeDiagram', None)
        self.versionControl = kwargs.get(
            'versionControl', VersionControl())
        self.workspace = kwargs.get(
            'workspace', None)


class InterpretedGenomeRD(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "InterpretedGenomeRD", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "versionControl", "type": {"type": "record", "name": "VersionControl", "fields":
[{"name": "GitVersionControl", "type": "string", "doc": "", "default": "3.0.0"}]}, "doc": ""},
{"name": "InterpretationRequestID", "type": "string", "doc": ""}, {"name": "analysisId", "type":
"string", "doc": ""}, {"name": "companyName", "type": "string", "doc": ""}, {"name": "reportURI",
"type": "string", "doc": ""}, {"name": "reportURL", "type": "string", "doc": ""}, {"name":
"reportedVariants", "type": {"type": "array", "items": {"type": "record", "name": "ReportedVariant",
"fields": [{"name": "chromosome", "type": "string", "doc": ""}, {"name": "dbSNPid", "type": ["null",
"string"], "doc": ""}, {"name": "position", "type": "int", "doc": ""}, {"name": "reference", "type":
"string", "doc": ""}, {"name": "alternate", "type": "string", "doc": ""}, {"name":
"calledGenotypes", "type": {"type": "array", "items": {"type": "record", "name": "CalledGenotype",
"doc": "", "fields": [{"name": "gelId", "type": "string", "doc": ""}, {"name": "sampleId", "type":
"string", "doc": ""}, {"name": "genotype", "type": {"type": "enum", "name": "Zygosity", "doc": "",
"symbols": ["reference_homozygous", "heterozygous", "alternate_homozygous", "missing",
"half_missing_reference", "half_missing_alternate", "alternate_hemizigous", "reference_hemizigous",
"unk"]}, "doc": ""}, {"name": "phaseSet", "type": ["null", "int"], "doc": ""}, {"name":
"depthReference", "type": ["null", "int"], "doc": ""}, {"name": "depthAlternate", "type": ["null",
"int"], "doc": ""}, {"name": "copyNumber", "type": ["null", "int"], "doc": ""}]}}, "doc": ""},
{"name": "reportEvents", "type": {"type": "array", "items": {"type": "record", "name":
"ReportEvent", "fields": [{"name": "reportEventId", "type": "string", "doc": ""}, {"name":
"phenotype", "type": "string", "doc": ""}, {"name": "panelName", "type": ["null", "string"], "doc":
""}, {"name": "panelVersion", "type": ["null", "string"], "doc": ""}, {"name": "modeOfInheritance",
"type": {"type": "enum", "name": "ReportedModeOfInheritance", "doc": "", "symbols": ["monoallelic",
"monoallelic_not_imprinted", "monoallelic_maternally_imprinted", "monoallelic_paternally_imprinted",
"biallelic", "monoallelic_and_biallelic", "monoallelic_and_more_severe_biallelic",
"xlinked_biallelic", "xlinked_monoallelic", "mitochondrial", "unknown"]}, "doc": ""}, {"name":
"genomicFeature", "type": {"type": "record", "name": "GenomicFeature", "fields": [{"name":
"featureType", "type": {"type": "enum", "name": "FeatureTypes", "symbols": ["RegulatoryRegion",
"Gene", "Transcript"]}, "doc": ""}, {"name": "ensemblId", "type": "string", "doc": ""}, {"name":
"HGNC", "type": ["null", "string"], "doc": ""}, {"name": "other_ids", "type": ["null", {"type":
"map", "values": "string"}], "doc": ""}]}, "doc": ""}, {"name": "penetrance", "type": {"type":
"enum", "name": "Penetrance", "doc": "", "symbols": ["complete", "incomplete"]}, "doc": ""},
{"name": "score", "type": "float", "doc": ""}, {"name": "vendorSpecificScores", "type": ["null",
{"type": "map", "values": "float"}], "doc": ""}, {"name": "variantClassification", "type": ["null",
{"type": "enum", "name": "VariantClassification", "doc": "", "symbols": ["BENIGN", "LIKELY_BENIGN",
"VUS", "LIKELY_PATHOGENIC", "PATHOGENIC"]}], "doc": ""}, {"name": "fullyExplainsPhenotype", "type":
["null", "boolean"], "doc": ""}, {"name": "groupOfVariants", "type": ["null", "int"], "doc": ""},
{"name": "eventJustification", "type": "string", "doc": ""}, {"name": "tier", "type": ["null",
{"type": "enum", "name": "Tier", "doc": "", "symbols": ["NONE", "TIER1", "TIER2", "TIER3"]}], "doc":
""}]}}, "doc": ""}, {"name": "additionalTextualVariantAnnotations", "type": ["null", {"type": "map",
"values": "string"}], "doc": ""}, {"name": "evidenceIds", "type": ["null", {"type": "map", "values":
"string"}], "doc": ""}, {"name": "additionalNumericVariantAnnotations", "type": ["null", {"type":
"map", "values": "float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}]}}, "doc": ""}, {"name": "referenceDatabasesVersions", "type":
{"type": "map", "values": "string"}, "doc": ""}, {"name": "softwareVersions", "type": {"type":
"map", "values": "string"}, "doc": ""}, {"name": "reportedStructuralVariants", "type": ["null",
{"type": "array", "items": {"type": "record", "name": "ReportedStructuralVariant", "fields":
[{"name": "chromosome", "type": "string", "doc": ""}, {"name": "start", "type": "int", "doc": ""},
{"name": "end", "type": "int", "doc": ""}, {"name": "type", "type": "string", "doc": ""}, {"name":
"reference", "type": "string", "doc": ""}, {"name": "alternate", "type": "string", "doc": ""},
{"name": "calledGenotypes", "type": {"type": "array", "items": "CalledGenotype"}}, {"name":
"reportEvents", "type": {"type": "array", "items": "ReportEvent"}, "doc": ""}, {"name":
"additionalTextualVariantAnnotations", "type": ["null", {"type": "map", "values": "string"}], "doc":
""}, {"name": "evidenceIds", "type": ["null", {"type": "map", "values": "string"}], "doc": ""},
{"name": "additionalNumericVariantAnnotations", "type": ["null", {"type": "map", "values":
"float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array", "items": "string"}],
"doc": ""}]}}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array", "items":
"string"}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "InterpretationRequestID",
        "analysisId",
        "comments",
        "companyName",
        "referenceDatabasesVersions",
        "reportURI",
        "reportURL",
        "reportedStructuralVariants",
        "reportedVariants",
        "softwareVersions",
        "versionControl",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'reportedStructuralVariants': ReportedStructuralVariant,
            'reportedVariants': ReportedVariant,
            'versionControl': VersionControl,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'reportedStructuralVariants': ReportedStructuralVariant,
            'reportedVariants': ReportedVariant,
            'versionControl': VersionControl,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'InterpretationRequestID', 'analysisId', 'comments',
        'companyName', 'referenceDatabasesVersions', 'reportURI',
        'reportURL', 'reportedStructuralVariants', 'reportedVariants',
        'softwareVersions', 'versionControl'
    ]

    def __init__(self, **kwargs):
        self.InterpretationRequestID = kwargs.get(
            'InterpretationRequestID', None)
        self.analysisId = kwargs.get(
            'analysisId', None)
        self.comments = kwargs.get(
            'comments', None)
        self.companyName = kwargs.get(
            'companyName', None)
        self.referenceDatabasesVersions = kwargs.get(
            'referenceDatabasesVersions', None)
        self.reportURI = kwargs.get(
            'reportURI', None)
        self.reportURL = kwargs.get(
            'reportURL', None)
        self.reportedStructuralVariants = kwargs.get(
            'reportedStructuralVariants', None)
        self.reportedVariants = kwargs.get(
            'reportedVariants', None)
        self.softwareVersions = kwargs.get(
            'softwareVersions', None)
        self.versionControl = kwargs.get(
            'versionControl', VersionControl())


class KGPopCategory(object):
    """
    1K Population
    """
    ACB = "ACB"
    ASW = "ASW"
    BEB = "BEB"
    CDX = "CDX"
    CEU = "CEU"
    CHB = "CHB"
    CHS = "CHS"
    CLM = "CLM"
    ESN = "ESN"
    FIN = "FIN"
    GBR = "GBR"
    GIH = "GIH"
    GWD = "GWD"
    IBS = "IBS"
    ITU = "ITU"
    JPT = "JPT"
    KHV = "KHV"
    LWK = "LWK"
    MSL = "MSL"
    MXL = "MXL"
    PEL = "PEL"
    PJL = "PJL"
    PUR = "PUR"
    STU = "STU"
    TSI = "TSI"
    YRI = "YRI"

    def __hash__(self):
        return str(self).__hash__()


class KGSuperPopCategory(object):
    """
    1K Super Population
    """
    AFR = "AFR"
    AMR = "AMR"
    EAS = "EAS"
    EUR = "EUR"
    SAS = "SAS"

    def __hash__(self):
        return str(self).__hash__()


class LifeStatus(object):
    """
    Life Status
    """
    alive = "alive"
    aborted = "aborted"
    deceased = "deceased"
    unborn = "unborn"
    stillborn = "stillborn"
    miscarriage = "miscarriage"

    def __hash__(self):
        return str(self).__hash__()


class Machine(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "Machine", "namespace": "org.gel.models.report.avro", "fields": [{"name":
"DATE", "type": "double"}, {"name": "MACHINE", "type": "string"}, {"name": "FLOWCELL", "type":
"string"}, {"name": "RUN", "type": "string"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "DATE",
        "FLOWCELL",
        "MACHINE",
        "RUN",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'DATE', 'FLOWCELL', 'MACHINE', 'RUN'
    ]

    def __init__(self, **kwargs):
        self.DATE = kwargs.get(
            'DATE', None)
        self.FLOWCELL = kwargs.get(
            'FLOWCELL', None)
        self.MACHINE = kwargs.get(
            'MACHINE', None)
        self.RUN = kwargs.get(
            'RUN', None)


class MatchedSamples(ProtocolElement):
    """
    This define a pair of germline and tumor, this pair should/must be
    analyzed together
    """
    _schemaSource = """
{"type": "record", "name": "MatchedSamples", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "germlineSampleId", "type": ["null", "string"], "doc": ""}, {"name":
"tumorSampleId", "type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "germlineSampleId",
        "tumorSampleId",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'germlineSampleId', 'tumorSampleId'
    ]

    def __init__(self, **kwargs):
        self.germlineSampleId = kwargs.get(
            'germlineSampleId', None)
        self.tumorSampleId = kwargs.get(
            'tumorSampleId', None)


class Method(object):
    """
    No documentation
    """
    RESECTION = "RESECTION"
    BIOPSY = "BIOPSY"
    BLOOD = "BLOOD"

    def __hash__(self):
        return str(self).__hash__()


class ModifiedVariant(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "ModifiedVariant", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "previousVariant", "type": {"type": "record", "name": "ReportedVariant", "fields":
[{"name": "chromosome", "type": "string", "doc": ""}, {"name": "dbSNPid", "type": ["null",
"string"], "doc": ""}, {"name": "position", "type": "int", "doc": ""}, {"name": "reference", "type":
"string", "doc": ""}, {"name": "alternate", "type": "string", "doc": ""}, {"name":
"calledGenotypes", "type": {"type": "array", "items": {"type": "record", "name": "CalledGenotype",
"doc": "", "fields": [{"name": "gelId", "type": "string", "doc": ""}, {"name": "sampleId", "type":
"string", "doc": ""}, {"name": "genotype", "type": {"type": "enum", "name": "Zygosity", "doc": "",
"symbols": ["reference_homozygous", "heterozygous", "alternate_homozygous", "missing",
"half_missing_reference", "half_missing_alternate", "alternate_hemizigous", "reference_hemizigous",
"unk"]}, "doc": ""}, {"name": "phaseSet", "type": ["null", "int"], "doc": ""}, {"name":
"depthReference", "type": ["null", "int"], "doc": ""}, {"name": "depthAlternate", "type": ["null",
"int"], "doc": ""}, {"name": "copyNumber", "type": ["null", "int"], "doc": ""}]}}, "doc": ""},
{"name": "reportEvents", "type": {"type": "array", "items": {"type": "record", "name":
"ReportEvent", "fields": [{"name": "reportEventId", "type": "string", "doc": ""}, {"name":
"phenotype", "type": "string", "doc": ""}, {"name": "panelName", "type": ["null", "string"], "doc":
""}, {"name": "panelVersion", "type": ["null", "string"], "doc": ""}, {"name": "modeOfInheritance",
"type": {"type": "enum", "name": "ReportedModeOfInheritance", "doc": "", "symbols": ["monoallelic",
"monoallelic_not_imprinted", "monoallelic_maternally_imprinted", "monoallelic_paternally_imprinted",
"biallelic", "monoallelic_and_biallelic", "monoallelic_and_more_severe_biallelic",
"xlinked_biallelic", "xlinked_monoallelic", "mitochondrial", "unknown"]}, "doc": ""}, {"name":
"genomicFeature", "type": {"type": "record", "name": "GenomicFeature", "fields": [{"name":
"featureType", "type": {"type": "enum", "name": "FeatureTypes", "symbols": ["RegulatoryRegion",
"Gene", "Transcript"]}, "doc": ""}, {"name": "ensemblId", "type": "string", "doc": ""}, {"name":
"HGNC", "type": ["null", "string"], "doc": ""}, {"name": "other_ids", "type": ["null", {"type":
"map", "values": "string"}], "doc": ""}]}, "doc": ""}, {"name": "penetrance", "type": {"type":
"enum", "name": "Penetrance", "doc": "", "symbols": ["complete", "incomplete"]}, "doc": ""},
{"name": "score", "type": "float", "doc": ""}, {"name": "vendorSpecificScores", "type": ["null",
{"type": "map", "values": "float"}], "doc": ""}, {"name": "variantClassification", "type": ["null",
{"type": "enum", "name": "VariantClassification", "doc": "", "symbols": ["BENIGN", "LIKELY_BENIGN",
"VUS", "LIKELY_PATHOGENIC", "PATHOGENIC"]}], "doc": ""}, {"name": "fullyExplainsPhenotype", "type":
["null", "boolean"], "doc": ""}, {"name": "groupOfVariants", "type": ["null", "int"], "doc": ""},
{"name": "eventJustification", "type": "string", "doc": ""}, {"name": "tier", "type": ["null",
{"type": "enum", "name": "Tier", "doc": "", "symbols": ["NONE", "TIER1", "TIER2", "TIER3"]}], "doc":
""}]}}, "doc": ""}, {"name": "additionalTextualVariantAnnotations", "type": ["null", {"type": "map",
"values": "string"}], "doc": ""}, {"name": "evidenceIds", "type": ["null", {"type": "map", "values":
"string"}], "doc": ""}, {"name": "additionalNumericVariantAnnotations", "type": ["null", {"type":
"map", "values": "float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}]}}, {"name": "modifiedVariant", "type": "ReportedVariant"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "modifiedVariant",
        "previousVariant",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'modifiedVariant': ReportedVariant,
            'previousVariant': ReportedVariant,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'modifiedVariant': ReportedVariant,
            'previousVariant': ReportedVariant,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'modifiedVariant', 'previousVariant'
    ]

    def __init__(self, **kwargs):
        self.modifiedVariant = kwargs.get(
            'modifiedVariant', ReportedVariant())
        self.previousVariant = kwargs.get(
            'previousVariant', ReportedVariant())


class MutationalSignatureContribution(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "MutationalSignatureContribution", "namespace":
"org.gel.models.report.avro", "fields": [{"name": "coefficients", "type": {"type": "map", "values":
"double"}, "doc": ""}, {"name": "rss", "type": "double", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "coefficients",
        "rss",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'coefficients', 'rss'
    ]

    def __init__(self, **kwargs):
        self.coefficients = kwargs.get(
            'coefficients', None)
        self.rss = kwargs.get(
            'rss', None)


class OtherFamilyHistory(ProtocolElement):
    """
    Family history for secondary findings. Arrays of strings
    describing discrete family history phenotypes. Usually:
    `EndocrineTumours`, `colorectal`, `BreastOvarian` and `HDOrStroke`
    but can be others
    """
    _schemaSource = """
{"type": "record", "name": "OtherFamilyHistory", "namespace": "org.gel.models.report.avro", "doc":
"", "fields": [{"name": "maternalFamilyHistory", "type": ["null", {"type": "array", "items":
"string"}], "doc": ""}, {"name": "paternalFamilyHistory", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "maternalFamilyHistory",
        "paternalFamilyHistory",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'maternalFamilyHistory', 'paternalFamilyHistory'
    ]

    def __init__(self, **kwargs):
        self.maternalFamilyHistory = kwargs.get(
            'maternalFamilyHistory', None)
        self.paternalFamilyHistory = kwargs.get(
            'paternalFamilyHistory', None)


class Pedigree(ProtocolElement):
    """
    This is the concept of a family with associated phenotypes as
    present in the record RDParticipant
    """
    _schemaSource = """
{"type": "record", "name": "Pedigree", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "versionControl", "type": {"type": "record", "name": "VersionControl", "fields":
[{"name": "GitVersionControl", "type": "string", "doc": "", "default": "3.0.0"}]}, "doc": ""},
{"name": "gelFamilyId", "type": "string", "doc": ""}, {"name": "participants", "type": {"type":
"array", "items": {"type": "record", "name": "RDParticipant", "doc": "", "fields": [{"name":
"versionControl", "type": "VersionControl", "doc": ""}, {"name": "pedigreeId", "type": "int", "doc":
""}, {"name": "isProband", "type": "boolean", "doc": ""}, {"name": "gelId", "type": ["null",
"string"], "doc": ""}, {"name": "gelFamilyId", "type": "string", "doc": ""}, {"name":
"gelSuperFamilyId", "type": ["null", "string"], "doc": ""}, {"name": "sex", "type": {"type": "enum",
"name": "Sex", "doc": "", "symbols": ["male", "female", "unknown", "undetermined"]}, "doc": ""},
{"name": "personKaryotipicSex", "type": ["null", {"type": "enum", "name": "PersonKaryotipicSex",
"doc": "", "symbols": ["unknown", "XX", "XY", "XO", "XXY", "XXX", "XXYY", "XXXY", "XXXX", "XYY",
"other"]}], "doc": ""}, {"name": "yearOfBirth", "type": ["null", "string"], "doc": ""}, {"name":
"fatherId", "type": ["null", "int"], "doc": ""}, {"name": "motherId", "type": ["null", "int"],
"doc": ""}, {"name": "superFatherId", "type": ["null", "int"], "doc": ""}, {"name": "superMotherId",
"type": ["null", "int"], "doc": ""}, {"name": "twinGroup", "type": ["null", "int"], "doc": ""},
{"name": "monozygotic", "type": ["null", {"type": "enum", "name": "TernaryOption", "doc": "",
"symbols": ["yes", "no", "unknown"]}], "doc": ""}, {"name": "adoptedStatus", "type": {"type":
"enum", "name": "AdoptedStatus", "doc": "", "symbols": ["not_adopted", "adoptedin", "adoptedout"]},
"doc": ""}, {"name": "lifeStatus", "type": {"type": "enum", "name": "LifeStatus", "doc": "",
"symbols": ["alive", "aborted", "deceased", "unborn", "stillborn", "miscarriage"]}, "doc": ""},
{"name": "consanguineousParents", "type": "TernaryOption", "doc": ""}, {"name":
"consanguineousPopulation", "type": ["null", "string"], "doc": ""}, {"name": "affectionStatus",
"type": {"type": "enum", "name": "AffectionStatus", "doc": "", "symbols": ["unaffected", "affected",
"unknown"]}, "doc": ""}, {"name": "disorderList", "type": {"type": "array", "items": {"type":
"record", "name": "Disorder", "doc": "", "fields": [{"name": "diseaseGroup", "type": ["null",
"string"], "doc": ""}, {"name": "diseaseSubGroup", "type": ["null", "string"], "doc": ""}, {"name":
"specificDisease", "type": ["null", "string"], "doc": ""}, {"name": "ageOfOnset", "type": ["null",
"string"], "doc": ""}]}}, "doc": ""}, {"name": "hpoTermList", "type": {"type": "array", "items":
{"type": "record", "name": "HpoTerm", "doc": "", "fields": [{"name": "term", "type": "string",
"doc": ""}, {"name": "termPresence", "type": ["null", "boolean"], "doc": ""}, {"name": "modifiers",
"type": ["null", {"type": "map", "values": "string"}], "doc": ""}, {"name": "ageOfOnset", "type":
["null", "string"], "doc": ""}]}}, "doc": ""}, {"name": "ancestries", "type": {"type": "record",
"name": "Ancestries", "doc": "", "fields": [{"name": "mothersEthnicOrigin", "type": ["null",
{"type": "enum", "name": "EthnicCategory", "doc": "", "symbols": ["D", "E", "F", "G", "A", "B", "C",
"L", "M", "N", "H", "J", "K", "P", "S", "R", "Z"]}], "doc": ""}, {"name":
"mothersOtherRelevantAncestry", "type": ["null", "string"], "doc": ""}, {"name":
"fathersEthnicOrigin", "type": ["null", "EthnicCategory"], "doc": ""}, {"name":
"fathersOtherRelevantAncestry", "type": ["null", "string"], "doc": ""}, {"name":
"chiSquare1KGenomesPhase3Pop", "type": ["null", {"type": "array", "items": {"type": "record",
"name": "ChiSquare1KGenomesPhase3Pop", "doc": "", "fields": [{"name": "kGSuperPopCategory", "type":
{"type": "enum", "name": "KGSuperPopCategory", "doc": "", "symbols": ["AFR", "AMR", "EAS", "EUR",
"SAS"]}, "doc": ""}, {"name": "kGPopCategory", "type": ["null", {"type": "enum", "name":
"KGPopCategory", "doc": "", "symbols": ["ACB", "ASW", "BEB", "CDX", "CEU", "CHB", "CHS", "CLM",
"ESN", "FIN", "GBR", "GIH", "GWD", "IBS", "ITU", "JPT", "KHV", "LWK", "MSL", "MXL", "PEL", "PJL",
"PUR", "STU", "TSI", "YRI"]}], "doc": ""}, {"name": "chiSquare", "type": "float", "doc": ""}]}}],
"doc": ""}]}, "doc": ""}, {"name": "consentStatus", "type": {"type": "record", "name":
"ConsentStatus", "doc": "", "fields": [{"name": "programmeConsent", "type": "boolean", "doc": "",
"default": false}, {"name": "primaryFindingConsent", "type": "boolean", "doc": "", "default":
false}, {"name": "secondaryFindingConsent", "type": "boolean", "doc": "", "default": false},
{"name": "carrierStatusConsent", "type": "boolean", "doc": "", "default": false}]}, "doc": ""},
{"name": "samples", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name":
"inbreedingCoefficient", "type": ["null", {"type": "record", "name": "InbreedingCoefficient", "doc":
"", "fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name": "program", "type":
"string", "doc": ""}, {"name": "version", "type": "string", "doc": ""}, {"name": "estimationMethod",
"type": "string", "doc": ""}, {"name": "coefficient", "type": "double", "doc": ""}, {"name":
"standardError", "type": ["null", "double"], "doc": ""}]}], "doc": ""}, {"name":
"additionalInformation", "type": ["null", {"type": "map", "values": "string"}], "doc": ""}]}}},
{"name": "analysisPanels", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"AnalysisPanel", "fields": [{"name": "specificDisease", "type": "string"}, {"name": "panelName",
"type": "string"}, {"name": "panelVersion", "type": ["null", "string"]}, {"name": "review_outcome",
"type": "string"}, {"name": "multiple_genetic_origins", "type": "string"}]}}]}, {"name":
"diseasePenetrances", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"DiseasePenetrance", "fields": [{"name": "specificDisease", "type": "string"}, {"name":
"penetrance", "type": {"type": "enum", "name": "Penetrance", "doc": "", "symbols": ["complete",
"incomplete"]}}]}}]}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "analysisPanels",
        "diseasePenetrances",
        "gelFamilyId",
        "participants",
        "versionControl",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'analysisPanels': AnalysisPanel,
            'diseasePenetrances': DiseasePenetrance,
            'participants': RDParticipant,
            'versionControl': VersionControl,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'analysisPanels': AnalysisPanel,
            'diseasePenetrances': DiseasePenetrance,
            'participants': RDParticipant,
            'versionControl': VersionControl,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'analysisPanels', 'diseasePenetrances', 'gelFamilyId',
        'participants', 'versionControl'
    ]

    def __init__(self, **kwargs):
        self.analysisPanels = kwargs.get(
            'analysisPanels', None)
        self.diseasePenetrances = kwargs.get(
            'diseasePenetrances', None)
        self.gelFamilyId = kwargs.get(
            'gelFamilyId', None)
        self.participants = kwargs.get(
            'participants', None)
        self.versionControl = kwargs.get(
            'versionControl', VersionControl())


class Penetrance(object):
    """
    Penetrance assumed in the analysis
    """
    complete = "complete"
    incomplete = "incomplete"

    def __hash__(self):
        return str(self).__hash__()


class PersonKaryotipicSex(object):
    """
    Karyotipic Sex
    """
    unknown = "unknown"
    XX = "XX"
    XY = "XY"
    XO = "XO"
    XXY = "XXY"
    XXX = "XXX"
    XXYY = "XXYY"
    XXXY = "XXXY"
    XXXX = "XXXX"
    XYY = "XYY"
    other = "other"

    def __hash__(self):
        return str(self).__hash__()


class Phase(object):
    """
    No documentation
    """
    PRIMARY = "PRIMARY"
    METASTATIC = "METASTATIC"
    RECURRENCE = "RECURRENCE"

    def __hash__(self):
        return str(self).__hash__()


class PhenotypesSolved(object):
    """
    No documentation
    """
    yes = "yes"
    no = "no"
    partially = "partially"
    unknown = "unknown"

    def __hash__(self):
        return str(self).__hash__()


class PlinkROH(ProtocolElement):
    """
    Plink runs of homozygosity
    """
    _schemaSource = """
{"type": "record", "name": "PlinkROH", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "FID", "type": "string"}, {"name": "IID", "type": "string"}, {"name": "PHE",
"type": "double"}, {"name": "NSEG", "type": "double"}, {"name": "KB", "type": "double"}, {"name":
"KBAVG", "type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "FID",
        "IID",
        "KB",
        "KBAVG",
        "NSEG",
        "PHE",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'FID', 'IID', 'KB', 'KBAVG', 'NSEG', 'PHE'
    ]

    def __init__(self, **kwargs):
        self.FID = kwargs.get(
            'FID', None)
        self.IID = kwargs.get(
            'IID', None)
        self.KB = kwargs.get(
            'KB', None)
        self.KBAVG = kwargs.get(
            'KBAVG', None)
        self.NSEG = kwargs.get(
            'NSEG', None)
        self.PHE = kwargs.get(
            'PHE', None)


class PlinkSexCheck(ProtocolElement):
    """
    Plink sex check
    """
    _schemaSource = """
{"type": "record", "name": "PlinkSexCheck", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "FID", "type": "string"}, {"name": "IID", "type": "string"}, {"name": "F",
"type": "double"}, {"name": "YCOUNT", "type": "double"}, {"name": "STATUS", "type": "string"},
{"name": "SNPSEX", "type": "double"}, {"name": "PEDSEX", "type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "F",
        "FID",
        "IID",
        "PEDSEX",
        "SNPSEX",
        "STATUS",
        "YCOUNT",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'F', 'FID', 'IID', 'PEDSEX', 'SNPSEX', 'STATUS', 'YCOUNT'
    ]

    def __init__(self, **kwargs):
        self.F = kwargs.get(
            'F', None)
        self.FID = kwargs.get(
            'FID', None)
        self.IID = kwargs.get(
            'IID', None)
        self.PEDSEX = kwargs.get(
            'PEDSEX', None)
        self.SNPSEX = kwargs.get(
            'SNPSEX', None)
        self.STATUS = kwargs.get(
            'STATUS', None)
        self.YCOUNT = kwargs.get(
            'YCOUNT', None)


class PreservationMethod(object):
    """
    No documentation
    """
    FFPE = "FFPE"
    FF = "FF"
    UNKNOWN = "UNKNOWN"
    BLOOD = "BLOOD"
    GL = "GL"
    SALIVA = "SALIVA"
    LEUK = "LEUK"

    def __hash__(self):
        return str(self).__hash__()


class RDFamilyChange(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "RDFamilyChange", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "FamilyId", "type": "string", "doc": ""}, {"name": "code", "type": {"type": "enum",
"name": "RDFamilyChangeCode", "doc": "", "symbols": ["FamilyAdded", "FamilyDeleted",
"ProbandChanged", "ParticipantAdded", "ParticipantRemoved", "ConsentStatusChanged",
"AffectionStatusChanged", "PanelAssignmentChanged", "SexChanged", "SampleChanged"]}, "doc": ""},
{"name": "Family", "type": {"type": "record", "name": "Pedigree", "doc": "", "fields": [{"name":
"versionControl", "type": {"type": "record", "name": "VersionControl", "fields": [{"name":
"GitVersionControl", "type": "string", "doc": "", "default": "3.0.0"}]}, "doc": ""}, {"name":
"gelFamilyId", "type": "string", "doc": ""}, {"name": "participants", "type": {"type": "array",
"items": {"type": "record", "name": "RDParticipant", "doc": "", "fields": [{"name":
"versionControl", "type": "VersionControl", "doc": ""}, {"name": "pedigreeId", "type": "int", "doc":
""}, {"name": "isProband", "type": "boolean", "doc": ""}, {"name": "gelId", "type": ["null",
"string"], "doc": ""}, {"name": "gelFamilyId", "type": "string", "doc": ""}, {"name":
"gelSuperFamilyId", "type": ["null", "string"], "doc": ""}, {"name": "sex", "type": {"type": "enum",
"name": "Sex", "doc": "", "symbols": ["male", "female", "unknown", "undetermined"]}, "doc": ""},
{"name": "personKaryotipicSex", "type": ["null", {"type": "enum", "name": "PersonKaryotipicSex",
"doc": "", "symbols": ["unknown", "XX", "XY", "XO", "XXY", "XXX", "XXYY", "XXXY", "XXXX", "XYY",
"other"]}], "doc": ""}, {"name": "yearOfBirth", "type": ["null", "string"], "doc": ""}, {"name":
"fatherId", "type": ["null", "int"], "doc": ""}, {"name": "motherId", "type": ["null", "int"],
"doc": ""}, {"name": "superFatherId", "type": ["null", "int"], "doc": ""}, {"name": "superMotherId",
"type": ["null", "int"], "doc": ""}, {"name": "twinGroup", "type": ["null", "int"], "doc": ""},
{"name": "monozygotic", "type": ["null", {"type": "enum", "name": "TernaryOption", "doc": "",
"symbols": ["yes", "no", "unknown"]}], "doc": ""}, {"name": "adoptedStatus", "type": {"type":
"enum", "name": "AdoptedStatus", "doc": "", "symbols": ["not_adopted", "adoptedin", "adoptedout"]},
"doc": ""}, {"name": "lifeStatus", "type": {"type": "enum", "name": "LifeStatus", "doc": "",
"symbols": ["alive", "aborted", "deceased", "unborn", "stillborn", "miscarriage"]}, "doc": ""},
{"name": "consanguineousParents", "type": "TernaryOption", "doc": ""}, {"name":
"consanguineousPopulation", "type": ["null", "string"], "doc": ""}, {"name": "affectionStatus",
"type": {"type": "enum", "name": "AffectionStatus", "doc": "", "symbols": ["unaffected", "affected",
"unknown"]}, "doc": ""}, {"name": "disorderList", "type": {"type": "array", "items": {"type":
"record", "name": "Disorder", "doc": "", "fields": [{"name": "diseaseGroup", "type": ["null",
"string"], "doc": ""}, {"name": "diseaseSubGroup", "type": ["null", "string"], "doc": ""}, {"name":
"specificDisease", "type": ["null", "string"], "doc": ""}, {"name": "ageOfOnset", "type": ["null",
"string"], "doc": ""}]}}, "doc": ""}, {"name": "hpoTermList", "type": {"type": "array", "items":
{"type": "record", "name": "HpoTerm", "doc": "", "fields": [{"name": "term", "type": "string",
"doc": ""}, {"name": "termPresence", "type": ["null", "boolean"], "doc": ""}, {"name": "modifiers",
"type": ["null", {"type": "map", "values": "string"}], "doc": ""}, {"name": "ageOfOnset", "type":
["null", "string"], "doc": ""}]}}, "doc": ""}, {"name": "ancestries", "type": {"type": "record",
"name": "Ancestries", "doc": "", "fields": [{"name": "mothersEthnicOrigin", "type": ["null",
{"type": "enum", "name": "EthnicCategory", "doc": "", "symbols": ["D", "E", "F", "G", "A", "B", "C",
"L", "M", "N", "H", "J", "K", "P", "S", "R", "Z"]}], "doc": ""}, {"name":
"mothersOtherRelevantAncestry", "type": ["null", "string"], "doc": ""}, {"name":
"fathersEthnicOrigin", "type": ["null", "EthnicCategory"], "doc": ""}, {"name":
"fathersOtherRelevantAncestry", "type": ["null", "string"], "doc": ""}, {"name":
"chiSquare1KGenomesPhase3Pop", "type": ["null", {"type": "array", "items": {"type": "record",
"name": "ChiSquare1KGenomesPhase3Pop", "doc": "", "fields": [{"name": "kGSuperPopCategory", "type":
{"type": "enum", "name": "KGSuperPopCategory", "doc": "", "symbols": ["AFR", "AMR", "EAS", "EUR",
"SAS"]}, "doc": ""}, {"name": "kGPopCategory", "type": ["null", {"type": "enum", "name":
"KGPopCategory", "doc": "", "symbols": ["ACB", "ASW", "BEB", "CDX", "CEU", "CHB", "CHS", "CLM",
"ESN", "FIN", "GBR", "GIH", "GWD", "IBS", "ITU", "JPT", "KHV", "LWK", "MSL", "MXL", "PEL", "PJL",
"PUR", "STU", "TSI", "YRI"]}], "doc": ""}, {"name": "chiSquare", "type": "float", "doc": ""}]}}],
"doc": ""}]}, "doc": ""}, {"name": "consentStatus", "type": {"type": "record", "name":
"ConsentStatus", "doc": "", "fields": [{"name": "programmeConsent", "type": "boolean", "doc": "",
"default": false}, {"name": "primaryFindingConsent", "type": "boolean", "doc": "", "default":
false}, {"name": "secondaryFindingConsent", "type": "boolean", "doc": "", "default": false},
{"name": "carrierStatusConsent", "type": "boolean", "doc": "", "default": false}]}, "doc": ""},
{"name": "samples", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name":
"inbreedingCoefficient", "type": ["null", {"type": "record", "name": "InbreedingCoefficient", "doc":
"", "fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name": "program", "type":
"string", "doc": ""}, {"name": "version", "type": "string", "doc": ""}, {"name": "estimationMethod",
"type": "string", "doc": ""}, {"name": "coefficient", "type": "double", "doc": ""}, {"name":
"standardError", "type": ["null", "double"], "doc": ""}]}], "doc": ""}, {"name":
"additionalInformation", "type": ["null", {"type": "map", "values": "string"}], "doc": ""}]}}},
{"name": "analysisPanels", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"AnalysisPanel", "fields": [{"name": "specificDisease", "type": "string"}, {"name": "panelName",
"type": "string"}, {"name": "panelVersion", "type": ["null", "string"]}, {"name": "review_outcome",
"type": "string"}, {"name": "multiple_genetic_origins", "type": "string"}]}}]}, {"name":
"diseasePenetrances", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"DiseasePenetrance", "fields": [{"name": "specificDisease", "type": "string"}, {"name":
"penetrance", "type": {"type": "enum", "name": "Penetrance", "doc": "", "symbols": ["complete",
"incomplete"]}}]}}]}]}, "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "Family",
        "FamilyId",
        "code",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'Family': Pedigree,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'Family': Pedigree,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'Family', 'FamilyId', 'code'
    ]

    def __init__(self, **kwargs):
        self.Family = kwargs.get(
            'Family', Pedigree())
        self.FamilyId = kwargs.get(
            'FamilyId', None)
        self.code = kwargs.get(
            'code', None)


class RDFamilyChangeCode(object):
    """
    This code define the change type:  * `FamilyAdded`: This is a new
    family. * `FamilyDeleted`: This family should be removed. *
    `ProbandChanged`: The proband participant is now a different
    member of the family. * `ParticipantAdded`: A new participant has
    been sequenced and added to the family. * `ParticipantRemoved`: A
    participant has been removed. * `ConsentStatusChanged`: One or
    more participant in this family has a different consent status. *
    `AffectionStatusChanged`: HPOterms or Disorder changed in one or
    more participants in this family. * `PanelAssignmentChanged`: Gene
    Panels has changed in this family. * `SexChanged`: Sex has changed
    for one or more participants in this family. * `SampleChanged`:
    The sample/s associated to one or more participant in this family
    has changed.
    """
    FamilyAdded = "FamilyAdded"
    FamilyDeleted = "FamilyDeleted"
    ProbandChanged = "ProbandChanged"
    ParticipantAdded = "ParticipantAdded"
    ParticipantRemoved = "ParticipantRemoved"
    ConsentStatusChanged = "ConsentStatusChanged"
    AffectionStatusChanged = "AffectionStatusChanged"
    PanelAssignmentChanged = "PanelAssignmentChanged"
    SexChanged = "SexChanged"
    SampleChanged = "SampleChanged"

    def __hash__(self):
        return str(self).__hash__()


class RDParticipant(ProtocolElement):
    """
    This defines a RD Participant (demographics and pedigree
    information)
    """
    _schemaSource = """
{"type": "record", "name": "RDParticipant", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "versionControl", "type": {"type": "record", "name": "VersionControl", "fields":
[{"name": "GitVersionControl", "type": "string", "doc": "", "default": "3.0.0"}]}, "doc": ""},
{"name": "pedigreeId", "type": "int", "doc": ""}, {"name": "isProband", "type": "boolean", "doc":
""}, {"name": "gelId", "type": ["null", "string"], "doc": ""}, {"name": "gelFamilyId", "type":
"string", "doc": ""}, {"name": "gelSuperFamilyId", "type": ["null", "string"], "doc": ""}, {"name":
"sex", "type": {"type": "enum", "name": "Sex", "doc": "", "symbols": ["male", "female", "unknown",
"undetermined"]}, "doc": ""}, {"name": "personKaryotipicSex", "type": ["null", {"type": "enum",
"name": "PersonKaryotipicSex", "doc": "", "symbols": ["unknown", "XX", "XY", "XO", "XXY", "XXX",
"XXYY", "XXXY", "XXXX", "XYY", "other"]}], "doc": ""}, {"name": "yearOfBirth", "type": ["null",
"string"], "doc": ""}, {"name": "fatherId", "type": ["null", "int"], "doc": ""}, {"name":
"motherId", "type": ["null", "int"], "doc": ""}, {"name": "superFatherId", "type": ["null", "int"],
"doc": ""}, {"name": "superMotherId", "type": ["null", "int"], "doc": ""}, {"name": "twinGroup",
"type": ["null", "int"], "doc": ""}, {"name": "monozygotic", "type": ["null", {"type": "enum",
"name": "TernaryOption", "doc": "", "symbols": ["yes", "no", "unknown"]}], "doc": ""}, {"name":
"adoptedStatus", "type": {"type": "enum", "name": "AdoptedStatus", "doc": "", "symbols":
["not_adopted", "adoptedin", "adoptedout"]}, "doc": ""}, {"name": "lifeStatus", "type": {"type":
"enum", "name": "LifeStatus", "doc": "", "symbols": ["alive", "aborted", "deceased", "unborn",
"stillborn", "miscarriage"]}, "doc": ""}, {"name": "consanguineousParents", "type": "TernaryOption",
"doc": ""}, {"name": "consanguineousPopulation", "type": ["null", "string"], "doc": ""}, {"name":
"affectionStatus", "type": {"type": "enum", "name": "AffectionStatus", "doc": "", "symbols":
["unaffected", "affected", "unknown"]}, "doc": ""}, {"name": "disorderList", "type": {"type":
"array", "items": {"type": "record", "name": "Disorder", "doc": "", "fields": [{"name":
"diseaseGroup", "type": ["null", "string"], "doc": ""}, {"name": "diseaseSubGroup", "type": ["null",
"string"], "doc": ""}, {"name": "specificDisease", "type": ["null", "string"], "doc": ""}, {"name":
"ageOfOnset", "type": ["null", "string"], "doc": ""}]}}, "doc": ""}, {"name": "hpoTermList", "type":
{"type": "array", "items": {"type": "record", "name": "HpoTerm", "doc": "", "fields": [{"name":
"term", "type": "string", "doc": ""}, {"name": "termPresence", "type": ["null", "boolean"], "doc":
""}, {"name": "modifiers", "type": ["null", {"type": "map", "values": "string"}], "doc": ""},
{"name": "ageOfOnset", "type": ["null", "string"], "doc": ""}]}}, "doc": ""}, {"name": "ancestries",
"type": {"type": "record", "name": "Ancestries", "doc": "", "fields": [{"name":
"mothersEthnicOrigin", "type": ["null", {"type": "enum", "name": "EthnicCategory", "doc": "",
"symbols": ["D", "E", "F", "G", "A", "B", "C", "L", "M", "N", "H", "J", "K", "P", "S", "R", "Z"]}],
"doc": ""}, {"name": "mothersOtherRelevantAncestry", "type": ["null", "string"], "doc": ""},
{"name": "fathersEthnicOrigin", "type": ["null", "EthnicCategory"], "doc": ""}, {"name":
"fathersOtherRelevantAncestry", "type": ["null", "string"], "doc": ""}, {"name":
"chiSquare1KGenomesPhase3Pop", "type": ["null", {"type": "array", "items": {"type": "record",
"name": "ChiSquare1KGenomesPhase3Pop", "doc": "", "fields": [{"name": "kGSuperPopCategory", "type":
{"type": "enum", "name": "KGSuperPopCategory", "doc": "", "symbols": ["AFR", "AMR", "EAS", "EUR",
"SAS"]}, "doc": ""}, {"name": "kGPopCategory", "type": ["null", {"type": "enum", "name":
"KGPopCategory", "doc": "", "symbols": ["ACB", "ASW", "BEB", "CDX", "CEU", "CHB", "CHS", "CLM",
"ESN", "FIN", "GBR", "GIH", "GWD", "IBS", "ITU", "JPT", "KHV", "LWK", "MSL", "MXL", "PEL", "PJL",
"PUR", "STU", "TSI", "YRI"]}], "doc": ""}, {"name": "chiSquare", "type": "float", "doc": ""}]}}],
"doc": ""}]}, "doc": ""}, {"name": "consentStatus", "type": {"type": "record", "name":
"ConsentStatus", "doc": "", "fields": [{"name": "programmeConsent", "type": "boolean", "doc": "",
"default": false}, {"name": "primaryFindingConsent", "type": "boolean", "doc": "", "default":
false}, {"name": "secondaryFindingConsent", "type": "boolean", "doc": "", "default": false},
{"name": "carrierStatusConsent", "type": "boolean", "doc": "", "default": false}]}, "doc": ""},
{"name": "samples", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name":
"inbreedingCoefficient", "type": ["null", {"type": "record", "name": "InbreedingCoefficient", "doc":
"", "fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name": "program", "type":
"string", "doc": ""}, {"name": "version", "type": "string", "doc": ""}, {"name": "estimationMethod",
"type": "string", "doc": ""}, {"name": "coefficient", "type": "double", "doc": ""}, {"name":
"standardError", "type": ["null", "double"], "doc": ""}]}], "doc": ""}, {"name":
"additionalInformation", "type": ["null", {"type": "map", "values": "string"}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "additionalInformation",
        "adoptedStatus",
        "affectionStatus",
        "ancestries",
        "consanguineousParents",
        "consanguineousPopulation",
        "consentStatus",
        "disorderList",
        "fatherId",
        "gelFamilyId",
        "gelId",
        "gelSuperFamilyId",
        "hpoTermList",
        "inbreedingCoefficient",
        "isProband",
        "lifeStatus",
        "monozygotic",
        "motherId",
        "pedigreeId",
        "personKaryotipicSex",
        "samples",
        "sex",
        "superFatherId",
        "superMotherId",
        "twinGroup",
        "versionControl",
        "yearOfBirth",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'ancestries': Ancestries,
            'consentStatus': ConsentStatus,
            'disorderList': Disorder,
            'hpoTermList': HpoTerm,
            'inbreedingCoefficient': InbreedingCoefficient,
            'versionControl': VersionControl,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'ancestries': Ancestries,
            'consentStatus': ConsentStatus,
            'disorderList': Disorder,
            'hpoTermList': HpoTerm,
            'inbreedingCoefficient': InbreedingCoefficient,
            'versionControl': VersionControl,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'additionalInformation', 'adoptedStatus', 'affectionStatus',
        'ancestries', 'consanguineousParents',
        'consanguineousPopulation', 'consentStatus', 'disorderList',
        'fatherId', 'gelFamilyId', 'gelId', 'gelSuperFamilyId',
        'hpoTermList', 'inbreedingCoefficient', 'isProband',
        'lifeStatus', 'monozygotic', 'motherId', 'pedigreeId',
        'personKaryotipicSex', 'samples', 'sex', 'superFatherId',
        'superMotherId', 'twinGroup', 'versionControl', 'yearOfBirth'
    ]

    def __init__(self, **kwargs):
        self.additionalInformation = kwargs.get(
            'additionalInformation', None)
        self.adoptedStatus = kwargs.get(
            'adoptedStatus', None)
        self.affectionStatus = kwargs.get(
            'affectionStatus', None)
        self.ancestries = kwargs.get(
            'ancestries', Ancestries())
        self.consanguineousParents = kwargs.get(
            'consanguineousParents', None)
        self.consanguineousPopulation = kwargs.get(
            'consanguineousPopulation', None)
        self.consentStatus = kwargs.get(
            'consentStatus', ConsentStatus())
        self.disorderList = kwargs.get(
            'disorderList', None)
        self.fatherId = kwargs.get(
            'fatherId', None)
        self.gelFamilyId = kwargs.get(
            'gelFamilyId', None)
        self.gelId = kwargs.get(
            'gelId', None)
        self.gelSuperFamilyId = kwargs.get(
            'gelSuperFamilyId', None)
        self.hpoTermList = kwargs.get(
            'hpoTermList', None)
        self.inbreedingCoefficient = kwargs.get(
            'inbreedingCoefficient', None)
        self.isProband = kwargs.get(
            'isProband', None)
        self.lifeStatus = kwargs.get(
            'lifeStatus', None)
        self.monozygotic = kwargs.get(
            'monozygotic', None)
        self.motherId = kwargs.get(
            'motherId', None)
        self.pedigreeId = kwargs.get(
            'pedigreeId', None)
        self.personKaryotipicSex = kwargs.get(
            'personKaryotipicSex', None)
        self.samples = kwargs.get(
            'samples', None)
        self.sex = kwargs.get(
            'sex', None)
        self.superFatherId = kwargs.get(
            'superFatherId', None)
        self.superMotherId = kwargs.get(
            'superMotherId', None)
        self.twinGroup = kwargs.get(
            'twinGroup', None)
        self.versionControl = kwargs.get(
            'versionControl', VersionControl())
        self.yearOfBirth = kwargs.get(
            'yearOfBirth', None)


class RareDiseaseExitQuestionnaire(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "RareDiseaseExitQuestionnaire", "namespace":
"org.gel.models.report.avro", "fields": [{"name": "eventDate", "type": "string"}, {"name":
"reporter", "type": "string"}, {"name": "familyLevelQuestions", "type": {"type": "record", "name":
"FamilyLevelQuestions", "fields": [{"name": "caseSolvedFamily", "type": {"type": "enum", "name":
"CaseSolvedFamily", "symbols": ["yes", "no", "partially", "unknown"]}, "doc": ""}, {"name":
"segregationQuestion", "type": {"type": "enum", "name": "SegregationQuestion", "symbols": ["yes",
"no"]}, "doc": ""}, {"name": "additionalComments", "type": "string", "doc": ""}]}}, {"name":
"variantGroupLevelQuestions", "type": {"type": "array", "items": {"type": "record", "name":
"VariantGroupLevelQuestions", "fields": [{"name": "variant_group", "type": "int"}, {"name":
"variantLevelQuestions", "type": {"type": "array", "items": {"type": "record", "name":
"VariantLevelQuestions", "fields": [{"name": "variant_details", "type": "string", "doc": ""},
{"name": "confirmationDecision", "type": {"type": "enum", "name": "ConfirmationDecision", "symbols":
["yes", "no", "na"]}, "doc": ""}, {"name": "confirmationOutcome", "type": {"type": "enum", "name":
"ConfirmationOutcome", "symbols": ["yes", "no", "na"]}, "doc": ""}, {"name": "reportingQuestion",
"type": {"type": "enum", "name": "ReportingQuestion", "symbols": ["yes", "no", "na"]}, "doc": ""},
{"name": "acmgClassification", "type": {"type": "enum", "name": "ACMGClassification", "symbols":
["pathogenic_variant", "likely_pathogenic_variant", "variant_of_unknown_clinical_significance",
"likely_benign_variant", "benign_variant", "not_assessed"]}, "doc": ""}, {"name": "publications",
"type": "string", "doc": ""}]}}}, {"name": "actionability", "type": {"type": "enum", "name":
"Actionability", "symbols": ["yes", "no", "not_yet", "na"]}, "doc": ""}, {"name": "clinicalUtility",
"type": {"type": "array", "items": {"type": "enum", "name": "ClinicalUtility", "symbols": ["none",
"change_in_medication", "surgical_option", "additional_surveillance_for_proband_or_relatives",
"clinical_trial_eligibility", "informs_reproductive_choice", "unknown", "other"]}}, "doc": ""},
{"name": "phenotypesSolved", "type": {"type": "enum", "name": "PhenotypesSolved", "symbols": ["yes",
"no", "partially", "unknown"]}, "doc": ""}, {"name": "phenotypesExplained", "type": ["null",
{"type": "array", "items": "string"}], "doc": ""}]}}}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "eventDate",
        "familyLevelQuestions",
        "reporter",
        "variantGroupLevelQuestions",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'familyLevelQuestions': FamilyLevelQuestions,
            'variantGroupLevelQuestions': VariantGroupLevelQuestions,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'familyLevelQuestions': FamilyLevelQuestions,
            'variantGroupLevelQuestions': VariantGroupLevelQuestions,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'eventDate', 'familyLevelQuestions', 'reporter',
        'variantGroupLevelQuestions'
    ]

    def __init__(self, **kwargs):
        self.eventDate = kwargs.get(
            'eventDate', None)
        self.familyLevelQuestions = kwargs.get(
            'familyLevelQuestions', FamilyLevelQuestions())
        self.reporter = kwargs.get(
            'reporter', None)
        self.variantGroupLevelQuestions = kwargs.get(
            'variantGroupLevelQuestions', None)


class Reason(object):
    """
    No documentation
    """
    duplicate = "duplicate"
    consent = "consent"
    pedigree = "pedigree"
    contamination = "contamination"
    quality = "quality"
    plinksex = "plinksex"
    inbreedingcoefficient = "inbreedingcoefficient"
    in_qc = "in_qc"

    def __hash__(self):
        return str(self).__hash__()


class ReportEvent(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "ReportEvent", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "reportEventId", "type": "string", "doc": ""}, {"name": "phenotype", "type": "string",
"doc": ""}, {"name": "panelName", "type": ["null", "string"], "doc": ""}, {"name": "panelVersion",
"type": ["null", "string"], "doc": ""}, {"name": "modeOfInheritance", "type": {"type": "enum",
"name": "ReportedModeOfInheritance", "doc": "", "symbols": ["monoallelic",
"monoallelic_not_imprinted", "monoallelic_maternally_imprinted", "monoallelic_paternally_imprinted",
"biallelic", "monoallelic_and_biallelic", "monoallelic_and_more_severe_biallelic",
"xlinked_biallelic", "xlinked_monoallelic", "mitochondrial", "unknown"]}, "doc": ""}, {"name":
"genomicFeature", "type": {"type": "record", "name": "GenomicFeature", "fields": [{"name":
"featureType", "type": {"type": "enum", "name": "FeatureTypes", "symbols": ["RegulatoryRegion",
"Gene", "Transcript"]}, "doc": ""}, {"name": "ensemblId", "type": "string", "doc": ""}, {"name":
"HGNC", "type": ["null", "string"], "doc": ""}, {"name": "other_ids", "type": ["null", {"type":
"map", "values": "string"}], "doc": ""}]}, "doc": ""}, {"name": "penetrance", "type": {"type":
"enum", "name": "Penetrance", "doc": "", "symbols": ["complete", "incomplete"]}, "doc": ""},
{"name": "score", "type": "float", "doc": ""}, {"name": "vendorSpecificScores", "type": ["null",
{"type": "map", "values": "float"}], "doc": ""}, {"name": "variantClassification", "type": ["null",
{"type": "enum", "name": "VariantClassification", "doc": "", "symbols": ["BENIGN", "LIKELY_BENIGN",
"VUS", "LIKELY_PATHOGENIC", "PATHOGENIC"]}], "doc": ""}, {"name": "fullyExplainsPhenotype", "type":
["null", "boolean"], "doc": ""}, {"name": "groupOfVariants", "type": ["null", "int"], "doc": ""},
{"name": "eventJustification", "type": "string", "doc": ""}, {"name": "tier", "type": ["null",
{"type": "enum", "name": "Tier", "doc": "", "symbols": ["NONE", "TIER1", "TIER2", "TIER3"]}], "doc":
""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "eventJustification",
        "fullyExplainsPhenotype",
        "genomicFeature",
        "groupOfVariants",
        "modeOfInheritance",
        "panelName",
        "panelVersion",
        "penetrance",
        "phenotype",
        "reportEventId",
        "score",
        "tier",
        "variantClassification",
        "vendorSpecificScores",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'genomicFeature': GenomicFeature,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'genomicFeature': GenomicFeature,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'eventJustification', 'fullyExplainsPhenotype',
        'genomicFeature', 'groupOfVariants', 'modeOfInheritance',
        'panelName', 'panelVersion', 'penetrance', 'phenotype',
        'reportEventId', 'score', 'tier', 'variantClassification',
        'vendorSpecificScores'
    ]

    def __init__(self, **kwargs):
        self.eventJustification = kwargs.get(
            'eventJustification', None)
        self.fullyExplainsPhenotype = kwargs.get(
            'fullyExplainsPhenotype', None)
        self.genomicFeature = kwargs.get(
            'genomicFeature', GenomicFeature())
        self.groupOfVariants = kwargs.get(
            'groupOfVariants', None)
        self.modeOfInheritance = kwargs.get(
            'modeOfInheritance', None)
        self.panelName = kwargs.get(
            'panelName', None)
        self.panelVersion = kwargs.get(
            'panelVersion', None)
        self.penetrance = kwargs.get(
            'penetrance', None)
        self.phenotype = kwargs.get(
            'phenotype', None)
        self.reportEventId = kwargs.get(
            'reportEventId', None)
        self.score = kwargs.get(
            'score', None)
        self.tier = kwargs.get(
            'tier', None)
        self.variantClassification = kwargs.get(
            'variantClassification', None)
        self.vendorSpecificScores = kwargs.get(
            'vendorSpecificScores', None)


class ReportEventCancer(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "ReportEventCancer", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "reportEventId", "type": "string", "doc": ""}, {"name": "genomicFeatureCancer", "type":
{"type": "record", "name": "GenomicFeatureCancer", "fields": [{"name": "featureType", "type":
{"type": "enum", "name": "FeatureTypes", "symbols": ["RegulatoryRegion", "Gene", "Transcript"]},
"doc": ""}, {"name": "ensemblId", "type": "string", "doc": ""}, {"name": "refSeqTranscriptId",
"type": "string", "doc": ""}, {"name": "refSeqProteinId", "type": "string", "doc": ""}, {"name":
"geneName", "type": "string", "doc": ""}, {"name": "roleInCancer", "type": ["null", "string"],
"doc": ""}]}, "doc": ""}, {"name": "soTerms", "type": {"type": "array", "items": "string"}, "doc":
""}, {"name": "soNames", "type": {"type": "array", "items": "string"}, "doc": ""}, {"name":
"actions", "type": {"type": "array", "items": {"type": "record", "name": "Actions", "fields":
[{"name": "actionType", "type": "string"}, {"name": "evidence", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}, {"name": "drug", "type": ["null", "string"], "doc": ""}, {"name":
"status", "type": ["null", "string"], "doc": ""}, {"name": "variantActionable", "type": "boolean",
"doc": ""}, {"name": "comments", "type": ["null", {"type": "array", "items": "string"}], "doc": ""},
{"name": "url", "type": ["null", "string"], "doc": ""}, {"name": "evidenceType", "type": ["null",
"string"], "doc": ""}, {"name": "source", "type": "string", "doc": ""}]}}, "doc": ""}, {"name":
"tier", "type": ["null", {"type": "enum", "name": "Tier", "doc": "", "symbols": ["NONE", "TIER1",
"TIER2", "TIER3"]}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "actions",
        "genomicFeatureCancer",
        "reportEventId",
        "soNames",
        "soTerms",
        "tier",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'actions': Actions,
            'genomicFeatureCancer': GenomicFeatureCancer,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'actions': Actions,
            'genomicFeatureCancer': GenomicFeatureCancer,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'actions', 'genomicFeatureCancer', 'reportEventId', 'soNames',
        'soTerms', 'tier'
    ]

    def __init__(self, **kwargs):
        self.actions = kwargs.get(
            'actions', None)
        self.genomicFeatureCancer = kwargs.get(
            'genomicFeatureCancer', GenomicFeatureCancer())
        self.reportEventId = kwargs.get(
            'reportEventId', None)
        self.soNames = kwargs.get(
            'soNames', None)
        self.soTerms = kwargs.get(
            'soTerms', None)
        self.tier = kwargs.get(
            'tier', None)


class ReportedModeOfInheritance(object):
    """
    An enumeration for the different mode of inheritances:  *
    `monoallelic_not_imprinted`: MONOALLELIC, autosomal or
    pseudoautosomal, not imprinted *
    `monoallelic_maternally_imprinted`: MONOALLELIC, autosomal or
    pseudoautosomal, maternally imprinted (paternal allele expressed)
    * `monoallelic_paternally_imprinted`: MONOALLELIC, autosomal or
    pseudoautosomal, paternally imprinted (maternal allele expressed)
    * `monoallelic`: MONOALLELIC, autosomal or pseudoautosomal,
    imprinted status unknown * `biallelic`: BIALLELIC, autosomal or
    pseudoautosomal * `monoallelic_and_biallelic`: BOTH monoallelic
    and biallelic, autosomal or pseudoautosomal *
    `monoallelic_and_more_severe_biallelic`: BOTH monoallelic and
    biallelic, autosomal or pseudoautosomal (but BIALLELIC mutations
    cause a more SEVERE disease form), autosomal or pseudoautosomal *
    `xlinked_biallelic`: X-LINKED: hemizygous mutation in males,
    biallelic mutations in females * `xlinked_monoallelic`: X linked:
    hemizygous mutation in males, monoallelic mutations in females may
    cause disease (may be less severe, later onset than males) *
    `mitochondrial`: MITOCHONDRIAL * `unknown`: Unknown
    """
    monoallelic = "monoallelic"
    monoallelic_not_imprinted = "monoallelic_not_imprinted"
    monoallelic_maternally_imprinted = "monoallelic_maternally_imprinted"
    monoallelic_paternally_imprinted = "monoallelic_paternally_imprinted"
    biallelic = "biallelic"
    monoallelic_and_biallelic = "monoallelic_and_biallelic"
    monoallelic_and_more_severe_biallelic = "monoallelic_and_more_severe_biallelic"
    xlinked_biallelic = "xlinked_biallelic"
    xlinked_monoallelic = "xlinked_monoallelic"
    mitochondrial = "mitochondrial"
    unknown = "unknown"

    def __hash__(self):
        return str(self).__hash__()


class ReportedSomaticStructuralVariants(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "ReportedSomaticStructuralVariants", "namespace":
"org.gel.models.report.avro", "fields": [{"name": "reportedStructuralVariantCancer", "type":
{"type": "record", "name": "ReportedStructuralVariantCancer", "fields": [{"name": "chromosome",
"type": "string", "doc": ""}, {"name": "start", "type": "int", "doc": ""}, {"name": "end", "type":
"int", "doc": ""}, {"name": "type", "type": "string", "doc": ""}, {"name": "reference", "type":
"string", "doc": ""}, {"name": "alternate", "type": "string", "doc": ""}, {"name":
"additionalTextualVariantAnnotations", "type": ["null", {"type": "map", "values": "string"}], "doc":
""}, {"name": "additionalNumericVariantAnnotations", "type": ["null", {"type": "map", "values":
"float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array", "items": "string"}],
"doc": ""}]}, "doc": ""}, {"name": "somaticOrGermline", "type": {"type": "enum", "name":
"SomaticOrGermline", "doc": "", "symbols": ["unknown", "somatic", "germline"]}, "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "reportedStructuralVariantCancer",
        "somaticOrGermline",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'reportedStructuralVariantCancer': ReportedStructuralVariantCancer,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'reportedStructuralVariantCancer': ReportedStructuralVariantCancer,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'reportedStructuralVariantCancer', 'somaticOrGermline'
    ]

    def __init__(self, **kwargs):
        self.reportedStructuralVariantCancer = kwargs.get(
            'reportedStructuralVariantCancer', ReportedStructuralVariantCancer())
        self.somaticOrGermline = kwargs.get(
            'somaticOrGermline', None)


class ReportedSomaticVariants(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "ReportedSomaticVariants", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "reportedVariantCancer", "type": {"type": "record", "name":
"ReportedVariantCancer", "fields": [{"name": "chromosome", "type": "string", "doc": ""}, {"name":
"position", "type": "int", "doc": ""}, {"name": "reference", "type": "string", "doc": ""}, {"name":
"alternate", "type": "string", "doc": ""}, {"name": "CosmicIds", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}, {"name": "ClinVarIds", "type": ["null", {"type": "array", "items":
"string"}], "doc": ""}, {"name": "dbSNPid", "type": ["null", "string"], "doc": ""}, {"name":
"cDNAchange", "type": ["null", "string"], "doc": ""}, {"name": "proteinChange", "type": ["null",
"string"], "doc": ""}, {"name": "depthReference", "type": ["null", "int"], "doc": ""}, {"name":
"depthAlternate", "type": ["null", "int"], "doc": ""}, {"name": "VAF", "type": ["null", "double"],
"doc": ""}, {"name": "commonAF", "type": ["null", "int"], "doc": ""}, {"name": "IHP", "type":
["null", "int"], "doc": ""}, {"name": "additionalTextualVariantAnnotations", "type": ["null",
{"type": "map", "values": "string"}], "doc": ""}, {"name": "additionalNumericVariantAnnotations",
"type": ["null", {"type": "map", "values": "float"}], "doc": ""}, {"name": "comments", "type":
["null", {"type": "array", "items": "string"}], "doc": ""}, {"name": "reportEvents", "type":
{"type": "array", "items": {"type": "record", "name": "ReportEventCancer", "fields": [{"name":
"reportEventId", "type": "string", "doc": ""}, {"name": "genomicFeatureCancer", "type": {"type":
"record", "name": "GenomicFeatureCancer", "fields": [{"name": "featureType", "type": {"type":
"enum", "name": "FeatureTypes", "symbols": ["RegulatoryRegion", "Gene", "Transcript"]}, "doc": ""},
{"name": "ensemblId", "type": "string", "doc": ""}, {"name": "refSeqTranscriptId", "type": "string",
"doc": ""}, {"name": "refSeqProteinId", "type": "string", "doc": ""}, {"name": "geneName", "type":
"string", "doc": ""}, {"name": "roleInCancer", "type": ["null", "string"], "doc": ""}]}, "doc": ""},
{"name": "soTerms", "type": {"type": "array", "items": "string"}, "doc": ""}, {"name": "soNames",
"type": {"type": "array", "items": "string"}, "doc": ""}, {"name": "actions", "type": {"type":
"array", "items": {"type": "record", "name": "Actions", "fields": [{"name": "actionType", "type":
"string"}, {"name": "evidence", "type": ["null", {"type": "array", "items": "string"}], "doc": ""},
{"name": "drug", "type": ["null", "string"], "doc": ""}, {"name": "status", "type": ["null",
"string"], "doc": ""}, {"name": "variantActionable", "type": "boolean", "doc": ""}, {"name":
"comments", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name": "url",
"type": ["null", "string"], "doc": ""}, {"name": "evidenceType", "type": ["null", "string"], "doc":
""}, {"name": "source", "type": "string", "doc": ""}]}}, "doc": ""}, {"name": "tier", "type":
["null", {"type": "enum", "name": "Tier", "doc": "", "symbols": ["NONE", "TIER1", "TIER2",
"TIER3"]}], "doc": ""}]}}}]}, "doc": ""}, {"name": "somaticOrGermline", "type": {"type": "enum",
"name": "SomaticOrGermline", "doc": "", "symbols": ["unknown", "somatic", "germline"]}, "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "reportedVariantCancer",
        "somaticOrGermline",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'reportedVariantCancer': ReportedVariantCancer,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'reportedVariantCancer': ReportedVariantCancer,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'reportedVariantCancer', 'somaticOrGermline'
    ]

    def __init__(self, **kwargs):
        self.reportedVariantCancer = kwargs.get(
            'reportedVariantCancer', ReportedVariantCancer())
        self.somaticOrGermline = kwargs.get(
            'somaticOrGermline', None)


class ReportedStructuralVariant(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "ReportedStructuralVariant", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "chromosome", "type": "string", "doc": ""}, {"name": "start", "type": "int",
"doc": ""}, {"name": "end", "type": "int", "doc": ""}, {"name": "type", "type": "string", "doc":
""}, {"name": "reference", "type": "string", "doc": ""}, {"name": "alternate", "type": "string",
"doc": ""}, {"name": "calledGenotypes", "type": {"type": "array", "items": {"type": "record",
"name": "CalledGenotype", "doc": "", "fields": [{"name": "gelId", "type": "string", "doc": ""},
{"name": "sampleId", "type": "string", "doc": ""}, {"name": "genotype", "type": {"type": "enum",
"name": "Zygosity", "doc": "", "symbols": ["reference_homozygous", "heterozygous",
"alternate_homozygous", "missing", "half_missing_reference", "half_missing_alternate",
"alternate_hemizigous", "reference_hemizigous", "unk"]}, "doc": ""}, {"name": "phaseSet", "type":
["null", "int"], "doc": ""}, {"name": "depthReference", "type": ["null", "int"], "doc": ""},
{"name": "depthAlternate", "type": ["null", "int"], "doc": ""}, {"name": "copyNumber", "type":
["null", "int"], "doc": ""}]}}}, {"name": "reportEvents", "type": {"type": "array", "items":
{"type": "record", "name": "ReportEvent", "fields": [{"name": "reportEventId", "type": "string",
"doc": ""}, {"name": "phenotype", "type": "string", "doc": ""}, {"name": "panelName", "type":
["null", "string"], "doc": ""}, {"name": "panelVersion", "type": ["null", "string"], "doc": ""},
{"name": "modeOfInheritance", "type": {"type": "enum", "name": "ReportedModeOfInheritance", "doc":
"", "symbols": ["monoallelic", "monoallelic_not_imprinted", "monoallelic_maternally_imprinted",
"monoallelic_paternally_imprinted", "biallelic", "monoallelic_and_biallelic",
"monoallelic_and_more_severe_biallelic", "xlinked_biallelic", "xlinked_monoallelic",
"mitochondrial", "unknown"]}, "doc": ""}, {"name": "genomicFeature", "type": {"type": "record",
"name": "GenomicFeature", "fields": [{"name": "featureType", "type": {"type": "enum", "name":
"FeatureTypes", "symbols": ["RegulatoryRegion", "Gene", "Transcript"]}, "doc": ""}, {"name":
"ensemblId", "type": "string", "doc": ""}, {"name": "HGNC", "type": ["null", "string"], "doc": ""},
{"name": "other_ids", "type": ["null", {"type": "map", "values": "string"}], "doc": ""}]}, "doc":
""}, {"name": "penetrance", "type": {"type": "enum", "name": "Penetrance", "doc": "", "symbols":
["complete", "incomplete"]}, "doc": ""}, {"name": "score", "type": "float", "doc": ""}, {"name":
"vendorSpecificScores", "type": ["null", {"type": "map", "values": "float"}], "doc": ""}, {"name":
"variantClassification", "type": ["null", {"type": "enum", "name": "VariantClassification", "doc":
"", "symbols": ["BENIGN", "LIKELY_BENIGN", "VUS", "LIKELY_PATHOGENIC", "PATHOGENIC"]}], "doc": ""},
{"name": "fullyExplainsPhenotype", "type": ["null", "boolean"], "doc": ""}, {"name":
"groupOfVariants", "type": ["null", "int"], "doc": ""}, {"name": "eventJustification", "type":
"string", "doc": ""}, {"name": "tier", "type": ["null", {"type": "enum", "name": "Tier", "doc": "",
"symbols": ["NONE", "TIER1", "TIER2", "TIER3"]}], "doc": ""}]}}, "doc": ""}, {"name":
"additionalTextualVariantAnnotations", "type": ["null", {"type": "map", "values": "string"}], "doc":
""}, {"name": "evidenceIds", "type": ["null", {"type": "map", "values": "string"}], "doc": ""},
{"name": "additionalNumericVariantAnnotations", "type": ["null", {"type": "map", "values":
"float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array", "items": "string"}],
"doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "additionalNumericVariantAnnotations",
        "additionalTextualVariantAnnotations",
        "alternate",
        "calledGenotypes",
        "chromosome",
        "comments",
        "end",
        "evidenceIds",
        "reference",
        "reportEvents",
        "start",
        "type",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'calledGenotypes': CalledGenotype,
            'reportEvents': ReportEvent,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'calledGenotypes': CalledGenotype,
            'reportEvents': ReportEvent,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'additionalNumericVariantAnnotations',
        'additionalTextualVariantAnnotations', 'alternate',
        'calledGenotypes', 'chromosome', 'comments', 'end',
        'evidenceIds', 'reference', 'reportEvents', 'start', 'type'
    ]

    def __init__(self, **kwargs):
        self.additionalNumericVariantAnnotations = kwargs.get(
            'additionalNumericVariantAnnotations', None)
        self.additionalTextualVariantAnnotations = kwargs.get(
            'additionalTextualVariantAnnotations', None)
        self.alternate = kwargs.get(
            'alternate', None)
        self.calledGenotypes = kwargs.get(
            'calledGenotypes', None)
        self.chromosome = kwargs.get(
            'chromosome', None)
        self.comments = kwargs.get(
            'comments', None)
        self.end = kwargs.get(
            'end', None)
        self.evidenceIds = kwargs.get(
            'evidenceIds', None)
        self.reference = kwargs.get(
            'reference', None)
        self.reportEvents = kwargs.get(
            'reportEvents', None)
        self.start = kwargs.get(
            'start', None)
        self.type = kwargs.get(
            'type', None)


class ReportedStructuralVariantCancer(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "ReportedStructuralVariantCancer", "namespace":
"org.gel.models.report.avro", "fields": [{"name": "chromosome", "type": "string", "doc": ""},
{"name": "start", "type": "int", "doc": ""}, {"name": "end", "type": "int", "doc": ""}, {"name":
"type", "type": "string", "doc": ""}, {"name": "reference", "type": "string", "doc": ""}, {"name":
"alternate", "type": "string", "doc": ""}, {"name": "additionalTextualVariantAnnotations", "type":
["null", {"type": "map", "values": "string"}], "doc": ""}, {"name":
"additionalNumericVariantAnnotations", "type": ["null", {"type": "map", "values": "float"}], "doc":
""}, {"name": "comments", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "additionalNumericVariantAnnotations",
        "additionalTextualVariantAnnotations",
        "alternate",
        "chromosome",
        "comments",
        "end",
        "reference",
        "start",
        "type",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'additionalNumericVariantAnnotations',
        'additionalTextualVariantAnnotations', 'alternate',
        'chromosome', 'comments', 'end', 'reference', 'start', 'type'
    ]

    def __init__(self, **kwargs):
        self.additionalNumericVariantAnnotations = kwargs.get(
            'additionalNumericVariantAnnotations', None)
        self.additionalTextualVariantAnnotations = kwargs.get(
            'additionalTextualVariantAnnotations', None)
        self.alternate = kwargs.get(
            'alternate', None)
        self.chromosome = kwargs.get(
            'chromosome', None)
        self.comments = kwargs.get(
            'comments', None)
        self.end = kwargs.get(
            'end', None)
        self.reference = kwargs.get(
            'reference', None)
        self.start = kwargs.get(
            'start', None)
        self.type = kwargs.get(
            'type', None)


class ReportedVariant(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "ReportedVariant", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "chromosome", "type": "string", "doc": ""}, {"name": "dbSNPid", "type": ["null",
"string"], "doc": ""}, {"name": "position", "type": "int", "doc": ""}, {"name": "reference", "type":
"string", "doc": ""}, {"name": "alternate", "type": "string", "doc": ""}, {"name":
"calledGenotypes", "type": {"type": "array", "items": {"type": "record", "name": "CalledGenotype",
"doc": "", "fields": [{"name": "gelId", "type": "string", "doc": ""}, {"name": "sampleId", "type":
"string", "doc": ""}, {"name": "genotype", "type": {"type": "enum", "name": "Zygosity", "doc": "",
"symbols": ["reference_homozygous", "heterozygous", "alternate_homozygous", "missing",
"half_missing_reference", "half_missing_alternate", "alternate_hemizigous", "reference_hemizigous",
"unk"]}, "doc": ""}, {"name": "phaseSet", "type": ["null", "int"], "doc": ""}, {"name":
"depthReference", "type": ["null", "int"], "doc": ""}, {"name": "depthAlternate", "type": ["null",
"int"], "doc": ""}, {"name": "copyNumber", "type": ["null", "int"], "doc": ""}]}}, "doc": ""},
{"name": "reportEvents", "type": {"type": "array", "items": {"type": "record", "name":
"ReportEvent", "fields": [{"name": "reportEventId", "type": "string", "doc": ""}, {"name":
"phenotype", "type": "string", "doc": ""}, {"name": "panelName", "type": ["null", "string"], "doc":
""}, {"name": "panelVersion", "type": ["null", "string"], "doc": ""}, {"name": "modeOfInheritance",
"type": {"type": "enum", "name": "ReportedModeOfInheritance", "doc": "", "symbols": ["monoallelic",
"monoallelic_not_imprinted", "monoallelic_maternally_imprinted", "monoallelic_paternally_imprinted",
"biallelic", "monoallelic_and_biallelic", "monoallelic_and_more_severe_biallelic",
"xlinked_biallelic", "xlinked_monoallelic", "mitochondrial", "unknown"]}, "doc": ""}, {"name":
"genomicFeature", "type": {"type": "record", "name": "GenomicFeature", "fields": [{"name":
"featureType", "type": {"type": "enum", "name": "FeatureTypes", "symbols": ["RegulatoryRegion",
"Gene", "Transcript"]}, "doc": ""}, {"name": "ensemblId", "type": "string", "doc": ""}, {"name":
"HGNC", "type": ["null", "string"], "doc": ""}, {"name": "other_ids", "type": ["null", {"type":
"map", "values": "string"}], "doc": ""}]}, "doc": ""}, {"name": "penetrance", "type": {"type":
"enum", "name": "Penetrance", "doc": "", "symbols": ["complete", "incomplete"]}, "doc": ""},
{"name": "score", "type": "float", "doc": ""}, {"name": "vendorSpecificScores", "type": ["null",
{"type": "map", "values": "float"}], "doc": ""}, {"name": "variantClassification", "type": ["null",
{"type": "enum", "name": "VariantClassification", "doc": "", "symbols": ["BENIGN", "LIKELY_BENIGN",
"VUS", "LIKELY_PATHOGENIC", "PATHOGENIC"]}], "doc": ""}, {"name": "fullyExplainsPhenotype", "type":
["null", "boolean"], "doc": ""}, {"name": "groupOfVariants", "type": ["null", "int"], "doc": ""},
{"name": "eventJustification", "type": "string", "doc": ""}, {"name": "tier", "type": ["null",
{"type": "enum", "name": "Tier", "doc": "", "symbols": ["NONE", "TIER1", "TIER2", "TIER3"]}], "doc":
""}]}}, "doc": ""}, {"name": "additionalTextualVariantAnnotations", "type": ["null", {"type": "map",
"values": "string"}], "doc": ""}, {"name": "evidenceIds", "type": ["null", {"type": "map", "values":
"string"}], "doc": ""}, {"name": "additionalNumericVariantAnnotations", "type": ["null", {"type":
"map", "values": "float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "additionalNumericVariantAnnotations",
        "additionalTextualVariantAnnotations",
        "alternate",
        "calledGenotypes",
        "chromosome",
        "comments",
        "dbSNPid",
        "evidenceIds",
        "position",
        "reference",
        "reportEvents",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'calledGenotypes': CalledGenotype,
            'reportEvents': ReportEvent,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'calledGenotypes': CalledGenotype,
            'reportEvents': ReportEvent,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'additionalNumericVariantAnnotations',
        'additionalTextualVariantAnnotations', 'alternate',
        'calledGenotypes', 'chromosome', 'comments', 'dbSNPid',
        'evidenceIds', 'position', 'reference', 'reportEvents'
    ]

    def __init__(self, **kwargs):
        self.additionalNumericVariantAnnotations = kwargs.get(
            'additionalNumericVariantAnnotations', None)
        self.additionalTextualVariantAnnotations = kwargs.get(
            'additionalTextualVariantAnnotations', None)
        self.alternate = kwargs.get(
            'alternate', None)
        self.calledGenotypes = kwargs.get(
            'calledGenotypes', None)
        self.chromosome = kwargs.get(
            'chromosome', None)
        self.comments = kwargs.get(
            'comments', None)
        self.dbSNPid = kwargs.get(
            'dbSNPid', None)
        self.evidenceIds = kwargs.get(
            'evidenceIds', None)
        self.position = kwargs.get(
            'position', None)
        self.reference = kwargs.get(
            'reference', None)
        self.reportEvents = kwargs.get(
            'reportEvents', None)


class ReportedVariantCancer(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "ReportedVariantCancer", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "chromosome", "type": "string", "doc": ""}, {"name": "position", "type": "int",
"doc": ""}, {"name": "reference", "type": "string", "doc": ""}, {"name": "alternate", "type":
"string", "doc": ""}, {"name": "CosmicIds", "type": ["null", {"type": "array", "items": "string"}],
"doc": ""}, {"name": "ClinVarIds", "type": ["null", {"type": "array", "items": "string"}], "doc":
""}, {"name": "dbSNPid", "type": ["null", "string"], "doc": ""}, {"name": "cDNAchange", "type":
["null", "string"], "doc": ""}, {"name": "proteinChange", "type": ["null", "string"], "doc": ""},
{"name": "depthReference", "type": ["null", "int"], "doc": ""}, {"name": "depthAlternate", "type":
["null", "int"], "doc": ""}, {"name": "VAF", "type": ["null", "double"], "doc": ""}, {"name":
"commonAF", "type": ["null", "int"], "doc": ""}, {"name": "IHP", "type": ["null", "int"], "doc":
""}, {"name": "additionalTextualVariantAnnotations", "type": ["null", {"type": "map", "values":
"string"}], "doc": ""}, {"name": "additionalNumericVariantAnnotations", "type": ["null", {"type":
"map", "values": "float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}, {"name": "reportEvents", "type": {"type": "array", "items":
{"type": "record", "name": "ReportEventCancer", "fields": [{"name": "reportEventId", "type":
"string", "doc": ""}, {"name": "genomicFeatureCancer", "type": {"type": "record", "name":
"GenomicFeatureCancer", "fields": [{"name": "featureType", "type": {"type": "enum", "name":
"FeatureTypes", "symbols": ["RegulatoryRegion", "Gene", "Transcript"]}, "doc": ""}, {"name":
"ensemblId", "type": "string", "doc": ""}, {"name": "refSeqTranscriptId", "type": "string", "doc":
""}, {"name": "refSeqProteinId", "type": "string", "doc": ""}, {"name": "geneName", "type":
"string", "doc": ""}, {"name": "roleInCancer", "type": ["null", "string"], "doc": ""}]}, "doc": ""},
{"name": "soTerms", "type": {"type": "array", "items": "string"}, "doc": ""}, {"name": "soNames",
"type": {"type": "array", "items": "string"}, "doc": ""}, {"name": "actions", "type": {"type":
"array", "items": {"type": "record", "name": "Actions", "fields": [{"name": "actionType", "type":
"string"}, {"name": "evidence", "type": ["null", {"type": "array", "items": "string"}], "doc": ""},
{"name": "drug", "type": ["null", "string"], "doc": ""}, {"name": "status", "type": ["null",
"string"], "doc": ""}, {"name": "variantActionable", "type": "boolean", "doc": ""}, {"name":
"comments", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name": "url",
"type": ["null", "string"], "doc": ""}, {"name": "evidenceType", "type": ["null", "string"], "doc":
""}, {"name": "source", "type": "string", "doc": ""}]}}, "doc": ""}, {"name": "tier", "type":
["null", {"type": "enum", "name": "Tier", "doc": "", "symbols": ["NONE", "TIER1", "TIER2",
"TIER3"]}], "doc": ""}]}}}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "ClinVarIds",
        "CosmicIds",
        "IHP",
        "VAF",
        "additionalNumericVariantAnnotations",
        "additionalTextualVariantAnnotations",
        "alternate",
        "cDNAchange",
        "chromosome",
        "comments",
        "commonAF",
        "dbSNPid",
        "depthAlternate",
        "depthReference",
        "position",
        "proteinChange",
        "reference",
        "reportEvents",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'reportEvents': ReportEventCancer,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'reportEvents': ReportEventCancer,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'ClinVarIds', 'CosmicIds', 'IHP', 'VAF',
        'additionalNumericVariantAnnotations',
        'additionalTextualVariantAnnotations', 'alternate',
        'cDNAchange', 'chromosome', 'comments', 'commonAF', 'dbSNPid',
        'depthAlternate', 'depthReference', 'position',
        'proteinChange', 'reference', 'reportEvents'
    ]

    def __init__(self, **kwargs):
        self.ClinVarIds = kwargs.get(
            'ClinVarIds', None)
        self.CosmicIds = kwargs.get(
            'CosmicIds', None)
        self.IHP = kwargs.get(
            'IHP', None)
        self.VAF = kwargs.get(
            'VAF', None)
        self.additionalNumericVariantAnnotations = kwargs.get(
            'additionalNumericVariantAnnotations', None)
        self.additionalTextualVariantAnnotations = kwargs.get(
            'additionalTextualVariantAnnotations', None)
        self.alternate = kwargs.get(
            'alternate', None)
        self.cDNAchange = kwargs.get(
            'cDNAchange', None)
        self.chromosome = kwargs.get(
            'chromosome', None)
        self.comments = kwargs.get(
            'comments', None)
        self.commonAF = kwargs.get(
            'commonAF', None)
        self.dbSNPid = kwargs.get(
            'dbSNPid', None)
        self.depthAlternate = kwargs.get(
            'depthAlternate', None)
        self.depthReference = kwargs.get(
            'depthReference', None)
        self.position = kwargs.get(
            'position', None)
        self.proteinChange = kwargs.get(
            'proteinChange', None)
        self.reference = kwargs.get(
            'reference', None)
        self.reportEvents = kwargs.get(
            'reportEvents', None)


class ReportingQuestion(object):
    """
    No documentation
    """
    yes = "yes"
    no = "no"
    na = "na"

    def __hash__(self):
        return str(self).__hash__()


class SampleType(object):
    """
    No documentation
    """
    germline = "germline"
    tumor = "tumor"

    def __hash__(self):
        return str(self).__hash__()


class SamtoolsScope(object):
    """
    No documentation
    """
    all = "all"
    filtered = "filtered"

    def __hash__(self):
        return str(self).__hash__()


class SamtoolsStats(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "SamtoolsStats", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "samtoolsScope", "type": {"type": "enum", "name": "SamtoolsScope", "symbols": ["all",
"filtered"]}}, {"name": "SAMTOOLS_1ST_FRAGMENTS", "type": "double"}, {"name":
"SAMTOOLS_AVERAGE_LENGTH", "type": "double"}, {"name": "SAMTOOLS_AVERAGE_QUALITY", "type":
"double"}, {"name": "SAMTOOLS_BASES_DUPLICATED", "type": "double"}, {"name":
"SAMTOOLS_BASES_MAPPED", "type": "double"}, {"name": "SAMTOOLS_BASES_MAPPED_CIGAR", "type":
"double"}, {"name": "SAMTOOLS_BASES_TRIMMED", "type": "double"}, {"name": "SAMTOOLS_ERROR_RATE",
"type": "double"}, {"name": "SAMTOOLS_FILTERED_SEQUENCES", "type": "double"}, {"name":
"SAMTOOLS_INSERT_SIZE_AVERAGE", "type": "double"}, {"name":
"SAMTOOLS_INSERT_SIZE_STANDARD_DEVIATION", "type": "double"}, {"name":
"SAMTOOLS_INWARD_ORIENTED_PAIRS", "type": "double"}, {"name": "SAMTOOLS_IS_SORTED", "type":
"double"}, {"name": "SAMTOOLS_LAST_FRAGMENTS", "type": "double"}, {"name":
"SAMTOOLS_MAXIMUM_LENGTH", "type": "double"}, {"name": "SAMTOOLS_MISMATCHES", "type": "double"},
{"name": "SAMTOOLS_NON_PRIMARY_ALIGNMENTS", "type": "double"}, {"name":
"SAMTOOLS_OUTWARD_ORIENTED_PAIRS", "type": "double"}, {"name":
"SAMTOOLS_PAIRS_ON_DIFFERENT_CHROMOSOMES", "type": "double"}, {"name":
"SAMTOOLS_PAIRS_WITH_OTHER_ORIENTATION", "type": "double"}, {"name": "SAMTOOLS_RAW_TOTAL_SEQUENCES",
"type": "double"}, {"name": "SAMTOOLS_READS_DUPLICATED", "type": "double"}, {"name":
"SAMTOOLS_READS_MAPPED", "type": "double"}, {"name": "SAMTOOLS_READS_MAPPED_AND_PAIRED", "type":
"double"}, {"name": "SAMTOOLS_READS_MQ0", "type": "double"}, {"name": "SAMTOOLS_READS_PAIRED",
"type": "double"}, {"name": "SAMTOOLS_READS_PROPERLY_PAIRED", "type": "double"}, {"name":
"SAMTOOLS_READS_QC_FAILED", "type": "double"}, {"name": "SAMTOOLS_READS_UNMAPPED", "type":
"double"}, {"name": "SAMTOOLS_SEQUENCES", "type": "double"}, {"name": "SAMTOOLS_TOTAL_LENGTH",
"type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "SAMTOOLS_1ST_FRAGMENTS",
        "SAMTOOLS_AVERAGE_LENGTH",
        "SAMTOOLS_AVERAGE_QUALITY",
        "SAMTOOLS_BASES_DUPLICATED",
        "SAMTOOLS_BASES_MAPPED",
        "SAMTOOLS_BASES_MAPPED_CIGAR",
        "SAMTOOLS_BASES_TRIMMED",
        "SAMTOOLS_ERROR_RATE",
        "SAMTOOLS_FILTERED_SEQUENCES",
        "SAMTOOLS_INSERT_SIZE_AVERAGE",
        "SAMTOOLS_INSERT_SIZE_STANDARD_DEVIATION",
        "SAMTOOLS_INWARD_ORIENTED_PAIRS",
        "SAMTOOLS_IS_SORTED",
        "SAMTOOLS_LAST_FRAGMENTS",
        "SAMTOOLS_MAXIMUM_LENGTH",
        "SAMTOOLS_MISMATCHES",
        "SAMTOOLS_NON_PRIMARY_ALIGNMENTS",
        "SAMTOOLS_OUTWARD_ORIENTED_PAIRS",
        "SAMTOOLS_PAIRS_ON_DIFFERENT_CHROMOSOMES",
        "SAMTOOLS_PAIRS_WITH_OTHER_ORIENTATION",
        "SAMTOOLS_RAW_TOTAL_SEQUENCES",
        "SAMTOOLS_READS_DUPLICATED",
        "SAMTOOLS_READS_MAPPED",
        "SAMTOOLS_READS_MAPPED_AND_PAIRED",
        "SAMTOOLS_READS_MQ0",
        "SAMTOOLS_READS_PAIRED",
        "SAMTOOLS_READS_PROPERLY_PAIRED",
        "SAMTOOLS_READS_QC_FAILED",
        "SAMTOOLS_READS_UNMAPPED",
        "SAMTOOLS_SEQUENCES",
        "SAMTOOLS_TOTAL_LENGTH",
        "samtoolsScope",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'SAMTOOLS_1ST_FRAGMENTS', 'SAMTOOLS_AVERAGE_LENGTH',
        'SAMTOOLS_AVERAGE_QUALITY', 'SAMTOOLS_BASES_DUPLICATED',
        'SAMTOOLS_BASES_MAPPED', 'SAMTOOLS_BASES_MAPPED_CIGAR',
        'SAMTOOLS_BASES_TRIMMED', 'SAMTOOLS_ERROR_RATE',
        'SAMTOOLS_FILTERED_SEQUENCES', 'SAMTOOLS_INSERT_SIZE_AVERAGE',
        'SAMTOOLS_INSERT_SIZE_STANDARD_DEVIATION',
        'SAMTOOLS_INWARD_ORIENTED_PAIRS', 'SAMTOOLS_IS_SORTED',
        'SAMTOOLS_LAST_FRAGMENTS', 'SAMTOOLS_MAXIMUM_LENGTH',
        'SAMTOOLS_MISMATCHES', 'SAMTOOLS_NON_PRIMARY_ALIGNMENTS',
        'SAMTOOLS_OUTWARD_ORIENTED_PAIRS',
        'SAMTOOLS_PAIRS_ON_DIFFERENT_CHROMOSOMES',
        'SAMTOOLS_PAIRS_WITH_OTHER_ORIENTATION',
        'SAMTOOLS_RAW_TOTAL_SEQUENCES', 'SAMTOOLS_READS_DUPLICATED',
        'SAMTOOLS_READS_MAPPED', 'SAMTOOLS_READS_MAPPED_AND_PAIRED',
        'SAMTOOLS_READS_MQ0', 'SAMTOOLS_READS_PAIRED',
        'SAMTOOLS_READS_PROPERLY_PAIRED', 'SAMTOOLS_READS_QC_FAILED',
        'SAMTOOLS_READS_UNMAPPED', 'SAMTOOLS_SEQUENCES',
        'SAMTOOLS_TOTAL_LENGTH', 'samtoolsScope'
    ]

    def __init__(self, **kwargs):
        self.SAMTOOLS_1ST_FRAGMENTS = kwargs.get(
            'SAMTOOLS_1ST_FRAGMENTS', None)
        self.SAMTOOLS_AVERAGE_LENGTH = kwargs.get(
            'SAMTOOLS_AVERAGE_LENGTH', None)
        self.SAMTOOLS_AVERAGE_QUALITY = kwargs.get(
            'SAMTOOLS_AVERAGE_QUALITY', None)
        self.SAMTOOLS_BASES_DUPLICATED = kwargs.get(
            'SAMTOOLS_BASES_DUPLICATED', None)
        self.SAMTOOLS_BASES_MAPPED = kwargs.get(
            'SAMTOOLS_BASES_MAPPED', None)
        self.SAMTOOLS_BASES_MAPPED_CIGAR = kwargs.get(
            'SAMTOOLS_BASES_MAPPED_CIGAR', None)
        self.SAMTOOLS_BASES_TRIMMED = kwargs.get(
            'SAMTOOLS_BASES_TRIMMED', None)
        self.SAMTOOLS_ERROR_RATE = kwargs.get(
            'SAMTOOLS_ERROR_RATE', None)
        self.SAMTOOLS_FILTERED_SEQUENCES = kwargs.get(
            'SAMTOOLS_FILTERED_SEQUENCES', None)
        self.SAMTOOLS_INSERT_SIZE_AVERAGE = kwargs.get(
            'SAMTOOLS_INSERT_SIZE_AVERAGE', None)
        self.SAMTOOLS_INSERT_SIZE_STANDARD_DEVIATION = kwargs.get(
            'SAMTOOLS_INSERT_SIZE_STANDARD_DEVIATION', None)
        self.SAMTOOLS_INWARD_ORIENTED_PAIRS = kwargs.get(
            'SAMTOOLS_INWARD_ORIENTED_PAIRS', None)
        self.SAMTOOLS_IS_SORTED = kwargs.get(
            'SAMTOOLS_IS_SORTED', None)
        self.SAMTOOLS_LAST_FRAGMENTS = kwargs.get(
            'SAMTOOLS_LAST_FRAGMENTS', None)
        self.SAMTOOLS_MAXIMUM_LENGTH = kwargs.get(
            'SAMTOOLS_MAXIMUM_LENGTH', None)
        self.SAMTOOLS_MISMATCHES = kwargs.get(
            'SAMTOOLS_MISMATCHES', None)
        self.SAMTOOLS_NON_PRIMARY_ALIGNMENTS = kwargs.get(
            'SAMTOOLS_NON_PRIMARY_ALIGNMENTS', None)
        self.SAMTOOLS_OUTWARD_ORIENTED_PAIRS = kwargs.get(
            'SAMTOOLS_OUTWARD_ORIENTED_PAIRS', None)
        self.SAMTOOLS_PAIRS_ON_DIFFERENT_CHROMOSOMES = kwargs.get(
            'SAMTOOLS_PAIRS_ON_DIFFERENT_CHROMOSOMES', None)
        self.SAMTOOLS_PAIRS_WITH_OTHER_ORIENTATION = kwargs.get(
            'SAMTOOLS_PAIRS_WITH_OTHER_ORIENTATION', None)
        self.SAMTOOLS_RAW_TOTAL_SEQUENCES = kwargs.get(
            'SAMTOOLS_RAW_TOTAL_SEQUENCES', None)
        self.SAMTOOLS_READS_DUPLICATED = kwargs.get(
            'SAMTOOLS_READS_DUPLICATED', None)
        self.SAMTOOLS_READS_MAPPED = kwargs.get(
            'SAMTOOLS_READS_MAPPED', None)
        self.SAMTOOLS_READS_MAPPED_AND_PAIRED = kwargs.get(
            'SAMTOOLS_READS_MAPPED_AND_PAIRED', None)
        self.SAMTOOLS_READS_MQ0 = kwargs.get(
            'SAMTOOLS_READS_MQ0', None)
        self.SAMTOOLS_READS_PAIRED = kwargs.get(
            'SAMTOOLS_READS_PAIRED', None)
        self.SAMTOOLS_READS_PROPERLY_PAIRED = kwargs.get(
            'SAMTOOLS_READS_PROPERLY_PAIRED', None)
        self.SAMTOOLS_READS_QC_FAILED = kwargs.get(
            'SAMTOOLS_READS_QC_FAILED', None)
        self.SAMTOOLS_READS_UNMAPPED = kwargs.get(
            'SAMTOOLS_READS_UNMAPPED', None)
        self.SAMTOOLS_SEQUENCES = kwargs.get(
            'SAMTOOLS_SEQUENCES', None)
        self.SAMTOOLS_TOTAL_LENGTH = kwargs.get(
            'SAMTOOLS_TOTAL_LENGTH', None)
        self.samtoolsScope = kwargs.get(
            'samtoolsScope', None)


class SegregationQuestion(object):
    """
    No documentation
    """
    yes = "yes"
    no = "no"

    def __hash__(self):
        return str(self).__hash__()


class SensitiveInformation(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "SensitiveInformation", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "versionControl", "type": {"type": "record", "name": "VersionControl", "fields":
[{"name": "GitVersionControl", "type": "string", "doc": "", "default": "3.0.0"}]}, "doc": ""},
{"name": "gelID", "type": "string"}, {"name": "externalIds", "type": ["null", {"type": "array",
"items": "string"}]}, {"name": "genomicMedicineCenter", "type": ["null", "string"]}, {"name":
"fullNameOfResponsibleConsultant", "type": ["null", "string"]}, {"name": "contactNumber", "type":
["null", "string"]}, {"name": "hospitalOfResponsibleConsultant", "type": ["null", "string"]},
{"name": "centerSampleId", "type": ["null", "string"]}, {"name": "originatingCenter", "type":
["null", "string"]}, {"name": "centerPatientId", "type": ["null", "string"]}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "centerPatientId",
        "centerSampleId",
        "contactNumber",
        "externalIds",
        "fullNameOfResponsibleConsultant",
        "gelID",
        "genomicMedicineCenter",
        "hospitalOfResponsibleConsultant",
        "originatingCenter",
        "versionControl",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'versionControl': VersionControl,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'versionControl': VersionControl,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'centerPatientId', 'centerSampleId', 'contactNumber',
        'externalIds', 'fullNameOfResponsibleConsultant', 'gelID',
        'genomicMedicineCenter', 'hospitalOfResponsibleConsultant',
        'originatingCenter', 'versionControl'
    ]

    def __init__(self, **kwargs):
        self.centerPatientId = kwargs.get(
            'centerPatientId', None)
        self.centerSampleId = kwargs.get(
            'centerSampleId', None)
        self.contactNumber = kwargs.get(
            'contactNumber', None)
        self.externalIds = kwargs.get(
            'externalIds', None)
        self.fullNameOfResponsibleConsultant = kwargs.get(
            'fullNameOfResponsibleConsultant', None)
        self.gelID = kwargs.get(
            'gelID', None)
        self.genomicMedicineCenter = kwargs.get(
            'genomicMedicineCenter', None)
        self.hospitalOfResponsibleConsultant = kwargs.get(
            'hospitalOfResponsibleConsultant', None)
        self.originatingCenter = kwargs.get(
            'originatingCenter', None)
        self.versionControl = kwargs.get(
            'versionControl', VersionControl())


class Sex(object):
    """
    Sex
    """
    male = "male"
    female = "female"
    unknown = "unknown"
    undetermined = "undetermined"

    def __hash__(self):
        return str(self).__hash__()


class SomaticOrGermline(object):
    """
    this defines whether the variant reported is considered to be a
    somatic or germline finding.
    """
    unknown = "unknown"
    somatic = "somatic"
    germline = "germline"

    def __hash__(self):
        return str(self).__hash__()


class State(object):
    """
    No documentation
    """
    ready = "ready"
    pending = "pending"
    hold = "hold"
    fail = "fail"
    caution = "caution"
    blocked = "blocked"

    def __hash__(self):
        return str(self).__hash__()


class SupplementaryAnalysisResults(ProtocolElement):
    """
    This is the record for results of supplementary analysis
    """
    _schemaSource = """
{"type": "record", "name": "SupplementaryAnalysisResults", "namespace":
"org.gel.models.report.avro", "doc": "", "fields": [{"name": "numberOfSomaticVariants", "type":
"int"}, {"name": "numberOfSomaticSnvsPerMb", "type": "double"}, {"name":
"numberOfNonsynSomaticSnvsPerMb", "type": "double"}, {"name":
"ContextualAnalysisSubstitutionsCounts", "type": {"type": "map", "values": "int"}}, {"name":
"MutationalSignatureContribution", "type": {"type": "map", "values": "double"}}, {"name":
"GenomicRegionsOfHypermutation", "type": {"type": "array", "items": "string"}}, {"name":
"SNValleleFrequencyHistogramCounts", "type": {"type": "map", "values": "int"}}, {"name":
"IndelAlleleFrequencyHistogramCounts", "type": {"type": "map", "values": "int"}}, {"name":
"IndelLengthHistogramCounts", "type": {"type": "map", "values": "int"}}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "ContextualAnalysisSubstitutionsCounts",
        "GenomicRegionsOfHypermutation",
        "IndelAlleleFrequencyHistogramCounts",
        "IndelLengthHistogramCounts",
        "MutationalSignatureContribution",
        "SNValleleFrequencyHistogramCounts",
        "numberOfNonsynSomaticSnvsPerMb",
        "numberOfSomaticSnvsPerMb",
        "numberOfSomaticVariants",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'ContextualAnalysisSubstitutionsCounts',
        'GenomicRegionsOfHypermutation',
        'IndelAlleleFrequencyHistogramCounts',
        'IndelLengthHistogramCounts',
        'MutationalSignatureContribution',
        'SNValleleFrequencyHistogramCounts',
        'numberOfNonsynSomaticSnvsPerMb', 'numberOfSomaticSnvsPerMb',
        'numberOfSomaticVariants'
    ]

    def __init__(self, **kwargs):
        self.ContextualAnalysisSubstitutionsCounts = kwargs.get(
            'ContextualAnalysisSubstitutionsCounts', None)
        self.GenomicRegionsOfHypermutation = kwargs.get(
            'GenomicRegionsOfHypermutation', None)
        self.IndelAlleleFrequencyHistogramCounts = kwargs.get(
            'IndelAlleleFrequencyHistogramCounts', None)
        self.IndelLengthHistogramCounts = kwargs.get(
            'IndelLengthHistogramCounts', None)
        self.MutationalSignatureContribution = kwargs.get(
            'MutationalSignatureContribution', None)
        self.SNValleleFrequencyHistogramCounts = kwargs.get(
            'SNValleleFrequencyHistogramCounts', None)
        self.numberOfNonsynSomaticSnvsPerMb = kwargs.get(
            'numberOfNonsynSomaticSnvsPerMb', None)
        self.numberOfSomaticSnvsPerMb = kwargs.get(
            'numberOfSomaticSnvsPerMb', None)
        self.numberOfSomaticVariants = kwargs.get(
            'numberOfSomaticVariants', None)


class SupportingEvidences(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "SupportingEvidences", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "previousSupportingEvidences", "type": {"type": "array", "items": "string"}},
{"name": "modifiedSupportingEvidences", "type": {"type": "array", "items": "string"}}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "modifiedSupportingEvidences",
        "previousSupportingEvidences",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'modifiedSupportingEvidences', 'previousSupportingEvidences'
    ]

    def __init__(self, **kwargs):
        self.modifiedSupportingEvidences = kwargs.get(
            'modifiedSupportingEvidences', None)
        self.previousSupportingEvidences = kwargs.get(
            'previousSupportingEvidences', None)


class TernaryOption(object):
    """
    This the define a yes/no/unknown case
    """
    yes = "yes"
    no = "no"
    unknown = "unknown"

    def __hash__(self):
        return str(self).__hash__()


class Tier(object):
    """
    Possible tiers as defined by Genomics England
    """
    NONE = "NONE"
    TIER1 = "TIER1"
    TIER2 = "TIER2"
    TIER3 = "TIER3"

    def __hash__(self):
        return str(self).__hash__()


class TieringResult(ProtocolElement):
    """
    Represents the results of a tiering process and its input patient
    data. TieringResult     is simply a more specific, less ambiguous
    term for "cohort".      We cannot use the InterpretationRequestRD
    structure because there may be many interpretation      requests
    for the same tiering results.
    """
    _schemaSource = """
{"type": "record", "name": "TieringResult", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "versionControl", "type": {"type": "record", "name": "VersionControl", "fields":
[{"name": "GitVersionControl", "type": "string", "doc": "", "default": "3.0.0"}]}, "doc": ""},
{"name": "genomeAssemblyVersion", "type": "string", "doc": "", "default": "GRCh37.p13"}, {"name":
"cellbaseVersion", "type": "string", "doc": "", "default": "4.0"}, {"name": "workspace", "type":
{"type": "array", "items": "string"}, "doc": ""}, {"name": "BAMs", "type": {"type": "array",
"items": {"type": "record", "name": "File", "doc": "", "fields": [{"name": "SampleId", "type":
["null", "string", {"type": "array", "items": "string"}], "doc": ""}, {"name": "URIFile", "type":
"string", "doc": ""}, {"name": "fileType", "type": {"type": "enum", "name": "FileType", "symbols":
["BAM", "gVCF", "VCF_small", "VCF_somatic_small", "VCF_CNV", "VCF_somatic_CNV", "VCF_SV",
"VCF_somatic_SV", "VCF_SV_CNV", "SVG", "ANN", "BigWig", "MD5Sum", "ROH", "OTHER"]}}, {"name":
"md5Sum", "type": ["null", "File"]}]}}, "doc": ""}, {"name": "VCFs", "type": {"type": "array",
"items": "File"}, "doc": ""}, {"name": "bigWigs", "type": ["null", {"type": "array", "items":
"File"}], "doc": ""}, {"name": "pedigreeDiagram", "type": ["null", "File"], "doc": ""}, {"name":
"annotationFile", "type": ["null", "File"], "doc": ""}, {"name": "otherFiles", "type": ["null",
{"type": "map", "values": "File"}], "doc": ""}, {"name": "pedigree", "type": {"type": "record",
"name": "Pedigree", "doc": "", "fields": [{"name": "versionControl", "type": "VersionControl",
"doc": ""}, {"name": "gelFamilyId", "type": "string", "doc": ""}, {"name": "participants", "type":
{"type": "array", "items": {"type": "record", "name": "RDParticipant", "doc": "", "fields":
[{"name": "versionControl", "type": "VersionControl", "doc": ""}, {"name": "pedigreeId", "type":
"int", "doc": ""}, {"name": "isProband", "type": "boolean", "doc": ""}, {"name": "gelId", "type":
["null", "string"], "doc": ""}, {"name": "gelFamilyId", "type": "string", "doc": ""}, {"name":
"gelSuperFamilyId", "type": ["null", "string"], "doc": ""}, {"name": "sex", "type": {"type": "enum",
"name": "Sex", "doc": "", "symbols": ["male", "female", "unknown", "undetermined"]}, "doc": ""},
{"name": "personKaryotipicSex", "type": ["null", {"type": "enum", "name": "PersonKaryotipicSex",
"doc": "", "symbols": ["unknown", "XX", "XY", "XO", "XXY", "XXX", "XXYY", "XXXY", "XXXX", "XYY",
"other"]}], "doc": ""}, {"name": "yearOfBirth", "type": ["null", "string"], "doc": ""}, {"name":
"fatherId", "type": ["null", "int"], "doc": ""}, {"name": "motherId", "type": ["null", "int"],
"doc": ""}, {"name": "superFatherId", "type": ["null", "int"], "doc": ""}, {"name": "superMotherId",
"type": ["null", "int"], "doc": ""}, {"name": "twinGroup", "type": ["null", "int"], "doc": ""},
{"name": "monozygotic", "type": ["null", {"type": "enum", "name": "TernaryOption", "doc": "",
"symbols": ["yes", "no", "unknown"]}], "doc": ""}, {"name": "adoptedStatus", "type": {"type":
"enum", "name": "AdoptedStatus", "doc": "", "symbols": ["not_adopted", "adoptedin", "adoptedout"]},
"doc": ""}, {"name": "lifeStatus", "type": {"type": "enum", "name": "LifeStatus", "doc": "",
"symbols": ["alive", "aborted", "deceased", "unborn", "stillborn", "miscarriage"]}, "doc": ""},
{"name": "consanguineousParents", "type": "TernaryOption", "doc": ""}, {"name":
"consanguineousPopulation", "type": ["null", "string"], "doc": ""}, {"name": "affectionStatus",
"type": {"type": "enum", "name": "AffectionStatus", "doc": "", "symbols": ["unaffected", "affected",
"unknown"]}, "doc": ""}, {"name": "disorderList", "type": {"type": "array", "items": {"type":
"record", "name": "Disorder", "doc": "", "fields": [{"name": "diseaseGroup", "type": ["null",
"string"], "doc": ""}, {"name": "diseaseSubGroup", "type": ["null", "string"], "doc": ""}, {"name":
"specificDisease", "type": ["null", "string"], "doc": ""}, {"name": "ageOfOnset", "type": ["null",
"string"], "doc": ""}]}}, "doc": ""}, {"name": "hpoTermList", "type": {"type": "array", "items":
{"type": "record", "name": "HpoTerm", "doc": "", "fields": [{"name": "term", "type": "string",
"doc": ""}, {"name": "termPresence", "type": ["null", "boolean"], "doc": ""}, {"name": "modifiers",
"type": ["null", {"type": "map", "values": "string"}], "doc": ""}, {"name": "ageOfOnset", "type":
["null", "string"], "doc": ""}]}}, "doc": ""}, {"name": "ancestries", "type": {"type": "record",
"name": "Ancestries", "doc": "", "fields": [{"name": "mothersEthnicOrigin", "type": ["null",
{"type": "enum", "name": "EthnicCategory", "doc": "", "symbols": ["D", "E", "F", "G", "A", "B", "C",
"L", "M", "N", "H", "J", "K", "P", "S", "R", "Z"]}], "doc": ""}, {"name":
"mothersOtherRelevantAncestry", "type": ["null", "string"], "doc": ""}, {"name":
"fathersEthnicOrigin", "type": ["null", "EthnicCategory"], "doc": ""}, {"name":
"fathersOtherRelevantAncestry", "type": ["null", "string"], "doc": ""}, {"name":
"chiSquare1KGenomesPhase3Pop", "type": ["null", {"type": "array", "items": {"type": "record",
"name": "ChiSquare1KGenomesPhase3Pop", "doc": "", "fields": [{"name": "kGSuperPopCategory", "type":
{"type": "enum", "name": "KGSuperPopCategory", "doc": "", "symbols": ["AFR", "AMR", "EAS", "EUR",
"SAS"]}, "doc": ""}, {"name": "kGPopCategory", "type": ["null", {"type": "enum", "name":
"KGPopCategory", "doc": "", "symbols": ["ACB", "ASW", "BEB", "CDX", "CEU", "CHB", "CHS", "CLM",
"ESN", "FIN", "GBR", "GIH", "GWD", "IBS", "ITU", "JPT", "KHV", "LWK", "MSL", "MXL", "PEL", "PJL",
"PUR", "STU", "TSI", "YRI"]}], "doc": ""}, {"name": "chiSquare", "type": "float", "doc": ""}]}}],
"doc": ""}]}, "doc": ""}, {"name": "consentStatus", "type": {"type": "record", "name":
"ConsentStatus", "doc": "", "fields": [{"name": "programmeConsent", "type": "boolean", "doc": "",
"default": false}, {"name": "primaryFindingConsent", "type": "boolean", "doc": "", "default":
false}, {"name": "secondaryFindingConsent", "type": "boolean", "doc": "", "default": false},
{"name": "carrierStatusConsent", "type": "boolean", "doc": "", "default": false}]}, "doc": ""},
{"name": "samples", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name":
"inbreedingCoefficient", "type": ["null", {"type": "record", "name": "InbreedingCoefficient", "doc":
"", "fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name": "program", "type":
"string", "doc": ""}, {"name": "version", "type": "string", "doc": ""}, {"name": "estimationMethod",
"type": "string", "doc": ""}, {"name": "coefficient", "type": "double", "doc": ""}, {"name":
"standardError", "type": ["null", "double"], "doc": ""}]}], "doc": ""}, {"name":
"additionalInformation", "type": ["null", {"type": "map", "values": "string"}], "doc": ""}]}}},
{"name": "analysisPanels", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"AnalysisPanel", "fields": [{"name": "specificDisease", "type": "string"}, {"name": "panelName",
"type": "string"}, {"name": "panelVersion", "type": ["null", "string"]}, {"name": "review_outcome",
"type": "string"}, {"name": "multiple_genetic_origins", "type": "string"}]}}]}, {"name":
"diseasePenetrances", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"DiseasePenetrance", "fields": [{"name": "specificDisease", "type": "string"}, {"name":
"penetrance", "type": {"type": "enum", "name": "Penetrance", "doc": "", "symbols": ["complete",
"incomplete"]}}]}}]}]}, "doc": ""}, {"name": "TieredVariants", "type": {"type": "array", "items":
{"type": "record", "name": "ReportedVariant", "fields": [{"name": "chromosome", "type": "string",
"doc": ""}, {"name": "dbSNPid", "type": ["null", "string"], "doc": ""}, {"name": "position", "type":
"int", "doc": ""}, {"name": "reference", "type": "string", "doc": ""}, {"name": "alternate", "type":
"string", "doc": ""}, {"name": "calledGenotypes", "type": {"type": "array", "items": {"type":
"record", "name": "CalledGenotype", "doc": "", "fields": [{"name": "gelId", "type": "string", "doc":
""}, {"name": "sampleId", "type": "string", "doc": ""}, {"name": "genotype", "type": {"type":
"enum", "name": "Zygosity", "doc": "", "symbols": ["reference_homozygous", "heterozygous",
"alternate_homozygous", "missing", "half_missing_reference", "half_missing_alternate",
"alternate_hemizigous", "reference_hemizigous", "unk"]}, "doc": ""}, {"name": "phaseSet", "type":
["null", "int"], "doc": ""}, {"name": "depthReference", "type": ["null", "int"], "doc": ""},
{"name": "depthAlternate", "type": ["null", "int"], "doc": ""}, {"name": "copyNumber", "type":
["null", "int"], "doc": ""}]}}, "doc": ""}, {"name": "reportEvents", "type": {"type": "array",
"items": {"type": "record", "name": "ReportEvent", "fields": [{"name": "reportEventId", "type":
"string", "doc": ""}, {"name": "phenotype", "type": "string", "doc": ""}, {"name": "panelName",
"type": ["null", "string"], "doc": ""}, {"name": "panelVersion", "type": ["null", "string"], "doc":
""}, {"name": "modeOfInheritance", "type": {"type": "enum", "name": "ReportedModeOfInheritance",
"doc": "", "symbols": ["monoallelic", "monoallelic_not_imprinted",
"monoallelic_maternally_imprinted", "monoallelic_paternally_imprinted", "biallelic",
"monoallelic_and_biallelic", "monoallelic_and_more_severe_biallelic", "xlinked_biallelic",
"xlinked_monoallelic", "mitochondrial", "unknown"]}, "doc": ""}, {"name": "genomicFeature", "type":
{"type": "record", "name": "GenomicFeature", "fields": [{"name": "featureType", "type": {"type":
"enum", "name": "FeatureTypes", "symbols": ["RegulatoryRegion", "Gene", "Transcript"]}, "doc": ""},
{"name": "ensemblId", "type": "string", "doc": ""}, {"name": "HGNC", "type": ["null", "string"],
"doc": ""}, {"name": "other_ids", "type": ["null", {"type": "map", "values": "string"}], "doc":
""}]}, "doc": ""}, {"name": "penetrance", "type": "Penetrance", "doc": ""}, {"name": "score",
"type": "float", "doc": ""}, {"name": "vendorSpecificScores", "type": ["null", {"type": "map",
"values": "float"}], "doc": ""}, {"name": "variantClassification", "type": ["null", {"type": "enum",
"name": "VariantClassification", "doc": "", "symbols": ["BENIGN", "LIKELY_BENIGN", "VUS",
"LIKELY_PATHOGENIC", "PATHOGENIC"]}], "doc": ""}, {"name": "fullyExplainsPhenotype", "type":
["null", "boolean"], "doc": ""}, {"name": "groupOfVariants", "type": ["null", "int"], "doc": ""},
{"name": "eventJustification", "type": "string", "doc": ""}, {"name": "tier", "type": ["null",
{"type": "enum", "name": "Tier", "doc": "", "symbols": ["NONE", "TIER1", "TIER2", "TIER3"]}], "doc":
""}]}}, "doc": ""}, {"name": "additionalTextualVariantAnnotations", "type": ["null", {"type": "map",
"values": "string"}], "doc": ""}, {"name": "evidenceIds", "type": ["null", {"type": "map", "values":
"string"}], "doc": ""}, {"name": "additionalNumericVariantAnnotations", "type": ["null", {"type":
"map", "values": "float"}], "doc": ""}, {"name": "comments", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}]}}, "doc": ""}, {"name": "TieringVersion", "type": "string", "doc":
""}, {"name": "complexGeneticPhenomena", "type": ["null", {"type": "enum", "name":
"ComplexGeneticPhenomena", "symbols": ["mosaicism", "monosomy", "disomy", "uniparental_disomy",
"trisomy", "other_aneuploidy"]}], "doc": ""}, {"name": "otherFamilyHistory", "type": ["null",
{"type": "record", "name": "OtherFamilyHistory", "doc": "", "fields": [{"name":
"maternalFamilyHistory", "type": ["null", {"type": "array", "items": "string"}], "doc": ""},
{"name": "paternalFamilyHistory", "type": ["null", {"type": "array", "items": "string"}], "doc":
""}]}], "doc": ""}, {"name": "genePanelsCoverage", "type": ["null", {"type": "map", "values":
{"type": "map", "values": {"type": "map", "values": "float"}}}], "doc": ""}, {"name":
"additionalInfo", "type": ["null", {"type": "map", "values": "string"}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "BAMs",
        "TieredVariants",
        "TieringVersion",
        "VCFs",
        "additionalInfo",
        "annotationFile",
        "bigWigs",
        "complexGeneticPhenomena",
        "genePanelsCoverage",
        "otherFamilyHistory",
        "otherFiles",
        "pedigree",
        "pedigreeDiagram",
        "versionControl",
        "workspace",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'BAMs': File,
            'TieredVariants': ReportedVariant,
            'VCFs': File,
            'annotationFile': File,
            'bigWigs': File,
            'otherFamilyHistory': OtherFamilyHistory,
            'otherFiles': File,
            'pedigree': Pedigree,
            'pedigreeDiagram': File,
            'versionControl': VersionControl,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'BAMs': File,
            'TieredVariants': ReportedVariant,
            'VCFs': File,
            'annotationFile': File,
            'bigWigs': File,
            'otherFamilyHistory': OtherFamilyHistory,
            'otherFiles': File,
            'pedigree': Pedigree,
            'pedigreeDiagram': File,
            'versionControl': VersionControl,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'BAMs', 'TieredVariants', 'TieringVersion', 'VCFs',
        'additionalInfo', 'annotationFile', 'bigWigs',
        'cellbaseVersion', 'complexGeneticPhenomena',
        'genePanelsCoverage', 'genomeAssemblyVersion',
        'otherFamilyHistory', 'otherFiles', 'pedigree',
        'pedigreeDiagram', 'versionControl', 'workspace'
    ]

    def __init__(self, **kwargs):
        self.BAMs = kwargs.get(
            'BAMs', None)
        self.TieredVariants = kwargs.get(
            'TieredVariants', None)
        self.TieringVersion = kwargs.get(
            'TieringVersion', None)
        self.VCFs = kwargs.get(
            'VCFs', None)
        self.additionalInfo = kwargs.get(
            'additionalInfo', None)
        self.annotationFile = kwargs.get(
            'annotationFile', None)
        self.bigWigs = kwargs.get(
            'bigWigs', None)
        self.cellbaseVersion = kwargs.get(
            'cellbaseVersion', '4.0')
        self.complexGeneticPhenomena = kwargs.get(
            'complexGeneticPhenomena', None)
        self.genePanelsCoverage = kwargs.get(
            'genePanelsCoverage', None)
        self.genomeAssemblyVersion = kwargs.get(
            'genomeAssemblyVersion', 'GRCh37.p13')
        self.otherFamilyHistory = kwargs.get(
            'otherFamilyHistory', None)
        self.otherFiles = kwargs.get(
            'otherFiles', None)
        self.pedigree = kwargs.get(
            'pedigree', Pedigree())
        self.pedigreeDiagram = kwargs.get(
            'pedigreeDiagram', None)
        self.versionControl = kwargs.get(
            'versionControl', VersionControl())
        self.workspace = kwargs.get(
            'workspace', None)


class TumorChecks(ProtocolElement):
    """
    Tumor contamination check results  We ask whether somatic calls
    are common in 1000G project.  Common is defined as 0.01.  The
    percentage of these variants gives an indication of the
    contamination level of the sample.  If another sample contaminates
    or the germline is swapped then the percentage of somatic variants
    in 1000G will be high.  * `well_id`: Individual sample ID *
    `num_variants_gt_filter`: The number of somatic variants that are
    common in 1000G * `num_variants_lt_filter`: The number of somatic
    variants rare or non-existant in 1000G *
    `perc_variants_gt_filter`: The percentage of somatic variants that
    are common in 1000G
    """
    _schemaSource = """
{"type": "record", "name": "TumorChecks", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "well_id", "type": "string"}, {"name": "num_variants_gt_filter", "type":
"double"}, {"name": "num_variants_lt_filter", "type": "double"}, {"name": "perc_variants_gt_filter",
"type": "double"}, {"name": "TumorContaminationContEst", "type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "TumorContaminationContEst",
        "num_variants_gt_filter",
        "num_variants_lt_filter",
        "perc_variants_gt_filter",
        "well_id",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'TumorContaminationContEst', 'num_variants_gt_filter',
        'num_variants_lt_filter', 'perc_variants_gt_filter', 'well_id'
    ]

    def __init__(self, **kwargs):
        self.TumorContaminationContEst = kwargs.get(
            'TumorContaminationContEst', None)
        self.num_variants_gt_filter = kwargs.get(
            'num_variants_gt_filter', None)
        self.num_variants_lt_filter = kwargs.get(
            'num_variants_lt_filter', None)
        self.perc_variants_gt_filter = kwargs.get(
            'perc_variants_gt_filter', None)
        self.well_id = kwargs.get(
            'well_id', None)


class VariantClassification(object):
    """
    This is the classification of the variant according to standard
    practice guidelines (e.g. ACMG)
    """
    BENIGN = "BENIGN"
    LIKELY_BENIGN = "LIKELY_BENIGN"
    VUS = "VUS"
    LIKELY_PATHOGENIC = "LIKELY_PATHOGENIC"
    PATHOGENIC = "PATHOGENIC"

    def __hash__(self):
        return str(self).__hash__()


class VariantGroupLevelQuestions(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "VariantGroupLevelQuestions", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "variant_group", "type": "int"}, {"name": "variantLevelQuestions", "type":
{"type": "array", "items": {"type": "record", "name": "VariantLevelQuestions", "fields": [{"name":
"variant_details", "type": "string", "doc": ""}, {"name": "confirmationDecision", "type": {"type":
"enum", "name": "ConfirmationDecision", "symbols": ["yes", "no", "na"]}, "doc": ""}, {"name":
"confirmationOutcome", "type": {"type": "enum", "name": "ConfirmationOutcome", "symbols": ["yes",
"no", "na"]}, "doc": ""}, {"name": "reportingQuestion", "type": {"type": "enum", "name":
"ReportingQuestion", "symbols": ["yes", "no", "na"]}, "doc": ""}, {"name": "acmgClassification",
"type": {"type": "enum", "name": "ACMGClassification", "symbols": ["pathogenic_variant",
"likely_pathogenic_variant", "variant_of_unknown_clinical_significance", "likely_benign_variant",
"benign_variant", "not_assessed"]}, "doc": ""}, {"name": "publications", "type": "string", "doc":
""}]}}}, {"name": "actionability", "type": {"type": "enum", "name": "Actionability", "symbols":
["yes", "no", "not_yet", "na"]}, "doc": ""}, {"name": "clinicalUtility", "type": {"type": "array",
"items": {"type": "enum", "name": "ClinicalUtility", "symbols": ["none", "change_in_medication",
"surgical_option", "additional_surveillance_for_proband_or_relatives", "clinical_trial_eligibility",
"informs_reproductive_choice", "unknown", "other"]}}, "doc": ""}, {"name": "phenotypesSolved",
"type": {"type": "enum", "name": "PhenotypesSolved", "symbols": ["yes", "no", "partially",
"unknown"]}, "doc": ""}, {"name": "phenotypesExplained", "type": ["null", {"type": "array", "items":
"string"}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "actionability",
        "clinicalUtility",
        "phenotypesExplained",
        "phenotypesSolved",
        "variantLevelQuestions",
        "variant_group",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'variantLevelQuestions': VariantLevelQuestions,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'variantLevelQuestions': VariantLevelQuestions,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'actionability', 'clinicalUtility', 'phenotypesExplained',
        'phenotypesSolved', 'variantLevelQuestions', 'variant_group'
    ]

    def __init__(self, **kwargs):
        self.actionability = kwargs.get(
            'actionability', None)
        self.clinicalUtility = kwargs.get(
            'clinicalUtility', None)
        self.phenotypesExplained = kwargs.get(
            'phenotypesExplained', None)
        self.phenotypesSolved = kwargs.get(
            'phenotypesSolved', None)
        self.variantLevelQuestions = kwargs.get(
            'variantLevelQuestions', None)
        self.variant_group = kwargs.get(
            'variant_group', None)


class VariantLevelQuestions(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "VariantLevelQuestions", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "variant_details", "type": "string", "doc": ""}, {"name":
"confirmationDecision", "type": {"type": "enum", "name": "ConfirmationDecision", "symbols": ["yes",
"no", "na"]}, "doc": ""}, {"name": "confirmationOutcome", "type": {"type": "enum", "name":
"ConfirmationOutcome", "symbols": ["yes", "no", "na"]}, "doc": ""}, {"name": "reportingQuestion",
"type": {"type": "enum", "name": "ReportingQuestion", "symbols": ["yes", "no", "na"]}, "doc": ""},
{"name": "acmgClassification", "type": {"type": "enum", "name": "ACMGClassification", "symbols":
["pathogenic_variant", "likely_pathogenic_variant", "variant_of_unknown_clinical_significance",
"likely_benign_variant", "benign_variant", "not_assessed"]}, "doc": ""}, {"name": "publications",
"type": "string", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "acmgClassification",
        "confirmationDecision",
        "confirmationOutcome",
        "publications",
        "reportingQuestion",
        "variant_details",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'acmgClassification', 'confirmationDecision',
        'confirmationOutcome', 'publications', 'reportingQuestion',
        'variant_details'
    ]

    def __init__(self, **kwargs):
        self.acmgClassification = kwargs.get(
            'acmgClassification', None)
        self.confirmationDecision = kwargs.get(
            'confirmationDecision', None)
        self.confirmationOutcome = kwargs.get(
            'confirmationOutcome', None)
        self.publications = kwargs.get(
            'publications', None)
        self.reportingQuestion = kwargs.get(
            'reportingQuestion', None)
        self.variant_details = kwargs.get(
            'variant_details', None)


class VariantsCoverage(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "VariantsCoverage", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "bedName", "type": "string"}, {"name": "coverageSummary", "type": {"type": "array",
"items": {"type": "record", "name": "CoverageSummary", "fields": [{"name": "avg", "type": "double",
"doc": ""}, {"name": "med", "type": "double", "doc": ""}, {"name": "bases", "type": "double", "doc":
""}, {"name": "pct25", "type": ["null", "double"], "doc": ""}, {"name": "pct75", "type": ["null",
"double"], "doc": ""}, {"name": "lt15x", "type": ["null", "double"], "doc": ""}, {"name": "gte15x",
"type": ["null", "double"], "doc": ""}, {"name": "gte30x", "type": ["null", "double"], "doc": ""},
{"name": "gte50x", "type": ["null", "double"], "doc": ""}, {"name": "sd", "type": ["null",
"double"], "doc": ""}, {"name": "localRMSD", "type": ["null", "double"], "doc": ""}, {"name":
"scope", "type": "string", "doc": ""}]}}}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "bedName",
        "coverageSummary",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'coverageSummary': CoverageSummary,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'coverageSummary': CoverageSummary,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'bedName', 'coverageSummary'
    ]

    def __init__(self, **kwargs):
        self.bedName = kwargs.get(
            'bedName', None)
        self.coverageSummary = kwargs.get(
            'coverageSummary', None)


class VcfMetrics(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "VcfMetrics", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "NUMBER_OF_SAMPLES", "type": "double"}, {"name": "NUMBER_OF_INDELS", "type": "double"},
{"name": "NUMBER_OF_MNPS", "type": "double"}, {"name": "NUMBER_OF_MULTIALLELIC_SNP_SITES", "type":
"double"}, {"name": "NUMBER_OF_SNPS", "type": "double"}, {"name": "NUMBER_OF_RECORDS", "type":
"double"}, {"name": "NUMBER_OF_OTHERS", "type": "double"}, {"name": "NUMBER_OF_MULTIALLELIC_SITES",
"type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "NUMBER_OF_INDELS",
        "NUMBER_OF_MNPS",
        "NUMBER_OF_MULTIALLELIC_SITES",
        "NUMBER_OF_MULTIALLELIC_SNP_SITES",
        "NUMBER_OF_OTHERS",
        "NUMBER_OF_RECORDS",
        "NUMBER_OF_SAMPLES",
        "NUMBER_OF_SNPS",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'NUMBER_OF_INDELS', 'NUMBER_OF_MNPS',
        'NUMBER_OF_MULTIALLELIC_SITES',
        'NUMBER_OF_MULTIALLELIC_SNP_SITES', 'NUMBER_OF_OTHERS',
        'NUMBER_OF_RECORDS', 'NUMBER_OF_SAMPLES', 'NUMBER_OF_SNPS'
    ]

    def __init__(self, **kwargs):
        self.NUMBER_OF_INDELS = kwargs.get(
            'NUMBER_OF_INDELS', None)
        self.NUMBER_OF_MNPS = kwargs.get(
            'NUMBER_OF_MNPS', None)
        self.NUMBER_OF_MULTIALLELIC_SITES = kwargs.get(
            'NUMBER_OF_MULTIALLELIC_SITES', None)
        self.NUMBER_OF_MULTIALLELIC_SNP_SITES = kwargs.get(
            'NUMBER_OF_MULTIALLELIC_SNP_SITES', None)
        self.NUMBER_OF_OTHERS = kwargs.get(
            'NUMBER_OF_OTHERS', None)
        self.NUMBER_OF_RECORDS = kwargs.get(
            'NUMBER_OF_RECORDS', None)
        self.NUMBER_OF_SAMPLES = kwargs.get(
            'NUMBER_OF_SAMPLES', None)
        self.NUMBER_OF_SNPS = kwargs.get(
            'NUMBER_OF_SNPS', None)


class VcfTSTV(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "VcfTSTV", "namespace": "org.gel.models.report.avro", "fields": [{"name":
"TS_1", "type": "double"}, {"name": "TV", "type": "double"}, {"name": "TS", "type": "double"},
{"name": "TS_TV", "type": "double"}, {"name": "TV_1", "type": "double"}, {"name": "TS_TV_1", "type":
"double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "TS",
        "TS_1",
        "TS_TV",
        "TS_TV_1",
        "TV",
        "TV_1",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'TS', 'TS_1', 'TS_TV', 'TS_TV_1', 'TV', 'TV_1'
    ]

    def __init__(self, **kwargs):
        self.TS = kwargs.get(
            'TS', None)
        self.TS_1 = kwargs.get(
            'TS_1', None)
        self.TS_TV = kwargs.get(
            'TS_TV', None)
        self.TS_TV_1 = kwargs.get(
            'TS_TV_1', None)
        self.TV = kwargs.get(
            'TV', None)
        self.TV_1 = kwargs.get(
            'TV_1', None)


class VerifyBamId(ProtocolElement):
    """
    Verify Bam ID  This is only run on germline samples  * `SEQ_ID`: *
    `CHIP_ID`: * `SNPS`: * `READS`: * `AVG_DP`: * `FREEMIX`: *
    `FREELK1`: * `FREELK0`: * `FREE_RH`: * `FREE_RA`: * `CHIPMIX`: *
    `CHIPLK1`: * `CHIPLK0`: * `CHIP_RA`: * `DPREF`: * `RDPHET`: *
    `RDPALT`:
    """
    _schemaSource = """
{"type": "record", "name": "VerifyBamId", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "SEQ_ID", "type": "string"}, {"name": "CHIP_ID", "type": "string"}, {"name":
"SNPS", "type": "double"}, {"name": "READS", "type": "double"}, {"name": "AVG_DP", "type":
"double"}, {"name": "FREEMIX", "type": "double"}, {"name": "FREELK1", "type": "double"}, {"name":
"FREELK0", "type": "double"}, {"name": "FREE_RH", "type": "string"}, {"name": "FREE_RA", "type":
"string"}, {"name": "CHIPMIX", "type": "string"}, {"name": "CHIPLK1", "type": "string"}, {"name":
"CHIPLK0", "type": "string"}, {"name": "CHIP_RA", "type": "string"}, {"name": "DPREF", "type":
"string"}, {"name": "RDPHET", "type": "string"}, {"name": "RDPALT", "type": "string"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "AVG_DP",
        "CHIPLK0",
        "CHIPLK1",
        "CHIPMIX",
        "CHIP_ID",
        "CHIP_RA",
        "DPREF",
        "FREELK0",
        "FREELK1",
        "FREEMIX",
        "FREE_RA",
        "FREE_RH",
        "RDPALT",
        "RDPHET",
        "READS",
        "SEQ_ID",
        "SNPS",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'AVG_DP', 'CHIPLK0', 'CHIPLK1', 'CHIPMIX', 'CHIP_ID',
        'CHIP_RA', 'DPREF', 'FREELK0', 'FREELK1', 'FREEMIX',
        'FREE_RA', 'FREE_RH', 'RDPALT', 'RDPHET', 'READS', 'SEQ_ID',
        'SNPS'
    ]

    def __init__(self, **kwargs):
        self.AVG_DP = kwargs.get(
            'AVG_DP', None)
        self.CHIPLK0 = kwargs.get(
            'CHIPLK0', None)
        self.CHIPLK1 = kwargs.get(
            'CHIPLK1', None)
        self.CHIPMIX = kwargs.get(
            'CHIPMIX', None)
        self.CHIP_ID = kwargs.get(
            'CHIP_ID', None)
        self.CHIP_RA = kwargs.get(
            'CHIP_RA', None)
        self.DPREF = kwargs.get(
            'DPREF', None)
        self.FREELK0 = kwargs.get(
            'FREELK0', None)
        self.FREELK1 = kwargs.get(
            'FREELK1', None)
        self.FREEMIX = kwargs.get(
            'FREEMIX', None)
        self.FREE_RA = kwargs.get(
            'FREE_RA', None)
        self.FREE_RH = kwargs.get(
            'FREE_RH', None)
        self.RDPALT = kwargs.get(
            'RDPALT', None)
        self.RDPHET = kwargs.get(
            'RDPHET', None)
        self.READS = kwargs.get(
            'READS', None)
        self.SEQ_ID = kwargs.get(
            'SEQ_ID', None)
        self.SNPS = kwargs.get(
            'SNPS', None)


class VersionControl(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "VersionControl", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "GitVersionControl", "type": "string", "doc": "", "default": "3.0.0"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {}

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'GitVersionControl'
    ]

    def __init__(self, **kwargs):
        self.GitVersionControl = kwargs.get(
            'GitVersionControl', '3.0.0')


class WholeGenomeCoverage(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "WholeGenomeCoverage", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "coverageSummary", "type": {"type": "array", "items": {"type": "record", "name":
"CoverageSummary", "fields": [{"name": "avg", "type": "double", "doc": ""}, {"name": "med", "type":
"double", "doc": ""}, {"name": "bases", "type": "double", "doc": ""}, {"name": "pct25", "type":
["null", "double"], "doc": ""}, {"name": "pct75", "type": ["null", "double"], "doc": ""}, {"name":
"lt15x", "type": ["null", "double"], "doc": ""}, {"name": "gte15x", "type": ["null", "double"],
"doc": ""}, {"name": "gte30x", "type": ["null", "double"], "doc": ""}, {"name": "gte50x", "type":
["null", "double"], "doc": ""}, {"name": "sd", "type": ["null", "double"], "doc": ""}, {"name":
"localRMSD", "type": ["null", "double"], "doc": ""}, {"name": "scope", "type": "string", "doc":
""}]}}}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "coverageSummary",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'coverageSummary': CoverageSummary,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'coverageSummary': CoverageSummary,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'coverageSummary'
    ]

    def __init__(self, **kwargs):
        self.coverageSummary = kwargs.get(
            'coverageSummary', None)


class Zygosity(object):
    """
    It is a representation of the zygosity  * `reference_homozygous`:
    0/0, 0|0 * `heterozygous`: 0/1, 1/0, 1|0, 0|1 *
    `alternate_homozygous`: 1/1, 1|1 * `missing`: ./., .|. *
    `half_missing_reference`: ./0, 0/., 0|., .|0 *
    `half_missing_alternate`: ./1, 1/., 1|., .|1 *
    `alternate_hemizigous`: 1 * `reference_hemizigous`: 0 * `unk`:
    Anything unexpected
    """
    reference_homozygous = "reference_homozygous"
    heterozygous = "heterozygous"
    alternate_homozygous = "alternate_homozygous"
    missing = "missing"
    half_missing_reference = "half_missing_reference"
    half_missing_alternate = "half_missing_alternate"
    alternate_hemizigous = "alternate_hemizigous"
    reference_hemizigous = "reference_hemizigous"
    unk = "unk"

    def __hash__(self):
        return str(self).__hash__()


class sampleState(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "sampleState", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "state", "type": ["null", {"type": "enum", "name": "State", "doc": "", "symbols":
["ready", "warning", "pending", "hold", "fail", "caution"]}]}, {"name": "reason", "type": {"type":
"array", "items": {"type": "enum", "name": "Reason", "symbols": ["median_coverage", "in_analysis",
"duplicate", "pedigree_mendelian_errors", "pedigree_ibd_sharing", "contamination", "quality",
"sex_query", "perc_bases_ge_15x_mapQ_ge11", "GbQ30NoDupsNoClip", "arrayconcordance", "high_cnv",
"in_qc", "pass_qc", "other"]}}}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "reason",
        "state",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'reason', 'state'
    ]

    def __init__(self, **kwargs):
        self.reason = kwargs.get(
            'reason', None)
        self.state = kwargs.get(
            'state', None)


class sampleTests(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "sampleTests", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "verifybamid", "type": ["null", "boolean"]}, {"name": "arrayconcordance", "type": ["null",
"boolean"]}, {"name": "contamination", "type": ["null", "boolean"]}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "arrayconcordance",
        "contamination",
        "verifybamid",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {}
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {}

        return embeddedTypes[fieldName]

    __slots__ = [
        'arrayconcordance', 'contamination', 'verifybamid'
    ]

    def __init__(self, **kwargs):
        self.arrayconcordance = kwargs.get(
            'arrayconcordance', None)
        self.contamination = kwargs.get(
            'contamination', None)
        self.verifybamid = kwargs.get(
            'verifybamid', None)
