import gradio as gr
import subprocess
import pandas as pd
import tempfile
'''
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
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}")
##### output = run_command(f"ontogpt extract -t gocam.GoCamAnnotations -i ./abstract.txt")
output = run_command(f"mcodegpt 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,:]
html_output = df_pred.to_html()
# Save the CSV data to a temporary file
with tempfile.NamedTemporaryFile(delete=False, suffix=".csv") as temp_file:
df_pred.to_csv(temp_file.name, index=False)
csv_output = temp_file.name
return html_output, csv_output
# input_boxes = [
# gr.inputs.Textbox(label="openai api key"),
# gr.inputs.Textbox(lines=20, label="Input cancer report", placeholder='Type text here...'),
# ]
from gradio import Textbox, Interface
input_boxes = [
Textbox(label="openai api key"),
Textbox(lines=20, label="Input cancer report", placeholder='Type text here...'),
]
disclaimer = (
"Please do not upload sensitive patient data.
"
'If you need support, please contact us at '
' limecube or '
' mCodeGPT.
'
'HIPPA-compliant version is under development and will be online soon.'
)
iface = gr.Interface(fn=greet,
inputs=input_boxes,
outputs=[
gr.outputs.HTML(label="Output Table"),
gr.outputs.File(label="Download Output as CSV")
],
examples=[
["87uigiyyu&979890909nY9j87y8n78 (replace with your own OpenAI key)", "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 jsmith@email.com or (555) 123-4567." ],
["87uigiyyu&979890909nY9j87y8n78 (replace with your own OpenAI key)", "Patient CS1256, Emma Thompson, is a 42-year-old non-Hispanic white female with a biopsy specimen collected from the cervix. The pathology report indicates the presence of a tumor with an identified tumor identifier, T123456, located in the cervix. The tumor has a longest dimension of 2.3 cm. Based on the staging, the cancer is classified as Stage IA. The cancer was asserted on March 10, 2020. The tumor marker test result for CA-125 is 32 U/mL. Further evaluation and treatment options will be discussed with the patient. For any inquiries or updates, please contact Emma Thompson at emma.thompson@gmail.com or (555) 123-4567."],
["87uigiyyu&979890909nY9j87y8n78 (replace with your own OpenAI key)", "This cancer report is for patient Emily Johnson (HS123456), a 43-year-old white female residing in zip code 12345. The patient underwent a tissue biopsy at Memorial Hospital to collect the human specimen. The tumor identified as T12345 is located in the femur, with a size of 10 cm in its longest dimension. The cancer stage is classified as Stage III, and the cancer was asserted on June 5, 2021. The body site affected by the cancer is the bones and joints. The disease status evidence is based on an MRI scan. Additionally, the tumor marker test revealed elevated levels of alkaline phosphatase. As of now, the patient is still alive, and no death date has been recorded. For further communication, Emily Johnson can be reached at 555-1234 or emily.johnson@email.com."],
["87uigiyyu&979890909nY9j87y8n78 (replace with your own OpenAI key)", "Patient HS-56789, Samuel Thompson, underwent a tissue biopsy at the National Cancer Institute for further investigation. The biopsy revealed the presence of cancer in Samuel's abdominal region. The tumor, identified as T-98765, measures 12 cm in its longest dimension. Based on the radiology report, the cancer has progressed to Stage III. The cancer, located in the retroperitoneum, was asserted on September 5, 2021. Further testing showed an elevated level of the tumor marker CA-125. Samuel Thompson's demographic information includes his birth date on June 10, 1975, and his contact information as samuel.thompson@example.com, and +1 (555) 123-4567. He identifies as a Caucasian male of non-Hispanic ethnicity, residing in zip code 12345. As of now, there is no record of his death."]],
description=disclaimer)
iface.launch()