def load_panel(self, parsed_panel): """Load a gene panel based on the info sent A panel object is built and integrity checks are made. The panel object is then loaded into the database. Args: path(str): Path to panel file institute(str): Name of institute that owns the panel panel_id(str): Panel id date(datetime.datetime): Date of creation version(float) full_name(str): Option to have a long name panel_info(dict): { 'file': <path to panel file>(str), 'institute': <institute>(str), 'type': <panel type>(str), 'date': date, 'version': version, 'panel_name': panel_id, 'full_name': name, } """ panel_obj = build_panel(parsed_panel, self) self.add_gene_panel(panel_obj)
def load_panel(self, parsed_panel): """Load a gene panel based on the info sent A panel object is built and integrity checks are made. The panel object is then loaded into the database. Args: path(str): Path to panel file institute(str): Name of institute that owns the panel panel_id(str): Panel id date(datetime.datetime): Date of creation version(float) full_name(str): Option to have a long name panel_info(dict): { 'file': <path to panel file>(str), 'institute': <institute>(str), 'type': <panel type>(str), 'date': date, 'version': version, 'panel_name': panel_id, 'full_name': name, } """ panel_obj = build_panel(parsed_panel, self) self.add_gene_panel(panel_obj)
def load_panel(adapter, panel_info): """Load a gene panel into the databse Args: adapter(MongoAdapter) panel_info(dict) """ panel_data = parse_gene_panel(panel_info) panel_obj = build_panel(panel_data, adapter) # Check if the panel exists in database panel = adapter.gene_panel(panel_obj['panel_name'], panel_obj['version']) if not panel: adapter.add_gene_panel(panel_obj) else: logger.info("Panel {} version {} already exists".format(panel_obj['panel_name'], panel_obj['version']))
def load_panel(self, path, institute, panel_id, date, panel_type='clinical', version=1.0, display_name=None): """Load a gene panel based on the info sent The panel info is first parsed, then a panel object is built and integrity checks are made. The panel object is then loaded into the database. Args: path(str): Path to panel file institute(str): Name of institute that owns the panel panel_id(str): Panel id date(datetime.datetime): Date of creation version(float) full_name(str): Option to have a long name panel_info(dict): { 'file': <path to panel file>(str), 'institute': <institute>(str), 'type': <panel type>(str), 'date': date, 'version': version, 'panel_name': panel_id, 'full_name': name, } """ panel_data = parse_gene_panel( path=path, institute=institute, panel_type=panel_type, date=date, version=version, panel_id=panel_id, display_name=display_name, ) panel_obj = build_panel(panel_data, self) self.add_gene_panel(panel_obj)
def load_omim_panel(self, genemap2_lines, mim2gene_lines, institute=None): """Create and load the OMIM-AUTO panel If the panel already exists, update with new information and increase version Args: genemap_lines(iterable(str)): The genemap2 file information mim2gene_lines(iterable(str)): The mim2genes file information institute(str): What institute that is responsible. Default: 'cust002' """ institute = institute or "cust002" existing_panel = self.gene_panel(panel_id="OMIM-AUTO") if not existing_panel: LOG.warning("OMIM-AUTO does not exists in database") LOG.info("Creating a first version") version = 1.0 if existing_panel: version = float(math.floor(existing_panel["version"]) + 1) LOG.info("Setting version to %s", version) date_string = None # Get the correct date when omim files where released for line in genemap2_lines: if "Generated" in line: date_string = line.split(":")[-1].strip() break date_obj = get_date(date_string) if existing_panel: if existing_panel["date"] == date_obj: LOG.warning("There is no new version of OMIM") return panel_data = { "path": None, "type": "clinical", "date": date_obj, "panel_id": "OMIM-AUTO", "institute": institute, "version": version, "display_name": "OMIM-AUTO", "genes": [], } alias_genes = self.genes_by_alias() genes = get_omim_panel_genes( genemap2_lines=genemap2_lines, mim2gene_lines=mim2gene_lines, alias_genes=alias_genes, ) for gene in genes: panel_data["genes"].append(gene) panel_obj = build_panel(panel_data, self) if existing_panel: new_genes = self.compare_mim_panels(existing_panel, panel_obj) if not new_genes: LOG.info("The new version of omim does not differ from the old one") LOG.info("No update is added") return self.update_mim_version( new_genes, panel_obj, old_version=existing_panel["version"] ) self.add_gene_panel(panel_obj)
def load_omim_panel(self, api_key, institute=None): """Create and load the OMIM-AUTO panel""" existing_panel = self.gene_panel(panel_id='OMIM-AUTO') if not existing_panel: LOG.warning("OMIM-AUTO does not exists in database") LOG.info('Creating a first version') version = 1.0 if existing_panel: version = float(math.floor(existing_panel['version']) + 1) LOG.info("Setting version to %s", version) try: mim_files = fetch_mim_files(api_key=api_key, genemap2=True, mim2genes=True) except Exception as err: raise err date_string = None # Get the correct date when omim files where released for line in mim_files['genemap2']: if 'Generated' in line: date_string = line.split(':')[-1].lstrip().rstrip() date_obj = get_date(date_string) if existing_panel: if existing_panel['date'] == date_obj: LOG.warning("There is no new version of OMIM") return panel_data = {} panel_data['path'] = None panel_data['type'] = 'clinical' panel_data['date'] = date_obj panel_data['panel_id'] = 'OMIM-AUTO' panel_data['institute'] = institute or 'cust002' panel_data['version'] = version panel_data['display_name'] = 'OMIM-AUTO' panel_data['genes'] = [] alias_genes = self.genes_by_alias() genes = get_omim_panel_genes( genemap2_lines = mim_files['genemap2'], mim2gene_lines = mim_files['mim2genes'], alias_genes = alias_genes, ) for gene in genes: panel_data['genes'].append(gene) panel_obj = build_panel(panel_data, self) if existing_panel: new_genes = self.compare_mim_panels(existing_panel, panel_obj) if new_genes: self.update_mim_version(new_genes, panel_obj, old_version=existing_panel['version']) else: LOG.info("The new version of omim does not differ from the old one") LOG.info("No update is added") return self.add_gene_panel(panel_obj)
def panel_obj(request, parsed_panel, gene_database): """docstring for parsed_panels""" panel = build_panel(parsed_panel, gene_database) return panel
def panel_obj(request, parsed_panel, gene_database): """Return a panel object""" panel = build_panel(parsed_panel, gene_database) return panel
def demo(context): """Setup a scout demo instance. This instance will be populated with a case a gene panel and some variants. """ log.info("Running scout setup demo") institute_name = context.obj['institute_name'] user_name = context.obj['user_name'] user_mail = context.obj['user_mail'] adapter = context.obj['adapter'] log.info("Setting up database %s", context.obj['mongodb']) log.info("Deleting previous database") for collection_name in adapter.db.collection_names(): log.info("Deleting collection %s", collection_name) adapter.db.drop_collection(collection_name) log.info("Database deleted") # Build a institute with id institute_name institute_obj = build_institute( internal_id=institute_name, display_name=institute_name, sanger_recipients=[user_mail] ) # Add the institute to database adapter.add_institute(institute_obj) # Build a user obj user_obj = dict( _id=user_mail, email=user_mail, name=user_name, roles=['admin'], institutes=[institute_name] ) adapter.add_user(user_obj) # Load the genes and transcripts hgnc_handle = context.obj['hgnc'] transcripts37_handle = context.obj['transcripts37'] # transcripts38_handle = context.obj['transcripts38'] exac_handle = context.obj['exac'] hpo_genes_handle = context.obj['hpogenes'] mim2gene_handle = context.obj['mim2gene'] genemap_handle = context.obj['genemap2'] genes37 = link_genes( ensembl_lines=transcripts37_handle, hgnc_lines=hgnc_handle, exac_lines=exac_handle, mim2gene_lines=mim2gene_handle, genemap_lines=genemap_handle, hpo_lines=hpo_genes_handle, ) load_hgnc_genes(adapter, genes37, build='37') hpo_terms_handle = context.obj['hpo_terms'] disease_handle = context.obj['disease_terms'] hpo_disease_handle = context.obj['hpodiseases'] load_hpo( adapter=adapter, hpo_lines=hpo_terms_handle, disease_lines=disease_handle, hpo_disease_lines=hpo_disease_handle ) panel_info = { 'date': datetime.datetime.now(), 'file': panel_path, 'type': 'clinical', 'institute': 'cust000', 'version': '1.0', 'panel_name': 'panel1', 'full_name': 'Test panel' } parsed_panel = parse_gene_panel(panel_info) panel_obj = build_panel(parsed_panel, adapter) load_panel( adapter=adapter, panel_info=panel_info ) case_handle = get_file_handle(load_path) case_data = yaml.load(case_handle) case_data['vcf_snv'] = clinical_snv_path case_data['vcf_sv'] = clinical_sv_path case_data['vcf_snv_research'] = research_snv_path case_data['vcf_sv_research'] = research_sv_path case_data['madeline'] = madeline_path load_scout(adapter, case_data) log.info("Creating indexes") adapter.hgnc_collection.create_index([('build', pymongo.ASCENDING), ('chromosome', pymongo.ASCENDING)]) log.info("hgnc gene index created") log.info("Scout demo instance setup successful")
def load_omim_panel(self, api_key, institute=None): """Create and load the OMIM-AUTO panel""" existing_panel = self.gene_panel(panel_id='OMIM-AUTO') if not existing_panel: LOG.warning("OMIM-AUTO does not exists in database") LOG.info('Creating a first version') version = 1.0 if existing_panel: version = float(math.floor(existing_panel['version']) + 1) LOG.info("Setting version to %s", version) try: mim_files = fetch_mim_files(api_key=api_key, genemap2=True, mim2genes=True) except Exception as err: raise err date_string = None # Get the correct date when omim files where released for line in mim_files['genemap2']: if 'Generated' in line: date_string = line.split(':')[-1].lstrip().rstrip() date_obj = get_date(date_string) if existing_panel: if existing_panel['date'] == date_obj: LOG.warning("There is no new version of OMIM") return panel_data = {} panel_data['path'] = None panel_data['type'] = 'clinical' panel_data['date'] = date_obj panel_data['panel_id'] = 'OMIM-AUTO' panel_data['institute'] = institute or 'cust002' panel_data['version'] = version panel_data['display_name'] = 'OMIM-AUTO' panel_data['genes'] = [] alias_genes = self.genes_by_alias() genes = get_omim_panel_genes( genemap2_lines = mim_files['genemap2'], mim2gene_lines = mim_files['mim2genes'], alias_genes = alias_genes, ) for gene in genes: panel_data['genes'].append(gene) panel_obj = build_panel(panel_data, self) if existing_panel: new_genes = self.compare_mim_panels(existing_panel, panel_obj) if new_genes: self.update_mim_version(new_genes, panel_obj, old_version=existing_panel['version']) else: LOG.info("The new version of omim does not differ from the old one") LOG.info("No update is added") return self.add_gene_panel(panel_obj)