"""
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 = '1.2.1'


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

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


class AffectionStatus(object):
    """
    Affection Status
    """
    UNAFFECTED = "UNAFFECTED"
    AFFECTED = "AFFECTED"
    UNCERTAIN = "UNCERTAIN"

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


class AgeOfOnset(object):
    """
    No documentation
    """
    EMBRYONAL_ONSET = "EMBRYONAL_ONSET"
    FETAL_ONSET = "FETAL_ONSET"
    NEONATAL_ONSET = "NEONATAL_ONSET"
    INFANTILE_ONSET = "INFANTILE_ONSET"
    CHILDHOOD_ONSET = "CHILDHOOD_ONSET"
    JUVENILE_ONSET = "JUVENILE_ONSET"
    YOUNG_ADULT_ONSET = "YOUNG_ADULT_ONSET"
    LATE_ONSET = "LATE_ONSET"
    MIDDLE_AGE_ONSET = "MIDDLE_AGE_ONSET"

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


class AggregatedIndividualMendelErrors(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "AggregatedIndividualMendelErrors", "namespace":
"org.gel.models.metrics.avro", "fields": [{"name": "sampleId", "type": ["null", "string"], "doc":
""}, {"name": "totalnumberOfMendelErrors", "type": ["null", "double"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "sampleId",
        "totalnumberOfMendelErrors",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'sampleId', 'totalnumberOfMendelErrors'
    ]

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


class AnalysisPanel(ProtocolElement):
    """
    An analysis panel
    """
    _schemaSource = """
{"type": "record", "name": "AnalysisPanel", "namespace": "org.gel.models.participant.avro", "doc":
"", "fields": [{"name": "specificDisease", "type": "string", "doc": ""}, {"name": "panelName",
"type": "string", "doc": ""}, {"name": "panelId", "type": ["null", "string"], "doc": ""}, {"name":
"panelVersion", "type": ["null", "string"], "doc": ""}, {"name": "reviewOutcome", "type": ["null",
"string"], "doc": ""}, {"name": "multipleGeneticOrigins", "type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "multipleGeneticOrigins",
        "panelId",
        "panelName",
        "panelVersion",
        "reviewOutcome",
        "specificDisease",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'multipleGeneticOrigins', 'panelId', 'panelName',
        'panelVersion', 'reviewOutcome', 'specificDisease'
    ]

    def __init__(self, **kwargs):
        self.multipleGeneticOrigins = kwargs.get(
            'multipleGeneticOrigins', None)
        self.panelId = kwargs.get(
            'panelId', None)
        self.panelName = kwargs.get(
            'panelName', None)
        self.panelVersion = kwargs.get(
            'panelVersion', None)
        self.reviewOutcome = kwargs.get(
            'reviewOutcome', 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.participant.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": "double", "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 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 CancerParticipant(ProtocolElement):
    """
    This defines a Cancer Participant
    """
    _schemaSource = """
{"type": "record", "name": "CancerParticipant", "namespace": "org.gel.models.participant.avro",
"doc": "", "fields": [{"name": "yearOfBirth", "type": ["null", "int"], "doc": ""}, {"name":
"morphology", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name":
"readyForAnalysis", "type": "boolean", "doc": ""}, {"name": "consentStatus", "type": ["null",
{"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": "testConsentStatus", "type": ["null", {"type": "record",
"name": "GmsConsentStatus", "doc": "", "fields": [{"name": "programmeConsent", "type": {"type":
"enum", "name": "GenericConsent", "doc": "", "symbols": ["yes", "no", "undefined",
"not_applicable"]}, "doc": ""}, {"name": "primaryFindingConsent", "type": "GenericConsent", "doc":
""}, {"name": "researchConsent", "type": "GenericConsent", "doc": ""}, {"name":
"healthRelatedFindingConsent", "type": "GenericConsent", "doc": ""}, {"name":
"carrierStatusConsent", "type": "GenericConsent", "doc": ""}, {"name":
"pharmacogenomicsFindingConsent", "type": "GenericConsent", "doc": ""}]}], "doc": ""}, {"name":
"center", "type": ["null", "string"], "doc": ""}, {"name": "individualId", "type": ["null",
"string"], "doc": ""}, {"name": "participantId", "type": ["null", "string"], "doc": ""}, {"name":
"primaryDiagnosisDisease", "type": ["null", {"type": "array", "items": "string"}], "doc": ""},
{"name": "primaryDiagnosisSubDisease", "type": ["null", {"type": "array", "items": "string"}],
"doc": ""}, {"name": "sex", "type": {"type": "enum", "name": "Sex", "doc": "", "symbols": ["MALE",
"FEMALE", "UNKNOWN"]}, "doc": ""}, {"name": "additionalInformation", "type": ["null", {"type":
"map", "values": "string"}], "doc": ""}, {"name": "assignedICD10", "type": ["null", {"type":
"array", "items": "string"}], "doc": ""}, {"name": "tumourSamples", "type": ["null", {"type":
"array", "items": {"type": "record", "name": "TumourSample", "doc": "", "fields": [{"name":
"sampleId", "type": "string", "doc": ""}, {"name": "labSampleId", "type": "int", "doc": ""},
{"name": "LDPCode", "type": ["null", "string"], "doc": ""}, {"name": "tumourId", "type": ["null",
"string"], "doc": ""}, {"name": "programmePhase", "type": ["null", "string"], "doc": ""}, {"name":
"diseaseType", "type": ["null", {"type": "enum", "name": "diseaseType", "symbols": ["ADULT_GLIOMA",
"BLADDER", "BREAST", "CARCINOMA_OF_UNKNOWN_PRIMARY", "CHILDHOOD", "COLORECTAL", "ENDOCRINE",
"ENDOMETRIAL_CARCINOMA", "HAEMONC", "HEPATOPANCREATOBILIARY", "LUNG", "MALIGNANT_MELANOMA",
"NASOPHARYNGEAL", "ORAL_OROPHARYNGEAL", "OVARIAN", "PROSTATE", "RENAL", "SARCOMA", "SINONASAL",
"TESTICULAR_GERM_CELL_TUMOURS", "UPPER_GASTROINTESTINAL", "OTHER",
"NON_HODGKINS_B_CELL_LYMPHOMA_LOW_MOD_GRADE", "CLASSICAL_HODGKINS",
"NODULAR_LYMPHOCYTE_PREDOMINANT_HODGKINS", "T_CELL_LYMPHOMA"]}], "doc": ""}, {"name":
"diseaseSubType", "type": ["null", "string"], "doc": ""}, {"name": "haematologicalCancer", "type":
["null", "boolean"], "doc": ""}, {"name": "haematologicalCancerLineage", "type": ["null", {"type":
"enum", "name": "HaematologicalCancerLineage", "symbols": ["MYELOID", "LYMPHOID", "UNKNOWN"]}],
"doc": ""}, {"name": "clinicalSampleDateTime", "type": ["null", "string"], "doc": ""}, {"name":
"tumourType", "type": ["null", "string"], "doc": ""}, {"name": "tumourContent", "type": ["null",
{"type": "enum", "name": "TumourContent", "symbols": ["High", "Medium", "Low"]}], "doc": ""},
{"name": "tumourContentPercentage", "type": ["null", "float"], "doc": ""}, {"name": "source",
"type": ["null", {"type": "enum", "name": "SampleSource", "doc": "", "symbols": ["AMNIOTIC_FLUID",
"BLOOD", "BONE_MARROW", "BONE_MARROW_ASPIRATE_TUMOUR_CELLS",
"BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS", "BUCCAL_SWAB", "CHORIONIC_VILLUS_SAMPLE", "FIBROBLAST",
"FLUID", "FRESH_TISSUE_IN_CULTURE_MEDIUM", "OTHER", "SALIVA", "TISSUE", "TUMOUR", "URINE"]}], "doc":
""}, {"name": "preparationMethod", "type": ["null", {"type": "enum", "name": "PreparationMethod",
"doc": "", "symbols": ["ASPIRATE", "CD128_SORTED_CELLS", "CD138_SORTED_CELLS", "EDTA", "FF", "FFPE",
"LI_HEP", "ORAGENE"]}], "doc": ""}, {"name": "tissueSource", "type": ["null", "string"], "doc": ""},
{"name": "product", "type": ["null", {"type": "enum", "name": "Product", "symbols": ["DNA",
"RNA"]}], "doc": ""}, {"name": "sampleMorphologies", "type": ["null", {"type": "array", "items":
{"type": "record", "name": "Morphology", "fields": [{"name": "id", "type": ["null", "string"],
"doc": ""}, {"name": "name", "type": ["null", "string"], "doc": ""}, {"name": "value", "type":
["null", "string"], "doc": ""}, {"name": "version", "type": ["null", "string"], "doc": ""}]}}],
"doc": ""}, {"name": "sampleTopographies", "type": ["null", {"type": "array", "items": {"type":
"record", "name": "Topography", "fields": [{"name": "id", "type": ["null", "string"], "doc": ""},
{"name": "name", "type": ["null", "string"], "doc": ""}, {"name": "value", "type": ["null",
"string"], "doc": ""}, {"name": "version", "type": ["null", "string"], "doc": ""}]}}], "doc": ""},
{"name": "sampleUid", "type": ["null", "string"], "doc": ""}, {"name": "participantId", "type":
["null", "string"], "doc": ""}, {"name": "participantUid", "type": ["null", "string"], "doc": ""},
{"name": "maskedPid", "type": ["null", "string"], "doc": ""}, {"name": "method", "type": ["null",
{"type": "enum", "name": "Method", "doc": "", "symbols": ["ASPIRATE", "BIOPSY", "NOT_APPLICABLE",
"RESECTION", "SORTED_OTHER", "UNKNOWN", "UNSORTED", "CD138_SORTED"]}], "doc": ""}, {"name":
"storageMedium", "type": ["null", {"type": "enum", "name": "StorageMedium", "doc": "", "symbols":
["EDTA", "FF", "LI_HEP", "ORAGENE", "FFPE"]}], "doc": ""}, {"name": "sampleType", "type": ["null",
"string"], "doc": ""}, {"name": "sampleState", "type": ["null", "string"], "doc": ""}]}}], "doc":
""}, {"name": "germlineSamples", "type": ["null", {"type": "array", "items": {"type": "record",
"name": "GermlineSample", "doc": "", "fields": [{"name": "sampleId", "type": "string", "doc": ""},
{"name": "labSampleId", "type": "int", "doc": ""}, {"name": "LDPCode", "type": ["null", "string"],
"doc": ""}, {"name": "source", "type": ["null", "SampleSource"], "doc": ""}, {"name": "product",
"type": ["null", "Product"], "doc": ""}, {"name": "preparationMethod", "type": ["null",
"PreparationMethod"], "doc": ""}, {"name": "programmePhase", "type": ["null", {"type": "enum",
"name": "ProgrammePhase", "symbols": ["CRUK", "OXFORD", "CLL", "IIP", "MAIN", "EXPT"]}], "doc": ""},
{"name": "clinicalSampleDateTime", "type": ["null", "string"], "doc": ""}, {"name": "participantId",
"type": ["null", "string"]}, {"name": "participantUid", "type": ["null", "string"], "doc": ""},
{"name": "sampleUid", "type": ["null", "string"]}, {"name": "maskedPid", "type": ["null",
"string"]}, {"name": "method", "type": ["null", "Method"], "doc": ""}, {"name": "storageMedium",
"type": ["null", "StorageMedium"], "doc": ""}, {"name": "sampleType", "type": ["null", "string"],
"doc": ""}, {"name": "sampleState", "type": ["null", "string"], "doc": ""}]}}], "doc": ""}, {"name":
"versionControl", "type": ["null", {"type": "record", "name": "VersionControl", "fields": [{"name":
"GitVersionControl", "type": "string", "doc": "", "default": "1.2.0"}]}], "doc": ""}, {"name":
"participantUid", "type": ["null", "string"], "doc": ""}, {"name": "tumours", "type": ["null",
{"type": "array", "items": {"type": "record", "name": "Tumour", "fields": [{"name": "tumourId",
"type": "string", "doc": ""}, {"name": "tumourLocalId", "type": "string", "doc": ""}, {"name":
"tumourType", "type": {"type": "enum", "name": "TumourType", "doc": "", "symbols": ["BRAIN_TUMOUR",
"HAEMATOLOGICAL_MALIGNANCY_SOLID_SAMPLE", "HAEMATOLOGICAL_MALIGNANCY_LIQUID_SAMPLE",
"SOLID_TUMOUR_METASTATIC", "SOLID_TUMOUR_PRIMARY", "SOLID_TUMOUR", "UNKNOWN"]}, "doc": ""}, {"name":
"tumourParentId", "type": ["null", "string"], "doc": ""}, {"name": "tumourDiagnosisDate", "type":
["null", {"type": "record", "name": "Date", "doc": "", "fields": [{"name": "year", "type": "int",
"doc": ""}, {"name": "month", "type": ["null", "int"], "doc": ""}, {"name": "day", "type": ["null",
"int"], "doc": ""}]}], "doc": ""}, {"name": "tumourDescription", "type": ["null", "string"], "doc":
""}, {"name": "tumourMorphologies", "type": ["null", {"type": "array", "items": "Morphology"}],
"doc": ""}, {"name": "tumourTopographies", "type": ["null", {"type": "array", "items":
"Topography"}], "doc": ""}, {"name": "tumourPrimaryTopographies", "type": ["null", {"type": "array",
"items": "Topography"}], "doc": ""}, {"name": "tumourGrade", "type": ["null", "string"], "doc": ""},
{"name": "tumourStage", "type": ["null", "string"], "doc": ""}, {"name": "tumourPrognosticScore",
"type": ["null", "string"], "doc": ""}, {"name": "tumourPresentation", "type": ["null", {"type":
"enum", "name": "TumourPresentation", "symbols": ["FIRST_PRESENTATION", "RECURRENCE", "UNKNOWN"]}],
"doc": ""}, {"name": "primaryOrMetastatic", "type": ["null", {"type": "enum", "name":
"PrimaryOrMetastatic", "symbols": ["PRIMARY", "METASTATIC", "UNKNOWN", "NOT_APPLICABLE"]}], "doc":
""}]}}], "doc": ""}, {"name": "previousTreatment", "type": ["null", {"type": "array", "items":
{"type": "record", "name": "PreviousTreatment", "doc": "", "fields": [{"name":
"previousTreatmentType", "type": ["null", "string"]}, {"name": "previousTreatmentName", "type":
["null", "string"]}, {"name": "previousTreatmentDate", "type": ["null", "Date"]}]}}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "additionalInformation",
        "assignedICD10",
        "center",
        "consentStatus",
        "germlineSamples",
        "individualId",
        "morphology",
        "participantId",
        "participantUid",
        "previousTreatment",
        "primaryDiagnosisDisease",
        "primaryDiagnosisSubDisease",
        "readyForAnalysis",
        "sex",
        "testConsentStatus",
        "tumourSamples",
        "tumours",
        "versionControl",
        "yearOfBirth",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'consentStatus': ConsentStatus,
            'germlineSamples': GermlineSample,
            'previousTreatment': PreviousTreatment,
            'testConsentStatus': GmsConsentStatus,
            'tumourSamples': TumourSample,
            'tumours': Tumour,
            'versionControl': VersionControl,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'consentStatus': ConsentStatus,
            'germlineSamples': GermlineSample,
            'previousTreatment': PreviousTreatment,
            'testConsentStatus': GmsConsentStatus,
            'tumourSamples': TumourSample,
            'tumours': Tumour,
            'versionControl': VersionControl,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'additionalInformation', 'assignedICD10', 'center',
        'consentStatus', 'germlineSamples', 'individualId',
        'morphology', 'participantId', 'participantUid',
        'previousTreatment', 'primaryDiagnosisDisease',
        'primaryDiagnosisSubDisease', 'readyForAnalysis', 'sex',
        'testConsentStatus', 'tumourSamples', 'tumours',
        'versionControl', 'yearOfBirth'
    ]

    def __init__(self, **kwargs):
        self.additionalInformation = kwargs.get(
            'additionalInformation', None)
        self.assignedICD10 = kwargs.get(
            'assignedICD10', None)
        self.center = kwargs.get(
            'center', None)
        self.consentStatus = kwargs.get(
            'consentStatus', None)
        self.germlineSamples = kwargs.get(
            'germlineSamples', None)
        self.individualId = kwargs.get(
            'individualId', None)
        self.morphology = kwargs.get(
            'morphology', None)
        self.participantId = kwargs.get(
            'participantId', None)
        self.participantUid = kwargs.get(
            'participantUid', None)
        self.previousTreatment = kwargs.get(
            'previousTreatment', None)
        self.primaryDiagnosisDisease = kwargs.get(
            'primaryDiagnosisDisease', None)
        self.primaryDiagnosisSubDisease = kwargs.get(
            'primaryDiagnosisSubDisease', None)
        self.readyForAnalysis = kwargs.get(
            'readyForAnalysis', None)
        self.sex = kwargs.get(
            'sex', None)
        self.testConsentStatus = kwargs.get(
            'testConsentStatus', None)
        self.tumourSamples = kwargs.get(
            'tumourSamples', None)
        self.tumours = kwargs.get(
            'tumours', None)
        self.versionControl = kwargs.get(
            'versionControl', None)
        self.yearOfBirth = kwargs.get(
            'yearOfBirth', 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 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.participant.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": "double", "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 ClinicalEthnicity(object):
    """
    * A     British, Mixed British     * B     Irish     * C     Any
    other White background     * C2    Northern Irish     * C3
    Other white, white unspecified     * CA    English     * CB
    Scottish     * CC    Welsh     * CD    Cornish     * CE    Cypriot
    (part not stated)     * CF    Greek     * CG    Greek Cypriot
    * CH    Turkish     * CJ    Turkish Cypriot     * CK    Italian
    * CL    Irish Traveller     * CM    Traveller     * CN
    Gypsy/Romany     * CP    Polish     * CQ    All republics which
    made up the former USSR     * CR    Kosovan     * CS    Albanian
    * CT    Bosnian     * CU    Croatian     * CV    Serbian     * CW
    Other republics which made up the former Yugoslavia     * CX
    Mixed white     * CY    Other white European, European
    unspecified, European mixed     * D     White and Black Caribbean
    * E     White and Black African     * F     White and Asian     *
    G     Any other mixed background     * GA    Black and Asian     *
    GB    Black and Chinese     * GC    Black and White     * GD
    Chinese and White     * GE    Asian and Chinese     * GF    Other
    Mixed, Mixed Unspecified     * H     Indian or British Indian
    * J     Pakistani or British Pakistani     * K     Bangladeshi or
    British Bangladeshi     * L     Any other Asian background     *
    LA    Mixed Asian     * LB    Punjabi     * LC    Kashmiri     *
    LD    East African Asian     * LE    Sri Lanka     * LF    Tamil
    * LG    Sinhalese     * LH    British Asian     * LJ    Caribbean
    Asian     * LK    Other Asian, Asian unspecified     * M
    Caribbean     * N     African     * P     Any other Black
    background     * PA    Somali     * PB    Mixed Black     * PC
    Nigerian     * PD    Black British     * PE    Other Black, Black
    unspecified     * R     Chinese     * S     Any other ethnic group
    * S1    Ashkenazi     * S2    Sephardi     * SA    Vietnamese
    * SB    Japanese     * SC    Filipino     * SD    Malaysian     *
    SE    Any Other Group     * Z     Not stated
    """
    A = "A"
    B = "B"
    C = "C"
    C2 = "C2"
    C3 = "C3"
    CA = "CA"
    CB = "CB"
    CC = "CC"
    CD = "CD"
    CE = "CE"
    CF = "CF"
    CG = "CG"
    CH = "CH"
    CJ = "CJ"
    CK = "CK"
    CL = "CL"
    CM = "CM"
    CN = "CN"
    CP = "CP"
    CQ = "CQ"
    CR = "CR"
    CS = "CS"
    CT = "CT"
    CU = "CU"
    CV = "CV"
    CW = "CW"
    CX = "CX"
    CY = "CY"
    D = "D"
    E = "E"
    F = "F"
    G = "G"
    GA = "GA"
    GB = "GB"
    GC = "GC"
    GD = "GD"
    GE = "GE"
    GF = "GF"
    H = "H"
    J = "J"
    K = "K"
    L = "L"
    LA = "LA"
    LB = "LB"
    LC = "LC"
    LD = "LD"
    LE = "LE"
    LF = "LF"
    LG = "LG"
    LH = "LH"
    LJ = "LJ"
    LK = "LK"
    M = "M"
    N = "N"
    P = "P"
    PA = "PA"
    PB = "PB"
    PC = "PC"
    PD = "PD"
    PE = "PE"
    R = "R"
    S = "S"
    S1 = "S1"
    S2 = "S2"
    SA = "SA"
    SB = "SB"
    SC = "SC"
    SD = "SD"
    SE = "SE"
    Z = "Z"

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


class ClinicalIndication(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "ClinicalIndication", "namespace": "org.gel.models.participant.avro",
"fields": [{"name": "clinicalIndicationUid", "type": "string", "doc": ""}, {"name":
"clinicalIndicationCode", "type": "string", "doc": ""}, {"name": "clinicalIndicationFullName",
"type": "string", "doc": ""}, {"name": "clinicalIndicationVersionNumber", "type": ["null",
"string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "clinicalIndicationCode",
        "clinicalIndicationFullName",
        "clinicalIndicationUid",
        "clinicalIndicationVersionNumber",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'clinicalIndicationCode', 'clinicalIndicationFullName',
        'clinicalIndicationUid', 'clinicalIndicationVersionNumber'
    ]

    def __init__(self, **kwargs):
        self.clinicalIndicationCode = kwargs.get(
            'clinicalIndicationCode', None)
        self.clinicalIndicationFullName = kwargs.get(
            'clinicalIndicationFullName', None)
        self.clinicalIndicationUid = kwargs.get(
            'clinicalIndicationUid', None)
        self.clinicalIndicationVersionNumber = kwargs.get(
            'clinicalIndicationVersionNumber', None)


class ClinicalIndicationTest(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "ClinicalIndicationTest", "namespace": "org.gel.models.participant.avro",
"fields": [{"name": "clinicalIndicationTestTypeId", "type": "string", "doc": ""}, {"name":
"clinicalIndicationTestTypeCode", "type": "string", "doc": ""}, {"name": "testTypeId", "type":
"string", "doc": ""}, {"name": "testTypeName", "type": "string", "doc": ""}, {"name": "technology",
"type": {"type": "record", "name": "Technology", "fields": [{"name": "testTechnologyId", "type":
"string", "doc": ""}, {"name": "testTechnologyDescription", "type": "string", "doc": ""}]}, "doc":
""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "clinicalIndicationTestTypeCode",
        "clinicalIndicationTestTypeId",
        "technology",
        "testTypeId",
        "testTypeName",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'clinicalIndicationTestTypeCode',
        'clinicalIndicationTestTypeId', 'technology', 'testTypeId',
        'testTypeName'
    ]

    def __init__(self, **kwargs):
        self.clinicalIndicationTestTypeCode = kwargs.get(
            'clinicalIndicationTestTypeCode', None)
        self.clinicalIndicationTestTypeId = kwargs.get(
            'clinicalIndicationTestTypeId', None)
        self.technology = kwargs.get(
            'technology', Technology())
        self.testTypeId = kwargs.get(
            'testTypeId', None)
        self.testTypeName = kwargs.get(
            'testTypeName', None)


class CnvSummary(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "CnvSummary", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "countAutosomalCnvPass", "type": "double", "doc": ""}, {"name": "countAutosomalLossPass",
"type": "double", "doc": ""}, {"name": "countAutosomalLossCn0Pass", "type": "double", "doc": ""},
{"name": "countAutosomalLossCn1P", "type": "double", "doc": ""}, {"name": "countAutosomalGainPas",
"type": "double", "doc": ""}, {"name": "countAutosomalLohPass", "type": "double", "doc": ""},
{"name": "log2AutosomalLossGainPass", "type": "double", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "countAutosomalCnvPass",
        "countAutosomalGainPas",
        "countAutosomalLohPass",
        "countAutosomalLossCn0Pass",
        "countAutosomalLossCn1P",
        "countAutosomalLossPass",
        "log2AutosomalLossGainPass",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'countAutosomalCnvPass', 'countAutosomalGainPas',
        'countAutosomalLohPass', 'countAutosomalLossCn0Pass',
        'countAutosomalLossCn1P', 'countAutosomalLossPass',
        'log2AutosomalLossGainPass'
    ]

    def __init__(self, **kwargs):
        self.countAutosomalCnvPass = kwargs.get(
            'countAutosomalCnvPass', None)
        self.countAutosomalGainPas = kwargs.get(
            'countAutosomalGainPas', None)
        self.countAutosomalLohPass = kwargs.get(
            'countAutosomalLohPass', None)
        self.countAutosomalLossCn0Pass = kwargs.get(
            'countAutosomalLossCn0Pass', None)
        self.countAutosomalLossCn1P = kwargs.get(
            'countAutosomalLossCn1P', None)
        self.countAutosomalLossPass = kwargs.get(
            'countAutosomalLossPass', None)
        self.log2AutosomalLossGainPass = kwargs.get(
            'log2AutosomalLossGainPass', None)


class CommonCnvSummary(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "CommonCnvSummary", "namespace": "org.gel.models.report.avro", "fields":
[{"name": "countAutosomalConradCnvPass", "type": "double", "doc": ""}, {"name":
"fractionAutosomalConradCnvPass", "type": "double", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "countAutosomalConradCnvPass",
        "fractionAutosomalConradCnvPass",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'countAutosomalConradCnvPass',
        'fractionAutosomalConradCnvPass'
    ]

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


class ConsentStatus(ProtocolElement):
    """
    Consent Status for 100k program
    """
    _schemaSource = """
{"type": "record", "name": "ConsentStatus", "namespace": "org.gel.models.participant.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 CoverageBasedSex(ProtocolElement):
    """
    Coverage-based sex     ========================================
    General information about the checks, versions, tools, and number
    of markers     TODO: Consider removing Inferred karyotype
    """
    _schemaSource = """
{"type": "record", "name": "CoverageBasedSex", "namespace": "org.gel.models.metrics.avro", "doc":
"", "fields": [{"name": "sampleId", "type": ["null", "string"], "doc": ""}, {"name":
"inferredKaryotype", "type": ["null", {"type": "enum", "name": "KaryotypicSex", "doc": "",
"symbols": ["UNKNOWN", "XX", "XY", "XO", "XXY", "XXX", "XXYY", "XXXY", "XXXX", "XYY", "OTHER"]}],
"doc": ""}, {"name": "ratioChrX", "type": ["null", "double"], "doc": ""}, {"name": "ratioChrY",
"type": ["null", "double"], "doc": ""}, {"name": "avgCnvChrX", "type": ["null", "double"], "doc":
""}, {"name": "avgCnvChrY", "type": ["null", "double"], "doc": ""}, {"name": "reviewedKaryotype",
"type": ["null", "KaryotypicSex"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "avgCnvChrX",
        "avgCnvChrY",
        "inferredKaryotype",
        "ratioChrX",
        "ratioChrY",
        "reviewedKaryotype",
        "sampleId",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'avgCnvChrX', 'avgCnvChrY', 'inferredKaryotype', 'ratioChrX',
        'ratioChrY', 'reviewedKaryotype', 'sampleId'
    ]

    def __init__(self, **kwargs):
        self.avgCnvChrX = kwargs.get(
            'avgCnvChrX', None)
        self.avgCnvChrY = kwargs.get(
            'avgCnvChrY', None)
        self.inferredKaryotype = kwargs.get(
            'inferredKaryotype', None)
        self.ratioChrX = kwargs.get(
            'ratioChrX', None)
        self.ratioChrY = kwargs.get(
            'ratioChrY', None)
        self.reviewedKaryotype = kwargs.get(
            'reviewedKaryotype', None)
        self.sampleId = kwargs.get(
            'sampleId', None)


class CoverageBasedSexCheck(ProtocolElement):
    """
    Evaluation     ========================================
    """
    _schemaSource = """
{"type": "record", "name": "CoverageBasedSexCheck", "namespace": "org.gel.models.metrics.avro",
"doc": "", "fields": [{"name": "sampleId", "type": ["null", "string"], "doc": ""}, {"name":
"reportedPhenotypicSex", "type": ["null", {"type": "enum", "name": "Sex", "doc": "", "symbols":
["UNKNOWN", "MALE", "FEMALE", "OTHER"]}], "doc": ""}, {"name": "reportedKaryotypicSex", "type":
["null", {"type": "enum", "name": "KaryotypicSex", "doc": "", "symbols": ["UNKNOWN", "XX", "XY",
"XO", "XXY", "XXX", "XXYY", "XXXY", "XXXX", "XYY", "OTHER"]}], "doc": ""}, {"name":
"inferredSexKaryotype", "type": ["null", "KaryotypicSex"], "doc": ""}, {"name": "sexQuery", "type":
["null", {"type": "enum", "name": "Query", "doc": "", "symbols": ["yes", "no", "unknown",
"notTested"]}], "doc": ""}, {"name": "comments", "type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "comments",
        "inferredSexKaryotype",
        "reportedKaryotypicSex",
        "reportedPhenotypicSex",
        "sampleId",
        "sexQuery",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'comments', 'inferredSexKaryotype', 'reportedKaryotypicSex',
        'reportedPhenotypicSex', 'sampleId', 'sexQuery'
    ]

    def __init__(self, **kwargs):
        self.comments = kwargs.get(
            'comments', None)
        self.inferredSexKaryotype = kwargs.get(
            'inferredSexKaryotype', None)
        self.reportedKaryotypicSex = kwargs.get(
            'reportedKaryotypicSex', None)
        self.reportedPhenotypicSex = kwargs.get(
            'reportedPhenotypicSex', None)
        self.sampleId = kwargs.get(
            'sampleId', None)
        self.sexQuery = kwargs.get(
            'sexQuery', None)


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 CoverageSummaryCalculations(ProtocolElement):
    """
    Stats calculated from values stored in CoverageSummary
    """
    _schemaSource = """
{"type": "record", "name": "CoverageSummaryCalculations", "namespace": "org.gel.models.report.avro",
"doc": "", "fields": [{"name": "lt30x_percent", "type": "double", "doc": ""}, {"name": "scope",
"type": "string", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "lt30x_percent",
        "scope",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'lt30x_percent', 'scope'
    ]

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


class Date(ProtocolElement):
    """
    This defines a date record
    """
    _schemaSource = """
{"type": "record", "name": "Date", "namespace": "org.gel.models.participant.avro", "doc": "",
"fields": [{"name": "year", "type": "int", "doc": ""}, {"name": "month", "type": ["null", "int"],
"doc": ""}, {"name": "day", "type": ["null", "int"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "day",
        "month",
        "year",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'day', 'month', 'year'
    ]

    def __init__(self, **kwargs):
        self.day = kwargs.get(
            'day', None)
        self.month = kwargs.get(
            'month', None)
        self.year = kwargs.get(
            'year', None)


class DiagnosticDetail(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "DiagnosticDetail", "namespace": "org.gel.models.participant.avro",
"fields": [{"name": "diagnosisCodingSystem", "type": "string", "doc": ""}, {"name":
"diagnosisCodingSystemVersion", "type": ["null", "string"], "doc": ""}, {"name": "diagnosisCode",
"type": "string", "doc": ""}, {"name": "diagnosisDescription", "type": ["null", "string"], "doc":
""}, {"name": "diagnosisCertainty", "type": ["null", "string"], "doc": ""}, {"name":
"ageAtOnsetInYears", "type": ["null", "float"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "ageAtOnsetInYears",
        "diagnosisCertainty",
        "diagnosisCode",
        "diagnosisCodingSystem",
        "diagnosisCodingSystemVersion",
        "diagnosisDescription",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'ageAtOnsetInYears', 'diagnosisCertainty', 'diagnosisCode',
        'diagnosisCodingSystem', 'diagnosisCodingSystemVersion',
        'diagnosisDescription'
    ]

    def __init__(self, **kwargs):
        self.ageAtOnsetInYears = kwargs.get(
            'ageAtOnsetInYears', None)
        self.diagnosisCertainty = kwargs.get(
            'diagnosisCertainty', None)
        self.diagnosisCode = kwargs.get(
            'diagnosisCode', None)
        self.diagnosisCodingSystem = kwargs.get(
            'diagnosisCodingSystem', None)
        self.diagnosisCodingSystemVersion = kwargs.get(
            'diagnosisCodingSystemVersion', None)
        self.diagnosisDescription = kwargs.get(
            'diagnosisDescription', None)


class DiseasePenetrance(ProtocolElement):
    """
    A disease penetrance definition
    """
    _schemaSource = """
{"type": "record", "name": "DiseasePenetrance", "namespace": "org.gel.models.participant.avro",
"doc": "", "fields": [{"name": "specificDisease", "type": "string", "doc": ""}, {"name":
"penetrance", "type": {"type": "enum", "name": "Penetrance", "doc": "", "symbols": ["complete",
"incomplete"]}, "doc": ""}]}
"""
    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.participant.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", "float"], "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 ethnicities 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 Evaluation(ProtocolElement):
    """
    Evaluation     ========================================
    reportedVsGeneticSummary: familyPassesGvsRChecks,
    familyFailsACheck, familyMissingACheck
    """
    _schemaSource = """
{"type": "record", "name": "Evaluation", "namespace": "org.gel.models.metrics.avro", "doc": "",
"fields": [{"name": "coverageBasedSexCheck", "type": ["null", {"type": "array", "items": {"type":
"record", "name": "CoverageBasedSexCheck", "doc": "", "fields": [{"name": "sampleId", "type":
["null", "string"], "doc": ""}, {"name": "reportedPhenotypicSex", "type": ["null", {"type": "enum",
"name": "Sex", "doc": "", "symbols": ["UNKNOWN", "MALE", "FEMALE", "OTHER"]}], "doc": ""}, {"name":
"reportedKaryotypicSex", "type": ["null", {"type": "enum", "name": "KaryotypicSex", "doc": "",
"symbols": ["UNKNOWN", "XX", "XY", "XO", "XXY", "XXX", "XXYY", "XXXY", "XXXX", "XYY", "OTHER"]}],
"doc": ""}, {"name": "inferredSexKaryotype", "type": ["null", "KaryotypicSex"], "doc": ""}, {"name":
"sexQuery", "type": ["null", {"type": "enum", "name": "Query", "doc": "", "symbols": ["yes", "no",
"unknown", "notTested"]}], "doc": ""}, {"name": "comments", "type": ["null", "string"], "doc":
""}]}}], "doc": ""}, {"name": "mendelianInconsistenciesCheck", "type": ["null", {"type": "array",
"items": {"type": "record", "name": "MendelianInconsistenciesCheck", "fields": [{"name": "sampleId",
"type": ["null", "string"], "doc": ""}, {"name": "mendelianInconsistenciesQuery", "type": ["null",
"Query"], "doc": ""}, {"name": "comments", "type": ["null", "string"], "doc": ""}]}}], "doc": ""},
{"name": "familyRelatednessCheck", "type": ["null", {"type": "array", "items": {"type": "record",
"name": "FamilyRelatednessCheck", "fields": [{"name": "sampleId1", "type": ["null", "string"],
"doc": ""}, {"name": "sampleId2", "type": ["null", "string"], "doc": ""}, {"name":
"relationshipFromPedigree", "type": ["null", {"type": "enum", "name": "FamiliarRelationship",
"namespace": "org.gel.models.participant.avro", "doc": "", "symbols": ["TwinsMonozygous",
"TwinsDizygous", "TwinsUnknown", "FullSibling", "FullSiblingF", "FullSiblingM", "Mother", "Father",
"Son", "Daughter", "ChildOfUnknownSex", "MaternalAunt", "MaternalUncle", "MaternalUncleOrAunt",
"PaternalAunt", "PaternalUncle", "PaternalUncleOrAunt", "MaternalGrandmother",
"PaternalGrandmother", "MaternalGrandfather", "PaternalGrandfather", "DoubleFirstCousin",
"MaternalCousinSister", "PaternalCousinSister", "MaternalCousinBrother", "PaternalCousinBrother",
"Cousin", "Spouse", "Other", "RelationIsNotClear", "Unrelated", "Unknown"]}], "doc": ""}, {"name":
"possibleRelationship", "type": ["null", "string"], "doc": ""}, {"name": "withinFamilyIBDQuery",
"type": ["null", "Query"], "doc": ""}, {"name": "comments", "type": ["null", "string"], "doc":
""}]}}], "doc": ""}, {"name": "reportedVsGeneticSummary", "type": ["null", {"type": "enum", "name":
"reportedVsGeneticSummary", "doc": "", "symbols": ["familyPassesGvsRChecks", "familyFailsACheck",
"familyMissingACheck"]}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "coverageBasedSexCheck",
        "familyRelatednessCheck",
        "mendelianInconsistenciesCheck",
        "reportedVsGeneticSummary",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'coverageBasedSexCheck': CoverageBasedSexCheck,
            'familyRelatednessCheck': FamilyRelatednessCheck,
            'mendelianInconsistenciesCheck': MendelianInconsistenciesCheck,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'coverageBasedSexCheck': CoverageBasedSexCheck,
            'familyRelatednessCheck': FamilyRelatednessCheck,
            'mendelianInconsistenciesCheck': MendelianInconsistenciesCheck,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'coverageBasedSexCheck', 'familyRelatednessCheck',
        'mendelianInconsistenciesCheck', 'reportedVsGeneticSummary'
    ]

    def __init__(self, **kwargs):
        self.coverageBasedSexCheck = kwargs.get(
            'coverageBasedSexCheck', None)
        self.familyRelatednessCheck = kwargs.get(
            'familyRelatednessCheck', None)
        self.mendelianInconsistenciesCheck = kwargs.get(
            'mendelianInconsistenciesCheck', None)
        self.reportedVsGeneticSummary = kwargs.get(
            'reportedVsGeneticSummary', None)


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 FamiliarRelationship(object):
    """
    Familiar relationship from pedrigree
    """
    TwinsMonozygous = "TwinsMonozygous"
    TwinsDizygous = "TwinsDizygous"
    TwinsUnknown = "TwinsUnknown"
    FullSibling = "FullSibling"
    FullSiblingF = "FullSiblingF"
    FullSiblingM = "FullSiblingM"
    Mother = "Mother"
    Father = "Father"
    Son = "Son"
    Daughter = "Daughter"
    ChildOfUnknownSex = "ChildOfUnknownSex"
    MaternalAunt = "MaternalAunt"
    MaternalUncle = "MaternalUncle"
    MaternalUncleOrAunt = "MaternalUncleOrAunt"
    PaternalAunt = "PaternalAunt"
    PaternalUncle = "PaternalUncle"
    PaternalUncleOrAunt = "PaternalUncleOrAunt"
    MaternalGrandmother = "MaternalGrandmother"
    PaternalGrandmother = "PaternalGrandmother"
    MaternalGrandfather = "MaternalGrandfather"
    PaternalGrandfather = "PaternalGrandfather"
    DoubleFirstCousin = "DoubleFirstCousin"
    MaternalCousinSister = "MaternalCousinSister"
    PaternalCousinSister = "PaternalCousinSister"
    MaternalCousinBrother = "MaternalCousinBrother"
    PaternalCousinBrother = "PaternalCousinBrother"
    Cousin = "Cousin"
    Spouse = "Spouse"
    Other = "Other"
    RelationIsNotClear = "RelationIsNotClear"
    Unrelated = "Unrelated"
    Unknown = "Unknown"

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


class FamilyQCState(object):
    """
    FamilyQCState
    """
    noState = "noState"
    passedMedicalReviewReadyForInterpretation = "passedMedicalReviewReadyForInterpretation"
    passedMedicalReviewNotReadyForInterpretation = "passedMedicalReviewNotReadyForInterpretation"
    queryToGel = "queryToGel"
    queryToGMC = "queryToGMC"
    failed = "failed"

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


class FamilyRelatedness(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "FamilyRelatedness", "namespace": "org.gel.models.metrics.avro",
"fields": [{"name": "relatedness", "type": ["null", {"type": "array", "items": {"type": "record",
"name": "RelatednessPair", "doc": "", "fields": [{"name": "sampleId1", "type": ["null", "string"],
"doc": ""}, {"name": "sampleId2", "type": ["null", "string"], "doc": ""}, {"name": "ibd0", "type":
["null", "double"], "doc": ""}, {"name": "ibd1", "type": ["null", "double"], "doc": ""}, {"name":
"ibd2", "type": ["null", "double"], "doc": ""}, {"name": "piHat", "type": ["null", "double"], "doc":
""}]}}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "relatedness",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'relatedness'
    ]

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


class FamilyRelatednessCheck(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "FamilyRelatednessCheck", "namespace": "org.gel.models.metrics.avro",
"fields": [{"name": "sampleId1", "type": ["null", "string"], "doc": ""}, {"name": "sampleId2",
"type": ["null", "string"], "doc": ""}, {"name": "relationshipFromPedigree", "type": ["null",
{"type": "enum", "name": "FamiliarRelationship", "namespace": "org.gel.models.participant.avro",
"doc": "", "symbols": ["TwinsMonozygous", "TwinsDizygous", "TwinsUnknown", "FullSibling",
"FullSiblingF", "FullSiblingM", "Mother", "Father", "Son", "Daughter", "ChildOfUnknownSex",
"MaternalAunt", "MaternalUncle", "MaternalUncleOrAunt", "PaternalAunt", "PaternalUncle",
"PaternalUncleOrAunt", "MaternalGrandmother", "PaternalGrandmother", "MaternalGrandfather",
"PaternalGrandfather", "DoubleFirstCousin", "MaternalCousinSister", "PaternalCousinSister",
"MaternalCousinBrother", "PaternalCousinBrother", "Cousin", "Spouse", "Other", "RelationIsNotClear",
"Unrelated", "Unknown"]}], "doc": ""}, {"name": "possibleRelationship", "type": ["null", "string"],
"doc": ""}, {"name": "withinFamilyIBDQuery", "type": ["null", {"type": "enum", "name": "Query",
"doc": "", "symbols": ["yes", "no", "unknown", "notTested"]}], "doc": ""}, {"name": "comments",
"type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "comments",
        "possibleRelationship",
        "relationshipFromPedigree",
        "sampleId1",
        "sampleId2",
        "withinFamilyIBDQuery",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'comments', 'possibleRelationship',
        'relationshipFromPedigree', 'sampleId1', 'sampleId2',
        'withinFamilyIBDQuery'
    ]

    def __init__(self, **kwargs):
        self.comments = kwargs.get(
            'comments', None)
        self.possibleRelationship = kwargs.get(
            'possibleRelationship', None)
        self.relationshipFromPedigree = kwargs.get(
            'relationshipFromPedigree', None)
        self.sampleId1 = kwargs.get(
            'sampleId1', None)
        self.sampleId2 = kwargs.get(
            'sampleId2', None)
        self.withinFamilyIBDQuery = kwargs.get(
            'withinFamilyIBDQuery', None)


class FamilySelection(ProtocolElement):
    """
    FamilySelection     ===================================     A
    collection of selection events and global results for family
    selection
    """
    _schemaSource = """
{"type": "record", "name": "FamilySelection", "namespace": "org.gel.models.metrics.avro", "doc": "",
"fields": [{"name": "events", "type": {"type": "array", "items": {"type": "record", "name":
"SelectionEvent", "doc": "", "fields": [{"name": "name", "type": {"type": "enum", "name":
"SelectionTest", "doc": "", "symbols": ["ALIGNMENT_STATS", "ANALYSIS_PANELS", "BAM_STATS_CHECK",
"BLACKLIST", "CNV_QC_STATUS", "DELIVERY_CHECK", "DISEASE_PENETRANCE", "FAMILY_SELECTION",
"GEL_STATUS", "HPO_CHECK", "PANEL_VERSION", "RVG_RESULTS", "SEX_CHECK"]}, "doc": ""}, {"name":
"passed", "type": "boolean", "doc": ""}, {"name": "description", "type": {"type": "array", "items":
"string"}, "doc": ""}, {"name": "flags", "type": ["null", {"type": "array", "items": {"type":
"enum", "name": "SelectionFlag", "doc": "", "symbols": ["UNUSUAL_SEX_KARYOTYPE",
"UNKNOWN_PHENOTYPIC_SEX", "INCORRECT_OR_DISCORDANT_SEX_KARYOTYPE",
"INFERRED_GENETIC_AND_REPORTED_SEX_DISCORDANT"]}}], "doc": ""}]}}, "doc": ""}, {"name": "status",
"type": {"type": "enum", "name": "SelectionStatus", "doc": "", "symbols": ["NOT_CHECKED",
"REJECTED", "SELECTED"]}, "doc": ""}, {"name": "flagged", "type": "boolean", "doc": ""}, {"name":
"rvsgAnnotation", "type": "string", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "events",
        "flagged",
        "rvsgAnnotation",
        "status",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'events', 'flagged', 'rvsgAnnotation', 'status'
    ]

    def __init__(self, **kwargs):
        self.events = kwargs.get(
            'events', None)
        self.flagged = kwargs.get(
            'flagged', None)
        self.rvsgAnnotation = kwargs.get(
            'rvsgAnnotation', None)
        self.status = kwargs.get(
            'status', None)


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.metrics.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", "string"]}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "SampleId",
        "URIFile",
        "fileType",
        "md5Sum",
    }

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

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

        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 GenericConsent(object):
    """
    clinicalEthnicities supersedes Ancestries in GMS
    """
    yes = "yes"
    no = "no"
    undefined = "undefined"
    not_applicable = "not_applicable"

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


class GermlineSample(ProtocolElement):
    """
    A germline sample
    """
    _schemaSource = """
{"type": "record", "name": "GermlineSample", "namespace": "org.gel.models.participant.avro", "doc":
"", "fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name": "labSampleId", "type":
"int", "doc": ""}, {"name": "LDPCode", "type": ["null", "string"], "doc": ""}, {"name": "source",
"type": ["null", {"type": "enum", "name": "SampleSource", "doc": "", "symbols": ["AMNIOTIC_FLUID",
"BLOOD", "BONE_MARROW", "BONE_MARROW_ASPIRATE_TUMOUR_CELLS",
"BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS", "BUCCAL_SWAB", "CHORIONIC_VILLUS_SAMPLE", "FIBROBLAST",
"FLUID", "FRESH_TISSUE_IN_CULTURE_MEDIUM", "OTHER", "SALIVA", "TISSUE", "TUMOUR", "URINE"]}], "doc":
""}, {"name": "product", "type": ["null", {"type": "enum", "name": "Product", "symbols": ["DNA",
"RNA"]}], "doc": ""}, {"name": "preparationMethod", "type": ["null", {"type": "enum", "name":
"PreparationMethod", "doc": "", "symbols": ["ASPIRATE", "CD128_SORTED_CELLS", "CD138_SORTED_CELLS",
"EDTA", "FF", "FFPE", "LI_HEP", "ORAGENE"]}], "doc": ""}, {"name": "programmePhase", "type":
["null", {"type": "enum", "name": "ProgrammePhase", "symbols": ["CRUK", "OXFORD", "CLL", "IIP",
"MAIN", "EXPT"]}], "doc": ""}, {"name": "clinicalSampleDateTime", "type": ["null", "string"], "doc":
""}, {"name": "participantId", "type": ["null", "string"]}, {"name": "participantUid", "type":
["null", "string"], "doc": ""}, {"name": "sampleUid", "type": ["null", "string"]}, {"name":
"maskedPid", "type": ["null", "string"]}, {"name": "method", "type": ["null", {"type": "enum",
"name": "Method", "doc": "", "symbols": ["ASPIRATE", "BIOPSY", "NOT_APPLICABLE", "RESECTION",
"SORTED_OTHER", "UNKNOWN", "UNSORTED", "CD138_SORTED"]}], "doc": ""}, {"name": "storageMedium",
"type": ["null", {"type": "enum", "name": "StorageMedium", "doc": "", "symbols": ["EDTA", "FF",
"LI_HEP", "ORAGENE", "FFPE"]}], "doc": ""}, {"name": "sampleType", "type": ["null", "string"],
"doc": ""}, {"name": "sampleState", "type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "LDPCode",
        "clinicalSampleDateTime",
        "labSampleId",
        "maskedPid",
        "method",
        "participantId",
        "participantUid",
        "preparationMethod",
        "product",
        "programmePhase",
        "sampleId",
        "sampleState",
        "sampleType",
        "sampleUid",
        "source",
        "storageMedium",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'LDPCode', 'clinicalSampleDateTime', 'labSampleId',
        'maskedPid', 'method', 'participantId', 'participantUid',
        'preparationMethod', 'product', 'programmePhase', 'sampleId',
        'sampleState', 'sampleType', 'sampleUid', 'source',
        'storageMedium'
    ]

    def __init__(self, **kwargs):
        self.LDPCode = kwargs.get(
            'LDPCode', None)
        self.clinicalSampleDateTime = kwargs.get(
            'clinicalSampleDateTime', None)
        self.labSampleId = kwargs.get(
            'labSampleId', None)
        self.maskedPid = kwargs.get(
            'maskedPid', None)
        self.method = kwargs.get(
            'method', None)
        self.participantId = kwargs.get(
            'participantId', None)
        self.participantUid = kwargs.get(
            'participantUid', None)
        self.preparationMethod = kwargs.get(
            'preparationMethod', None)
        self.product = kwargs.get(
            'product', None)
        self.programmePhase = kwargs.get(
            'programmePhase', None)
        self.sampleId = kwargs.get(
            'sampleId', None)
        self.sampleState = kwargs.get(
            'sampleState', None)
        self.sampleType = kwargs.get(
            'sampleType', None)
        self.sampleUid = kwargs.get(
            'sampleUid', None)
        self.source = kwargs.get(
            'source', None)
        self.storageMedium = kwargs.get(
            'storageMedium', None)


class GmsConsentStatus(ProtocolElement):
    """
    Consent Status for GMS
    """
    _schemaSource = """
{"type": "record", "name": "GmsConsentStatus", "namespace": "org.gel.models.participant.avro",
"doc": "", "fields": [{"name": "programmeConsent", "type": {"type": "enum", "name":
"GenericConsent", "doc": "", "symbols": ["yes", "no", "undefined", "not_applicable"]}, "doc": ""},
{"name": "primaryFindingConsent", "type": "GenericConsent", "doc": ""}, {"name": "researchConsent",
"type": "GenericConsent", "doc": ""}, {"name": "healthRelatedFindingConsent", "type":
"GenericConsent", "doc": ""}, {"name": "carrierStatusConsent", "type": "GenericConsent", "doc": ""},
{"name": "pharmacogenomicsFindingConsent", "type": "GenericConsent", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "carrierStatusConsent",
        "healthRelatedFindingConsent",
        "pharmacogenomicsFindingConsent",
        "primaryFindingConsent",
        "programmeConsent",
        "researchConsent",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'carrierStatusConsent', 'healthRelatedFindingConsent',
        'pharmacogenomicsFindingConsent', 'primaryFindingConsent',
        'programmeConsent', 'researchConsent'
    ]

    def __init__(self, **kwargs):
        self.carrierStatusConsent = kwargs.get(
            'carrierStatusConsent', None)
        self.healthRelatedFindingConsent = kwargs.get(
            'healthRelatedFindingConsent', None)
        self.pharmacogenomicsFindingConsent = kwargs.get(
            'pharmacogenomicsFindingConsent', None)
        self.primaryFindingConsent = kwargs.get(
            'primaryFindingConsent', None)
        self.programmeConsent = kwargs.get(
            'programmeConsent', None)
        self.researchConsent = kwargs.get(
            'researchConsent', None)


class HaematologicalCancerLineage(object):
    """
    No documentation
    """
    MYELOID = "MYELOID"
    LYMPHOID = "LYMPHOID"
    UNKNOWN = "UNKNOWN"

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


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.participant.avro", "doc": "",
"fields": [{"name": "term", "type": "string", "doc": ""}, {"name": "termPresence", "type": ["null",
{"type": "enum", "name": "TernaryOption", "doc": "", "symbols": ["yes", "no", "unknown"]}], "doc":
""}, {"name": "hpoBuildNumber", "type": ["null", "string"], "doc": ""}, {"name": "modifiers",
"type": ["null", {"type": "array", "items": {"type": "record", "name": "HpoTermModifiers", "doc":
"", "fields": [{"name": "laterality", "type": ["null", {"type": "enum", "name": "Laterality",
"symbols": ["RIGHT", "UNILATERAL", "BILATERAL", "LEFT"]}]}, {"name": "progression", "type": ["null",
{"type": "enum", "name": "Progression", "symbols": ["PROGRESSIVE", "NONPROGRESSIVE"]}]}, {"name":
"severity", "type": ["null", {"type": "enum", "name": "Severity", "symbols": ["BORDERLINE", "MILD",
"MODERATE", "SEVERE", "PROFOUND"]}]}, {"name": "spatialPattern", "type": ["null", {"type": "enum",
"name": "SpatialPattern", "symbols": ["DISTAL", "GENERALIZED", "LOCALIZED", "PROXIMAL"]}]}, {"name":
"hpoModifierCode", "type": ["null", "string"]}, {"name": "hpoModifierVersion", "type": ["null",
"string"]}]}}], "doc": ""}, {"name": "ageOfOnset", "type": ["null", {"type": "enum", "name":
"AgeOfOnset", "symbols": ["EMBRYONAL_ONSET", "FETAL_ONSET", "NEONATAL_ONSET", "INFANTILE_ONSET",
"CHILDHOOD_ONSET", "JUVENILE_ONSET", "YOUNG_ADULT_ONSET", "LATE_ONSET", "MIDDLE_AGE_ONSET"]}],
"doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "ageOfOnset",
        "hpoBuildNumber",
        "modifiers",
        "term",
        "termPresence",
    }

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

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

        return embeddedTypes[fieldName]

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

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


class HpoTermModifiers(ProtocolElement):
    """
    HPO Modifiers     For GMS, hpoModifierCode and hpoModifierVersion
    will be used
    """
    _schemaSource = """
{"type": "record", "name": "HpoTermModifiers", "namespace": "org.gel.models.participant.avro",
"doc": "", "fields": [{"name": "laterality", "type": ["null", {"type": "enum", "name": "Laterality",
"symbols": ["RIGHT", "UNILATERAL", "BILATERAL", "LEFT"]}]}, {"name": "progression", "type": ["null",
{"type": "enum", "name": "Progression", "symbols": ["PROGRESSIVE", "NONPROGRESSIVE"]}]}, {"name":
"severity", "type": ["null", {"type": "enum", "name": "Severity", "symbols": ["BORDERLINE", "MILD",
"MODERATE", "SEVERE", "PROFOUND"]}]}, {"name": "spatialPattern", "type": ["null", {"type": "enum",
"name": "SpatialPattern", "symbols": ["DISTAL", "GENERALIZED", "LOCALIZED", "PROXIMAL"]}]}, {"name":
"hpoModifierCode", "type": ["null", "string"]}, {"name": "hpoModifierVersion", "type": ["null",
"string"]}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "hpoModifierCode",
        "hpoModifierVersion",
        "laterality",
        "progression",
        "severity",
        "spatialPattern",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'hpoModifierCode', 'hpoModifierVersion', 'laterality',
        'progression', 'severity', 'spatialPattern'
    ]

    def __init__(self, **kwargs):
        self.hpoModifierCode = kwargs.get(
            'hpoModifierCode', None)
        self.hpoModifierVersion = kwargs.get(
            'hpoModifierVersion', None)
        self.laterality = kwargs.get(
            'laterality', None)
        self.progression = kwargs.get(
            'progression', None)
        self.severity = kwargs.get(
            'severity', None)
        self.spatialPattern = kwargs.get(
            'spatialPattern', None)


class IlluminaCancerNormalSummaryNGIS(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "IlluminaCancerNormalSummaryNGIS", "namespace":
"org.gel.models.report.avro", "fields": [{"name": "ANALYSIS_VERSION", "type": "string"}, {"name":
"TUMOR_SAMPLE_ID", "type": "string"}, {"name": "TUMOR_SAMPLE_NAME", "type": "string"}, {"name":
"TUMOR_METRICS_DELIVERABLE", "type": "string"}, {"name": "TUMOR_TOTAL_PF_READS", "type": "long"},
{"name": "TUMOR_TOTAL_PF_READ_1", "type": "long"}, {"name": "TUMOR_TOTAL_PF_READ_2", "type":
"long"}, {"name": "TUMOR_MEDIAN_READ_LENGTH", "type": "long"}, {"name":
"TUMOR_MEDIAN_READ_LENGTH_READ_1", "type": "long"}, {"name": "TUMOR_MEDIAN_READ_LENGTH_READ_2",
"type": "long"}, {"name": "TUMOR_TOTAL_MAPQ_GT_10_READS", "type": "long"}, {"name":
"TUMOR_TOTAL_ALIGNED_READS", "type": "long"}, {"name": "TUMOR_UNIQUE_ALIGNED_READS", "type":
"long"}, {"name": "TUMOR_TOTAL_DUPLICATE_ALIGNED_READS", "type": "long"}, {"name":
"TUMOR_PERCENT_DUPLICATE_ALIGNED_READS", "type": "double"}, {"name": "TUMOR_TOTAL_ALIGNED_READ_1",
"type": "long"}, {"name": "TUMOR_TOTAL_ALIGNED_READ_2", "type": "long"}, {"name":
"TUMOR_PERCENT_ALIGNED_READS", "type": "double"}, {"name": "TUMOR_PERCENT_ALIGNED_READ_1", "type":
"double"}, {"name": "TUMOR_PERCENT_ALIGNED_READ_2", "type": "double"}, {"name":
"TUMOR_TOTAL_PROPER_READ_PAIRS", "type": "long"}, {"name":
"TUMOR_TOTAL_DUPLICATE_PROPER_READ_PAIRS", "type": "long"}, {"name":
"TUMOR_PERCENT_DUPLICATE_PROPER_READ_PAIRS", "type": "double"}, {"name":
"TUMOR_PERCENT_NONSPATIAL_DUPLICATE_READ_PAIRS", "type": "double"}, {"name":
"TUMOR_TOTAL_ALIGNED_READ_PAIRS", "type": "long"}, {"name":
"TUMOR_PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES", "type": "double"}, {"name":
"TUMOR_PERCENT_AT_DROPOUT", "type": "double"}, {"name": "TUMOR_PERCENT_GC_DROPOUT", "type":
"double"}, {"name": "TUMOR_PERCENT_AT_DROPOUT_ALIGNED", "type": "double"}, {"name":
"TUMOR_PERCENT_GC_DROPOUT_ALIGNED", "type": "double"}, {"name":
"TUMOR_READ_ENRICHMENT_AT_75_PERCENT_GC", "type": "double"}, {"name":
"TUMOR_READ_ENRICHMENT_AT_80_PERCENT_GC", "type": "double"}, {"name": "TUMOR_TOTAL_PF_BASES",
"type": "long"}, {"name": "TUMOR_TOTAL_PF_BASES_READ_1", "type": "long"}, {"name":
"TUMOR_TOTAL_PF_BASES_READ_2", "type": "long"}, {"name": "TUMOR_PERCENT_SOFTCLIPPED_BASES", "type":
"double"}, {"name": "TUMOR_PERCENT_Q25_BASES_READ_1", "type": "double"}, {"name":
"TUMOR_PERCENT_Q25_BASES_READ_2", "type": "double"}, {"name": "TUMOR_PERCENT_Q30_BASES", "type":
"double"}, {"name": "TUMOR_PERCENT_Q30_BASES_READ_1", "type": "double"}, {"name":
"TUMOR_PERCENT_Q30_BASES_READ_2", "type": "double"}, {"name": "TUMOR_TOTAL_ALIGNED_BASES", "type":
"long"}, {"name": "TUMOR_TOTAL_ALIGNED_BASES_READ_1", "type": "long"}, {"name":
"TUMOR_TOTAL_ALIGNED_BASES_READ_2", "type": "long"}, {"name": "TUMOR_PERCENT_ALIGNED_BASES", "type":
"double"}, {"name": "TUMOR_PERCENT_ALIGNED_BASES_READ_1", "type": "double"}, {"name":
"TUMOR_PERCENT_ALIGNED_BASES_READ_2", "type": "double"}, {"name": "TUMOR_PERCENT_MISMATCHES",
"type": "double"}, {"name": "TUMOR_PERCENT_MISMATCHES_READ_1", "type": "double"}, {"name":
"TUMOR_PERCENT_MISMATCHES_READ_2", "type": "double"}, {"name":
"TUMOR_Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES", "type": "double"}, {"name":
"TUMOR_TOTAL_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES", "type": "double"}, {"name":
"TUMOR_PERCENT_ADAPTER_BASES", "type": "double"}, {"name": "TUMOR_MEAN_COVERAGE", "type": "double"},
{"name": "PERCENT_TUMOR_COVERAGE_AT_1X", "type": "double"}, {"name":
"PERCENT_TUMOR_COVERAGE_AT_10X", "type": "double"}, {"name": "PERCENT_TUMOR_COVERAGE_AT_15X",
"type": "double"}, {"name": "NORMAL_SAMPLE_ID", "type": "string"}, {"name": "NORMAL_SAMPLE_NAME",
"type": "string"}, {"name": "NORMAL_METRICS_DELIVERABLE", "type": "string"}, {"name":
"NORMAL_TOTAL_PF_READS", "type": "long"}, {"name": "NORMAL_TOTAL_PF_READ_1", "type": "long"},
{"name": "NORMAL_TOTAL_PF_READ_2", "type": "long"}, {"name": "NORMAL_MEDIAN_READ_LENGTH", "type":
"long"}, {"name": "NORMAL_MEDIAN_READ_LENGTH_READ_1", "type": "long"}, {"name":
"NORMAL_MEDIAN_READ_LENGTH_READ_2", "type": "long"}, {"name": "NORMAL_TOTAL_MAPQ_GT_10_READS",
"type": "long"}, {"name": "NORMAL_TOTAL_ALIGNED_READS", "type": "long"}, {"name":
"NORMAL_UNIQUE_ALIGNED_READS", "type": "long"}, {"name": "NORMAL_TOTAL_DUPLICATE_ALIGNED_READS",
"type": "long"}, {"name": "NORMAL_PERCENT_DUPLICATE_ALIGNED_READS", "type": "double"}, {"name":
"NORMAL_TOTAL_ALIGNED_READ_1", "type": "long"}, {"name": "NORMAL_TOTAL_ALIGNED_READ_2", "type":
"long"}, {"name": "NORMAL_PERCENT_ALIGNED_READS", "type": "double"}, {"name":
"NORMAL_PERCENT_ALIGNED_READ_1", "type": "double"}, {"name": "NORMAL_PERCENT_ALIGNED_READ_2",
"type": "double"}, {"name": "NORMAL_TOTAL_PROPER_READ_PAIRS", "type": "long"}, {"name":
"NORMAL_TOTAL_DUPLICATE_PROPER_READ_PAIRS", "type": "long"}, {"name":
"NORMAL_PERCENT_DUPLICATE_PROPER_READ_PAIRS", "type": "double"}, {"name":
"NORMAL_PERCENT_NONSPATIAL_DUPLICATE_READ_PAIRS", "type": "double"}, {"name":
"NORMAL_TOTAL_ALIGNED_READ_PAIRS", "type": "long"}, {"name":
"NORMAL_PERCENT_READ_PAIRS_ALIGNED_TO_DIFFERENT_CHROMOSOMES", "type": "double"}, {"name":
"NORMAL_PERCENT_AT_DROPOUT", "type": "double"}, {"name": "NORMAL_PERCENT_GC_DROPOUT", "type":
"double"}, {"name": "NORMAL_PERCENT_AT_DROPOUT_ALIGNED", "type": "double"}, {"name":
"NORMAL_PERCENT_GC_DROPOUT_ALIGNED", "type": "double"}, {"name":
"NORMAL_READ_ENRICHMENT_AT_75_PERCENT_GC", "type": "double"}, {"name":
"NORMAL_READ_ENRICHMENT_AT_80_PERCENT_GC", "type": "double"}, {"name": "NORMAL_TOTAL_PF_BASES",
"type": "long"}, {"name": "NORMAL_TOTAL_PF_BASES_READ_1", "type": "long"}, {"name":
"NORMAL_TOTAL_PF_BASES_READ_2", "type": "long"}, {"name": "NORMAL_PERCENT_SOFTCLIPPED_BASES",
"type": "double"}, {"name": "NORMAL_PERCENT_Q25_BASES_READ_1", "type": "double"}, {"name":
"NORMAL_PERCENT_Q25_BASES_READ_2", "type": "double"}, {"name": "NORMAL_PERCENT_Q30_BASES", "type":
"double"}, {"name": "NORMAL_PERCENT_Q30_BASES_READ_1", "type": "double"}, {"name":
"NORMAL_PERCENT_Q30_BASES_READ_2", "type": "double"}, {"name": "NORMAL_TOTAL_ALIGNED_BASES", "type":
"long"}, {"name": "NORMAL_TOTAL_ALIGNED_BASES_READ_1", "type": "long"}, {"name":
"NORMAL_TOTAL_ALIGNED_BASES_READ_2", "type": "long"}, {"name": "NORMAL_PERCENT_ALIGNED_BASES",
"type": "double"}, {"name": "NORMAL_PERCENT_ALIGNED_BASES_READ_1", "type": "double"}, {"name":
"NORMAL_PERCENT_ALIGNED_BASES_READ_2", "type": "double"}, {"name": "NORMAL_PERCENT_MISMATCHES",
"type": "double"}, {"name": "NORMAL_PERCENT_MISMATCHES_READ_1", "type": "double"}, {"name":
"NORMAL_PERCENT_MISMATCHES_READ_2", "type": "double"}, {"name":
"NORMAL_Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES", "type": "double"}, {"name":
"NORMAL_TOTAL_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES", "type": "double"}, {"name":
"NORMAL_PERCENT_ADAPTER_BASES", "type": "double"}, {"name": "NORMAL_MEAN_COVERAGE", "type":
"double"}, {"name": "PERCENT_NORMAL_COVERAGE_AT_1X", "type": "double"}, {"name":
"PERCENT_NORMAL_COVERAGE_AT_10X", "type": "double"}, {"name": "PERCENT_NORMAL_COVERAGE_AT_15X",
"type": "double"}, {"name": "SOMATIC_SNVS_ALL", "type": "long"}, {"name": "SOMATIC_SNVS", "type":
"long"}, {"name": "SOMATIC_SNV_HET_HOM_RATIO", "type": "string"}, {"name":
"SOMATIC_SNV_TS_TV_RATIO", "type": "double"}, {"name": "SOMATIC_SNVS_PERCENT_FOUND_IN_DBSNP",
"type": "double"}, {"name": "SOMATIC_SNVS_IN_GENES", "type": "long"}, {"name":
"SOMATIC_SNVS_IN_EXONS", "type": "long"}, {"name": "SOMATIC_SNVS_IN_CODING_REGIONS", "type":
"long"}, {"name": "SOMATIC_SNVS_IN_MATURE_MIRNA", "type": "long"}, {"name":
"SOMATIC_SNVS_IN_UTR_REGIONS", "type": "long"}, {"name": "SOMATIC_SNVS_IN_SPLICE_SITE_REGIONS",
"type": "long"}, {"name": "STOP_GAINED_SOMATIC_SNVS", "type": "long"}, {"name":
"STOP_LOST_SOMATIC_SNVS", "type": "long"}, {"name": "NONSYNONYMOUS_SOMATIC_SNVS", "type": "long"},
{"name": "SYNONYMOUS_SOMATIC_SNVS", "type": "long"}, {"name": "SOMATIC_INDELS_ALL", "type": "long"},
{"name": "SOMATIC_INDELS", "type": "long"}, {"name": "SOMATIC_INDEL_HET_HOM_RATIO", "type":
"string"}, {"name": "SOMATIC_INDELS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name":
"SOMATIC_INSERTIONS_ALL", "type": "long"}, {"name": "SOMATIC_INSERTIONS", "type": "long"}, {"name":
"SOMATIC_INSERTION_HET_HOM_RATIO", "type": "string"}, {"name":
"SOMATIC_INSERTIONS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name":
"SOMATIC_INSERTIONS_IN_GENES", "type": "long"}, {"name": "SOMATIC_INSERTIONS_IN_EXONS", "type":
"long"}, {"name": "SOMATIC_INSERTIONS_IN_CODING_REGIONS", "type": "long"}, {"name":
"SOMATIC_INSERTIONS_IN_MATURE_MIRNA", "type": "long"}, {"name": "SOMATIC_INSERTIONS_IN_UTR_REGIONS",
"type": "long"}, {"name": "SOMATIC_INSERTIONS_IN_SPLICE_SITE_REGIONS", "type": "long"}, {"name":
"STOP_GAINED_SOMATIC_INSERTIONS", "type": "long"}, {"name": "STOP_LOST_SOMATIC_INSERTIONS", "type":
"long"}, {"name": "FRAMESHIFT_SOMATIC_INSERTIONS", "type": "long"}, {"name":
"NONSYNONYMOUS_SOMATIC_INSERTIONS", "type": "long"}, {"name": "SOMATIC_DELETIONS_ALL", "type":
"long"}, {"name": "SOMATIC_DELETIONS", "type": "long"}, {"name": "SOMATIC_DELETION_HET_HOM_RATIO",
"type": "string"}, {"name": "SOMATIC_DELETIONS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name":
"SOMATIC_DELETIONS_IN_GENES", "type": "long"}, {"name": "SOMATIC_DELETIONS_IN_EXONS", "type":
"long"}, {"name": "SOMATIC_DELETIONS_IN_CODING_REGIONS", "type": "long"}, {"name":
"SOMATIC_DELETIONS_IN_MATURE_MIRNA", "type": "long"}, {"name": "SOMATIC_DELETIONS_IN_UTR_REGIONS",
"type": "long"}, {"name": "SOMATIC_DELETIONS_IN_SPLICE_SITE_REGIONS", "type": "long"}, {"name":
"STOP_GAINED_SOMATIC_DELETIONS", "type": "long"}, {"name": "STOP_LOST_SOMATIC_DELETIONS", "type":
"long"}, {"name": "FRAMESHIFT_SOMATIC_DELETIONS", "type": "long"}, {"name":
"NONSYNONYMOUS_SOMATIC_DELETIONS", "type": "long"}, {"name": "SOMATIC_SV_INSERTIONS_ALL", "type":
"long"}, {"name": "SOMATIC_SV_INSERTIONS", "type": "long"}, {"name":
"SOMATIC_SV_INSERTIONS_IN_GENES", "type": "long"}, {"name":
"SOMATIC_SV_PERCENT_INSERTIONS_IN_GENES", "type": "double"}, {"name": "SOMATIC_SV_DELETIONS_ALL",
"type": "long"}, {"name": "SOMATIC_SV_DELETIONS", "type": "long"}, {"name":
"SOMATIC_SV_DELETIONS_IN_GENES", "type": "long"}, {"name": "SOMATIC_SV_PERCENT_DELETIONS_IN_GENES",
"type": "double"}, {"name": "SOMATIC_SV_TANDEM_DUPLICATIONS_ALL", "type": "long"}, {"name":
"SOMATIC_SV_TANDEM_DUPLICATIONS", "type": "long"}, {"name":
"SOMATIC_SV_TANDEM_DUPLICATIONS_IN_GENES", "type": "long"}, {"name":
"SOMATIC_SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES", "type": "double"}, {"name":
"SOMATIC_SV_INVERSIONS_ALL", "type": "long"}, {"name": "SOMATIC_SV_INVERSIONS", "type": "long"},
{"name": "SOMATIC_SV_INVERSIONS_IN_GENES", "type": "long"}, {"name":
"SOMATIC_SV_PERCENT_INVERSIONS_IN_GENES", "type": "double"}, {"name": "SOMATIC_SV_BREAKENDS_ALL",
"type": "long"}, {"name": "SOMATIC_SV_BREAKENDS", "type": "long"}, {"name":
"SOMATIC_SV_BREAKENDS_IN_GENES", "type": "long"}, {"name": "SOMATIC_SV_PERCENT_BREAKENDS_IN_GENES",
"type": "double"}, {"name": "ESTIMATED_PURITY", "type": "long"}, {"name": "OVERALL_PLOIDY", "type":
"double"}, {"name": "ESTIMATED_CHROMOSOME_COUNT", "type": "double"}, {"name":
"MEDIAN_SOMATIC_SNV_DISTANCE", "type": "double"}, {"name": "MEAN_SOMATIC_SNV_FREQUENCY", "type":
"double"}, {"name": "PERCENT_SOMATIC_VARIANTS_WITH_FREQUENCY_GT1_PERCENT_IN_1000_GENOMES", "type":
"double"}, {"name": "SOMATIC_CNVS_ALL", "type": "long"}, {"name": "SOMATIC_CNVS", "type": "long"},
{"name": "SOMATIC_CNVS_IN_GENES", "type": "long"}, {"name": "PERCENT_SOMATIC_CNVS_IN_GENES", "type":
"double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "ANALYSIS_VERSION",
        "ESTIMATED_CHROMOSOME_COUNT",
        "ESTIMATED_PURITY",
        "FRAMESHIFT_SOMATIC_DELETIONS",
        "FRAMESHIFT_SOMATIC_INSERTIONS",
        "MEAN_SOMATIC_SNV_FREQUENCY",
        "MEDIAN_SOMATIC_SNV_DISTANCE",
        "NONSYNONYMOUS_SOMATIC_DELETIONS",
        "NONSYNONYMOUS_SOMATIC_INSERTIONS",
        "NONSYNONYMOUS_SOMATIC_SNVS",
        "NORMAL_MEAN_COVERAGE",
        "NORMAL_MEDIAN_READ_LENGTH",
        "NORMAL_MEDIAN_READ_LENGTH_READ_1",
        "NORMAL_MEDIAN_READ_LENGTH_READ_2",
        "NORMAL_METRICS_DELIVERABLE",
        "NORMAL_PERCENT_ADAPTER_BASES",
        "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_AT_DROPOUT_ALIGNED",
        "NORMAL_PERCENT_DUPLICATE_ALIGNED_READS",
        "NORMAL_PERCENT_DUPLICATE_PROPER_READ_PAIRS",
        "NORMAL_PERCENT_GC_DROPOUT",
        "NORMAL_PERCENT_GC_DROPOUT_ALIGNED",
        "NORMAL_PERCENT_MISMATCHES",
        "NORMAL_PERCENT_MISMATCHES_READ_1",
        "NORMAL_PERCENT_MISMATCHES_READ_2",
        "NORMAL_PERCENT_NONSPATIAL_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_SOFTCLIPPED_BASES",
        "NORMAL_Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES",
        "NORMAL_READ_ENRICHMENT_AT_75_PERCENT_GC",
        "NORMAL_READ_ENRICHMENT_AT_80_PERCENT_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_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES",
        "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_NORMAL_COVERAGE_AT_10X",
        "PERCENT_NORMAL_COVERAGE_AT_15X",
        "PERCENT_NORMAL_COVERAGE_AT_1X",
        "PERCENT_SOMATIC_CNVS_IN_GENES",
        "PERCENT_SOMATIC_VARIANTS_WITH_FREQUENCY_GT1_PERCENT_IN_1000_GENOMES",
        "PERCENT_TUMOR_COVERAGE_AT_10X",
        "PERCENT_TUMOR_COVERAGE_AT_15X",
        "PERCENT_TUMOR_COVERAGE_AT_1X",
        "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_DELETION_HET_HOM_RATIO",
        "SOMATIC_INDELS",
        "SOMATIC_INDELS_ALL",
        "SOMATIC_INDELS_PERCENT_FOUND_IN_DBSNP",
        "SOMATIC_INDEL_HET_HOM_RATIO",
        "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_INSERTION_HET_HOM_RATIO",
        "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_HET_HOM_RATIO",
        "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_MEAN_COVERAGE",
        "TUMOR_MEDIAN_READ_LENGTH",
        "TUMOR_MEDIAN_READ_LENGTH_READ_1",
        "TUMOR_MEDIAN_READ_LENGTH_READ_2",
        "TUMOR_METRICS_DELIVERABLE",
        "TUMOR_PERCENT_ADAPTER_BASES",
        "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_AT_DROPOUT_ALIGNED",
        "TUMOR_PERCENT_DUPLICATE_ALIGNED_READS",
        "TUMOR_PERCENT_DUPLICATE_PROPER_READ_PAIRS",
        "TUMOR_PERCENT_GC_DROPOUT",
        "TUMOR_PERCENT_GC_DROPOUT_ALIGNED",
        "TUMOR_PERCENT_MISMATCHES",
        "TUMOR_PERCENT_MISMATCHES_READ_1",
        "TUMOR_PERCENT_MISMATCHES_READ_2",
        "TUMOR_PERCENT_NONSPATIAL_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_SOFTCLIPPED_BASES",
        "TUMOR_Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES",
        "TUMOR_READ_ENRICHMENT_AT_75_PERCENT_GC",
        "TUMOR_READ_ENRICHMENT_AT_80_PERCENT_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_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES",
        "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",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'ANALYSIS_VERSION', 'ESTIMATED_CHROMOSOME_COUNT',
        'ESTIMATED_PURITY', 'FRAMESHIFT_SOMATIC_DELETIONS',
        'FRAMESHIFT_SOMATIC_INSERTIONS', 'MEAN_SOMATIC_SNV_FREQUENCY',
        'MEDIAN_SOMATIC_SNV_DISTANCE',
        'NONSYNONYMOUS_SOMATIC_DELETIONS',
        'NONSYNONYMOUS_SOMATIC_INSERTIONS',
        'NONSYNONYMOUS_SOMATIC_SNVS', 'NORMAL_MEAN_COVERAGE',
        'NORMAL_MEDIAN_READ_LENGTH',
        'NORMAL_MEDIAN_READ_LENGTH_READ_1',
        'NORMAL_MEDIAN_READ_LENGTH_READ_2',
        'NORMAL_METRICS_DELIVERABLE', 'NORMAL_PERCENT_ADAPTER_BASES',
        '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_AT_DROPOUT_ALIGNED',
        'NORMAL_PERCENT_DUPLICATE_ALIGNED_READS',
        'NORMAL_PERCENT_DUPLICATE_PROPER_READ_PAIRS',
        'NORMAL_PERCENT_GC_DROPOUT',
        'NORMAL_PERCENT_GC_DROPOUT_ALIGNED',
        'NORMAL_PERCENT_MISMATCHES',
        'NORMAL_PERCENT_MISMATCHES_READ_1',
        'NORMAL_PERCENT_MISMATCHES_READ_2',
        'NORMAL_PERCENT_NONSPATIAL_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_SOFTCLIPPED_BASES',
        'NORMAL_Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES',
        'NORMAL_READ_ENRICHMENT_AT_75_PERCENT_GC',
        'NORMAL_READ_ENRICHMENT_AT_80_PERCENT_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_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES',
        '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_NORMAL_COVERAGE_AT_10X',
        'PERCENT_NORMAL_COVERAGE_AT_15X',
        'PERCENT_NORMAL_COVERAGE_AT_1X',
        'PERCENT_SOMATIC_CNVS_IN_GENES',
        'PERCENT_SOMATIC_VARIANTS_WITH_FREQUENCY_GT1_PERCENT_IN_1000_GENOMES',
        'PERCENT_TUMOR_COVERAGE_AT_10X',
        'PERCENT_TUMOR_COVERAGE_AT_15X',
        'PERCENT_TUMOR_COVERAGE_AT_1X', '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_DELETION_HET_HOM_RATIO', 'SOMATIC_INDELS',
        'SOMATIC_INDELS_ALL', 'SOMATIC_INDELS_PERCENT_FOUND_IN_DBSNP',
        'SOMATIC_INDEL_HET_HOM_RATIO', '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_INSERTION_HET_HOM_RATIO', '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_HET_HOM_RATIO', '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_MEAN_COVERAGE', 'TUMOR_MEDIAN_READ_LENGTH',
        'TUMOR_MEDIAN_READ_LENGTH_READ_1',
        'TUMOR_MEDIAN_READ_LENGTH_READ_2',
        'TUMOR_METRICS_DELIVERABLE', 'TUMOR_PERCENT_ADAPTER_BASES',
        '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_AT_DROPOUT_ALIGNED',
        'TUMOR_PERCENT_DUPLICATE_ALIGNED_READS',
        'TUMOR_PERCENT_DUPLICATE_PROPER_READ_PAIRS',
        'TUMOR_PERCENT_GC_DROPOUT',
        'TUMOR_PERCENT_GC_DROPOUT_ALIGNED',
        'TUMOR_PERCENT_MISMATCHES', 'TUMOR_PERCENT_MISMATCHES_READ_1',
        'TUMOR_PERCENT_MISMATCHES_READ_2',
        'TUMOR_PERCENT_NONSPATIAL_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_SOFTCLIPPED_BASES',
        'TUMOR_Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES',
        'TUMOR_READ_ENRICHMENT_AT_75_PERCENT_GC',
        'TUMOR_READ_ENRICHMENT_AT_80_PERCENT_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_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES',
        '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'
    ]

    def __init__(self, **kwargs):
        self.ANALYSIS_VERSION = kwargs.get(
            'ANALYSIS_VERSION', None)
        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.NONSYNONYMOUS_SOMATIC_DELETIONS = kwargs.get(
            'NONSYNONYMOUS_SOMATIC_DELETIONS', None)
        self.NONSYNONYMOUS_SOMATIC_INSERTIONS = kwargs.get(
            'NONSYNONYMOUS_SOMATIC_INSERTIONS', None)
        self.NONSYNONYMOUS_SOMATIC_SNVS = kwargs.get(
            'NONSYNONYMOUS_SOMATIC_SNVS', 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_METRICS_DELIVERABLE = kwargs.get(
            'NORMAL_METRICS_DELIVERABLE', None)
        self.NORMAL_PERCENT_ADAPTER_BASES = kwargs.get(
            'NORMAL_PERCENT_ADAPTER_BASES', 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_AT_DROPOUT_ALIGNED = kwargs.get(
            'NORMAL_PERCENT_AT_DROPOUT_ALIGNED', 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_GC_DROPOUT_ALIGNED = kwargs.get(
            'NORMAL_PERCENT_GC_DROPOUT_ALIGNED', None)
        self.NORMAL_PERCENT_MISMATCHES = kwargs.get(
            'NORMAL_PERCENT_MISMATCHES', None)
        self.NORMAL_PERCENT_MISMATCHES_READ_1 = kwargs.get(
            'NORMAL_PERCENT_MISMATCHES_READ_1', None)
        self.NORMAL_PERCENT_MISMATCHES_READ_2 = kwargs.get(
            'NORMAL_PERCENT_MISMATCHES_READ_2', None)
        self.NORMAL_PERCENT_NONSPATIAL_DUPLICATE_READ_PAIRS = kwargs.get(
            'NORMAL_PERCENT_NONSPATIAL_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_SOFTCLIPPED_BASES = kwargs.get(
            'NORMAL_PERCENT_SOFTCLIPPED_BASES', None)
        self.NORMAL_Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES = kwargs.get(
            'NORMAL_Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES', None)
        self.NORMAL_READ_ENRICHMENT_AT_75_PERCENT_GC = kwargs.get(
            'NORMAL_READ_ENRICHMENT_AT_75_PERCENT_GC', None)
        self.NORMAL_READ_ENRICHMENT_AT_80_PERCENT_GC = kwargs.get(
            'NORMAL_READ_ENRICHMENT_AT_80_PERCENT_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_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES = kwargs.get(
            'NORMAL_TOTAL_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES', 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_NORMAL_COVERAGE_AT_10X = kwargs.get(
            'PERCENT_NORMAL_COVERAGE_AT_10X', None)
        self.PERCENT_NORMAL_COVERAGE_AT_15X = kwargs.get(
            'PERCENT_NORMAL_COVERAGE_AT_15X', None)
        self.PERCENT_NORMAL_COVERAGE_AT_1X = kwargs.get(
            'PERCENT_NORMAL_COVERAGE_AT_1X', None)
        self.PERCENT_SOMATIC_CNVS_IN_GENES = kwargs.get(
            'PERCENT_SOMATIC_CNVS_IN_GENES', None)
        self.PERCENT_SOMATIC_VARIANTS_WITH_FREQUENCY_GT1_PERCENT_IN_1000_GENOMES = kwargs.get(
            'PERCENT_SOMATIC_VARIANTS_WITH_FREQUENCY_GT1_PERCENT_IN_1000_GENOMES', None)
        self.PERCENT_TUMOR_COVERAGE_AT_10X = kwargs.get(
            'PERCENT_TUMOR_COVERAGE_AT_10X', None)
        self.PERCENT_TUMOR_COVERAGE_AT_15X = kwargs.get(
            'PERCENT_TUMOR_COVERAGE_AT_15X', None)
        self.PERCENT_TUMOR_COVERAGE_AT_1X = kwargs.get(
            'PERCENT_TUMOR_COVERAGE_AT_1X', 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_DELETION_HET_HOM_RATIO = kwargs.get(
            'SOMATIC_DELETION_HET_HOM_RATIO', 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_INDEL_HET_HOM_RATIO = kwargs.get(
            'SOMATIC_INDEL_HET_HOM_RATIO', 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_INSERTION_HET_HOM_RATIO = kwargs.get(
            'SOMATIC_INSERTION_HET_HOM_RATIO', 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_HET_HOM_RATIO = kwargs.get(
            'SOMATIC_SNV_HET_HOM_RATIO', 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_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_METRICS_DELIVERABLE = kwargs.get(
            'TUMOR_METRICS_DELIVERABLE', None)
        self.TUMOR_PERCENT_ADAPTER_BASES = kwargs.get(
            'TUMOR_PERCENT_ADAPTER_BASES', 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_AT_DROPOUT_ALIGNED = kwargs.get(
            'TUMOR_PERCENT_AT_DROPOUT_ALIGNED', 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_GC_DROPOUT_ALIGNED = kwargs.get(
            'TUMOR_PERCENT_GC_DROPOUT_ALIGNED', None)
        self.TUMOR_PERCENT_MISMATCHES = kwargs.get(
            'TUMOR_PERCENT_MISMATCHES', None)
        self.TUMOR_PERCENT_MISMATCHES_READ_1 = kwargs.get(
            'TUMOR_PERCENT_MISMATCHES_READ_1', None)
        self.TUMOR_PERCENT_MISMATCHES_READ_2 = kwargs.get(
            'TUMOR_PERCENT_MISMATCHES_READ_2', None)
        self.TUMOR_PERCENT_NONSPATIAL_DUPLICATE_READ_PAIRS = kwargs.get(
            'TUMOR_PERCENT_NONSPATIAL_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_SOFTCLIPPED_BASES = kwargs.get(
            'TUMOR_PERCENT_SOFTCLIPPED_BASES', None)
        self.TUMOR_Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES = kwargs.get(
            'TUMOR_Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES', None)
        self.TUMOR_READ_ENRICHMENT_AT_75_PERCENT_GC = kwargs.get(
            'TUMOR_READ_ENRICHMENT_AT_75_PERCENT_GC', None)
        self.TUMOR_READ_ENRICHMENT_AT_80_PERCENT_GC = kwargs.get(
            'TUMOR_READ_ENRICHMENT_AT_80_PERCENT_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_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES = kwargs.get(
            'TUMOR_TOTAL_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES', 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)


class IlluminaCancerSummaryNGIS(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "IlluminaCancerSummaryNGIS", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "ANALYSIS_VERSION", "type": "string"}, {"name": "SAMPLE_ID", "type": "string"},
{"name": "SAMPLE_NAME", "type": "string"}, {"name": "REFERENCE_GENOME", "type": "string"}, {"name":
"PAIRED_END", "type": "boolean"}, {"name": "METRICS_VERSION", "type": "string"}, {"name":
"METRICS_DELIVERABLE", "type": "string"}, {"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": "long"}, {"name": "MEDIAN_READ_LENGTH_READ_1", "type": "long"},
{"name": "MEDIAN_READ_LENGTH_READ_2", "type": "long"}, {"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_NONSPATIAL_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": "PERCENT_AT_DROPOUT_ALIGNED", "type": "double"}, {"name": "PERCENT_GC_DROPOUT_ALIGNED",
"type": "double"}, {"name": "READ_ENRICHMENT_AT_75_PERCENT_GC", "type": "double"}, {"name":
"READ_ENRICHMENT_AT_80_PERCENT_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_SOFTCLIPPED_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": "PERCENT_MISMATCHES", "type": "double"},
{"name": "PERCENT_MISMATCHES_READ_1", "type": "double"}, {"name": "PERCENT_MISMATCHES_READ_2",
"type": "double"}, {"name": "Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES", "type":
"double"}, {"name": "TOTAL_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES", "type": "double"},
{"name": "PERCENT_ADAPTER_BASES", "type": "double"}, {"name": "MEAN_COVERAGE", "type": "double"},
{"name": "PERCENT_COVERAGE_AT_1X", "type": "double"}, {"name": "PERCENT_COVERAGE_AT_10X", "type":
"double"}, {"name": "PERCENT_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"}, {"name": "DIVERSITY", "type": "long"}, {"name":
"PROVIDED_SEX_CHROMOSOME_PLOIDY", "type": "string"}, {"name": "MAPQ_GT_10_AUTOSOME_MEDIAN_COVERAGE",
"type": "double"}, {"name": "PERCENT_MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X", "type": "double"},
{"name": "PERCENT_MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X", "type": "double"}, {"name":
"AUTOSOME_MEAN_COVERAGE", "type": "double"}, {"name": "PERCENT_AUTOSOME_COVERAGE_AT_1X", "type":
"double"}, {"name": "PERCENT_AUTOSOME_COVERAGE_AT_10X", "type": "double"}, {"name":
"PERCENT_AUTOSOME_COVERAGE_AT_15X", "type": "double"}, {"name": "AUTOSOME_EXON_MEAN_COVERAGE",
"type": "double"}, {"name": "PERCENT_AUTOSOME_EXON_COVERAGE_AT_1X", "type": "double"}, {"name":
"PERCENT_AUTOSOME_EXON_COVERAGE_AT_10X", "type": "double"}, {"name":
"PERCENT_AUTOSOME_EXON_COVERAGE_AT_15X", "type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "ANALYSIS_VERSION",
        "AUTOSOME_EXON_MEAN_COVERAGE",
        "AUTOSOME_MEAN_COVERAGE",
        "DIVERSITY",
        "FRAGMENT_LENGTH_MAX",
        "FRAGMENT_LENGTH_MEDIAN",
        "FRAGMENT_LENGTH_MIN",
        "FRAGMENT_LENGTH_SD",
        "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",
        "PAIRED_END",
        "PERCENT_ADAPTER_BASES",
        "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_AT_DROPOUT_ALIGNED",
        "PERCENT_AUTOSOME_COVERAGE_AT_10X",
        "PERCENT_AUTOSOME_COVERAGE_AT_15X",
        "PERCENT_AUTOSOME_COVERAGE_AT_1X",
        "PERCENT_AUTOSOME_EXON_COVERAGE_AT_10X",
        "PERCENT_AUTOSOME_EXON_COVERAGE_AT_15X",
        "PERCENT_AUTOSOME_EXON_COVERAGE_AT_1X",
        "PERCENT_COVERAGE_AT_10X",
        "PERCENT_COVERAGE_AT_15X",
        "PERCENT_COVERAGE_AT_1X",
        "PERCENT_DUPLICATE_ALIGNED_READS",
        "PERCENT_DUPLICATE_PROPER_READ_PAIRS",
        "PERCENT_GC_DROPOUT",
        "PERCENT_GC_DROPOUT_ALIGNED",
        "PERCENT_MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X",
        "PERCENT_MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X",
        "PERCENT_MISMATCHES",
        "PERCENT_MISMATCHES_READ_1",
        "PERCENT_MISMATCHES_READ_2",
        "PERCENT_NONSPATIAL_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_SOFTCLIPPED_BASES",
        "PROVIDED_SEX_CHROMOSOME_PLOIDY",
        "Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES",
        "READ_ENRICHMENT_AT_75_PERCENT_GC",
        "READ_ENRICHMENT_AT_80_PERCENT_GC",
        "REFERENCE_GENOME",
        "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_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES",
        "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__ = [
        'ANALYSIS_VERSION', 'AUTOSOME_EXON_MEAN_COVERAGE',
        'AUTOSOME_MEAN_COVERAGE', 'DIVERSITY', 'FRAGMENT_LENGTH_MAX',
        'FRAGMENT_LENGTH_MEDIAN', 'FRAGMENT_LENGTH_MIN',
        'FRAGMENT_LENGTH_SD', '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', 'PAIRED_END',
        'PERCENT_ADAPTER_BASES', '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_AT_DROPOUT_ALIGNED',
        'PERCENT_AUTOSOME_COVERAGE_AT_10X',
        'PERCENT_AUTOSOME_COVERAGE_AT_15X',
        'PERCENT_AUTOSOME_COVERAGE_AT_1X',
        'PERCENT_AUTOSOME_EXON_COVERAGE_AT_10X',
        'PERCENT_AUTOSOME_EXON_COVERAGE_AT_15X',
        'PERCENT_AUTOSOME_EXON_COVERAGE_AT_1X',
        'PERCENT_COVERAGE_AT_10X', 'PERCENT_COVERAGE_AT_15X',
        'PERCENT_COVERAGE_AT_1X', 'PERCENT_DUPLICATE_ALIGNED_READS',
        'PERCENT_DUPLICATE_PROPER_READ_PAIRS', 'PERCENT_GC_DROPOUT',
        'PERCENT_GC_DROPOUT_ALIGNED',
        'PERCENT_MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X',
        'PERCENT_MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X',
        'PERCENT_MISMATCHES', 'PERCENT_MISMATCHES_READ_1',
        'PERCENT_MISMATCHES_READ_2',
        'PERCENT_NONSPATIAL_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_SOFTCLIPPED_BASES', 'PROVIDED_SEX_CHROMOSOME_PLOIDY',
        'Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES',
        'READ_ENRICHMENT_AT_75_PERCENT_GC',
        'READ_ENRICHMENT_AT_80_PERCENT_GC', 'REFERENCE_GENOME',
        '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_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES',
        '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.ANALYSIS_VERSION = kwargs.get(
            'ANALYSIS_VERSION', None)
        self.AUTOSOME_EXON_MEAN_COVERAGE = kwargs.get(
            'AUTOSOME_EXON_MEAN_COVERAGE', None)
        self.AUTOSOME_MEAN_COVERAGE = kwargs.get(
            'AUTOSOME_MEAN_COVERAGE', 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_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.PAIRED_END = kwargs.get(
            'PAIRED_END', None)
        self.PERCENT_ADAPTER_BASES = kwargs.get(
            'PERCENT_ADAPTER_BASES', 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_AT_DROPOUT_ALIGNED = kwargs.get(
            'PERCENT_AT_DROPOUT_ALIGNED', None)
        self.PERCENT_AUTOSOME_COVERAGE_AT_10X = kwargs.get(
            'PERCENT_AUTOSOME_COVERAGE_AT_10X', None)
        self.PERCENT_AUTOSOME_COVERAGE_AT_15X = kwargs.get(
            'PERCENT_AUTOSOME_COVERAGE_AT_15X', None)
        self.PERCENT_AUTOSOME_COVERAGE_AT_1X = kwargs.get(
            'PERCENT_AUTOSOME_COVERAGE_AT_1X', None)
        self.PERCENT_AUTOSOME_EXON_COVERAGE_AT_10X = kwargs.get(
            'PERCENT_AUTOSOME_EXON_COVERAGE_AT_10X', None)
        self.PERCENT_AUTOSOME_EXON_COVERAGE_AT_15X = kwargs.get(
            'PERCENT_AUTOSOME_EXON_COVERAGE_AT_15X', None)
        self.PERCENT_AUTOSOME_EXON_COVERAGE_AT_1X = kwargs.get(
            'PERCENT_AUTOSOME_EXON_COVERAGE_AT_1X', None)
        self.PERCENT_COVERAGE_AT_10X = kwargs.get(
            'PERCENT_COVERAGE_AT_10X', None)
        self.PERCENT_COVERAGE_AT_15X = kwargs.get(
            'PERCENT_COVERAGE_AT_15X', None)
        self.PERCENT_COVERAGE_AT_1X = kwargs.get(
            'PERCENT_COVERAGE_AT_1X', 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_GC_DROPOUT_ALIGNED = kwargs.get(
            'PERCENT_GC_DROPOUT_ALIGNED', None)
        self.PERCENT_MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X = kwargs.get(
            'PERCENT_MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X', None)
        self.PERCENT_MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X = kwargs.get(
            'PERCENT_MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X', None)
        self.PERCENT_MISMATCHES = kwargs.get(
            'PERCENT_MISMATCHES', None)
        self.PERCENT_MISMATCHES_READ_1 = kwargs.get(
            'PERCENT_MISMATCHES_READ_1', None)
        self.PERCENT_MISMATCHES_READ_2 = kwargs.get(
            'PERCENT_MISMATCHES_READ_2', None)
        self.PERCENT_NONSPATIAL_DUPLICATE_READ_PAIRS = kwargs.get(
            'PERCENT_NONSPATIAL_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_SOFTCLIPPED_BASES = kwargs.get(
            'PERCENT_SOFTCLIPPED_BASES', None)
        self.PROVIDED_SEX_CHROMOSOME_PLOIDY = kwargs.get(
            'PROVIDED_SEX_CHROMOSOME_PLOIDY', None)
        self.Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES = kwargs.get(
            'Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES', None)
        self.READ_ENRICHMENT_AT_75_PERCENT_GC = kwargs.get(
            'READ_ENRICHMENT_AT_75_PERCENT_GC', None)
        self.READ_ENRICHMENT_AT_80_PERCENT_GC = kwargs.get(
            'READ_ENRICHMENT_AT_80_PERCENT_GC', None)
        self.REFERENCE_GENOME = kwargs.get(
            'REFERENCE_GENOME', 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_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES = kwargs.get(
            'TOTAL_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES', 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 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": ["null", "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": ["null", "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": ["null", "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": ["null", "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": ["null", "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": ["null", "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_Calculations(ProtocolElement):
    """
    Stats calculated from values stored in IlluminaSummaryCancerV4
    """
    _schemaSource = """
{"type": "record", "name": "IlluminaSummaryCancerV4_Calculations", "namespace":
"org.gel.models.report.avro", "doc": "", "fields": [{"name": "SOMATIC_SVS", "type": "long", "doc":
""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "SOMATIC_SVS",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'SOMATIC_SVS'
    ]

    def __init__(self, **kwargs):
        self.SOMATIC_SVS = kwargs.get(
            'SOMATIC_SVS', 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 IlluminaSummaryNGIS(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "IlluminaSummaryNGIS", "namespace": "org.gel.models.report.avro",
"fields": [{"name": "ANALYSIS_VERSION", "type": "string"}, {"name": "SAMPLE_ID", "type": "string"},
{"name": "SAMPLE_NAME", "type": "string"}, {"name": "REFERENCE_GENOME", "type": "string"}, {"name":
"PAIRED_END", "type": "boolean"}, {"name": "METRICS_VERSION", "type": "string"}, {"name":
"METRICS_DELIVERABLE", "type": "string"}, {"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": "long"}, {"name": "MEDIAN_READ_LENGTH_READ_1", "type": "long"},
{"name": "MEDIAN_READ_LENGTH_READ_2", "type": "long"}, {"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_NONSPATIAL_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": "PERCENT_AT_DROPOUT_ALIGNED", "type": "double"}, {"name": "PERCENT_GC_DROPOUT_ALIGNED",
"type": "double"}, {"name": "READ_ENRICHMENT_AT_75_PERCENT_GC", "type": "double"}, {"name":
"READ_ENRICHMENT_AT_80_PERCENT_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_SOFTCLIPPED_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": "PERCENT_MISMATCHES", "type": "double"},
{"name": "PERCENT_MISMATCHES_READ_1", "type": "double"}, {"name": "PERCENT_MISMATCHES_READ_2",
"type": "double"}, {"name": "Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES", "type":
"double"}, {"name": "TOTAL_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES", "type": "double"},
{"name": "PERCENT_ADAPTER_BASES", "type": "double"}, {"name": "MEAN_COVERAGE", "type": "double"},
{"name": "PERCENT_COVERAGE_AT_1X", "type": "double"}, {"name": "PERCENT_COVERAGE_AT_10X", "type":
"double"}, {"name": "PERCENT_COVERAGE_AT_15X", "type": "double"}, {"name": "PERCENT_CALLABILITY",
"type": "double"}, {"name": "PERCENT_AUTOSOME_CALLABILITY", "type": "double"}, {"name":
"PERCENT_AUTOSOME_EXON_CALLABILITY", "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"}, {"name": "SNVS_ALL", "type": "long"}, {"name": "SNVS", "type": "long"}, {"name":
"SNV_HET_HOM_RATIO", "type": "double"}, {"name": "SNV_TS_TV_RATIO", "type": "double"}, {"name":
"SNVS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name": "SNVS_IN_GENES", "type": "long"},
{"name": "SNVS_IN_EXONS", "type": "long"}, {"name": "SNVS_IN_CODING_REGIONS", "type": "long"},
{"name": "SNVS_IN_MATURE_MIRNA", "type": "long"}, {"name": "SNVS_IN_UTR_REGIONS", "type": "long"},
{"name": "SNVS_IN_SPLICE_SITE_REGIONS", "type": "long"}, {"name": "STOP_GAINED_SNVS", "type":
"long"}, {"name": "STOP_LOST_SNVS", "type": "long"}, {"name": "NONSYNONYMOUS_SNVS", "type": "long"},
{"name": "SYNONYMOUS_SNVS", "type": "long"}, {"name": "INDELS_ALL", "type": "long"}, {"name":
"INDELS", "type": "long"}, {"name": "INDEL_HET_HOM_RATIO", "type": "double"}, {"name":
"INDELS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name": "INSERTIONS_ALL", "type": "long"},
{"name": "INSERTIONS", "type": "long"}, {"name": "INSERTION_HET_HOM_RATIO", "type": "double"},
{"name": "INSERTIONS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name": "INSERTIONS_IN_GENES",
"type": "long"}, {"name": "INSERTIONS_IN_EXONS", "type": "long"}, {"name":
"INSERTIONS_IN_CODING_REGIONS", "type": "long"}, {"name": "INSERTIONS_IN_MATURE_MIRNA", "type":
"long"}, {"name": "INSERTIONS_IN_UTR_REGIONS", "type": "long"}, {"name":
"INSERTIONS_IN_SPLICE_SITE_REGIONS", "type": "long"}, {"name": "STOP_GAINED_INSERTIONS", "type":
"long"}, {"name": "STOP_LOST_INSERTIONS", "type": "long"}, {"name": "FRAMESHIFT_INSERTIONS", "type":
"long"}, {"name": "NONSYNONYMOUS_INSERTIONS", "type": "long"}, {"name": "DELETIONS_ALL", "type":
"long"}, {"name": "DELETIONS", "type": "long"}, {"name": "DELETION_HET_HOM_RATIO", "type":
"double"}, {"name": "DELETIONS_PERCENT_FOUND_IN_DBSNP", "type": "double"}, {"name":
"DELETIONS_IN_GENES", "type": "long"}, {"name": "DELETIONS_IN_EXONS", "type": "long"}, {"name":
"DELETIONS_IN_CODING_REGIONS", "type": "long"}, {"name": "DELETIONS_IN_MATURE_MIRNA", "type":
"long"}, {"name": "DELETIONS_IN_UTR_REGIONS", "type": "long"}, {"name":
"DELETIONS_IN_SPLICE_SITE_REGIONS", "type": "long"}, {"name": "STOP_GAINED_DELETIONS", "type":
"long"}, {"name": "STOP_LOST_DELETIONS", "type": "long"}, {"name": "FRAMESHIFT_DELETIONS", "type":
"long"}, {"name": "NONSYNONYMOUS_DELETIONS", "type": "long"}, {"name": "DIVERSITY", "type": "long"},
{"name": "PERCENT_NOISE_SITES", "type": "double"}, {"name": "PERCENT_NOISE_BASES", "type":
"double"}, {"name": "PROVIDED_SEX_CHROMOSOME_PLOIDY", "type": "string"}, {"name":
"PREDICTED_SEX_CHROMOSOME_PLOIDY", "type": "string"}, {"name":
"MAPQ_GT_10_AUTOSOME_MEDIAN_COVERAGE", "type": "double"}, {"name":
"PERCENT_MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X", "type": "double"}, {"name":
"PERCENT_MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X", "type": "double"}, {"name":
"AUTOSOME_MEAN_COVERAGE", "type": "double"}, {"name": "PERCENT_AUTOSOME_COVERAGE_AT_1X", "type":
"double"}, {"name": "PERCENT_AUTOSOME_COVERAGE_AT_10X", "type": "double"}, {"name":
"PERCENT_AUTOSOME_COVERAGE_AT_15X", "type": "double"}, {"name": "AUTOSOME_EXON_MEAN_COVERAGE",
"type": "double"}, {"name": "PERCENT_AUTOSOME_EXON_COVERAGE_AT_1X", "type": "double"}, {"name":
"PERCENT_AUTOSOME_EXON_COVERAGE_AT_10X", "type": "double"}, {"name":
"PERCENT_AUTOSOME_EXON_COVERAGE_AT_15X", "type": "double"}, {"name": "SV_INSERTIONS_ALL", "type":
"long"}, {"name": "SV_INSERTIONS", "type": "long"}, {"name": "SV_INSERTIONS_IN_GENES", "type":
"long"}, {"name": "SV_PERCENT_INSERTIONS_IN_GENES", "type": "double"}, {"name": "SV_DELETIONS_ALL",
"type": "long"}, {"name": "SV_DELETIONS", "type": "long"}, {"name": "SV_DELETIONS_IN_GENES", "type":
"long"}, {"name": "SV_PERCENT_DELETIONS_IN_GENES", "type": "double"}, {"name":
"SV_TANDEM_DUPLICATIONS_ALL", "type": "long"}, {"name": "SV_TANDEM_DUPLICATIONS", "type": "long"},
{"name": "SV_TANDEM_DUPLICATIONS_IN_GENES", "type": "long"}, {"name":
"SV_PERCENT_TANDEM_DUPLICATIONS_IN_GENES", "type": "double"}, {"name": "SV_INVERSIONS_ALL", "type":
"long"}, {"name": "SV_INVERSIONS", "type": "long"}, {"name": "SV_INVERSIONS_IN_GENES", "type":
"long"}, {"name": "SV_PERCENT_INVERSIONS_IN_GENES", "type": "double"}, {"name": "SV_BREAKENDS_ALL",
"type": "long"}, {"name": "SV_BREAKENDS", "type": "long"}, {"name": "SV_BREAKENDS_IN_GENES", "type":
"long"}, {"name": "SV_PERCENT_BREAKENDS_IN_GENES", "type": "double"}, {"name": "CNVS_ALL", "type":
"long"}, {"name": "CNVS", "type": "long"}, {"name": "CNVS_IN_GENES", "type": "long"}, {"name":
"PERCENT_CNVS_IN_GENES", "type": "double"}, {"name": "DE_NOVO_SVS", "type": "long"}, {"name":
"DE_NOVO_CNVS", "type": "long"}, {"name": "PERCENT_SNVS_IN_LARGE_ROH", "type": "double"}, {"name":
"NUMBER_OF_LARGE_ROH", "type": "long"}, {"name": "FILTERED_HET___HOM_LARGE_ROH", "type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "ANALYSIS_VERSION",
        "AUTOSOME_EXON_MEAN_COVERAGE",
        "AUTOSOME_MEAN_COVERAGE",
        "CNVS",
        "CNVS_ALL",
        "CNVS_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",
        "DE_NOVO_CNVS",
        "DE_NOVO_SVS",
        "DIVERSITY",
        "FILTERED_HET___HOM_LARGE_ROH",
        "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_MEDIAN_COVERAGE",
        "MEAN_COVERAGE",
        "MEDIAN_READ_LENGTH",
        "MEDIAN_READ_LENGTH_READ_1",
        "MEDIAN_READ_LENGTH_READ_2",
        "METRICS_DELIVERABLE",
        "METRICS_VERSION",
        "NONSYNONYMOUS_DELETIONS",
        "NONSYNONYMOUS_INSERTIONS",
        "NONSYNONYMOUS_SNVS",
        "NUMBER_OF_LARGE_ROH",
        "PAIRED_END",
        "PERCENT_ADAPTER_BASES",
        "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_AT_DROPOUT_ALIGNED",
        "PERCENT_AUTOSOME_CALLABILITY",
        "PERCENT_AUTOSOME_COVERAGE_AT_10X",
        "PERCENT_AUTOSOME_COVERAGE_AT_15X",
        "PERCENT_AUTOSOME_COVERAGE_AT_1X",
        "PERCENT_AUTOSOME_EXON_CALLABILITY",
        "PERCENT_AUTOSOME_EXON_COVERAGE_AT_10X",
        "PERCENT_AUTOSOME_EXON_COVERAGE_AT_15X",
        "PERCENT_AUTOSOME_EXON_COVERAGE_AT_1X",
        "PERCENT_CALLABILITY",
        "PERCENT_CNVS_IN_GENES",
        "PERCENT_COVERAGE_AT_10X",
        "PERCENT_COVERAGE_AT_15X",
        "PERCENT_COVERAGE_AT_1X",
        "PERCENT_DUPLICATE_ALIGNED_READS",
        "PERCENT_DUPLICATE_PROPER_READ_PAIRS",
        "PERCENT_GC_DROPOUT",
        "PERCENT_GC_DROPOUT_ALIGNED",
        "PERCENT_MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X",
        "PERCENT_MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X",
        "PERCENT_MISMATCHES",
        "PERCENT_MISMATCHES_READ_1",
        "PERCENT_MISMATCHES_READ_2",
        "PERCENT_NOISE_BASES",
        "PERCENT_NOISE_SITES",
        "PERCENT_NONSPATIAL_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_SNVS_IN_LARGE_ROH",
        "PERCENT_SOFTCLIPPED_BASES",
        "PREDICTED_SEX_CHROMOSOME_PLOIDY",
        "PROVIDED_SEX_CHROMOSOME_PLOIDY",
        "Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES",
        "READ_ENRICHMENT_AT_75_PERCENT_GC",
        "READ_ENRICHMENT_AT_80_PERCENT_GC",
        "REFERENCE_GENOME",
        "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_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES",
        "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__ = [
        'ANALYSIS_VERSION', 'AUTOSOME_EXON_MEAN_COVERAGE',
        'AUTOSOME_MEAN_COVERAGE', 'CNVS', 'CNVS_ALL', 'CNVS_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',
        'DE_NOVO_CNVS', 'DE_NOVO_SVS', 'DIVERSITY',
        'FILTERED_HET___HOM_LARGE_ROH', '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_MEDIAN_COVERAGE', 'MEAN_COVERAGE',
        'MEDIAN_READ_LENGTH', 'MEDIAN_READ_LENGTH_READ_1',
        'MEDIAN_READ_LENGTH_READ_2', 'METRICS_DELIVERABLE',
        'METRICS_VERSION', 'NONSYNONYMOUS_DELETIONS',
        'NONSYNONYMOUS_INSERTIONS', 'NONSYNONYMOUS_SNVS',
        'NUMBER_OF_LARGE_ROH', 'PAIRED_END', 'PERCENT_ADAPTER_BASES',
        '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_AT_DROPOUT_ALIGNED',
        'PERCENT_AUTOSOME_CALLABILITY',
        'PERCENT_AUTOSOME_COVERAGE_AT_10X',
        'PERCENT_AUTOSOME_COVERAGE_AT_15X',
        'PERCENT_AUTOSOME_COVERAGE_AT_1X',
        'PERCENT_AUTOSOME_EXON_CALLABILITY',
        'PERCENT_AUTOSOME_EXON_COVERAGE_AT_10X',
        'PERCENT_AUTOSOME_EXON_COVERAGE_AT_15X',
        'PERCENT_AUTOSOME_EXON_COVERAGE_AT_1X', 'PERCENT_CALLABILITY',
        'PERCENT_CNVS_IN_GENES', 'PERCENT_COVERAGE_AT_10X',
        'PERCENT_COVERAGE_AT_15X', 'PERCENT_COVERAGE_AT_1X',
        'PERCENT_DUPLICATE_ALIGNED_READS',
        'PERCENT_DUPLICATE_PROPER_READ_PAIRS', 'PERCENT_GC_DROPOUT',
        'PERCENT_GC_DROPOUT_ALIGNED',
        'PERCENT_MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X',
        'PERCENT_MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X',
        'PERCENT_MISMATCHES', 'PERCENT_MISMATCHES_READ_1',
        'PERCENT_MISMATCHES_READ_2', 'PERCENT_NOISE_BASES',
        'PERCENT_NOISE_SITES',
        'PERCENT_NONSPATIAL_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_SNVS_IN_LARGE_ROH', 'PERCENT_SOFTCLIPPED_BASES',
        'PREDICTED_SEX_CHROMOSOME_PLOIDY',
        'PROVIDED_SEX_CHROMOSOME_PLOIDY',
        'Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES',
        'READ_ENRICHMENT_AT_75_PERCENT_GC',
        'READ_ENRICHMENT_AT_80_PERCENT_GC', 'REFERENCE_GENOME',
        '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_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES',
        '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.ANALYSIS_VERSION = kwargs.get(
            'ANALYSIS_VERSION', None)
        self.AUTOSOME_EXON_MEAN_COVERAGE = kwargs.get(
            'AUTOSOME_EXON_MEAN_COVERAGE', None)
        self.AUTOSOME_MEAN_COVERAGE = kwargs.get(
            'AUTOSOME_MEAN_COVERAGE', 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.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.DE_NOVO_CNVS = kwargs.get(
            'DE_NOVO_CNVS', None)
        self.DE_NOVO_SVS = kwargs.get(
            'DE_NOVO_SVS', None)
        self.DIVERSITY = kwargs.get(
            'DIVERSITY', None)
        self.FILTERED_HET___HOM_LARGE_ROH = kwargs.get(
            'FILTERED_HET___HOM_LARGE_ROH', 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_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.NONSYNONYMOUS_DELETIONS = kwargs.get(
            'NONSYNONYMOUS_DELETIONS', None)
        self.NONSYNONYMOUS_INSERTIONS = kwargs.get(
            'NONSYNONYMOUS_INSERTIONS', None)
        self.NONSYNONYMOUS_SNVS = kwargs.get(
            'NONSYNONYMOUS_SNVS', None)
        self.NUMBER_OF_LARGE_ROH = kwargs.get(
            'NUMBER_OF_LARGE_ROH', None)
        self.PAIRED_END = kwargs.get(
            'PAIRED_END', None)
        self.PERCENT_ADAPTER_BASES = kwargs.get(
            'PERCENT_ADAPTER_BASES', 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_AT_DROPOUT_ALIGNED = kwargs.get(
            'PERCENT_AT_DROPOUT_ALIGNED', None)
        self.PERCENT_AUTOSOME_CALLABILITY = kwargs.get(
            'PERCENT_AUTOSOME_CALLABILITY', None)
        self.PERCENT_AUTOSOME_COVERAGE_AT_10X = kwargs.get(
            'PERCENT_AUTOSOME_COVERAGE_AT_10X', None)
        self.PERCENT_AUTOSOME_COVERAGE_AT_15X = kwargs.get(
            'PERCENT_AUTOSOME_COVERAGE_AT_15X', None)
        self.PERCENT_AUTOSOME_COVERAGE_AT_1X = kwargs.get(
            'PERCENT_AUTOSOME_COVERAGE_AT_1X', None)
        self.PERCENT_AUTOSOME_EXON_CALLABILITY = kwargs.get(
            'PERCENT_AUTOSOME_EXON_CALLABILITY', None)
        self.PERCENT_AUTOSOME_EXON_COVERAGE_AT_10X = kwargs.get(
            'PERCENT_AUTOSOME_EXON_COVERAGE_AT_10X', None)
        self.PERCENT_AUTOSOME_EXON_COVERAGE_AT_15X = kwargs.get(
            'PERCENT_AUTOSOME_EXON_COVERAGE_AT_15X', None)
        self.PERCENT_AUTOSOME_EXON_COVERAGE_AT_1X = kwargs.get(
            'PERCENT_AUTOSOME_EXON_COVERAGE_AT_1X', None)
        self.PERCENT_CALLABILITY = kwargs.get(
            'PERCENT_CALLABILITY', None)
        self.PERCENT_CNVS_IN_GENES = kwargs.get(
            'PERCENT_CNVS_IN_GENES', None)
        self.PERCENT_COVERAGE_AT_10X = kwargs.get(
            'PERCENT_COVERAGE_AT_10X', None)
        self.PERCENT_COVERAGE_AT_15X = kwargs.get(
            'PERCENT_COVERAGE_AT_15X', None)
        self.PERCENT_COVERAGE_AT_1X = kwargs.get(
            'PERCENT_COVERAGE_AT_1X', 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_GC_DROPOUT_ALIGNED = kwargs.get(
            'PERCENT_GC_DROPOUT_ALIGNED', None)
        self.PERCENT_MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X = kwargs.get(
            'PERCENT_MAPQ_GT_10_AUTOSOME_COVERAGE_AT_15X', None)
        self.PERCENT_MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X = kwargs.get(
            'PERCENT_MAPQ_GT_10_AUTOSOME_EXON_COVERAGE_AT_15X', None)
        self.PERCENT_MISMATCHES = kwargs.get(
            'PERCENT_MISMATCHES', None)
        self.PERCENT_MISMATCHES_READ_1 = kwargs.get(
            'PERCENT_MISMATCHES_READ_1', None)
        self.PERCENT_MISMATCHES_READ_2 = kwargs.get(
            'PERCENT_MISMATCHES_READ_2', None)
        self.PERCENT_NOISE_BASES = kwargs.get(
            'PERCENT_NOISE_BASES', None)
        self.PERCENT_NOISE_SITES = kwargs.get(
            'PERCENT_NOISE_SITES', None)
        self.PERCENT_NONSPATIAL_DUPLICATE_READ_PAIRS = kwargs.get(
            'PERCENT_NONSPATIAL_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_SNVS_IN_LARGE_ROH = kwargs.get(
            'PERCENT_SNVS_IN_LARGE_ROH', None)
        self.PERCENT_SOFTCLIPPED_BASES = kwargs.get(
            'PERCENT_SOFTCLIPPED_BASES', None)
        self.PREDICTED_SEX_CHROMOSOME_PLOIDY = kwargs.get(
            'PREDICTED_SEX_CHROMOSOME_PLOIDY', None)
        self.PROVIDED_SEX_CHROMOSOME_PLOIDY = kwargs.get(
            'PROVIDED_SEX_CHROMOSOME_PLOIDY', None)
        self.Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES = kwargs.get(
            'Q30_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES', None)
        self.READ_ENRICHMENT_AT_75_PERCENT_GC = kwargs.get(
            'READ_ENRICHMENT_AT_75_PERCENT_GC', None)
        self.READ_ENRICHMENT_AT_80_PERCENT_GC = kwargs.get(
            'READ_ENRICHMENT_AT_80_PERCENT_GC', None)
        self.REFERENCE_GENOME = kwargs.get(
            'REFERENCE_GENOME', 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_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES = kwargs.get(
            'TOTAL_GIGABASES_EXCLUDING_CLIPPED_AND_DUPLICATE_READ_BASES', 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.participant.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 IndividualMendelErrors(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "IndividualMendelErrors", "namespace": "org.gel.models.metrics.avro",
"fields": [{"name": "sampleId", "type": ["null", "string"], "doc": ""}, {"name":
"numberOfMendelErrors", "type": ["null", "double"], "doc": ""}, {"name": "rateOfMendelErrors",
"type": ["null", "double"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "numberOfMendelErrors",
        "rateOfMendelErrors",
        "sampleId",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'numberOfMendelErrors', 'rateOfMendelErrors', 'sampleId'
    ]

    def __init__(self, **kwargs):
        self.numberOfMendelErrors = kwargs.get(
            'numberOfMendelErrors', None)
        self.rateOfMendelErrors = kwargs.get(
            'rateOfMendelErrors', None)
        self.sampleId = kwargs.get(
            'sampleId', 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 KaryotypicSex(object):
    """
    Kariotypic sex     TODO: Check if we want to have different
    karyotype definitions for XO clearcut/doubtful
    """
    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 KgPopCategory(object):
    """
    1K Genomes project populations
    """
    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 Genomes project super populations
    """
    AFR = "AFR"
    AMR = "AMR"
    EAS = "EAS"
    EUR = "EUR"
    SAS = "SAS"

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


class Laterality(object):
    """
    No documentation
    """
    RIGHT = "RIGHT"
    UNILATERAL = "UNILATERAL"
    BILATERAL = "BILATERAL"
    LEFT = "LEFT"

    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 LocusMendelSummary(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "LocusMendelSummary", "namespace": "org.gel.models.metrics.avro",
"fields": [{"name": "sampleId", "type": ["null", "string"], "doc": ""}, {"name": "chr", "type":
["null", "string"], "doc": ""}, {"name": "code", "type": ["null", "double"], "doc": ""}, {"name":
"numberOfErrors", "type": ["null", "double"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "chr",
        "code",
        "numberOfErrors",
        "sampleId",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'chr', 'code', 'numberOfErrors', 'sampleId'
    ]

    def __init__(self, **kwargs):
        self.chr = kwargs.get(
            'chr', None)
        self.code = kwargs.get(
            'code', None)
        self.numberOfErrors = kwargs.get(
            'numberOfErrors', None)
        self.sampleId = kwargs.get(
            'sampleId', None)


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 defines a pair of germline and tumor, this pair should/must
    be analyzed together
    """
    _schemaSource = """
{"type": "record", "name": "MatchedSamples", "namespace": "org.gel.models.participant.avro", "doc":
"", "fields": [{"name": "germlineSampleId", "type": ["null", "string"], "doc": ""}, {"name":
"tumourSampleId", "type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "germlineSampleId",
        "tumourSampleId",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'germlineSampleId', 'tumourSampleId'
    ]

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


class MendelianInconsistencies(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "MendelianInconsistencies", "namespace": "org.gel.models.metrics.avro",
"fields": [{"name": "perFamilyMendelErrors", "type": ["null", {"type": "array", "items": {"type":
"record", "name": "PerFamilyMendelErrors", "doc": "", "fields": [{"name": "fatherId", "type":
["null", "string"], "doc": ""}, {"name": "motherId", "type": ["null", "string"], "doc": ""},
{"name": "numberOfOffspring", "type": ["null", "double"], "doc": ""}, {"name":
"numberOfMendelErrors", "type": ["null", "double"], "doc": ""}]}}], "doc": ""}, {"name":
"individualMendelErrors", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"IndividualMendelErrors", "fields": [{"name": "sampleId", "type": ["null", "string"], "doc": ""},
{"name": "numberOfMendelErrors", "type": ["null", "double"], "doc": ""}, {"name":
"rateOfMendelErrors", "type": ["null", "double"], "doc": ""}]}}], "doc": ""}, {"name":
"totalNumberOfMendelErrors", "type": ["null", {"type": "record", "name":
"TotalNumberOfMendelErrors", "fields": [{"name": "familyMendelErrors", "type": ["null", "double"],
"doc": ""}, {"name": "individualMendelErrors", "type": ["null", {"type": "array", "items": {"type":
"record", "name": "AggregatedIndividualMendelErrors", "fields": [{"name": "sampleId", "type":
["null", "string"], "doc": ""}, {"name": "totalnumberOfMendelErrors", "type": ["null", "double"],
"doc": ""}]}}], "doc": ""}]}], "doc": ""}, {"name": "locusMendelSummary", "type": ["null", {"type":
"array", "items": {"type": "record", "name": "LocusMendelSummary", "fields": [{"name": "sampleId",
"type": ["null", "string"], "doc": ""}, {"name": "chr", "type": ["null", "string"], "doc": ""},
{"name": "code", "type": ["null", "double"], "doc": ""}, {"name": "numberOfErrors", "type": ["null",
"double"], "doc": ""}]}}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "individualMendelErrors",
        "locusMendelSummary",
        "perFamilyMendelErrors",
        "totalNumberOfMendelErrors",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'individualMendelErrors': IndividualMendelErrors,
            'locusMendelSummary': LocusMendelSummary,
            'perFamilyMendelErrors': PerFamilyMendelErrors,
            'totalNumberOfMendelErrors': TotalNumberOfMendelErrors,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'individualMendelErrors': IndividualMendelErrors,
            'locusMendelSummary': LocusMendelSummary,
            'perFamilyMendelErrors': PerFamilyMendelErrors,
            'totalNumberOfMendelErrors': TotalNumberOfMendelErrors,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'individualMendelErrors', 'locusMendelSummary',
        'perFamilyMendelErrors', 'totalNumberOfMendelErrors'
    ]

    def __init__(self, **kwargs):
        self.individualMendelErrors = kwargs.get(
            'individualMendelErrors', None)
        self.locusMendelSummary = kwargs.get(
            'locusMendelSummary', None)
        self.perFamilyMendelErrors = kwargs.get(
            'perFamilyMendelErrors', None)
        self.totalNumberOfMendelErrors = kwargs.get(
            'totalNumberOfMendelErrors', None)


class MendelianInconsistenciesCheck(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "MendelianInconsistenciesCheck", "namespace":
"org.gel.models.metrics.avro", "fields": [{"name": "sampleId", "type": ["null", "string"], "doc":
""}, {"name": "mendelianInconsistenciesQuery", "type": ["null", {"type": "enum", "name": "Query",
"doc": "", "symbols": ["yes", "no", "unknown", "notTested"]}], "doc": ""}, {"name": "comments",
"type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "comments",
        "mendelianInconsistenciesQuery",
        "sampleId",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'comments', 'mendelianInconsistenciesQuery', 'sampleId'
    ]

    def __init__(self, **kwargs):
        self.comments = kwargs.get(
            'comments', None)
        self.mendelianInconsistenciesQuery = kwargs.get(
            'mendelianInconsistenciesQuery', None)
        self.sampleId = kwargs.get(
            'sampleId', None)


class Method(object):
    """
    In GMS, Method is defined as how the sample was taken directly
    from the patient
    """
    ASPIRATE = "ASPIRATE"
    BIOPSY = "BIOPSY"
    NOT_APPLICABLE = "NOT_APPLICABLE"
    RESECTION = "RESECTION"
    SORTED_OTHER = "SORTED_OTHER"
    UNKNOWN = "UNKNOWN"
    UNSORTED = "UNSORTED"
    CD138_SORTED = "CD138_SORTED"

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


class Morphology(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "Morphology", "namespace": "org.gel.models.participant.avro", "fields":
[{"name": "id", "type": ["null", "string"], "doc": ""}, {"name": "name", "type": ["null", "string"],
"doc": ""}, {"name": "value", "type": ["null", "string"], "doc": ""}, {"name": "version", "type":
["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "id",
        "name",
        "value",
        "version",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'id', 'name', 'value', 'version'
    ]

    def __init__(self, **kwargs):
        self.id = kwargs.get(
            'id', None)
        self.name = kwargs.get(
            'name', None)
        self.value = kwargs.get(
            'value', None)
        self.version = kwargs.get(
            'version', None)


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 OrganisationNgis(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "OrganisationNgis", "namespace": "org.gel.models.participant.avro",
"fields": [{"name": "organisationId", "type": "string", "doc": ""}, {"name": "organisationCode",
"type": "string", "doc": ""}, {"name": "organisationName", "type": "string", "doc": ""}, {"name":
"organisationNationalGroupingId", "type": "string", "doc": ""}, {"name":
"organisationNationalGroupingName", "type": "string", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "organisationCode",
        "organisationId",
        "organisationName",
        "organisationNationalGroupingId",
        "organisationNationalGroupingName",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'organisationCode', 'organisationId', 'organisationName',
        'organisationNationalGroupingId',
        'organisationNationalGroupingName'
    ]

    def __init__(self, **kwargs):
        self.organisationCode = kwargs.get(
            'organisationCode', None)
        self.organisationId = kwargs.get(
            'organisationId', None)
        self.organisationName = kwargs.get(
            'organisationName', None)
        self.organisationNationalGroupingId = kwargs.get(
            'organisationNationalGroupingId', None)
        self.organisationNationalGroupingName = kwargs.get(
            'organisationNationalGroupingName', None)


class ParticipantQCState(object):
    """
    QCState Status
    """
    noState = "noState"
    passedMedicalReviewReadyForInterpretation = "passedMedicalReviewReadyForInterpretation"
    passedMedicalReviewNotReadyForInterpretation = "passedMedicalReviewNotReadyForInterpretation"
    queryToGel = "queryToGel"
    queryToGMC = "queryToGMC"
    failed = "failed"

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


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.participant.avro", "doc": "",
"fields": [{"name": "versionControl", "type": ["null", {"type": "record", "name": "VersionControl",
"fields": [{"name": "GitVersionControl", "type": "string", "doc": "", "default": "1.2.0"}]}], "doc":
""}, {"name": "LDPCode", "type": ["null", "string"], "doc": ""}, {"name": "familyId", "type":
"string", "doc": ""}, {"name": "members", "type": {"type": "array", "items": {"type": "record",
"name": "PedigreeMember", "doc": "", "fields": [{"name": "pedigreeId", "type": ["null", "int"],
"doc": ""}, {"name": "isProband", "type": ["null", "boolean"], "doc": ""}, {"name": "participantId",
"type": ["null", "string"], "doc": ""}, {"name": "participantQCState", "type": ["null", {"type":
"enum", "name": "ParticipantQCState", "doc": "", "symbols": ["noState",
"passedMedicalReviewReadyForInterpretation", "passedMedicalReviewNotReadyForInterpretation",
"queryToGel", "queryToGMC", "failed"]}], "doc": ""}, {"name": "gelSuperFamilyId", "type": ["null",
"string"], "doc": ""}, {"name": "sex", "type": {"type": "enum", "name": "Sex", "doc": "", "symbols":
["MALE", "FEMALE", "UNKNOWN"]}, "doc": ""}, {"name": "personKaryotypicSex", "type": ["null",
{"type": "enum", "name": "PersonKaryotipicSex", "doc": "", "symbols": ["UNKNOWN", "XX", "XY", "XO",
"XXY", "XXX", "XXYY", "XXXY", "XXXX", "XYY", "OTHER"]}], "doc": ""}, {"name": "yearOfBirth", "type":
["null", "int"], "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": ["null", {"type": "enum", "name": "AdoptedStatus", "doc": "", "symbols":
["notadopted", "adoptedin", "adoptedout"]}], "doc": ""}, {"name": "lifeStatus", "type": ["null",
{"type": "enum", "name": "LifeStatus", "doc": "", "symbols": ["ALIVE", "ABORTED", "DECEASED",
"UNBORN", "STILLBORN", "MISCARRIAGE"]}], "doc": ""}, {"name": "consanguineousParents", "type":
["null", "TernaryOption"], "doc": ""}, {"name": "affectionStatus", "type": ["null", {"type": "enum",
"name": "AffectionStatus", "doc": "", "symbols": ["UNAFFECTED", "AFFECTED", "UNCERTAIN"]}], "doc":
""}, {"name": "disorderList", "type": ["null", {"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", "float"], "doc":
""}]}}], "doc": ""}, {"name": "hpoTermList", "type": ["null", {"type": "array", "items": {"type":
"record", "name": "HpoTerm", "doc": "", "fields": [{"name": "term", "type": "string", "doc": ""},
{"name": "termPresence", "type": ["null", "TernaryOption"], "doc": ""}, {"name": "hpoBuildNumber",
"type": ["null", "string"], "doc": ""}, {"name": "modifiers", "type": ["null", {"type": "array",
"items": {"type": "record", "name": "HpoTermModifiers", "doc": "", "fields": [{"name": "laterality",
"type": ["null", {"type": "enum", "name": "Laterality", "symbols": ["RIGHT", "UNILATERAL",
"BILATERAL", "LEFT"]}]}, {"name": "progression", "type": ["null", {"type": "enum", "name":
"Progression", "symbols": ["PROGRESSIVE", "NONPROGRESSIVE"]}]}, {"name": "severity", "type":
["null", {"type": "enum", "name": "Severity", "symbols": ["BORDERLINE", "MILD", "MODERATE",
"SEVERE", "PROFOUND"]}]}, {"name": "spatialPattern", "type": ["null", {"type": "enum", "name":
"SpatialPattern", "symbols": ["DISTAL", "GENERALIZED", "LOCALIZED", "PROXIMAL"]}]}, {"name":
"hpoModifierCode", "type": ["null", "string"]}, {"name": "hpoModifierVersion", "type": ["null",
"string"]}]}}], "doc": ""}, {"name": "ageOfOnset", "type": ["null", {"type": "enum", "name":
"AgeOfOnset", "symbols": ["EMBRYONAL_ONSET", "FETAL_ONSET", "NEONATAL_ONSET", "INFANTILE_ONSET",
"CHILDHOOD_ONSET", "JUVENILE_ONSET", "YOUNG_ADULT_ONSET", "LATE_ONSET", "MIDDLE_AGE_ONSET"]}],
"doc": ""}]}}], "doc": ""}, {"name": "ancestries", "type": ["null", {"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":
"double", "doc": ""}]}}], "doc": ""}]}], "doc": ""}, {"name": "consentStatus", "type": ["null",
{"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": "testConsentStatus", "type": ["null", {"type": "record",
"name": "GmsConsentStatus", "doc": "", "fields": [{"name": "programmeConsent", "type": {"type":
"enum", "name": "GenericConsent", "doc": "", "symbols": ["yes", "no", "undefined",
"not_applicable"]}, "doc": ""}, {"name": "primaryFindingConsent", "type": "GenericConsent", "doc":
""}, {"name": "researchConsent", "type": "GenericConsent", "doc": ""}, {"name":
"healthRelatedFindingConsent", "type": "GenericConsent", "doc": ""}, {"name":
"carrierStatusConsent", "type": "GenericConsent", "doc": ""}, {"name":
"pharmacogenomicsFindingConsent", "type": "GenericConsent", "doc": ""}]}], "doc": ""}, {"name":
"samples", "type": ["null", {"type": "array", "items": {"type": "record", "name": "GermlineSample",
"doc": "", "fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name": "labSampleId",
"type": "int", "doc": ""}, {"name": "LDPCode", "type": ["null", "string"], "doc": ""}, {"name":
"source", "type": ["null", {"type": "enum", "name": "SampleSource", "doc": "", "symbols":
["AMNIOTIC_FLUID", "BLOOD", "BONE_MARROW", "BONE_MARROW_ASPIRATE_TUMOUR_CELLS",
"BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS", "BUCCAL_SWAB", "CHORIONIC_VILLUS_SAMPLE", "FIBROBLAST",
"FLUID", "FRESH_TISSUE_IN_CULTURE_MEDIUM", "OTHER", "SALIVA", "TISSUE", "TUMOUR", "URINE"]}], "doc":
""}, {"name": "product", "type": ["null", {"type": "enum", "name": "Product", "symbols": ["DNA",
"RNA"]}], "doc": ""}, {"name": "preparationMethod", "type": ["null", {"type": "enum", "name":
"PreparationMethod", "doc": "", "symbols": ["ASPIRATE", "CD128_SORTED_CELLS", "CD138_SORTED_CELLS",
"EDTA", "FF", "FFPE", "LI_HEP", "ORAGENE"]}], "doc": ""}, {"name": "programmePhase", "type":
["null", {"type": "enum", "name": "ProgrammePhase", "symbols": ["CRUK", "OXFORD", "CLL", "IIP",
"MAIN", "EXPT"]}], "doc": ""}, {"name": "clinicalSampleDateTime", "type": ["null", "string"], "doc":
""}, {"name": "participantId", "type": ["null", "string"]}, {"name": "participantUid", "type":
["null", "string"], "doc": ""}, {"name": "sampleUid", "type": ["null", "string"]}, {"name":
"maskedPid", "type": ["null", "string"]}, {"name": "method", "type": ["null", {"type": "enum",
"name": "Method", "doc": "", "symbols": ["ASPIRATE", "BIOPSY", "NOT_APPLICABLE", "RESECTION",
"SORTED_OTHER", "UNKNOWN", "UNSORTED", "CD138_SORTED"]}], "doc": ""}, {"name": "storageMedium",
"type": ["null", {"type": "enum", "name": "StorageMedium", "doc": "", "symbols": ["EDTA", "FF",
"LI_HEP", "ORAGENE", "FFPE"]}], "doc": ""}, {"name": "sampleType", "type": ["null", "string"],
"doc": ""}, {"name": "sampleState", "type": ["null", "string"], "doc": ""}]}}], "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":
"lastMenstrualPeriod", "type": ["null", "string"], "doc": ""}, {"name": "diagnosticDetails", "type":
["null", {"type": "array", "items": {"type": "record", "name": "DiagnosticDetail", "fields":
[{"name": "diagnosisCodingSystem", "type": "string", "doc": ""}, {"name":
"diagnosisCodingSystemVersion", "type": ["null", "string"], "doc": ""}, {"name": "diagnosisCode",
"type": "string", "doc": ""}, {"name": "diagnosisDescription", "type": ["null", "string"], "doc":
""}, {"name": "diagnosisCertainty", "type": ["null", "string"], "doc": ""}, {"name":
"ageAtOnsetInYears", "type": ["null", "float"], "doc": ""}]}}], "doc": ""}, {"name":
"participantUid", "type": ["null", "string"], "doc": ""}, {"name": "clinicalEthnicities", "type":
["null", {"type": "array", "items": {"type": "enum", "name": "ClinicalEthnicity", "doc": "",
"symbols": ["A", "B", "C", "C2", "C3", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CJ", "CK",
"CL", "CM", "CN", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "D", "E", "F", "G",
"GA", "GB", "GC", "GD", "GE", "GF", "H", "J", "K", "L", "LA", "LB", "LC", "LD", "LE", "LF", "LG",
"LH", "LJ", "LK", "M", "N", "P", "PA", "PB", "PC", "PD", "PE", "R", "S", "S1", "S2", "SA", "SB",
"SC", "SD", "SE", "Z"]}}], "doc": ""}, {"name": "previousTreatment", "type": ["null", {"type":
"array", "items": {"type": "record", "name": "PreviousTreatment", "doc": "", "fields": [{"name":
"previousTreatmentType", "type": ["null", "string"]}, {"name": "previousTreatmentName", "type":
["null", "string"]}, {"name": "previousTreatmentDate", "type": ["null", {"type": "record", "name":
"Date", "doc": "", "fields": [{"name": "year", "type": "int", "doc": ""}, {"name": "month", "type":
["null", "int"], "doc": ""}, {"name": "day", "type": ["null", "int"], "doc": ""}]}]}]}}], "doc":
""}]}}, "doc": ""}, {"name": "analysisPanels", "type": ["null", {"type": "array", "items": {"type":
"record", "name": "AnalysisPanel", "doc": "", "fields": [{"name": "specificDisease", "type":
"string", "doc": ""}, {"name": "panelName", "type": "string", "doc": ""}, {"name": "panelId",
"type": ["null", "string"], "doc": ""}, {"name": "panelVersion", "type": ["null", "string"], "doc":
""}, {"name": "reviewOutcome", "type": ["null", "string"], "doc": ""}, {"name":
"multipleGeneticOrigins", "type": ["null", "string"], "doc": ""}]}}], "doc": ""}, {"name":
"diseasePenetrances", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"DiseasePenetrance", "doc": "", "fields": [{"name": "specificDisease", "type": "string", "doc": ""},
{"name": "penetrance", "type": {"type": "enum", "name": "Penetrance", "doc": "", "symbols":
["complete", "incomplete"]}, "doc": ""}]}}], "doc": ""}, {"name": "readyForAnalysis", "type":
"boolean", "doc": ""}, {"name": "familyQCState", "type": ["null", {"type": "enum", "name":
"FamilyQCState", "doc": "", "symbols": ["noState", "passedMedicalReviewReadyForInterpretation",
"passedMedicalReviewNotReadyForInterpretation", "queryToGel", "queryToGMC", "failed"]}], "doc":
""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "LDPCode",
        "analysisPanels",
        "diseasePenetrances",
        "familyId",
        "familyQCState",
        "members",
        "readyForAnalysis",
        "versionControl",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'LDPCode', 'analysisPanels', 'diseasePenetrances', 'familyId',
        'familyQCState', 'members', 'readyForAnalysis',
        'versionControl'
    ]

    def __init__(self, **kwargs):
        self.LDPCode = kwargs.get(
            'LDPCode', None)
        self.analysisPanels = kwargs.get(
            'analysisPanels', None)
        self.diseasePenetrances = kwargs.get(
            'diseasePenetrances', None)
        self.familyId = kwargs.get(
            'familyId', None)
        self.familyQCState = kwargs.get(
            'familyQCState', None)
        self.members = kwargs.get(
            'members', None)
        self.readyForAnalysis = kwargs.get(
            'readyForAnalysis', None)
        self.versionControl = kwargs.get(
            'versionControl', None)


class PedigreeMember(ProtocolElement):
    """
    This defines a RD Participant (demographics and pedigree
    information)
    """
    _schemaSource = """
{"type": "record", "name": "PedigreeMember", "namespace": "org.gel.models.participant.avro", "doc":
"", "fields": [{"name": "pedigreeId", "type": ["null", "int"], "doc": ""}, {"name": "isProband",
"type": ["null", "boolean"], "doc": ""}, {"name": "participantId", "type": ["null", "string"],
"doc": ""}, {"name": "participantQCState", "type": ["null", {"type": "enum", "name":
"ParticipantQCState", "doc": "", "symbols": ["noState", "passedMedicalReviewReadyForInterpretation",
"passedMedicalReviewNotReadyForInterpretation", "queryToGel", "queryToGMC", "failed"]}], "doc": ""},
{"name": "gelSuperFamilyId", "type": ["null", "string"], "doc": ""}, {"name": "sex", "type":
{"type": "enum", "name": "Sex", "doc": "", "symbols": ["MALE", "FEMALE", "UNKNOWN"]}, "doc": ""},
{"name": "personKaryotypicSex", "type": ["null", {"type": "enum", "name": "PersonKaryotipicSex",
"doc": "", "symbols": ["UNKNOWN", "XX", "XY", "XO", "XXY", "XXX", "XXYY", "XXXY", "XXXX", "XYY",
"OTHER"]}], "doc": ""}, {"name": "yearOfBirth", "type": ["null", "int"], "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": ["null",
{"type": "enum", "name": "AdoptedStatus", "doc": "", "symbols": ["notadopted", "adoptedin",
"adoptedout"]}], "doc": ""}, {"name": "lifeStatus", "type": ["null", {"type": "enum", "name":
"LifeStatus", "doc": "", "symbols": ["ALIVE", "ABORTED", "DECEASED", "UNBORN", "STILLBORN",
"MISCARRIAGE"]}], "doc": ""}, {"name": "consanguineousParents", "type": ["null", "TernaryOption"],
"doc": ""}, {"name": "affectionStatus", "type": ["null", {"type": "enum", "name": "AffectionStatus",
"doc": "", "symbols": ["UNAFFECTED", "AFFECTED", "UNCERTAIN"]}], "doc": ""}, {"name":
"disorderList", "type": ["null", {"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", "float"], "doc": ""}]}}],
"doc": ""}, {"name": "hpoTermList", "type": ["null", {"type": "array", "items": {"type": "record",
"name": "HpoTerm", "doc": "", "fields": [{"name": "term", "type": "string", "doc": ""}, {"name":
"termPresence", "type": ["null", "TernaryOption"], "doc": ""}, {"name": "hpoBuildNumber", "type":
["null", "string"], "doc": ""}, {"name": "modifiers", "type": ["null", {"type": "array", "items":
{"type": "record", "name": "HpoTermModifiers", "doc": "", "fields": [{"name": "laterality", "type":
["null", {"type": "enum", "name": "Laterality", "symbols": ["RIGHT", "UNILATERAL", "BILATERAL",
"LEFT"]}]}, {"name": "progression", "type": ["null", {"type": "enum", "name": "Progression",
"symbols": ["PROGRESSIVE", "NONPROGRESSIVE"]}]}, {"name": "severity", "type": ["null", {"type":
"enum", "name": "Severity", "symbols": ["BORDERLINE", "MILD", "MODERATE", "SEVERE", "PROFOUND"]}]},
{"name": "spatialPattern", "type": ["null", {"type": "enum", "name": "SpatialPattern", "symbols":
["DISTAL", "GENERALIZED", "LOCALIZED", "PROXIMAL"]}]}, {"name": "hpoModifierCode", "type": ["null",
"string"]}, {"name": "hpoModifierVersion", "type": ["null", "string"]}]}}], "doc": ""}, {"name":
"ageOfOnset", "type": ["null", {"type": "enum", "name": "AgeOfOnset", "symbols": ["EMBRYONAL_ONSET",
"FETAL_ONSET", "NEONATAL_ONSET", "INFANTILE_ONSET", "CHILDHOOD_ONSET", "JUVENILE_ONSET",
"YOUNG_ADULT_ONSET", "LATE_ONSET", "MIDDLE_AGE_ONSET"]}], "doc": ""}]}}], "doc": ""}, {"name":
"ancestries", "type": ["null", {"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": "double", "doc": ""}]}}],
"doc": ""}]}], "doc": ""}, {"name": "consentStatus", "type": ["null", {"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": "testConsentStatus", "type": ["null", {"type": "record", "name": "GmsConsentStatus", "doc":
"", "fields": [{"name": "programmeConsent", "type": {"type": "enum", "name": "GenericConsent",
"doc": "", "symbols": ["yes", "no", "undefined", "not_applicable"]}, "doc": ""}, {"name":
"primaryFindingConsent", "type": "GenericConsent", "doc": ""}, {"name": "researchConsent", "type":
"GenericConsent", "doc": ""}, {"name": "healthRelatedFindingConsent", "type": "GenericConsent",
"doc": ""}, {"name": "carrierStatusConsent", "type": "GenericConsent", "doc": ""}, {"name":
"pharmacogenomicsFindingConsent", "type": "GenericConsent", "doc": ""}]}], "doc": ""}, {"name":
"samples", "type": ["null", {"type": "array", "items": {"type": "record", "name": "GermlineSample",
"doc": "", "fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name": "labSampleId",
"type": "int", "doc": ""}, {"name": "LDPCode", "type": ["null", "string"], "doc": ""}, {"name":
"source", "type": ["null", {"type": "enum", "name": "SampleSource", "doc": "", "symbols":
["AMNIOTIC_FLUID", "BLOOD", "BONE_MARROW", "BONE_MARROW_ASPIRATE_TUMOUR_CELLS",
"BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS", "BUCCAL_SWAB", "CHORIONIC_VILLUS_SAMPLE", "FIBROBLAST",
"FLUID", "FRESH_TISSUE_IN_CULTURE_MEDIUM", "OTHER", "SALIVA", "TISSUE", "TUMOUR", "URINE"]}], "doc":
""}, {"name": "product", "type": ["null", {"type": "enum", "name": "Product", "symbols": ["DNA",
"RNA"]}], "doc": ""}, {"name": "preparationMethod", "type": ["null", {"type": "enum", "name":
"PreparationMethod", "doc": "", "symbols": ["ASPIRATE", "CD128_SORTED_CELLS", "CD138_SORTED_CELLS",
"EDTA", "FF", "FFPE", "LI_HEP", "ORAGENE"]}], "doc": ""}, {"name": "programmePhase", "type":
["null", {"type": "enum", "name": "ProgrammePhase", "symbols": ["CRUK", "OXFORD", "CLL", "IIP",
"MAIN", "EXPT"]}], "doc": ""}, {"name": "clinicalSampleDateTime", "type": ["null", "string"], "doc":
""}, {"name": "participantId", "type": ["null", "string"]}, {"name": "participantUid", "type":
["null", "string"], "doc": ""}, {"name": "sampleUid", "type": ["null", "string"]}, {"name":
"maskedPid", "type": ["null", "string"]}, {"name": "method", "type": ["null", {"type": "enum",
"name": "Method", "doc": "", "symbols": ["ASPIRATE", "BIOPSY", "NOT_APPLICABLE", "RESECTION",
"SORTED_OTHER", "UNKNOWN", "UNSORTED", "CD138_SORTED"]}], "doc": ""}, {"name": "storageMedium",
"type": ["null", {"type": "enum", "name": "StorageMedium", "doc": "", "symbols": ["EDTA", "FF",
"LI_HEP", "ORAGENE", "FFPE"]}], "doc": ""}, {"name": "sampleType", "type": ["null", "string"],
"doc": ""}, {"name": "sampleState", "type": ["null", "string"], "doc": ""}]}}], "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":
"lastMenstrualPeriod", "type": ["null", "string"], "doc": ""}, {"name": "diagnosticDetails", "type":
["null", {"type": "array", "items": {"type": "record", "name": "DiagnosticDetail", "fields":
[{"name": "diagnosisCodingSystem", "type": "string", "doc": ""}, {"name":
"diagnosisCodingSystemVersion", "type": ["null", "string"], "doc": ""}, {"name": "diagnosisCode",
"type": "string", "doc": ""}, {"name": "diagnosisDescription", "type": ["null", "string"], "doc":
""}, {"name": "diagnosisCertainty", "type": ["null", "string"], "doc": ""}, {"name":
"ageAtOnsetInYears", "type": ["null", "float"], "doc": ""}]}}], "doc": ""}, {"name":
"participantUid", "type": ["null", "string"], "doc": ""}, {"name": "clinicalEthnicities", "type":
["null", {"type": "array", "items": {"type": "enum", "name": "ClinicalEthnicity", "doc": "",
"symbols": ["A", "B", "C", "C2", "C3", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CJ", "CK",
"CL", "CM", "CN", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "D", "E", "F", "G",
"GA", "GB", "GC", "GD", "GE", "GF", "H", "J", "K", "L", "LA", "LB", "LC", "LD", "LE", "LF", "LG",
"LH", "LJ", "LK", "M", "N", "P", "PA", "PB", "PC", "PD", "PE", "R", "S", "S1", "S2", "SA", "SB",
"SC", "SD", "SE", "Z"]}}], "doc": ""}, {"name": "previousTreatment", "type": ["null", {"type":
"array", "items": {"type": "record", "name": "PreviousTreatment", "doc": "", "fields": [{"name":
"previousTreatmentType", "type": ["null", "string"]}, {"name": "previousTreatmentName", "type":
["null", "string"]}, {"name": "previousTreatmentDate", "type": ["null", {"type": "record", "name":
"Date", "doc": "", "fields": [{"name": "year", "type": "int", "doc": ""}, {"name": "month", "type":
["null", "int"], "doc": ""}, {"name": "day", "type": ["null", "int"], "doc": ""}]}]}]}}], "doc":
""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "additionalInformation",
        "adoptedStatus",
        "affectionStatus",
        "ancestries",
        "clinicalEthnicities",
        "consanguineousParents",
        "consentStatus",
        "diagnosticDetails",
        "disorderList",
        "fatherId",
        "gelSuperFamilyId",
        "hpoTermList",
        "inbreedingCoefficient",
        "isProband",
        "lastMenstrualPeriod",
        "lifeStatus",
        "monozygotic",
        "motherId",
        "participantId",
        "participantQCState",
        "participantUid",
        "pedigreeId",
        "personKaryotypicSex",
        "previousTreatment",
        "samples",
        "sex",
        "superFatherId",
        "superMotherId",
        "testConsentStatus",
        "twinGroup",
        "yearOfBirth",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'ancestries': Ancestries,
            'consentStatus': ConsentStatus,
            'diagnosticDetails': DiagnosticDetail,
            'disorderList': Disorder,
            'hpoTermList': HpoTerm,
            'inbreedingCoefficient': InbreedingCoefficient,
            'previousTreatment': PreviousTreatment,
            'samples': GermlineSample,
            'testConsentStatus': GmsConsentStatus,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'ancestries': Ancestries,
            'consentStatus': ConsentStatus,
            'diagnosticDetails': DiagnosticDetail,
            'disorderList': Disorder,
            'hpoTermList': HpoTerm,
            'inbreedingCoefficient': InbreedingCoefficient,
            'previousTreatment': PreviousTreatment,
            'samples': GermlineSample,
            'testConsentStatus': GmsConsentStatus,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'additionalInformation', 'adoptedStatus', 'affectionStatus',
        'ancestries', 'clinicalEthnicities', 'consanguineousParents',
        'consentStatus', 'diagnosticDetails', 'disorderList',
        'fatherId', 'gelSuperFamilyId', 'hpoTermList',
        'inbreedingCoefficient', 'isProband', 'lastMenstrualPeriod',
        'lifeStatus', 'monozygotic', 'motherId', 'participantId',
        'participantQCState', 'participantUid', 'pedigreeId',
        'personKaryotypicSex', 'previousTreatment', 'samples', 'sex',
        'superFatherId', 'superMotherId', 'testConsentStatus',
        'twinGroup', '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', None)
        self.clinicalEthnicities = kwargs.get(
            'clinicalEthnicities', None)
        self.consanguineousParents = kwargs.get(
            'consanguineousParents', None)
        self.consentStatus = kwargs.get(
            'consentStatus', None)
        self.diagnosticDetails = kwargs.get(
            'diagnosticDetails', None)
        self.disorderList = kwargs.get(
            'disorderList', None)
        self.fatherId = kwargs.get(
            'fatherId', 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.lastMenstrualPeriod = kwargs.get(
            'lastMenstrualPeriod', None)
        self.lifeStatus = kwargs.get(
            'lifeStatus', None)
        self.monozygotic = kwargs.get(
            'monozygotic', None)
        self.motherId = kwargs.get(
            'motherId', None)
        self.participantId = kwargs.get(
            'participantId', None)
        self.participantQCState = kwargs.get(
            'participantQCState', None)
        self.participantUid = kwargs.get(
            'participantUid', None)
        self.pedigreeId = kwargs.get(
            'pedigreeId', None)
        self.personKaryotypicSex = kwargs.get(
            'personKaryotypicSex', None)
        self.previousTreatment = kwargs.get(
            'previousTreatment', 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.testConsentStatus = kwargs.get(
            'testConsentStatus', None)
        self.twinGroup = kwargs.get(
            'twinGroup', None)
        self.yearOfBirth = kwargs.get(
            'yearOfBirth', None)


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

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


class PerFamilyMendelErrors(ProtocolElement):
    """
    Mendelian inconsistencies
    ========================================     - fmendel reports a
    line per nuclear family     - imendel reports a line per member of
    the family and nuclear family
    """
    _schemaSource = """
{"type": "record", "name": "PerFamilyMendelErrors", "namespace": "org.gel.models.metrics.avro",
"doc": "", "fields": [{"name": "fatherId", "type": ["null", "string"], "doc": ""}, {"name":
"motherId", "type": ["null", "string"], "doc": ""}, {"name": "numberOfOffspring", "type": ["null",
"double"], "doc": ""}, {"name": "numberOfMendelErrors", "type": ["null", "double"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "fatherId",
        "motherId",
        "numberOfMendelErrors",
        "numberOfOffspring",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'fatherId', 'motherId', 'numberOfMendelErrors',
        'numberOfOffspring'
    ]

    def __init__(self, **kwargs):
        self.fatherId = kwargs.get(
            'fatherId', None)
        self.motherId = kwargs.get(
            'motherId', None)
        self.numberOfMendelErrors = kwargs.get(
            'numberOfMendelErrors', None)
        self.numberOfOffspring = kwargs.get(
            'numberOfOffspring', None)


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 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 PreparationMethod(object):
    """
    In 100K, preparation Method of sample     NOTE: In GMS, this field
    is deprecated in favour of StorageMedium and Method
    """
    ASPIRATE = "ASPIRATE"
    CD128_SORTED_CELLS = "CD128_SORTED_CELLS"
    CD138_SORTED_CELLS = "CD138_SORTED_CELLS"
    EDTA = "EDTA"
    FF = "FF"
    FFPE = "FFPE"
    LI_HEP = "LI_HEP"
    ORAGENE = "ORAGENE"

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


class PreviousTreatment(ProtocolElement):
    """
    In GMS, Previous Treatment of Patient
    """
    _schemaSource = """
{"type": "record", "name": "PreviousTreatment", "namespace": "org.gel.models.participant.avro",
"doc": "", "fields": [{"name": "previousTreatmentType", "type": ["null", "string"]}, {"name":
"previousTreatmentName", "type": ["null", "string"]}, {"name": "previousTreatmentDate", "type":
["null", {"type": "record", "name": "Date", "doc": "", "fields": [{"name": "year", "type": "int",
"doc": ""}, {"name": "month", "type": ["null", "int"], "doc": ""}, {"name": "day", "type": ["null",
"int"], "doc": ""}]}]}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "previousTreatmentDate",
        "previousTreatmentName",
        "previousTreatmentType",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'previousTreatmentDate', 'previousTreatmentName',
        'previousTreatmentType'
    ]

    def __init__(self, **kwargs):
        self.previousTreatmentDate = kwargs.get(
            'previousTreatmentDate', None)
        self.previousTreatmentName = kwargs.get(
            'previousTreatmentName', None)
        self.previousTreatmentType = kwargs.get(
            'previousTreatmentType', None)


class PrimaryOrMetastatic(object):
    """
    No documentation
    """
    PRIMARY = "PRIMARY"
    METASTATIC = "METASTATIC"
    UNKNOWN = "UNKNOWN"
    NOT_APPLICABLE = "NOT_APPLICABLE"

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


class Priority(object):
    """
    Transformed from TOMs from routine=medium, and urgent=high
    """
    low = "low"
    routine = "routine"
    urgent = "urgent"

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


class Product(object):
    """
    No documentation
    """
    DNA = "DNA"
    RNA = "RNA"

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


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

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


class Progression(object):
    """
    No documentation
    """
    PROGRESSIVE = "PROGRESSIVE"
    NONPROGRESSIVE = "NONPROGRESSIVE"

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


class Query(object):
    """
    A query
    """
    yes = "yes"
    no = "no"
    unknown = "unknown"
    notTested = "notTested"

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


class RareDiseaseInterpretationStatus(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "RareDiseaseInterpretationStatus", "namespace":
"org.gel.models.metrics.avro", "fields": [{"name": "groupId", "type": "string"}, {"name":
"piepelineId", "type": "string"}, {"name": "pipelineMainFolder", "type": "string"}, {"name":
"cohortName", "type": "string"}, {"name": "startDate", "type": "string"}, {"name": "lastStepDate",
"type": ["null", "string"]}, {"name": "pipelineParameters", "type": {"type": "map", "values":
"string"}}, {"name": "tieringConfigurationFile", "type": "string"}, {"name": "softwareVersions",
"type": ["null", {"type": "map", "values": "string"}]}, {"name": "dataBaseVersions", "type":
["null", {"type": "map", "values": "string"}]}, {"name": "listOfSamples", "type": ["null", {"type":
"array", "items": "string"}]}, {"name": "readyToDispatch", "type": "boolean"}, {"name": "steps",
"type": ["null", {"type": "array", "items": {"type": "record", "name": "Step", "fields": [{"name":
"stepName", "type": "string"}, {"name": "date", "type": "string"}, {"name": "status", "type":
{"type": "enum", "name": "StepStatus", "symbols": ["failed", "ready"]}}]}}]}, {"name":
"listOfFilesToDispatch", "type": ["null", {"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", "string"]}]}}]}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "cohortName",
        "dataBaseVersions",
        "groupId",
        "lastStepDate",
        "listOfFilesToDispatch",
        "listOfSamples",
        "piepelineId",
        "pipelineMainFolder",
        "pipelineParameters",
        "readyToDispatch",
        "softwareVersions",
        "startDate",
        "steps",
        "tieringConfigurationFile",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'cohortName', 'dataBaseVersions', 'groupId', 'lastStepDate',
        'listOfFilesToDispatch', 'listOfSamples', 'piepelineId',
        'pipelineMainFolder', 'pipelineParameters', 'readyToDispatch',
        'softwareVersions', 'startDate', 'steps',
        'tieringConfigurationFile'
    ]

    def __init__(self, **kwargs):
        self.cohortName = kwargs.get(
            'cohortName', None)
        self.dataBaseVersions = kwargs.get(
            'dataBaseVersions', None)
        self.groupId = kwargs.get(
            'groupId', None)
        self.lastStepDate = kwargs.get(
            'lastStepDate', None)
        self.listOfFilesToDispatch = kwargs.get(
            'listOfFilesToDispatch', None)
        self.listOfSamples = kwargs.get(
            'listOfSamples', None)
        self.piepelineId = kwargs.get(
            'piepelineId', None)
        self.pipelineMainFolder = kwargs.get(
            'pipelineMainFolder', None)
        self.pipelineParameters = kwargs.get(
            'pipelineParameters', None)
        self.readyToDispatch = kwargs.get(
            'readyToDispatch', None)
        self.softwareVersions = kwargs.get(
            'softwareVersions', None)
        self.startDate = kwargs.get(
            'startDate', None)
        self.steps = kwargs.get(
            'steps', None)
        self.tieringConfigurationFile = kwargs.get(
            'tieringConfigurationFile', 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 Referral(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "Referral", "namespace": "org.gel.models.participant.avro", "fields":
[{"name": "referralId", "type": "string", "doc": ""}, {"name": "referralUid", "type": "string",
"doc": ""}, {"name": "referralTests", "type": {"type": "array", "items": {"type": "record", "name":
"ReferralTest", "fields": [{"name": "referralTestId", "type": "string", "doc": ""}, {"name":
"referralTestOrderingDate", "type": ["null", {"type": "record", "name": "Date", "doc": "", "fields":
[{"name": "year", "type": "int", "doc": ""}, {"name": "month", "type": ["null", "int"], "doc": ""},
{"name": "day", "type": ["null", "int"], "doc": ""}]}], "doc": ""}, {"name":
"clinicalIndicationTest", "type": {"type": "record", "name": "ClinicalIndicationTest", "fields":
[{"name": "clinicalIndicationTestTypeId", "type": "string", "doc": ""}, {"name":
"clinicalIndicationTestTypeCode", "type": "string", "doc": ""}, {"name": "testTypeId", "type":
"string", "doc": ""}, {"name": "testTypeName", "type": "string", "doc": ""}, {"name": "technology",
"type": {"type": "record", "name": "Technology", "fields": [{"name": "testTechnologyId", "type":
"string", "doc": ""}, {"name": "testTechnologyDescription", "type": "string", "doc": ""}]}, "doc":
""}]}, "doc": ""}, {"name": "tumourSamples", "type": ["null", {"type": "array", "items": {"type":
"record", "name": "TumourSample", "doc": "", "fields": [{"name": "sampleId", "type": "string",
"doc": ""}, {"name": "labSampleId", "type": "int", "doc": ""}, {"name": "LDPCode", "type": ["null",
"string"], "doc": ""}, {"name": "tumourId", "type": ["null", "string"], "doc": ""}, {"name":
"programmePhase", "type": ["null", "string"], "doc": ""}, {"name": "diseaseType", "type": ["null",
{"type": "enum", "name": "diseaseType", "symbols": ["ADULT_GLIOMA", "BLADDER", "BREAST",
"CARCINOMA_OF_UNKNOWN_PRIMARY", "CHILDHOOD", "COLORECTAL", "ENDOCRINE", "ENDOMETRIAL_CARCINOMA",
"HAEMONC", "HEPATOPANCREATOBILIARY", "LUNG", "MALIGNANT_MELANOMA", "NASOPHARYNGEAL",
"ORAL_OROPHARYNGEAL", "OVARIAN", "PROSTATE", "RENAL", "SARCOMA", "SINONASAL",
"TESTICULAR_GERM_CELL_TUMOURS", "UPPER_GASTROINTESTINAL", "OTHER",
"NON_HODGKINS_B_CELL_LYMPHOMA_LOW_MOD_GRADE", "CLASSICAL_HODGKINS",
"NODULAR_LYMPHOCYTE_PREDOMINANT_HODGKINS", "T_CELL_LYMPHOMA"]}], "doc": ""}, {"name":
"diseaseSubType", "type": ["null", "string"], "doc": ""}, {"name": "haematologicalCancer", "type":
["null", "boolean"], "doc": ""}, {"name": "haematologicalCancerLineage", "type": ["null", {"type":
"enum", "name": "HaematologicalCancerLineage", "symbols": ["MYELOID", "LYMPHOID", "UNKNOWN"]}],
"doc": ""}, {"name": "clinicalSampleDateTime", "type": ["null", "string"], "doc": ""}, {"name":
"tumourType", "type": ["null", "string"], "doc": ""}, {"name": "tumourContent", "type": ["null",
{"type": "enum", "name": "TumourContent", "symbols": ["High", "Medium", "Low"]}], "doc": ""},
{"name": "tumourContentPercentage", "type": ["null", "float"], "doc": ""}, {"name": "source",
"type": ["null", {"type": "enum", "name": "SampleSource", "doc": "", "symbols": ["AMNIOTIC_FLUID",
"BLOOD", "BONE_MARROW", "BONE_MARROW_ASPIRATE_TUMOUR_CELLS",
"BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS", "BUCCAL_SWAB", "CHORIONIC_VILLUS_SAMPLE", "FIBROBLAST",
"FLUID", "FRESH_TISSUE_IN_CULTURE_MEDIUM", "OTHER", "SALIVA", "TISSUE", "TUMOUR", "URINE"]}], "doc":
""}, {"name": "preparationMethod", "type": ["null", {"type": "enum", "name": "PreparationMethod",
"doc": "", "symbols": ["ASPIRATE", "CD128_SORTED_CELLS", "CD138_SORTED_CELLS", "EDTA", "FF", "FFPE",
"LI_HEP", "ORAGENE"]}], "doc": ""}, {"name": "tissueSource", "type": ["null", "string"], "doc": ""},
{"name": "product", "type": ["null", {"type": "enum", "name": "Product", "symbols": ["DNA",
"RNA"]}], "doc": ""}, {"name": "sampleMorphologies", "type": ["null", {"type": "array", "items":
{"type": "record", "name": "Morphology", "fields": [{"name": "id", "type": ["null", "string"],
"doc": ""}, {"name": "name", "type": ["null", "string"], "doc": ""}, {"name": "value", "type":
["null", "string"], "doc": ""}, {"name": "version", "type": ["null", "string"], "doc": ""}]}}],
"doc": ""}, {"name": "sampleTopographies", "type": ["null", {"type": "array", "items": {"type":
"record", "name": "Topography", "fields": [{"name": "id", "type": ["null", "string"], "doc": ""},
{"name": "name", "type": ["null", "string"], "doc": ""}, {"name": "value", "type": ["null",
"string"], "doc": ""}, {"name": "version", "type": ["null", "string"], "doc": ""}]}}], "doc": ""},
{"name": "sampleUid", "type": ["null", "string"], "doc": ""}, {"name": "participantId", "type":
["null", "string"], "doc": ""}, {"name": "participantUid", "type": ["null", "string"], "doc": ""},
{"name": "maskedPid", "type": ["null", "string"], "doc": ""}, {"name": "method", "type": ["null",
{"type": "enum", "name": "Method", "doc": "", "symbols": ["ASPIRATE", "BIOPSY", "NOT_APPLICABLE",
"RESECTION", "SORTED_OTHER", "UNKNOWN", "UNSORTED", "CD138_SORTED"]}], "doc": ""}, {"name":
"storageMedium", "type": ["null", {"type": "enum", "name": "StorageMedium", "doc": "", "symbols":
["EDTA", "FF", "LI_HEP", "ORAGENE", "FFPE"]}], "doc": ""}, {"name": "sampleType", "type": ["null",
"string"], "doc": ""}, {"name": "sampleState", "type": ["null", "string"], "doc": ""}]}}], "doc":
""}, {"name": "germlineSamples", "type": ["null", {"type": "array", "items": {"type": "record",
"name": "GermlineSample", "doc": "", "fields": [{"name": "sampleId", "type": "string", "doc": ""},
{"name": "labSampleId", "type": "int", "doc": ""}, {"name": "LDPCode", "type": ["null", "string"],
"doc": ""}, {"name": "source", "type": ["null", "SampleSource"], "doc": ""}, {"name": "product",
"type": ["null", "Product"], "doc": ""}, {"name": "preparationMethod", "type": ["null",
"PreparationMethod"], "doc": ""}, {"name": "programmePhase", "type": ["null", {"type": "enum",
"name": "ProgrammePhase", "symbols": ["CRUK", "OXFORD", "CLL", "IIP", "MAIN", "EXPT"]}], "doc": ""},
{"name": "clinicalSampleDateTime", "type": ["null", "string"], "doc": ""}, {"name": "participantId",
"type": ["null", "string"]}, {"name": "participantUid", "type": ["null", "string"], "doc": ""},
{"name": "sampleUid", "type": ["null", "string"]}, {"name": "maskedPid", "type": ["null",
"string"]}, {"name": "method", "type": ["null", "Method"], "doc": ""}, {"name": "storageMedium",
"type": ["null", "StorageMedium"], "doc": ""}, {"name": "sampleType", "type": ["null", "string"],
"doc": ""}, {"name": "sampleState", "type": ["null", "string"], "doc": ""}]}}], "doc": ""}, {"name":
"analysisPanels", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"AnalysisPanel", "doc": "", "fields": [{"name": "specificDisease", "type": "string", "doc": ""},
{"name": "panelName", "type": "string", "doc": ""}, {"name": "panelId", "type": ["null", "string"],
"doc": ""}, {"name": "panelVersion", "type": ["null", "string"], "doc": ""}, {"name":
"reviewOutcome", "type": ["null", "string"], "doc": ""}, {"name": "multipleGeneticOrigins", "type":
["null", "string"], "doc": ""}]}}], "doc": ""}, {"name": "interpreter", "type": {"type": "record",
"name": "OrganisationNgis", "fields": [{"name": "organisationId", "type": "string", "doc": ""},
{"name": "organisationCode", "type": "string", "doc": ""}, {"name": "organisationName", "type":
"string", "doc": ""}, {"name": "organisationNationalGroupingId", "type": "string", "doc": ""},
{"name": "organisationNationalGroupingName", "type": "string", "doc": ""}]}, "doc": ""}, {"name":
"processingLab", "type": "OrganisationNgis", "doc": ""}, {"name": "priority", "type": {"type":
"enum", "name": "Priority", "doc": "", "symbols": ["low", "routine", "urgent"]}, "doc": ""},
{"name": "pipelineStartDate", "type": ["null", "Date"], "doc": ""}, {"name": "diseasePenetrances",
"type": ["null", {"type": "array", "items": {"type": "record", "name": "DiseasePenetrance", "doc":
"", "fields": [{"name": "specificDisease", "type": "string", "doc": ""}, {"name": "penetrance",
"type": {"type": "enum", "name": "Penetrance", "doc": "", "symbols": ["complete", "incomplete"]},
"doc": ""}]}}], "doc": ""}, {"name": "matchedSamples", "type": ["null", {"type": "array", "items":
{"type": "record", "name": "MatchedSamples", "doc": "", "fields": [{"name": "germlineSampleId",
"type": ["null", "string"], "doc": ""}, {"name": "tumourSampleId", "type": ["null", "string"],
"doc": ""}]}}], "doc": ""}]}}, "doc": ""}, {"name": "requester", "type": "OrganisationNgis", "doc":
""}, {"name": "orderingDate", "type": ["null", "Date"], "doc": ""}, {"name": "pedigree", "type":
["null", {"type": "record", "name": "Pedigree", "doc": "", "fields": [{"name": "versionControl",
"type": ["null", {"type": "record", "name": "VersionControl", "fields": [{"name":
"GitVersionControl", "type": "string", "doc": "", "default": "1.2.0"}]}], "doc": ""}, {"name":
"LDPCode", "type": ["null", "string"], "doc": ""}, {"name": "familyId", "type": "string", "doc":
""}, {"name": "members", "type": {"type": "array", "items": {"type": "record", "name":
"PedigreeMember", "doc": "", "fields": [{"name": "pedigreeId", "type": ["null", "int"], "doc": ""},
{"name": "isProband", "type": ["null", "boolean"], "doc": ""}, {"name": "participantId", "type":
["null", "string"], "doc": ""}, {"name": "participantQCState", "type": ["null", {"type": "enum",
"name": "ParticipantQCState", "doc": "", "symbols": ["noState",
"passedMedicalReviewReadyForInterpretation", "passedMedicalReviewNotReadyForInterpretation",
"queryToGel", "queryToGMC", "failed"]}], "doc": ""}, {"name": "gelSuperFamilyId", "type": ["null",
"string"], "doc": ""}, {"name": "sex", "type": {"type": "enum", "name": "Sex", "doc": "", "symbols":
["MALE", "FEMALE", "UNKNOWN"]}, "doc": ""}, {"name": "personKaryotypicSex", "type": ["null",
{"type": "enum", "name": "PersonKaryotipicSex", "doc": "", "symbols": ["UNKNOWN", "XX", "XY", "XO",
"XXY", "XXX", "XXYY", "XXXY", "XXXX", "XYY", "OTHER"]}], "doc": ""}, {"name": "yearOfBirth", "type":
["null", "int"], "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": ["null", {"type": "enum", "name": "AdoptedStatus", "doc": "", "symbols":
["notadopted", "adoptedin", "adoptedout"]}], "doc": ""}, {"name": "lifeStatus", "type": ["null",
{"type": "enum", "name": "LifeStatus", "doc": "", "symbols": ["ALIVE", "ABORTED", "DECEASED",
"UNBORN", "STILLBORN", "MISCARRIAGE"]}], "doc": ""}, {"name": "consanguineousParents", "type":
["null", "TernaryOption"], "doc": ""}, {"name": "affectionStatus", "type": ["null", {"type": "enum",
"name": "AffectionStatus", "doc": "", "symbols": ["UNAFFECTED", "AFFECTED", "UNCERTAIN"]}], "doc":
""}, {"name": "disorderList", "type": ["null", {"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", "float"], "doc":
""}]}}], "doc": ""}, {"name": "hpoTermList", "type": ["null", {"type": "array", "items": {"type":
"record", "name": "HpoTerm", "doc": "", "fields": [{"name": "term", "type": "string", "doc": ""},
{"name": "termPresence", "type": ["null", "TernaryOption"], "doc": ""}, {"name": "hpoBuildNumber",
"type": ["null", "string"], "doc": ""}, {"name": "modifiers", "type": ["null", {"type": "array",
"items": {"type": "record", "name": "HpoTermModifiers", "doc": "", "fields": [{"name": "laterality",
"type": ["null", {"type": "enum", "name": "Laterality", "symbols": ["RIGHT", "UNILATERAL",
"BILATERAL", "LEFT"]}]}, {"name": "progression", "type": ["null", {"type": "enum", "name":
"Progression", "symbols": ["PROGRESSIVE", "NONPROGRESSIVE"]}]}, {"name": "severity", "type":
["null", {"type": "enum", "name": "Severity", "symbols": ["BORDERLINE", "MILD", "MODERATE",
"SEVERE", "PROFOUND"]}]}, {"name": "spatialPattern", "type": ["null", {"type": "enum", "name":
"SpatialPattern", "symbols": ["DISTAL", "GENERALIZED", "LOCALIZED", "PROXIMAL"]}]}, {"name":
"hpoModifierCode", "type": ["null", "string"]}, {"name": "hpoModifierVersion", "type": ["null",
"string"]}]}}], "doc": ""}, {"name": "ageOfOnset", "type": ["null", {"type": "enum", "name":
"AgeOfOnset", "symbols": ["EMBRYONAL_ONSET", "FETAL_ONSET", "NEONATAL_ONSET", "INFANTILE_ONSET",
"CHILDHOOD_ONSET", "JUVENILE_ONSET", "YOUNG_ADULT_ONSET", "LATE_ONSET", "MIDDLE_AGE_ONSET"]}],
"doc": ""}]}}], "doc": ""}, {"name": "ancestries", "type": ["null", {"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":
"double", "doc": ""}]}}], "doc": ""}]}], "doc": ""}, {"name": "consentStatus", "type": ["null",
{"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": "testConsentStatus", "type": ["null", {"type": "record",
"name": "GmsConsentStatus", "doc": "", "fields": [{"name": "programmeConsent", "type": {"type":
"enum", "name": "GenericConsent", "doc": "", "symbols": ["yes", "no", "undefined",
"not_applicable"]}, "doc": ""}, {"name": "primaryFindingConsent", "type": "GenericConsent", "doc":
""}, {"name": "researchConsent", "type": "GenericConsent", "doc": ""}, {"name":
"healthRelatedFindingConsent", "type": "GenericConsent", "doc": ""}, {"name":
"carrierStatusConsent", "type": "GenericConsent", "doc": ""}, {"name":
"pharmacogenomicsFindingConsent", "type": "GenericConsent", "doc": ""}]}], "doc": ""}, {"name":
"samples", "type": ["null", {"type": "array", "items": "GermlineSample"}], "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":
"lastMenstrualPeriod", "type": ["null", "string"], "doc": ""}, {"name": "diagnosticDetails", "type":
["null", {"type": "array", "items": {"type": "record", "name": "DiagnosticDetail", "fields":
[{"name": "diagnosisCodingSystem", "type": "string", "doc": ""}, {"name":
"diagnosisCodingSystemVersion", "type": ["null", "string"], "doc": ""}, {"name": "diagnosisCode",
"type": "string", "doc": ""}, {"name": "diagnosisDescription", "type": ["null", "string"], "doc":
""}, {"name": "diagnosisCertainty", "type": ["null", "string"], "doc": ""}, {"name":
"ageAtOnsetInYears", "type": ["null", "float"], "doc": ""}]}}], "doc": ""}, {"name":
"participantUid", "type": ["null", "string"], "doc": ""}, {"name": "clinicalEthnicities", "type":
["null", {"type": "array", "items": {"type": "enum", "name": "ClinicalEthnicity", "doc": "",
"symbols": ["A", "B", "C", "C2", "C3", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CJ", "CK",
"CL", "CM", "CN", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "D", "E", "F", "G",
"GA", "GB", "GC", "GD", "GE", "GF", "H", "J", "K", "L", "LA", "LB", "LC", "LD", "LE", "LF", "LG",
"LH", "LJ", "LK", "M", "N", "P", "PA", "PB", "PC", "PD", "PE", "R", "S", "S1", "S2", "SA", "SB",
"SC", "SD", "SE", "Z"]}}], "doc": ""}, {"name": "previousTreatment", "type": ["null", {"type":
"array", "items": {"type": "record", "name": "PreviousTreatment", "doc": "", "fields": [{"name":
"previousTreatmentType", "type": ["null", "string"]}, {"name": "previousTreatmentName", "type":
["null", "string"]}, {"name": "previousTreatmentDate", "type": ["null", "Date"]}]}}], "doc": ""}]}},
"doc": ""}, {"name": "analysisPanels", "type": ["null", {"type": "array", "items":
"AnalysisPanel"}], "doc": ""}, {"name": "diseasePenetrances", "type": ["null", {"type": "array",
"items": "DiseasePenetrance"}], "doc": ""}, {"name": "readyForAnalysis", "type": "boolean", "doc":
""}, {"name": "familyQCState", "type": ["null", {"type": "enum", "name": "FamilyQCState", "doc": "",
"symbols": ["noState", "passedMedicalReviewReadyForInterpretation",
"passedMedicalReviewNotReadyForInterpretation", "queryToGel", "queryToGMC", "failed"]}], "doc":
""}]}], "doc": ""}, {"name": "cancerParticipant", "type": ["null", {"type": "record", "name":
"CancerParticipant", "doc": "", "fields": [{"name": "yearOfBirth", "type": ["null", "int"], "doc":
""}, {"name": "morphology", "type": ["null", {"type": "array", "items": "string"}], "doc": ""},
{"name": "readyForAnalysis", "type": "boolean", "doc": ""}, {"name": "consentStatus", "type":
["null", "ConsentStatus"], "doc": ""}, {"name": "testConsentStatus", "type": ["null",
"GmsConsentStatus"], "doc": ""}, {"name": "center", "type": ["null", "string"], "doc": ""}, {"name":
"individualId", "type": ["null", "string"], "doc": ""}, {"name": "participantId", "type": ["null",
"string"], "doc": ""}, {"name": "primaryDiagnosisDisease", "type": ["null", {"type": "array",
"items": "string"}], "doc": ""}, {"name": "primaryDiagnosisSubDisease", "type": ["null", {"type":
"array", "items": "string"}], "doc": ""}, {"name": "sex", "type": "Sex", "doc": ""}, {"name":
"additionalInformation", "type": ["null", {"type": "map", "values": "string"}], "doc": ""}, {"name":
"assignedICD10", "type": ["null", {"type": "array", "items": "string"}], "doc": ""}, {"name":
"tumourSamples", "type": ["null", {"type": "array", "items": "TumourSample"}], "doc": ""}, {"name":
"germlineSamples", "type": ["null", {"type": "array", "items": "GermlineSample"}], "doc": ""},
{"name": "versionControl", "type": ["null", "VersionControl"], "doc": ""}, {"name":
"participantUid", "type": ["null", "string"], "doc": ""}, {"name": "tumours", "type": ["null",
{"type": "array", "items": {"type": "record", "name": "Tumour", "fields": [{"name": "tumourId",
"type": "string", "doc": ""}, {"name": "tumourLocalId", "type": "string", "doc": ""}, {"name":
"tumourType", "type": {"type": "enum", "name": "TumourType", "doc": "", "symbols": ["BRAIN_TUMOUR",
"HAEMATOLOGICAL_MALIGNANCY_SOLID_SAMPLE", "HAEMATOLOGICAL_MALIGNANCY_LIQUID_SAMPLE",
"SOLID_TUMOUR_METASTATIC", "SOLID_TUMOUR_PRIMARY", "SOLID_TUMOUR", "UNKNOWN"]}, "doc": ""}, {"name":
"tumourParentId", "type": ["null", "string"], "doc": ""}, {"name": "tumourDiagnosisDate", "type":
["null", "Date"], "doc": ""}, {"name": "tumourDescription", "type": ["null", "string"], "doc": ""},
{"name": "tumourMorphologies", "type": ["null", {"type": "array", "items": "Morphology"}], "doc":
""}, {"name": "tumourTopographies", "type": ["null", {"type": "array", "items": "Topography"}],
"doc": ""}, {"name": "tumourPrimaryTopographies", "type": ["null", {"type": "array", "items":
"Topography"}], "doc": ""}, {"name": "tumourGrade", "type": ["null", "string"], "doc": ""}, {"name":
"tumourStage", "type": ["null", "string"], "doc": ""}, {"name": "tumourPrognosticScore", "type":
["null", "string"], "doc": ""}, {"name": "tumourPresentation", "type": ["null", {"type": "enum",
"name": "TumourPresentation", "symbols": ["FIRST_PRESENTATION", "RECURRENCE", "UNKNOWN"]}], "doc":
""}, {"name": "primaryOrMetastatic", "type": ["null", {"type": "enum", "name":
"PrimaryOrMetastatic", "symbols": ["PRIMARY", "METASTATIC", "UNKNOWN", "NOT_APPLICABLE"]}], "doc":
""}]}}], "doc": ""}, {"name": "previousTreatment", "type": ["null", {"type": "array", "items":
"PreviousTreatment"}], "doc": ""}]}], "doc": ""}, {"name": "clinicalIndication", "type": {"type":
"record", "name": "ClinicalIndication", "fields": [{"name": "clinicalIndicationUid", "type":
"string", "doc": ""}, {"name": "clinicalIndicationCode", "type": "string", "doc": ""}, {"name":
"clinicalIndicationFullName", "type": "string", "doc": ""}, {"name":
"clinicalIndicationVersionNumber", "type": ["null", "string"], "doc": ""}]}, "doc": ""}, {"name":
"collection", "type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "cancerParticipant",
        "clinicalIndication",
        "collection",
        "orderingDate",
        "pedigree",
        "referralId",
        "referralTests",
        "referralUid",
        "requester",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'cancerParticipant': CancerParticipant,
            'clinicalIndication': ClinicalIndication,
            'orderingDate': Date,
            'pedigree': Pedigree,
            'referralTests': ReferralTest,
            'requester': OrganisationNgis,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'cancerParticipant': CancerParticipant,
            'clinicalIndication': ClinicalIndication,
            'orderingDate': Date,
            'pedigree': Pedigree,
            'referralTests': ReferralTest,
            'requester': OrganisationNgis,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'cancerParticipant', 'clinicalIndication', 'collection',
        'orderingDate', 'pedigree', 'referralId', 'referralTests',
        'referralUid', 'requester'
    ]

    def __init__(self, **kwargs):
        self.cancerParticipant = kwargs.get(
            'cancerParticipant', None)
        self.clinicalIndication = kwargs.get(
            'clinicalIndication', ClinicalIndication())
        self.collection = kwargs.get(
            'collection', None)
        self.orderingDate = kwargs.get(
            'orderingDate', None)
        self.pedigree = kwargs.get(
            'pedigree', None)
        self.referralId = kwargs.get(
            'referralId', None)
        self.referralTests = kwargs.get(
            'referralTests', None)
        self.referralUid = kwargs.get(
            'referralUid', None)
        self.requester = kwargs.get(
            'requester', OrganisationNgis())


class ReferralTest(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "ReferralTest", "namespace": "org.gel.models.participant.avro", "fields":
[{"name": "referralTestId", "type": "string", "doc": ""}, {"name": "referralTestOrderingDate",
"type": ["null", {"type": "record", "name": "Date", "doc": "", "fields": [{"name": "year", "type":
"int", "doc": ""}, {"name": "month", "type": ["null", "int"], "doc": ""}, {"name": "day", "type":
["null", "int"], "doc": ""}]}], "doc": ""}, {"name": "clinicalIndicationTest", "type": {"type":
"record", "name": "ClinicalIndicationTest", "fields": [{"name": "clinicalIndicationTestTypeId",
"type": "string", "doc": ""}, {"name": "clinicalIndicationTestTypeCode", "type": "string", "doc":
""}, {"name": "testTypeId", "type": "string", "doc": ""}, {"name": "testTypeName", "type": "string",
"doc": ""}, {"name": "technology", "type": {"type": "record", "name": "Technology", "fields":
[{"name": "testTechnologyId", "type": "string", "doc": ""}, {"name": "testTechnologyDescription",
"type": "string", "doc": ""}]}, "doc": ""}]}, "doc": ""}, {"name": "tumourSamples", "type": ["null",
{"type": "array", "items": {"type": "record", "name": "TumourSample", "doc": "", "fields": [{"name":
"sampleId", "type": "string", "doc": ""}, {"name": "labSampleId", "type": "int", "doc": ""},
{"name": "LDPCode", "type": ["null", "string"], "doc": ""}, {"name": "tumourId", "type": ["null",
"string"], "doc": ""}, {"name": "programmePhase", "type": ["null", "string"], "doc": ""}, {"name":
"diseaseType", "type": ["null", {"type": "enum", "name": "diseaseType", "symbols": ["ADULT_GLIOMA",
"BLADDER", "BREAST", "CARCINOMA_OF_UNKNOWN_PRIMARY", "CHILDHOOD", "COLORECTAL", "ENDOCRINE",
"ENDOMETRIAL_CARCINOMA", "HAEMONC", "HEPATOPANCREATOBILIARY", "LUNG", "MALIGNANT_MELANOMA",
"NASOPHARYNGEAL", "ORAL_OROPHARYNGEAL", "OVARIAN", "PROSTATE", "RENAL", "SARCOMA", "SINONASAL",
"TESTICULAR_GERM_CELL_TUMOURS", "UPPER_GASTROINTESTINAL", "OTHER",
"NON_HODGKINS_B_CELL_LYMPHOMA_LOW_MOD_GRADE", "CLASSICAL_HODGKINS",
"NODULAR_LYMPHOCYTE_PREDOMINANT_HODGKINS", "T_CELL_LYMPHOMA"]}], "doc": ""}, {"name":
"diseaseSubType", "type": ["null", "string"], "doc": ""}, {"name": "haematologicalCancer", "type":
["null", "boolean"], "doc": ""}, {"name": "haematologicalCancerLineage", "type": ["null", {"type":
"enum", "name": "HaematologicalCancerLineage", "symbols": ["MYELOID", "LYMPHOID", "UNKNOWN"]}],
"doc": ""}, {"name": "clinicalSampleDateTime", "type": ["null", "string"], "doc": ""}, {"name":
"tumourType", "type": ["null", "string"], "doc": ""}, {"name": "tumourContent", "type": ["null",
{"type": "enum", "name": "TumourContent", "symbols": ["High", "Medium", "Low"]}], "doc": ""},
{"name": "tumourContentPercentage", "type": ["null", "float"], "doc": ""}, {"name": "source",
"type": ["null", {"type": "enum", "name": "SampleSource", "doc": "", "symbols": ["AMNIOTIC_FLUID",
"BLOOD", "BONE_MARROW", "BONE_MARROW_ASPIRATE_TUMOUR_CELLS",
"BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS", "BUCCAL_SWAB", "CHORIONIC_VILLUS_SAMPLE", "FIBROBLAST",
"FLUID", "FRESH_TISSUE_IN_CULTURE_MEDIUM", "OTHER", "SALIVA", "TISSUE", "TUMOUR", "URINE"]}], "doc":
""}, {"name": "preparationMethod", "type": ["null", {"type": "enum", "name": "PreparationMethod",
"doc": "", "symbols": ["ASPIRATE", "CD128_SORTED_CELLS", "CD138_SORTED_CELLS", "EDTA", "FF", "FFPE",
"LI_HEP", "ORAGENE"]}], "doc": ""}, {"name": "tissueSource", "type": ["null", "string"], "doc": ""},
{"name": "product", "type": ["null", {"type": "enum", "name": "Product", "symbols": ["DNA",
"RNA"]}], "doc": ""}, {"name": "sampleMorphologies", "type": ["null", {"type": "array", "items":
{"type": "record", "name": "Morphology", "fields": [{"name": "id", "type": ["null", "string"],
"doc": ""}, {"name": "name", "type": ["null", "string"], "doc": ""}, {"name": "value", "type":
["null", "string"], "doc": ""}, {"name": "version", "type": ["null", "string"], "doc": ""}]}}],
"doc": ""}, {"name": "sampleTopographies", "type": ["null", {"type": "array", "items": {"type":
"record", "name": "Topography", "fields": [{"name": "id", "type": ["null", "string"], "doc": ""},
{"name": "name", "type": ["null", "string"], "doc": ""}, {"name": "value", "type": ["null",
"string"], "doc": ""}, {"name": "version", "type": ["null", "string"], "doc": ""}]}}], "doc": ""},
{"name": "sampleUid", "type": ["null", "string"], "doc": ""}, {"name": "participantId", "type":
["null", "string"], "doc": ""}, {"name": "participantUid", "type": ["null", "string"], "doc": ""},
{"name": "maskedPid", "type": ["null", "string"], "doc": ""}, {"name": "method", "type": ["null",
{"type": "enum", "name": "Method", "doc": "", "symbols": ["ASPIRATE", "BIOPSY", "NOT_APPLICABLE",
"RESECTION", "SORTED_OTHER", "UNKNOWN", "UNSORTED", "CD138_SORTED"]}], "doc": ""}, {"name":
"storageMedium", "type": ["null", {"type": "enum", "name": "StorageMedium", "doc": "", "symbols":
["EDTA", "FF", "LI_HEP", "ORAGENE", "FFPE"]}], "doc": ""}, {"name": "sampleType", "type": ["null",
"string"], "doc": ""}, {"name": "sampleState", "type": ["null", "string"], "doc": ""}]}}], "doc":
""}, {"name": "germlineSamples", "type": ["null", {"type": "array", "items": {"type": "record",
"name": "GermlineSample", "doc": "", "fields": [{"name": "sampleId", "type": "string", "doc": ""},
{"name": "labSampleId", "type": "int", "doc": ""}, {"name": "LDPCode", "type": ["null", "string"],
"doc": ""}, {"name": "source", "type": ["null", "SampleSource"], "doc": ""}, {"name": "product",
"type": ["null", "Product"], "doc": ""}, {"name": "preparationMethod", "type": ["null",
"PreparationMethod"], "doc": ""}, {"name": "programmePhase", "type": ["null", {"type": "enum",
"name": "ProgrammePhase", "symbols": ["CRUK", "OXFORD", "CLL", "IIP", "MAIN", "EXPT"]}], "doc": ""},
{"name": "clinicalSampleDateTime", "type": ["null", "string"], "doc": ""}, {"name": "participantId",
"type": ["null", "string"]}, {"name": "participantUid", "type": ["null", "string"], "doc": ""},
{"name": "sampleUid", "type": ["null", "string"]}, {"name": "maskedPid", "type": ["null",
"string"]}, {"name": "method", "type": ["null", "Method"], "doc": ""}, {"name": "storageMedium",
"type": ["null", "StorageMedium"], "doc": ""}, {"name": "sampleType", "type": ["null", "string"],
"doc": ""}, {"name": "sampleState", "type": ["null", "string"], "doc": ""}]}}], "doc": ""}, {"name":
"analysisPanels", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"AnalysisPanel", "doc": "", "fields": [{"name": "specificDisease", "type": "string", "doc": ""},
{"name": "panelName", "type": "string", "doc": ""}, {"name": "panelId", "type": ["null", "string"],
"doc": ""}, {"name": "panelVersion", "type": ["null", "string"], "doc": ""}, {"name":
"reviewOutcome", "type": ["null", "string"], "doc": ""}, {"name": "multipleGeneticOrigins", "type":
["null", "string"], "doc": ""}]}}], "doc": ""}, {"name": "interpreter", "type": {"type": "record",
"name": "OrganisationNgis", "fields": [{"name": "organisationId", "type": "string", "doc": ""},
{"name": "organisationCode", "type": "string", "doc": ""}, {"name": "organisationName", "type":
"string", "doc": ""}, {"name": "organisationNationalGroupingId", "type": "string", "doc": ""},
{"name": "organisationNationalGroupingName", "type": "string", "doc": ""}]}, "doc": ""}, {"name":
"processingLab", "type": "OrganisationNgis", "doc": ""}, {"name": "priority", "type": {"type":
"enum", "name": "Priority", "doc": "", "symbols": ["low", "routine", "urgent"]}, "doc": ""},
{"name": "pipelineStartDate", "type": ["null", "Date"], "doc": ""}, {"name": "diseasePenetrances",
"type": ["null", {"type": "array", "items": {"type": "record", "name": "DiseasePenetrance", "doc":
"", "fields": [{"name": "specificDisease", "type": "string", "doc": ""}, {"name": "penetrance",
"type": {"type": "enum", "name": "Penetrance", "doc": "", "symbols": ["complete", "incomplete"]},
"doc": ""}]}}], "doc": ""}, {"name": "matchedSamples", "type": ["null", {"type": "array", "items":
{"type": "record", "name": "MatchedSamples", "doc": "", "fields": [{"name": "germlineSampleId",
"type": ["null", "string"], "doc": ""}, {"name": "tumourSampleId", "type": ["null", "string"],
"doc": ""}]}}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "analysisPanels",
        "clinicalIndicationTest",
        "diseasePenetrances",
        "germlineSamples",
        "interpreter",
        "matchedSamples",
        "pipelineStartDate",
        "priority",
        "processingLab",
        "referralTestId",
        "referralTestOrderingDate",
        "tumourSamples",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'analysisPanels': AnalysisPanel,
            'clinicalIndicationTest': ClinicalIndicationTest,
            'diseasePenetrances': DiseasePenetrance,
            'germlineSamples': GermlineSample,
            'interpreter': OrganisationNgis,
            'matchedSamples': MatchedSamples,
            'pipelineStartDate': Date,
            'processingLab': OrganisationNgis,
            'referralTestOrderingDate': Date,
            'tumourSamples': TumourSample,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'analysisPanels': AnalysisPanel,
            'clinicalIndicationTest': ClinicalIndicationTest,
            'diseasePenetrances': DiseasePenetrance,
            'germlineSamples': GermlineSample,
            'interpreter': OrganisationNgis,
            'matchedSamples': MatchedSamples,
            'pipelineStartDate': Date,
            'processingLab': OrganisationNgis,
            'referralTestOrderingDate': Date,
            'tumourSamples': TumourSample,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'analysisPanels', 'clinicalIndicationTest',
        'diseasePenetrances', 'germlineSamples', 'interpreter',
        'matchedSamples', 'pipelineStartDate', 'priority',
        'processingLab', 'referralTestId', 'referralTestOrderingDate',
        'tumourSamples'
    ]

    def __init__(self, **kwargs):
        self.analysisPanels = kwargs.get(
            'analysisPanels', None)
        self.clinicalIndicationTest = kwargs.get(
            'clinicalIndicationTest', ClinicalIndicationTest())
        self.diseasePenetrances = kwargs.get(
            'diseasePenetrances', None)
        self.germlineSamples = kwargs.get(
            'germlineSamples', None)
        self.interpreter = kwargs.get(
            'interpreter', OrganisationNgis())
        self.matchedSamples = kwargs.get(
            'matchedSamples', None)
        self.pipelineStartDate = kwargs.get(
            'pipelineStartDate', None)
        self.priority = kwargs.get(
            'priority', None)
        self.processingLab = kwargs.get(
            'processingLab', OrganisationNgis())
        self.referralTestId = kwargs.get(
            'referralTestId', None)
        self.referralTestOrderingDate = kwargs.get(
            'referralTestOrderingDate', None)
        self.tumourSamples = kwargs.get(
            'tumourSamples', None)


class RelatednessPair(ProtocolElement):
    """
    Relatedness     ========================================
    """
    _schemaSource = """
{"type": "record", "name": "RelatednessPair", "namespace": "org.gel.models.metrics.avro", "doc": "",
"fields": [{"name": "sampleId1", "type": ["null", "string"], "doc": ""}, {"name": "sampleId2",
"type": ["null", "string"], "doc": ""}, {"name": "ibd0", "type": ["null", "double"], "doc": ""},
{"name": "ibd1", "type": ["null", "double"], "doc": ""}, {"name": "ibd2", "type": ["null",
"double"], "doc": ""}, {"name": "piHat", "type": ["null", "double"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "ibd0",
        "ibd1",
        "ibd2",
        "piHat",
        "sampleId1",
        "sampleId2",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'ibd0', 'ibd1', 'ibd2', 'piHat', 'sampleId1', 'sampleId2'
    ]

    def __init__(self, **kwargs):
        self.ibd0 = kwargs.get(
            'ibd0', None)
        self.ibd1 = kwargs.get(
            'ibd1', None)
        self.ibd2 = kwargs.get(
            'ibd2', None)
        self.piHat = kwargs.get(
            'piHat', None)
        self.sampleId1 = kwargs.get(
            'sampleId1', None)
        self.sampleId2 = kwargs.get(
            'sampleId2', None)


class ReportedVsGeneticChecks(ProtocolElement):
    """
    Reported versus Genetic checks object
    ========================================
    """
    _schemaSource = """
{"type": "record", "name": "ReportedVsGeneticChecks", "namespace": "org.gel.models.metrics.avro",
"doc": "", "fields": [{"name": "reportedVsGeneticSummary", "type": ["null", {"type": "record",
"name": "ReportedVsGeneticSummary", "fields": [{"name": "rvsgCheckVersion", "type": "string", "doc":
""}, {"name": "runDate", "type": "string", "doc": ""}, {"name": "genomeAssembly", "type": ["null",
{"type": "enum", "name": "SupportedAssembly", "doc": "", "symbols": ["GRCh37", "GRCh38"]}], "doc":
""}, {"name": "pathToDirectory", "type": "string", "doc": ""}, {"name": "numberOfMarkers", "type":
["null", "double"], "doc": ""}, {"name": "numberOfMarkersLE", "type": ["null", "double"], "doc":
""}, {"name": "mendelErrorsTool", "type": "string", "doc": ""}, {"name": "mendelErrorsToolVersion",
"type": "string", "doc": ""}, {"name": "relatednessTool", "type": "string", "doc": ""}, {"name":
"relatednessToolVersion", "type": "string", "doc": ""}, {"name": "samplesInfo", "type": {"type":
"array", "items": {"type": "record", "name": "SamplesInfo", "doc": "", "fields": [{"name":
"participantId", "type": "string", "doc": ""}, {"name": "sampleId", "type": "string", "doc": ""},
{"name": "deliveryId", "type": "string", "doc": ""}]}}, "doc": ""}, {"name": "jiraId", "type":
["null", "string"], "doc": ""}]}], "doc": ""}, {"name": "coverageBasedSex", "type": ["null",
{"type": "array", "items": {"type": "record", "name": "CoverageBasedSex", "doc": "", "fields":
[{"name": "sampleId", "type": ["null", "string"], "doc": ""}, {"name": "inferredKaryotype", "type":
["null", {"type": "enum", "name": "KaryotypicSex", "doc": "", "symbols": ["UNKNOWN", "XX", "XY",
"XO", "XXY", "XXX", "XXYY", "XXXY", "XXXX", "XYY", "OTHER"]}], "doc": ""}, {"name": "ratioChrX",
"type": ["null", "double"], "doc": ""}, {"name": "ratioChrY", "type": ["null", "double"], "doc":
""}, {"name": "avgCnvChrX", "type": ["null", "double"], "doc": ""}, {"name": "avgCnvChrY", "type":
["null", "double"], "doc": ""}, {"name": "reviewedKaryotype", "type": ["null", "KaryotypicSex"],
"doc": ""}]}}], "doc": ""}, {"name": "mendelianInconsistencies", "type": ["null", {"type": "record",
"name": "MendelianInconsistencies", "fields": [{"name": "perFamilyMendelErrors", "type": ["null",
{"type": "array", "items": {"type": "record", "name": "PerFamilyMendelErrors", "doc": "", "fields":
[{"name": "fatherId", "type": ["null", "string"], "doc": ""}, {"name": "motherId", "type": ["null",
"string"], "doc": ""}, {"name": "numberOfOffspring", "type": ["null", "double"], "doc": ""},
{"name": "numberOfMendelErrors", "type": ["null", "double"], "doc": ""}]}}], "doc": ""}, {"name":
"individualMendelErrors", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"IndividualMendelErrors", "fields": [{"name": "sampleId", "type": ["null", "string"], "doc": ""},
{"name": "numberOfMendelErrors", "type": ["null", "double"], "doc": ""}, {"name":
"rateOfMendelErrors", "type": ["null", "double"], "doc": ""}]}}], "doc": ""}, {"name":
"totalNumberOfMendelErrors", "type": ["null", {"type": "record", "name":
"TotalNumberOfMendelErrors", "fields": [{"name": "familyMendelErrors", "type": ["null", "double"],
"doc": ""}, {"name": "individualMendelErrors", "type": ["null", {"type": "array", "items": {"type":
"record", "name": "AggregatedIndividualMendelErrors", "fields": [{"name": "sampleId", "type":
["null", "string"], "doc": ""}, {"name": "totalnumberOfMendelErrors", "type": ["null", "double"],
"doc": ""}]}}], "doc": ""}]}], "doc": ""}, {"name": "locusMendelSummary", "type": ["null", {"type":
"array", "items": {"type": "record", "name": "LocusMendelSummary", "fields": [{"name": "sampleId",
"type": ["null", "string"], "doc": ""}, {"name": "chr", "type": ["null", "string"], "doc": ""},
{"name": "code", "type": ["null", "double"], "doc": ""}, {"name": "numberOfErrors", "type": ["null",
"double"], "doc": ""}]}}], "doc": ""}]}], "doc": ""}, {"name": "familyRelatedness", "type": ["null",
{"type": "record", "name": "FamilyRelatedness", "fields": [{"name": "relatedness", "type": ["null",
{"type": "array", "items": {"type": "record", "name": "RelatednessPair", "doc": "", "fields":
[{"name": "sampleId1", "type": ["null", "string"], "doc": ""}, {"name": "sampleId2", "type":
["null", "string"], "doc": ""}, {"name": "ibd0", "type": ["null", "double"], "doc": ""}, {"name":
"ibd1", "type": ["null", "double"], "doc": ""}, {"name": "ibd2", "type": ["null", "double"], "doc":
""}, {"name": "piHat", "type": ["null", "double"], "doc": ""}]}}], "doc": ""}]}], "doc": ""},
{"name": "evaluation", "type": ["null", {"type": "record", "name": "Evaluation", "doc": "",
"fields": [{"name": "coverageBasedSexCheck", "type": ["null", {"type": "array", "items": {"type":
"record", "name": "CoverageBasedSexCheck", "doc": "", "fields": [{"name": "sampleId", "type":
["null", "string"], "doc": ""}, {"name": "reportedPhenotypicSex", "type": ["null", {"type": "enum",
"name": "Sex", "doc": "", "symbols": ["UNKNOWN", "MALE", "FEMALE", "OTHER"]}], "doc": ""}, {"name":
"reportedKaryotypicSex", "type": ["null", "KaryotypicSex"], "doc": ""}, {"name":
"inferredSexKaryotype", "type": ["null", "KaryotypicSex"], "doc": ""}, {"name": "sexQuery", "type":
["null", {"type": "enum", "name": "Query", "doc": "", "symbols": ["yes", "no", "unknown",
"notTested"]}], "doc": ""}, {"name": "comments", "type": ["null", "string"], "doc": ""}]}}], "doc":
""}, {"name": "mendelianInconsistenciesCheck", "type": ["null", {"type": "array", "items": {"type":
"record", "name": "MendelianInconsistenciesCheck", "fields": [{"name": "sampleId", "type": ["null",
"string"], "doc": ""}, {"name": "mendelianInconsistenciesQuery", "type": ["null", "Query"], "doc":
""}, {"name": "comments", "type": ["null", "string"], "doc": ""}]}}], "doc": ""}, {"name":
"familyRelatednessCheck", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"FamilyRelatednessCheck", "fields": [{"name": "sampleId1", "type": ["null", "string"], "doc": ""},
{"name": "sampleId2", "type": ["null", "string"], "doc": ""}, {"name": "relationshipFromPedigree",
"type": ["null", {"type": "enum", "name": "FamiliarRelationship", "namespace":
"org.gel.models.participant.avro", "doc": "", "symbols": ["TwinsMonozygous", "TwinsDizygous",
"TwinsUnknown", "FullSibling", "FullSiblingF", "FullSiblingM", "Mother", "Father", "Son",
"Daughter", "ChildOfUnknownSex", "MaternalAunt", "MaternalUncle", "MaternalUncleOrAunt",
"PaternalAunt", "PaternalUncle", "PaternalUncleOrAunt", "MaternalGrandmother",
"PaternalGrandmother", "MaternalGrandfather", "PaternalGrandfather", "DoubleFirstCousin",
"MaternalCousinSister", "PaternalCousinSister", "MaternalCousinBrother", "PaternalCousinBrother",
"Cousin", "Spouse", "Other", "RelationIsNotClear", "Unrelated", "Unknown"]}], "doc": ""}, {"name":
"possibleRelationship", "type": ["null", "string"], "doc": ""}, {"name": "withinFamilyIBDQuery",
"type": ["null", "Query"], "doc": ""}, {"name": "comments", "type": ["null", "string"], "doc":
""}]}}], "doc": ""}, {"name": "reportedVsGeneticSummary", "type": ["null", {"type": "enum", "name":
"reportedVsGeneticSummary", "doc": "", "symbols": ["familyPassesGvsRChecks", "familyFailsACheck",
"familyMissingACheck"]}], "doc": ""}]}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "coverageBasedSex",
        "evaluation",
        "familyRelatedness",
        "mendelianInconsistencies",
        "reportedVsGeneticSummary",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'coverageBasedSex': CoverageBasedSex,
            'evaluation': Evaluation,
            'familyRelatedness': FamilyRelatedness,
            'mendelianInconsistencies': MendelianInconsistencies,
            'reportedVsGeneticSummary': ReportedVsGeneticSummary,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'coverageBasedSex': CoverageBasedSex,
            'evaluation': Evaluation,
            'familyRelatedness': FamilyRelatedness,
            'mendelianInconsistencies': MendelianInconsistencies,
            'reportedVsGeneticSummary': ReportedVsGeneticSummary,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'coverageBasedSex', 'evaluation', 'familyRelatedness',
        'mendelianInconsistencies', 'reportedVsGeneticSummary'
    ]

    def __init__(self, **kwargs):
        self.coverageBasedSex = kwargs.get(
            'coverageBasedSex', None)
        self.evaluation = kwargs.get(
            'evaluation', None)
        self.familyRelatedness = kwargs.get(
            'familyRelatedness', None)
        self.mendelianInconsistencies = kwargs.get(
            'mendelianInconsistencies', None)
        self.reportedVsGeneticSummary = kwargs.get(
            'reportedVsGeneticSummary', None)


class ReportedVsGeneticSummary(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "ReportedVsGeneticSummary", "namespace": "org.gel.models.metrics.avro",
"fields": [{"name": "rvsgCheckVersion", "type": "string", "doc": ""}, {"name": "runDate", "type":
"string", "doc": ""}, {"name": "genomeAssembly", "type": ["null", {"type": "enum", "name":
"SupportedAssembly", "doc": "", "symbols": ["GRCh37", "GRCh38"]}], "doc": ""}, {"name":
"pathToDirectory", "type": "string", "doc": ""}, {"name": "numberOfMarkers", "type": ["null",
"double"], "doc": ""}, {"name": "numberOfMarkersLE", "type": ["null", "double"], "doc": ""},
{"name": "mendelErrorsTool", "type": "string", "doc": ""}, {"name": "mendelErrorsToolVersion",
"type": "string", "doc": ""}, {"name": "relatednessTool", "type": "string", "doc": ""}, {"name":
"relatednessToolVersion", "type": "string", "doc": ""}, {"name": "samplesInfo", "type": {"type":
"array", "items": {"type": "record", "name": "SamplesInfo", "doc": "", "fields": [{"name":
"participantId", "type": "string", "doc": ""}, {"name": "sampleId", "type": "string", "doc": ""},
{"name": "deliveryId", "type": "string", "doc": ""}]}}, "doc": ""}, {"name": "jiraId", "type":
["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "genomeAssembly",
        "jiraId",
        "mendelErrorsTool",
        "mendelErrorsToolVersion",
        "numberOfMarkers",
        "numberOfMarkersLE",
        "pathToDirectory",
        "relatednessTool",
        "relatednessToolVersion",
        "runDate",
        "rvsgCheckVersion",
        "samplesInfo",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'genomeAssembly', 'jiraId', 'mendelErrorsTool',
        'mendelErrorsToolVersion', 'numberOfMarkers',
        'numberOfMarkersLE', 'pathToDirectory', 'relatednessTool',
        'relatednessToolVersion', 'runDate', 'rvsgCheckVersion',
        'samplesInfo'
    ]

    def __init__(self, **kwargs):
        self.genomeAssembly = kwargs.get(
            'genomeAssembly', None)
        self.jiraId = kwargs.get(
            'jiraId', None)
        self.mendelErrorsTool = kwargs.get(
            'mendelErrorsTool', None)
        self.mendelErrorsToolVersion = kwargs.get(
            'mendelErrorsToolVersion', None)
        self.numberOfMarkers = kwargs.get(
            'numberOfMarkers', None)
        self.numberOfMarkersLE = kwargs.get(
            'numberOfMarkersLE', None)
        self.pathToDirectory = kwargs.get(
            'pathToDirectory', None)
        self.relatednessTool = kwargs.get(
            'relatednessTool', None)
        self.relatednessToolVersion = kwargs.get(
            'relatednessToolVersion', None)
        self.runDate = kwargs.get(
            'runDate', None)
        self.rvsgCheckVersion = kwargs.get(
            'rvsgCheckVersion', None)
        self.samplesInfo = kwargs.get(
            'samplesInfo', None)


class SampleSource(object):
    """
    The source of the sample     NOTE: IN GMS,
    BONE_MARROW_ASPIRATE_TUMOUR_CELLS and
    BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS are deprecated as they
    have been separated into their respective biotypes
    """
    AMNIOTIC_FLUID = "AMNIOTIC_FLUID"
    BLOOD = "BLOOD"
    BONE_MARROW = "BONE_MARROW"
    BONE_MARROW_ASPIRATE_TUMOUR_CELLS = "BONE_MARROW_ASPIRATE_TUMOUR_CELLS"
    BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS = "BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS"
    BUCCAL_SWAB = "BUCCAL_SWAB"
    CHORIONIC_VILLUS_SAMPLE = "CHORIONIC_VILLUS_SAMPLE"
    FIBROBLAST = "FIBROBLAST"
    FLUID = "FLUID"
    FRESH_TISSUE_IN_CULTURE_MEDIUM = "FRESH_TISSUE_IN_CULTURE_MEDIUM"
    OTHER = "OTHER"
    SALIVA = "SALIVA"
    TISSUE = "TISSUE"
    TUMOUR = "TUMOUR"
    URINE = "URINE"

    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": "SampleStates", "doc": "", "symbols":
["ready", "warning", "pending", "blocked", "failed", "not_sequenced"]}]}, {"name": "reason", "type":
["null", {"type": "array", "items": {"type": "enum", "name": "StateReason", "symbols":
["median_coverage", "in_analysis", "duplicate", "pedigree_mendelian_errors", "pedigree_ibd_sharing",
"contamination", "quality", "sex_query", "perc_bases_ge_15x", "gb_q30", "array_concordance",
"high_cnv", "in_qc", "pass_qc", "other"]}}]}, {"name": "otherReasons", "type": ["null", {"type":
"array", "items": "string"}]}, {"name": "issueIdentifier", "type": ["null", {"type": "array",
"items": "string"}]}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "issueIdentifier",
        "otherReasons",
        "reason",
        "state",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'issueIdentifier', 'otherReasons', 'reason', 'state'
    ]

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


class SampleStates(object):
    """
    This is the master state for this sample, for example
    failed,quality could be used to say that a sample under this
    individual has quality issues.  ready: sample is ready to be used
    pending: sample is in the process of being analysed blocked:
    sample is on hold pending investigation failed: sample has failed
    a QC check not_sequenced: sample is not sequenced
    """
    ready = "ready"
    warning = "warning"
    pending = "pending"
    blocked = "blocked"
    failed = "failed"
    not_sequenced = "not_sequenced"

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


class SamplesInfo(ProtocolElement):
    """
    ReportedVsGeneticSummary
    ========================================     General information
    about the checks, versions, tools, and number of markers
    """
    _schemaSource = """
{"type": "record", "name": "SamplesInfo", "namespace": "org.gel.models.metrics.avro", "doc": "",
"fields": [{"name": "participantId", "type": "string", "doc": ""}, {"name": "sampleId", "type":
"string", "doc": ""}, {"name": "deliveryId", "type": "string", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "deliveryId",
        "participantId",
        "sampleId",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'deliveryId', 'participantId', 'sampleId'
    ]

    def __init__(self, **kwargs):
        self.deliveryId = kwargs.get(
            'deliveryId', None)
        self.participantId = kwargs.get(
            'participantId', None)
        self.sampleId = kwargs.get(
            'sampleId', None)


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 SamtoolsStatsCalculations(ProtocolElement):
    """
    Stats calculated from values stored in SamtoolsStats
    """
    _schemaSource = """
{"type": "record", "name": "SamtoolsStatsCalculations", "namespace": "org.gel.models.report.avro",
"doc": "", "fields": [{"name": "samtoolsScope", "type": {"type": "enum", "name": "SamtoolsScope",
"symbols": ["all", "filtered"]}, "doc": ""}, {"name":
"SAMTOOLS_PAIRS_ON_DIFFERENT_CHROMOSOMES_PERCENT", "type": "double", "doc": ""}, {"name":
"SAMTOOLS_READS_MAPPED_PERCENT", "type": "double", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "SAMTOOLS_PAIRS_ON_DIFFERENT_CHROMOSOMES_PERCENT",
        "SAMTOOLS_READS_MAPPED_PERCENT",
        "samtoolsScope",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'SAMTOOLS_PAIRS_ON_DIFFERENT_CHROMOSOMES_PERCENT',
        'SAMTOOLS_READS_MAPPED_PERCENT', 'samtoolsScope'
    ]

    def __init__(self, **kwargs):
        self.SAMTOOLS_PAIRS_ON_DIFFERENT_CHROMOSOMES_PERCENT = kwargs.get(
            'SAMTOOLS_PAIRS_ON_DIFFERENT_CHROMOSOMES_PERCENT', None)
        self.SAMTOOLS_READS_MAPPED_PERCENT = kwargs.get(
            'SAMTOOLS_READS_MAPPED_PERCENT', None)
        self.samtoolsScope = kwargs.get(
            'samtoolsScope', None)


class SelectionEvent(ProtocolElement):
    """
    SelectionEvent     ===================================     A set
    of result data relating to a specific set of checks performed
    """
    _schemaSource = """
{"type": "record", "name": "SelectionEvent", "namespace": "org.gel.models.metrics.avro", "doc": "",
"fields": [{"name": "name", "type": {"type": "enum", "name": "SelectionTest", "doc": "", "symbols":
["ALIGNMENT_STATS", "ANALYSIS_PANELS", "BAM_STATS_CHECK", "BLACKLIST", "CNV_QC_STATUS",
"DELIVERY_CHECK", "DISEASE_PENETRANCE", "FAMILY_SELECTION", "GEL_STATUS", "HPO_CHECK",
"PANEL_VERSION", "RVG_RESULTS", "SEX_CHECK"]}, "doc": ""}, {"name": "passed", "type": "boolean",
"doc": ""}, {"name": "description", "type": {"type": "array", "items": "string"}, "doc": ""},
{"name": "flags", "type": ["null", {"type": "array", "items": {"type": "enum", "name":
"SelectionFlag", "doc": "", "symbols": ["UNUSUAL_SEX_KARYOTYPE", "UNKNOWN_PHENOTYPIC_SEX",
"INCORRECT_OR_DISCORDANT_SEX_KARYOTYPE", "INFERRED_GENETIC_AND_REPORTED_SEX_DISCORDANT"]}}], "doc":
""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "description",
        "flags",
        "name",
        "passed",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'description', 'flags', 'name', 'passed'
    ]

    def __init__(self, **kwargs):
        self.description = kwargs.get(
            'description', None)
        self.flags = kwargs.get(
            'flags', None)
        self.name = kwargs.get(
            'name', None)
        self.passed = kwargs.get(
            'passed', None)


class SelectionFlag(object):
    """
    Flags raised on a cohort to trigger review
    """
    UNUSUAL_SEX_KARYOTYPE = "UNUSUAL_SEX_KARYOTYPE"
    UNKNOWN_PHENOTYPIC_SEX = "UNKNOWN_PHENOTYPIC_SEX"
    INCORRECT_OR_DISCORDANT_SEX_KARYOTYPE = "INCORRECT_OR_DISCORDANT_SEX_KARYOTYPE"
    INFERRED_GENETIC_AND_REPORTED_SEX_DISCORDANT = "INFERRED_GENETIC_AND_REPORTED_SEX_DISCORDANT"

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


class SelectionStatus(object):
    """
    The cohort level result of performing the family selection
    """
    NOT_CHECKED = "NOT_CHECKED"
    REJECTED = "REJECTED"
    SELECTED = "SELECTED"

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


class SelectionTest(object):
    """
    The set of tests that are performed in Family Selection
    """
    ALIGNMENT_STATS = "ALIGNMENT_STATS"
    ANALYSIS_PANELS = "ANALYSIS_PANELS"
    BAM_STATS_CHECK = "BAM_STATS_CHECK"
    BLACKLIST = "BLACKLIST"
    CNV_QC_STATUS = "CNV_QC_STATUS"
    DELIVERY_CHECK = "DELIVERY_CHECK"
    DISEASE_PENETRANCE = "DISEASE_PENETRANCE"
    FAMILY_SELECTION = "FAMILY_SELECTION"
    GEL_STATUS = "GEL_STATUS"
    HPO_CHECK = "HPO_CHECK"
    PANEL_VERSION = "PANEL_VERSION"
    RVG_RESULTS = "RVG_RESULTS"
    SEX_CHECK = "SEX_CHECK"

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


class SensitiveInformation(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "SensitiveInformation", "namespace": "org.gel.models.participant.avro",
"fields": [{"name": "versionControl", "type": {"type": "record", "name": "VersionControl", "fields":
[{"name": "GitVersionControl", "type": "string", "doc": "", "default": "1.2.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 Severity(object):
    """
    No documentation
    """
    BORDERLINE = "BORDERLINE"
    MILD = "MILD"
    MODERATE = "MODERATE"
    SEVERE = "SEVERE"
    PROFOUND = "PROFOUND"

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


class Sex(object):
    """
    Phenotypic sex
    """
    UNKNOWN = "UNKNOWN"
    MALE = "MALE"
    FEMALE = "FEMALE"
    OTHER = "OTHER"

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


class SpatialPattern(object):
    """
    No documentation
    """
    DISTAL = "DISTAL"
    GENERALIZED = "GENERALIZED"
    LOCALIZED = "LOCALIZED"
    PROXIMAL = "PROXIMAL"

    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 StateReason(object):
    """
    No documentation
    """
    median_coverage = "median_coverage"
    in_analysis = "in_analysis"
    duplicate = "duplicate"
    pedigree_mendelian_errors = "pedigree_mendelian_errors"
    pedigree_ibd_sharing = "pedigree_ibd_sharing"
    contamination = "contamination"
    quality = "quality"
    sex_query = "sex_query"
    perc_bases_ge_15x = "perc_bases_ge_15x"
    gb_q30 = "gb_q30"
    array_concordance = "array_concordance"
    high_cnv = "high_cnv"
    in_qc = "in_qc"
    pass_qc = "pass_qc"
    other = "other"

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


class Step(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "Step", "namespace": "org.gel.models.metrics.avro", "fields": [{"name":
"stepName", "type": "string"}, {"name": "date", "type": "string"}, {"name": "status", "type":
{"type": "enum", "name": "StepStatus", "symbols": ["failed", "ready"]}}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "date",
        "status",
        "stepName",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'date', 'status', 'stepName'
    ]

    def __init__(self, **kwargs):
        self.date = kwargs.get(
            'date', None)
        self.status = kwargs.get(
            'status', None)
        self.stepName = kwargs.get(
            'stepName', None)


class StepStatus(object):
    """
    No documentation
    """
    failed = "failed"
    ready = "ready"

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


class StorageMedium(object):
    """
    In GMS, storage medium of sample
    """
    EDTA = "EDTA"
    FF = "FF"
    LI_HEP = "LI_HEP"
    ORAGENE = "ORAGENE"
    FFPE = "FFPE"

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


class SupplementaryAnalysisResults(ProtocolElement):
    """
    This defines a Supplementary Analysis Result
    """
    _schemaSource = """
{"type": "record", "name": "SupplementaryAnalysisResults", "namespace":
"org.gel.models.report.avro", "doc": "", "fields": [{"name":
"contextualAnalysisSubstitutionsCounts", "type": {"type": "map", "values": "int"}, "doc": ""},
{"name": "mutationalSignatureContribution", "type": {"type": "record", "name":
"MutationalSignatureContribution", "fields": [{"name": "coefficients", "type": {"type": "map",
"values": "double"}, "doc": ""}, {"name": "rss", "type": "double", "doc": ""}]}, "doc": ""},
{"name": "sNVAlleleFrequencyHistogramCounts", "type": {"type": "map", "values": "int"}, "doc": ""},
{"name": "indelAlleleFrequencyHistogramCounts", "type": {"type": "map", "values": "int"}, "doc":
""}, {"name": "indelLengthHistogramCounts", "type": {"type": "map", "values": "int"}, "doc": ""},
{"name": "genomicRegionsOfHypermutation", "type": {"type": "array", "items": "string"}, "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "contextualAnalysisSubstitutionsCounts",
        "genomicRegionsOfHypermutation",
        "indelAlleleFrequencyHistogramCounts",
        "indelLengthHistogramCounts",
        "mutationalSignatureContribution",
        "sNVAlleleFrequencyHistogramCounts",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'contextualAnalysisSubstitutionsCounts',
        'genomicRegionsOfHypermutation',
        'indelAlleleFrequencyHistogramCounts',
        'indelLengthHistogramCounts',
        'mutationalSignatureContribution',
        'sNVAlleleFrequencyHistogramCounts'
    ]

    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', MutationalSignatureContribution())
        self.sNVAlleleFrequencyHistogramCounts = kwargs.get(
            'sNVAlleleFrequencyHistogramCounts', None)


class SupportedAssembly(object):
    """
    Supported assemblies
    """
    GRCh37 = "GRCh37"
    GRCh38 = "GRCh38"

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


class Technology(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "Technology", "namespace": "org.gel.models.participant.avro", "fields":
[{"name": "testTechnologyId", "type": "string", "doc": ""}, {"name": "testTechnologyDescription",
"type": "string", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "testTechnologyDescription",
        "testTechnologyId",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'testTechnologyDescription', 'testTechnologyId'
    ]

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


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

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


class TissueSource(object):
    """
    No documentation
    """
    BMA_TUMOUR_SORTED_CELLS = "BMA_TUMOUR_SORTED_CELLS"
    CT_GUIDED_BIOPSY = "CT_GUIDED_BIOPSY"
    ENDOSCOPIC_BIOPSY = "ENDOSCOPIC_BIOPSY"
    ENDOSCOPIC_ULTRASOUND_GUIDED_BIOPSY = "ENDOSCOPIC_ULTRASOUND_GUIDED_BIOPSY"
    ENDOSCOPIC_ULTRASOUND_GUIDED_FNA = "ENDOSCOPIC_ULTRASOUND_GUIDED_FNA"
    LAPAROSCOPIC_BIOPSY = "LAPAROSCOPIC_BIOPSY"
    LAPAROSCOPIC_EXCISION = "LAPAROSCOPIC_EXCISION"
    MRI_GUIDED_BIOPSY = "MRI_GUIDED_BIOPSY"
    NON_GUIDED_BIOPSY = "NON_GUIDED_BIOPSY"
    SURGICAL_RESECTION = "SURGICAL_RESECTION"
    STEREOTACTICALLY_GUIDED_BIOPSY = "STEREOTACTICALLY_GUIDED_BIOPSY"
    USS_GUIDED_BIOPSY = "USS_GUIDED_BIOPSY"
    NON_STANDARD_BIOPSY = "NON_STANDARD_BIOPSY"
    NOT_SPECIFIED = "NOT_SPECIFIED"

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


class Topography(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "Topography", "namespace": "org.gel.models.participant.avro", "fields":
[{"name": "id", "type": ["null", "string"], "doc": ""}, {"name": "name", "type": ["null", "string"],
"doc": ""}, {"name": "value", "type": ["null", "string"], "doc": ""}, {"name": "version", "type":
["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "id",
        "name",
        "value",
        "version",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'id', 'name', 'value', 'version'
    ]

    def __init__(self, **kwargs):
        self.id = kwargs.get(
            'id', None)
        self.name = kwargs.get(
            'name', None)
        self.value = kwargs.get(
            'value', None)
        self.version = kwargs.get(
            'version', None)


class TotalNumberOfMendelErrors(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "TotalNumberOfMendelErrors", "namespace": "org.gel.models.metrics.avro",
"fields": [{"name": "familyMendelErrors", "type": ["null", "double"], "doc": ""}, {"name":
"individualMendelErrors", "type": ["null", {"type": "array", "items": {"type": "record", "name":
"AggregatedIndividualMendelErrors", "fields": [{"name": "sampleId", "type": ["null", "string"],
"doc": ""}, {"name": "totalnumberOfMendelErrors", "type": ["null", "double"], "doc": ""}]}}], "doc":
""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "familyMendelErrors",
        "individualMendelErrors",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'familyMendelErrors', 'individualMendelErrors'
    ]

    def __init__(self, **kwargs):
        self.familyMendelErrors = kwargs.get(
            'familyMendelErrors', None)
        self.individualMendelErrors = kwargs.get(
            'individualMendelErrors', 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 nonexistant 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 Tumour(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "Tumour", "namespace": "org.gel.models.participant.avro", "fields":
[{"name": "tumourId", "type": "string", "doc": ""}, {"name": "tumourLocalId", "type": "string",
"doc": ""}, {"name": "tumourType", "type": {"type": "enum", "name": "TumourType", "doc": "",
"symbols": ["BRAIN_TUMOUR", "HAEMATOLOGICAL_MALIGNANCY_SOLID_SAMPLE",
"HAEMATOLOGICAL_MALIGNANCY_LIQUID_SAMPLE", "SOLID_TUMOUR_METASTATIC", "SOLID_TUMOUR_PRIMARY",
"SOLID_TUMOUR", "UNKNOWN"]}, "doc": ""}, {"name": "tumourParentId", "type": ["null", "string"],
"doc": ""}, {"name": "tumourDiagnosisDate", "type": ["null", {"type": "record", "name": "Date",
"doc": "", "fields": [{"name": "year", "type": "int", "doc": ""}, {"name": "month", "type": ["null",
"int"], "doc": ""}, {"name": "day", "type": ["null", "int"], "doc": ""}]}], "doc": ""}, {"name":
"tumourDescription", "type": ["null", "string"], "doc": ""}, {"name": "tumourMorphologies", "type":
["null", {"type": "array", "items": {"type": "record", "name": "Morphology", "fields": [{"name":
"id", "type": ["null", "string"], "doc": ""}, {"name": "name", "type": ["null", "string"], "doc":
""}, {"name": "value", "type": ["null", "string"], "doc": ""}, {"name": "version", "type": ["null",
"string"], "doc": ""}]}}], "doc": ""}, {"name": "tumourTopographies", "type": ["null", {"type":
"array", "items": {"type": "record", "name": "Topography", "fields": [{"name": "id", "type":
["null", "string"], "doc": ""}, {"name": "name", "type": ["null", "string"], "doc": ""}, {"name":
"value", "type": ["null", "string"], "doc": ""}, {"name": "version", "type": ["null", "string"],
"doc": ""}]}}], "doc": ""}, {"name": "tumourPrimaryTopographies", "type": ["null", {"type": "array",
"items": "Topography"}], "doc": ""}, {"name": "tumourGrade", "type": ["null", "string"], "doc": ""},
{"name": "tumourStage", "type": ["null", "string"], "doc": ""}, {"name": "tumourPrognosticScore",
"type": ["null", "string"], "doc": ""}, {"name": "tumourPresentation", "type": ["null", {"type":
"enum", "name": "TumourPresentation", "symbols": ["FIRST_PRESENTATION", "RECURRENCE", "UNKNOWN"]}],
"doc": ""}, {"name": "primaryOrMetastatic", "type": ["null", {"type": "enum", "name":
"PrimaryOrMetastatic", "symbols": ["PRIMARY", "METASTATIC", "UNKNOWN", "NOT_APPLICABLE"]}], "doc":
""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "primaryOrMetastatic",
        "tumourDescription",
        "tumourDiagnosisDate",
        "tumourGrade",
        "tumourId",
        "tumourLocalId",
        "tumourMorphologies",
        "tumourParentId",
        "tumourPresentation",
        "tumourPrimaryTopographies",
        "tumourPrognosticScore",
        "tumourStage",
        "tumourTopographies",
        "tumourType",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'tumourDiagnosisDate': Date,
            'tumourMorphologies': Morphology,
            'tumourPrimaryTopographies': Topography,
            'tumourTopographies': Topography,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'tumourDiagnosisDate': Date,
            'tumourMorphologies': Morphology,
            'tumourPrimaryTopographies': Topography,
            'tumourTopographies': Topography,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'primaryOrMetastatic', 'tumourDescription',
        'tumourDiagnosisDate', 'tumourGrade', 'tumourId',
        'tumourLocalId', 'tumourMorphologies', 'tumourParentId',
        'tumourPresentation', 'tumourPrimaryTopographies',
        'tumourPrognosticScore', 'tumourStage', 'tumourTopographies',
        'tumourType'
    ]

    def __init__(self, **kwargs):
        self.primaryOrMetastatic = kwargs.get(
            'primaryOrMetastatic', None)
        self.tumourDescription = kwargs.get(
            'tumourDescription', None)
        self.tumourDiagnosisDate = kwargs.get(
            'tumourDiagnosisDate', None)
        self.tumourGrade = kwargs.get(
            'tumourGrade', None)
        self.tumourId = kwargs.get(
            'tumourId', None)
        self.tumourLocalId = kwargs.get(
            'tumourLocalId', None)
        self.tumourMorphologies = kwargs.get(
            'tumourMorphologies', None)
        self.tumourParentId = kwargs.get(
            'tumourParentId', None)
        self.tumourPresentation = kwargs.get(
            'tumourPresentation', None)
        self.tumourPrimaryTopographies = kwargs.get(
            'tumourPrimaryTopographies', None)
        self.tumourPrognosticScore = kwargs.get(
            'tumourPrognosticScore', None)
        self.tumourStage = kwargs.get(
            'tumourStage', None)
        self.tumourTopographies = kwargs.get(
            'tumourTopographies', None)
        self.tumourType = kwargs.get(
            'tumourType', None)


class TumourContent(object):
    """
    No documentation
    """
    High = "High"
    Medium = "Medium"
    Low = "Low"

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


class TumourPresentation(object):
    """
    No documentation
    """
    FIRST_PRESENTATION = "FIRST_PRESENTATION"
    RECURRENCE = "RECURRENCE"
    UNKNOWN = "UNKNOWN"

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


class TumourSample(ProtocolElement):
    """
    A tumour sample
    """
    _schemaSource = """
{"type": "record", "name": "TumourSample", "namespace": "org.gel.models.participant.avro", "doc":
"", "fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name": "labSampleId", "type":
"int", "doc": ""}, {"name": "LDPCode", "type": ["null", "string"], "doc": ""}, {"name": "tumourId",
"type": ["null", "string"], "doc": ""}, {"name": "programmePhase", "type": ["null", "string"],
"doc": ""}, {"name": "diseaseType", "type": ["null", {"type": "enum", "name": "diseaseType",
"symbols": ["ADULT_GLIOMA", "BLADDER", "BREAST", "CARCINOMA_OF_UNKNOWN_PRIMARY", "CHILDHOOD",
"COLORECTAL", "ENDOCRINE", "ENDOMETRIAL_CARCINOMA", "HAEMONC", "HEPATOPANCREATOBILIARY", "LUNG",
"MALIGNANT_MELANOMA", "NASOPHARYNGEAL", "ORAL_OROPHARYNGEAL", "OVARIAN", "PROSTATE", "RENAL",
"SARCOMA", "SINONASAL", "TESTICULAR_GERM_CELL_TUMOURS", "UPPER_GASTROINTESTINAL", "OTHER",
"NON_HODGKINS_B_CELL_LYMPHOMA_LOW_MOD_GRADE", "CLASSICAL_HODGKINS",
"NODULAR_LYMPHOCYTE_PREDOMINANT_HODGKINS", "T_CELL_LYMPHOMA"]}], "doc": ""}, {"name":
"diseaseSubType", "type": ["null", "string"], "doc": ""}, {"name": "haematologicalCancer", "type":
["null", "boolean"], "doc": ""}, {"name": "haematologicalCancerLineage", "type": ["null", {"type":
"enum", "name": "HaematologicalCancerLineage", "symbols": ["MYELOID", "LYMPHOID", "UNKNOWN"]}],
"doc": ""}, {"name": "clinicalSampleDateTime", "type": ["null", "string"], "doc": ""}, {"name":
"tumourType", "type": ["null", "string"], "doc": ""}, {"name": "tumourContent", "type": ["null",
{"type": "enum", "name": "TumourContent", "symbols": ["High", "Medium", "Low"]}], "doc": ""},
{"name": "tumourContentPercentage", "type": ["null", "float"], "doc": ""}, {"name": "source",
"type": ["null", {"type": "enum", "name": "SampleSource", "doc": "", "symbols": ["AMNIOTIC_FLUID",
"BLOOD", "BONE_MARROW", "BONE_MARROW_ASPIRATE_TUMOUR_CELLS",
"BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS", "BUCCAL_SWAB", "CHORIONIC_VILLUS_SAMPLE", "FIBROBLAST",
"FLUID", "FRESH_TISSUE_IN_CULTURE_MEDIUM", "OTHER", "SALIVA", "TISSUE", "TUMOUR", "URINE"]}], "doc":
""}, {"name": "preparationMethod", "type": ["null", {"type": "enum", "name": "PreparationMethod",
"doc": "", "symbols": ["ASPIRATE", "CD128_SORTED_CELLS", "CD138_SORTED_CELLS", "EDTA", "FF", "FFPE",
"LI_HEP", "ORAGENE"]}], "doc": ""}, {"name": "tissueSource", "type": ["null", "string"], "doc": ""},
{"name": "product", "type": ["null", {"type": "enum", "name": "Product", "symbols": ["DNA",
"RNA"]}], "doc": ""}, {"name": "sampleMorphologies", "type": ["null", {"type": "array", "items":
{"type": "record", "name": "Morphology", "fields": [{"name": "id", "type": ["null", "string"],
"doc": ""}, {"name": "name", "type": ["null", "string"], "doc": ""}, {"name": "value", "type":
["null", "string"], "doc": ""}, {"name": "version", "type": ["null", "string"], "doc": ""}]}}],
"doc": ""}, {"name": "sampleTopographies", "type": ["null", {"type": "array", "items": {"type":
"record", "name": "Topography", "fields": [{"name": "id", "type": ["null", "string"], "doc": ""},
{"name": "name", "type": ["null", "string"], "doc": ""}, {"name": "value", "type": ["null",
"string"], "doc": ""}, {"name": "version", "type": ["null", "string"], "doc": ""}]}}], "doc": ""},
{"name": "sampleUid", "type": ["null", "string"], "doc": ""}, {"name": "participantId", "type":
["null", "string"], "doc": ""}, {"name": "participantUid", "type": ["null", "string"], "doc": ""},
{"name": "maskedPid", "type": ["null", "string"], "doc": ""}, {"name": "method", "type": ["null",
{"type": "enum", "name": "Method", "doc": "", "symbols": ["ASPIRATE", "BIOPSY", "NOT_APPLICABLE",
"RESECTION", "SORTED_OTHER", "UNKNOWN", "UNSORTED", "CD138_SORTED"]}], "doc": ""}, {"name":
"storageMedium", "type": ["null", {"type": "enum", "name": "StorageMedium", "doc": "", "symbols":
["EDTA", "FF", "LI_HEP", "ORAGENE", "FFPE"]}], "doc": ""}, {"name": "sampleType", "type": ["null",
"string"], "doc": ""}, {"name": "sampleState", "type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "LDPCode",
        "clinicalSampleDateTime",
        "diseaseSubType",
        "diseaseType",
        "haematologicalCancer",
        "haematologicalCancerLineage",
        "labSampleId",
        "maskedPid",
        "method",
        "participantId",
        "participantUid",
        "preparationMethod",
        "product",
        "programmePhase",
        "sampleId",
        "sampleMorphologies",
        "sampleState",
        "sampleTopographies",
        "sampleType",
        "sampleUid",
        "source",
        "storageMedium",
        "tissueSource",
        "tumourContent",
        "tumourContentPercentage",
        "tumourId",
        "tumourType",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'sampleMorphologies': Morphology,
            'sampleTopographies': Topography,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'sampleMorphologies': Morphology,
            'sampleTopographies': Topography,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'LDPCode', 'clinicalSampleDateTime', 'diseaseSubType',
        'diseaseType', 'haematologicalCancer',
        'haematologicalCancerLineage', 'labSampleId', 'maskedPid',
        'method', 'participantId', 'participantUid',
        'preparationMethod', 'product', 'programmePhase', 'sampleId',
        'sampleMorphologies', 'sampleState', 'sampleTopographies',
        'sampleType', 'sampleUid', 'source', 'storageMedium',
        'tissueSource', 'tumourContent', 'tumourContentPercentage',
        'tumourId', 'tumourType'
    ]

    def __init__(self, **kwargs):
        self.LDPCode = kwargs.get(
            'LDPCode', None)
        self.clinicalSampleDateTime = kwargs.get(
            'clinicalSampleDateTime', None)
        self.diseaseSubType = kwargs.get(
            'diseaseSubType', None)
        self.diseaseType = kwargs.get(
            'diseaseType', None)
        self.haematologicalCancer = kwargs.get(
            'haematologicalCancer', None)
        self.haematologicalCancerLineage = kwargs.get(
            'haematologicalCancerLineage', None)
        self.labSampleId = kwargs.get(
            'labSampleId', None)
        self.maskedPid = kwargs.get(
            'maskedPid', None)
        self.method = kwargs.get(
            'method', None)
        self.participantId = kwargs.get(
            'participantId', None)
        self.participantUid = kwargs.get(
            'participantUid', None)
        self.preparationMethod = kwargs.get(
            'preparationMethod', None)
        self.product = kwargs.get(
            'product', None)
        self.programmePhase = kwargs.get(
            'programmePhase', None)
        self.sampleId = kwargs.get(
            'sampleId', None)
        self.sampleMorphologies = kwargs.get(
            'sampleMorphologies', None)
        self.sampleState = kwargs.get(
            'sampleState', None)
        self.sampleTopographies = kwargs.get(
            'sampleTopographies', None)
        self.sampleType = kwargs.get(
            'sampleType', None)
        self.sampleUid = kwargs.get(
            'sampleUid', None)
        self.source = kwargs.get(
            'source', None)
        self.storageMedium = kwargs.get(
            'storageMedium', None)
        self.tissueSource = kwargs.get(
            'tissueSource', None)
        self.tumourContent = kwargs.get(
            'tumourContent', None)
        self.tumourContentPercentage = kwargs.get(
            'tumourContentPercentage', None)
        self.tumourId = kwargs.get(
            'tumourId', None)
        self.tumourType = kwargs.get(
            'tumourType', None)


class TumourType(object):
    """
    NOTE: This has been changed completely, the previous tumour type
    has been split into TumourPresentation and PrimaryOrMetastatic
    """
    BRAIN_TUMOUR = "BRAIN_TUMOUR"
    HAEMATOLOGICAL_MALIGNANCY_SOLID_SAMPLE = "HAEMATOLOGICAL_MALIGNANCY_SOLID_SAMPLE"
    HAEMATOLOGICAL_MALIGNANCY_LIQUID_SAMPLE = "HAEMATOLOGICAL_MALIGNANCY_LIQUID_SAMPLE"
    SOLID_TUMOUR_METASTATIC = "SOLID_TUMOUR_METASTATIC"
    SOLID_TUMOUR_PRIMARY = "SOLID_TUMOUR_PRIMARY"
    SOLID_TUMOUR = "SOLID_TUMOUR"
    UNKNOWN = "UNKNOWN"

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


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 VariantsCoverageCalculations(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "VariantsCoverageCalculations", "namespace":
"org.gel.models.report.avro", "fields": [{"name": "bedName", "type": "string"}, {"name":
"coverageSummaryCalculations", "type": {"type": "array", "items": {"type": "record", "name":
"CoverageSummaryCalculations", "doc": "", "fields": [{"name": "lt30x_percent", "type": "double",
"doc": ""}, {"name": "scope", "type": "string", "doc": ""}]}}}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "bedName",
        "coverageSummaryCalculations",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'bedName', 'coverageSummaryCalculations'
    ]

    def __init__(self, **kwargs):
        self.bedName = kwargs.get(
            'bedName', None)
        self.coverageSummaryCalculations = kwargs.get(
            'coverageSummaryCalculations', 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.participant.avro",
"fields": [{"name": "GitVersionControl", "type": "string", "doc": "", "default": "1.2.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', '1.2.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 diseaseType(object):
    """
    No documentation
    """
    ADULT_GLIOMA = "ADULT_GLIOMA"
    BLADDER = "BLADDER"
    BREAST = "BREAST"
    CARCINOMA_OF_UNKNOWN_PRIMARY = "CARCINOMA_OF_UNKNOWN_PRIMARY"
    CHILDHOOD = "CHILDHOOD"
    COLORECTAL = "COLORECTAL"
    ENDOCRINE = "ENDOCRINE"
    ENDOMETRIAL_CARCINOMA = "ENDOMETRIAL_CARCINOMA"
    HAEMONC = "HAEMONC"
    HEPATOPANCREATOBILIARY = "HEPATOPANCREATOBILIARY"
    LUNG = "LUNG"
    MALIGNANT_MELANOMA = "MALIGNANT_MELANOMA"
    NASOPHARYNGEAL = "NASOPHARYNGEAL"
    ORAL_OROPHARYNGEAL = "ORAL_OROPHARYNGEAL"
    OVARIAN = "OVARIAN"
    PROSTATE = "PROSTATE"
    RENAL = "RENAL"
    SARCOMA = "SARCOMA"
    SINONASAL = "SINONASAL"
    TESTICULAR_GERM_CELL_TUMOURS = "TESTICULAR_GERM_CELL_TUMOURS"
    UPPER_GASTROINTESTINAL = "UPPER_GASTROINTESTINAL"
    OTHER = "OTHER"
    NON_HODGKINS_B_CELL_LYMPHOMA_LOW_MOD_GRADE = "NON_HODGKINS_B_CELL_LYMPHOMA_LOW_MOD_GRADE"
    CLASSICAL_HODGKINS = "CLASSICAL_HODGKINS"
    NODULAR_LYMPHOCYTE_PREDOMINANT_HODGKINS = "NODULAR_LYMPHOCYTE_PREDOMINANT_HODGKINS"
    T_CELL_LYMPHOMA = "T_CELL_LYMPHOMA"

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