MarCognity-AI / src /evaluation /hypothesis_validation.py
elly99's picture
Create hypothesis_validation.py
f7b7d61 verified
# © 2025 Elena Marziali — Code released under Apache 2.0 license.
# See LICENSE in the repository for details.
# Removal of this copyright is prohibited.
# Generate an automatic report
def generate_markdown_report(
title="Automatic Report",
description="Automatically generated scientific summary.",
articles=None,
images=None,
captions=None,
filename="report.md"
):
"""
Generates a Markdown file with:
- Title and description
- Scientific articles with abstract and link
- Images and associated captions (if available)
All arguments are optional. A coherent structure is created regardless.
"""
# Safe fallback for each parameter
articles = articles if isinstance(articles, list) else []
images = images if isinstance(images, list) else []
captions = captions if isinstance(captions, list) else []
try:
with open(filename, "w", encoding="utf-8") as f:
f.write(f"# {title}\n\n")
f.write(f"{description}\n\n")
f.write("## Scientific Articles\n\n")
if articles:
for i, art in enumerate(articles[:5]):
article_title = art.get("titolo", f"Article {i+1}")
abstract = art.get("abstract", "Abstract not available.")
url = art.get("url", "#")
f.write(f"**{i+1}. {article_title}**\n")
f.write(f"{abstract}\n\n[Link to article]({url})\n\n")
else:
f.write("No articles available.\n\n")
if images:
f.write("## Figures\n\n")
for i, img_path in enumerate(images):
caption = captions[i] if i < len(captions) else f"Figure {i+1}"
f.write(f"![{caption}]({img_path})\n\n*{caption}*\n\n")
print(f"Markdown report successfully generated: {filename}")
except Exception as e:
print(f"Error during report generation: {e}")
# === Markdown report generation ===
def generate_markdown_report(title, description, articles, filename="report.md"):
if not isinstance(articles, list):
logging.error(f"[generate_markdown_report] 'articles' is not a valid list: {type(articles)}")
print("Error: unable to generate report. Invalid article format.")
return
with open(filename, "w", encoding="utf-8") as f:
f.write(f"# {title}\n\n{description}\n\n## Scientific Articles\n\n")
for i, art in enumerate(articles[:5]):
if isinstance(art, dict) and all(k in art for k in ["titolo", "abstract", "url"]):
f.write(f"**{i+1}. {art['titolo']}**\n{art['abstract']} ([Link]({art['url']}))\n\n")
else:
f.write(f"**{i+1}. Article data not available or incomplete.**\n\n")
print(f"Markdown report generated: {filename}")