jinns 1.5.0__py3-none-any.whl → 1.6.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. jinns/__init__.py +7 -7
  2. jinns/data/_AbstractDataGenerator.py +1 -1
  3. jinns/data/_Batchs.py +47 -13
  4. jinns/data/_CubicMeshPDENonStatio.py +203 -54
  5. jinns/data/_CubicMeshPDEStatio.py +190 -54
  6. jinns/data/_DataGeneratorODE.py +48 -22
  7. jinns/data/_DataGeneratorObservations.py +75 -32
  8. jinns/data/_DataGeneratorParameter.py +152 -101
  9. jinns/data/__init__.py +2 -1
  10. jinns/data/_utils.py +22 -10
  11. jinns/loss/_DynamicLoss.py +21 -20
  12. jinns/loss/_DynamicLossAbstract.py +51 -36
  13. jinns/loss/_LossODE.py +210 -191
  14. jinns/loss/_LossPDE.py +441 -368
  15. jinns/loss/_abstract_loss.py +60 -25
  16. jinns/loss/_loss_components.py +4 -25
  17. jinns/loss/_loss_utils.py +23 -0
  18. jinns/loss/_loss_weight_updates.py +6 -7
  19. jinns/loss/_loss_weights.py +34 -35
  20. jinns/nn/_abstract_pinn.py +0 -2
  21. jinns/nn/_hyperpinn.py +34 -23
  22. jinns/nn/_mlp.py +5 -4
  23. jinns/nn/_pinn.py +1 -16
  24. jinns/nn/_ppinn.py +5 -16
  25. jinns/nn/_save_load.py +11 -4
  26. jinns/nn/_spinn.py +1 -16
  27. jinns/nn/_spinn_mlp.py +5 -5
  28. jinns/nn/_utils.py +33 -38
  29. jinns/parameters/__init__.py +3 -1
  30. jinns/parameters/_derivative_keys.py +99 -41
  31. jinns/parameters/_params.py +58 -25
  32. jinns/solver/_solve.py +14 -8
  33. jinns/utils/_DictToModuleMeta.py +66 -0
  34. jinns/utils/_ItemizableModule.py +19 -0
  35. jinns/utils/__init__.py +2 -1
  36. jinns/utils/_types.py +25 -15
  37. {jinns-1.5.0.dist-info → jinns-1.6.0.dist-info}/METADATA +2 -2
  38. jinns-1.6.0.dist-info/RECORD +57 -0
  39. jinns-1.5.0.dist-info/RECORD +0 -55
  40. {jinns-1.5.0.dist-info → jinns-1.6.0.dist-info}/WHEEL +0 -0
  41. {jinns-1.5.0.dist-info → jinns-1.6.0.dist-info}/licenses/AUTHORS +0 -0
  42. {jinns-1.5.0.dist-info → jinns-1.6.0.dist-info}/licenses/LICENSE +0 -0
  43. {jinns-1.5.0.dist-info → jinns-1.6.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,66 @@
1
+ from typing import Any
2
+ import equinox as eqx
3
+
4
+
5
+ class DictToModuleMeta(type):
6
+ """
7
+ A Metaclass based solution to handle the fact that we only
8
+ want one type to be created for EqParams.
9
+ If we were to create a new **class type** (despite same name) each time we
10
+ create a new Params object, nothing would be broadcastable in terms of jax
11
+ tree utils operations and this would be useless. The difficulty comes from
12
+ the fact that we need to instanciate from this same class at different
13
+ moments of the jinns workflow eg: parameter creation, derivative keys
14
+ creations, tracked parameter designation, etc. (ie. each time a Params
15
+ class is instanciated whatever its usage, we need the same EqParams class
16
+ to be instanciated)
17
+
18
+ This is inspired by the Singleton pattern in Python
19
+ (https://stackoverflow.com/a/10362179)
20
+
21
+ Here we need the call of a metaclass because as explained in
22
+ https://stackoverflow.com/a/45536640). To quote from the answer
23
+ Metaclasses implement how the class will behave (not the instance). So when you look at the instance creation:
24
+ `x = Foo()`
25
+ This literally "calls" the class Foo. That's why __call__ of the metaclass
26
+ is invoked before the __new__ and
27
+ __init__ methods of your class initialize the instance.
28
+ Other viewpoint: Metaclasses,as well as classes making use of those
29
+ metaclasses, are created when the lines of code containing
30
+ the class statement body is executed
31
+ """
32
+
33
+ def __init__(self, *args, **kwargs):
34
+ super(DictToModuleMeta, self).__init__(*args, **kwargs)
35
+ self._class = None
36
+
37
+ def __call__(self, d: dict[str, Any], class_name: str | None = None) -> eqx.Module:
38
+ """
39
+ Notably, once the class template is registered (after the first call to
40
+ EqParams()), all calls with different keys in `d` will fail.
41
+ """
42
+ if self._class is None and class_name is not None:
43
+ self._class = type(
44
+ class_name,
45
+ (eqx.Module,),
46
+ {"__annotations__": {k: type(v) for k, v in d.items()}},
47
+ )
48
+ try:
49
+ return self._class(**d) # type: ignore
50
+ except TypeError as _:
51
+ print(
52
+ "DictToModuleMeta has been created with the fields"
53
+ f"{tuple(k for k in self._class.__annotations__.keys())}"
54
+ f" but an instanciation is resquested with fields={tuple(k for k in d.keys())}"
55
+ " which results in an error"
56
+ )
57
+ raise ValueError
58
+
59
+ def clear(cls) -> None:
60
+ """
61
+ The current Metaclass implementation freezes the list of equation parameters inside a Python session;
62
+ only one EqParams annotation can exist at a given time. Use `EqParams.clear()` to reset.
63
+ Also useful for pytest where stuff is not complety reset after tests
64
+ Taken from https://stackoverflow.com/a/50065732
65
+ """
66
+ cls._class = None
@@ -0,0 +1,19 @@
1
+ from dataclasses import fields
2
+ from typing import Any, ItemsView
3
+ import equinox as eqx
4
+
5
+
6
+ class ItemizableModule(eqx.Module):
7
+ def items(self) -> ItemsView[str, Any]:
8
+ """
9
+ For the dataclass to be iterated like a dictionary.
10
+ Practical and retrocompatible with old code when loss components were
11
+ dictionaries
12
+
13
+ About the type hint: https://stackoverflow.com/questions/73022688/type-annotation-for-dict-items
14
+ """
15
+ return {
16
+ field.name: getattr(self, field.name)
17
+ for field in fields(self)
18
+ if getattr(self, field.name) is not None
19
+ }.items()
jinns/utils/__init__.py CHANGED
@@ -1,3 +1,4 @@
1
1
  from ._utils import get_grid
2
+ from ._DictToModuleMeta import DictToModuleMeta
2
3
 
3
- __all__ = ["get_grid"]
4
+ __all__ = ["get_grid", "DictToModuleMeta"]
jinns/utils/_types.py CHANGED
@@ -2,30 +2,40 @@ from __future__ import (
2
2
  annotations,
3
3
  ) # https://docs.python.org/3/library/typing.html#constant
4
4
 
5
- from typing import TypeAlias, TYPE_CHECKING, Callable
5
+ from typing import TypeAlias, TYPE_CHECKING, Callable, TypeVar
6
6
  from jaxtyping import Float, Array
7
7
 
8
+ from jinns.data._Batchs import ODEBatch, PDEStatioBatch, PDENonStatioBatch, ObsBatchDict
9
+ from jinns.loss._loss_weights import (
10
+ LossWeightsODE,
11
+ LossWeightsPDEStatio,
12
+ LossWeightsPDENonStatio,
13
+ )
14
+ from jinns.loss._loss_components import (
15
+ ODEComponents,
16
+ PDEStatioComponents,
17
+ PDENonStatioComponents,
18
+ )
19
+
20
+ AnyBatch: TypeAlias = ODEBatch | PDENonStatioBatch | PDEStatioBatch | ObsBatchDict
21
+
22
+ AnyLossWeights: TypeAlias = (
23
+ LossWeightsODE | LossWeightsPDEStatio | LossWeightsPDENonStatio
24
+ )
25
+
26
+ # Note that syntax change starting from 3.12
27
+ _T = TypeVar("_T")
28
+ AnyLossComponents: TypeAlias = (
29
+ ODEComponents[_T] | PDEStatioComponents[_T] | PDENonStatioComponents[_T]
30
+ )
31
+
8
32
  if TYPE_CHECKING:
9
- from jinns.data._Batchs import ODEBatch, PDEStatioBatch, PDENonStatioBatch
10
33
  from jinns.loss._LossODE import LossODE
11
34
  from jinns.loss._LossPDE import LossPDEStatio, LossPDENonStatio
12
- from jinns.loss._loss_components import (
13
- ODEComponents,
14
- PDEStatioComponents,
15
- PDENonStatioComponents,
16
- )
17
35
 
18
36
  # Here we define types available for the whole package
19
37
  BoundaryConditionFun: TypeAlias = Callable[
20
38
  [Float[Array, " dim"] | Float[Array, " dim + 1"]], Float[Array, " dim_solution"]
21
39
  ]
22
40
 
23
- AnyBatch: TypeAlias = ODEBatch | PDENonStatioBatch | PDEStatioBatch
24
41
  AnyLoss: TypeAlias = LossODE | LossPDEStatio | LossPDENonStatio
25
-
26
- # here we would like a type from 3.12
27
- # (https://typing.python.org/en/latest/spec/aliases.html#type-statement) so
28
- # that we could have a generic AnyLossComponents
29
- AnyLossComponents: TypeAlias = (
30
- ODEComponents | PDEStatioComponents | PDENonStatioComponents
31
- )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jinns
3
- Version: 1.5.0
3
+ Version: 1.6.0
4
4
  Summary: Physics Informed Neural Network with JAX
5
5
  Author-email: Hugo Gangloff <hugo.gangloff@inrae.fr>, Nicolas Jouvin <nicolas.jouvin@inrae.fr>
6
6
  Maintainer-email: Hugo Gangloff <hugo.gangloff@inrae.fr>, Nicolas Jouvin <nicolas.jouvin@inrae.fr>
@@ -10,7 +10,7 @@ Project-URL: Documentation, https://mia_jinns.gitlab.io/jinns/index.html
10
10
  Classifier: License :: OSI Approved :: Apache Software License
11
11
  Classifier: Development Status :: 4 - Beta
12
12
  Classifier: Programming Language :: Python
13
- Requires-Python: >=3.10
13
+ Requires-Python: >=3.11
14
14
  Description-Content-Type: text/markdown
15
15
  License-File: LICENSE
16
16
  License-File: AUTHORS
@@ -0,0 +1,57 @@
1
+ jinns/__init__.py,sha256=Tjp5z0Mnd1nscvJaXnxZb4lEYbI0cpN6OPgCZ-Swo74,453
2
+ jinns/data/_AbstractDataGenerator.py,sha256=le5plNhOE7hV72SC6p2xhWxljnGeStPc2kitzeMR_ts,535
3
+ jinns/data/_Batchs.py,sha256=UZfJWIKAFLQJxOtWN1ybJdoSQCO6PWk3SAgV9YmNVnI,2809
4
+ jinns/data/_CubicMeshPDENonStatio.py,sha256=dtev6j7HuVZ_IBGnKVKOlJTyZVjnW_8G1VRGpcL40VU,22922
5
+ jinns/data/_CubicMeshPDEStatio.py,sha256=g4H9wI0FkA9sdnlSxp00QArq9IjhPrmsGgSleLdNpI4,23314
6
+ jinns/data/_DataGeneratorODE.py,sha256=XOGeX9m5J9CkkGx2alJ5G7FZYGn5cBUaFpO-3-MKvdc,7724
7
+ jinns/data/_DataGeneratorObservations.py,sha256=gTiilF4nTY6PDAHQc5HogMWw7g266gwnN0pxSuF6B9A,9474
8
+ jinns/data/_DataGeneratorParameter.py,sha256=m7WCWBtmNptF8qQSWGPTQEFVzkJb8kJpidKAFBmoBiQ,10205
9
+ jinns/data/__init__.py,sha256=DEzEmoD5TmjHCaG6pS2jmFDzuhZn1ZDpFdVa2v0jCe0,703
10
+ jinns/data/_utils.py,sha256=xKHf7NksJ_AmrtEcpJsh7WSEvI3Yk98_cM5kmXSfmx0,5596
11
+ jinns/experimental/__init__.py,sha256=DT9e57zbjfzPeRnXemGUqnGd--MhV77FspChT0z4YrE,410
12
+ jinns/experimental/_diffrax_solver.py,sha256=upMr3kTTNrxEiSUO_oLvCXcjS9lPxSjvbB81h3qlhaU,6813
13
+ jinns/loss/_DynamicLoss.py,sha256=FXVraH97tIWA5ByO-V-r54Nhwd_EvHOfr0e2qjrfdf0,22667
14
+ jinns/loss/_DynamicLossAbstract.py,sha256=bTiDZHqkHDdvfj6hcjPcESYzwzqOd2LtR_h7GPAqQpY,13602
15
+ jinns/loss/_LossODE.py,sha256=iIW9IGlmPH8coAGe28ysDC75PGrjrRM4YnJN16Cqq3o,15029
16
+ jinns/loss/_LossPDE.py,sha256=nScI0gOB6mK1r5oq-KfAm_Wmcb_frOFc1eyjLnCaYqA,38491
17
+ jinns/loss/__init__.py,sha256=z5xYgBipNFf66__5BqQc6R_8r4F6A3TXL60YjsM8Osk,1287
18
+ jinns/loss/_abstract_loss.py,sha256=yUaulxRL9Pc6P2J6icP_-In-yoeX-yRsOla8kzixxjE,6285
19
+ jinns/loss/_boundary_conditions.py,sha256=9HGw1cGLfmEilP4V4B2T0zl0YP1kNtrtXVLQNiBmWgc,12464
20
+ jinns/loss/_loss_components.py,sha256=Y5GGNuAS_tHl-AzIMBxf3yKj0N2QCdVdTY4jC7NDuic,442
21
+ jinns/loss/_loss_utils.py,sha256=eJ4JcBm396LHx7Tti88ZQrLcKqVL1oSfFGT23VNkytQ,11949
22
+ jinns/loss/_loss_weight_updates.py,sha256=Q5RJkulMjP5G3twKEGmc46QeQJSCb7yyS7OudzRqQkY,6775
23
+ jinns/loss/_loss_weights.py,sha256=x0URuCaFXULlVDwlL9ZEy45L33tj1Fa0VJUQlSPhGkA,2416
24
+ jinns/loss/_operators.py,sha256=Ds5yRH7hu-jaGRp7PYbt821BgYuEvgWHufWhYgdMjw0,22909
25
+ jinns/nn/__init__.py,sha256=gwE48oqB_FsSIE-hUvCLz0jPaqX350LBxzH6ueFWYk4,456
26
+ jinns/nn/_abstract_pinn.py,sha256=E17TFjxgs63BHl3dUKwajqkBuggVbyNVtovX0ePPzr4,602
27
+ jinns/nn/_hyperpinn.py,sha256=x_hBWqokBbURMOdIG_0EBNGJjxAzjlUZ4__fyb-uasA,20245
28
+ jinns/nn/_mlp.py,sha256=ajVWRTtGVnmRjuaylEMlsK-3H5LMqKDvhUsMNnH_rIM,8935
29
+ jinns/nn/_pinn.py,sha256=nRBIdjTir1ViI9hBO4_4DY6uS-1P8Xv-TDLU-O_qzTk,8332
30
+ jinns/nn/_ppinn.py,sha256=qBMenzj0TpapGxyl7nSWb6mER-Ny42JrcOd7Wld19hU,10144
31
+ jinns/nn/_save_load.py,sha256=4pGDPZPKzDmY5UzRtA_zxpDK4hFL2LuDxexWW2PnHtw,7656
32
+ jinns/nn/_spinn.py,sha256=a0ZsnzyXi-oNd6i8pAwF1tdjJQU51pbrGg608O6ykQw,4352
33
+ jinns/nn/_spinn_mlp.py,sha256=7w-WsdcoLHVWwkK2DtXRKRtSrcJkEXJ2_n27VmXI2j4,7651
34
+ jinns/nn/_utils.py,sha256=SoaYvNM6V7M3GcXK3diqO7B9_zoBXqSux2fsTOcouSA,1018
35
+ jinns/parameters/__init__.py,sha256=T_BhKT77X5nei2pYj-QIOKCyD6j2UCgSgAY3LnNdkCo,333
36
+ jinns/parameters/_derivative_keys.py,sha256=snyUGSX7RRrQ6kwtxZPS5U4stWj5Nj2RQ4RABGcInwo,20652
37
+ jinns/parameters/_params.py,sha256=kU_rql_Wb7MJQsBDDcIwOf7RZrxkMRikP1w5xpvnmVs,3953
38
+ jinns/plot/__init__.py,sha256=KPHX0Um4FbciZO1yD8kjZbkaT8tT964Y6SE2xCQ4eDU,135
39
+ jinns/plot/_plot.py,sha256=-A5auNeElaz2_8UzVQJQE4143ZFg0zgMjStU7kwttEY,11565
40
+ jinns/solver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ jinns/solver/_rar.py,sha256=vSVTnCGCusI1vTZCvIkP2_G8we44G_42yZHx2sOK9DE,10291
42
+ jinns/solver/_solve.py,sha256=XG7G0OdVGExRCZ84JEzT74NefZRdUP4VFQoKkw9e-C4,28650
43
+ jinns/solver/_utils.py,sha256=sM2UbVzYyjw24l4QSIR3IlynJTPGD_S08r8v0lXMxA8,5876
44
+ jinns/utils/_DictToModuleMeta.py,sha256=V3D3rN6rCi6NjI8Cht0PTgeSgLe9ji3PsAX5y1-vbHY,2977
45
+ jinns/utils/_ItemizableModule.py,sha256=KdjsisFddGOUTA7-1jXlrkFxnX5sIVdtyNDxOaEcEYw,634
46
+ jinns/utils/__init__.py,sha256=k2kWDahXsLhSlsbeB_W73WLaVSvPG_S6mrNG_5fW_Mo,121
47
+ jinns/utils/_containers.py,sha256=YShcrPKfj5_I9mn3NMAS4Ea9MhhyL7fjv0e3MRbITHg,1837
48
+ jinns/utils/_types.py,sha256=mmDKnZavLBRNHrfsa4w2KgZbm-3Xrlu3Vx_mJ9sKI78,1288
49
+ jinns/utils/_utils.py,sha256=M7NXX9ok-BkH5o_xo74PB1_Cc8XiDipSl51rq82dTH4,2821
50
+ jinns/validation/__init__.py,sha256=FTyUO-v1b8Tv-FDSQsntrH7zl9E0ENexqKMT_dFRkYo,124
51
+ jinns/validation/_validation.py,sha256=8p6sMKiBAvA6JNm65hjkMj0997LJ0BkyCREEh0AnPVE,4803
52
+ jinns-1.6.0.dist-info/licenses/AUTHORS,sha256=7NwCj9nU-HNG1asvy4qhQ2w7oZHrn-Lk5_wK_Ve7a3M,80
53
+ jinns-1.6.0.dist-info/licenses/LICENSE,sha256=BIAkGtXB59Q_BG8f6_OqtQ1BHPv60ggE9mpXJYz2dRM,11337
54
+ jinns-1.6.0.dist-info/METADATA,sha256=aRCwx1t_urD8T8szddlOYusL0KDpwvJ9Rlbzsw4AQN0,5314
55
+ jinns-1.6.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
56
+ jinns-1.6.0.dist-info/top_level.txt,sha256=RXbkr2hzy8WBE8aiRyrJYFqn3JeMJIhMdybLjjLTB9c,6
57
+ jinns-1.6.0.dist-info/RECORD,,
@@ -1,55 +0,0 @@
1
- jinns/__init__.py,sha256=hyh3QKO2cQGK5cmvFYP0MrXb-tK_DM2T9CwLwO-sEX8,500
2
- jinns/data/_AbstractDataGenerator.py,sha256=O61TBOyeOFKwf1xqKzFD4KwCWRDnm2XgyJ-kKY9fmB4,557
3
- jinns/data/_Batchs.py,sha256=-DlD6Qag3zs5QbKtKAOvOzV7JOpNOqAm_P8cwo1dIZg,1574
4
- jinns/data/_CubicMeshPDENonStatio.py,sha256=c_8czJpxSoEvgZ8LDpL2sqtF9dcW4ELNO4juEFMOxog,16400
5
- jinns/data/_CubicMeshPDEStatio.py,sha256=stZ0Kbb7_VwFmWUSPs0P6a6qRj2Tu67p7sxEfb1Ajks,17865
6
- jinns/data/_DataGeneratorODE.py,sha256=5RzUbQFEsooAZsocDw4wRgA_w5lJmDMuY4M6u79K-1c,7260
7
- jinns/data/_DataGeneratorObservations.py,sha256=jknepLsJatSJHFq5lLMD-fFHkPGj5q286LEjE-vH24k,7738
8
- jinns/data/_DataGeneratorParameter.py,sha256=IedX3jcOj7ZDW_18IAcRR75KVzQzo85z9SICIKDBJl4,8539
9
- jinns/data/__init__.py,sha256=4b4eVsoGHV89m2kGDiAOHsrGialZQ6j5ja575qWwQHs,677
10
- jinns/data/_utils.py,sha256=XxaLIg_HIgcB7ACBIhTpHbCT1HXKcDaY1NABncAYX1c,5223
11
- jinns/experimental/__init__.py,sha256=DT9e57zbjfzPeRnXemGUqnGd--MhV77FspChT0z4YrE,410
12
- jinns/experimental/_diffrax_solver.py,sha256=upMr3kTTNrxEiSUO_oLvCXcjS9lPxSjvbB81h3qlhaU,6813
13
- jinns/loss/_DynamicLoss.py,sha256=4mb7OCP-cGZ_mG2MQ-AniddDcuBT78p4bQI7rZpwte4,22722
14
- jinns/loss/_DynamicLossAbstract.py,sha256=QhHRgvtcT-ifHlOxTyXbjDtHk9UfPN2Si8s3v9nEQm4,12672
15
- jinns/loss/_LossODE.py,sha256=DeejnU2ytgrOxUnwuVkQDWWRKJAgNQyjacTx-jT0xPA,13796
16
- jinns/loss/_LossPDE.py,sha256=ycjWJ99SuXe9DV5nROSWyq--xcp2JJ2PGWxsdWyZZog,36942
17
- jinns/loss/__init__.py,sha256=z5xYgBipNFf66__5BqQc6R_8r4F6A3TXL60YjsM8Osk,1287
18
- jinns/loss/_abstract_loss.py,sha256=DMxn0SQe9PW-pq3p5Oqvb0YK3_ulLDOnoIXzK219GV4,4576
19
- jinns/loss/_boundary_conditions.py,sha256=9HGw1cGLfmEilP4V4B2T0zl0YP1kNtrtXVLQNiBmWgc,12464
20
- jinns/loss/_loss_components.py,sha256=MMzaGlaRqESPjRzT0j0WU9HAqWQSbIXpGAqM1xQCZHw,1106
21
- jinns/loss/_loss_utils.py,sha256=R6PffBAtg6z9M8x1DFXmmqZpC095b9gZ_DB1phQxSuY,11168
22
- jinns/loss/_loss_weight_updates.py,sha256=9Bwouh7shLyc_wrdzN6CYL0ZuQH81uEs-L6wCeiYFx8,6817
23
- jinns/loss/_loss_weights.py,sha256=kII5WddORgeommFTudT3CSvhICpo6nSe47LclUgu_78,2429
24
- jinns/loss/_operators.py,sha256=Ds5yRH7hu-jaGRp7PYbt821BgYuEvgWHufWhYgdMjw0,22909
25
- jinns/nn/__init__.py,sha256=gwE48oqB_FsSIE-hUvCLz0jPaqX350LBxzH6ueFWYk4,456
26
- jinns/nn/_abstract_pinn.py,sha256=JUFjlV_nyheZw-max_tAUgFh6SspIbD5we_4bn70V6k,671
27
- jinns/nn/_hyperpinn.py,sha256=hF7HRLMMVBPT9CTQC2DjpDRcQDJCrT9cAj8wfApT_WE,19412
28
- jinns/nn/_mlp.py,sha256=Xmi-mG6uakN67R2S2UsBazdXIJVaGsD2B6TeJM1QjGY,8881
29
- jinns/nn/_pinn.py,sha256=4pvgUPQdQaO3cPBuEU7W4UaLV7lodqcR3pVR1sC0ni4,8774
30
- jinns/nn/_ppinn.py,sha256=LtjGQaLozdA4Kwutn8Pyerbu9yOc0t3_b701yfMb1ac,10392
31
- jinns/nn/_save_load.py,sha256=UqVy2oBzvIeBy6XB9tb61x3-x8i4dNCXJHC5_-bko-I,7477
32
- jinns/nn/_spinn.py,sha256=u5YG2FXcrg8p_uS2QFGmWoeFXYLxXnyV2e6BUHpo4xk,4774
33
- jinns/nn/_spinn_mlp.py,sha256=uCL454sF0Tfj7KT-fdXPnvKJYRQOuq60N0r2b2VAB8Q,7606
34
- jinns/nn/_utils.py,sha256=9UXz73iHKHVQYPBPIEitrHYJzJ14dspRwPfLA8avx0c,1120
35
- jinns/parameters/__init__.py,sha256=O0n7y6R1LRmFzzugCxMFCMS2pgsuWSh-XHjfFViN_eg,265
36
- jinns/parameters/_derivative_keys.py,sha256=YlLDX49PfYhr2Tj--t3praiD8JOUTZU6PTmjbNZsbMc,19173
37
- jinns/parameters/_params.py,sha256=qn4IGMJhD9lDBqOWmGEMy4gXt5a6KHfirkYZwHO7Vwk,2633
38
- jinns/plot/__init__.py,sha256=KPHX0Um4FbciZO1yD8kjZbkaT8tT964Y6SE2xCQ4eDU,135
39
- jinns/plot/_plot.py,sha256=-A5auNeElaz2_8UzVQJQE4143ZFg0zgMjStU7kwttEY,11565
40
- jinns/solver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- jinns/solver/_rar.py,sha256=vSVTnCGCusI1vTZCvIkP2_G8we44G_42yZHx2sOK9DE,10291
42
- jinns/solver/_solve.py,sha256=oVHnuc7Z0V2-ZYgZtCx7xdFd7TpB9w-6AwafX-kgBE4,28379
43
- jinns/solver/_utils.py,sha256=sM2UbVzYyjw24l4QSIR3IlynJTPGD_S08r8v0lXMxA8,5876
44
- jinns/utils/__init__.py,sha256=OEYWLCw8pKE7xoQREbd6SHvCjuw2QZHuVA6YwDcsBE8,53
45
- jinns/utils/_containers.py,sha256=YShcrPKfj5_I9mn3NMAS4Ea9MhhyL7fjv0e3MRbITHg,1837
46
- jinns/utils/_types.py,sha256=jl_91HtcrtE6UHbdTrRI8iUmr2kBUL0oP0UNIKhAXYw,1170
47
- jinns/utils/_utils.py,sha256=M7NXX9ok-BkH5o_xo74PB1_Cc8XiDipSl51rq82dTH4,2821
48
- jinns/validation/__init__.py,sha256=FTyUO-v1b8Tv-FDSQsntrH7zl9E0ENexqKMT_dFRkYo,124
49
- jinns/validation/_validation.py,sha256=8p6sMKiBAvA6JNm65hjkMj0997LJ0BkyCREEh0AnPVE,4803
50
- jinns-1.5.0.dist-info/licenses/AUTHORS,sha256=7NwCj9nU-HNG1asvy4qhQ2w7oZHrn-Lk5_wK_Ve7a3M,80
51
- jinns-1.5.0.dist-info/licenses/LICENSE,sha256=BIAkGtXB59Q_BG8f6_OqtQ1BHPv60ggE9mpXJYz2dRM,11337
52
- jinns-1.5.0.dist-info/METADATA,sha256=jEp__DP39B1HiTYVhtVcWKPmzS22kSUD6jNVSmHFh8g,5314
53
- jinns-1.5.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
54
- jinns-1.5.0.dist-info/top_level.txt,sha256=RXbkr2hzy8WBE8aiRyrJYFqn3JeMJIhMdybLjjLTB9c,6
55
- jinns-1.5.0.dist-info/RECORD,,
File without changes