def hdpa(): """Create gene fixture for HDPA.""" params = { "match_type": MatchType.NO_MATCH, "label": "Hodgkin disease, susceptibility, pseudoautosomal", "concept_id": "ncbigene:50829", "symbol": "HDPA", "aliases": [], "xrefs": [], "previous_symbols": [], "associated_with": ["omim:300221"], "symbol_status": None, "location_annotations": [], "strand": None, "locations": [{ "id": "ga4gh:CL.kl9HXvnUCE6Z1ktXibt83NBdXvxnT2RA", "chr": "X", "end": "p22.32", "start": "pter", "species_id": "taxonomy:9606", "type": "ChromosomeLocation" }], "gene_type": "unknown" } return Gene(**params)
def cecr(): """Create a CECR gene fixture.""" params = { "match_type": MatchType.NO_MATCH, "label": "cat eye syndrome chromosome region", "concept_id": "hgnc:1838", "symbol": "CECR", "location_annotations": [], "strand": None, "locations": [{ "id": "ga4gh:CL.AgASk5sB6LCeaB6rcqOwmrm16ise3pof", "chr": "22", "end": "q11", "start": "pter", "species_id": "taxonomy:9606", "type": "ChromosomeLocation" }], "previous_symbols": [], "aliases": [], "symbol_status": "approved", "xrefs": ["ncbigene:1055"], "associated_with": [], "gene_type": "region" } return Gene(**params)
def gene(): """Create a valid gene test fixture.""" return Gene( match_type=100, concept_id='hgnc:1097', symbol='BRAF' )
def mhb(): """Create gene fixture for MHB.""" params = { "match_type": MatchType.NO_MATCH, "label": "myopathy, hyaline body, autosomal recessive", "concept_id": "ncbigene:619511", "symbol": "MHB", "aliases": [], "xrefs": [], "previous_symbols": [], "associated_with": ["omim:255160"], "symbol_status": None, "location_annotations": [], "strand": None, "locations": [{ "id": "ga4gh:CL.6vlmdqdXYxSAGsJI9no7kLN5iLKpvr5X", "chr": "3", "end": "p21.32", "start": "p22.2", "species_id": "taxonomy:9606", "type": "ChromosomeLocation" }], "gene_type": "unknown" } return Gene(**params)
def trl_cag2_1(): """Create a TRL-CAG2-1 gene fixture.""" params = { "match_type": MatchType.NO_MATCH, "label": "tRNA-Leu (anticodon CAG) 2-1", "concept_id": "hgnc:34692", "symbol": "TRL-CAG2-1", "location_annotations": [], "strand": None, "locations": [{ "id": "ga4gh:CL.aZ5aYHaC3GhDWgwhKkAcd9GBvkEo034v", "chr": "16", "end": "q13", "start": "q21", "species_id": "taxonomy:9606", "type": "ChromosomeLocation" }], "previous_symbols": ["TRNAL13"], "aliases": ["tRNA-Leu-CAG-2-1"], "symbol_status": "approved", "xrefs": ["ncbigene:100189130"], "associated_with": ["ena.embl:HG983896"], "gene_type": "RNA, transfer" } return Gene(**params)
def cecr(): """Create a CECR gene fixture.""" params = { 'match_type': MatchType.NO_MATCH, 'label': 'cat eye syndrome chromosome region', 'concept_id': 'hgnc:1838', 'symbol': 'CECR', 'location_annotations': [], 'strand': None, 'locations': [{ '_id': 'ga4gh:VCL.-hT6Cp6B32GmZTD8BXh1xf6SJeLM1uN7', 'chr': '22', 'interval': { 'end': 'q11', 'start': 'pter', 'type': 'CytobandInterval' }, 'species_id': 'taxonomy:9606', 'type': 'ChromosomeLocation' }], 'previous_symbols': [], 'aliases': [], 'symbol_status': 'approved', 'xrefs': ['ncbigene:1055'], 'associated_with': [] } return Gene(**params)
def trl_cag2_1(): """Create a TRL-CAG2-1 gene fixture.""" params = { 'match_type': MatchType.NO_MATCH, 'label': 'tRNA-Leu (anticodon CAG) 2-1', 'concept_id': 'hgnc:34692', 'symbol': 'TRL-CAG2-1', 'location_annotations': [], 'strand': None, 'locations': [{ '_id': 'ga4gh:VCL.r_iXu-FjXuJjmeNhmDEputf6tgjXRQIr', 'chr': '16', 'interval': { 'end': 'q13', 'start': 'q21', 'type': 'CytobandInterval' }, 'species_id': 'taxonomy:9606', 'type': 'ChromosomeLocation' }], 'previous_symbols': ['TRNAL13'], 'aliases': ['tRNA-Leu-CAG-2-1'], 'symbol_status': 'approved', 'xrefs': ['ncbigene:100189130'], 'associated_with': ['ena.embl:HG983896'] } return Gene(**params)
def ddx11l1(): """Create a DDX11L1 fixutre.""" params = { 'match_type': MatchType.NO_MATCH, 'concept_id': 'ensembl:ENSG00000223972', 'symbol': 'DDX11L1', 'label': 'DEAD/H-box helicase 11 like 1 (pseudogene)', 'previous_symbols': [], 'aliases': [], 'xrefs': ['hgnc:37102'], 'symbol_status': None, 'location_annotations': [], 'locations': [ { '_id': 'ga4gh:VSL.naD2_Q0JKCEKkGj8FvMzerePKnNNcF5N', 'interval': { 'end': {'value': 14409, 'type': 'Number'}, 'start': {'value': 11868, 'type': 'Number'}, 'type': 'SequenceInterval' }, 'sequence_id': 'ga4gh:SQ.Ya6Rs7DHhDeg7YaOSg1EoNi3U_nQ9SvO', 'type': 'SequenceLocation' } ], 'strand': '+', 'associated_with': [] } return Gene(**params)
def u6(): """Create a U6 test fixture.""" params = { 'match_type': MatchType.NO_MATCH, 'concept_id': 'ensembl:ENSG00000278757', 'symbol': 'U6', 'label': 'U6 spliceosomal RNA', 'previous_symbols': [], 'aliases': [], 'xrefs': [], 'symbol_status': None, 'location_annotations': [], 'locations': [ { '_id': 'ga4gh:VSL.mtPBK609IiOFy0gztyTnEGdWM_k_e85C', 'interval': { 'end': {'value': 516479, 'type': 'Number'}, 'start': {'value': 516375, 'type': 'Number'}, 'type': 'SequenceInterval' }, 'sequence_id': 'ga4gh:SQ.Ya6Rs7DHhDeg7YaOSg1EoNi3U_nQ9SvO', 'type': 'SequenceLocation' } ], 'strand': '-', 'associated_with': ['rfam:RF00026'] } return Gene(**params)
def spg37(): """Create gene fixture for SPG37.""" params = { 'match_type': MatchType.NO_MATCH, 'label': 'spastic paraplegia 37 (autosomal dominant)', 'concept_id': 'ncbigene:100049159', 'symbol': 'SPG37', 'aliases': [], 'xrefs': [], 'previous_symbols': [], 'associated_with': ['omim:611945'], 'symbol_status': None, 'location_annotations': [], 'strand': None, 'locations': [{ '_id': 'ga4gh:VCL.P5jAIluXneqHZMV9FBEQ2ZqOpO-8fqbP', 'chr': '8', 'interval': { 'end': 'q13.3', 'start': 'p21.2', 'type': 'CytobandInterval' }, 'species_id': 'taxonomy:9606', 'type': 'ChromosomeLocation' }] } return Gene(**params)
def hsa_mir_1253(): """Create a AC091057.5 test fixture.""" params = { 'match_type': MatchType.NO_MATCH, 'concept_id': 'ensembl:ENSG00000272920', 'symbol': 'hsa-mir-1253', 'label': 'hsa-mir-1253', 'previous_symbols': [], 'aliases': [], 'xrefs': [], 'symbol_status': None, 'location_annotations': [], 'locations': [ { '_id': 'ga4gh:VSL.goBvYPYef2mQildG6AiiRNVhTo-g4-1E', 'interval': { 'end': {'value': 2748182, 'type': 'Number'}, 'start': {'value': 2748077, 'type': 'Number'}, 'type': 'SequenceInterval' }, 'sequence_id': 'ga4gh:SQ.dLZ15tNO1Ur0IcGjwc3Sdi_0A6Yf4zm7', 'type': 'SequenceLocation' } ], 'strand': '+', 'associated_with': ['mirbase:MI0006387'] } return Gene(**params)
def hdpa(): """Create gene fixture for HDPA.""" params = { 'match_type': MatchType.NO_MATCH, 'label': 'Hodgkin disease, susceptibility, pseudoautosomal', 'concept_id': 'ncbigene:50829', 'symbol': 'HDPA', 'aliases': [], 'xrefs': [], 'previous_symbols': [], 'associated_with': ['omim:300221'], 'symbol_status': None, 'location_annotations': [], 'strand': None, 'locations': [{ '_id': 'ga4gh:VCL.faRHNO_VJMssbjYQ628mfdRgLqg9qK2b', 'chr': 'X', 'interval': { 'end': 'p22.32', 'start': 'pter', 'type': 'CytobandInterval' }, 'species_id': 'taxonomy:9606', 'type': 'ChromosomeLocation' }] } return Gene(**params)
def mhb(): """Create gene fixture for MHB.""" params = { 'match_type': MatchType.NO_MATCH, 'label': 'myopathy, hyaline body, autosomal recessive', 'concept_id': 'ncbigene:619511', 'symbol': 'MHB', 'aliases': [], 'xrefs': [], 'previous_symbols': [], 'associated_with': ['omim:255160'], 'symbol_status': None, 'location_annotations': [], 'strand': None, 'locations': [{ '_id': 'ga4gh:VCL.2WDJu032Gc_9BN4qiNELb577XomiZv8z', 'chr': '3', 'interval': { 'end': 'p21.32', 'start': 'p22.2', 'type': 'CytobandInterval' }, 'species_id': 'taxonomy:9606', 'type': 'ChromosomeLocation' }] } return Gene(**params)
def glc1b(): """Create gene fixture for GLC1B.""" params = { 'match_type': MatchType.NO_MATCH, 'label': 'glaucoma 1, open angle, B (adult-onset)', 'concept_id': 'ncbigene:2722', 'symbol': 'GLC1B', 'aliases': [], 'xrefs': [], 'previous_symbols': [], 'associated_with': ['omim:606689'], 'symbol_status': None, 'location_annotations': [], 'strand': None, 'locations': [{ '_id': 'ga4gh:VCL.HStPIl_6UkNQmbjZW1TeUmHFMptbIj6t', 'chr': '2', 'interval': { 'end': 'q13', 'start': 'cen', 'type': 'CytobandInterval' }, 'species_id': 'taxonomy:9606', 'type': 'ChromosomeLocation' }] } return Gene(**params)
def loc106783576(): """Create gene fixture for .""" params = { 'match_type': MatchType.NO_MATCH, 'label': 'nonconserved acetylation island sequence 68 enhancer', 'concept_id': 'ncbigene:106783576', 'symbol': 'LOC106783576', 'aliases': [], 'xrefs': [], 'previous_symbols': [], 'associated_with': [], 'symbol_status': None, 'location_annotations': [], 'strand': None, 'locations': [{ '_id': 'ga4gh:VCL.RFN35KQMhqzhmo4QP7AxKAzlPtnh7slL', 'chr': '10', 'interval': { 'end': 'cen', 'start': 'pter', 'type': 'CytobandInterval' }, 'species_id': 'taxonomy:9606', 'type': 'ChromosomeLocation' }] } return Gene(**params)
def spg37(): """Create gene fixture for SPG37.""" params = { "match_type": MatchType.NO_MATCH, "label": "spastic paraplegia 37 (autosomal dominant)", "concept_id": "ncbigene:100049159", "symbol": "SPG37", "aliases": [], "xrefs": [], "previous_symbols": [], "associated_with": ["omim:611945"], "symbol_status": None, "location_annotations": [], "strand": None, "locations": [{ "id": "ga4gh:CL.XWbwTwmJ95KD-aCuXfJcD8cNIvXbiXRh", "chr": "8", "end": "q13.3", "start": "p21.2", "species_id": "taxonomy:9606", "type": "ChromosomeLocation" }], "gene_type": "unknown" } return Gene(**params)
def CH17_340M24_3(): """Create a CH17-340M24.3 test fixture.""" params = { 'match_type': MatchType.NO_MATCH, 'concept_id': 'ensembl:ENSG00000197180', 'symbol': 'CH17-340M24.3', 'label': 'uncharacterized protein BC009467', 'previous_symbols': [], 'aliases': [], 'xrefs': ['ncbigene:158960'], 'symbol_status': None, 'location_annotations': [], 'locations': [ { '_id': 'ga4gh:VSL.EJaq2KK3bIftDcyP1YAmJLb08JbBAmAn', 'interval': { 'end': {'value': 154428479, 'type': 'Number'}, 'start': {'value': 154424379, 'type': 'Number'}, 'type': 'SequenceInterval' }, 'sequence_id': 'ga4gh:SQ.w0WZEvgJF0zf_P4yyTzjjv9oW1z61HHP', 'type': 'SequenceLocation' } ], 'strand': '-', 'associated_with': [] } return Gene(**params)
def add_record(self, response: Dict[str, Dict], item: Dict, match_type: MatchType) -> (Dict, str): """Add individual record (i.e. Item in DynamoDB) to response object :param Dict[str, Dict] response: in-progress response object to return to client :param Dict item: Item retrieved from DynamoDB :param MatchType match_type: match type for query :return: Tuple containing updated response object, and string containing name of the source of the match """ del item['label_and_type'] # DynamoDB Numbers get converted to Decimal item = self._cast_location_ints(item) item["match_type"] = match_type gene = Gene(**item) src_name = item['src_name'] matches = response['source_matches'] if src_name not in matches.keys(): pass elif matches[src_name] is None: matches[src_name] = { 'records': [gene], 'source_meta_': self.fetch_meta(src_name) } else: matches[src_name]['records'].append(gene) return response, src_name
def AC091057_5(): """Create a AC091057.5 test fixture.""" params = { 'match_type': MatchType.NO_MATCH, 'concept_id': 'ensembl:ENSG00000284906', 'symbol': 'AC091057.5', 'label': 'Rho GTPase-activating protein 11B', 'previous_symbols': [], 'aliases': [], 'xrefs': [], 'symbol_status': None, 'location_annotations': [], 'locations': [ { '_id': 'ga4gh:VSL.sZGLn8Ah76rP34pu8-7W73lkCwQ7XSJD', 'interval': { 'end': {'value': 30685606, 'type': 'Number'}, 'start': {'value': 30624547, 'type': 'Number'}, 'type': 'SequenceInterval' }, 'sequence_id': 'ga4gh:SQ.AsXvWL1-2i5U_buw6_niVIxD6zTbAuS6', 'type': 'SequenceLocation' } ], 'strand': '+', 'associated_with': ['uniprot:Q3KRB8'] } return Gene(**params)
def gage4(): """Create a GAGE4 gene fixture.""" params = { "match_type": MatchType.NO_MATCH, "label": "G antigen 4", "concept_id": "hgnc:4101", "symbol": "GAGE4", "location_annotations": ["not on reference assembly"], "strand": None, "locations": [{ "id": "ga4gh:CL.6KzwrFm2WeSXqwIIiNbAu-pKQQHt2q5Q", "chr": "X", "end": "p11.2", "start": "p11.4", "species_id": "taxonomy:9606", "type": "ChromosomeLocation" }], "previous_symbols": [], "aliases": ["CT4.4"], "symbol_status": "approved", "xrefs": ["ncbigene:2576"], "associated_with": [ "refseq:NM_001474", "omim:300597", "uniprot:P0DSO3", "ena.embl:U19145", "pubmed:7544395" ], "gene_type": "gene with protein product" } return Gene(**params)
def spry3(): """Create a SPRY3 test fixture.""" params = { 'match_type': MatchType.NO_MATCH, 'concept_id': 'ensembl:ENSG00000168939', 'symbol': 'SPRY3', 'label': 'sprouty RTK signaling antagonist 3', 'previous_symbols': [], 'aliases': [], 'xrefs': ['hgnc:11271'], 'symbol_status': None, 'location_annotations': [], 'locations': [ { '_id': 'ga4gh:VSL.7Jax3UNlW_EZrZ44U-R1eLe_OeCC71IR', 'interval': { 'end': {'value': 155782459, 'type': 'Number'}, 'start': {'value': 155612571, 'type': 'Number'}, 'type': 'SequenceInterval' }, 'sequence_id': 'ga4gh:SQ.w0WZEvgJF0zf_P4yyTzjjv9oW1z61HHP', 'type': 'SequenceLocation' } ], 'strand': '+', 'associated_with': [] } return Gene(**params)
def a1bg_as1(): """Create an A1BG-AS1 gene fixture.""" params = { "match_type": MatchType.NO_MATCH, "label": "A1BG antisense RNA 1", "concept_id": "hgnc:37133", "symbol": "A1BG-AS1", "location_annotations": [], "strand": None, "locations": [{ "id": "ga4gh:CL.Rz-M5wA0_bIhQYLKi2ZPqlqW3nBPfAx5", "chr": "19", "end": "q13.43", "start": "q13.43", "species_id": "taxonomy:9606", "type": "ChromosomeLocation" }], "previous_symbols": ["NCRNA00181", "A1BGAS", "A1BG-AS"], "aliases": ["FLJ23569"], "symbol_status": "approved", "associated_with": [ "vega:OTTHUMG00000183508", "ucsc:uc002qse.3", "refseq:NR_015380", "ena.embl:BC040926", "refseq:NR_015380", "ena.embl:BC040926" ], "xrefs": ["ensembl:ENSG00000268895", "ncbigene:503538"], "gene_type": "RNA, long non-coding" } return Gene(**params)
def tp53(): """Create a TP53 fixture.""" params = { 'match_type': MatchType.NO_MATCH, 'concept_id': 'ensembl:ENSG00000141510', 'symbol': 'TP53', 'label': 'tumor protein p53', 'previous_symbols': [], 'aliases': [], 'xrefs': ['hgnc:11998'], 'symbol_status': None, 'location_annotations': [], 'locations': [ { '_id': 'ga4gh:VSL.7q-vAjxSYARaPbbUjhDng2oay795NfbE', 'interval': { 'end': {'value': 7687538, 'type': 'Number'}, 'start': {'value': 7661778, 'type': 'Number'}, 'type': 'SequenceInterval' }, 'sequence_id': 'ga4gh:SQ.dLZ15tNO1Ur0IcGjwc3Sdi_0A6Yf4zm7', 'type': 'SequenceLocation' } ], 'strand': '-', 'associated_with': [] } return Gene(**params)
def mafip(): """Create a MAFIP gene fixture.""" params = { "match_type": MatchType.NO_MATCH, "label": "MAFF interacting protein (pseudogene)", "concept_id": "hgnc:31102", "symbol": "MAFIP", "location_annotations": ["unplaced", "14"], "locations": [], "strand": None, "previous_symbols": [], "aliases": ["FLJ35473", "FLJ00219", "FLJ39633", "MIP", "pp5644", "TEKT4P4"], "symbol_status": "approved", "xrefs": ["ensembl:ENSG00000274847", "ncbigene:727764"], "associated_with": [ "vega:OTTHUMG00000188065", "refseq:NR_046439", "uniprot:Q8WZ33", "ena.embl:AK074146", "ena.embl:AF289559", "pubmed:16549056", "pubmed:15881666" ], "gene_type": "pseudogene" } return Gene(**params)
def mafip(): """Create a MAFIP gene fixture.""" params = { 'match_type': MatchType.NO_MATCH, 'label': 'MAFF interacting protein (pseudogene)', 'concept_id': 'hgnc:31102', 'symbol': 'MAFIP', 'location_annotations': ['unplaced', '14'], 'locations': [], 'strand': None, 'previous_symbols': [], 'aliases': ['FLJ35473', 'FLJ00219', 'FLJ39633', 'MIP', 'pp5644', 'TEKT4P4'], 'symbol_status': 'approved', 'xrefs': ['ensembl:ENSG00000274847', 'ncbigene:727764'], 'associated_with': [ 'vega:OTTHUMG00000188065', 'refseq:NR_046439', 'uniprot:Q8WZ33', 'ena.embl:AK074146', 'ena.embl:AF289559', 'pubmed:16549056', 'pubmed:15881666' ] } return Gene(**params)
def glc1b(): """Create gene fixture for GLC1B.""" params = { "match_type": MatchType.NO_MATCH, "label": "glaucoma 1, open angle, B (adult-onset)", "concept_id": "ncbigene:2722", "symbol": "GLC1B", "aliases": [], "xrefs": [], "previous_symbols": [], "associated_with": ["omim:606689"], "symbol_status": None, "location_annotations": [], "strand": None, "locations": [{ "id": "ga4gh:CL.8D0hLCktRxyPrx4Etgabq10vEq6TtU43", "chr": "2", "end": "q13", "start": "cen", "species_id": "taxonomy:9606", "type": "ChromosomeLocation" }], "gene_type": "unknown" } return Gene(**params)
def rps24p5(): """Create a RPS24P5 gene fixture.""" params = { 'match_type': MatchType.NO_MATCH, 'label': 'ribosomal protein S24 pseudogene 5', 'concept_id': 'hgnc:36026', 'symbol': 'RPS24P5', 'location_annotations': [], 'strand': None, 'locations': [{ '_id': 'ga4gh:VCL.dLLTOKtFTnVd3ope5gTii1Gbdj7FxSfa', 'chr': '1', 'interval': { 'end': 'q41', 'start': 'p36.13', 'type': 'CytobandInterval' }, 'species_id': 'taxonomy:9606', 'type': 'ChromosomeLocation' }], 'previous_symbols': [], 'aliases': [], 'symbol_status': 'approved', 'xrefs': ['ncbigene:100271094'], 'associated_with': ['refseq:NG_011274', 'pubmed:19123937'] } return Gene(**params)
def rps24p5(): """Create a RPS24P5 gene fixture.""" params = { "match_type": MatchType.NO_MATCH, "label": "ribosomal protein S24 pseudogene 5", "concept_id": "hgnc:36026", "symbol": "RPS24P5", "location_annotations": [], "strand": None, "locations": [{ "id": "ga4gh:CL.Ri0ddtMpe6DGzrC9_QGbL35gYAtU2bh_", "chr": "1", "end": "q41", "start": "p36.13", "species_id": "taxonomy:9606", "type": "ChromosomeLocation" }], "previous_symbols": [], "aliases": [], "symbol_status": "approved", "xrefs": ["ncbigene:100271094"], "associated_with": ["refseq:NG_011274", "pubmed:19123937"], "gene_type": "pseudogene" } return Gene(**params)
def loc106783576(): """Create gene fixture for .""" params = { "match_type": MatchType.NO_MATCH, "label": "nonconserved acetylation island sequence 68 enhancer", "concept_id": "ncbigene:106783576", "symbol": "LOC106783576", "aliases": [], "xrefs": [], "previous_symbols": [], "associated_with": [], "symbol_status": None, "location_annotations": [], "strand": None, "locations": [{ "id": "ga4gh:CL.YYGQrLtmKwKgp38asAkHT8AydAidnui8", "chr": "10", "end": "cen", "start": "pter", "species_id": "taxonomy:9606", "type": "ChromosomeLocation" }], "gene_type": "biological-region" } return Gene(**params)
def prkrap1(): """Create gene fixture for PRKRAP1.""" params = { "match_type": MatchType.NO_MATCH, "label": "protein activator of interferon induced protein kinase " "EIF2AK2 pseudogene 1", "concept_id": "ncbigene:731716", "symbol": "PRKRAP1", "aliases": [], "xrefs": ["hgnc:33447"], "previous_symbols": ["LOC100289695"], "associated_with": [], "symbol_status": None, "location_annotations": ["alternate reference locus"], "strand": "+", "locations": [{ "id": "ga4gh:CL.FYt7UkCHZVLpkYe7zhNdMk1K6lxl_k7I", "chr": "6", "end": "p21.3", "start": "p21.3", "species_id": "taxonomy:9606", "type": "ChromosomeLocation" }, { "id": "ga4gh:SL.4rniEdEGTHBg9ZkvZLEVPR_MSBUlU2ih", "end": { "value": 3941874, "type": "Number" }, "start": { "value": 3940269, "type": "Number" }, "sequence_id": "ga4gh:SQ.MjujHSAsgNWRTX4w3ysM7b5OVhZpdXu1", "type": "SequenceLocation" }, { "id": "ga4gh:SL.qlH29_Ijp2JDyb29kxyCrtLOBa0NNx9j", "end": { "value": 3932085, "type": "Number" }, "start": { "value": 3930480, "type": "Number" }, "sequence_id": "ga4gh:SQ.Q8IworEhpLeXwpz1CHM7C3luysh-ltx-", "type": "SequenceLocation" }], "gene_type": "pseudo" } return Gene(**params)