def set_sister_species_sentence(dm: WBDataManager, conf_parser: GenedescConfigParser, sister_sp_fullname, sister_df: WBDataManager, species, organism, gene_desc: GeneDescription, gene: Gene): best_ortholog = dm.get_best_orthologs_for_gene( gene_desc.gene_id, orth_species_full_name=[sister_sp_fullname], sister_species_data_fetcher=sister_df, ecode_priority_list=[ "EXP", "IDA", "IPI", "IMP", "IGI", "IEP", "HTP", "HDA", "HMP", "HGI", "HEP" ])[0][0] if not best_ortholog[0].startswith("WB:"): best_ortholog[0] = "WB:" + best_ortholog[0] sister_sentences_generator = OntologySentenceGenerator( gene_id=best_ortholog[0], module=Module.GO, data_manager=sister_df, config=conf_parser, humans=sister_sp_fullname == "H**o sapiens", limit_to_group="EXPERIMENTAL") sister_sp_module_sentences = sister_sentences_generator.get_module_sentences( aspect='P', qualifier="involved_in", merge_groups_with_same_prefix=True, keep_only_best_group=True) if sister_sp_module_sentences.contains_sentences(): gene_desc.set_or_extend_module_description_and_final_stats( module=Module.SISTER_SP, description="in " + species[species[organism]["main_sister_species"]]["name"] + ", " + best_ortholog[1] + " " + sister_sp_module_sentences.get_description())
def get_best_orthologs_and_sentence(dm: WBDataManager, orth_fullnames: List[str], gene_desc: GeneDescription, human_genes_props, api_manager, config: GenedescConfigParser): best_orthologs, selected_orth_name = dm.get_best_orthologs_for_gene( gene_desc.gene_id, orth_species_full_name=orth_fullnames) selected_orthologs = [] orth_sent = '' if best_orthologs: gene_desc.stats.set_best_orthologs = [ orth[0] for orth in best_orthologs ] if len(orth_fullnames) == 1 and orth_fullnames[0] == "H**o sapiens": sel_orthologs, orth_sent = generate_ortholog_sentence_wormbase_human( best_orthologs, human_genes_props, config=config) selected_orthologs = [ orth for orth in best_orthologs if orth[1].upper() in sel_orthologs ] else: orth_sent = generate_ortholog_sentence_wormbase_non_c_elegans( best_orthologs, selected_orth_name, api_manager=api_manager, config=config) return selected_orthologs, orth_sent
def set_orthology_sentence(dm: WBDataManager, orth_fullnames: List[str], gene_desc: GeneDescription, human_genes_props, api_manager): best_orthologs, selected_orth_name = dm.get_best_orthologs_for_gene(gene_desc.gene_id, orth_species_full_name=orth_fullnames) selected_orthologs = [] if best_orthologs: gene_desc.stats.set_best_orthologs = [orth[0] for orth in best_orthologs] if len(orth_fullnames) == 1 and orth_fullnames[0] == "H**o sapiens": sel_orthologs, orth_sent = generate_ortholog_sentence_wormbase_human(best_orthologs, human_genes_props) selected_orthologs = [orth for orth in best_orthologs if orth[1] in sel_orthologs] else: orth_sent = generate_ortholog_sentence_wormbase_non_c_elegans(best_orthologs, selected_orth_name, api_manager=api_manager) gene_desc.set_or_extend_module_description_and_final_stats(module=Module.ORTHOLOGY, description=orth_sent) return selected_orthologs