Main Lyscripts CLI#
Initial entry point for the lyscripts package and CLIs.
This top-level module configures and provides the top-level CLI through which all subcommands can be accessed.
- pydantic settings lyscripts.LyscriptsCLI[source]#
A CLI to interact with lymphatic progression data and models.
Show JSON schema
{ "title": "LyscriptsCLI", "description": "A CLI to interact with lymphatic progression data and models.", "type": "object", "properties": { "version": { "default": false, "description": "Display the version of lyscripts and exit.", "title": "Version", "type": "boolean" }, "log_level": { "default": "INFO", "description": "Set the log level of the lyscripts CLI.", "enum": [ "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL" ], "title": "Log Level", "type": "string" }, "data": { "anyOf": [ { "$ref": "#/$defs/DataCLI" }, { "type": "null" } ] }, "sample": { "anyOf": [ { "$ref": "#/$defs/SampleCLI" }, { "type": "null" } ] }, "compute": { "anyOf": [ { "$ref": "#/$defs/ComputeCLI" }, { "type": "null" } ] }, "schedule": { "anyOf": [ { "$ref": "#/$defs/ScheduleCLI" }, { "type": "null" } ] }, "integrate": { "anyOf": [ { "$ref": "#/$defs/IntegrateCLI" }, { "type": "null" } ] } }, "$defs": { "CollectorCLI": { "description": "Serve a FastAPI web app for collecting involvement patterns as CSV files.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "hostname": { "default": "localhost", "description": "Hostname to run the FastAPI app on.", "title": "Hostname", "type": "string" }, "port": { "default": 8000, "description": "Port to run the FastAPI app on.", "title": "Port", "type": "integer" } }, "title": "CollectorCLI", "type": "object" }, "ComputeCLI": { "additionalProperties": false, "description": "Compute priors, posteriors, risks, prevalences and model evidence from model samples.", "properties": { "priors": { "anyOf": [ { "$ref": "#/$defs/PriorsCLI" }, { "type": "null" } ] }, "posteriors": { "anyOf": [ { "$ref": "#/$defs/PosteriorsCLI" }, { "type": "null" } ] }, "risks": { "anyOf": [ { "$ref": "#/$defs/RisksCLI" }, { "type": "null" } ] }, "prevalences": { "anyOf": [ { "$ref": "#/$defs/PrevalencesCLI" }, { "type": "null" } ] }, "evidence": { "anyOf": [ { "$ref": "#/$defs/EvidenceCLI" }, { "type": "null" } ] } }, "required": [ "priors", "posteriors", "risks", "prevalences", "evidence" ], "title": "ComputeCLI", "type": "object" }, "CrossValidationConfig": { "description": "Configs for splitting a dataset into cross-validation folds.", "properties": { "seed": { "default": 42, "description": "Seed for the random number generator.", "title": "Seed", "type": "integer" }, "folds": { "default": 5, "description": "Number of folds to split the dataset into.", "title": "Folds", "type": "integer" } }, "title": "CrossValidationConfig", "type": "object" }, "DataCLI": { "additionalProperties": false, "description": "Work with lymphatic progression data through this CLI.", "properties": { "collect": { "anyOf": [ { "$ref": "#/$defs/CollectorCLI" }, { "type": "null" } ] }, "lyproxify": { "anyOf": [ { "$ref": "#/$defs/LyproxifyCLI" }, { "type": "null" } ] }, "join": { "anyOf": [ { "$ref": "#/$defs/JoinCLI" }, { "type": "null" } ] }, "split": { "anyOf": [ { "$ref": "#/$defs/SplitCLI" }, { "type": "null" } ] }, "fetch": { "anyOf": [ { "$ref": "#/$defs/FetchCLI" }, { "type": "null" } ] }, "filter": { "anyOf": [ { "$ref": "#/$defs/FilterCLI" }, { "type": "null" } ] }, "enhance": { "anyOf": [ { "$ref": "#/$defs/EnhanceCLI" }, { "type": "null" } ] }, "generate": { "anyOf": [ { "$ref": "#/$defs/GenerateCLI" }, { "type": "null" } ] } }, "required": [ "collect", "lyproxify", "join", "split", "fetch", "filter", "enhance", "generate" ], "title": "DataCLI", "type": "object" }, "DataConfig": { "description": "Where to load lymphatic progression data from and how to feed it into a model.", "properties": { "source": { "anyOf": [ { "format": "file-path", "type": "string" }, { "$ref": "#/$defs/LyDataset" } ], "description": "Either a path to a CSV file or a config that specifies how and where to fetch the data from.", "title": "Source" }, "side": { "anyOf": [ { "enum": [ "ipsi", "contra" ], "type": "string" }, { "type": "null" } ], "default": null, "description": "Side of the neck to load data for. Only for Unilateral models.", "title": "Side" }, "mapping": { "additionalProperties": { "anyOf": [ { "type": "integer" }, { "type": "string" } ] }, "description": "Optional mapping of numeric T-stages to model T-stages.", "title": "Mapping", "type": "object" } }, "required": [ "source" ], "title": "DataConfig", "type": "object" }, "DiagnosisConfig": { "description": "Defines an ipsi- and contralateral diagnosis pattern.", "properties": { "ipsi": { "additionalProperties": { "additionalProperties": { "anyOf": [ { "enum": [ false, 0, "healthy", true, 1, "involved", "micro", "macro", "notmacro" ] }, { "type": "null" } ] }, "type": "object" }, "default": {}, "description": "Observed diagnoses by different modalities on the ipsi neck.", "examples": [ { "CT": { "II": true, "III": false } } ], "title": "Ipsi", "type": "object" }, "contra": { "additionalProperties": { "additionalProperties": { "anyOf": [ { "enum": [ false, 0, "healthy", true, 1, "involved", "micro", "macro", "notmacro" ] }, { "type": "null" } ] }, "type": "object" }, "default": {}, "description": "Observed diagnoses by different modalities on the contra neck.", "title": "Contra", "type": "object" } }, "title": "DiagnosisConfig", "type": "object" }, "DistributionConfig": { "description": "Configuration defining a distribution over diagnose times.", "properties": { "kind": { "default": "frozen", "description": "Parametric distributions may be updated.", "enum": [ "frozen", "parametric" ], "title": "Kind", "type": "string" }, "func": { "const": "binomial", "default": "binomial", "description": "Name of predefined function to use as distribution.", "title": "Func", "type": "string" }, "params": { "additionalProperties": { "anyOf": [ { "type": "integer" }, { "type": "number" } ] }, "default": {}, "description": "Parameters to pass to the predefined function.", "title": "Params", "type": "object" } }, "title": "DistributionConfig", "type": "object" }, "EnhanceCLI": { "description": "Enhance the dataset by inferring additional columns from the data.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "input": { "$ref": "#/$defs/DataConfig" }, "modalities": { "anyOf": [ { "additionalProperties": { "$ref": "#/$defs/ModalityConfig" }, "type": "object" }, { "type": "null" } ], "default": null, "title": "Modalities" }, "method": { "default": "max_llh", "enum": [ "max_llh", "rank" ], "title": "Method", "type": "string" }, "lnl_subdivisions": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "default": { "I": [ "a", "b" ], "II": [ "a", "b" ], "V": [ "a", "b" ] }, "title": "Lnl Subdivisions", "type": "object" }, "output_file": { "title": "Output File", "type": "string" } }, "required": [ "input", "output_file" ], "title": "EnhanceCLI", "type": "object" }, "EvidenceCLI": { "description": "Compute model evidence from thermodynamic integration samples.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "data": { "$ref": "#/$defs/DataConfig" }, "sampling": { "$ref": "#/$defs/SamplingConfig" }, "schedule": { "$ref": "#/$defs/ScheduleConfig", "description": "Configuration for generating inverse temperature schedule." }, "plots": { "default": "./plots", "description": "Directory for storing plots.", "format": "path", "title": "Plots", "type": "string" }, "metrics": { "default": "./metrics.json", "description": "Path to metrics file.", "format": "path", "title": "Metrics", "type": "string" } }, "required": [ "data", "sampling", "schedule" ], "title": "EvidenceCLI", "type": "object" }, "FetchCLI": { "description": "Fetch a specific dataset from the lyDATA repository.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "year": { "description": "Release year of dataset.", "exclusiveMinimum": 0, "maximum": 2026, "title": "Year", "type": "integer" }, "institution": { "description": "Institution's short code. E.g., University Hospital Zurich: `usz`.", "minLength": 1, "title": "Institution", "type": "string" }, "subsite": { "description": "Tumor subsite(s) patients in this dataset were diagnosed with.", "minLength": 1, "title": "Subsite", "type": "string" }, "repo_name": { "anyOf": [ { "minLength": 1, "type": "string" }, { "type": "null" } ], "default": "lycosystem/lydata", "description": "GitHub `repository/owner`.", "title": "Repo Name" }, "ref": { "anyOf": [ { "minLength": 1, "type": "string" }, { "type": "null" } ], "default": "main", "description": "Branch/tag/commit of the repo.", "title": "Ref" }, "local_dataset_dir": { "anyOf": [ { "format": "directory-path", "type": "string" }, { "type": "null" } ], "default": null, "description": "Path to directory containing all the dataset subdirectories. So, e.g. if `path_on_disk` is `~/datasets` and the dataset is `2023-clb-multisite`, then the CSV file is expected to be at `~/datasets/2023-clb-multisite/data.csv`.", "title": "Local Dataset Dir" }, "github_token": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "GitHub token to access private datasets. Can also be provided as `GITHUB_TOKEN` environment variable.", "title": "Github Token" }, "github_user": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "GitHub user for non-token login. Can also be provided as `GITHUB_USER` environment variable.", "title": "Github User" }, "github_password": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "GitHub password for non-token login. Can also be provided as `GITHUB_PASSWORD` environment variable.", "title": "Github Password" }, "output_file": { "description": "The path to save the dataset to.", "format": "path", "title": "Output File", "type": "string" } }, "required": [ "year", "institution", "subsite", "output_file" ], "title": "FetchCLI", "type": "object" }, "FilterCLI": { "description": "In- or exclude patients where a certain column fulfills a certain condition.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "input": { "$ref": "#/$defs/DataConfig" }, "include": { "default": false, "description": "Include patients where the condition is met (default: exclude).", "title": "Include", "type": "boolean" }, "column": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string" } ], "description": "The column to filter by. May be a tuple of three strings, since data has a three-level header. If it is only one string, the lydata package tries to map that to a three-level header.", "title": "Column" }, "operator": { "description": "The operator to use for comparison.", "enum": [ "==", "!=", ">", "<", ">=", "<=", "in", "contains" ], "title": "Operator", "type": "string" }, "value": { "anyOf": [ { "type": "number" }, { "type": "integer" }, { "type": "string" } ], "description": "The value to compare against.", "title": "Value" }, "output_file": { "description": "The path to save the filtered dataset to.", "format": "path", "title": "Output File", "type": "string" } }, "required": [ "input", "column", "operator", "value", "output_file" ], "title": "FilterCLI", "type": "object" }, "GenerateCLI": { "description": "Settings for the command-line interface.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "graph": { "$ref": "#/$defs/GraphConfig" }, "model": { "$ref": "#/$defs/ModelConfig", "default": { "external_file": null, "class_name": "Unilateral", "constructor": "binary", "max_time": 10, "named_params": null, "kwargs": {} } }, "distributions": { "additionalProperties": { "$ref": "#/$defs/DistributionConfig" }, "default": {}, "description": "Mapping of model T-categories to predefined distributions over diagnose times.", "title": "Distributions", "type": "object" }, "t_stages_dist": { "additionalProperties": { "type": "number" }, "description": "Specify what fraction of generated patients should come from the respective T-Stage.", "title": "T Stages Dist", "type": "object" }, "modalities": { "additionalProperties": { "$ref": "#/$defs/ModalityConfig" }, "title": "Modalities", "type": "object" }, "params": { "additionalProperties": { "type": "number" }, "title": "Params", "type": "object" }, "num_patients": { "default": 200, "title": "Num Patients", "type": "integer" }, "output_file": { "title": "Output File", "type": "string" }, "seed": { "default": 42, "title": "Seed", "type": "integer" } }, "required": [ "graph", "t_stages_dist", "modalities", "params", "output_file" ], "title": "GenerateCLI", "type": "object" }, "GraphConfig": { "description": "Specifies how the tumor(s) and LNLs are connected in a DAG.", "properties": { "tumor": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "description": "Define the name of the tumor(s) and which LNLs it/they drain to.", "title": "Tumor", "type": "object" }, "lnl": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "description": "Define the name of the LNL(s) and which LNLs it/they drain to.", "title": "Lnl", "type": "object" } }, "required": [ "tumor", "lnl" ], "title": "GraphConfig", "type": "object" }, "HDF5FileStorage": { "description": "HDF5 file storage for in- and outputs of computations.", "properties": { "file": { "description": "Path to the HDF5 file. Parent directories are created if needed.", "format": "path", "title": "File", "type": "string" }, "dataset": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Name of the dataset in the HDF5 file. Save/load methods can override this.", "title": "Dataset" } }, "required": [ "file" ], "title": "HDF5FileStorage", "type": "object" }, "IntegrateCLI": { "description": "Perform thermodynamic integration to compute the model evidence.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "graph": { "$ref": "#/$defs/GraphConfig" }, "model": { "$ref": "#/$defs/ModelConfig", "default": { "external_file": null, "class_name": "Unilateral", "constructor": "binary", "max_time": 10, "named_params": null, "kwargs": {} } }, "distributions": { "additionalProperties": { "$ref": "#/$defs/DistributionConfig" }, "default": {}, "description": "Mapping of model T-categories to predefined distributions over diagnose times.", "title": "Distributions", "type": "object" }, "modalities": { "additionalProperties": { "$ref": "#/$defs/ModalityConfig" }, "default": {}, "description": "Maps names of diagnostic modalities to their specificity/sensitivity.", "title": "Modalities", "type": "object" }, "data": { "$ref": "#/$defs/DataConfig" }, "sampling": { "$ref": "#/$defs/SamplingConfig" }, "schedule": { "$ref": "#/$defs/ScheduleConfig", "description": "Configuration for generating inverse temperature schedule." } }, "required": [ "graph", "data", "sampling", "schedule" ], "title": "IntegrateCLI", "type": "object" }, "InvolvementConfig": { "description": "Config that defines an ipsi- and contralateral involvement pattern.", "properties": { "ipsi": { "additionalProperties": { "anyOf": [ { "enum": [ false, 0, "healthy", true, 1, "involved", "micro", "macro", "notmacro" ] }, { "type": "null" } ] }, "default": {}, "description": "Involvement pattern for the ipsilateral side of the neck.", "examples": [ { "II": true, "III": false } ], "title": "Ipsi", "type": "object" }, "contra": { "additionalProperties": { "anyOf": [ { "enum": [ false, 0, "healthy", true, 1, "involved", "micro", "macro", "notmacro" ] }, { "type": "null" } ] }, "default": {}, "description": "Involvement pattern for the contralateral side of the neck.", "title": "Contra", "type": "object" } }, "title": "InvolvementConfig", "type": "object" }, "JoinCLI": { "description": "Join multiple lymphatic progression datasets into a single dataset.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "inputs": { "description": "The datasets to join.", "items": { "$ref": "#/$defs/DataConfig" }, "title": "Inputs", "type": "array" }, "output_file": { "description": "The path to the output dataset.", "format": "path", "title": "Output File", "type": "string" } }, "required": [ "inputs", "output_file" ], "title": "JoinCLI", "type": "object" }, "LyDataset": { "description": "Specification of a dataset.", "properties": { "year": { "description": "Release year of dataset.", "exclusiveMinimum": 0, "maximum": 2026, "title": "Year", "type": "integer" }, "institution": { "description": "Institution's short code. E.g., University Hospital Zurich: `usz`.", "minLength": 1, "title": "Institution", "type": "string" }, "subsite": { "description": "Tumor subsite(s) patients in this dataset were diagnosed with.", "minLength": 1, "title": "Subsite", "type": "string" }, "repo_name": { "anyOf": [ { "minLength": 1, "type": "string" }, { "type": "null" } ], "default": "lycosystem/lydata", "description": "GitHub `repository/owner`.", "title": "Repo Name" }, "ref": { "anyOf": [ { "minLength": 1, "type": "string" }, { "type": "null" } ], "default": "main", "description": "Branch/tag/commit of the repo.", "title": "Ref" }, "local_dataset_dir": { "anyOf": [ { "format": "directory-path", "type": "string" }, { "type": "null" } ], "default": null, "description": "Path to directory containing all the dataset subdirectories. So, e.g. if `path_on_disk` is `~/datasets` and the dataset is `2023-clb-multisite`, then the CSV file is expected to be at `~/datasets/2023-clb-multisite/data.csv`.", "title": "Local Dataset Dir" } }, "required": [ "year", "institution", "subsite" ], "title": "LyDataset", "type": "object" }, "LyproxifyCLI": { "description": "Map any CSV file to the LyProX format with the help of a Python mapping dict.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "input_file": { "description": "Location of raw CSV data.", "format": "file-path", "title": "Input File", "type": "string" }, "num_header_rows": { "default": 1, "description": "Number of rows comprising the header of the raw CSV file.", "title": "Num Header Rows", "type": "integer" }, "mapping_file": { "description": "Location of Python file containing a `COLUMN_MAP` dictionary. It may also contain an `EXCLUDE` list of tuples `(column, check)` to exclude patients.", "format": "file-path", "title": "Mapping File", "type": "string" }, "drop_rows": { "default": [], "description": "Delete rows of specified indices. Counting of rows start at 0 _after_ the `header-rows`.", "items": { "type": "integer" }, "title": "Drop Rows", "type": "array" }, "drop_cols": { "default": [], "description": "Delete columns of specified indices.", "items": { "type": "integer" }, "title": "Drop Cols", "type": "array" }, "output_file": { "description": "Location to store the lyproxified CSV file.", "format": "path", "title": "Output File", "type": "string" } }, "required": [ "input_file", "mapping_file", "output_file" ], "title": "LyproxifyCLI", "type": "object" }, "ModalityConfig": { "description": "Define a diagnostic or pathological modality.", "properties": { "spec": { "description": "Specificity of the modality.", "maximum": 1.0, "minimum": 0.5, "title": "Spec", "type": "number" }, "sens": { "description": "Sensitivity of the modality.", "maximum": 1.0, "minimum": 0.5, "title": "Sens", "type": "number" }, "kind": { "default": "clinical", "description": "Clinical modalities cannot detect microscopic disease.", "enum": [ "clinical", "pathological" ], "title": "Kind", "type": "string" } }, "required": [ "spec", "sens" ], "title": "ModalityConfig", "type": "object" }, "ModelConfig": { "description": "Define which of the ``lymph`` models to use and how to set them up.", "properties": { "external_file": { "anyOf": [ { "format": "file-path", "type": "string" }, { "type": "null" } ], "default": null, "description": "Path to a Python file that defines a model.", "title": "External File" }, "class_name": { "default": "Unilateral", "description": "Name of the model class to use.", "enum": [ "Unilateral", "Bilateral", "Midline" ], "title": "Class Name", "type": "string" }, "constructor": { "default": "binary", "description": "Trinary models differentiate btw. micro- and macroscopic disease.", "enum": [ "binary", "trinary" ], "title": "Constructor", "type": "string" }, "max_time": { "default": 10, "description": "Max. number of time-steps to evolve the model over.", "title": "Max Time", "type": "integer" }, "named_params": { "default": null, "description": "Subset of valid model parameters a sampler may provide in the form of a dictionary to the model instead of as an array. Or, after sampling, with this list, one may safely recover which parameter corresponds to which index in the sample.", "items": { "type": "string" }, "title": "Named Params", "type": "array" }, "kwargs": { "additionalProperties": true, "default": {}, "description": "Additional keyword arguments to pass to the model constructor.", "title": "Kwargs", "type": "object" } }, "title": "ModelConfig", "type": "object" }, "PosteriorsCLI": { "description": "Compute posterior state distributions for different diagnosis scenarios.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "graph": { "$ref": "#/$defs/GraphConfig" }, "model": { "$ref": "#/$defs/ModelConfig", "default": { "external_file": null, "class_name": "Unilateral", "constructor": "binary", "max_time": 10, "named_params": null, "kwargs": {} } }, "distributions": { "additionalProperties": { "$ref": "#/$defs/DistributionConfig" }, "default": {}, "description": "Mapping of model T-categories to predefined distributions over diagnose times.", "title": "Distributions", "type": "object" }, "cache_dir": { "default": "/home/docs/checkouts/readthedocs.org/user_builds/lyscripts/checkouts/stable/docs/source/.cache", "description": "Cache directory for storing function calls.", "format": "path", "title": "Cache Dir", "type": "string" }, "scenarios": { "default": [], "description": "List of scenarios to compute risks for.", "items": { "$ref": "#/$defs/ScenarioConfig" }, "title": "Scenarios", "type": "array" }, "sampling": { "$ref": "#/$defs/SamplingConfig" }, "modalities": { "additionalProperties": { "$ref": "#/$defs/ModalityConfig" }, "default": {}, "description": "Maps names of diagnostic modalities to their specificity/sensitivity.", "title": "Modalities", "type": "object" }, "posteriors": { "$ref": "#/$defs/HDF5FileStorage", "description": "Storage for the computed posteriors." } }, "required": [ "graph", "sampling", "posteriors" ], "title": "PosteriorsCLI", "type": "object" }, "PrevalencesCLI": { "description": "Predict the prevalence of an involvement pattern from model samples.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "graph": { "$ref": "#/$defs/GraphConfig" }, "model": { "$ref": "#/$defs/ModelConfig", "default": { "external_file": null, "class_name": "Unilateral", "constructor": "binary", "max_time": 10, "named_params": null, "kwargs": {} } }, "distributions": { "additionalProperties": { "$ref": "#/$defs/DistributionConfig" }, "default": {}, "description": "Mapping of model T-categories to predefined distributions over diagnose times.", "title": "Distributions", "type": "object" }, "cache_dir": { "default": "/home/docs/checkouts/readthedocs.org/user_builds/lyscripts/checkouts/stable/docs/source/.cache", "description": "Cache directory for storing function calls.", "format": "path", "title": "Cache Dir", "type": "string" }, "scenarios": { "default": [], "description": "List of scenarios to compute risks for.", "items": { "$ref": "#/$defs/ScenarioConfig" }, "title": "Scenarios", "type": "array" }, "sampling": { "$ref": "#/$defs/SamplingConfig" }, "modalities": { "additionalProperties": { "$ref": "#/$defs/ModalityConfig" }, "default": {}, "description": "Maps names of diagnostic modalities to their specificity/sensitivity.", "title": "Modalities", "type": "object" }, "prevalences": { "$ref": "#/$defs/HDF5FileStorage", "description": "Storage for the computed prevalences." }, "data": { "$ref": "#/$defs/DataConfig" } }, "required": [ "graph", "sampling", "prevalences", "data" ], "title": "PrevalencesCLI", "type": "object" }, "PriorsCLI": { "description": "Compute the prior state distributions from MCMC samples.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "graph": { "$ref": "#/$defs/GraphConfig" }, "model": { "$ref": "#/$defs/ModelConfig", "default": { "external_file": null, "class_name": "Unilateral", "constructor": "binary", "max_time": 10, "named_params": null, "kwargs": {} } }, "distributions": { "additionalProperties": { "$ref": "#/$defs/DistributionConfig" }, "default": {}, "description": "Mapping of model T-categories to predefined distributions over diagnose times.", "title": "Distributions", "type": "object" }, "cache_dir": { "default": "/home/docs/checkouts/readthedocs.org/user_builds/lyscripts/checkouts/stable/docs/source/.cache", "description": "Cache directory for storing function calls.", "format": "path", "title": "Cache Dir", "type": "string" }, "scenarios": { "default": [], "description": "List of scenarios to compute risks for.", "items": { "$ref": "#/$defs/ScenarioConfig" }, "title": "Scenarios", "type": "array" }, "sampling": { "$ref": "#/$defs/SamplingConfig" }, "priors": { "$ref": "#/$defs/HDF5FileStorage", "description": "Storage for the computed priors." } }, "required": [ "graph", "sampling", "priors" ], "title": "PriorsCLI", "type": "object" }, "RisksCLI": { "description": "Predict the risk of involvement scenarios from model samples given diagnoses.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "graph": { "$ref": "#/$defs/GraphConfig" }, "model": { "$ref": "#/$defs/ModelConfig", "default": { "external_file": null, "class_name": "Unilateral", "constructor": "binary", "max_time": 10, "named_params": null, "kwargs": {} } }, "distributions": { "additionalProperties": { "$ref": "#/$defs/DistributionConfig" }, "default": {}, "description": "Mapping of model T-categories to predefined distributions over diagnose times.", "title": "Distributions", "type": "object" }, "cache_dir": { "default": "/home/docs/checkouts/readthedocs.org/user_builds/lyscripts/checkouts/stable/docs/source/.cache", "description": "Cache directory for storing function calls.", "format": "path", "title": "Cache Dir", "type": "string" }, "scenarios": { "default": [], "description": "List of scenarios to compute risks for.", "items": { "$ref": "#/$defs/ScenarioConfig" }, "title": "Scenarios", "type": "array" }, "sampling": { "$ref": "#/$defs/SamplingConfig" }, "modalities": { "additionalProperties": { "$ref": "#/$defs/ModalityConfig" }, "default": {}, "description": "Maps names of diagnostic modalities to their specificity/sensitivity.", "title": "Modalities", "type": "object" }, "risks": { "$ref": "#/$defs/HDF5FileStorage", "description": "Storage for the computed risks." } }, "required": [ "graph", "sampling", "risks" ], "title": "RisksCLI", "type": "object" }, "SampleCLI": { "description": "Use MCMC to infer distributions over model parameters from data.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "graph": { "$ref": "#/$defs/GraphConfig" }, "model": { "$ref": "#/$defs/ModelConfig", "default": { "external_file": null, "class_name": "Unilateral", "constructor": "binary", "max_time": 10, "named_params": null, "kwargs": {} } }, "distributions": { "additionalProperties": { "$ref": "#/$defs/DistributionConfig" }, "default": {}, "description": "Mapping of model T-categories to predefined distributions over diagnose times.", "title": "Distributions", "type": "object" }, "modalities": { "additionalProperties": { "$ref": "#/$defs/ModalityConfig" }, "default": {}, "description": "Maps names of diagnostic modalities to their specificity/sensitivity.", "title": "Modalities", "type": "object" }, "data": { "$ref": "#/$defs/DataConfig" }, "sampling": { "$ref": "#/$defs/SamplingConfig" } }, "required": [ "graph", "data", "sampling" ], "title": "SampleCLI", "type": "object" }, "SamplingConfig": { "description": "Settings to configure the MCMC sampling.", "properties": { "storage_file": { "description": "Path to HDF5 file store results or load last state.", "format": "path", "title": "Storage File", "type": "string" }, "history_file": { "anyOf": [ { "format": "path", "type": "string" }, { "type": "null" } ], "default": null, "description": "Path to store the burn-in metrics (as CSV file).", "title": "History File" }, "dataset": { "default": "mcmc", "description": "Name of the dataset in the HDF5 file.", "title": "Dataset", "type": "string" }, "cores": { "anyOf": [ { "exclusiveMinimum": 0, "type": "integer" }, { "type": "null" } ], "default": 2, "description": "Number of cores to use for parallel sampling. If `None`, no parallel processing is used.", "title": "Cores" }, "seed": { "default": 42, "description": "Seed for the random number generator.", "title": "Seed", "type": "integer" }, "walkers_per_dim": { "default": 20, "description": "Number of walkers per parameter space dimension.", "title": "Walkers Per Dim", "type": "integer" }, "check_interval": { "default": 50, "description": "Check for convergence each time after this many steps.", "title": "Check Interval", "type": "integer" }, "trust_factor": { "default": 50.0, "description": "Trust the autocorrelation time only when it's smaller than this factor times the length of the chain.", "title": "Trust Factor", "type": "number" }, "relative_thresh": { "default": 0.05, "description": "Relative threshold for convergence.", "title": "Relative Thresh", "type": "number" }, "burnin_steps": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Number of burn-in steps to take. If None, burn-in runs until convergence.", "title": "Burnin Steps" }, "num_steps": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 100, "description": "Number of steps to take in the MCMC sampling.", "title": "Num Steps" }, "thin_by": { "default": 10, "description": "How many samples to draw before for saving one.", "title": "Thin By", "type": "integer" }, "inverse_temp": { "default": 1.0, "description": "Inverse temperature for thermodynamic integration. Note that this is not yet fully implemented.", "title": "Inverse Temp", "type": "number" } }, "required": [ "storage_file" ], "title": "SamplingConfig", "type": "object" }, "ScenarioConfig": { "description": "Define a scenario for which e.g. prevalences and risks may be computed.", "properties": { "t_stages": { "description": "List of T-stages to marginalize over in the scenario.", "examples": [ [ "early" ], [ 3, 4 ] ], "items": { "anyOf": [ { "type": "integer" }, { "type": "string" } ] }, "title": "T Stages", "type": "array" }, "t_stages_dist": { "default": [ 1.0 ], "description": "Distribution over T-stages to use for marginalization.", "examples": [ [ 1.0 ], [ 0.6, 0.4 ] ], "items": { "type": "number" }, "title": "T Stages Dist", "type": "array" }, "midext": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "description": "Whether the patient's tumor extends over the midline.", "title": "Midext" }, "mode": { "default": "HMM", "description": "Which underlying model architecture to use.", "enum": [ "HMM", "BN" ], "title": "Mode", "type": "string" }, "involvement": { "$ref": "#/$defs/InvolvementConfig", "default": { "ipsi": {}, "contra": {} } }, "diagnosis": { "$ref": "#/$defs/DiagnosisConfig", "default": { "ipsi": {}, "contra": {} } } }, "required": [ "t_stages" ], "title": "ScenarioConfig", "type": "object" }, "ScheduleCLI": { "description": "Generate an inverse temperature schedule for thermodynamic integration.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "method": { "default": "power", "description": "Method to generate the inverse temperature schedule.", "enum": [ "geometric", "linear", "power" ], "title": "Method", "type": "string" }, "num": { "default": 32, "description": "Number of inverse temperatures in the schedule.", "title": "Num", "type": "integer" }, "power": { "default": 4.0, "description": "If a power schedule is chosen, use this as power.", "title": "Power", "type": "number" }, "values": { "anyOf": [ { "items": { "type": "number" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "List of inverse temperatures to use instead of generating a schedule. If a list is provided, the other parameters are ignored.", "title": "Values" } }, "title": "ScheduleCLI", "type": "object" }, "ScheduleConfig": { "description": "Configuration for generating a schedule of inverse temperatures.", "properties": { "method": { "default": "power", "description": "Method to generate the inverse temperature schedule.", "enum": [ "geometric", "linear", "power" ], "title": "Method", "type": "string" }, "num": { "default": 32, "description": "Number of inverse temperatures in the schedule.", "title": "Num", "type": "integer" }, "power": { "default": 4.0, "description": "If a power schedule is chosen, use this as power.", "title": "Power", "type": "number" }, "values": { "anyOf": [ { "items": { "type": "number" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "List of inverse temperatures to use instead of generating a schedule. If a list is provided, the other parameters are ignored.", "title": "Values" } }, "title": "ScheduleConfig", "type": "object" }, "SplitCLI": { "description": "Split a dataset into cross-validation folds.", "properties": { "configs": { "default": [ "config.yaml" ], "description": "Path to the YAML file(s) that contain the configuration(s). Configs from YAML files may be overwritten by command line arguments. When multiple files are specified, the configs are merged in the order they are given. Note that every config file must have a `version: 1` key in it.", "items": { "format": "path", "type": "string" }, "title": "Configs", "type": "array" }, "input": { "$ref": "#/$defs/DataConfig" }, "cross_validation": { "$ref": "#/$defs/CrossValidationConfig", "default": { "seed": 42, "folds": 5 } }, "output_dir": { "description": "The folder to store the split CSV files in.", "format": "path", "title": "Output Dir", "type": "string" } }, "required": [ "input", "output_dir" ], "title": "SplitCLI", "type": "object" } }, "additionalProperties": false, "required": [ "data", "sample", "compute", "schedule", "integrate" ] }
- field version: Annotated[bool, _CliImplicitFlag] = False#
Display the version of lyscripts and exit.
- field log_level: Literal['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'] = 'INFO'#
Set the log level of the lyscripts CLI.
- field compute: Annotated[ComputeCLI | None, _CliSubCommand] [Required]#
- field schedule: Annotated[ScheduleCLI | None, _CliSubCommand] [Required]#
Command Help#
Usage: lyscripts [-h] [--version | --no-version]
[--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
{data,sample,compute,schedule,integrate} ...
A CLI to interact with lymphatic progression data and models.
Options:
-h, --help show this help message and exit
--version, --no-version
Display the version of lyscripts and exit. (default:
False)
--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}
Set the log level of the lyscripts CLI. (default:
INFO)
Subcommands:
{data,sample,compute,schedule,integrate}
data Work with lymphatic progression data through this CLI.
sample Use MCMC to infer distributions over model parameters
from data.
compute Compute priors, posteriors, risks, prevalences and
model evidence from model samples.
schedule Generate an inverse temperature schedule for
thermodynamic integration.
integrate Perform thermodynamic integration to compute the model
evidence.