Spaces:
Running
Running
# genesis/tools.py | |
""" | |
Utility functions for GENESIS-AI | |
""" | |
import re | |
from datetime import datetime | |
def extract_citations(text): | |
"""Extracts DOI, PMID, and URLs from text.""" | |
citations = [] | |
doi_pattern = r"(10\.\d{4,9}/[-._;()/:A-Z0-9]+)" | |
pmid_pattern = r"PMID:\s*(\d+)" | |
url_pattern = r"(https?://[^\s)]+)" | |
for match in re.finditer(doi_pattern, text, re.IGNORECASE): | |
citations.append({"type": "DOI", "id": match.group(1), "url": f"https://doi.org/{match.group(1)}"}) | |
for match in re.finditer(pmid_pattern, text, re.IGNORECASE): | |
citations.append({"type": "PMID", "id": match.group(1), "url": f"https://pubmed.ncbi.nlm.nih.gov/{match.group(1)}/"}) | |
for match in re.finditer(url_pattern, text, re.IGNORECASE): | |
if not any(c["url"] == match.group(1) for c in citations): | |
citations.append({"type": "URL", "id": "", "url": match.group(1)}) | |
return citations | |
def timestamp(): | |
"""Returns current UTC timestamp as ISO string.""" | |
return datetime.utcnow().isoformat() | |