"""
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.0'


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": "panelVersion", "type": ["null", "string"], "doc": ""},
{"name": "reviewOutcome", "type": "string", "doc": ""}, {"name": "multipleGeneticOrigins", "type":
"string", "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "multipleGeneticOrigins",
        "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', 'panelName', 'panelVersion',
        'reviewOutcome', 'specificDisease'
    ]

    def __init__(self, **kwargs):
        self.multipleGeneticOrigins = kwargs.get(
            'multipleGeneticOrigins', 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": "center", "type": ["null", "string"], "doc": ""},
{"name": "individualId", "type": "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": {"type": "array", "items": {"type": "record", "name": "TumourSample",
"doc": "", "fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name": "labSampleId",
"type": "int", "doc": ""}, {"name": "LDPCode", "type": "string", "doc": ""}, {"name": "tumourId",
"type": "string", "doc": ""}, {"name": "programmePhase", "type": ["null", {"type": "enum", "name":
"ProgrammePhase", "symbols": ["CRUK", "OXFORD", "CLL", "IIP", "MAIN", "EXPT"]}], "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": "clinicalSampleDateTime", "type":
["null", "string"], "doc": ""}, {"name": "tumourType", "type": ["null", {"type": "enum", "name":
"TumourType", "symbols": ["PRIMARY", "METASTATIC_RECURRENCE", "RECURRENCE_OF_PRIMARY_TUMOUR",
"METASTASES"]}], "doc": ""}, {"name": "tumourContent", "type": ["null", {"type": "enum", "name":
"TumourContent", "symbols": ["High", "Medium", "Low"]}], "doc": ""}, {"name": "source", "type":
["null", {"type": "enum", "name": "SampleSource", "doc": "", "symbols": ["TUMOUR",
"BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS", "BONE_MARROW_ASPIRATE_TUMOUR_CELLS", "BLOOD", "SALIVA",
"FIBROBLAST", "TISSUE"]}], "doc": ""}, {"name": "preparationMethod", "type": ["null", {"type":
"enum", "name": "PreparationMethod", "symbols": ["EDTA", "ORAGENE", "FF", "FFPE",
"CD128_SORTED_CELLS", "ASPIRATE"]}], "doc": ""}, {"name": "tissueSource", "type": ["null", {"type":
"enum", "name": "TissueSource", "symbols": ["BMA_TUMOUR_SORTED_CELLS", "CT_GUIDED_BIOPSY",
"ENDOSCOPIC_BIOPSY", "ENDOSCOPIC_ULTRASOUND_GUIDED_BIOPSY", "ENDOSCOPIC_ULTRASOUND_GUIDED_FNA",
"LAPAROSCOPIC_BIOPSY", "LAPAROSCOPIC_EXCISION", "MRI_GUIDED_BIOPSY", "NON_GUIDED_BIOPSY",
"SURGICAL_RESECTION", "STEREOTACTICALLY_GUIDED_BIOPSY", "USS_GUIDED_BIOPSY", "NON_STANDARD_BIOPSY",
"NOT_SPECIFIED"]}], "doc": ""}, {"name": "product", "type": ["null", {"type": "enum", "name":
"Product", "symbols": ["DNA", "RNA"]}], "doc": ""}, {"name": "morphologyICD", "type": ["null",
"string"], "doc": ""}, {"name": "morphologySnomedCT", "type": ["null", "string"], "doc": ""},
{"name": "morphologySnomedRT", "type": ["null", "string"], "doc": ""}, {"name": "topographyICD",
"type": ["null", "string"], "doc": ""}, {"name": "topographySnomedCT", "type": ["null", "string"],
"doc": ""}, {"name": "topographySnomedRT", "type": ["null", "string"], "doc": ""}]}}, "doc": ""},
{"name": "germlineSamples", "type": {"type": "array", "items": {"type": "record", "name":
"GermlineSample", "doc": "", "fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name":
"labSampleId", "type": "int", "doc": ""}, {"name": "LDPCode", "type": "string", "doc": ""}, {"name":
"source", "type": ["null", "SampleSource"], "doc": ""}, {"name": "product", "type": ["null",
"Product"], "doc": ""}, {"name": "preparationMethod", "type": ["null", "PreparationMethod"], "doc":
""}, {"name": "programmePhase", "type": ["null", "ProgrammePhase"], "doc": ""}, {"name":
"clinicalSampleDateTime", "type": ["null", "string"], "doc": ""}]}}, "doc": ""}, {"name":
"matchedSamples", "type": {"type": "array", "items": {"type": "record", "name": "MatchedSamples",
"doc": "", "fields": [{"name": "germlineSampleId", "type": ["null", "string"], "doc": ""}, {"name":
"tumourSampleId", "type": ["null", "string"], "doc": ""}]}}, "doc": ""}, {"name": "versionControl",
"type": ["null", {"type": "record", "name": "VersionControl", "fields": [{"name":
"GitVersionControl", "type": "string", "doc": "", "default": "1.1.0"}]}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "additionalInformation",
        "assignedICD10",
        "center",
        "consentStatus",
        "germlineSamples",
        "individualId",
        "matchedSamples",
        "morphology",
        "primaryDiagnosisDisease",
        "primaryDiagnosisSubDisease",
        "readyForAnalysis",
        "sex",
        "tumourSamples",
        "versionControl",
        "yearOfBirth",
    }

    @classmethod
    def isEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'consentStatus': ConsentStatus,
            'germlineSamples': GermlineSample,
            'matchedSamples': MatchedSamples,
            'tumourSamples': TumourSample,
            'versionControl': VersionControl,
        }
        return fieldName in embeddedTypes

    @classmethod
    def getEmbeddedType(cls, fieldName):
        embeddedTypes = {
            'consentStatus': ConsentStatus,
            'germlineSamples': GermlineSample,
            'matchedSamples': MatchedSamples,
            'tumourSamples': TumourSample,
            'versionControl': VersionControl,
        }

        return embeddedTypes[fieldName]

    __slots__ = [
        'additionalInformation', 'assignedICD10', 'center',
        'consentStatus', 'germlineSamples', 'individualId',
        'matchedSamples', 'morphology', 'primaryDiagnosisDisease',
        'primaryDiagnosisSubDisease', 'readyForAnalysis', 'sex',
        'tumourSamples', '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.matchedSamples = kwargs.get(
            'matchedSamples', None)
        self.morphology = kwargs.get(
            'morphology', 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.tumourSamples = kwargs.get(
            'tumourSamples', 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 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
    """
    _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": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "avgCnvChrX",
        "avgCnvChrY",
        "inferredKaryotype",
        "ratioChrX",
        "ratioChrY",
        "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', '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.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 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 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 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": "string", "doc": ""}, {"name": "source", "type":
["null", {"type": "enum", "name": "SampleSource", "doc": "", "symbols": ["TUMOUR",
"BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS", "BONE_MARROW_ASPIRATE_TUMOUR_CELLS", "BLOOD", "SALIVA",
"FIBROBLAST", "TISSUE"]}], "doc": ""}, {"name": "product", "type": ["null", {"type": "enum", "name":
"Product", "symbols": ["DNA", "RNA"]}], "doc": ""}, {"name": "preparationMethod", "type": ["null",
{"type": "enum", "name": "PreparationMethod", "symbols": ["EDTA", "ORAGENE", "FF", "FFPE",
"CD128_SORTED_CELLS", "ASPIRATE"]}], "doc": ""}, {"name": "programmePhase", "type": ["null",
{"type": "enum", "name": "ProgrammePhase", "symbols": ["CRUK", "OXFORD", "CLL", "IIP", "MAIN",
"EXPT"]}], "doc": ""}, {"name": "clinicalSampleDateTime", "type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "LDPCode",
        "clinicalSampleDateTime",
        "labSampleId",
        "preparationMethod",
        "product",
        "programmePhase",
        "sampleId",
        "source",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'LDPCode', 'clinicalSampleDateTime', 'labSampleId',
        'preparationMethod', 'product', 'programmePhase', 'sampleId',
        'source'
    ]

    def __init__(self, **kwargs):
        self.LDPCode = kwargs.get(
            'LDPCode', None)
        self.clinicalSampleDateTime = kwargs.get(
            'clinicalSampleDateTime', None)
        self.labSampleId = kwargs.get(
            'labSampleId', 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.source = kwargs.get(
            'source', None)


class HpoTerm(ProtocolElement):
    """
    This defines an HPO term and its modifiers (possibly multiple)
    If HPO term presence is unknown we don't have a entry on the list
    """
    _schemaSource = """
{"type": "record", "name": "HpoTerm", "namespace": "org.gel.models.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": "record", "name": "HpoTermModifiers", "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"]}]}]}], "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):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "HpoTermModifiers", "namespace": "org.gel.models.participant.avro",
"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"]}]}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "laterality",
        "progression",
        "severity",
        "spatialPattern",
    }

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

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

        return embeddedTypes[fieldName]

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

    def __init__(self, **kwargs):
        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 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 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):
    """
    No documentation
    """
    RESECTION = "RESECTION"
    BIOPSY = "BIOPSY"
    BLOOD = "BLOOD"

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


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 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.1.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": "record",
"name": "HpoTermModifiers", "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"]}]}]}], "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": "samples", "type": ["null", {"type": "array", "items": {"type": "record", "name": "Sample",
"fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name": "labSampleId", "type": "int",
"doc": ""}, {"name": "source", "type": ["null", {"type": "enum", "name": "SampleSource", "doc": "",
"symbols": ["TUMOUR", "BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS",
"BONE_MARROW_ASPIRATE_TUMOUR_CELLS", "BLOOD", "SALIVA", "FIBROBLAST", "TISSUE"]}], "doc": ""},
{"name": "product", "type": ["null", {"type": "enum", "name": "Product", "symbols": ["DNA",
"RNA"]}], "doc": ""}, {"name": "preparationMethod", "type": ["null", {"type": "enum", "name":
"PreparationMethod", "symbols": ["EDTA", "ORAGENE", "FF", "FFPE", "CD128_SORTED_CELLS",
"ASPIRATE"]}], "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": ""}]}}, "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": "panelVersion", "type": ["null", "string"], "doc": ""}, {"name":
"reviewOutcome", "type": "string", "doc": ""}, {"name": "multipleGeneticOrigins", "type": "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": "record", "name":
"HpoTermModifiers", "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"]}]}]}], "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": "samples", "type": ["null", {"type": "array", "items": {"type": "record", "name": "Sample",
"fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name": "labSampleId", "type": "int",
"doc": ""}, {"name": "source", "type": ["null", {"type": "enum", "name": "SampleSource", "doc": "",
"symbols": ["TUMOUR", "BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS",
"BONE_MARROW_ASPIRATE_TUMOUR_CELLS", "BLOOD", "SALIVA", "FIBROBLAST", "TISSUE"]}], "doc": ""},
{"name": "product", "type": ["null", {"type": "enum", "name": "Product", "symbols": ["DNA",
"RNA"]}], "doc": ""}, {"name": "preparationMethod", "type": ["null", {"type": "enum", "name":
"PreparationMethod", "symbols": ["EDTA", "ORAGENE", "FF", "FFPE", "CD128_SORTED_CELLS",
"ASPIRATE"]}], "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": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "additionalInformation",
        "adoptedStatus",
        "affectionStatus",
        "ancestries",
        "consanguineousParents",
        "consentStatus",
        "disorderList",
        "fatherId",
        "gelSuperFamilyId",
        "hpoTermList",
        "inbreedingCoefficient",
        "isProband",
        "lifeStatus",
        "monozygotic",
        "motherId",
        "participantId",
        "participantQCState",
        "pedigreeId",
        "personKaryotypicSex",
        "samples",
        "sex",
        "superFatherId",
        "superMotherId",
        "twinGroup",
        "yearOfBirth",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'additionalInformation', 'adoptedStatus', 'affectionStatus',
        'ancestries', 'consanguineousParents', 'consentStatus',
        'disorderList', 'fatherId', 'gelSuperFamilyId', 'hpoTermList',
        'inbreedingCoefficient', 'isProband', 'lifeStatus',
        'monozygotic', 'motherId', 'participantId',
        'participantQCState', 'pedigreeId', 'personKaryotypicSex',
        'samples', 'sex', 'superFatherId', 'superMotherId',
        '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.consanguineousParents = kwargs.get(
            'consanguineousParents', None)
        self.consentStatus = kwargs.get(
            'consentStatus', 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.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.pedigreeId = kwargs.get(
            'pedigreeId', None)
        self.personKaryotypicSex = kwargs.get(
            'personKaryotypicSex', None)
        self.samples = kwargs.get(
            'samples', None)
        self.sex = kwargs.get(
            'sex', None)
        self.superFatherId = kwargs.get(
            'superFatherId', None)
        self.superMotherId = kwargs.get(
            'superMotherId', None)
        self.twinGroup = kwargs.get(
            'twinGroup', None)
        self.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):
    """
    No documentation
    """
    EDTA = "EDTA"
    ORAGENE = "ORAGENE"
    FF = "FF"
    FFPE = "FFPE"
    CD128_SORTED_CELLS = "CD128_SORTED_CELLS"
    ASPIRATE = "ASPIRATE"

    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 RDFamilyChange(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "RDFamilyChange", "namespace": "org.gel.models.participant.avro",
"fields": [{"name": "FamilyId", "type": "string", "doc": ""}, {"name": "code", "type": {"type":
"enum", "name": "RDFamilyChangeCode", "doc": "", "symbols": ["FamilyAdded", "FamilyDeleted",
"ProbandChanged", "ParticipantAdded", "ParticipantRemoved", "ConsentStatusChanged",
"AffectionStatusChanged", "PanelAssignmentChanged", "SexChanged", "SampleChanged"]}, "doc": ""},
{"name": "Family", "type": {"type": "record", "name": "Pedigree", "doc": "", "fields": [{"name":
"versionControl", "type": ["null", {"type": "record", "name": "VersionControl", "fields": [{"name":
"GitVersionControl", "type": "string", "doc": "", "default": "1.1.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": "record",
"name": "HpoTermModifiers", "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"]}]}]}], "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": "samples", "type": ["null", {"type": "array", "items": {"type": "record", "name": "Sample",
"fields": [{"name": "sampleId", "type": "string", "doc": ""}, {"name": "labSampleId", "type": "int",
"doc": ""}, {"name": "source", "type": ["null", {"type": "enum", "name": "SampleSource", "doc": "",
"symbols": ["TUMOUR", "BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS",
"BONE_MARROW_ASPIRATE_TUMOUR_CELLS", "BLOOD", "SALIVA", "FIBROBLAST", "TISSUE"]}], "doc": ""},
{"name": "product", "type": ["null", {"type": "enum", "name": "Product", "symbols": ["DNA",
"RNA"]}], "doc": ""}, {"name": "preparationMethod", "type": ["null", {"type": "enum", "name":
"PreparationMethod", "symbols": ["EDTA", "ORAGENE", "FF", "FFPE", "CD128_SORTED_CELLS",
"ASPIRATE"]}], "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": ""}]}}, "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": "panelVersion", "type": ["null", "string"], "doc": ""}, {"name":
"reviewOutcome", "type": "string", "doc": ""}, {"name": "multipleGeneticOrigins", "type": "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": ""}]}, "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "Family",
        "FamilyId",
        "code",
    }

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

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

        return embeddedTypes[fieldName]

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

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


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

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


class 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 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": ""}]}], "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": ""}]}}], "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": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "genomeAssembly",
        "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', 'mendelErrorsTool',
        'mendelErrorsToolVersion', 'numberOfMarkers',
        'numberOfMarkersLE', 'pathToDirectory', 'relatednessTool',
        'relatednessToolVersion', 'runDate', 'rvsgCheckVersion',
        'samplesInfo'
    ]

    def __init__(self, **kwargs):
        self.genomeAssembly = kwargs.get(
            'genomeAssembly', 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 Sample(ProtocolElement):
    """
    No documentation
    """
    _schemaSource = """
{"type": "record", "name": "Sample", "namespace": "org.gel.models.participant.avro", "fields":
[{"name": "sampleId", "type": "string", "doc": ""}, {"name": "labSampleId", "type": "int", "doc":
""}, {"name": "source", "type": ["null", {"type": "enum", "name": "SampleSource", "doc": "",
"symbols": ["TUMOUR", "BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS",
"BONE_MARROW_ASPIRATE_TUMOUR_CELLS", "BLOOD", "SALIVA", "FIBROBLAST", "TISSUE"]}], "doc": ""},
{"name": "product", "type": ["null", {"type": "enum", "name": "Product", "symbols": ["DNA",
"RNA"]}], "doc": ""}, {"name": "preparationMethod", "type": ["null", {"type": "enum", "name":
"PreparationMethod", "symbols": ["EDTA", "ORAGENE", "FF", "FFPE", "CD128_SORTED_CELLS",
"ASPIRATE"]}], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "labSampleId",
        "preparationMethod",
        "product",
        "sampleId",
        "source",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'labSampleId', 'preparationMethod', 'product', 'sampleId',
        'source'
    ]

    def __init__(self, **kwargs):
        self.labSampleId = kwargs.get(
            'labSampleId', None)
        self.preparationMethod = kwargs.get(
            'preparationMethod', None)
        self.product = kwargs.get(
            'product', None)
        self.sampleId = kwargs.get(
            'sampleId', None)
        self.source = kwargs.get(
            'source', None)


class SampleSource(object):
    """
    The source of the sample
    """
    TUMOUR = "TUMOUR"
    BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS = "BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS"
    BONE_MARROW_ASPIRATE_TUMOUR_CELLS = "BONE_MARROW_ASPIRATE_TUMOUR_CELLS"
    BLOOD = "BLOOD"
    SALIVA = "SALIVA"
    FIBROBLAST = "FIBROBLAST"
    TISSUE = "TISSUE"

    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 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.1.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 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 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 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 non-existant in 1000G *
    `perc_variants_gt_filter`: The percentage of somatic variants that
    are common in 1000G
    """
    _schemaSource = """
{"type": "record", "name": "TumorChecks", "namespace": "org.gel.models.report.avro", "doc": "",
"fields": [{"name": "well_id", "type": "string"}, {"name": "num_variants_gt_filter", "type":
"double"}, {"name": "num_variants_lt_filter", "type": "double"}, {"name": "perc_variants_gt_filter",
"type": "double"}, {"name": "TumorContaminationContEst", "type": "double"}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "TumorContaminationContEst",
        "num_variants_gt_filter",
        "num_variants_lt_filter",
        "perc_variants_gt_filter",
        "well_id",
    }

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

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

        return embeddedTypes[fieldName]

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

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


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

    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": "string", "doc": ""}, {"name": "tumourId", "type":
"string", "doc": ""}, {"name": "programmePhase", "type": ["null", {"type": "enum", "name":
"ProgrammePhase", "symbols": ["CRUK", "OXFORD", "CLL", "IIP", "MAIN", "EXPT"]}], "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": "clinicalSampleDateTime", "type":
["null", "string"], "doc": ""}, {"name": "tumourType", "type": ["null", {"type": "enum", "name":
"TumourType", "symbols": ["PRIMARY", "METASTATIC_RECURRENCE", "RECURRENCE_OF_PRIMARY_TUMOUR",
"METASTASES"]}], "doc": ""}, {"name": "tumourContent", "type": ["null", {"type": "enum", "name":
"TumourContent", "symbols": ["High", "Medium", "Low"]}], "doc": ""}, {"name": "source", "type":
["null", {"type": "enum", "name": "SampleSource", "doc": "", "symbols": ["TUMOUR",
"BONE_MARROW_ASPIRATE_TUMOUR_SORTED_CELLS", "BONE_MARROW_ASPIRATE_TUMOUR_CELLS", "BLOOD", "SALIVA",
"FIBROBLAST", "TISSUE"]}], "doc": ""}, {"name": "preparationMethod", "type": ["null", {"type":
"enum", "name": "PreparationMethod", "symbols": ["EDTA", "ORAGENE", "FF", "FFPE",
"CD128_SORTED_CELLS", "ASPIRATE"]}], "doc": ""}, {"name": "tissueSource", "type": ["null", {"type":
"enum", "name": "TissueSource", "symbols": ["BMA_TUMOUR_SORTED_CELLS", "CT_GUIDED_BIOPSY",
"ENDOSCOPIC_BIOPSY", "ENDOSCOPIC_ULTRASOUND_GUIDED_BIOPSY", "ENDOSCOPIC_ULTRASOUND_GUIDED_FNA",
"LAPAROSCOPIC_BIOPSY", "LAPAROSCOPIC_EXCISION", "MRI_GUIDED_BIOPSY", "NON_GUIDED_BIOPSY",
"SURGICAL_RESECTION", "STEREOTACTICALLY_GUIDED_BIOPSY", "USS_GUIDED_BIOPSY", "NON_STANDARD_BIOPSY",
"NOT_SPECIFIED"]}], "doc": ""}, {"name": "product", "type": ["null", {"type": "enum", "name":
"Product", "symbols": ["DNA", "RNA"]}], "doc": ""}, {"name": "morphologyICD", "type": ["null",
"string"], "doc": ""}, {"name": "morphologySnomedCT", "type": ["null", "string"], "doc": ""},
{"name": "morphologySnomedRT", "type": ["null", "string"], "doc": ""}, {"name": "topographyICD",
"type": ["null", "string"], "doc": ""}, {"name": "topographySnomedCT", "type": ["null", "string"],
"doc": ""}, {"name": "topographySnomedRT", "type": ["null", "string"], "doc": ""}]}
"""
    schema = avro_parse(_schemaSource)
    requiredFields = {
        "LDPCode",
        "clinicalSampleDateTime",
        "diseaseSubType",
        "diseaseType",
        "labSampleId",
        "morphologyICD",
        "morphologySnomedCT",
        "morphologySnomedRT",
        "preparationMethod",
        "product",
        "programmePhase",
        "sampleId",
        "source",
        "tissueSource",
        "topographyICD",
        "topographySnomedCT",
        "topographySnomedRT",
        "tumourContent",
        "tumourId",
        "tumourType",
    }

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

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

        return embeddedTypes[fieldName]

    __slots__ = [
        'LDPCode', 'clinicalSampleDateTime', 'diseaseSubType',
        'diseaseType', 'labSampleId', 'morphologyICD',
        'morphologySnomedCT', 'morphologySnomedRT',
        'preparationMethod', 'product', 'programmePhase', 'sampleId',
        'source', 'tissueSource', 'topographyICD',
        'topographySnomedCT', 'topographySnomedRT', 'tumourContent',
        '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.labSampleId = kwargs.get(
            'labSampleId', None)
        self.morphologyICD = kwargs.get(
            'morphologyICD', None)
        self.morphologySnomedCT = kwargs.get(
            'morphologySnomedCT', None)
        self.morphologySnomedRT = kwargs.get(
            'morphologySnomedRT', 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.source = kwargs.get(
            'source', None)
        self.tissueSource = kwargs.get(
            'tissueSource', None)
        self.topographyICD = kwargs.get(
            'topographyICD', None)
        self.topographySnomedCT = kwargs.get(
            'topographySnomedCT', None)
        self.topographySnomedRT = kwargs.get(
            'topographySnomedRT', None)
        self.tumourContent = kwargs.get(
            'tumourContent', None)
        self.tumourId = kwargs.get(
            'tumourId', None)
        self.tumourType = kwargs.get(
            'tumourType', None)


class TumourType(object):
    """
    No documentation
    """
    PRIMARY = "PRIMARY"
    METASTATIC_RECURRENCE = "METASTATIC_RECURRENCE"
    RECURRENCE_OF_PRIMARY_TUMOUR = "RECURRENCE_OF_PRIMARY_TUMOUR"
    METASTASES = "METASTASES"

    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.1.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.1.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__()
