()
| 582 | |
| 583 | |
| 584 | def parse_args() -> argparse.Namespace: |
| 585 | parser = argparse.ArgumentParser(description=__doc__) |
| 586 | parser.add_argument("--count-matrix", type=Path, required=True) |
| 587 | parser.add_argument("--sample-metadata", type=Path, required=True) |
| 588 | parser.add_argument("--contrasts", type=Path, required=True) |
| 589 | parser.add_argument( |
| 590 | "--input-mode", |
| 591 | choices=["auto", "raw_counts", "normalized_expression", "log_expression"], |
| 592 | default="auto", |
| 593 | help="Explicit matrix scale. Auto infers from integer-likeness and sign.", |
| 594 | ) |
| 595 | parser.add_argument( |
| 596 | "--method", choices=["auto", "DESeq2", "edgeR", "limma_log2"], default="auto" |
| 597 | ) |
| 598 | parser.add_argument( |
| 599 | "--outdir", |
| 600 | type=Path, |
| 601 | help="Run directory. Defaults to ngs_runs/bulk_rnaseq_de/<timestamp>.", |
| 602 | ) |
| 603 | parser.add_argument("--run-id", default=slug_timestamp("bulk-rnaseq-de")) |
| 604 | parser.add_argument("--execute", action="store_true") |
| 605 | parser.add_argument( |
| 606 | "--launch-review-app", |
| 607 | action=argparse.BooleanOptionalAction, |
| 608 | default=True, |
| 609 | help="Auto-launch the generated Marimo review app on localhost and record its URL in the run envelope.", |
| 610 | ) |
| 611 | parser.add_argument( |
| 612 | "--review-app-port", |
| 613 | type=int, |
| 614 | default=2718, |
| 615 | help="Starting port to use when auto-launching the Marimo review app.", |
| 616 | ) |
| 617 | return parser.parse_args() |
| 618 | |
| 619 | |
| 620 | def main() -> int: |
no test coverage detected