from meshutils import nct_to_mesh_term, mesh_term_to_id, df_mesh, df_mesh_ct from cid import CaseInsensitiveDict from dictutils import * import re import streamlit as st # mesh list extract def meshtrm_lst_xtract(nct_value): try: mesh_term = nct_to_mesh_term[nct_value] mesh_term_list = list(mesh_term) return mesh_term_list except: pass @st.cache(suppress_st_warning=True, allow_output_mutation=True) # type extract fun def type_extract(mesh_term_list): mesh_term_list = [mesh_term_list] if isinstance(mesh_term_list, str) else mesh_term_list # print('mesh_term_list: ',mesh_term_list) # l2_map_lst=[] uid_lst = [] if mesh_term_list is not None: for val in mesh_term_list: # print('value inside uid forloop:',val) try: # print('Inside get uid') uid = mesh_term_to_id[val] uid_lst.append(uid) # print(uid_lst) if uid_lst is None: uid_lst = [] except: pass # print('error in get uid list') # get mesh num mesh_num_xtract_lst = [] for val in uid_lst: try: # print('Inside get mesh num') mesh_num_xtract = df_mesh.loc[df_mesh['ui'] == val, 'mesh_number'].iloc[0] mesh_num_xtract_lst.append(mesh_num_xtract) # print(mesh_num_xtract_lst) if ',' in mesh_num_xtract_lst[0]: mesh_num_xtract_lst = mesh_num_xtract_lst[0].split(", ") # print('mesh_num_xtract_lst after spltting',mesh_num_xtract_lst) except: pass # print('error in get mesh num') # mesh number extract l2 l2_map_lst = [] for val in mesh_num_xtract_lst: # print('Inside l2map for loop',val) search_value = val[:3] # print('printing search value:',search_value) try: l2_map = df_mesh.loc[df_mesh['mesh_number'] == search_value, 'name'].iloc[0] # print(l2_map) l2_map_lst.append(l2_map) # print(l2_map_lst) if l2_map_lst is None: l2_map_lst = [] except: pass l2_map_lst = list(set(l2_map_lst)) # print('finaloutput',l2_map_lst) return l2_map_lst def split_values(col_val): # """split words seperated by special characters""" # print(col_val) if col_val != '': char_list = ['|', ',', '/', '.', ';', './', ',/', '/ ', ' /'] # res = ' '.join([ele for ele in char_list if(ele in col_val)]) res = [ele for ele in char_list if (ele in col_val)] # print('printing string of found char',res) colstring = str(col_val) f_res = [] try: while len(res) > 0: res = res[-1] f_res = colstring.split(''.join(res)) # print(f_res) # return f_res f_res = [x for x in f_res if x is not None] return ', '.join(f_res) except: pass else: return col_val def map_entry_terms(myText): obj = CaseInsensitiveDict(entry_dict) pattern = re.compile(r'(?