Esempio n. 1
0
def get_drug_disease_mapping_from_cui(name_to_cui_and_confidences,
                                      name_to_drug, synonym_to_drug,
                                      concept_id_to_mesh_id, mesh_id_to_name,
                                      dump_file):
    """
    name_to_cui_and_confidences mapping from MEDI
    name_to_drug & synonym mapping from DrugBank
    concept & mesh_id mapping from UMLS (MSH | MH)
    """
    if dump_file is not None and os.path.exists(dump_file):
        drug_to_diseases = cPickle.load(open(dump_file))
        return drug_to_diseases
    drug_to_diseases = {}  # (mesh_term, mesh_id, association score)
    for name, values in name_to_cui_and_confidences.iteritems():
        # Get drugbank id from name in the label
        drugbank_id, drugbank_name = parse_drugbank.get_drugbank_id_from_name(
            name, name_to_drug, synonym_to_drug)
        if drugbank_id is None:
            continue
        print "%s\t%s\t%s" % (drugbank_name, drugbank_id, name)
        for cui, val in values:
            #print cui, val, cui in concept_id_to_mesh_id
            if cui in concept_id_to_mesh_id:
                dui = concept_id_to_mesh_id[cui]
                phenotype = mesh_id_to_name[dui]
                drug_to_diseases.setdefault(drugbank_id, set()).add(
                    (phenotype, dui, val))
    if dump_file is not None:
        cPickle.dump(drug_to_diseases, open(dump_file, 'w'))
    return drug_to_diseases
Esempio n. 2
0
def get_drug_disease_mapping(spl_id_to_cuis, spl_id_to_names, name_to_drug, synonym_to_drug, concept_id_to_mesh_id, mesh_id_to_name, dump_file):
    """
    spl_id_to_cuis mapping from LabeledIn
    spl_id_to_names mapping from DailyMed rxnorm
    name_to_drug & synonym mapping from DrugBank
    concept & mesh_id mapping from UMLS (MSH | MH)
    """
    if os.path.exists(dump_file):
	drug_to_diseases = cPickle.load(open(dump_file))
	return drug_to_diseases 
    drug_to_diseases = {} # (mesh_id, mesh_term, association score) 
    val = 1
    for spl_id, cuis in spl_id_to_cuis.iteritems():
        if spl_id not in spl_id_to_names:
            continue
	for name in spl_id_to_names[spl_id]:
	    # Get drugbank id from name in the label
	    if name.find(" / ") != -1: # Skip drug combinations
		continue
	    drugbank_id, drugbank_name = parse_drugbank.get_drugbank_id_from_name(drug, name_to_drug, synonym_to_drug, regex_db_name = True)
	    if drugbank_id is not None:
		break
        if drugbank_id is None:
            continue
	print "%s\t%s\t%s\t%s" % (spl_id, drugbank_id, drugbank_name, name)
        for cui in cuis:
            if cui in concept_id_to_mesh_id:
                dui = concept_id_to_mesh_id[cui]
                phenotype = mesh_id_to_name[dui]
                drug_to_diseases.setdefault(drugbank_id, set()).add((phenotype, dui, val))
    cPickle.dump(drug_to_diseases, open(dump_file, 'w'))
    return drug_to_diseases
Esempio n. 3
0
def get_drug_disease_mapping_from_cui(name_to_cui_and_confidences, name_to_drug, synonym_to_drug, concept_id_to_mesh_id, mesh_id_to_name, dump_file):
    """
    name_to_cui_and_confidences mapping from MEDI
    name_to_drug & synonym mapping from DrugBank
    concept & mesh_id mapping from UMLS (MSH | MH)
    """
    if dump_file is not None and os.path.exists(dump_file):
	drug_to_diseases = cPickle.load(open(dump_file))
	return drug_to_diseases 
    drug_to_diseases = {} # (mesh_term, mesh_id, association score) 
    for name, values in name_to_cui_and_confidences.iteritems():
        # Get drugbank id from name in the label
	drugbank_id, drugbank_name = parse_drugbank.get_drugbank_id_from_name(name, name_to_drug, synonym_to_drug)
        if drugbank_id is None:
            continue
	print "%s\t%s\t%s" % (drugbank_name, drugbank_id, name)
        for cui, val in values:
	    #print cui, val, cui in concept_id_to_mesh_id 
            if cui in concept_id_to_mesh_id:
                dui = concept_id_to_mesh_id[cui]
                phenotype = mesh_id_to_name[dui]
                drug_to_diseases.setdefault(drugbank_id, set()).add((phenotype, dui, val))
    if dump_file is not None:
	cPickle.dump(drug_to_diseases, open(dump_file, 'w'))
    return drug_to_diseases
Esempio n. 4
0
def get_drug_disease_mapping(name_to_icd_and_confidences, name_to_drug,
                             synonym_to_drug, icd_to_mesh_ids, mesh_id_to_name,
                             dump_file):
    """
    name_to_icd_and_confidences mapping from MEDI
    name_to_drug & synonym mapping from DrugBank
    icd_to_mesh_ids mapping from DO
    mesh_id_to_name mapping from UMLS (MSH | MH)
    """
    if dump_file is not None and os.path.exists(dump_file):
        drug_to_diseases = cPickle.load(open(dump_file))
        return drug_to_diseases
    drug_to_diseases = {}  # (mesh_term, mesh_id, association score)
    for name, values in name_to_icd_and_confidences.iteritems():
        #if name != "Acarbose":
        #    continue
        # Get drugbank id from name in the label
        drugbank_id, drugbank_name = parse_drugbank.get_drugbank_id_from_name(
            name, name_to_drug, synonym_to_drug)
        if drugbank_id is None:
            continue
        #if drugbank_id != "DB00284":
        #    continue
        #print "%s\t%s\t%s" % (drugbank_name, drugbank_id, name)
        for icd, val in values:
            icd = icd.split(".")[0]
            #print icd, val, icd in icd_to_mesh_ids
            if icd in icd_to_mesh_ids:
                dui_list = icd_to_mesh_ids[icd]
                #print dui_list
                for dui in dui_list:
                    if dui not in mesh_id_to_name:
                        continue
                    phenotype = mesh_id_to_name[dui].lower()
                    #print dui, phenotype
                    drug_to_diseases.setdefault(drugbank_id, set()).add(
                        (phenotype, dui, val))
            #else:
        # ICD9 ids are problematic - consider name matching
    if dump_file is not None:
        cPickle.dump(drug_to_diseases, open(dump_file, 'w'))
    return drug_to_diseases
Esempio n. 5
0
def get_drug_disease_mapping(name_to_icd_and_confidences, name_to_drug, synonym_to_drug, icd_to_mesh_ids, mesh_id_to_name, dump_file):
    """
    name_to_icd_and_confidences mapping from MEDI
    name_to_drug & synonym mapping from DrugBank
    icd_to_mesh_ids mapping from DO
    mesh_id_to_name mapping from UMLS (MSH | MH)
    """
    if dump_file is not None and os.path.exists(dump_file):
	drug_to_diseases = cPickle.load(open(dump_file))
	return drug_to_diseases 
    drug_to_diseases = {} # (mesh_term, mesh_id, association score) 
    for name, values in name_to_icd_and_confidences.iteritems():
	#if name != "Acarbose":
	#    continue
        # Get drugbank id from name in the label
	drugbank_id, drugbank_name = parse_drugbank.get_drugbank_id_from_name(name, name_to_drug, synonym_to_drug)
        if drugbank_id is None:
            continue
	#if drugbank_id != "DB00284":
	#    continue
	#print "%s\t%s\t%s" % (drugbank_name, drugbank_id, name)
        for icd, val in values:
	    icd = icd.split(".")[0]
	    #print icd, val, icd in icd_to_mesh_ids 
            if icd in icd_to_mesh_ids:
                dui_list = icd_to_mesh_ids[icd]
		#print dui_list
		for dui in dui_list:
		    if dui not in mesh_id_to_name:
			continue
		    phenotype = mesh_id_to_name[dui].lower()
		    #print dui, phenotype
		    drug_to_diseases.setdefault(drugbank_id, set()).add((phenotype, dui, val))
	    #else:
		# ICD9 ids are problematic - consider name matching
    if dump_file is not None:
	cPickle.dump(drug_to_diseases, open(dump_file, 'w'))
    return drug_to_diseases
Esempio n. 6
0
def get_drug_disease_mapping(spl_id_to_cuis, spl_id_to_names, name_to_drug,
                             synonym_to_drug, concept_id_to_mesh_id,
                             mesh_id_to_name, dump_file):
    """
    spl_id_to_cuis mapping from LabeledIn
    spl_id_to_names mapping from DailyMed rxnorm
    name_to_drug & synonym mapping from DrugBank
    concept & mesh_id mapping from UMLS (MSH | MH)
    """
    if os.path.exists(dump_file):
        drug_to_diseases = cPickle.load(open(dump_file))
        return drug_to_diseases
    drug_to_diseases = {}  # (mesh_id, mesh_term, association score)
    val = 1
    for spl_id, cuis in spl_id_to_cuis.iteritems():
        if spl_id not in spl_id_to_names:
            continue
        for name in spl_id_to_names[spl_id]:
            # Get drugbank id from name in the label
            if name.find(" / ") != -1:  # Skip drug combinations
                continue
            drugbank_id, drugbank_name = parse_drugbank.get_drugbank_id_from_name(
                drug, name_to_drug, synonym_to_drug, regex_db_name=True)
            if drugbank_id is not None:
                break
        if drugbank_id is None:
            continue
        print "%s\t%s\t%s\t%s" % (spl_id, drugbank_id, drugbank_name, name)
        for cui in cuis:
            if cui in concept_id_to_mesh_id:
                dui = concept_id_to_mesh_id[cui]
                phenotype = mesh_id_to_name[dui]
                drug_to_diseases.setdefault(drugbank_id, set()).add(
                    (phenotype, dui, val))
    cPickle.dump(drug_to_diseases, open(dump_file, 'w'))
    return drug_to_diseases