mCodeGPT / app.py
paopaoka3325's picture
Add application files
1ed3b9f
raw
history blame
4.63 kB
import gradio as gr
import subprocess
import pandas as pd
'''
import gradio as gr
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()
'''
def greet(name1, name2):
# Storing each input in a variable, you can process or save them as you like
str1_openai = name1 ## openai
str2_bioportal = "213e22ba-4c3b-402b-bd36-6e9d4e86b1b5" #bioportal
str3_huggingface = "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" # huggingface
str4_input = name2
with open('abstractsave.txt', 'w') as f:
f.write(str4_input)
def run_command(command):
result = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
output_string = result.stdout
error_string = result.stderr
return output_string, error_string
##### output_string1, error_string1= run_command("pip install optogpt")
output_string1, error_string1 = run_command("curl -sSL https://install.python-poetry.org | python3 -")
output_string2, error_string2 = run_command(f"poetry run runoak set-apikey -e openai {str1_openai}")
run_command(f"poetry run runoak set-apikey -e bioportal {str2_bioportal}")
run_command(f"poetry run runoak set-apikey -e hfhub-key {str3_huggingface}")
##### output = run_command(f"ontogpt extract -t gocam.GoCamAnnotations -i ./abstract.txt")
output = run_command(f"cancerontogpt extract -t cancer.CancerAnnotations -i ./abstractsave.txt")
output = output[0].replace('\\n', '\n')
# Find the positions of the start and end markers
start_marker = "raw_completion_output: |-"
end_marker = "prompt: "
start_position = output.find(start_marker)
end_position = output.find(end_marker)
# Extract the text between the start and end positions
output = output[start_position + len(start_marker):end_position].strip()
# Splitting the data string into lines and then split each line into key-value pairs
key_value_pairs = [line.split(": ", 1) for line in output.split("\n")[1:] if line.strip()]
def format_identifier(identifier: str) -> str:
# Split the string by underscores
words = identifier.strip().split('_')
# Capitalize each word
capitalized_words = [word.capitalize() for word in words]
# Join the words with spaces
formatted_identifier = ' '.join(capitalized_words)
return formatted_identifier
key_value_pairs = [[format_identifier(x[0]), *x[1:]] for x in key_value_pairs]
# Convert the key-value pairs into a table format (a list of lists)
df_pred = pd.DataFrame(key_value_pairs, columns = ["Ontology Attribute", "Value"]).iloc[:19,:]
# data = {
# "Name": ['fawef', 'fseaf', 'asef'],
# "Age": [30, 25, 35],
# "City": ["New York", "San Francisco", "Los Angeles"]
# }
# df = pd.DataFrame(data)
return df_pred.to_html()
#### output_string1, error_string1=run_command("poetry")# ontogpt")
# return location
# For the purpose of this example, I'm just returning the values concatenated
# return f"Inputs received: {str1} \n, {str2}, {str3}, {str4}, '--------------', '--------------', {output_string1},{error_string1},{output_string2},{error_string2},{output}"
# # return location
# For the purpose of this example, I'm just returning the values concatenated
# return f"{str4_input}"
# Define 5 text input boxes with labels
input_boxes = [
gr.inputs.Textbox(label="openai api key"),
gr.inputs.Textbox(lines=20,label="Input cencer report"),
]
# iface = gr.Interface(fn=greet, inputs=input_boxes, outputs="text")
iface = gr.Interface(fn=greet, inputs=input_boxes, outputs=gr.outputs.HTML(label="Output Table"),
examples="Patient John Smith (HSI-5421) underwent a tissue biopsy at the bladder collection site. The histopathology report confirmed the presence of cancer in the bladder. The tumor, identified as T-BC5421, measures 4 cm in its longest dimension. The cancer has been staged as T2, indicating its progression beyond the bladder wall. The cancer was asserted on January 10, 2022. The tumor marker test revealed elevated levels of urinary bladder tumor antigen (UBTA). John Smith, a Caucasian male born on April 15, 1975, is non-Hispanic and resides in zip code 90210. He is still alive, with no reported death date at this time. For any further information, please contact John Smith at [email protected] or (555) 123-4567."
)
iface.launch()