jaxspec 0.2.2.dev0__py3-none-any.whl → 0.3.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.
- jaxspec/analysis/_plot.py +5 -5
- jaxspec/analysis/results.py +38 -25
- jaxspec/data/obsconf.py +9 -3
- jaxspec/data/observation.py +3 -1
- jaxspec/data/ogip.py +9 -2
- jaxspec/data/util.py +17 -11
- jaxspec/experimental/interpolator.py +74 -0
- jaxspec/experimental/interpolator_jax.py +79 -0
- jaxspec/experimental/intrument_models.py +159 -0
- jaxspec/experimental/nested_sampler.py +78 -0
- jaxspec/experimental/tabulated.py +264 -0
- jaxspec/fit/__init__.py +3 -0
- jaxspec/{fit.py → fit/_bayesian_model.py} +86 -338
- jaxspec/{_fit → fit}/_build_model.py +42 -6
- jaxspec/fit/_fitter.py +255 -0
- jaxspec/model/abc.py +52 -80
- jaxspec/model/additive.py +14 -5
- jaxspec/model/background.py +17 -14
- jaxspec/model/instrument.py +81 -0
- jaxspec/model/list.py +4 -1
- jaxspec/model/multiplicative.py +32 -12
- jaxspec/util/integrate.py +17 -5
- {jaxspec-0.2.2.dev0.dist-info → jaxspec-0.3.0.dist-info}/METADATA +9 -9
- jaxspec-0.3.0.dist-info/RECORD +42 -0
- jaxspec-0.2.2.dev0.dist-info/RECORD +0 -34
- /jaxspec/{_fit → experimental}/__init__.py +0 -0
- {jaxspec-0.2.2.dev0.dist-info → jaxspec-0.3.0.dist-info}/WHEEL +0 -0
- {jaxspec-0.2.2.dev0.dist-info → jaxspec-0.3.0.dist-info}/entry_points.txt +0 -0
- {jaxspec-0.2.2.dev0.dist-info → jaxspec-0.3.0.dist-info}/licenses/LICENSE.md +0 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from collections.abc import Callable
|
|
3
|
+
|
|
4
|
+
import numpyro
|
|
5
|
+
|
|
6
|
+
from flax import nnx
|
|
7
|
+
from numpyro.distributions import Distribution
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class GainModel(ABC, nnx.Module):
|
|
11
|
+
@abstractmethod
|
|
12
|
+
def numpyro_model(self, observation_name: str):
|
|
13
|
+
pass
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ConstantGain(GainModel):
|
|
17
|
+
def __init__(self, prior_distribution: Distribution):
|
|
18
|
+
self.prior_distribution = prior_distribution
|
|
19
|
+
|
|
20
|
+
def numpyro_model(self, observation_name: str):
|
|
21
|
+
factor = numpyro.sample(f"ins/~/gain_{observation_name}", self.prior_distribution)
|
|
22
|
+
|
|
23
|
+
def gain(energy):
|
|
24
|
+
return factor
|
|
25
|
+
|
|
26
|
+
return gain
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class ShiftModel(ABC, nnx.Module):
|
|
30
|
+
@abstractmethod
|
|
31
|
+
def numpyro_model(self, observation_name: str):
|
|
32
|
+
pass
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class ConstantShift(ShiftModel):
|
|
36
|
+
def __init__(self, prior_distribution: Distribution):
|
|
37
|
+
self.prior_distribution = prior_distribution
|
|
38
|
+
|
|
39
|
+
def numpyro_model(self, observation_name: str):
|
|
40
|
+
shift_offset = numpyro.sample(f"ins/~/shift_{observation_name}", self.prior_distribution)
|
|
41
|
+
|
|
42
|
+
def shift(energy):
|
|
43
|
+
return energy + shift_offset
|
|
44
|
+
|
|
45
|
+
return shift
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class InstrumentModel(nnx.Module):
|
|
49
|
+
def __init__(
|
|
50
|
+
self,
|
|
51
|
+
reference_observation_name: str,
|
|
52
|
+
gain_model: GainModel | None = None,
|
|
53
|
+
shift_model: ShiftModel | None = None,
|
|
54
|
+
):
|
|
55
|
+
self.reference = reference_observation_name
|
|
56
|
+
self.gain_model = gain_model
|
|
57
|
+
self.shift_model = shift_model
|
|
58
|
+
|
|
59
|
+
def get_gain_and_shift_model(
|
|
60
|
+
self, observation_name: str
|
|
61
|
+
) -> tuple[Callable | None, Callable | None]:
|
|
62
|
+
"""
|
|
63
|
+
Return the gain and shift models for the given observation. It should be called within a numpyro model.
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
if observation_name == self.reference:
|
|
67
|
+
return None, None
|
|
68
|
+
|
|
69
|
+
else:
|
|
70
|
+
gain = (
|
|
71
|
+
self.gain_model.numpyro_model(observation_name)
|
|
72
|
+
if self.gain_model is not None
|
|
73
|
+
else None
|
|
74
|
+
)
|
|
75
|
+
shift = (
|
|
76
|
+
self.shift_model.numpyro_model(observation_name)
|
|
77
|
+
if self.shift_model is not None
|
|
78
|
+
else None
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
return gain, shift
|
jaxspec/model/list.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import inspect
|
|
2
|
+
|
|
2
3
|
from .abc import ModelComponent
|
|
3
4
|
from .additive import * # noqa: F403
|
|
4
5
|
from .multiplicative import * # noqa: F403
|
|
@@ -8,7 +9,9 @@ def all_models(cls: ModelComponent) -> list[ModelComponent]:
|
|
|
8
9
|
"""
|
|
9
10
|
Return a list of all the subclasses of a given ModelComponent class
|
|
10
11
|
"""
|
|
11
|
-
subclasses = list(
|
|
12
|
+
subclasses = list(
|
|
13
|
+
set(cls.__subclasses__()).union([s for c in cls.__subclasses__() for s in all_models(c)])
|
|
14
|
+
)
|
|
12
15
|
|
|
13
16
|
return [s for s in subclasses if not inspect.isabstract(s)]
|
|
14
17
|
|
jaxspec/model/multiplicative.py
CHANGED
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import flax.nnx as nnx
|
|
4
4
|
import jax.numpy as jnp
|
|
5
|
+
import jax.scipy.special as jsp
|
|
5
6
|
import numpy as np
|
|
6
7
|
|
|
7
8
|
from astropy.table import Table
|
|
@@ -72,12 +73,20 @@ class Tbabs(MultiplicativeComponent):
|
|
|
72
73
|
|
|
73
74
|
def __init__(self):
|
|
74
75
|
table = Table.read(table_manager.fetch("xsect_tbabs_wilm.fits"))
|
|
75
|
-
self.
|
|
76
|
-
self.
|
|
76
|
+
self._energy = np.asarray(table["ENERGY"], dtype=np.float64)
|
|
77
|
+
self._sigma = np.asarray(table["SIGMA"], dtype=np.float64)
|
|
77
78
|
self.nh = nnx.Param(1.0)
|
|
78
79
|
|
|
79
80
|
def factor(self, energy):
|
|
80
|
-
sigma = jnp.
|
|
81
|
+
sigma = jnp.exp(
|
|
82
|
+
jnp.interp(
|
|
83
|
+
jnp.log(energy),
|
|
84
|
+
jnp.log(self._energy),
|
|
85
|
+
jnp.log(self._sigma),
|
|
86
|
+
left="extrapolate",
|
|
87
|
+
right="extrapolate",
|
|
88
|
+
)
|
|
89
|
+
)
|
|
81
90
|
|
|
82
91
|
return jnp.exp(-self.nh * sigma)
|
|
83
92
|
|
|
@@ -89,7 +98,6 @@ class Phabs(MultiplicativeComponent):
|
|
|
89
98
|
!!! abstract "Parameters"
|
|
90
99
|
* $N_{\text{H}}$ (`nh`) $\left[\frac{\text{atoms}~10^{22}}{\text{cm}^2}\right]$ : Equivalent hydrogen column density
|
|
91
100
|
|
|
92
|
-
|
|
93
101
|
"""
|
|
94
102
|
|
|
95
103
|
def __init__(self):
|
|
@@ -148,13 +156,20 @@ class Gabs(MultiplicativeComponent):
|
|
|
148
156
|
self.sigma = nnx.Param(1.0)
|
|
149
157
|
self.E0 = nnx.Param(1.0)
|
|
150
158
|
|
|
151
|
-
def
|
|
152
|
-
return
|
|
153
|
-
|
|
154
|
-
/ (
|
|
155
|
-
|
|
159
|
+
def g(self, E):
|
|
160
|
+
return (
|
|
161
|
+
2
|
|
162
|
+
/ (
|
|
163
|
+
self.sigma
|
|
164
|
+
* jnp.sqrt(2 * jnp.pi)
|
|
165
|
+
* (1 - jsp.erf(-self.E0 / (self.sigma * jnp.sqrt(2))))
|
|
166
|
+
)
|
|
167
|
+
* jnp.exp(-((E - self.E0) ** 2) / (2 * self.sigma**2))
|
|
156
168
|
)
|
|
157
169
|
|
|
170
|
+
def factor(self, energy):
|
|
171
|
+
return jnp.exp(-self.tau * self.g(energy))
|
|
172
|
+
|
|
158
173
|
|
|
159
174
|
class Highecut(MultiplicativeComponent):
|
|
160
175
|
r"""
|
|
@@ -223,13 +238,18 @@ class Tbpcf(MultiplicativeComponent):
|
|
|
223
238
|
|
|
224
239
|
def __init__(self):
|
|
225
240
|
table = Table.read(table_manager.fetch("xsect_tbabs_wilm.fits"))
|
|
226
|
-
self.
|
|
227
|
-
self.
|
|
241
|
+
self._energy = nnx.Variable(np.asarray(table["ENERGY"], dtype=np.float64))
|
|
242
|
+
self._sigma = nnx.Variable(np.asarray(table["SIGMA"], dtype=np.float64))
|
|
228
243
|
self.nh = nnx.Param(1.0)
|
|
229
244
|
self.f = nnx.Param(0.2)
|
|
230
245
|
|
|
231
246
|
def factor(self, energy):
|
|
232
|
-
sigma = jnp.
|
|
247
|
+
sigma = jnp.exp(
|
|
248
|
+
jnp.interp(
|
|
249
|
+
energy, self._energy, jnp.log(self._sigma), left="extrapolate", right="extrapolate"
|
|
250
|
+
)
|
|
251
|
+
)
|
|
252
|
+
|
|
233
253
|
return self.f * jnp.exp(-self.nh * sigma) + (1.0 - self.f)
|
|
234
254
|
|
|
235
255
|
|
jaxspec/util/integrate.py
CHANGED
|
@@ -9,11 +9,13 @@ It mainly relies on tanh-sinh (or double exponential) quadrature to perform the
|
|
|
9
9
|
* [Tanh-sinh quadrature](https://en.wikipedia.org/wiki/Tanh-sinh_quadrature) from Wikipedia
|
|
10
10
|
"""
|
|
11
11
|
|
|
12
|
+
from collections.abc import Callable
|
|
13
|
+
|
|
12
14
|
import jax
|
|
13
15
|
import jax.numpy as jnp
|
|
16
|
+
|
|
14
17
|
from jax import Array
|
|
15
18
|
from jax.scipy.integrate import trapezoid
|
|
16
|
-
from typing import Callable
|
|
17
19
|
|
|
18
20
|
|
|
19
21
|
def interval_weights(a: float, b: float, n: int) -> tuple[Array, Array, Array]:
|
|
@@ -93,9 +95,15 @@ def integrate_interval(integrand: Callable, n: int = 51) -> Callable:
|
|
|
93
95
|
primal_out = f(a, b, *args)
|
|
94
96
|
|
|
95
97
|
# Partial derivatives along other parameters
|
|
96
|
-
jac = trapezoid(
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
jac = trapezoid(
|
|
99
|
+
jnp.nan_to_num(jnp.asarray(jax.jacfwd(lambda args: integrand(x, *args))(args)) * dx),
|
|
100
|
+
x=t,
|
|
101
|
+
axis=-1,
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
tangent_out = (
|
|
105
|
+
-integrand(a, *args) * a_dot + integrand(b, *args) * b_dot + jac @ jnp.asarray(args_dot)
|
|
106
|
+
)
|
|
99
107
|
return primal_out, tangent_out
|
|
100
108
|
|
|
101
109
|
return f
|
|
@@ -142,7 +150,11 @@ def integrate_positive(integrand: Callable, n: int = 51) -> Callable:
|
|
|
142
150
|
primal_out = f(*args)
|
|
143
151
|
|
|
144
152
|
# Partial derivatives along other parameters
|
|
145
|
-
jac = trapezoid(
|
|
153
|
+
jac = trapezoid(
|
|
154
|
+
jnp.nan_to_num(jnp.asarray(jax.jacfwd(lambda args: integrand(x, *args))(args)) * dx),
|
|
155
|
+
x=t,
|
|
156
|
+
axis=-1,
|
|
157
|
+
)
|
|
146
158
|
|
|
147
159
|
tangent_out = jac @ jnp.asarray(args_dot)
|
|
148
160
|
return primal_out, tangent_out
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jaxspec
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: jaxspec is a bayesian spectral fitting library for X-ray astronomy.
|
|
5
5
|
Project-URL: Homepage, https://github.com/renecotyfanboy/jaxspec
|
|
6
6
|
Project-URL: Documentation, https://jaxspec.readthedocs.io/en/latest/
|
|
@@ -8,28 +8,28 @@ Author-email: sdupourque <sdupourque@irap.omp.eu>
|
|
|
8
8
|
License-Expression: MIT
|
|
9
9
|
License-File: LICENSE.md
|
|
10
10
|
Requires-Python: <3.13,>=3.10
|
|
11
|
-
Requires-Dist: arviz<0.
|
|
12
|
-
Requires-Dist: astropy<
|
|
11
|
+
Requires-Dist: arviz<0.23.0,>=0.17.1
|
|
12
|
+
Requires-Dist: astropy<8,>=6.0.0
|
|
13
13
|
Requires-Dist: catppuccin<3,>=2.3.4
|
|
14
14
|
Requires-Dist: chainconsumer<2,>=1.1.2
|
|
15
15
|
Requires-Dist: cmasher<2,>=1.6.3
|
|
16
|
-
Requires-Dist: flax
|
|
16
|
+
Requires-Dist: flax>0.10.5
|
|
17
17
|
Requires-Dist: interpax<0.4,>=0.3.5
|
|
18
18
|
Requires-Dist: jax<0.6,>=0.5.0
|
|
19
19
|
Requires-Dist: jaxns<3,>=2.6.7
|
|
20
20
|
Requires-Dist: jaxopt<0.9,>=0.8.3
|
|
21
21
|
Requires-Dist: matplotlib<4,>=3.8.0
|
|
22
|
-
Requires-Dist: mendeleev<
|
|
22
|
+
Requires-Dist: mendeleev<1.2,>=0.15
|
|
23
23
|
Requires-Dist: networkx~=3.1
|
|
24
|
-
Requires-Dist: numpy<
|
|
25
|
-
Requires-Dist: numpyro<0.
|
|
24
|
+
Requires-Dist: numpy<3.0.0
|
|
25
|
+
Requires-Dist: numpyro<0.19,>=0.17.0
|
|
26
26
|
Requires-Dist: optimistix<0.0.11,>=0.0.10
|
|
27
27
|
Requires-Dist: pandas<3,>=2.2.0
|
|
28
28
|
Requires-Dist: pooch<2,>=1.8.2
|
|
29
29
|
Requires-Dist: scipy<1.15
|
|
30
30
|
Requires-Dist: seaborn<0.14,>=0.13.1
|
|
31
31
|
Requires-Dist: simpleeval<1.1.0,>=0.9.13
|
|
32
|
-
Requires-Dist: sparse
|
|
32
|
+
Requires-Dist: sparse>0.15
|
|
33
33
|
Requires-Dist: tinygp<0.4,>=0.3.0
|
|
34
34
|
Requires-Dist: watermark<3,>=2.4.3
|
|
35
35
|
Description-Content-Type: text/markdown
|
|
@@ -44,7 +44,7 @@ Description-Content-Type: text/markdown
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
[)](https://pypi.org/project/jaxspec/)
|
|
47
|
-
|
|
47
|
+

|
|
48
48
|
[](https://jaxspec.readthedocs.io/en/latest/)
|
|
49
49
|
[](https://app.codecov.io/gh/renecotyfanboy/jaxspec)
|
|
50
50
|
[](https://join.slack.com/t/jaxspec/shared_invite/zt-2cuxkdl2f-t0EEAKP~HBEHKvIUZJL2sg)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
jaxspec/__init__.py,sha256=Sbn02lX6Y-zNXk17N8dec22c5jeypiS0LkHmGfz7lWA,126
|
|
2
|
+
jaxspec/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
jaxspec/analysis/_plot.py,sha256=0xEz-e_xk7XvU6PUfbNwxaWg1-SxAF2XAqhkxWEhIFs,6239
|
|
4
|
+
jaxspec/analysis/compare.py,sha256=g2UFhmR9Zt-7cz5gQFOB6lXuklXB3yTyUvjTypOzoSY,725
|
|
5
|
+
jaxspec/analysis/results.py,sha256=_qwDSsThI7FOAR6nMaJltGWlKO5Sz2wc1EQ73Y0Ghho,26013
|
|
6
|
+
jaxspec/data/__init__.py,sha256=aantcYKC9kZFvaE-V2SIwSuLhIld17Kjrd9CIUu___Y,415
|
|
7
|
+
jaxspec/data/instrument.py,sha256=RDiG_LkucvnF2XE_ghTFME6d_2YirgQUcEY0gEle6dk,4775
|
|
8
|
+
jaxspec/data/obsconf.py,sha256=G0RwNshvbDQzw_ba8Y8NdI-cRsgEj-OlSNdeYCANqVM,10484
|
|
9
|
+
jaxspec/data/observation.py,sha256=OHXfs7ApC8JAiG6h1teEmXu3iaNyhrqI5BCwl-qFvoM,7820
|
|
10
|
+
jaxspec/data/ogip.py,sha256=eMmBuROW4eMRxRHkPPyGHf933e0IcREqB8WMQFMS2lY,9810
|
|
11
|
+
jaxspec/data/util.py,sha256=4_f6ByGjUEZXTwrB37dCyYaTB1pjF10Z0ho7-4GrQuc,9761
|
|
12
|
+
jaxspec/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
+
jaxspec/experimental/interpolator.py,sha256=mJRdCB4B71le3dQL_S_E6Wkqpb6QLT7Wdzlok-rU6Ok,2652
|
|
14
|
+
jaxspec/experimental/interpolator_jax.py,sha256=13lflsjbImDRZTObSRDtZnujrXBvEP367Rn20eByONs,2967
|
|
15
|
+
jaxspec/experimental/intrument_models.py,sha256=vuRw7xypPI9YV-Hv8chVNP4ti24dCGjbtDBNbtoVBZQ,5283
|
|
16
|
+
jaxspec/experimental/nested_sampler.py,sha256=8jCAXQAe2mD5YSNSF0jia_rFWES_MzwRM3FrQQS_x7w,2807
|
|
17
|
+
jaxspec/experimental/tabulated.py,sha256=H0llUiso2KGH4xUzTUSVPy-6I8D3wm707lU_Z1P5uq4,9429
|
|
18
|
+
jaxspec/fit/__init__.py,sha256=OaS0-Hkb3Hd-AkE2o-KWfoWMX0NSCPY-_FP2znHf9l0,153
|
|
19
|
+
jaxspec/fit/_bayesian_model.py,sha256=BeYukXr86Y1kEmSyiv-6QC4M2rM78Kx_MgGecu4ML98,15179
|
|
20
|
+
jaxspec/fit/_build_model.py,sha256=pNZVuVfwOq3Pg23opH7xRv28DsSkQZpvy2Z-1hQSfNs,3219
|
|
21
|
+
jaxspec/fit/_fitter.py,sha256=doBTJqTP5CN1OJhZHVlS3oMVOzPJyH4YqOnGevIIU68,8893
|
|
22
|
+
jaxspec/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
+
jaxspec/model/_graph_util.py,sha256=hPvHYmAxb7P3nyIecaZ7RqWOjwcZ1WvUByt_yNANiaY,4552
|
|
24
|
+
jaxspec/model/abc.py,sha256=RGrqDrXVNjCy7GYBZL-l1PZ3Lpr37SsMIw7L9_B8WJ4,14773
|
|
25
|
+
jaxspec/model/additive.py,sha256=rEONSy7b7lwfXIhuPqtI4y2Yhq55EqrlEtEckEe6TA0,20538
|
|
26
|
+
jaxspec/model/background.py,sha256=VLSrU0YCW9GSHCtaEdcth-sp74aPyEVSizIMFkTpM7M,7759
|
|
27
|
+
jaxspec/model/instrument.py,sha256=FSGgWCQjUfSVOzJ3YfrbQQ2abPlZ4P4ndtLL9Axcl-g,2217
|
|
28
|
+
jaxspec/model/list.py,sha256=uC9rLEEeph10q6shat86WLACVuTSx73RGMl8Ij0jqQY,875
|
|
29
|
+
jaxspec/model/multiplicative.py,sha256=odaOlF0K1KjzUDstPtWAk95ScHoZ7_XveOew6l3tbeU,8337
|
|
30
|
+
jaxspec/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
|
+
jaxspec/scripts/debug.py,sha256=qhyDtX4G5UdChmTLCM-5Wti4XZU-sU5S-wDb6TZjrvM,292
|
|
32
|
+
jaxspec/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
|
+
jaxspec/util/abundance.py,sha256=fsC313taIlGzQsZNwbYsJupDWm7ZbqzGhY66Ku394Mw,8546
|
|
34
|
+
jaxspec/util/integrate.py,sha256=7GwBSagmDzsF3P53tPs-oakeq0zHEwmZZS2zQlXngbE,4634
|
|
35
|
+
jaxspec/util/misc.py,sha256=O3qorCL1Y2X1BS2jdd36C1eDHK9QDXTSOr9kj3uqcJo,654
|
|
36
|
+
jaxspec/util/online_storage.py,sha256=vm56RfcbFKpkRVfr0bXO7J9aQxuBq-I_oEgA26YIhCo,2469
|
|
37
|
+
jaxspec/util/typing.py,sha256=ZQM_l68qyYnIBZPz_1mKvwPMx64jvVBD8Uj6bx9sHv0,140
|
|
38
|
+
jaxspec-0.3.0.dist-info/METADATA,sha256=92shp3kcwQIbKTSVSD7SU68InowsGVZXST0uJYvRwnQ,4199
|
|
39
|
+
jaxspec-0.3.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
40
|
+
jaxspec-0.3.0.dist-info/entry_points.txt,sha256=4ffU5AImfcEBxgWTqopQll2YffpFldOswXRh16pd0Dc,72
|
|
41
|
+
jaxspec-0.3.0.dist-info/licenses/LICENSE.md,sha256=2q5XoWzddts5IqzIcgYYMOL21puU3MfO8gvT3Ype1eQ,1073
|
|
42
|
+
jaxspec-0.3.0.dist-info/RECORD,,
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
jaxspec/__init__.py,sha256=Sbn02lX6Y-zNXk17N8dec22c5jeypiS0LkHmGfz7lWA,126
|
|
2
|
-
jaxspec/fit.py,sha256=gO0H8CR76WP7lrG2X-Z3HLMndOSkCulzrp2jll1b4ow,24337
|
|
3
|
-
jaxspec/_fit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
jaxspec/_fit/_build_model.py,sha256=NgLobtysyhCoiRguAazYGRIpG75iW-pG0Ss_hQGuCT4,2019
|
|
5
|
-
jaxspec/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
jaxspec/analysis/_plot.py,sha256=1VbWentCLHR8XzM3jZtGyppbQRFWnChNztrwpZ2reA4,6185
|
|
7
|
-
jaxspec/analysis/compare.py,sha256=g2UFhmR9Zt-7cz5gQFOB6lXuklXB3yTyUvjTypOzoSY,725
|
|
8
|
-
jaxspec/analysis/results.py,sha256=9ybhWMtwXD_f9reTt_UcSUKQaY4Raxm0Fi7QBv7fqow,25448
|
|
9
|
-
jaxspec/data/__init__.py,sha256=aantcYKC9kZFvaE-V2SIwSuLhIld17Kjrd9CIUu___Y,415
|
|
10
|
-
jaxspec/data/instrument.py,sha256=RDiG_LkucvnF2XE_ghTFME6d_2YirgQUcEY0gEle6dk,4775
|
|
11
|
-
jaxspec/data/obsconf.py,sha256=r0deDgzpfKJZFMeiKQYUnkqQEmoDYTzl3eQFjb5xYjo,10263
|
|
12
|
-
jaxspec/data/observation.py,sha256=dfb-hJFpeSPMS52oNmQl39CB9GD_MK1gG9vHlQXhhwU,7741
|
|
13
|
-
jaxspec/data/ogip.py,sha256=57lfUgvMhM4j5tdfnOmwLI0ehx09pG7SvJx6VNIJFHE,9543
|
|
14
|
-
jaxspec/data/util.py,sha256=FnIqrnwm29WsFV3FayeLXpjJDS10FcZ613B3SzGQCTk,9331
|
|
15
|
-
jaxspec/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
-
jaxspec/model/_graph_util.py,sha256=hPvHYmAxb7P3nyIecaZ7RqWOjwcZ1WvUByt_yNANiaY,4552
|
|
17
|
-
jaxspec/model/abc.py,sha256=sHaFKOGfpD1ocXKlzEMdsmGLluikmBSmX8FAu7duFMQ,15489
|
|
18
|
-
jaxspec/model/additive.py,sha256=2MXttFw7eZ6dZ2yWyNpMGDDFFE0kNo6yAP-G-YtL2Qk,20276
|
|
19
|
-
jaxspec/model/background.py,sha256=INRuuHIYgfu2E1a8Ddqpr_gF1wnhPtOpciWCteZfVVg,7687
|
|
20
|
-
jaxspec/model/list.py,sha256=0RPAoscVz_zM1CWdx_Gd5wfrQWV5Nv4Kd4bSXu2ayUA,860
|
|
21
|
-
jaxspec/model/multiplicative.py,sha256=5LHBAXCV9EQO1BGm1HzAI56dqjVbafBdV8Eq7_qXdbM,7890
|
|
22
|
-
jaxspec/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
-
jaxspec/scripts/debug.py,sha256=qhyDtX4G5UdChmTLCM-5Wti4XZU-sU5S-wDb6TZjrvM,292
|
|
24
|
-
jaxspec/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
|
-
jaxspec/util/abundance.py,sha256=fsC313taIlGzQsZNwbYsJupDWm7ZbqzGhY66Ku394Mw,8546
|
|
26
|
-
jaxspec/util/integrate.py,sha256=_Ax_knpC7d4et2-QFkOUzVtNeQLX1-cwLvm-FRBxYcw,4505
|
|
27
|
-
jaxspec/util/misc.py,sha256=O3qorCL1Y2X1BS2jdd36C1eDHK9QDXTSOr9kj3uqcJo,654
|
|
28
|
-
jaxspec/util/online_storage.py,sha256=vm56RfcbFKpkRVfr0bXO7J9aQxuBq-I_oEgA26YIhCo,2469
|
|
29
|
-
jaxspec/util/typing.py,sha256=ZQM_l68qyYnIBZPz_1mKvwPMx64jvVBD8Uj6bx9sHv0,140
|
|
30
|
-
jaxspec-0.2.2.dev0.dist-info/METADATA,sha256=IerKRzXZp5wfqk_2mBYt1vl8wyrnEiMTkWoI-BiNNOo,4116
|
|
31
|
-
jaxspec-0.2.2.dev0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
32
|
-
jaxspec-0.2.2.dev0.dist-info/entry_points.txt,sha256=4ffU5AImfcEBxgWTqopQll2YffpFldOswXRh16pd0Dc,72
|
|
33
|
-
jaxspec-0.2.2.dev0.dist-info/licenses/LICENSE.md,sha256=2q5XoWzddts5IqzIcgYYMOL21puU3MfO8gvT3Ype1eQ,1073
|
|
34
|
-
jaxspec-0.2.2.dev0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|