arvi 0.1.20__py3-none-any.whl → 0.1.21__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.
Potentially problematic release.
This version of arvi might be problematic. Click here for more details.
- arvi/config.py +28 -4
- arvi/simbad_wrapper.py +1 -1
- arvi/timeseries.py +92 -6
- {arvi-0.1.20.dist-info → arvi-0.1.21.dist-info}/METADATA +1 -1
- {arvi-0.1.20.dist-info → arvi-0.1.21.dist-info}/RECORD +8 -8
- {arvi-0.1.20.dist-info → arvi-0.1.21.dist-info}/LICENSE +0 -0
- {arvi-0.1.20.dist-info → arvi-0.1.21.dist-info}/WHEEL +0 -0
- {arvi-0.1.20.dist-info → arvi-0.1.21.dist-info}/top_level.txt +0 -0
arvi/config.py
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
import configparser
|
|
3
|
+
from pprint import pprint
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def get_config_path():
|
|
7
|
+
return Path.home() / '.config' / 'arvi.ini'
|
|
8
|
+
|
|
9
|
+
def get_config():
|
|
10
|
+
config = configparser.ConfigParser()
|
|
11
|
+
if (path := get_config_path()).exists():
|
|
12
|
+
config.read(path)
|
|
13
|
+
return config
|
|
14
|
+
|
|
15
|
+
def save_config(config):
|
|
16
|
+
config.write(get_config_path().open('w'))
|
|
17
|
+
|
|
1
18
|
|
|
2
19
|
def instancer(cls):
|
|
3
20
|
return cls()
|
|
@@ -14,23 +31,30 @@ class config:
|
|
|
14
31
|
'check_internet': False,
|
|
15
32
|
# make all DACE requests without using a .dacerc file
|
|
16
33
|
'request_as_public': False,
|
|
17
|
-
# username for DACE servers
|
|
18
|
-
'username': 'desousaj',
|
|
19
34
|
# debug
|
|
20
35
|
'debug': False,
|
|
21
36
|
}
|
|
22
|
-
# all, for now
|
|
23
37
|
__setters = list(__conf.keys())
|
|
24
38
|
|
|
39
|
+
__user_config = get_config()
|
|
40
|
+
|
|
25
41
|
def __getattr__(self, name):
|
|
26
42
|
if name in ('__custom_documentations__', ):
|
|
27
43
|
# return {'return_self': 'help!'}
|
|
28
44
|
return {}
|
|
29
45
|
|
|
46
|
+
if self.__user_config.has_option('config', name):
|
|
47
|
+
self.__conf[name] = self.__user_config.get('config', name)
|
|
48
|
+
|
|
30
49
|
return self.__conf[name]
|
|
31
50
|
|
|
32
51
|
def __setattr__(self, name, value):
|
|
33
52
|
if name in config.__setters:
|
|
34
53
|
self.__conf[name] = value
|
|
35
54
|
else:
|
|
36
|
-
|
|
55
|
+
self.__user_config.set('config', name, value)
|
|
56
|
+
save_config(self.__user_config)
|
|
57
|
+
# raise NameError(f"unknown configuration name '{name}'")
|
|
58
|
+
|
|
59
|
+
def show(self):
|
|
60
|
+
pprint(self.__conf | dict(self.__user_config['config']))
|
arvi/simbad_wrapper.py
CHANGED
|
@@ -45,7 +45,7 @@ def run_query(query):
|
|
|
45
45
|
url = 'http://simbad.u-strasbg.fr/simbad/sim-tap/sync'
|
|
46
46
|
data = dict(query=query, request='doQuery', lang='ADQL', format='text/plain', phase='run')
|
|
47
47
|
try:
|
|
48
|
-
response = requests.post(url, data=data, timeout=
|
|
48
|
+
response = requests.post(url, data=data, timeout=2)
|
|
49
49
|
except requests.ReadTimeout as err:
|
|
50
50
|
raise IndexError(err)
|
|
51
51
|
except requests.ConnectionError as err:
|
arvi/timeseries.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import os
|
|
2
2
|
from dataclasses import dataclass, field
|
|
3
3
|
from typing import Union
|
|
4
|
-
from functools import partial, partialmethod
|
|
4
|
+
from functools import lru_cache, partial, partialmethod
|
|
5
5
|
from glob import glob
|
|
6
6
|
import warnings
|
|
7
7
|
from copy import deepcopy
|
|
@@ -713,6 +713,86 @@ class RV:
|
|
|
713
713
|
if instruments == ['ESPRESSO']:
|
|
714
714
|
from .instrument_specific import divide_ESPRESSO
|
|
715
715
|
divide_ESPRESSO(s)
|
|
716
|
+
elif instruments == ['HARPS']:
|
|
717
|
+
from .instrument_specific import divide_HARPS
|
|
718
|
+
divide_HARPS(s)
|
|
719
|
+
|
|
720
|
+
if kwargs.get('do_adjust_means', False):
|
|
721
|
+
s.adjust_means()
|
|
722
|
+
|
|
723
|
+
return s
|
|
724
|
+
|
|
725
|
+
@classmethod
|
|
726
|
+
@lru_cache(maxsize=10)
|
|
727
|
+
def from_KOBE_file(cls, star, **kwargs):
|
|
728
|
+
assert 'KOBE' in star, f'{star} is not a KOBE star?'
|
|
729
|
+
import requests
|
|
730
|
+
from requests.auth import HTTPBasicAuth
|
|
731
|
+
from io import BytesIO
|
|
732
|
+
import tarfile
|
|
733
|
+
from astropy.io import fits
|
|
734
|
+
from .config import config
|
|
735
|
+
|
|
736
|
+
try:
|
|
737
|
+
config.kobe_password
|
|
738
|
+
except KeyError:
|
|
739
|
+
logger.error('please set arvi.config.kobe_password')
|
|
740
|
+
return
|
|
741
|
+
|
|
742
|
+
tar = None
|
|
743
|
+
fits_file = f'{star}_RVs.fits'
|
|
744
|
+
resp = requests.get(f'https://kobe.caha.es/internal/fitsfiles/{fits_file}',
|
|
745
|
+
auth=HTTPBasicAuth('kobeteam', config.kobe_password))
|
|
746
|
+
|
|
747
|
+
if resp.status_code != 200:
|
|
748
|
+
# something went wrong, try to extract the file by downloading the
|
|
749
|
+
# full tar.gz archive
|
|
750
|
+
|
|
751
|
+
logger.warning(f'could not find "{fits_file}" on server, trying to download full archive')
|
|
752
|
+
resp = requests.get('https://kobe.caha.es/internal/fitsfiles.tar.gz',
|
|
753
|
+
auth=HTTPBasicAuth('kobeteam', config.kobe_password))
|
|
754
|
+
|
|
755
|
+
if resp.status_code != 200:
|
|
756
|
+
logger.error(f'KOBE file not found for {star}')
|
|
757
|
+
return
|
|
758
|
+
|
|
759
|
+
tar = tarfile.open(fileobj=BytesIO(resp.content))
|
|
760
|
+
|
|
761
|
+
if fits_file not in tar.getnames():
|
|
762
|
+
logger.error(f'KOBE file not found for {star}')
|
|
763
|
+
return
|
|
764
|
+
|
|
765
|
+
hdul = fits.open(tar.extractfile(fits_file))
|
|
766
|
+
|
|
767
|
+
else:
|
|
768
|
+
# found the file on the server, read it directly
|
|
769
|
+
hdul = fits.open(BytesIO(resp.content))
|
|
770
|
+
|
|
771
|
+
s = cls(star, _child=True)
|
|
772
|
+
|
|
773
|
+
s.time = hdul[1].data['BJD']
|
|
774
|
+
|
|
775
|
+
s.vrad = hdul[1].data['RVc']
|
|
776
|
+
s.svrad = hdul[1].data['eRVc']
|
|
777
|
+
s.vrad_preNZP = hdul[1].data['RVd']
|
|
778
|
+
s.vrad_preNZP_err = hdul[1].data['eRVd']
|
|
779
|
+
|
|
780
|
+
s.drift = hdul[1].data['drift']
|
|
781
|
+
s.drift_err = hdul[1].data['e_drift']
|
|
782
|
+
|
|
783
|
+
s.nzp = hdul[1].data['NZP']
|
|
784
|
+
s.nzp_err = hdul[1].data['eNZP']
|
|
785
|
+
|
|
786
|
+
s.berv = hdul[1].data['BERV']
|
|
787
|
+
|
|
788
|
+
s.mask = np.full_like(s.time, True, dtype=bool)
|
|
789
|
+
s.instruments = ['CARMENES']
|
|
790
|
+
|
|
791
|
+
s._kobe_result = hdul[1].data
|
|
792
|
+
|
|
793
|
+
if tar is not None:
|
|
794
|
+
tar.close()
|
|
795
|
+
hdul.close()
|
|
716
796
|
|
|
717
797
|
return s
|
|
718
798
|
|
|
@@ -1699,15 +1779,19 @@ class RV:
|
|
|
1699
1779
|
d = np.c_[
|
|
1700
1780
|
_s.time, _s.vrad, _s.svrad,
|
|
1701
1781
|
_s.fwhm, _s.fwhm_err,
|
|
1702
|
-
_s.rhk, _s.rhk_err,
|
|
1703
1782
|
_s.bispan, _s.bispan_err,
|
|
1783
|
+
_s.contrast, _s.contrast_err,
|
|
1784
|
+
_s.rhk, _s.rhk_err,
|
|
1785
|
+
_s.berv,
|
|
1704
1786
|
]
|
|
1705
1787
|
else:
|
|
1706
1788
|
d = np.c_[
|
|
1707
1789
|
_s.mtime, _s.mvrad, _s.msvrad,
|
|
1708
1790
|
_s.fwhm[_s.mask], _s.fwhm_err[_s.mask],
|
|
1709
|
-
_s.rhk[_s.mask], _s.rhk_err[_s.mask],
|
|
1710
1791
|
_s.bispan[_s.mask], _s.bispan_err[_s.mask],
|
|
1792
|
+
_s.contrast[_s.mask], _s.contrast_err[_s.mask],
|
|
1793
|
+
_s.rhk[_s.mask], _s.rhk_err[_s.mask],
|
|
1794
|
+
_s.berv[_s.mask],
|
|
1711
1795
|
]
|
|
1712
1796
|
if not save_nans:
|
|
1713
1797
|
if np.isnan(d).any():
|
|
@@ -1718,9 +1802,11 @@ class RV:
|
|
|
1718
1802
|
logger.warning(f'masking {nan_mask.sum()} observations with NaN in indicators')
|
|
1719
1803
|
|
|
1720
1804
|
header = '\t'.join(['bjd', 'vrad', 'svrad',
|
|
1721
|
-
'fwhm', '
|
|
1722
|
-
'
|
|
1723
|
-
'
|
|
1805
|
+
'fwhm', 'sig_fwhm',
|
|
1806
|
+
'bispan', 'sig_bispan',
|
|
1807
|
+
'contrast', 'sig_contrast',
|
|
1808
|
+
'rhk', 'sig_rhk',
|
|
1809
|
+
'berv',
|
|
1724
1810
|
])
|
|
1725
1811
|
header += '\n'
|
|
1726
1812
|
header += '\t'.join(['-' * len(c) for c in header.strip().split('\t')])
|
|
@@ -3,7 +3,7 @@ arvi/__init__.py,sha256=r3oaMVwQCjNTd6odg-ga9IRncn54i7tawZrIrvSRQOo,1012
|
|
|
3
3
|
arvi/ariadne_wrapper.py,sha256=YvilopJa9T4NwPcj3Nah_U8smSeSAU5-HYZMb_GJ-BQ,2232
|
|
4
4
|
arvi/berv.py,sha256=eKnpuPC1w45UrUEyFRbs9F9j3bXz3kxYzNXbnRgvFQM,17596
|
|
5
5
|
arvi/binning.py,sha256=jbemJ-bM3aqoOsqMo_OhWt_co-JAQ0nhdG_GpTsrRsw,15403
|
|
6
|
-
arvi/config.py,sha256=
|
|
6
|
+
arvi/config.py,sha256=7ZtkNj5Fgxf8JcYX_IS0k-ae1z1op5EFUKUvWdmimL8,1680
|
|
7
7
|
arvi/dace_wrapper.py,sha256=ml0xC_KR-oXwEo6ysODzfpx-eP7VNbxURZSns31WbK4,18196
|
|
8
8
|
arvi/extra_data.py,sha256=WEEaYeLh52Zdv0uyHO72Ys5MWS3naTAP4wJV2BJ1mbk,2551
|
|
9
9
|
arvi/gaia_wrapper.py,sha256=icm3LJjG9pjP47_bM30NFyocUQO3X3SHS5yQ-Dwcr5w,4653
|
|
@@ -16,11 +16,11 @@ arvi/plots.py,sha256=WUm-sqN0aZTNXvE1kYpvmHTW9QPWqSCpKhNjwaqxjEk,29628
|
|
|
16
16
|
arvi/programs.py,sha256=C0Fbldjf-QEZYYJp5wBKP3h7zraD0O2mJC7Su967STg,4607
|
|
17
17
|
arvi/reports.py,sha256=ayPdZ4HZO9iCDdnADQ18gQPJh79o-1UYG7TYkvm9Lrc,4051
|
|
18
18
|
arvi/setup_logger.py,sha256=pBzaRTn0hntozjbaRVx0JIbWGuENkvYUApa6uB-FsRo,279
|
|
19
|
-
arvi/simbad_wrapper.py,sha256=
|
|
19
|
+
arvi/simbad_wrapper.py,sha256=iAAwEMcr1Hgu6lnDctmaCC1TLPCB8yAfHG0wxh9K9C8,5791
|
|
20
20
|
arvi/spectra.py,sha256=pTAWSW4vk96DWRQ-6l5mNJHUhiAyaPR-QDjZdOT6Ak0,7489
|
|
21
21
|
arvi/stats.py,sha256=ilzzGL9ew-SyVa9eEdrYCpD3DliOAwhoNUg9LIlHjzU,2583
|
|
22
22
|
arvi/stellar.py,sha256=veuL_y9kJvvApU_jqYQqP3EkcRnQffTc8Us6iT5UrFI,3790
|
|
23
|
-
arvi/timeseries.py,sha256=
|
|
23
|
+
arvi/timeseries.py,sha256=_gX9YdF82NfB1B78Uiws82VKomVQkqsdInrkT413T9E,74210
|
|
24
24
|
arvi/translations.py,sha256=FBF_2OrpMQBG4GtV4_UOspiaxetiGCY7TQFcwZMMVuQ,838
|
|
25
25
|
arvi/utils.py,sha256=ihQcYvk_ix52CW8fVP16CKTVEamGU5gPNRneVcgDrWc,6534
|
|
26
26
|
arvi/data/info.svg,sha256=0IMI6W-eFoTD8acnury79WJJakpBwLa4qKS4JWpsXiI,489
|
|
@@ -29,8 +29,8 @@ arvi/data/obs_affected_blue_cryostat_issues.dat,sha256=z4AK17xfz8tGTDv1FjRvQFnio
|
|
|
29
29
|
arvi/data/extra/HD86226_PFS1.rdb,sha256=vfAozbrKHM_j8dYkCBJsuHyD01KEM1asghe2KInwVao,3475
|
|
30
30
|
arvi/data/extra/HD86226_PFS2.rdb,sha256=F2P7dB6gVyzCglUjNheB0hIHVClC5RmARrGwbrY1cfo,4114
|
|
31
31
|
arvi/data/extra/metadata.json,sha256=C69hIw6CohyES6BI9vDWjxwSz7N4VOYX0PCgjXtYFmU,178
|
|
32
|
-
arvi-0.1.
|
|
33
|
-
arvi-0.1.
|
|
34
|
-
arvi-0.1.
|
|
35
|
-
arvi-0.1.
|
|
36
|
-
arvi-0.1.
|
|
32
|
+
arvi-0.1.21.dist-info/LICENSE,sha256=6JfQgl7SpM55t0EHMFNMnNh-AdkpGW25MwMiTnhdWQg,1068
|
|
33
|
+
arvi-0.1.21.dist-info/METADATA,sha256=h6zZvM2VfnMuIf5yVYYMntjrOKIv_ON0vFmjEvm310c,1852
|
|
34
|
+
arvi-0.1.21.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
35
|
+
arvi-0.1.21.dist-info/top_level.txt,sha256=4EeiKDVLD45ztuflTGfQ3TU8GVjJg5Y95xS5XjI-utU,5
|
|
36
|
+
arvi-0.1.21.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|