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
Пример #3
0
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