zntrack/fields/fields.py
"""Fields that are used to define Nodes."""
from zntrack.fields.dependency import Dependency
from zntrack.fields.dvc.options import DVCOption, PlotsOption
from zntrack.fields.zn.options import Output, Params, Plots
# Serialized Fields
def outs():
"""Define a Node Output.
Parameters
----------
data: any
A data object that is generated by the Node.
The object is serialized and deserialized by ZnTrack
and stored in the node working directory.
see https://dvc.org/doc/command-reference/stage/add#-o
"""
return Output(dvc_option="outs", use_repr=False)
def metrics():
"""Define a Node Metric.
Parameters
----------
data: dict
A dictionary that is used by DVC as a metric.
The object is serialized and deserialized by ZnTrack
and stored in the node working directory.
see https://dvc.org/doc/command-reference/stage/add#-M
"""
return Output(dvc_option="metrics-no-cache")
def params(*args, **kwargs):
"""Define a Node Parameter.
Parameters
----------
args: any
A data object that is used as a parameter.
Typically, this should be a string or number.
The object is serialized and deserialized by ZnTrack
and stored in params.yaml.
see https://dvc.org/doc/command-reference/stage/add#-p
kwargs: dict
Additional keyword arguments.
"""
return Params(*args, **kwargs)
def deps(*data):
"""Define a Node Dependency.
Parameters
----------
data: any
A data object that is used as a dependency.
This can either be a Node or an attribute of a Node.
It can not be an object that is not part of the Node graph.
see https://dvc.org/doc/command-reference/stage/add#-d
"""
return Dependency(*data)
def plots(*args, **kwargs):
"""Define a Node Plot.
Parameters
----------
args: pd.DataFrame
A pandas DataFrame that is used as a plot.
The object is serialized and deserialized by ZnTrack
and stored in the node working directory.
see https://dvc.org/doc/command-reference/stage/add#--plots
kwargs: dict
Additional keyword arguments that are used for plotting.
"""
return Plots(*args, **kwargs)
# Path Fields
def outs_path(*args, dvc_option="outs", **kwargs):
"""Define a Node Output.
Parameters
----------
args: str|Path
A file or directory that is generated by the Node.
see https://dvc.org/doc/command-reference/stage/add#-o
dvc_option: str, default="outs"
The DVC option to use for this field.
kwargs: dict
Additional keyword arguments.
"""
return DVCOption(*args, dvc_option=dvc_option, **kwargs)
def metrics_path(*args, dvc_option="metrics", **kwargs):
"""Define a Node Metric.
Parameters
----------
args : str|Path
A file that is used by DVC as a metric, such as *.json
see https://dvc.org/doc/command-reference/stage/add#-M
dvc_option: str, default="metrics"
The DVC option to use for this field.
kwargs: dict
Additional keyword arguments.
"""
return DVCOption(*args, dvc_option=dvc_option, **kwargs)
def params_path(*args, **kwargs):
"""Define a Node Parameter.
Parameters
----------
args : str|Path
A file that is used by DVC for reading parameters.
This includes typically json or yaml files.
see https://dvc.org/doc/command-reference/stage/add#-p
kwargs: dict
Additional keyword arguments.
"""
return DVCOption(*args, dvc_option="params", **kwargs)
def deps_path(*args, **kwargs):
"""Define a Node Dependency.
Parameters
----------
args : str|Path
A file or directory that is defined as a dependency to the Node.
see https://dvc.org/doc/command-reference/stage/add#-d
kwargs: dict
Additional keyword arguments.
"""
return DVCOption(*args, dvc_option="deps", **kwargs)
def plots_path(*args, dvc_option="plots", **kwargs):
"""Define a Node Plot.
Parameters
----------
args : str|Path
A file or directory that is defined as a plot to the Node.
see https://dvc.org/doc/command-reference/stage/add#--plots
dvc_option: str, default="plots"
The DVC option to use for this field.
kwargs: dict
Additional keyword arguments that are used for plotting.
"""
return PlotsOption(*args, dvc_option=dvc_option, **kwargs)