arvi 0.1.13__py3-none-any.whl → 0.1.15__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.
arvi/timeseries.py CHANGED
@@ -11,7 +11,7 @@ import numpy as np
11
11
  from astropy import units
12
12
 
13
13
  from .setup_logger import logger
14
- from .config import return_self, check_internet, debug
14
+ from . import config
15
15
  from .translations import translate
16
16
  from .dace_wrapper import do_download_filetype, do_symlink_filetype, get_observations, get_arrays
17
17
  from .simbad_wrapper import simbad
@@ -23,6 +23,9 @@ from .HZ import getHZ_period
23
23
  from .utils import strtobool, there_is_internet, timer
24
24
 
25
25
 
26
+ class ExtraFields:
27
+ pass
28
+
26
29
  @dataclass
27
30
  class RV:
28
31
  """
@@ -71,7 +74,7 @@ class RV:
71
74
  self.__star__ = translate(self.star)
72
75
 
73
76
  if not self._child:
74
- if check_internet and not there_is_internet():
77
+ if config.check_internet and not there_is_internet():
75
78
  raise ConnectionError('There is no internet connection?')
76
79
 
77
80
  # complicated way to query Simbad with self.__star__ or, if that
@@ -103,9 +106,9 @@ class RV:
103
106
  logger.info(f'querying DACE for {self.__star__}...')
104
107
  try:
105
108
  with timer():
109
+ mid = self.simbad.main_id if hasattr(self, 'simbad') else None
106
110
  self.dace_result = get_observations(self.__star__, self.instrument,
107
- main_id=self.simbad.main_id,
108
- verbose=self.verbose)
111
+ main_id=mid, verbose=self.verbose)
109
112
  except ValueError as e:
110
113
  # querying DACE failed, should we raise an error?
111
114
  if self._raise_on_error:
@@ -218,6 +221,7 @@ class RV:
218
221
  self._did_secular_acceleration = False
219
222
  self._did_sigma_clip = False
220
223
  self._did_adjust_means = False
224
+ self._did_correct_berv = False
221
225
  self.__post_init__()
222
226
 
223
227
  def snapshot(self):
@@ -382,6 +386,7 @@ class RV:
382
386
  s.mask = kwargs.get('mask', np.full_like(s.time, True, dtype=bool))
383
387
 
384
388
  s.instruments = [inst]
389
+ s._quantities = np.array([])
385
390
 
386
391
  return s
387
392
 
@@ -443,6 +448,13 @@ class RV:
443
448
 
444
449
  s = cls(star, _child=True, **kwargs)
445
450
 
451
+ def find_column(data, names):
452
+ has_col = np.array([name in data.dtype.fields for name in names])
453
+ if any(has_col):
454
+ col = np.where(has_col)[0][0]
455
+ return data[names[col]]
456
+ return False
457
+
446
458
  for i, (f, instrument) in enumerate(zip(files, instruments)):
447
459
  data = np.loadtxt(f, skiprows=2, usecols=range(3), unpack=True)
448
460
  _s = cls(star, _child=True, **kwargs)
@@ -471,10 +483,11 @@ class RV:
471
483
  else:
472
484
  data = np.array([], dtype=np.dtype([]))
473
485
 
474
- if 'fwhm' in data.dtype.fields:
475
- _s.fwhm = data['fwhm']
476
- if 'sfwhm' in data.dtype.fields:
477
- _s.fwhm_err = data['sfwhm']
486
+ # try to find FWHM and uncertainty
487
+ if (v := find_column(data, ['fwhm'])) is not False: # walrus !!
488
+ _s.fwhm = v
489
+ if (sv := find_column(data, ['sfwhm', 'fwhm_err', 'sig_fwhm'])) is not False:
490
+ _s.fwhm_err = sv
478
491
  else:
479
492
  _s.fwhm_err = 2 * _s.svrad
480
493
  else:
@@ -484,12 +497,11 @@ class RV:
484
497
  _quantities.append('fwhm')
485
498
  _quantities.append('fwhm_err')
486
499
 
487
- if 'rhk' in data.dtype.fields:
488
- _s.rhk = data['rhk']
500
+ if (v := find_column(data, ['rhk'])) is not False:
501
+ _s.rhk = v
489
502
  _s.rhk_err = np.full_like(time, np.nan)
490
- for possible_name in ['srhk', 'rhk_err']:
491
- if possible_name in data.dtype.fields:
492
- _s.rhk_err = data[possible_name]
503
+ if (sv := find_column(data, ['srhk', 'rhk_err', 'sig_rhk'])) is not False:
504
+ _s.rhk_err = sv
493
505
  else:
494
506
  _s.rhk = np.zeros_like(time)
495
507
  _s.rhk_err = np.full_like(time, np.nan)
@@ -516,6 +528,12 @@ class RV:
516
528
  setattr(_s, q, np.full(time.size, True))
517
529
  _quantities.append(q)
518
530
 
531
+ _s.extra_fields = ExtraFields()
532
+ for field in data.dtype.names:
533
+ if field not in _quantities:
534
+ setattr(_s.extra_fields, field, data[field])
535
+ # _quantities.append(field)
536
+
519
537
  #! end hack
520
538
 
521
539
  _s.mask = np.ones_like(time, dtype=bool)
@@ -543,31 +561,75 @@ class RV:
543
561
  logger.error('iCCF is not installed. Please install it with `pip install iCCF`')
544
562
  return
545
563
 
564
+ verbose = kwargs.get('verbose', True)
565
+
546
566
  if isinstance(files, str):
547
567
  files = [files]
548
568
 
549
- I = iCCF.from_file(files)
569
+ CCFs = iCCF.from_file(files)
570
+
571
+ if not isinstance(CCFs, list):
572
+ CCFs = [CCFs]
550
573
 
551
- objects = np.unique([i.HDU[0].header['OBJECT'].replace(' ', '') for i in I])
574
+ objects = np.unique([i.HDU[0].header['OBJECT'].replace(' ', '') for i in CCFs])
552
575
  if objects.size != 1:
553
576
  logger.warning(f'found {objects.size} different stars in the CCF files, '
554
577
  'choosing the first one')
555
578
  star = objects[0]
556
579
 
557
580
  s = cls(star, _child=True)
581
+ instruments = list(np.unique([i.instrument for i in CCFs]))
558
582
 
559
- # time, RVs, uncertainties
560
- s.time = np.array([i.bjd for i in I])
561
- s.vrad = np.array([i.RV*1e3 for i in I])
562
- s.svrad = np.array([i.RVerror*1e3 for i in I])
583
+ for instrument in instruments:
584
+ # time, RVs, uncertainties
585
+ time = np.array([i.bjd for i in CCFs])
586
+ vrad = np.array([i.RV*1e3 for i in CCFs])
587
+ svrad = np.array([i.RVerror*1e3 for i in CCFs])
588
+ _s = RV.from_arrays(star, time, vrad, svrad, inst=instrument)
563
589
 
564
- s.fwhm = np.array([i.FWHM*1e3 for i in I])
565
- s.fwhm_err = np.array([i.FWHMerror*1e3 for i in I])
590
+ _quantities = []
566
591
 
567
- # mask
568
- s.mask = np.full_like(s.time, True, dtype=bool)
592
+ _s.fwhm = np.array([i.FWHM*1e3 for i in CCFs])
593
+ _s.fwhm_err = np.array([i.FWHMerror*1e3 for i in CCFs])
594
+
595
+ _quantities.append('fwhm')
596
+ _quantities.append('fwhm_err')
597
+
598
+ _s.contrast = np.array([i.contrast for i in CCFs])
599
+ _s.contrast_err = np.array([i.contrast_error for i in CCFs])
600
+
601
+ _quantities.append('contrast')
602
+ _quantities.append('contrast_err')
603
+
604
+ _s.texp = np.array([i.HDU[0].header['EXPTIME'] for i in CCFs])
605
+ _quantities.append('texp')
606
+
607
+ _s.date_night = np.array([
608
+ i.HDU[0].header['DATE-OBS'].split('T')[0] for i in CCFs
609
+ ])
610
+ _quantities.append('date_night')
611
+
612
+ _s.mask = np.full_like(_s.time, True, dtype=bool)
569
613
 
570
- s.instruments = list(np.unique([i.instrument for i in I]))
614
+ _s.drs_qc = np.array([i.HDU[0].header['HIERARCH ESO QC SCIRED CHECK'] for i in CCFs], dtype=bool)
615
+ # mask out drs_qc = False
616
+ if not _s.drs_qc.all():
617
+ n = (~ _s.drs_qc).sum()
618
+ if verbose:
619
+ logger.warning(f'masking {n} points where DRS QC failed for {instrument}')
620
+ _s.mask &= _s.drs_qc
621
+ print(_s.mask)
622
+
623
+ _s._quantities = np.array(_quantities)
624
+ setattr(s, instrument, _s)
625
+
626
+ s._child = False
627
+ s.instruments = instruments
628
+ s._build_arrays()
629
+
630
+ if instruments == ['ESPRESSO']:
631
+ from .instrument_specific import divide_ESPRESSO
632
+ divide_ESPRESSO(s)
571
633
 
572
634
  return s
573
635
 
@@ -610,7 +672,6 @@ class RV:
610
672
  logger.info(f'available: {self.instruments}')
611
673
  return
612
674
 
613
-
614
675
  def _build_arrays(self):
615
676
  """ build all concatenated arrays of `self` from each of the `.inst`s """
616
677
  if self._child:
@@ -653,7 +714,6 @@ class RV:
653
714
  )
654
715
  setattr(self, q, arr)
655
716
 
656
-
657
717
  def download_ccf(self, instrument=None, index=None, limit=None,
658
718
  directory=None, symlink=False, **kwargs):
659
719
  """ Download CCFs from DACE
@@ -828,7 +888,7 @@ class RV:
828
888
  if self.verbose:
829
889
  logger.info(f"Removed observations from '{instrument}'")
830
890
 
831
- if return_self:
891
+ if config.return_self:
832
892
  return self
833
893
 
834
894
  def remove_condition(self, condition):
@@ -856,7 +916,7 @@ class RV:
856
916
  index = np.atleast_1d(index)
857
917
  try:
858
918
  instrument_index = self.obs[index]
859
- instrument = np.array(self.instruments)[instrument_index - 1]
919
+ np.array(self.instruments)[instrument_index - 1]
860
920
  except IndexError:
861
921
  logger.errors(f'index {index} is out of bounds for N={self.N}')
862
922
  return
@@ -869,7 +929,7 @@ class RV:
869
929
  # for i, inst in zip(index, instrument):
870
930
  # index_in_instrument = i - (self.obs < instrument_index).sum()
871
931
  # getattr(self, inst).mask[index_in_instrument] = False
872
- if return_self:
932
+ if config.return_self:
873
933
  return self
874
934
 
875
935
  def remove_non_public(self):
@@ -932,7 +992,7 @@ class RV:
932
992
  instruments = self._check_instrument(instrument)
933
993
  rng = np.random.default_rng(seed=seed)
934
994
  for inst in instruments:
935
- s = getattr(self, inst)
995
+ # s = getattr(self, inst)
936
996
  mask_for_this_inst = self.obs == self.instruments.index(inst) + 1
937
997
  # only choose if there are more than n points
938
998
  if self.mask[mask_for_this_inst].sum() > n:
@@ -1037,13 +1097,18 @@ class RV:
1037
1097
  self.vrad = self.vrad - sa * (self.time - epoch) / 365.25
1038
1098
  else:
1039
1099
  for inst in self.instruments:
1100
+ s = getattr(self, inst)
1101
+
1102
+ # if RVs come from a publication, don't remove the secular
1103
+ # acceleration
1104
+ if np.all(s.pub_reference != ''):
1105
+ continue
1106
+
1040
1107
  if 'HIRES' in inst: # never remove it from HIRES...
1041
1108
  continue
1042
1109
  if 'NIRPS' in inst: # never remove it from NIRPS...
1043
1110
  continue
1044
1111
 
1045
- s = getattr(self, inst)
1046
-
1047
1112
  if hasattr(s, '_did_secular_acceleration') and s._did_secular_acceleration:
1048
1113
  continue
1049
1114
 
@@ -1055,7 +1120,7 @@ class RV:
1055
1120
  self._did_secular_acceleration_epoch = epoch
1056
1121
  self._did_secular_acceleration_simbad = force_simbad
1057
1122
 
1058
- if return_self:
1123
+ if config.return_self:
1059
1124
  return self
1060
1125
 
1061
1126
  def _undo_secular_acceleration(self):
@@ -1111,7 +1176,7 @@ class RV:
1111
1176
  # # if insts.size == 1: # of the same instrument?
1112
1177
  # if self.verbose:
1113
1178
  # logger.warning(f'would remove all observations from {insts[0]}, skipping')
1114
- # if return_self:
1179
+ # if config.return_self:
1115
1180
  # return self
1116
1181
  # continue
1117
1182
 
@@ -1123,7 +1188,7 @@ class RV:
1123
1188
  self._did_adjust_means = False
1124
1189
  self.adjust_means()
1125
1190
 
1126
- if return_self:
1191
+ if config.return_self:
1127
1192
  return self
1128
1193
 
1129
1194
  def clip_maxerror(self, maxerror:float):
@@ -1145,7 +1210,7 @@ class RV:
1145
1210
  logger.warning(f'clip_maxerror ({maxerror} {self.units}) removed {n} point' + s)
1146
1211
 
1147
1212
  self._propagate_mask_changes()
1148
- if return_self:
1213
+ if config.return_self:
1149
1214
  return self
1150
1215
 
1151
1216
  def bin(self):
@@ -1309,7 +1374,7 @@ class RV:
1309
1374
 
1310
1375
  self._build_arrays()
1311
1376
  self._did_adjust_means = True
1312
- if return_self:
1377
+ if config.return_self:
1313
1378
  return self
1314
1379
 
1315
1380
  def add_to_vrad(self, values):
@@ -1546,6 +1611,8 @@ class RV:
1546
1611
 
1547
1612
 
1548
1613
  #
1614
+ from .stellar import calc_prot_age
1615
+
1549
1616
  @property
1550
1617
  def HZ(self):
1551
1618
  if not hasattr(self, 'star_mass'):
arvi/translations.py CHANGED
@@ -1,8 +1,10 @@
1
1
  import re
2
2
 
3
3
  STARS = {
4
+ '_51Peg': '51 Peg',
4
5
  'Barnard': 'GJ699',
5
6
  "Barnard's": 'GJ699',
7
+ 'Ross128': 'Ross 128',
6
8
  }
7
9
 
8
10
 
arvi/utils.py CHANGED
@@ -122,6 +122,19 @@ def find_data_file(file):
122
122
 
123
123
  return data_file
124
124
 
125
+
126
+ import importlib.util
127
+ import sys
128
+ def lazy_import(name):
129
+ spec = importlib.util.find_spec(name)
130
+ loader = importlib.util.LazyLoader(spec.loader)
131
+ spec.loader = loader
132
+ module = importlib.util.module_from_spec(spec)
133
+ sys.modules[name] = module
134
+ loader.exec_module(module)
135
+ return module
136
+
137
+
125
138
  def ESPRESSO_ADC_issues():
126
139
  adc_file = find_data_file('obs_affected_ADC_issues.dat')
127
140
  lines = [line.strip() for line in open(adc_file).readlines()]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arvi
3
- Version: 0.1.13
3
+ Version: 0.1.15
4
4
  Summary: The Automated RV Inspector
5
5
  Author-email: João Faria <joao.faria@unige.ch>
6
6
  License: MIT
@@ -13,15 +13,13 @@ License-File: LICENSE
13
13
  Requires-Dist: numpy
14
14
  Requires-Dist: scipy
15
15
  Requires-Dist: matplotlib
16
- Requires-Dist: mplcursors
17
16
  Requires-Dist: astropy
18
17
  Requires-Dist: dace-query
19
18
  Requires-Dist: loguru
20
- Requires-Dist: mpldatacursor
21
19
  Requires-Dist: tqdm
22
20
  Requires-Dist: pySWEETCat
23
21
  Requires-Dist: kepmodel
24
- Requires-Dist: mock ; python_version < "3.3"
22
+ Requires-Dist: mock; python_version < "3.3"
25
23
 
26
24
  <p align="center">
27
25
  <img width = "140" src="https://github.com/j-faria/arvi/blob/main/docs/logo/logo.png?raw=true"/>
@@ -0,0 +1,35 @@
1
+ arvi/HZ.py,sha256=u7rguhlILRBW-LOczlY3dkIB4LM8p8W7Xfg4FnNaYG0,2850
2
+ arvi/__init__.py,sha256=stLL3UtXmR1jpNEoMyVohjvkCatunz1w5ZK0ApmWuYQ,814
3
+ arvi/ariadne_wrapper.py,sha256=jv8Wl35LfHl1UH1EklbvxHcQHqaEDhRGNogSYjFt7Y4,2141
4
+ arvi/berv.py,sha256=5avwcmc2nkYH1KDo-z4eMPsS1ElNvold2DWkziV13gE,17633
5
+ arvi/binning.py,sha256=jbemJ-bM3aqoOsqMo_OhWt_co-JAQ0nhdG_GpTsrRsw,15403
6
+ arvi/config.py,sha256=wyj6FTxN7QOZj8LaHAe_ZdPKVfrNfobNNOHRNLH-S7Q,339
7
+ arvi/dace_wrapper.py,sha256=Ng7uBwULoX5hxF5pF9feZIAYYsCn3do5fYB2B6rBvtc,17022
8
+ arvi/extra_data.py,sha256=WEEaYeLh52Zdv0uyHO72Ys5MWS3naTAP4wJV2BJ1mbk,2551
9
+ arvi/gaia_wrapper.py,sha256=sapurDBceHbj-pj9t9hcPUrg-3NZEoQouo__lXFD6p8,3554
10
+ arvi/headers.py,sha256=uvdJebw1M5YkGjE3vJJwYBOnLikib75uuZE9FXB5JJM,1673
11
+ arvi/instrument_specific.py,sha256=fhkvR5jJzpJH7XbT8Fbzkaz6tGeoFYugkJCIAJgSR7o,4746
12
+ arvi/lbl_wrapper.py,sha256=_ViGVkpakvuBR_xhu9XJRV5EKHpj5Go6jBZGJZMIS2Y,11850
13
+ arvi/nasaexo_wrapper.py,sha256=mWt7eHgSZe4MBKCmUvMPTyUPGuiwGTqKugNBvmjOg9s,7306
14
+ arvi/plots.py,sha256=92z0A46cnVdGv840oZZ7PP_fssZECYe5Zyl5OZl1p3k,27996
15
+ arvi/programs.py,sha256=C0Fbldjf-QEZYYJp5wBKP3h7zraD0O2mJC7Su967STg,4607
16
+ arvi/reports.py,sha256=8HiwWdaOh_P2V4-F6PV4TjasZLeZ8kC5dUYB1tQam1o,3368
17
+ arvi/setup_logger.py,sha256=pBzaRTn0hntozjbaRVx0JIbWGuENkvYUApa6uB-FsRo,279
18
+ arvi/simbad_wrapper.py,sha256=d8svoEUF6in2M3WrqSXfJ_drwnXD1NGPUnxP94qUOI0,5579
19
+ arvi/spectra.py,sha256=pTAWSW4vk96DWRQ-6l5mNJHUhiAyaPR-QDjZdOT6Ak0,7489
20
+ arvi/stats.py,sha256=ilzzGL9ew-SyVa9eEdrYCpD3DliOAwhoNUg9LIlHjzU,2583
21
+ arvi/stellar.py,sha256=MdO1_-ZXHnMHbkG-a5LvrnYeULy6MCAnWMKPvR4NZxQ,2954
22
+ arvi/timeseries.py,sha256=sdm9l_LHItZHDAVI6r_wsQwkrfbuMX46q3Wqs0y-KGA,60787
23
+ arvi/translations.py,sha256=SUIrJHt3JZdL_GQh3OJyg2Gm3X5ut86w5zW8hZpxHe0,498
24
+ arvi/utils.py,sha256=2TEj6t_6gW6dPQTPn5AFyg_F5SdI7P6IUGkecOkzoV4,4387
25
+ arvi/data/info.svg,sha256=0IMI6W-eFoTD8acnury79WJJakpBwLa4qKS4JWpsXiI,489
26
+ arvi/data/obs_affected_ADC_issues.dat,sha256=tn93uOL0eCTYhireqp1wG-_c3CbxPA7C-Rf-pejVY8M,10853
27
+ arvi/data/obs_affected_blue_cryostat_issues.dat,sha256=z4AK17xfz8tGTDv1FjRvQFnio4XA6PNNfDXuicewHk4,1771
28
+ arvi/data/extra/HD86226_PFS1.rdb,sha256=vfAozbrKHM_j8dYkCBJsuHyD01KEM1asghe2KInwVao,3475
29
+ arvi/data/extra/HD86226_PFS2.rdb,sha256=F2P7dB6gVyzCglUjNheB0hIHVClC5RmARrGwbrY1cfo,4114
30
+ arvi/data/extra/metadata.json,sha256=C69hIw6CohyES6BI9vDWjxwSz7N4VOYX0PCgjXtYFmU,178
31
+ arvi-0.1.15.dist-info/LICENSE,sha256=6JfQgl7SpM55t0EHMFNMnNh-AdkpGW25MwMiTnhdWQg,1068
32
+ arvi-0.1.15.dist-info/METADATA,sha256=nA_TpNY5eTcx8DZ3Jzmno-Rt0kKqOlq2v0o5AmojFZc,1250
33
+ arvi-0.1.15.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
34
+ arvi-0.1.15.dist-info/top_level.txt,sha256=4EeiKDVLD45ztuflTGfQ3TU8GVjJg5Y95xS5XjI-utU,5
35
+ arvi-0.1.15.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.1.0)
2
+ Generator: setuptools (75.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,32 +0,0 @@
1
- arvi/HZ.py,sha256=u7rguhlILRBW-LOczlY3dkIB4LM8p8W7Xfg4FnNaYG0,2850
2
- arvi/__init__.py,sha256=cECMjLbPiolmft2lsnNoszU6_1a-dKOVY8cb2D1CBfg,366
3
- arvi/ariadne_wrapper.py,sha256=jv8Wl35LfHl1UH1EklbvxHcQHqaEDhRGNogSYjFt7Y4,2141
4
- arvi/binning.py,sha256=jJ_resqSvfI-2BT0cnGPFckTIei_k2Mk95oZyE5b5zQ,15250
5
- arvi/config.py,sha256=wyj6FTxN7QOZj8LaHAe_ZdPKVfrNfobNNOHRNLH-S7Q,339
6
- arvi/dace_wrapper.py,sha256=VjC1YjZ7URkHkgRO7rUKjkxBtdMMjoEqcqTtZQ8M7NY,17034
7
- arvi/extra_data.py,sha256=WEEaYeLh52Zdv0uyHO72Ys5MWS3naTAP4wJV2BJ1mbk,2551
8
- arvi/gaia_wrapper.py,sha256=YxqqlWkLAKBY7AGHfDpNbkOLYWK0lt0L5GZenn0FfxM,3555
9
- arvi/instrument_specific.py,sha256=fhkvR5jJzpJH7XbT8Fbzkaz6tGeoFYugkJCIAJgSR7o,4746
10
- arvi/lbl_wrapper.py,sha256=_ViGVkpakvuBR_xhu9XJRV5EKHpj5Go6jBZGJZMIS2Y,11850
11
- arvi/nasaexo_wrapper.py,sha256=mWt7eHgSZe4MBKCmUvMPTyUPGuiwGTqKugNBvmjOg9s,7306
12
- arvi/plots.py,sha256=2W1IwUeMdNq5--l6nQXn3EFft0UQgEyPyudRxTCRM40,25566
13
- arvi/programs.py,sha256=WpFE2cXYG-4ax2xmih0fFhvQbcVhnOEofVcwjePNmKQ,4505
14
- arvi/reports.py,sha256=yrdajC-zz5_kH1Ucc6cU70DK-5dpG0Xyeru-EITKpNo,3355
15
- arvi/setup_logger.py,sha256=pBzaRTn0hntozjbaRVx0JIbWGuENkvYUApa6uB-FsRo,279
16
- arvi/simbad_wrapper.py,sha256=fwO0NbMvxAW3RyC58FPkLjXqLs9OkRyK0sYcb0ZVBQA,5571
17
- arvi/spectra.py,sha256=pTAWSW4vk96DWRQ-6l5mNJHUhiAyaPR-QDjZdOT6Ak0,7489
18
- arvi/stats.py,sha256=MQiyLvdiAFxIC29uajTy8kuxD-b2Y6mraL4AfWkRJkM,2576
19
- arvi/timeseries.py,sha256=PCQntiNK8MnlgKeyGOTd4BrQXm8NSjZRtGfLa4hfaE0,58257
20
- arvi/translations.py,sha256=AljjMsHRqzfcirdeavHsyVJFLvwKrM1wDLMv2RApG58,446
21
- arvi/utils.py,sha256=nuIOuUdysMesWF9ute4v-kbeo6DylWjWW-SJhCsHn9I,4078
22
- arvi/data/info.svg,sha256=0IMI6W-eFoTD8acnury79WJJakpBwLa4qKS4JWpsXiI,489
23
- arvi/data/obs_affected_ADC_issues.dat,sha256=tn93uOL0eCTYhireqp1wG-_c3CbxPA7C-Rf-pejVY8M,10853
24
- arvi/data/obs_affected_blue_cryostat_issues.dat,sha256=z4AK17xfz8tGTDv1FjRvQFnio4XA6PNNfDXuicewHk4,1771
25
- arvi/data/extra/HD86226_PFS1.rdb,sha256=vfAozbrKHM_j8dYkCBJsuHyD01KEM1asghe2KInwVao,3475
26
- arvi/data/extra/HD86226_PFS2.rdb,sha256=F2P7dB6gVyzCglUjNheB0hIHVClC5RmARrGwbrY1cfo,4114
27
- arvi/data/extra/metadata.json,sha256=C69hIw6CohyES6BI9vDWjxwSz7N4VOYX0PCgjXtYFmU,178
28
- arvi-0.1.13.dist-info/LICENSE,sha256=6JfQgl7SpM55t0EHMFNMnNh-AdkpGW25MwMiTnhdWQg,1068
29
- arvi-0.1.13.dist-info/METADATA,sha256=9wDBsoyGzFt-Eo186zVKLVJT_VdUlr_2C2uzrqQ5Fxs,1306
30
- arvi-0.1.13.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
31
- arvi-0.1.13.dist-info/top_level.txt,sha256=4EeiKDVLD45ztuflTGfQ3TU8GVjJg5Y95xS5XjI-utU,5
32
- arvi-0.1.13.dist-info/RECORD,,
File without changes