Source code for cellmil.cli.eval_report

import logging
import argparse
import sys
import traceback
from pathlib import Path
from cellmil.evaluation import EvaluationReporter
from cellmil.interfaces.EvaluationReporterConfig import EvaluationReporterConfig

# Setup logging with enhanced format
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
    handlers=[logging.StreamHandler()],
)
logger = logging.getLogger(__name__)


[docs]def eval_report(args: argparse.Namespace) -> None: """Create statistics report.""" try: config = EvaluationReporterConfig( metrics=args.metrics, team=args.team, projects=args.projects, output_dir=args.output_dir ) reporter = EvaluationReporter(config) reporter.create() logger.info(f"Evaluation report created successfully for team {args.team} and projects {args.projects}.") except Exception as e: # Get traceback information tb = traceback.format_exc() logger.error(f"Error during evaluation report creation: {e}\n{tb}") sys.exit(1)
[docs]def setup_parser() -> argparse.ArgumentParser: """Set up command line argument parser""" parser = argparse.ArgumentParser( description="Generate statistics report from wandb data" ) parser.add_argument( "--metrics", nargs='+', required=True, help="Metrics to generate evaluation reports for", ) parser.add_argument( "--team", type=str, required=True, help="Team name where the project belongs in wandb", ) parser.add_argument( "--projects", type=str, nargs='+', required=True, help="Project/s name where data is allocated in wandb", ) parser.add_argument( "--output-dir", type=Path, default="./evaluation_reports", help="Directory to save evaluation reports", ) return parser
[docs]def main(): """Entry point for the cell segmentation CLI tool.""" parser = setup_parser() args = parser.parse_args() eval_report(args)
if __name__ == "__main__": main()