jaxspec 0.0.6__py3-none-any.whl → 0.0.8__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/results.py +297 -121
- jaxspec/data/__init__.py +4 -4
- jaxspec/data/obsconf.py +53 -8
- jaxspec/data/util.py +114 -84
- jaxspec/fit.py +335 -96
- jaxspec/model/__init__.py +0 -1
- jaxspec/model/_additive/apec.py +56 -117
- jaxspec/model/_additive/apec_loaders.py +42 -59
- jaxspec/model/additive.py +194 -55
- jaxspec/model/background.py +50 -16
- jaxspec/model/multiplicative.py +63 -41
- jaxspec/util/__init__.py +45 -0
- jaxspec/util/abundance.py +5 -3
- jaxspec/util/online_storage.py +28 -0
- jaxspec/util/typing.py +43 -0
- {jaxspec-0.0.6.dist-info → jaxspec-0.0.8.dist-info}/METADATA +14 -10
- {jaxspec-0.0.6.dist-info → jaxspec-0.0.8.dist-info}/RECORD +19 -25
- {jaxspec-0.0.6.dist-info → jaxspec-0.0.8.dist-info}/WHEEL +1 -1
- jaxspec/data/example_data/MOS1.pha +0 -46
- jaxspec/data/example_data/MOS2.pha +0 -42
- jaxspec/data/example_data/PN.pha +1 -293
- jaxspec/data/example_data/fakeit.pha +1 -335
- jaxspec/tables/abundances.dat +0 -31
- jaxspec/tables/xsect_phabs_aspl.fits +0 -0
- jaxspec/tables/xsect_tbabs_wilm.fits +0 -0
- jaxspec/tables/xsect_wabs_angr.fits +0 -0
- {jaxspec-0.0.6.dist-info → jaxspec-0.0.8.dist-info}/LICENSE.md +0 -0
jaxspec/model/multiplicative.py
CHANGED
|
@@ -5,9 +5,11 @@ from abc import ABC, abstractmethod
|
|
|
5
5
|
import haiku as hk
|
|
6
6
|
import jax.numpy as jnp
|
|
7
7
|
import numpy as np
|
|
8
|
-
|
|
9
|
-
from haiku.initializers import Constant as HaikuConstant
|
|
8
|
+
|
|
10
9
|
from astropy.table import Table
|
|
10
|
+
from haiku.initializers import Constant as HaikuConstant
|
|
11
|
+
|
|
12
|
+
from ..util.online_storage import table_manager
|
|
11
13
|
from .abc import ModelComponent
|
|
12
14
|
|
|
13
15
|
|
|
@@ -15,8 +17,7 @@ class MultiplicativeComponent(ModelComponent, ABC):
|
|
|
15
17
|
type = "multiplicative"
|
|
16
18
|
|
|
17
19
|
@abstractmethod
|
|
18
|
-
def continuum(self, energy):
|
|
19
|
-
...
|
|
20
|
+
def continuum(self, energy): ...
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
class Expfac(MultiplicativeComponent):
|
|
@@ -36,9 +37,9 @@ class Expfac(MultiplicativeComponent):
|
|
|
36
37
|
"""
|
|
37
38
|
|
|
38
39
|
def continuum(self, energy):
|
|
39
|
-
amplitude = hk.get_parameter("A", [], init=HaikuConstant(1))
|
|
40
|
-
factor = hk.get_parameter("f", [], init=HaikuConstant(1))
|
|
41
|
-
pivot = hk.get_parameter("E_c", [], init=HaikuConstant(1))
|
|
40
|
+
amplitude = hk.get_parameter("A", [], float, init=HaikuConstant(1))
|
|
41
|
+
factor = hk.get_parameter("f", [], float, init=HaikuConstant(1))
|
|
42
|
+
pivot = hk.get_parameter("E_c", [], float, init=HaikuConstant(1))
|
|
42
43
|
|
|
43
44
|
return jnp.where(energy >= pivot, 1.0 + amplitude * jnp.exp(-factor * energy), 1.0)
|
|
44
45
|
|
|
@@ -62,14 +63,14 @@ class Tbabs(MultiplicativeComponent):
|
|
|
62
63
|
|
|
63
64
|
"""
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
table = Table.read(
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
def __init__(self, *args, **kwargs):
|
|
67
|
+
super().__init__(*args, **kwargs)
|
|
68
|
+
table = Table.read(table_manager.fetch("xsect_tbabs_wilm.fits"))
|
|
69
|
+
self.energy = jnp.asarray(np.array(table["ENERGY"]), dtype=np.float64)
|
|
70
|
+
self.sigma = jnp.asarray(np.array(table["SIGMA"]), dtype=np.float64)
|
|
70
71
|
|
|
71
72
|
def continuum(self, energy):
|
|
72
|
-
nh = hk.get_parameter("N_H", [], init=HaikuConstant(1))
|
|
73
|
+
nh = hk.get_parameter("N_H", [], float, init=HaikuConstant(1))
|
|
73
74
|
sigma = jnp.interp(energy, self.energy, self.sigma, left=1e9, right=0.0)
|
|
74
75
|
|
|
75
76
|
return jnp.exp(-nh * sigma)
|
|
@@ -85,14 +86,14 @@ class Phabs(MultiplicativeComponent):
|
|
|
85
86
|
|
|
86
87
|
"""
|
|
87
88
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
table = Table.read(
|
|
91
|
-
|
|
92
|
-
|
|
89
|
+
def __init__(self, *args, **kwargs):
|
|
90
|
+
super().__init__(*args, **kwargs)
|
|
91
|
+
table = Table.read(table_manager.fetch("xsect_phabs_aspl.fits"))
|
|
92
|
+
self.energy = jnp.asarray(np.array(table["ENERGY"]), dtype=np.float64)
|
|
93
|
+
self.sigma = jnp.asarray(np.array(table["SIGMA"]), dtype=np.float64)
|
|
93
94
|
|
|
94
95
|
def continuum(self, energy):
|
|
95
|
-
nh = hk.get_parameter("N_H", [], init=HaikuConstant(1))
|
|
96
|
+
nh = hk.get_parameter("N_H", [], float, init=HaikuConstant(1))
|
|
96
97
|
sigma = jnp.interp(energy, self.energy, self.sigma, left=jnp.inf, right=0.0)
|
|
97
98
|
|
|
98
99
|
return jnp.exp(-nh * sigma)
|
|
@@ -108,14 +109,14 @@ class Wabs(MultiplicativeComponent):
|
|
|
108
109
|
|
|
109
110
|
"""
|
|
110
111
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
table = Table.read(
|
|
114
|
-
|
|
115
|
-
|
|
112
|
+
def __init__(self, *args, **kwargs):
|
|
113
|
+
super().__init__(*args, **kwargs)
|
|
114
|
+
table = Table.read(table_manager.fetch("xsect_wabs_angr.fits"))
|
|
115
|
+
self.energy = jnp.asarray(np.array(table["ENERGY"]), dtype=np.float64)
|
|
116
|
+
self.sigma = jnp.asarray(np.array(table["SIGMA"]), dtype=np.float64)
|
|
116
117
|
|
|
117
118
|
def continuum(self, energy):
|
|
118
|
-
nh = hk.get_parameter("N_H", [], init=HaikuConstant(1))
|
|
119
|
+
nh = hk.get_parameter("N_H", [], float, init=HaikuConstant(1))
|
|
119
120
|
sigma = jnp.interp(energy, self.energy, self.sigma, left=1e9, right=0.0)
|
|
120
121
|
|
|
121
122
|
return jnp.exp(-nh * sigma)
|
|
@@ -141,11 +142,13 @@ class Gabs(MultiplicativeComponent):
|
|
|
141
142
|
"""
|
|
142
143
|
|
|
143
144
|
def continuum(self, energy):
|
|
144
|
-
tau = hk.get_parameter("tau", [], init=HaikuConstant(1))
|
|
145
|
-
sigma = hk.get_parameter("sigma", [], init=HaikuConstant(1))
|
|
146
|
-
center = hk.get_parameter("E_0", [], init=HaikuConstant(1))
|
|
145
|
+
tau = hk.get_parameter("tau", [], float, init=HaikuConstant(1))
|
|
146
|
+
sigma = hk.get_parameter("sigma", [], float, init=HaikuConstant(1))
|
|
147
|
+
center = hk.get_parameter("E_0", [], float, init=HaikuConstant(1))
|
|
147
148
|
|
|
148
|
-
return jnp.exp(
|
|
149
|
+
return jnp.exp(
|
|
150
|
+
-tau / (jnp.sqrt(2 * jnp.pi) * sigma) * jnp.exp(-0.5 * ((energy - center) / sigma) ** 2)
|
|
151
|
+
)
|
|
149
152
|
|
|
150
153
|
|
|
151
154
|
class Highecut(MultiplicativeComponent):
|
|
@@ -163,8 +166,8 @@ class Highecut(MultiplicativeComponent):
|
|
|
163
166
|
"""
|
|
164
167
|
|
|
165
168
|
def continuum(self, energy):
|
|
166
|
-
cutoff = hk.get_parameter("E_c", [], init=HaikuConstant(1))
|
|
167
|
-
folding = hk.get_parameter("E_f", [], init=HaikuConstant(1))
|
|
169
|
+
cutoff = hk.get_parameter("E_c", [], float, init=HaikuConstant(1))
|
|
170
|
+
folding = hk.get_parameter("E_f", [], float, init=HaikuConstant(1))
|
|
168
171
|
|
|
169
172
|
return jnp.where(energy <= cutoff, 1.0, jnp.exp((cutoff - energy) / folding))
|
|
170
173
|
|
|
@@ -185,9 +188,9 @@ class Zedge(MultiplicativeComponent):
|
|
|
185
188
|
"""
|
|
186
189
|
|
|
187
190
|
def continuum(self, energy):
|
|
188
|
-
E_c = hk.get_parameter("E_c", [], init=HaikuConstant(1))
|
|
189
|
-
D = hk.get_parameter("D", [], init=HaikuConstant(1))
|
|
190
|
-
z = hk.get_parameter("z", [], init=HaikuConstant(0))
|
|
191
|
+
E_c = hk.get_parameter("E_c", [], float, init=HaikuConstant(1))
|
|
192
|
+
D = hk.get_parameter("D", [], float, init=HaikuConstant(1))
|
|
193
|
+
z = hk.get_parameter("z", [], float, init=HaikuConstant(0))
|
|
191
194
|
|
|
192
195
|
return jnp.where(energy <= E_c, 1.0, jnp.exp(-D * (energy * (1 + z) / E_c) ** 3))
|
|
193
196
|
|
|
@@ -210,15 +213,34 @@ class Tbpcf(MultiplicativeComponent):
|
|
|
210
213
|
|
|
211
214
|
"""
|
|
212
215
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
table = Table.read(
|
|
216
|
-
|
|
217
|
-
|
|
216
|
+
def __init__(self, *args, **kwargs):
|
|
217
|
+
super().__init__(*args, **kwargs)
|
|
218
|
+
table = Table.read(table_manager.fetch("xsect_tbabs_wilm.fits"))
|
|
219
|
+
self.energy = jnp.asarray(np.array(table["ENERGY"]), dtype=np.float64)
|
|
220
|
+
self.sigma = jnp.asarray(np.array(table["SIGMA"]), dtype=np.float64)
|
|
218
221
|
|
|
219
222
|
def continuum(self, energy):
|
|
220
|
-
nh = hk.get_parameter("N_H", [], init=HaikuConstant(1))
|
|
221
|
-
f = hk.get_parameter("f", [], init=HaikuConstant(0.2))
|
|
223
|
+
nh = hk.get_parameter("N_H", [], float, init=HaikuConstant(1))
|
|
224
|
+
f = hk.get_parameter("f", [], float, init=HaikuConstant(0.2))
|
|
222
225
|
sigma = jnp.interp(energy, self.energy, self.sigma, left=1e9, right=0.0)
|
|
223
226
|
|
|
224
227
|
return f * jnp.exp(-nh * sigma) + (1 - f)
|
|
228
|
+
|
|
229
|
+
class FDcut(MultiplicativeComponent):
|
|
230
|
+
r"""
|
|
231
|
+
A Fermi-Dirac cutoff model.
|
|
232
|
+
|
|
233
|
+
$$
|
|
234
|
+
\mathcal{M}(E) = \left( 1 + \exp \left( \frac{E - E_c}{E_f} \right) \right)^{-1}
|
|
235
|
+
$$
|
|
236
|
+
|
|
237
|
+
??? abstract "Parameters"
|
|
238
|
+
* $E_c$ : Cutoff energy $\left[\text{keV}\right]$
|
|
239
|
+
* $E_f$ : Folding energy $\left[\text{keV}\right]$
|
|
240
|
+
"""
|
|
241
|
+
|
|
242
|
+
def continuum(self, energy):
|
|
243
|
+
cutoff = hk.get_parameter("E_c", [], init=HaikuConstant(1))
|
|
244
|
+
folding = hk.get_parameter("E_f", [], init=HaikuConstant(1))
|
|
245
|
+
|
|
246
|
+
return (1 + jnp.exp((energy - cutoff)/folding)) ** -1
|
jaxspec/util/__init__.py
CHANGED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
from collections.abc import Callable
|
|
2
|
+
from contextlib import contextmanager
|
|
3
|
+
from time import perf_counter
|
|
4
|
+
|
|
5
|
+
import haiku as hk
|
|
6
|
+
|
|
7
|
+
from jax.random import PRNGKey, split
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@contextmanager
|
|
11
|
+
def catchtime(desc="Task", print_time=True) -> Callable[[], float]:
|
|
12
|
+
"""
|
|
13
|
+
Context manager to measure time taken by a task.
|
|
14
|
+
|
|
15
|
+
Parameters
|
|
16
|
+
----------
|
|
17
|
+
desc (str): Description of the task.
|
|
18
|
+
print_time (bool): Whether to print the time taken by the task.
|
|
19
|
+
|
|
20
|
+
Returns
|
|
21
|
+
-------
|
|
22
|
+
Callable[[], float]: Function to get the time taken by the task.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
t1 = t2 = perf_counter()
|
|
26
|
+
yield lambda: t2 - t1
|
|
27
|
+
t2 = perf_counter()
|
|
28
|
+
if print_time:
|
|
29
|
+
print(f"{desc}: {t2 - t1:.3f} seconds")
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def sample_prior(dict_of_prior, key=PRNGKey(0), flat_parameters=False):
|
|
33
|
+
"""
|
|
34
|
+
Sample the prior distribution from a dict of distributions
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
parameters = dict(hk.data_structures.to_haiku_dict(dict_of_prior))
|
|
38
|
+
parameters_flat = {}
|
|
39
|
+
|
|
40
|
+
for m, n, distribution in hk.data_structures.traverse(dict_of_prior):
|
|
41
|
+
key, subkey = split(key)
|
|
42
|
+
parameters[m][n] = distribution.sample(subkey)
|
|
43
|
+
parameters_flat[m + "_" + n] = distribution.sample(subkey)
|
|
44
|
+
|
|
45
|
+
return parameters if not flat_parameters else parameters_flat
|
jaxspec/util/abundance.py
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import importlib.resources
|
|
2
1
|
import pandas as pd
|
|
3
|
-
|
|
2
|
+
|
|
4
3
|
from astropy.io import ascii
|
|
4
|
+
from mendeleev.fetch import fetch_table
|
|
5
|
+
|
|
6
|
+
from .online_storage import table_manager
|
|
5
7
|
|
|
6
|
-
abundance_table: pd.DataFrame = ascii.read(
|
|
8
|
+
abundance_table: pd.DataFrame = ascii.read(table_manager.fetch("abundances.dat")).to_pandas()
|
|
7
9
|
element_data: pd.DataFrame = fetch_table("elements")[0:30][
|
|
8
10
|
["symbol", "atomic_number", "atomic_radius", "atomic_volume", "atomic_weight"]
|
|
9
11
|
].rename(columns={"symbol": "Element"})
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import pooch
|
|
2
|
+
|
|
3
|
+
table_manager = pooch.create(
|
|
4
|
+
# Use the default cache folder for the operating system
|
|
5
|
+
path=pooch.os_cache("jaxspec"),
|
|
6
|
+
base_url="https://github.com/renecotyfanboy/jaxspec-database/raw/main/",
|
|
7
|
+
# The registry specifies the files that can be fetched
|
|
8
|
+
registry={
|
|
9
|
+
"abundances.dat": "sha256:6a7826331f0de308af4631eed5c3b65accda99cd1aa8766f54119dd285b57992",
|
|
10
|
+
"apec.nc": "sha256:52e10e1e4147453890dac68845a1a629954283579eac602419634d43d3c101f9",
|
|
11
|
+
"xsect_tbabs_wilm.fits": "sha256:3cf45e45c9d671c4c4fc128314b7c3a68b30f096eede6b3eb08bf55224a44935",
|
|
12
|
+
"xsect_phabs_aspl.fits": "sha256:3eaffba2a62e3a611e0a4e1ff4a57342d7d576f023d7bbb632710dc75b9a5019",
|
|
13
|
+
"xsect_wabs_angr.fits": "sha256:9b3073a477a30b52e207f2c4bf79afc6ae19abba8f207190ac4c697024f74073",
|
|
14
|
+
"nsatmosdata.fits": "sha256:faca712f87710ecb866b4ab61be593a6813517c44f6e8e92d689b38d42e1b6dc",
|
|
15
|
+
"example_data/NGC7793_ULX4/MOS2background_spectrum.fits": "sha256:5387923be0bf39229f4390dd5e85095a3d534b43a69d6d3179b832ebb366d173",
|
|
16
|
+
"example_data/NGC7793_ULX4/MOS1background_spectrum.fits": "sha256:265fd7465fb1a355f915d9902443ba2fd2be9aface04723056a8376971e3cf14",
|
|
17
|
+
"example_data/NGC7793_ULX4/MOS2.rmf": "sha256:b6af00603dece33dcda35d093451c947059af2e1e45c31c5a0ffa223b7fb693d",
|
|
18
|
+
"example_data/NGC7793_ULX4/PN.arf": "sha256:0ee897a63b6de80589c2da758d7477c54ba601b788bf32d4d16bbffa839acb73",
|
|
19
|
+
"example_data/NGC7793_ULX4/MOS1.rmf": "sha256:2d1138d22c31c5398a4eed1170b0b88b07350ecfec7a7aef4f550871cb4309ae",
|
|
20
|
+
"example_data/NGC7793_ULX4/PN_spectrum_grp20.fits": "sha256:a985e06076bf060d3a5331f20413afa9208a8d771fa6c671e8918a1860577c90",
|
|
21
|
+
"example_data/NGC7793_ULX4/MOS2_spectrum_grp.fits": "sha256:dccc7eda9d3d2e4aac2af4ca13d41ab4acc621265004d50a1586a187f7a04ffc",
|
|
22
|
+
"example_data/NGC7793_ULX4/MOS1_spectrum_grp.fits": "sha256:7e1ff664545bab4fdce1ef94768715b4d87a39b252b61e070e71427e5c8692ac",
|
|
23
|
+
"example_data/NGC7793_ULX4/MOS1.arf": "sha256:9017ada6a391d46f9b569b8d0338fbabb62a5397e7c29eb0a16e4e02d4868159",
|
|
24
|
+
"example_data/NGC7793_ULX4/PN.rmf": "sha256:91ba9ef82da8b9f73e6a799dfe097b87c68a7020ac6c5aa0dcd4067bf9cb4287",
|
|
25
|
+
"example_data/NGC7793_ULX4/MOS2.arf": "sha256:a126ff5a95a5f4bb93ed846944cf411d6e1c448626cb73d347e33324663d8b3f",
|
|
26
|
+
"example_data/NGC7793_ULX4/PNbackground_spectrum.fits": "sha256:55e017e0c19b324245fef049dff2a7a2e49b9a391667ca9c4f667c4f683b1f49",
|
|
27
|
+
},
|
|
28
|
+
)
|
jaxspec/util/typing.py
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
|
|
3
|
+
import numpyro.distributions as dist
|
|
4
|
+
|
|
5
|
+
from jax import numpy as jnp
|
|
6
|
+
from jax.typing import ArrayLike
|
|
7
|
+
from pydantic import BaseModel, field_validator
|
|
8
|
+
|
|
9
|
+
PriorDictType = dict[str, dict[str, dist.Distribution | ArrayLike]]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class PriorDictModel(BaseModel):
|
|
13
|
+
"""
|
|
14
|
+
Pydantic model for a nested dictionary of NumPyro distributions or JAX arrays.
|
|
15
|
+
The top level keys are strings, and the values are dictionaries with string keys and values that are either
|
|
16
|
+
NumPyro distributions or JAX arrays (or convertible to JAX arrays).
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
nested_dict: PriorDictType
|
|
20
|
+
|
|
21
|
+
class Config: # noqa D106
|
|
22
|
+
arbitrary_types_allowed = True
|
|
23
|
+
|
|
24
|
+
@field_validator("nested_dict", mode="before")
|
|
25
|
+
def check_and_cast_nested_dict(cls, value: dict[str, Any]):
|
|
26
|
+
if not isinstance(value, dict):
|
|
27
|
+
raise ValueError("The top level must be a dictionary")
|
|
28
|
+
|
|
29
|
+
for key, inner_dict in value.items():
|
|
30
|
+
if not isinstance(inner_dict, dict):
|
|
31
|
+
raise ValueError(f'The value for key "{key}" must be a dictionary')
|
|
32
|
+
|
|
33
|
+
for inner_key, obj in inner_dict.items():
|
|
34
|
+
if not isinstance(obj, dist.Distribution):
|
|
35
|
+
try:
|
|
36
|
+
# Attempt to cast to JAX array
|
|
37
|
+
value[key][inner_key] = jnp.array(obj, dtype=float)
|
|
38
|
+
except Exception as e:
|
|
39
|
+
raise ValueError(
|
|
40
|
+
f'The value for key "{inner_key}" in inner dictionary must '
|
|
41
|
+
f"be a NumPyro distribution or castable to JAX array. Error: {e}"
|
|
42
|
+
)
|
|
43
|
+
return value
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: jaxspec
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.8
|
|
4
4
|
Summary: jaxspec is a bayesian spectral fitting library for X-ray astronomy.
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: sdupourque
|
|
@@ -10,24 +10,28 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
10
10
|
Classifier: Programming Language :: Python :: 3
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.10
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
-
Requires-Dist: arviz (>=0.17.1,<0.
|
|
13
|
+
Requires-Dist: arviz (>=0.17.1,<0.20.0)
|
|
14
14
|
Requires-Dist: astropy (>=6.0.0,<7.0.0)
|
|
15
15
|
Requires-Dist: chainconsumer (>=1.0.0,<2.0.0)
|
|
16
16
|
Requires-Dist: cmasher (>=1.6.3,<2.0.0)
|
|
17
17
|
Requires-Dist: dm-haiku (>=0.0.11,<0.0.13)
|
|
18
18
|
Requires-Dist: gpjax (>=0.8.0,<0.9.0)
|
|
19
|
-
Requires-Dist:
|
|
20
|
-
Requires-Dist:
|
|
19
|
+
Requires-Dist: interpax (>=0.3.3,<0.4.0)
|
|
20
|
+
Requires-Dist: jax (>=0.4.30,<0.5.0)
|
|
21
|
+
Requires-Dist: jaxlib (>=0.4.30,<0.5.0)
|
|
22
|
+
Requires-Dist: jaxns (>=2.5.1,<3.0.0)
|
|
21
23
|
Requires-Dist: jaxopt (>=0.8.1,<0.9.0)
|
|
22
24
|
Requires-Dist: matplotlib (>=3.8.0,<4.0.0)
|
|
23
|
-
Requires-Dist: mendeleev (>=0.15
|
|
24
|
-
Requires-Dist: mkdocstrings (>=0.24
|
|
25
|
+
Requires-Dist: mendeleev (>=0.15,<0.18)
|
|
26
|
+
Requires-Dist: mkdocstrings (>=0.24,<0.26)
|
|
25
27
|
Requires-Dist: networkx (>=3.1,<4.0)
|
|
26
|
-
Requires-Dist: numpy (
|
|
27
|
-
Requires-Dist: numpyro (>=0.
|
|
28
|
+
Requires-Dist: numpy (<2.0.0)
|
|
29
|
+
Requires-Dist: numpyro (>=0.15.0,<0.16.0)
|
|
30
|
+
Requires-Dist: optimistix (>=0.0.7,<0.0.8)
|
|
28
31
|
Requires-Dist: pandas (>=2.2.0,<3.0.0)
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist:
|
|
32
|
+
Requires-Dist: pooch (>=1.8.2,<2.0.0)
|
|
33
|
+
Requires-Dist: pyzmq (<27)
|
|
34
|
+
Requires-Dist: scipy (<1.14)
|
|
31
35
|
Requires-Dist: seaborn (>=0.13.1,<0.14.0)
|
|
32
36
|
Requires-Dist: simpleeval (>=0.9.13,<0.10.0)
|
|
33
37
|
Requires-Dist: sparse (>=0.15.1,<0.16.0)
|
|
@@ -1,48 +1,42 @@
|
|
|
1
1
|
jaxspec/__init__.py,sha256=Sbn02lX6Y-zNXk17N8dec22c5jeypiS0LkHmGfz7lWA,126
|
|
2
2
|
jaxspec/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
3
|
jaxspec/analysis/compare.py,sha256=g2UFhmR9Zt-7cz5gQFOB6lXuklXB3yTyUvjTypOzoSY,725
|
|
4
|
-
jaxspec/analysis/results.py,sha256=
|
|
5
|
-
jaxspec/data/__init__.py,sha256=
|
|
4
|
+
jaxspec/analysis/results.py,sha256=mTSPPzKVsZ-yaz-BZvGRw195S9542VZb0kR1vv4np6Y,26541
|
|
5
|
+
jaxspec/data/__init__.py,sha256=aantcYKC9kZFvaE-V2SIwSuLhIld17Kjrd9CIUu___Y,415
|
|
6
6
|
jaxspec/data/example_data/MOS1.arf,sha256=kBetpqOR1G-bVpuNAzj7q7YqU5fnwp6woW5OAtSGgVk,34560
|
|
7
|
-
jaxspec/data/example_data/MOS1.pha,sha256=fh_2ZFRbq0_c4e-UdocVtNh6ObJSth4HDnFCflyGkqw,83520
|
|
8
7
|
jaxspec/data/example_data/MOS1.rmf,sha256=LRE40iwxxTmKTu0RcLC4iwc1Ds_senrvT1UIcctDCa4,14846400
|
|
9
8
|
jaxspec/data/example_data/MOS1_spectrum_grp.fits,sha256=fh_2ZFRbq0_c4e-UdocVtNh6ObJSth4HDnFCflyGkqw,83520
|
|
10
9
|
jaxspec/data/example_data/MOS1background_spectrum.fits,sha256=Jl_XRl-xo1X5FdmQJEO6L9K-mvrOBHIwVqg3aXHjzxQ,69120
|
|
11
10
|
jaxspec/data/example_data/MOS2.arf,sha256=oSb_WpWl9LuT7YRpRM9BHW4cRIYmy3PTR-MzJGY9iz8,34560
|
|
12
|
-
jaxspec/data/example_data/MOS2.pha,sha256=3Mx-2p09LkqsKvTKE9QatKzGISZQBNUKFYahh_egT_w,89280
|
|
13
11
|
jaxspec/data/example_data/MOS2.rmf,sha256=tq8AYD3s4z3No10JNFHJRwWa8uHkXDHFoP-iI7f7aT0,14783040
|
|
14
12
|
jaxspec/data/example_data/MOS2_spectrum_grp.fits,sha256=3Mx-2p09LkqsKvTKE9QatKzGISZQBNUKFYahh_egT_w,89280
|
|
15
13
|
jaxspec/data/example_data/MOS2background_spectrum.fits,sha256=U4eSO-C_OSKfQ5DdXoUJWj1TS0OmnW0xebgy67Nm0XM,77760
|
|
16
14
|
jaxspec/data/example_data/PN.arf,sha256=DuiXpjtt6AWJwtp1jXR3xUumAbeIvzLU0Wu_-oOay3M,31680
|
|
17
|
-
jaxspec/data/example_data/PN.pha,sha256=qYXgYHa_Bg06UzHyBBOvqSCKjXcfpsZx6JGKGGBXfJA,138240
|
|
18
15
|
jaxspec/data/example_data/PN.rmf,sha256=kbqe-C2oufc-anmd_gl7h8aKcCCsbFqg3NQGe_nLQoc,3962880
|
|
19
16
|
jaxspec/data/example_data/PN_spectrum_grp20.fits,sha256=qYXgYHa_Bg06UzHyBBOvqSCKjXcfpsZx6JGKGGBXfJA,138240
|
|
20
17
|
jaxspec/data/example_data/PNbackground_spectrum.fits,sha256=VeAX4MGbMkJF_vBJ3_KnouSbmjkWZ8qcT2Z8T2g7H0k,120960
|
|
21
|
-
jaxspec/data/example_data/fakeit.pha,sha256=IhkeWkE-b3ELECd_Uasjo9h3cXgcjCYH20wDpXJ8LMk,60480
|
|
22
18
|
jaxspec/data/grouping.py,sha256=hhgBt-voiH0DDSyePacaIGsaMnrYbJM_-ZeU66keC7I,622
|
|
23
19
|
jaxspec/data/instrument.py,sha256=0pSf1p82g7syDMmKm13eVbYih-Veiq5DnwsyZe6_b4g,3890
|
|
24
|
-
jaxspec/data/obsconf.py,sha256=
|
|
20
|
+
jaxspec/data/obsconf.py,sha256=0X9jR-pV-Pk4-EVuUdlVWgl_gBx8ZurVkRNrfKQWdC4,8663
|
|
25
21
|
jaxspec/data/observation.py,sha256=1UnFu5ihZp9z-vP_I7tsFY8jhhIJunv46JyuE-acrg0,6394
|
|
26
22
|
jaxspec/data/ogip.py,sha256=sv9p00qHS5pzw61pzWyyF0nV-E-RXySdSFK2tUavokA,9545
|
|
27
|
-
jaxspec/data/util.py,sha256=
|
|
28
|
-
jaxspec/fit.py,sha256=
|
|
29
|
-
jaxspec/model/__init__.py,sha256=
|
|
23
|
+
jaxspec/data/util.py,sha256=ycLPVE-cjn6VpUWYlBU1BGfw73ANXIBilyVAUOYOSj0,9540
|
|
24
|
+
jaxspec/fit.py,sha256=4rJ8Zcv-CGwjAEKQ5r6bKD4Abw9OMcZd__rns6S4fto,21375
|
|
25
|
+
jaxspec/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
26
|
jaxspec/model/_additive/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
|
-
jaxspec/model/_additive/apec.py,sha256=
|
|
32
|
-
jaxspec/model/_additive/apec_loaders.py,sha256=
|
|
27
|
+
jaxspec/model/_additive/apec.py,sha256=r7CQqscAgR0BXC_AJqF6B7CPq3Byoo65Z-h9XgACZeU,12460
|
|
28
|
+
jaxspec/model/_additive/apec_loaders.py,sha256=jkUoH0ezeYdaNw3oV10V0L-jt848SKp2thanLWLWp9k,2412
|
|
33
29
|
jaxspec/model/abc.py,sha256=SWjKOOsqU5UJsVy63Tt9dDq8H2eTIbvK2C9iqgiR0cY,19817
|
|
34
|
-
jaxspec/model/additive.py,sha256=
|
|
35
|
-
jaxspec/model/background.py,sha256=
|
|
30
|
+
jaxspec/model/additive.py,sha256=CT2K2DVVeHKN1tee9-J3MYdEPqEOolLB2E7HU-RJKZw,22485
|
|
31
|
+
jaxspec/model/background.py,sha256=QSFFiuyUEvuzXBx3QfkvVneUR8KKEP-VaANEVXcavDE,7865
|
|
36
32
|
jaxspec/model/list.py,sha256=0RPAoscVz_zM1CWdx_Gd5wfrQWV5Nv4Kd4bSXu2ayUA,860
|
|
37
|
-
jaxspec/model/multiplicative.py,sha256=
|
|
38
|
-
jaxspec/
|
|
39
|
-
jaxspec/
|
|
40
|
-
jaxspec/tables/xsect_tbabs_wilm.fits,sha256=PPReRcnWccTE_BKDFLfDposw8Jbu3ms-sIv1UiSkSTU,86400
|
|
41
|
-
jaxspec/tables/xsect_wabs_angr.fits,sha256=mzBzpHejC1LiB_LEv3mvxq4Zq7qPIHGQrExpcCT3QHM,86400
|
|
42
|
-
jaxspec/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
|
-
jaxspec/util/abundance.py,sha256=G-oNT1sxUQj7MwZx7SkQUOq1VZVn-TEBciKWkGhq2is,8554
|
|
33
|
+
jaxspec/model/multiplicative.py,sha256=TG3PCgS7oCuHwJ4TM4whw6pz318oo9MVvjSs4sQZVPc,8300
|
|
34
|
+
jaxspec/util/__init__.py,sha256=vKurfp7p2hxHptJjXhXqFAXAikAGXAqISMJUqPeiGTw,1259
|
|
35
|
+
jaxspec/util/abundance.py,sha256=fsC313taIlGzQsZNwbYsJupDWm7ZbqzGhY66Ku394Mw,8546
|
|
44
36
|
jaxspec/util/integrate.py,sha256=_Ax_knpC7d4et2-QFkOUzVtNeQLX1-cwLvm-FRBxYcw,4505
|
|
45
|
-
jaxspec
|
|
46
|
-
jaxspec
|
|
47
|
-
jaxspec-0.0.
|
|
48
|
-
jaxspec-0.0.
|
|
37
|
+
jaxspec/util/online_storage.py,sha256=vm56RfcbFKpkRVfr0bXO7J9aQxuBq-I_oEgA26YIhCo,2469
|
|
38
|
+
jaxspec/util/typing.py,sha256=qwZMKHivZlozoo0ESsiaQNkG99Dh3PE2Z-5aOQD9zc0,1650
|
|
39
|
+
jaxspec-0.0.8.dist-info/LICENSE.md,sha256=2q5XoWzddts5IqzIcgYYMOL21puU3MfO8gvT3Ype1eQ,1073
|
|
40
|
+
jaxspec-0.0.8.dist-info/METADATA,sha256=vRPdPEBjgjTjvYpff1w-O7yTlcdAaoFF_jNTDst7P-M,3407
|
|
41
|
+
jaxspec-0.0.8.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
42
|
+
jaxspec-0.0.8.dist-info/RECORD,,
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
SIMPLE = T / file does conform to FITS standard BITPIX = 8 / number of bits per data pixel NAXIS = 0 / number of data axes EXTEND = T / FITS dataset may contain extensions XPROC0 = 'arfgen spectrumset=MOS1source_spectrum.fits rmfset=response.ds with&'CONTINUE 'rmfset=no arfset=deletearf.ds detmaptype=flat detmaparray=detmapfil&'CONTINUE 'e.ds: detxoffset=1200 detyoffset=1200 withdetbounds=no detxbins=1 d&'CONTINUE 'etybins=1 withdetbins=yes psfenergy=2 filterdss=yes filteredset=fil&'CONTINUE 'teredpixellist.ds withfilteredset=no sourcecoords=eqpos sourcex=0 s&'CONTINUE 'ourcey=0 withsourcepos=no extendedsource=no modeleffarea=no modelqu&'CONTINUE 'antumeff=no modelfiltertrans=no modelcontamination=yes modelee=no m&'CONTINUE 'odelootcorr=yes applyxcaladjustment=no eegridfactor=100 withbadpixc&'CONTINUE 'orr=yes badpixlocation=MOS1clean.fits psfmodel=ELLBETA badpixelreso&'CONTINUE 'lution=2 withbadpixres=no badpixmaptype=flat setbackscale=yes keepa&'CONTINUE 'rfset=no useodfatt=no ignoreoutoffov=yes crossreg_spectrumset='''' &'CONTINUE 'crossregionarf=no # (arfgen-1.98.3) [xmmsas_20190531_1155-18.0.0]' XPROC1 = 'arfgen spectrumset=MOS1source_spectrum.fits rmfset=response.ds with&'CONTINUE 'rmfset=no arfset=deletearf.ds detmaptype=flat detmaparray=detmapfil&'CONTINUE 'e.ds: detxoffset=1200 detyoffset=1200 withdetbounds=no detxbins=1 d&'CONTINUE 'etybins=1 withdetbins=yes psfenergy=2 filterdss=yes filteredset=fil&'CONTINUE 'teredpixellist.ds withfilteredset=no sourcecoords=eqpos sourcex=0 s&'CONTINUE 'ourcey=0 withsourcepos=no extendedsource=no modeleffarea=no modelqu&'CONTINUE 'antumeff=no modelfiltertrans=no modelcontamination=yes modelee=no m&'CONTINUE 'odelootcorr=yes applyxcaladjustment=no eegridfactor=100 withbadpixc&'CONTINUE 'orr=yes badpixlocation=MOS1clean.fits psfmodel=ELLBETA badpixelreso&'CONTINUE 'lution=2 withbadpixres=no badpixmaptype=flat setbackscale=yes keepa&'CONTINUE 'rfset=no useodfatt=no ignoreoutoffov=yes crossreg_spectrumset='''' &'CONTINUE 'crossregionarf=no # (arfgen-1.98.3) [xmmsas_20190531_1155-18.0.0]' XPROC2 = 'specgroup spectrumset=MOS1source_spectrum.fits groupedset=MOS1_spec&'CONTINUE 'trum_grp.fits overwrite=no backgndset=MOS1background_spectrum.fits &'CONTINUE 'withbgdset=yes mincounts=20 withCounts=yes minSN=5 withminSN=no rat&'CONTINUE 'ioabovebgnd=0 withratioabovebgnd=no oversample=3 withoversampling=y&'CONTINUE 'es grouptemplate=grptemplate.ds withtemplate=no ranges='''' withran&'CONTINUE 'ges=no regbinstart=0 regbinend=0 regbinwid=0 withRegularBins=no uni&'CONTINUE 'ts=CHAN rmfset=MOS1.rmf withrmfset=yes arfset=MOS1.arf witharfset=y&'CONTINUE 'es addfilenames=yes hightolow=no lastbin=addtogroup setbad=CCF # (s&'CONTINUE 'pecgroup-1.7) [xmmsas_20190531_1155-18.0.0]' XDAL0 = 'MOS1_spectrum_grp.fits 2020-11-02T11:52:13.000 Modify specgroup (sp&'CONTINUE 'ecgroup-1.7) [xmmsas_20190531_1155-18.0.0] High SAS_MEMORY_MODEL= S&'CONTINUE 'AS_ROWS= SAS_ZERO_ROWS= SAS_COLUMN_WISE= ' XDAL1 = 'MOS1source_spectrum.fits 2020-11-02T11:49:52.000 Modify arfgen (arf&'CONTINUE 'gen-1.98.3) [xmmsas_20190531_1155-18.0.0] High SAS_MEMORY_MODEL= SA&'CONTINUE 'S_ROWS= SAS_ZERO_ROWS= SAS_COLUMN_WISE=' CREATOR = 'evselect (evselect-3.68) [xmmsas_20190531_1155-18.0.0]' / name of codDATE = '2020-11-02T11:49:45.000' / creation date LONGSTRN= 'OGIP 1.0' DATAMODE= 'IMAGING ' / Instrument mode (IMAGING or TIMING) TELESCOP= 'XMM ' / XMM mission INSTRUME= 'EMOS1 ' / EPIC MOS Instrument OBS_ID = '0693760101' / Observation Identifier EXP_ID = '0693760101002' / Exposure Identifier DATE-OBS= '2012-05-14T03:27:43' / Start time of exposure DATE-END= '2012-05-14T15:30:06' / End time of exposure OBS_MODE= 'POINTING' / Observation mode (pointing or slew) REVOLUT = 2276 / Revolution number OBJECT = 'CXOU J235750.9-3237' / Name of observed object OBSERVER= 'Dr Christian Motch' / Name of observer RA_OBJ = 3.59462500500000E+02 / [deg] RA of target DEC_OBJ = -3.26239445000000E+01 / [deg] Dec of target RA_NOM = 3.59462500500000E+02 / [deg] RA of nominal boresight DEC_NOM = -3.26239445000000E+01 / [deg] Dec of nominal boresight EXPIDSTR= 'S002 ' / Exposure ID FILTER = 'Medium ' / Filter ID ATT_SRC = 'AHF ' / Source of attitude data (AHF|RAF|THF) ORB_RCNS= T / Reconstructed orbit data used? TFIT_RPD= F / Recalculated signal propagation delays? TFIT_DEG= 4 / Degree of OBT-MET fit polynomial TFIT_RMS= 1.32206581175613E-05 / RMS value of OBT-MET polynomial fit TFIT_PFR= 0.00000000000000E+00 / Fraction of disregarded TCS data points TFIT_IGH= T / Ignored GS handover in TC data? SUBMODE = 'PrimeFullWindow' / Guest Observer mode EQUINOX = 2.00000000000000E+03 / Equinox for sky coordinate x/y axes RADECSYS= 'FK5 ' / World coord. system for this file REFXCTYP= 'RA---TAN' / WCS Coord. type: RA tangent plane projection REFXCRPX= 25921 / WCS axis reference pixel of projected image REFXCRVL= 3.59430833333333E+02 / [deg] WCS coord. at X axis ref. pixel REFXCDLT= -1.38888888888889E-05 / [deg/pix] WCS X increment at ref. pixel REFXLMIN= 1 / WCS minimum legal QPOE projected image X axis vREFXLMAX= 51840 / WCS maximum legal QPOE projected image X axis vREFXDMIN= 29265 / WCS minimum projected image X axis data value REFXDMAX= 47806 / WCS maximum projected image X axis data value REFXCUNI= 'deg ' / WCS Physical units of X axis REFYCTYP= 'DEC--TAN' / WCS Coord. type: DEC tangent plane projection REFYCRPX= 25921 / WCS axis reference pixel of projected image REFYCRVL= -3.26147777777778E+01 / [deg] WCS coord. at Y axis ref. pixel REFYCDLT= 1.38888888888889E-05 / [deg/pix] WCS Y increment at ref. pixel REFYLMIN= 1 / WCS minimum legal QPOE projected image Y axis vREFYLMAX= 51840 / WCS maximum legal QPOE projected image Y axis vREFYDMIN= 13205 / WCS minimum projected image Y axis data value REFYDMAX= 31748 / WCS maximum projected image Y axis data value REFYCUNI= 'deg ' / WCS Physical units of Y axis AVRG_PNT= 'MEDIAN ' / Meaning of PNT values (mean or median) RA_PNT = 3.59430833333333E+02 / [deg] Actual (mean) pointing RA of the optical DEC_PNT = -3.26147777777778E+01 / [deg] Actual (mean) pointing Dec of the opticaPA_PNT = 5.16755905151367E+01 / [deg] Actual (mean) measured position angle of HISTORY Created by evselect (evselect-3.68) [xmmsas_20190531_1155-18.0.0] at 202HISTORY 0-11-02T11:49:45 HISTORY Modified by arfgen (arfgen-1.98.3) [xmmsas_20190531_1155-18.0.0] at 2020HISTORY -11-02T11:49:45 HISTORY Modified by arfgen (arfgen-1.98.3) [xmmsas_20190531_1155-18.0.0] at 2020HISTORY -11-02T11:49:52 HISTORY Modified by specgroup (specgroup-1.7) [xmmsas_20190531_1155-18.0.0] at 2HISTORY 020-11-02T11:52:13 END XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / 8-bit bytes NAXIS = 2 / 2-dimensional binary table NAXIS1 = 10 / width of table in bytes NAXIS2 = 2400 / number of rows in table PCOUNT = 0 / size of special data area GCOUNT = 1 / one data group (required keyword) TFIELDS = 4 / number of fields in each row TTYPE1 = 'CHANNEL ' / The name of this column TFORM1 = 'I ' / data format of field: 2-byte INTEGER TTYPE2 = 'COUNTS ' / The name of this column TFORM2 = 'J ' / data format of field: 4-byte INTEGER TUNIT2 = 'count ' / physical unit of field TTYPE3 = 'GROUPING' / Group constraint TFORM3 = 'I ' / data format of field: 2-byte INTEGER TTYPE4 = 'QUALITY ' / Quality flag of this channel (0=good) TFORM4 = 'I ' / data format of field: 2-byte INTEGER EXTNAME = 'SPECTRUM' / The name of this table TELESCOP= 'XMM ' / XMM mission INSTRUME= 'EMOS1 ' / EPIC MOS Instrument SLCTEXPR= '(FLAG & 0x766ba000) == 0 && ((X,Y) IN circle(24800.615,28194.923,80&'CONTINUE '0)) ' / Filtering expression used by evselect FILTER = 'Medium ' / Filter ID HDUCLASS= 'OGIP ' / Format conforms to OGIP/GSFC conventions HDUCLAS1= 'SPECTRUM' / File contains a spectrum HDUCLAS2= 'TOTAL ' / File contains gross counts HDUCLAS3= 'COUNT ' / Spectrum is stored as counts HDUVERS1= '1.1.0 ' / Version of format AREASCAL= 1.00000000000000E+00 / Nominal scaling factor for data CORRSCAL= 1.00000000000000E+00 / Nominal scaling factor for correction file POISSERR= T / Poisson errors appropriate SYS_ERR = 0 / Global systematic error CHANTYPE= 'PI ' / Type of channel data DETCHANS= 2400 / Total number of detector channels available QUALITY = 0 / All channels have good quality SPECDELT= 5 / Spectral channel size, ie the binning factor SPECPIX = 0 / The rebinned channel correspondsing to SPECVAL SPECVAL = 2.00000000000000E+00 / Original chan value at center of rebinned chan DSTYP1 = 'CCDNR ' / data subspace descriptor: name DSTYP2 = 'FLAG ' / data subspace descriptor: name DSTYP3 = 'PATTERN ' / data subspace descriptor: name DSTYP4 = 'PI ' / data subspace descriptor: name DSUNI4 = 'CHAN ' / data subspace descriptor: units DSTYP5 = 'TIME ' / data subspace descriptor: name DSUNI5 = 's ' / data subspace descriptor: units DSTYP6 = 'FLAG ' / data subspace descriptor: name DSTYP7 = 'POS(X,Y)' / data subspace descriptor: name DSVAL1 = '1 ' / data subspace descriptor: value DSFORM2 = 'X ' / data subspace descriptor: data type DSVAL2 = 'b000x00xx00x0x000x0xxxxxxxxxxxxx' / data subspace descriptor: value DSVAL3 = ':12 ' / data subspace descriptor: value DSVAL4 = '(200:12000)' / data subspace descriptor: value DSVAL5 = 'TABLE ' / data subspace descriptor: value DSREF5 = ':GTI00003' / data subspace descriptor: reference DSFORM6 = 'X ' / data subspace descriptor: data type DSVAL6 = 'b000x00xx00x0x000x0xxxxxxxxxxxxx' / data subspace descriptor: value DSVAL7 = 'TABLE ' / data subspace descriptor: value DSREF7 = ':REG00107' / data subspace descriptor: reference 2DSVAL1 = '2 ' / data subspace descriptor: value 2DSREF5 = ':GTI00103' / data subspace descriptor: reference 3DSVAL1 = '3 ' / data subspace descriptor: value 3DSREF5 = ':GTI00203' / data subspace descriptor: reference 4DSVAL1 = '4 ' / data subspace descriptor: value 4DSREF5 = ':GTI00303' / data subspace descriptor: reference 5DSVAL1 = '5 ' / data subspace descriptor: value 5DSREF5 = ':GTI00403' / data subspace descriptor: reference 6DSVAL1 = '7 ' / data subspace descriptor: value 6DSREF5 = ':GTI00503' / data subspace descriptor: reference MTYPE1 = 'POS ' / DM Keyword: Descriptor name MFORM1 = 'X,Y ' EXPOSURE= 3.59318866584301E+04 / Weighted live time of CCDs in the extraction reBACKSCAL= 2010800 / Scaling factor for background ANCRFILE= 'MOS1.arf' / ancillary response RESPFILE= 'MOS1.rmf' / redistribution matrix BACKFILE= 'MOS1background_spectrum.fits' / Background FITS file TLMIN1 = 0 TLMAX1 = 2399 END
|
|
2
|
-
|
|
3
|
-
��D��E��F��G��H
|
|
4
|
-
��IJ��K��L��M��N��O��PQ��R��S��T ��U��VW��X ��Y��Z��[
|
|
5
|
-
��_��`
|
|
6
|
-
��j��k ��l��m n��o ��p��q��rs��t��u��v��wx��y��z��{��|��}~��������
|
|
7
|
-
����������������
|
|
8
|
-
�
|
|
9
|
-
������������
|
|
10
|
-
����������
|
|
11
|
-
���
|
|
12
|
-
����������
|
|
13
|
-
���������� ��������������������������������������������
|
|
14
|
-
������
|
|
15
|
-
�
|
|
16
|
-
��� �������������������������������������������������������������
|
|
17
|
-
����
|
|
18
|
-
����������
|
|
19
|
-
�� ��!"��#��$��%��&��'
|
|
20
|
-
��0��1
|
|
21
|
-
2
|
|
22
|
-
��<��=��>��?��@A
|
|
23
|
-
��B��C
|
|
24
|
-
��L��M��N��O��P��QR��S��T��U��V��W
|
|
25
|
-
��X
|
|
26
|
-
��Y
|
|
27
|
-
Z��[
|
|
28
|
-
��]��^��_
|
|
29
|
-
��`a��b��c��d��e
|
|
30
|
-
��gh��i ��j��k��l ��m��n��op
|
|
31
|
-
��q��r
|
|
32
|
-
��s ��t��u ��v��w��xy��z��{��|��}��~������������������
|
|
33
|
-
������������ ���
|
|
34
|
-
�����������������������������������
|
|
35
|
-
��������������� �����������������������������������������
|
|
36
|
-
���������������������������������������������������������������������������
|
|
37
|
-
��� �����������������
|
|
38
|
-
���������������� ��
|
|
39
|
-
������
|
|
40
|
-
������
|
|
41
|
-
������
|
|
42
|
-
������
|
|
43
|
-
������
|
|
44
|
-
������
|
|
45
|
-
|
|
46
|
-
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
SIMPLE = T / file does conform to FITS standard BITPIX = 8 / number of bits per data pixel NAXIS = 0 / number of data axes EXTEND = T / FITS dataset may contain extensions XPROC0 = 'arfgen spectrumset=MOS2source_spectrum.fits rmfset=response.ds with&'CONTINUE 'rmfset=no arfset=deletearf.ds detmaptype=flat detmaparray=detmapfil&'CONTINUE 'e.ds: detxoffset=1200 detyoffset=1200 withdetbounds=no detxbins=1 d&'CONTINUE 'etybins=1 withdetbins=yes psfenergy=2 filterdss=yes filteredset=fil&'CONTINUE 'teredpixellist.ds withfilteredset=no sourcecoords=eqpos sourcex=0 s&'CONTINUE 'ourcey=0 withsourcepos=no extendedsource=no modeleffarea=no modelqu&'CONTINUE 'antumeff=no modelfiltertrans=no modelcontamination=yes modelee=no m&'CONTINUE 'odelootcorr=yes applyxcaladjustment=no eegridfactor=100 withbadpixc&'CONTINUE 'orr=yes badpixlocation=MOS2clean.fits psfmodel=ELLBETA badpixelreso&'CONTINUE 'lution=2 withbadpixres=no badpixmaptype=flat setbackscale=yes keepa&'CONTINUE 'rfset=no useodfatt=no ignoreoutoffov=yes crossreg_spectrumset='''' &'CONTINUE 'crossregionarf=no # (arfgen-1.98.3) [xmmsas_20190531_1155-18.0.0]' XPROC1 = 'arfgen spectrumset=MOS2source_spectrum.fits rmfset=response.ds with&'CONTINUE 'rmfset=no arfset=deletearf.ds detmaptype=flat detmaparray=detmapfil&'CONTINUE 'e.ds: detxoffset=1200 detyoffset=1200 withdetbounds=no detxbins=1 d&'CONTINUE 'etybins=1 withdetbins=yes psfenergy=2 filterdss=yes filteredset=fil&'CONTINUE 'teredpixellist.ds withfilteredset=no sourcecoords=eqpos sourcex=0 s&'CONTINUE 'ourcey=0 withsourcepos=no extendedsource=no modeleffarea=no modelqu&'CONTINUE 'antumeff=no modelfiltertrans=no modelcontamination=yes modelee=no m&'CONTINUE 'odelootcorr=yes applyxcaladjustment=no eegridfactor=100 withbadpixc&'CONTINUE 'orr=yes badpixlocation=MOS2clean.fits psfmodel=ELLBETA badpixelreso&'CONTINUE 'lution=2 withbadpixres=no badpixmaptype=flat setbackscale=yes keepa&'CONTINUE 'rfset=no useodfatt=no ignoreoutoffov=yes crossreg_spectrumset='''' &'CONTINUE 'crossregionarf=no # (arfgen-1.98.3) [xmmsas_20190531_1155-18.0.0]' XPROC2 = 'specgroup spectrumset=MOS2source_spectrum.fits groupedset=MOS2_spec&'CONTINUE 'trum_grp.fits overwrite=no backgndset=MOS2background_spectrum.fits &'CONTINUE 'withbgdset=yes mincounts=20 withCounts=yes minSN=5 withminSN=no rat&'CONTINUE 'ioabovebgnd=0 withratioabovebgnd=no oversample=3 withoversampling=y&'CONTINUE 'es grouptemplate=grptemplate.ds withtemplate=no ranges='''' withran&'CONTINUE 'ges=no regbinstart=0 regbinend=0 regbinwid=0 withRegularBins=no uni&'CONTINUE 'ts=CHAN rmfset=MOS2.rmf withrmfset=yes arfset=MOS2.arf witharfset=y&'CONTINUE 'es addfilenames=yes hightolow=no lastbin=addtogroup setbad=CCF # (s&'CONTINUE 'pecgroup-1.7) [xmmsas_20190531_1155-18.0.0]' XDAL0 = 'MOS2_spectrum_grp.fits 2020-11-02T11:55:48.000 Modify specgroup (sp&'CONTINUE 'ecgroup-1.7) [xmmsas_20190531_1155-18.0.0] High SAS_MEMORY_MODEL= S&'CONTINUE 'AS_ROWS= SAS_ZERO_ROWS= SAS_COLUMN_WISE= ' XDAL1 = 'MOS2source_spectrum.fits 2020-11-02T11:53:09.000 Modify arfgen (arf&'CONTINUE 'gen-1.98.3) [xmmsas_20190531_1155-18.0.0] High SAS_MEMORY_MODEL= SA&'CONTINUE 'S_ROWS= SAS_ZERO_ROWS= SAS_COLUMN_WISE=' CREATOR = 'evselect (evselect-3.68) [xmmsas_20190531_1155-18.0.0]' / name of codDATE = '2020-11-02T11:53:00.000' / creation date LONGSTRN= 'OGIP 1.0' DATAMODE= 'IMAGING ' / Instrument mode (IMAGING or TIMING) TELESCOP= 'XMM ' / XMM mission INSTRUME= 'EMOS2 ' / EPIC MOS Instrument OBS_ID = '0693760101' / Observation Identifier EXP_ID = '0693760101003' / Exposure Identifier DATE-OBS= '2012-05-14T03:27:43' / Start time of exposure DATE-END= '2012-05-14T15:30:17' / End time of exposure OBS_MODE= 'POINTING' / Observation mode (pointing or slew) REVOLUT = 2276 / Revolution number OBJECT = 'CXOU J235750.9-3237' / Name of observed object OBSERVER= 'Dr Christian Motch' / Name of observer RA_OBJ = 3.59462500500000E+02 / [deg] RA of target DEC_OBJ = -3.26239445000000E+01 / [deg] Dec of target RA_NOM = 3.59462500500000E+02 / [deg] RA of nominal boresight DEC_NOM = -3.26239445000000E+01 / [deg] Dec of nominal boresight EXPIDSTR= 'S003 ' / Exposure ID FILTER = 'Medium ' / Filter ID ATT_SRC = 'AHF ' / Source of attitude data (AHF|RAF|THF) ORB_RCNS= T / Reconstructed orbit data used? TFIT_RPD= F / Recalculated signal propagation delays? TFIT_DEG= 4 / Degree of OBT-MET fit polynomial TFIT_RMS= 1.32206581175613E-05 / RMS value of OBT-MET polynomial fit TFIT_PFR= 0.00000000000000E+00 / Fraction of disregarded TCS data points TFIT_IGH= T / Ignored GS handover in TC data? SUBMODE = 'PrimeFullWindow' / Guest Observer mode EQUINOX = 2.00000000000000E+03 / Equinox for sky coordinate x/y axes RADECSYS= 'FK5 ' / World coord. system for this file REFXCTYP= 'RA---TAN' / WCS Coord. type: RA tangent plane projection REFXCRPX= 25921 / WCS axis reference pixel of projected image REFXCRVL= 3.59430833333333E+02 / [deg] WCS coord. at X axis ref. pixel REFXCDLT= -1.38888888888889E-05 / [deg/pix] WCS X increment at ref. pixel REFXLMIN= 1 / WCS minimum legal QPOE projected image X axis vREFXLMAX= 51840 / WCS maximum legal QPOE projected image X axis vREFXDMIN= 17788 / WCS minimum projected image X axis data value REFXDMAX= 36352 / WCS maximum projected image X axis data value REFXCUNI= 'deg ' / WCS Physical units of X axis REFYCTYP= 'DEC--TAN' / WCS Coord. type: DEC tangent plane projection REFYCRPX= 25921 / WCS axis reference pixel of projected image REFYCRVL= -3.26147777777778E+01 / [deg] WCS coord. at Y axis ref. pixel REFYCDLT= 1.38888888888889E-05 / [deg/pix] WCS Y increment at ref. pixel REFYLMIN= 1 / WCS minimum legal QPOE projected image Y axis vREFYLMAX= 51840 / WCS maximum legal QPOE projected image Y axis vREFYDMIN= 30793 / WCS minimum projected image Y axis data value REFYDMAX= 49356 / WCS maximum projected image Y axis data value REFYCUNI= 'deg ' / WCS Physical units of Y axis AVRG_PNT= 'MEDIAN ' / Meaning of PNT values (mean or median) RA_PNT = 3.59430833333333E+02 / [deg] Actual (mean) pointing RA of the optical DEC_PNT = -3.26147777777778E+01 / [deg] Actual (mean) pointing Dec of the opticaPA_PNT = 5.16755905151367E+01 / [deg] Actual (mean) measured position angle of HISTORY Created by evselect (evselect-3.68) [xmmsas_20190531_1155-18.0.0] at 202HISTORY 0-11-02T11:53:00 HISTORY Modified by arfgen (arfgen-1.98.3) [xmmsas_20190531_1155-18.0.0] at 2020HISTORY -11-02T11:53:00 HISTORY Modified by arfgen (arfgen-1.98.3) [xmmsas_20190531_1155-18.0.0] at 2020HISTORY -11-02T11:53:09 HISTORY Modified by specgroup (specgroup-1.7) [xmmsas_20190531_1155-18.0.0] at 2HISTORY 020-11-02T11:55:48 END XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / 8-bit bytes NAXIS = 2 / 2-dimensional binary table NAXIS1 = 10 / width of table in bytes NAXIS2 = 2400 / number of rows in table PCOUNT = 0 / size of special data area GCOUNT = 1 / one data group (required keyword) TFIELDS = 4 / number of fields in each row TTYPE1 = 'CHANNEL ' / The name of this column TFORM1 = 'I ' / data format of field: 2-byte INTEGER TTYPE2 = 'COUNTS ' / The name of this column TFORM2 = 'J ' / data format of field: 4-byte INTEGER TUNIT2 = 'count ' / physical unit of field TTYPE3 = 'GROUPING' / Group constraint TFORM3 = 'I ' / data format of field: 2-byte INTEGER TTYPE4 = 'QUALITY ' / Quality flag of this channel (0=good) TFORM4 = 'I ' / data format of field: 2-byte INTEGER EXTNAME = 'SPECTRUM' / The name of this table TELESCOP= 'XMM ' / XMM mission INSTRUME= 'EMOS2 ' / EPIC MOS Instrument SLCTEXPR= '(FLAG & 0x766ba000) == 0 && ((X,Y) IN circle(24800.615,28194.923,80&'CONTINUE '0)) ' / Filtering expression used by evselect FILTER = 'Medium ' / Filter ID HDUCLASS= 'OGIP ' / Format conforms to OGIP/GSFC conventions HDUCLAS1= 'SPECTRUM' / File contains a spectrum HDUCLAS2= 'TOTAL ' / File contains gross counts HDUCLAS3= 'COUNT ' / Spectrum is stored as counts HDUVERS1= '1.1.0 ' / Version of format AREASCAL= 1.00000000000000E+00 / Nominal scaling factor for data CORRSCAL= 1.00000000000000E+00 / Nominal scaling factor for correction file POISSERR= T / Poisson errors appropriate SYS_ERR = 0 / Global systematic error CHANTYPE= 'PI ' / Type of channel data DETCHANS= 2400 / Total number of detector channels available QUALITY = 0 / All channels have good quality SPECDELT= 5 / Spectral channel size, ie the binning factor SPECPIX = 0 / The rebinned channel correspondsing to SPECVAL SPECVAL = 2.00000000000000E+00 / Original chan value at center of rebinned chan DSTYP1 = 'CCDNR ' / data subspace descriptor: name DSTYP2 = 'FLAG ' / data subspace descriptor: name DSTYP3 = 'PATTERN ' / data subspace descriptor: name DSTYP4 = 'PI ' / data subspace descriptor: name DSUNI4 = 'CHAN ' / data subspace descriptor: units DSTYP5 = 'TIME ' / data subspace descriptor: name DSUNI5 = 's ' / data subspace descriptor: units DSTYP6 = 'FLAG ' / data subspace descriptor: name DSTYP7 = 'POS(X,Y)' / data subspace descriptor: name DSVAL1 = '1 ' / data subspace descriptor: value DSFORM2 = 'X ' / data subspace descriptor: data type DSVAL2 = 'b000x00xx00x0x000x0xxxxxxxxxxxxx' / data subspace descriptor: value DSVAL3 = ':12 ' / data subspace descriptor: value DSVAL4 = '(200:12000)' / data subspace descriptor: value DSVAL5 = 'TABLE ' / data subspace descriptor: value DSREF5 = ':GTI00003' / data subspace descriptor: reference DSFORM6 = 'X ' / data subspace descriptor: data type DSVAL6 = 'b000x00xx00x0x000x0xxxxxxxxxxxxx' / data subspace descriptor: value DSVAL7 = 'TABLE ' / data subspace descriptor: value DSREF7 = ':REG00107' / data subspace descriptor: reference 2DSVAL1 = '2 ' / data subspace descriptor: value 2DSREF5 = ':GTI00103' / data subspace descriptor: reference 3DSVAL1 = '3 ' / data subspace descriptor: value 3DSREF5 = ':GTI00203' / data subspace descriptor: reference 4DSVAL1 = '4 ' / data subspace descriptor: value 4DSREF5 = ':GTI00303' / data subspace descriptor: reference 5DSVAL1 = '5 ' / data subspace descriptor: value 5DSREF5 = ':GTI00403' / data subspace descriptor: reference 6DSVAL1 = '6 ' / data subspace descriptor: value 6DSREF5 = ':GTI00503' / data subspace descriptor: reference 7DSVAL1 = '7 ' / data subspace descriptor: value 7DSREF5 = ':GTI00603' / data subspace descriptor: reference MTYPE1 = 'POS ' / DM Keyword: Descriptor name MFORM1 = 'X,Y ' EXPOSURE= 3.67524828333855E+04 / Weighted live time of CCDs in the extraction reBACKSCAL= 1954324 / Scaling factor for background ANCRFILE= 'MOS2.arf' / ancillary response RESPFILE= 'MOS2.rmf' / redistribution matrix BACKFILE= 'MOS2background_spectrum.fits' / Background FITS file TLMIN1 = 0 TLMAX1 = 2399 END
|
|
2
|
-
|
|
3
|
-
��[ ��\��]��^_��`��a��b��c ��de��f��g��h
|
|
4
|
-
k ��l��m
|
|
5
|
-
��n��o��p
|
|
6
|
-
��qr��s
|
|
7
|
-
��t��u��v��w
|
|
8
|
-
x��y��z ��{��|��}
|
|
9
|
-
~�����
|
|
10
|
-
��� ����������
|
|
11
|
-
�������
|
|
12
|
-
�������������
|
|
13
|
-
���
|
|
14
|
-
������������
|
|
15
|
-
����������
|
|
16
|
-
���
|
|
17
|
-
����������
|
|
18
|
-
������
|
|
19
|
-
��9��:��;
|
|
20
|
-
��>
|
|
21
|
-
��? ��@��A��B��CD��E
|
|
22
|
-
��G��H��I��J��K
|
|
23
|
-
��M��N��O
|
|
24
|
-
��ST��U
|
|
25
|
-
��[\��]��^��_��` ��a��b
|
|
26
|
-
c��d
|
|
27
|
-
��e ��f��g��h��i
|
|
28
|
-
j
|
|
29
|
-
��k
|
|
30
|
-
��l ��m��n��o��p
|
|
31
|
-
���������������� ��� ������������������������� ������������������� ������ ���
|
|
32
|
-
����������������������������������
|
|
33
|
-
���
|
|
34
|
-
������������������������������������� ��
|
|
35
|
-
������
|
|
36
|
-
������
|
|
37
|
-
������
|
|
38
|
-
������
|
|
39
|
-
������
|
|
40
|
-
������
|
|
41
|
-
|
|
42
|
-
|