# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/01_inst.ipynb.

# %% auto 0
__all__ = ['nan', 'nonetype', 'npnan', 'npNaN', 'npNAN', 'pdna', 'ptnan', 'number', 'npbool', 'repattern', 'strtemplate',
           'npmatrix', 'nparray', 'recarray', 'npempty', 'sparray', 'spmatrix', 'pdindex', 'pdseries', 'pdcatindex',
           'pddataframe', 'ptsize', 'pttype', 'ptdevice', 'ptmodule', 'ptdataset', 'ptdataloader', 'pttensorbase',
           'pttensor', 'ptinttensor', 'ptbooltensor', 'ptfloattensor', 'plmodule', 'pldatamodule', 'odefn', 'sdefn',
           'neurode', 'neursde', 'augmenter', 'ito', 'brownian', 'anndata', 'gtbase', 'gtdata', 'bgraph', 'dgraph',
           'lgraph', 'kgraph', 'tgraph', 'mgraph', 'klgraph', 'mlgraph', 'tlgraph']

# %% ../nbs/01_inst.ipynb 5
from functools import wraps

# %% ../nbs/01_inst.ipynb 7
from typing import (Self, Type, Union, Optional, NamedTuple, ClassVar, Iterable, )

# %% ../nbs/01_inst.ipynb 11
from .core import matr

# %% ../nbs/01_inst.ipynb 14
nan = matr('math', 'nan')
'''`math.nan`''';

nonetype = matr('types', 'NoneType')
'''`types.NoneType`''';

# %% ../nbs/01_inst.ipynb 15
npnan = matr('numpy', 'nan', default=nan)
'''`numpy.nan`''';

npNaN = matr('numpy', 'NaN', default=nan)
'''`numpy.NaN`''';

npNAN = matr('numpy', 'NAN', default=nan)
'''`numpy.NAN`''';
# npnan, npNaN, npNAN = matrs('numpy', 'nan', 'NaN', 'NAN', default=nan)
pdna = matr('pandas', 'NA', default=nan)
'''`pandas.NA`''';

ptnan = matr('torch', 'nan', default=nan)
'''`torch.nan`''';

# %% ../nbs/01_inst.ipynb 17
number = matr('numbers', 'Number')
'''`numbers.Number`''';

npbool = matr('numpy', 'bool_', default=bool)
'''`numpy.bool_`''';

# %% ../nbs/01_inst.ipynb 19
repattern = matr('re', 'Pattern')
'''`re.Pattern`''';

strtemplate = matr('string', 'Template')
'''`string.Template`''';

# %% ../nbs/01_inst.ipynb 21
npmatrix = matr('numpy', 'matrix', default=list)
'''`numpy.matrix`''';

nparray = matr('numpy', 'ndarray', default=list)
'''`numpy.ndarray`''';

recarray = matr('numpy', 'recarray', default=list)
'''`numpy.recarray`''';

npempty = matr('numpy', 'empty', default=list)
'''`numpy.empty`''';

# npmatrix, nparray, recarray, npempty = \
#     matrs('numpy', 'matrix', 'ndarray', 'recarray', 'empty', default=list)

# %% ../nbs/01_inst.ipynb 22
sparray = matr('scipy.sparse._arrays', '_sparray')
sparray = matr('scipy.sparse', 'sparray', default=(sparray or list))
'''`scipy.sparse.aparray`''';

spmatrix = matr('scipy.sparse', 'spmatrix', default=list)
'''`scipy.sparse.spmatrix`''';

# %% ../nbs/01_inst.ipynb 24
pdindex = matr('pandas', 'Index', default=list)
'''`pandas.Index`''';

pdseries = matr('pandas', 'Series', default=list)
'''`pandas.Series`''';

pdcatindex = matr('pandas', 'CategoricalIndex', default=list)
'''`pandas.CategoricalIndex`''';

pddataframe = matr('pandas', 'DataFrame', default=list)
'''`pandas.DataFrame`''';

# pdindex, pdseries, pdcatindex, pddataframe = \
#     matrs('pandas', 'Index', 'Series', 'CategoricalIndex', 'DataFrame', default=list)

# %% ../nbs/01_inst.ipynb 26
ptsize = matr('torch', 'size', default=tuple)
'''`torch.Size`''';

pttype = matr('torch', 'dtype', default=type)
'''`torch.dtype`''';

ptdevice = matr('torch', 'device', default=str)
'''`torch.device`''';

# %% ../nbs/01_inst.ipynb 27
ptmodule = matr('torch.nn', 'Module')
'''`torch.nn.Module`''';

ptdataset = matr('torch.utils.data', 'Dataset')
'''`torch.utils.data.Dataset`''';

ptdataloader = matr('torch.utils.data', 'DataLoader')
'''`torch.utils.data.DataLoader`''';
# ptdataset, ptdataloader = matrs('torch.utils.data', 'Dataset', 'DataLoader')

pttensorbase = matr('torch._C', '_TensorBase')
'''`torch._C._TensorBase`''';

pttensor = matr('torch', 'Tensor', bases=(pttensorbase, ))
'''`torch.Tensor`''';

ptinttensor = matr('torch', 'IntTensor', bases=(pttensor, ))
'''`torch.IntTensor`''';

ptbooltensor = matr('torch', 'BoolTensor', bases=(pttensor, ))
'''`torch.BoolTensor`''';

ptfloattensor = matr('torch', 'FloatTensor', bases=(pttensor, ))
'''`torch.FloatTensor`''';

# ptinttensor, ptbooltensor, ptfloattensor = \
#     matrs('torch', 'IntTensor', 'BoolTensor', 'FloatTensor', bases=(pttensor, ))

# %% ../nbs/01_inst.ipynb 29
plmodule = matr('pytorch_lightning', 'LightningModule', default=ptmodule)
'''`lightning.LightningModule`''';

pldatamodule = matr('pytorch_lightning', 'LightningDataModule', default=list)
'''`lightning.LightningDataModule`''';

# %% ../nbs/01_inst.ipynb 31
odefn = matr('torchdyn.core.defunc', 'ODEFunc')
'''`torchdyn.core.defunc.ODEFunc`''';

sdefn = matr('torchdyn.core.defunc', 'SDEFunc')
'''`torchdyn.core.defunc.SDEFunc`''';
# odefn, sdefn = matrs('torchdyn.core.defunc', 'ODEFunc', 'SDEFunc')

neurode = matr('torchdyn.core', 'NeuralODE', default=ptmodule)
'''`torchdyn.core.NeuralODE`''';

neursde = matr('torchdyn.core', 'NeuralSDE', default=ptmodule)
'''`torchdyn.core.NeuralSDE`''';
# neurode, neursde = matrs('torchdyn.core', 'NeuralODE', 'NeuralSDE', default=ptmodule)

augmenter = matr('torchdyn.nn', 'Augmenter')
'''`torchdyn.nn.augmenter`''';

# %% ../nbs/01_inst.ipynb 33
ito = matr('torchsde', 'SDEIto')
'''`torchsde.ito`''';

brownian = matr('torchsde', 'BrownianInterval')
'''`torchsde.BrownianInterval`''';

# %% ../nbs/01_inst.ipynb 35
anndata = matr('anndata', 'AnnData')
'''`anndata.AnnData`''';

# %% ../nbs/01_inst.ipynb 37
gtbase = matr('graphtools.base', 'Base')
'''`graphtools.base.Base`''';

gtdata = matr('graphtools.base', 'Data', bases=(gtbase, ))
'''`graphtools.base.Data`''';

bgraph = matr('graphtools.base', 'BaseGraph', bases=(gtbase, ))
'''`graphtools.base.BaseGraph`''';

dgraph = matr('graphtools.base', 'DataGraph', bases=(gtdata, bgraph))
'''`graphtools.base.DataGraph`''';

# %% ../nbs/01_inst.ipynb 38
lgraph = matr('graphtools.graphs', 'LandmarkGraph', bases=(dgraph, ))
'''`graphtools.graphs.LandmarkGraph`''';

kgraph = matr('graphtools.graphs', 'kNNGraph', bases=(dgraph, ))
'''`graphtools.graphs.kNNGraph`''';

tgraph = matr('graphtools.graphs', 'TraditionalGraph', bases=(dgraph, ))
'''`graphtools.graphs.TraditionalGraph`''';

mgraph = matr('graphtools.graphs', 'MNNGraph', bases=(dgraph, ))
'''`graphtools.graphs.MNNGraph`''';

# lgraph, kgraph, tgraph, mgraph = \
#     matrs('graphtools.graphs', 'LandmarkGraph', 'kNNGraph', 'TraditionalGraph', 'MNNGraph', bases=(dgraph, ))

# %% ../nbs/01_inst.ipynb 39
klgraph = matr('graphtools.graphs', 'kNNLandmarkGraph', bases=(kgraph, lgraph, ))
'''`graphtools.graphs.kNNLandmarkGraph`''';

mlgraph = matr('graphtools.graphs', 'MNNLandmarkGraph', bases=(mgraph, lgraph, ))
'''`graphtools.graphs.MNNLandmarkGraph`''';

tlgraph = matr('graphtools.graphs', 'TraditionalLandmarkGraph', bases=(tgraph, lgraph, ))
'''`graphtools.graphs.TraditionalLandmarkGraph`''';
