Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -24,7 +24,7 @@ import altair as alt
|
|
| 24 |
import spacy
|
| 25 |
import spacy.cli
|
| 26 |
import PyPDF2
|
| 27 |
-
import io # For handling in-memory files
|
| 28 |
|
| 29 |
# Ensure spaCy model is downloaded
|
| 30 |
try:
|
|
@@ -131,7 +131,7 @@ def parse_pubmed_xml(xml_data: str) -> List[Dict[str, Any]]:
|
|
| 131 |
})
|
| 132 |
return articles
|
| 133 |
|
| 134 |
-
###
|
| 135 |
async def fetch_articles_by_nct_id(nct_id: str) -> Dict[str, Any]:
|
| 136 |
params = {"query": nct_id, "format": "json"}
|
| 137 |
async with httpx.AsyncClient() as client_http:
|
|
@@ -381,7 +381,6 @@ def perform_enhanced_eda(df: pd.DataFrame) -> Tuple[str, Optional[alt.Chart], Op
|
|
| 381 |
return f"Enhanced EDA failed: {e}", None, None
|
| 382 |
|
| 383 |
### File Handling ###
|
| 384 |
-
|
| 385 |
def read_uploaded_file(uploaded_file: Optional[gr.File]) -> str:
|
| 386 |
"""
|
| 387 |
Reads the content of an uploaded file (txt, csv, xls, xlsx, pdf).
|
|
@@ -405,7 +404,6 @@ def read_uploaded_file(uploaded_file: Optional[gr.File]) -> str:
|
|
| 405 |
|
| 406 |
# Excel
|
| 407 |
elif file_ext in [".xls", ".xlsx"]:
|
| 408 |
-
# We won't parse here; we'll parse in parse_excel_file(...)
|
| 409 |
# Return a placeholder so we know an Excel file was uploaded
|
| 410 |
return "EXCEL_FILE_PLACEHOLDER"
|
| 411 |
|
|
@@ -425,13 +423,21 @@ def read_uploaded_file(uploaded_file: Optional[gr.File]) -> str:
|
|
| 425 |
|
| 426 |
def parse_excel_file(uploaded_file: gr.File) -> pd.DataFrame:
|
| 427 |
"""
|
| 428 |
-
Parse an Excel file into a pandas DataFrame
|
| 429 |
-
|
|
|
|
| 430 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 431 |
try:
|
| 432 |
-
excel_bytes = uploaded_file.
|
| 433 |
-
|
| 434 |
-
return df
|
| 435 |
except Exception as e:
|
| 436 |
logger.error(f"Excel parsing error: {e}")
|
| 437 |
raise ValueError(f"Excel parsing error: {e}")
|
|
|
|
| 24 |
import spacy
|
| 25 |
import spacy.cli
|
| 26 |
import PyPDF2
|
| 27 |
+
import io # For handling in-memory files (Excel, etc.)
|
| 28 |
|
| 29 |
# Ensure spaCy model is downloaded
|
| 30 |
try:
|
|
|
|
| 131 |
})
|
| 132 |
return articles
|
| 133 |
|
| 134 |
+
### Async Functions for Europe PMC ###
|
| 135 |
async def fetch_articles_by_nct_id(nct_id: str) -> Dict[str, Any]:
|
| 136 |
params = {"query": nct_id, "format": "json"}
|
| 137 |
async with httpx.AsyncClient() as client_http:
|
|
|
|
| 381 |
return f"Enhanced EDA failed: {e}", None, None
|
| 382 |
|
| 383 |
### File Handling ###
|
|
|
|
| 384 |
def read_uploaded_file(uploaded_file: Optional[gr.File]) -> str:
|
| 385 |
"""
|
| 386 |
Reads the content of an uploaded file (txt, csv, xls, xlsx, pdf).
|
|
|
|
| 404 |
|
| 405 |
# Excel
|
| 406 |
elif file_ext in [".xls", ".xlsx"]:
|
|
|
|
| 407 |
# Return a placeholder so we know an Excel file was uploaded
|
| 408 |
return "EXCEL_FILE_PLACEHOLDER"
|
| 409 |
|
|
|
|
| 423 |
|
| 424 |
def parse_excel_file(uploaded_file: gr.File) -> pd.DataFrame:
|
| 425 |
"""
|
| 426 |
+
Parse an Excel file into a pandas DataFrame.
|
| 427 |
+
1) Try using the local file path, if it exists.
|
| 428 |
+
2) Otherwise, read from the in-memory object using uploaded_file.file.read().
|
| 429 |
"""
|
| 430 |
+
import pandas as pd
|
| 431 |
+
|
| 432 |
+
# If we have a valid local file path (common in some Gradio versions)
|
| 433 |
+
if os.path.exists(uploaded_file.name):
|
| 434 |
+
# Directly read from the file path
|
| 435 |
+
return pd.read_excel(uploaded_file.name, engine="openpyxl")
|
| 436 |
+
|
| 437 |
+
# Otherwise, we read the file from memory
|
| 438 |
try:
|
| 439 |
+
excel_bytes = uploaded_file.file.read()
|
| 440 |
+
return pd.read_excel(io.BytesIO(excel_bytes), engine="openpyxl")
|
|
|
|
| 441 |
except Exception as e:
|
| 442 |
logger.error(f"Excel parsing error: {e}")
|
| 443 |
raise ValueError(f"Excel parsing error: {e}")
|