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.
@@ -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
- import importlib.resources
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
- ref = importlib.resources.files("jaxspec") / "tables/xsect_tbabs_wilm.fits"
66
- with importlib.resources.as_file(ref) as path:
67
- table = Table.read(path)
68
- energy = jnp.asarray(np.array(table["ENERGY"]), dtype=np.float32)
69
- sigma = jnp.asarray(np.array(table["SIGMA"]), dtype=np.float32)
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
- ref = importlib.resources.files("jaxspec") / "tables/xsect_phabs_aspl.fits"
89
- with importlib.resources.as_file(ref) as path:
90
- table = Table.read(path)
91
- energy = jnp.asarray(np.array(table["ENERGY"]), dtype=np.float32)
92
- sigma = jnp.asarray(np.array(table["SIGMA"]), dtype=np.float32)
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
- ref = importlib.resources.files("jaxspec") / "tables/xsect_wabs_angr.fits"
112
- with importlib.resources.as_file(ref) as path:
113
- table = Table.read(path)
114
- energy = jnp.asarray(np.array(table["ENERGY"]), dtype=np.float32)
115
- sigma = jnp.asarray(np.array(table["SIGMA"]), dtype=np.float32)
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(-tau / (jnp.sqrt(2 * jnp.pi) * sigma) * jnp.exp(-0.5 * ((energy - center) / sigma) ** 2))
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
- ref = importlib.resources.files("jaxspec") / "tables/xsect_tbabs_wilm.fits"
214
- with importlib.resources.as_file(ref) as path:
215
- table = Table.read(path)
216
- energy = jnp.asarray(np.array(table["ENERGY"]), dtype=np.float32)
217
- sigma = jnp.asarray(np.array(table["SIGMA"]), dtype=np.float32)
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
- from mendeleev.fetch import fetch_table
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(importlib.resources.files("jaxspec") / "tables/abundances.dat").to_pandas()
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.6
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.19.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: jax (>=0.4.23,<0.5.0)
20
- Requires-Dist: jaxlib (>=0.4.23,<0.5.0)
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.0,<0.16.0)
24
- Requires-Dist: mkdocstrings (>=0.24.0,<0.25.0)
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 (>=1.26.1,<2.0.0)
27
- Requires-Dist: numpyro (>=0.13.2,<0.15.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: pyzmq (<26)
30
- Requires-Dist: scipy (<1.13)
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=jZmmUBFfdHIkTy4JI6j2X9hHKa6fdvxccBHQWJIIgRs,20968
5
- jaxspec/data/__init__.py,sha256=5MmiOFyDBg_lBMN0piUY0ULN0gD_mW33rurVOYXebdA,497
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=tnXCXim6eBjZbvNbx2ViRJ3wzQhNacXRcCrLZlPTdY0,7378
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=3aNhsfIU6U4uTCcdtpx8ykneBgkDnvS4ocUWVMvYG-w,8221
28
- jaxspec/fit.py,sha256=32M1W2ieVrv55AtRPvj_LpaNuwstrQRa03oWTRsdaAQ,13547
29
- jaxspec/model/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
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=nDOGpWyLgfL88D6B6OuAkPLpHuGRKdZa5DszvDF02C8,16038
32
- jaxspec/model/_additive/apec_loaders.py,sha256=0vXoqujjRaJmDc4S_SKfautxy6WdpfhfOHiAtBftoik,3610
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=YbBZe0iBfFQ3FtwHHM32vfCn5ndi99mtwOI-I--WcH4,16744
35
- jaxspec/model/background.py,sha256=zej99rVfcRb75T85o3u4qeYQIgnFwGtxK8niZJ8S5mM,6872
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=sAKDkiplhdY7TsaPk7gwkR18dcXmU2nytgBCiHNBPMk,7537
38
- jaxspec/tables/abundances.dat,sha256=angmMx8N4wivRjHu1cO2Wszamc0aqHZvVBGd0oW1eZI,3193
39
- jaxspec/tables/xsect_phabs_aspl.fits,sha256=Pq_7oqYuOmEeCk4f9KVzQtfVdvAj17u2MnENx1uaUBk,86400
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-0.0.6.dist-info/LICENSE.md,sha256=2q5XoWzddts5IqzIcgYYMOL21puU3MfO8gvT3Ype1eQ,1073
46
- jaxspec-0.0.6.dist-info/METADATA,sha256=aieG8nelwQ5Vsw7e3HA-qGO9x9VHP9kuHdqeCPXKd5M,3264
47
- jaxspec-0.0.6.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
48
- jaxspec-0.0.6.dist-info/RECORD,,
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,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.7.0
2
+ Generator: poetry-core 1.9.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -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
- ��I J��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��w x��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��Q R ��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��x y��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
- ��q r��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
-