Skip to content

anypinn.cli.scaffold.custom.ode_csv

Custom ODE — mathematical definition.

validation: ValidationRegistry = {} module-attribute

create_data_module(hp: ODEHyperparameters)

Source code in src/anypinn/cli/scaffold/custom/ode_csv.py
def create_data_module(hp: ODEHyperparameters):
    # TODO: create and return your DataModule
    # See anypinn.catalog for examples of DataModule subclasses.
    raise NotImplementedError("TODO: implement create_data_module")

create_problem(hp: ODEHyperparameters) -> ODEInverseProblem

Source code in src/anypinn/cli/scaffold/custom/ode_csv.py
def create_problem(hp: ODEHyperparameters) -> ODEInverseProblem:
    # TODO: define your problem
    # props = ODEProperties(
    #     ode=my_ode,
    #     y0=torch.tensor([Y1_0, Y2_0]),
    #     args={
    #         # fixed arguments go here
    #     },
    # )
    #
    # fields = FieldsRegistry({
    #     Y1_KEY: Field(config=hp.fields_config),
    #     Y2_KEY: Field(config=hp.fields_config),
    # })
    # params = ParamsRegistry({
    #     PARAM_KEY: Parameter(config=hp.params_config),
    # })
    #
    # def predict_data(
    #     x_data: Tensor, fields: FieldsRegistry, _params: ParamsRegistry
    # ) -> Tensor:
    #     return cast(Tensor, fields[Y1_KEY](x_data))
    #
    # return ODEInverseProblem(
    #     props=props, hp=hp, fields=fields, params=params,
    #     predict_data=predict_data,
    # )
    raise NotImplementedError("TODO: implement create_problem")

my_ode(x: Tensor, y: Tensor, args: ArgsRegistry) -> Tensor

TODO: implement your ODE system.

Parameters:

Name Type Description Default
x Tensor

Independent variable (e.g. time). Shape: (N,)

required
y Tensor

State variables. Each element has shape (N,)

required
args ArgsRegistry

Parameters (both fixed and learnable).

required

Returns:

Type Description
Tensor

dy/dx stacked as a tensor.

Source code in src/anypinn/cli/scaffold/custom/ode_csv.py
def my_ode(x: Tensor, y: Tensor, args: ArgsRegistry) -> Tensor:
    """TODO: implement your ODE system.

    Args:
        x: Independent variable (e.g. time). Shape: (N,)
        y: State variables. Each element has shape (N,)
        args: Parameters (both fixed and learnable).

    Returns:
        dy/dx stacked as a tensor.
    """
    # Example:
    # y1, y2 = y
    # p = args[PARAM_KEY]
    # dy1 = -p(x) * y1
    # dy2 = p(x) * y1 - y2
    # return torch.stack([dy1, dy2])
    raise NotImplementedError("TODO: implement your ODE")