Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import pyarabic.araby as araby | |
| import numpy as np | |
| import pandas as pd | |
| import os | |
| from datasets import load_dataset | |
| from datasets import Features | |
| from datasets import Value | |
| from datasets import Dataset | |
| import matplotlib.pyplot as plt | |
| css = """ | |
| .table-wrap { | |
| min-height: 200px; | |
| max-height: 200px; | |
| } | |
| """ | |
| Secret_token = os.getenv('HF_Token') | |
| edge_info = load_dataset('FDSRashid/hadith_info',token = Secret_token, data_files = 'isnad_info.csv', split = 'train').to_pandas() | |
| lst = ['Rawi ID', | |
| 'Gender', | |
| 'Official Name', | |
| 'Famous Name', | |
| 'Title Name', | |
| 'Kunya', | |
| 'Laqab', | |
| 'Occupation', | |
| 'Wasf', | |
| 'Madhhab', | |
| 'Nasab', | |
| 'Narrator Rank', | |
| 'Generation', | |
| 'Birth Date', | |
| 'Death Date', | |
| 'Age', | |
| 'Place of Stay', | |
| 'Place of Death', | |
| 'Mawla Relation', | |
| 'Famous Relatives', | |
| 'Number of Narrations', | |
| 'Avg. Death Date', | |
| 'Whole Number Death'] | |
| dct = {} | |
| for itrm in lst: | |
| dct[itrm] = Value('string') | |
| dct['Rawi ID'] = Value('int32') | |
| features = Features(dct) | |
| #features = Features({'Rawi ID': Value('int32'), 'Famous Name': Value('string'), 'Narrator Rank': Value('string'), 'Number of Narrations': Value('string'), 'Official Name':Value('string'), 'Title Name':Value('string'), 'Generation': Value('string')} ) | |
| narrator_bios = load_dataset("FDSRashid/hadith_info", data_files = 'Teacher_Bios.csv', token = Secret_token,features=features ) | |
| narrator_bios = narrator_bios['train'].to_pandas() | |
| narrator_bios.loc[49845, 'Narrator Rank'] = 'ุฑุณูู ุงููู' | |
| narrator_bios.loc[49845, 'Number of Narrations'] = 0 | |
| narrator_bios['Number of Narrations'] = narrator_bios['Number of Narrations'].astype(int) | |
| narrator_bios.loc[49845, 'Number of Narrations'] = 22000 | |
| narrator_bios['Generation'] = narrator_bios['Generation'].replace([None], [-1]) | |
| narrator_bios['Generation'] = narrator_bios['Generation'].astype(int) | |
| def get_node_info(node): | |
| node_info = narrator_bios[narrator_bios['Rawi ID'] == int(node)] | |
| # Extract values with defaults, using `.iloc` if available, otherwise default | |
| student_narrations = node_info['Number of Narrations'].iloc[0] if not node_info.empty else 1 | |
| student_gen = node_info['Generation'].iloc[0] if not node_info.empty else -1 | |
| student_rank = node_info['Narrator Rank'].iloc[0] if not node_info.empty else 'ููุงู' | |
| node_name = node_info['Famous Name'].iloc[0] if not node_info.empty else 'ููุงู' | |
| return node_info,student_narrations,student_gen, student_rank, node_name | |
| def network_narrator(narrator_id): | |
| edge_narrator = edge_info[(edge_info['Source'] == str(narrator_id)) | (edge_info['Destination'] == str(narrator_id))] | |
| edge_full = edge_narrator[['Taraf Count', 'Hadith Count', 'Isnad Count', 'Source', 'Book Count', 'Destination']] | |
| edge_full['Teacher'] = edge_full['Source'].apply(lambda x: get_node_info(x)[-1] ) | |
| edge_full['Student'] = edge_full['Destination'].apply(lambda x: get_node_info(x)[-1] ) | |
| return edge_full.rename(columns = {'Taraf Count': 'Tarafs', 'Hadith Count':'Hadiths', 'Isnad Count':'Isnads', 'Book Count':'Books'}) | |
| def narrator_retriever(name): | |
| if 'ALL' in name or 'all' in name: | |
| return narrator_bios | |
| else: | |
| full_names = name.replace(', ', '|').replace(',', '|') | |
| return narrator_bios[(narrator_bios['Official Name'].apply(lambda x: araby.strip_diacritics(x)).str.contains(araby.strip_diacritics(name), regex=True)) | (narrator_bios['Famous Name'].apply(lambda x: araby.strip_diacritics(x)).str.contains(araby.strip_diacritics(name), regex=True)) | (narrator_bios['Rawi ID'].astype(str).isin(full_names.split('|'))) | (narrator_bios['Kunya'].apply(lambda x: araby.strip_diacritics(x)).str.contains(araby.strip_diacritics(name), regex=True)) | ((narrator_bios['Laqab'].apply(lambda x: araby.strip_diacritics(x)).str.contains(araby.strip_diacritics(name), regex=True)))] | |
| with gr.Blocks(css=css) as demo: | |
| gr.Markdown("Search Narrators using this tool or Retrieve Transmissions involving Narrator") | |
| with gr.Tab("Search Narrator"): | |
| text_input = gr.Textbox() | |
| text_output = gr.DataFrame() | |
| text_button = gr.Button("Search") | |
| text_button.click(narrator_retriever, inputs=text_input, outputs=text_output) | |
| with gr.Tab("View Network"): | |
| image_input = gr.Number() | |
| image_button = gr.Button("Retrieve!") | |
| image_button.click(network_narrator, inputs=[image_input], outputs=[gr.DataFrame(wrap=True)]) | |
| demo.launch() | |