From 28b7b2d894e7c5b47ee56fb95f48b254f70b8d52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Thu, 13 Mar 2025 17:36:25 +0100 Subject: [PATCH 01/18] add caching mechanism for simbad coordinates + and cache HD111980 for tests --- .../.cache/astroquery/HD_111980.pickle | Bin 0 -> 4250 bytes spectractor/extractor/targets.py | 82 +++++++++++------- 2 files changed, 52 insertions(+), 30 deletions(-) create mode 100644 spectractor/extractor/.cache/astroquery/HD_111980.pickle diff --git a/spectractor/extractor/.cache/astroquery/HD_111980.pickle b/spectractor/extractor/.cache/astroquery/HD_111980.pickle new file mode 100644 index 0000000000000000000000000000000000000000..146ccc0298c5a3655c915ded4b3bffa17d39ad22 GIT binary patch literal 4250 zcmbtXPi!1l8TWc^$Bs+VnwT~XN=A)J*GjVl*MNyq?8tzXx?QCx&DXGFC4w0S|L0&~m)eEABs#K}~i3RjtGcMU~)Igv0?(Bjv7`cFK<;v@>&ovIUtk?RF4;c+!y@7Vo!DMnY;I}7T& zyeX%?FE7iA_?*qRl8D)jh_yINlE@D55X&1<+;8{Jo6k}_RwSjKdVb;sh9<6hP83Tq zbZ%jJr7z~N-REs@dI{MsZ?M!)V!0~CK|A8@h{rrgSmK3&)@-QGVlKtwMI!U$)woSO z@*L(%@!(4KyqsrwQ;Je7X+j+7Q7nY<(=7Rh*J$tvqCK3yDO2&;Ja^j*8ll$cUQ}^d z1mryyK$V5;`8HJ)^1}w`RXmoqpj-$4mn0X%Y2ayCDz#dTr%K}s*y(9q#Eg!L!H7vw zcDW`4r4FjdAbo>xk7mgL=WST6CqT% z?L`rHQ^%|O+*V@183YH<^|!lxl#S(xxl)W^Rp9U+T$9Th)RAt$frie|lU&?q#}r0M zZ=23AF>d=|u-4ytl8JqGBaB)s0TVpiZs^#y6yG-dPg^WlOMMnu2 z;=u=|2!#DFTz>wA=NvC`lx4ux30?SZ@ZGm%O6SD1;Zbbim%jMKS57HA8>#PGQP@o< zXi?q9=?QUYS>f*&#}G1c)b-+o1rC>tj<3oZOX(1lqoY)zDYCC2w5Uqe+BMDX=y~eI zo)h0CHZ=fk@}w9B{t4o=6afS9uV`jG71bI{+%0rPIpsr54=Y;t7Y#v!vHKK`+xQCJ|mXiSUX}1cW$} z7UZWbRdp;?SX4xJbJPp0m2)Z~X-Ov{beq31ua%=3;e*My!F7loTlf61D_UpV&y1kg zGeHM>1Xg9eHKk4)t!Yw>#K`8r-L3Q_y=j!5G`!x-cv*&im)42b;+EFA3hrDfU0EtU z^(p>1q-A*R2KYzx*8f9mvh%R=PA@eJ-9FrI*{W}h;5Ta>dn$FZ8x46k7w=Yg_-Af< z<~v(I`OQc0Pv73Je|X{bUwnGwH5E`a*Q2h{t+bvwaRj9psKSxvLAygc@(%|5Kbq1> z7sLa)XtpE3{hVGeOS&k^f4=fdT{Mq@LC--2tsx&!bLZ>N-1_?)pX3#ux%JZY{>@c0g3hCg#zN80Lo+|CIS%BYng7Q_Mvn4jUx8Y)TpAe2 z&_N|Y|1Z0&V}v$G@lnfdj_D^OcOM9>io09v#)p|D{SZ3);zKX0UG0&bVh`rT4t8Mc zP=~Xwwar64!IL`#k0}bP(utJldrrO&=x@7eO{1N>W8%>}^sYFlXBFSx;C|?MNypUO z_nJqb)s9Tbm)?TPV6y#KF53%7TT|-q(>afOL98JdGBNBa~dqEpgqpuW`LE6%{ zyNFj?xHow$ijYc}mNAZp0WN>3qXuwstZ2AF$@6g^G`E1Ur!h-=Ns6iRrd%4hDi=z1 z#NM*%OpvbyDP5Be6avS=#;m-qTX$utEJ|l2bk-eAFG~Z7tY2Rk-T3v!3cWuyFV#d2 z?97c|kBYXlJL@E{j`pY$Y#XawvpLfRgwEV7BPHQ zA>75YS;tleXtRkI;G>PavSILPwy{aocw5#}{0lf4W8)5fqqvyvbWtJ8^3tn6e*5b5 zZ#CpQSc(IP`~IaihC`tGu(^|naVPYB?x=eLEuW!rdcVS2zD~~MB&42vY@eh7wZ_Da`01~rfxBvhE literal 0 HcmV?d00001 diff --git a/spectractor/extractor/targets.py b/spectractor/extractor/targets.py index 9c4360f25..6bfc26a12 100644 --- a/spectractor/extractor/targets.py +++ b/spectractor/extractor/targets.py @@ -8,6 +8,8 @@ import matplotlib.pyplot as plt from scipy.interpolate import interp1d import numpy as np +import os +import pickle from spectractor import parameters from spectractor.config import set_logger @@ -242,6 +244,15 @@ def __init__(self, label, verbose=False): self.simbad_table = None self.load() + def _get_cache_dir(self): + cache = os.path.join(os.path.dirname(__file__), ".cache/astroquery") + os.makedirs(cache, exist_ok=True) + return cache + + def _get_cache_file(self, tag): + filename = tag.replace("*", "").replace(" ", "_").replace(".", "_") + return filename + def load(self): """Load the coordinates of the target. @@ -265,47 +276,58 @@ def load(self): # ``Simbad...`` methods secretly makes an instance, which stays around, # has a connection go stale, and then raises an exception seemingly # at some random time later - simbadQuerier = SimbadClass() - patchSimbadURL(simbadQuerier) - - if _USE_NEW_SIMBAD: - simbadQuerier.add_votable_fields('U', 'B', 'V', 'R', 'I', 'J', 'sp_type', - 'parallax', 'propermotions', 'rvz_redshift') - ra_key = "ra" - dec_key = "dec" - redshift_key = "rvz_redshift" - else: - simbadQuerier.add_votable_fields( - 'flux(U)', 'flux(B)', 'flux(V)', 'flux(R)', 'flux(I)', 'flux(J)', 'sptype', - 'parallax', 'pm', 'z_value' - ) - ra_key = "RA" - dec_key = "DEC" - redshift_key = "Z_VALUE" if not getCalspec.is_calspec(self.label) and getCalspec.is_calspec(self.label.replace(".", " ")): self.label = self.label.replace(".", " ") astroquery_label = self.label if getCalspec.is_calspec(self.label): calspec = getCalspec.Calspec(self.label) astroquery_label = calspec.Astroquery_Name - self.simbad_table = simbadQuerier.query_object(astroquery_label) - if self.simbad_table is not None: - if self.verbose or True: - self.my_logger.info(f'\n\tSimbad:\n{self.simbad_table}') + cache_location = self._get_cache_dir() + cache_file = self._get_cache_file(astroquery_label) + if f"{cache_file}.pickle" in os.listdir(cache_location): + with open(os.path.join(cache_location, f"{cache_file}.pickle"), "rb") as f: + self.radec_position, self.redshift = pickle.load(f) + + else: + simbadQuerier = SimbadClass() + patchSimbadURL(simbadQuerier) + if _USE_NEW_SIMBAD: - self.radec_position = SkyCoord(self.simbad_table[ra_key][0], self.simbad_table[dec_key][0], unit="deg") + simbadQuerier.add_votable_fields('U', 'B', 'V', 'R', 'I', 'J', 'sp_type', + 'parallax', 'propermotions', 'rvz_redshift') + ra_key = "ra" + dec_key = "dec" + redshift_key = "rvz_redshift" else: - self.radec_position = SkyCoord( - self.simbad_table[ra_key][0] + ' ' + self.simbad_table[dec_key][0], unit=(u.hourangle, u.deg) + simbadQuerier.add_votable_fields( + 'flux(U)', 'flux(B)', 'flux(V)', 'flux(R)', 'flux(I)', 'flux(J)', 'sptype', + 'parallax', 'pm', 'z_value' ) - else: - raise RuntimeError(f"Target {self.label} not found in Simbad") + ra_key = "RA" + dec_key = "DEC" + redshift_key = "Z_VALUE" + + self.simbad_table = simbadQuerier.query_object(astroquery_label) + + if self.simbad_table is not None: + if self.verbose or True: + self.my_logger.info(f'\n\tSimbad:\n{self.simbad_table}') + if _USE_NEW_SIMBAD: + self.radec_position = SkyCoord(self.simbad_table[ra_key][0], self.simbad_table[dec_key][0], unit="deg") + else: + self.radec_position = SkyCoord( + self.simbad_table[ra_key][0] + ' ' + self.simbad_table[dec_key][0], unit=(u.hourangle, u.deg) + ) + else: + raise RuntimeError(f"Target {self.label} not found in Simbad") + if not np.ma.is_masked(self.simbad_table[redshift_key]): + self.redshift = float(self.simbad_table[redshift_key]) + else: + self.redshift = 0 + with open(os.path.join(cache_location, f"{cache_file}.pickle"), "wb") as f: + pickle.dump((self.radec_position, self.redshift), f) self.get_radec_position_after_pm(date_obs="J2000") - if not np.ma.is_masked(self.simbad_table[redshift_key]): - self.redshift = float(self.simbad_table[redshift_key]) - else: - self.redshift = 0 self.load_spectra() def load_spectra(self): From 27e36d19813f8da4c03f93956bf992379ddb07b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Thu, 13 Mar 2025 17:43:18 +0100 Subject: [PATCH 02/18] add simbad_table in pickle --- .../.cache/astroquery/HD_111980.pickle | Bin 4250 -> 13108 bytes spectractor/extractor/targets.py | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spectractor/extractor/.cache/astroquery/HD_111980.pickle b/spectractor/extractor/.cache/astroquery/HD_111980.pickle index 146ccc0298c5a3655c915ded4b3bffa17d39ad22..d859789f0b530ff13331220d426ca031f0ddc5c8 100644 GIT binary patch literal 13108 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 Date: Fri, 14 Mar 2025 13:56:02 +0100 Subject: [PATCH 03/18] new functions for cache dir --- spectractor/extractor/targets.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/spectractor/extractor/targets.py b/spectractor/extractor/targets.py index ae382770e..f9266f37e 100644 --- a/spectractor/extractor/targets.py +++ b/spectractor/extractor/targets.py @@ -25,6 +25,19 @@ else: _USE_NEW_SIMBAD = True +def _get_cache_dir(): + cache = os.path.join(os.path.dirname(__file__), ".cache/astroquery") + os.makedirs(cache, exist_ok=True) + return cache + +def _get_cache_file(tag): + filename = tag.replace("*", "").replace(" ", "_").replace(".", "_") + return filename + +def _clean_cache_dir(): + cache = os.path.join(os.path.dirname(__file__), ".cache/astroquery") + os.rmdir(cache) + def load_target(label, verbose=False): """Load the target properties according to the type set by parameters.OBS_OBJECT_TYPE. @@ -244,15 +257,6 @@ def __init__(self, label, verbose=False): self.simbad_table = None self.load() - def _get_cache_dir(self): - cache = os.path.join(os.path.dirname(__file__), ".cache/astroquery") - os.makedirs(cache, exist_ok=True) - return cache - - def _get_cache_file(self, tag): - filename = tag.replace("*", "").replace(" ", "_").replace(".", "_") - return filename - def load(self): """Load the coordinates of the target. From d4db0663f902a68d5000e2f4366f2ed02c322520 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Fri, 14 Mar 2025 13:56:40 +0100 Subject: [PATCH 04/18] new functions for cache dir --- spectractor/extractor/targets.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/spectractor/extractor/targets.py b/spectractor/extractor/targets.py index f9266f37e..4268d43e3 100644 --- a/spectractor/extractor/targets.py +++ b/spectractor/extractor/targets.py @@ -25,15 +25,18 @@ else: _USE_NEW_SIMBAD = True + def _get_cache_dir(): cache = os.path.join(os.path.dirname(__file__), ".cache/astroquery") os.makedirs(cache, exist_ok=True) return cache + def _get_cache_file(tag): filename = tag.replace("*", "").replace(" ", "_").replace(".", "_") return filename + def _clean_cache_dir(): cache = os.path.join(os.path.dirname(__file__), ".cache/astroquery") os.rmdir(cache) @@ -287,8 +290,8 @@ def load(self): calspec = getCalspec.Calspec(self.label) astroquery_label = calspec.Astroquery_Name - cache_location = self._get_cache_dir() - cache_file = self._get_cache_file(astroquery_label) + cache_location = _get_cache_dir() + cache_file = _get_cache_file(astroquery_label) if f"{cache_file}.pickle" in os.listdir(cache_location): with open(os.path.join(cache_location, f"{cache_file}.pickle"), "rb") as f: self.radec_position, self.redshift, self.simbad_table = pickle.load(f) From 3e3c1cebbfa0d49817a8242d1b740f37c5e35d7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Fri, 14 Mar 2025 15:01:57 +0100 Subject: [PATCH 05/18] adapt proper motion keys with versino of cached file --- spectractor/extractor/targets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spectractor/extractor/targets.py b/spectractor/extractor/targets.py index 4268d43e3..fef7664d8 100644 --- a/spectractor/extractor/targets.py +++ b/spectractor/extractor/targets.py @@ -434,7 +434,7 @@ def load_spectra(self): def get_radec_position_after_pm(self, date_obs): if self.simbad_table is not None: - if _USE_NEW_SIMBAD: + if _USE_NEW_SIMBAD or "pmra" in self.simbad_table[0].keys(): pmra_key = 'pmra' pmdec_key = 'pmdec' plx_value_key = 'plx_value' From 7aa90f7f24389eb07868097293d91d6683760a4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Fri, 14 Mar 2025 15:27:22 +0100 Subject: [PATCH 06/18] debug prints --- spectractor/extractor/targets.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spectractor/extractor/targets.py b/spectractor/extractor/targets.py index fef7664d8..fbbf39fd3 100644 --- a/spectractor/extractor/targets.py +++ b/spectractor/extractor/targets.py @@ -293,6 +293,7 @@ def load(self): cache_location = _get_cache_dir() cache_file = _get_cache_file(astroquery_label) if f"{cache_file}.pickle" in os.listdir(cache_location): + self.my_logger.warning(f"Load {self.label} coordinates from cached file {cache_file}.pickle") with open(os.path.join(cache_location, f"{cache_file}.pickle"), "rb") as f: self.radec_position, self.redshift, self.simbad_table = pickle.load(f) @@ -316,6 +317,7 @@ def load(self): redshift_key = "Z_VALUE" self.simbad_table = simbadQuerier.query_object(astroquery_label) + self.my_logger.warning(f"Download {self.label} coordinates from Simbad:\n{self.simbad_table}") if self.simbad_table is not None: if self.verbose or True: From ab09162c2742bed907db6e97b7288e17ccb8529f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Fri, 14 Mar 2025 15:38:05 +0100 Subject: [PATCH 07/18] debug prints and table proper motion keys --- spectractor/extractor/targets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spectractor/extractor/targets.py b/spectractor/extractor/targets.py index fbbf39fd3..cb40dc7b1 100644 --- a/spectractor/extractor/targets.py +++ b/spectractor/extractor/targets.py @@ -436,7 +436,7 @@ def load_spectra(self): def get_radec_position_after_pm(self, date_obs): if self.simbad_table is not None: - if _USE_NEW_SIMBAD or "pmra" in self.simbad_table[0].keys(): + if "pmra" in self.simbad_table[0].keys(): pmra_key = 'pmra' pmdec_key = 'pmdec' plx_value_key = 'plx_value' From dd83274e866bc6123890fc87caaab7dab3bdb6f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Fri, 14 Mar 2025 15:42:19 +0100 Subject: [PATCH 08/18] debug prints --- spectractor/extractor/targets.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spectractor/extractor/targets.py b/spectractor/extractor/targets.py index cb40dc7b1..b575f5b2b 100644 --- a/spectractor/extractor/targets.py +++ b/spectractor/extractor/targets.py @@ -293,7 +293,7 @@ def load(self): cache_location = _get_cache_dir() cache_file = _get_cache_file(astroquery_label) if f"{cache_file}.pickle" in os.listdir(cache_location): - self.my_logger.warning(f"Load {self.label} coordinates from cached file {cache_file}.pickle") + self.my_logger.debug(f"\n\tLoad {self.label} coordinates from cached file {cache_file}.pickle") with open(os.path.join(cache_location, f"{cache_file}.pickle"), "rb") as f: self.radec_position, self.redshift, self.simbad_table = pickle.load(f) @@ -317,7 +317,7 @@ def load(self): redshift_key = "Z_VALUE" self.simbad_table = simbadQuerier.query_object(astroquery_label) - self.my_logger.warning(f"Download {self.label} coordinates from Simbad:\n{self.simbad_table}") + self.my_logger.debug(f"\n\tDownload {self.label} coordinates from Simbad:\n{self.simbad_table}") if self.simbad_table is not None: if self.verbose or True: From 09c5ad44001c0881c52a2d28dee79efa8f274b1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Sat, 15 Mar 2025 10:43:29 +0100 Subject: [PATCH 09/18] exclude cache folder and pickle files --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6056deabe..120749479 100644 --- a/.gitignore +++ b/.gitignore @@ -28,4 +28,5 @@ config.log tests/.tests/ *__pycache__/ _build.* - +*.pickle +*.cache/* From a2bc058165176fc8eb6e8b00b0d84e61b3b361dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Mon, 17 Mar 2025 18:04:05 +0100 Subject: [PATCH 10/18] use astropy cache functions and put HD111980 coordinates in tests/data/cache --- spectractor/extractor/targets.py | 7 +++++-- .../astropy/astroquery/Simbad}/HD_111980.pickle | Bin 2 files changed, 5 insertions(+), 2 deletions(-) rename {spectractor/extractor/.cache/astroquery => tests/data/cache/astropy/astroquery/Simbad}/HD_111980.pickle (100%) diff --git a/spectractor/extractor/targets.py b/spectractor/extractor/targets.py index b575f5b2b..4515396cd 100644 --- a/spectractor/extractor/targets.py +++ b/spectractor/extractor/targets.py @@ -4,6 +4,7 @@ import astropy.units as u from astropy.time import Time from astroquery.simbad import SimbadClass +import astropy.config import matplotlib.pyplot as plt from scipy.interpolate import interp1d @@ -27,7 +28,8 @@ def _get_cache_dir(): - cache = os.path.join(os.path.dirname(__file__), ".cache/astroquery") + cache = os.path.join(os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))), + "tests", "data", "cache", "astropy", "astroquery", "Simbad") os.makedirs(cache, exist_ok=True) return cache @@ -38,7 +40,8 @@ def _get_cache_file(tag): def _clean_cache_dir(): - cache = os.path.join(os.path.dirname(__file__), ".cache/astroquery") + cache = os.path.join(os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))), + "tests", "data", "cache", "astropy", "astroquery", "Simbad") os.rmdir(cache) diff --git a/spectractor/extractor/.cache/astroquery/HD_111980.pickle b/tests/data/cache/astropy/astroquery/Simbad/HD_111980.pickle similarity index 100% rename from spectractor/extractor/.cache/astroquery/HD_111980.pickle rename to tests/data/cache/astropy/astroquery/Simbad/HD_111980.pickle From 50eb4474336b1733b744c79203b5e6ed1001b20f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Mon, 17 Mar 2025 18:35:09 +0100 Subject: [PATCH 11/18] use ecsv format --- spectractor/extractor/targets.py | 59 +++-- .../astropy/astroquery/Simbad/HD_111980.ecsv | 242 ++++++++++++++++++ .../astroquery/Simbad/HD_111980.pickle | Bin 13108 -> 0 bytes 3 files changed, 271 insertions(+), 30 deletions(-) create mode 100644 tests/data/cache/astropy/astroquery/Simbad/HD_111980.ecsv delete mode 100644 tests/data/cache/astropy/astroquery/Simbad/HD_111980.pickle diff --git a/spectractor/extractor/targets.py b/spectractor/extractor/targets.py index 4515396cd..d7c239019 100644 --- a/spectractor/extractor/targets.py +++ b/spectractor/extractor/targets.py @@ -5,6 +5,7 @@ from astropy.time import Time from astroquery.simbad import SimbadClass import astropy.config +from astropy.io import ascii import matplotlib.pyplot as plt from scipy.interpolate import interp1d @@ -295,11 +296,9 @@ def load(self): cache_location = _get_cache_dir() cache_file = _get_cache_file(astroquery_label) - if f"{cache_file}.pickle" in os.listdir(cache_location): - self.my_logger.debug(f"\n\tLoad {self.label} coordinates from cached file {cache_file}.pickle") - with open(os.path.join(cache_location, f"{cache_file}.pickle"), "rb") as f: - self.radec_position, self.redshift, self.simbad_table = pickle.load(f) - + if f"{cache_file}.ecsv" in os.listdir(cache_location): + self.my_logger.debug(f"\n\tLoad {self.label} coordinates from cached file {cache_file}.ecsv") + self.simbad_table = ascii.read(os.path.join(cache_location, f"{cache_file}.ecsv")) else: simbadQuerier = SimbadClass() patchSimbadURL(simbadQuerier) @@ -307,38 +306,38 @@ def load(self): if _USE_NEW_SIMBAD: simbadQuerier.add_votable_fields('U', 'B', 'V', 'R', 'I', 'J', 'sp_type', 'parallax', 'propermotions', 'rvz_redshift') - ra_key = "ra" - dec_key = "dec" - redshift_key = "rvz_redshift" else: simbadQuerier.add_votable_fields( 'flux(U)', 'flux(B)', 'flux(V)', 'flux(R)', 'flux(I)', 'flux(J)', 'sptype', 'parallax', 'pm', 'z_value' ) - ra_key = "RA" - dec_key = "DEC" - redshift_key = "Z_VALUE" - + self.my_logger.debug(f"\n\tDownload {self.label} coordinates from Simbad:\n{self.simbad_table}...") self.simbad_table = simbadQuerier.query_object(astroquery_label) - self.my_logger.debug(f"\n\tDownload {self.label} coordinates from Simbad:\n{self.simbad_table}") - - if self.simbad_table is not None: - if self.verbose or True: - self.my_logger.info(f'\n\tSimbad:\n{self.simbad_table}') - if _USE_NEW_SIMBAD: - self.radec_position = SkyCoord(self.simbad_table[ra_key][0], self.simbad_table[dec_key][0], unit="deg") - else: - self.radec_position = SkyCoord( - self.simbad_table[ra_key][0] + ' ' + self.simbad_table[dec_key][0], unit=(u.hourangle, u.deg) - ) - else: - raise RuntimeError(f"Target {self.label} not found in Simbad") - if not np.ma.is_masked(self.simbad_table[redshift_key]): - self.redshift = float(self.simbad_table[redshift_key]) + self.simbad_table.write(os.path.join(cache_location,f"{cache_file}.ecsv"), overwrite=True) + + if _USE_NEW_SIMBAD: + ra_key = "ra" + dec_key = "dec" + redshift_key = "rvz_redshift" + else: + ra_key = "RA" + dec_key = "DEC" + redshift_key = "Z_VALUE" + if self.simbad_table is not None: + if self.verbose or True: + self.my_logger.info(f'\n\tSimbad:\n{self.simbad_table}') + if _USE_NEW_SIMBAD: + self.radec_position = SkyCoord(self.simbad_table[ra_key][0], self.simbad_table[dec_key][0], unit="deg") else: - self.redshift = 0 - with open(os.path.join(cache_location, f"{cache_file}.pickle"), "wb") as f: - pickle.dump((self.radec_position, self.redshift, self.simbad_table), f) + self.radec_position = SkyCoord( + self.simbad_table[ra_key][0] + ' ' + self.simbad_table[dec_key][0], unit=(u.hourangle, u.deg) + ) + else: + raise RuntimeError(f"Target {self.label} not found in Simbad") + if not np.ma.is_masked(self.simbad_table[redshift_key]): + self.redshift = float(self.simbad_table[redshift_key]) + else: + self.redshift = 0 self.get_radec_position_after_pm(date_obs="J2000") self.load_spectra() diff --git a/tests/data/cache/astropy/astroquery/Simbad/HD_111980.ecsv b/tests/data/cache/astropy/astroquery/Simbad/HD_111980.ecsv new file mode 100644 index 000000000..69237ddf1 --- /dev/null +++ b/tests/data/cache/astropy/astroquery/Simbad/HD_111980.ecsv @@ -0,0 +1,242 @@ +# %ECSV 1.0 +# --- +# datatype: +# - name: MAIN_ID +# datatype: string +# description: Main identifier for an object +# meta: !!omap +# - {ucd: meta.id;meta.main} +# - {width: 22} +# - links: +# - {href: 'http://simbad.u-strasbg.fr/simbad/sim-id?Ident=${MAIN_ID}&NbIdent=1', value: '${MAIN_ID}'} +# - {_votable_string_dtype: char} +# subtype: json +# - name: RA +# unit: '"h:m:s"' +# datatype: string +# description: Right ascension +# meta: !!omap +# - {ucd: pos.eq.ra;meta.main} +# - {width: 13} +# - {precision: '8'} +# - {_votable_string_dtype: char} +# - name: DEC +# unit: '"d:m:s"' +# datatype: string +# description: Declination +# meta: !!omap +# - {ucd: pos.eq.dec;meta.main} +# - {width: 13} +# - {precision: '8'} +# - {_votable_string_dtype: char} +# - name: RA_PREC +# datatype: int16 +# description: Right ascension precision +# meta: !!omap +# - {width: 2} +# - name: DEC_PREC +# datatype: int16 +# description: Declination precision +# meta: !!omap +# - {width: 2} +# - name: COO_ERR_MAJA +# unit: mas +# datatype: float32 +# format: '{:6.3f}' +# description: Coordinate error major axis +# meta: !!omap +# - {ucd: phys.angSize.smajAxis;pos.errorEllipse;pos.eq} +# - {width: 6} +# - {precision: '3'} +# - name: COO_ERR_MINA +# unit: mas +# datatype: float32 +# format: '{:6.3f}' +# description: Coordinate error minor axis +# meta: !!omap +# - {ucd: phys.angSize.sminAxis;pos.errorEllipse;pos.eq} +# - {width: 6} +# - {precision: '3'} +# - name: COO_ERR_ANGLE +# unit: deg +# datatype: int16 +# description: Coordinate error angle +# meta: !!omap +# - {ucd: pos.posAng;pos.errorEllipse;pos.eq} +# - {width: 3} +# - name: COO_QUAL +# datatype: string +# description: Coordinate quality +# meta: !!omap +# - {ucd: meta.code.qual;pos.eq} +# - {width: 1} +# - {_votable_string_dtype: char} +# - name: COO_WAVELENGTH +# datatype: string +# description: Wavelength class for the origin of the coordinates (R,I,V,U,X,G) +# meta: !!omap +# - {ucd: instr.bandpass;pos.eq} +# - {width: 1} +# - {_votable_string_dtype: char} +# - name: COO_BIBCODE +# datatype: string +# description: Coordinate reference +# meta: !!omap +# - {ucd: meta.bib.bibcode;pos.eq} +# - {width: 19} +# - {_votable_string_dtype: char} +# subtype: json +# - name: FLUX_U +# unit: mag +# datatype: float32 +# description: Magnitude U +# meta: !!omap +# - {ucd: phot.mag;em.opt.U} +# - name: FLUX_B +# unit: mag +# datatype: float32 +# description: Magnitude B +# meta: !!omap +# - {ucd: phot.mag;em.opt.B} +# - name: FLUX_V +# unit: mag +# datatype: float32 +# description: Magnitude V +# meta: !!omap +# - {ucd: phot.mag;em.opt.V} +# - name: FLUX_R +# unit: mag +# datatype: float32 +# description: Magnitude R +# meta: !!omap +# - {ucd: phot.mag;em.opt.R} +# - name: FLUX_I +# unit: mag +# datatype: float32 +# description: Magnitude I +# meta: !!omap +# - {ucd: phot.mag;em.opt.I} +# - name: FLUX_J +# unit: mag +# datatype: float32 +# description: Magnitude J +# meta: !!omap +# - {ucd: phot.mag;em.IR.J} +# - name: SP_TYPE +# datatype: string +# description: MK spectral type +# meta: !!omap +# - {ucd: src.spType} +# - {width: 6} +# - {_votable_string_dtype: char} +# subtype: json +# - name: SP_QUAL +# datatype: string +# description: Spectral type quality +# meta: !!omap +# - {ucd: meta.code.qual;src.spType} +# - {width: 1} +# - {_votable_string_dtype: char} +# - name: SP_BIBCODE +# datatype: string +# description: spectral type reference +# meta: !!omap +# - {ucd: meta.bib.bibcode;src.spType} +# - {width: 19} +# - {_votable_string_dtype: char} +# subtype: json +# - name: PLX_VALUE +# unit: mas +# datatype: float64 +# format: '{:9.3f}' +# description: Parallax +# meta: !!omap +# - {ucd: pos.parallax.trig} +# - {width: 9} +# - {precision: '3'} +# - name: PLX_PREC +# datatype: int16 +# description: Parallax precision +# meta: !!omap +# - {width: 1} +# - name: PLX_ERROR +# unit: mas +# datatype: float32 +# description: Parallax error +# meta: !!omap +# - {ucd: stat.error;pos.parallax.trig} +# - name: PLX_QUAL +# datatype: string +# description: Parallax quality +# meta: !!omap +# - {ucd: meta.code.qual;pos.parallax.trig} +# - {width: 1} +# - {_votable_string_dtype: char} +# - name: PLX_BIBCODE +# datatype: string +# description: Parallax reference +# meta: !!omap +# - {ucd: meta.bib.bibcode;pos.parallax.trig} +# - {width: 19} +# - {_votable_string_dtype: char} +# subtype: json +# - name: PMRA +# unit: mas / yr +# datatype: float64 +# format: '{:9.3f}' +# description: Proper motion in RA +# meta: !!omap +# - {ucd: pos.pm;pos.eq.ra} +# - {width: 9} +# - {precision: '3'} +# - name: PMDEC +# unit: mas / yr +# datatype: float64 +# format: '{:9.3f}' +# description: Proper motion in DEC +# meta: !!omap +# - {ucd: pos.pm;pos.eq.dec} +# - {width: 9} +# - {precision: '3'} +# - name: PM_ERR_MAJA +# unit: mas / yr +# datatype: float32 +# format: '{:5.3f}' +# description: Proper motion error major axis +# meta: !!omap +# - {ucd: phys.angSize.smajAxis;pos.errorEllipse;pos.pm} +# - {width: 5} +# - {precision: '3'} +# - name: PM_ERR_MINA +# unit: mas / yr +# datatype: float32 +# format: '{:5.3f}' +# description: Proper motion error minor axis +# meta: !!omap +# - {ucd: phys.angSize.sminAxis;pos.errorEllipse;pos.pm} +# - {width: 5} +# - {precision: '3'} +# - name: PM_ERR_ANGLE +# unit: deg +# datatype: int16 +# description: Proper motion error angle +# meta: !!omap +# - {ucd: pos.posAng;pos.errorEllipse;pos.pm} +# - {width: 3} +# - name: Z_VALUE +# datatype: float64 +# format: '{:.7f}' +# description: Redshift +# meta: !!omap +# - {ucd: src.redshift} +# - {precision: '7'} +# - name: SCRIPT_NUMBER_ID +# datatype: int32 +# meta: !!omap +# - {ucd: meta.number} +# - {width: 2} +# - {precision: '1'} +# meta: {ID: SimbadScript, description: 'Simbad script executed on 2025.03.13CET16:08:13', name: default} +# schema: astropy-2.0 +MAIN_ID RA DEC RA_PREC DEC_PREC COO_ERR_MAJA COO_ERR_MINA COO_ERR_ANGLE COO_QUAL COO_WAVELENGTH COO_BIBCODE FLUX_U FLUX_B FLUX_V FLUX_R FLUX_I FLUX_J SP_TYPE SP_QUAL SP_BIBCODE PLX_VALUE PLX_PREC PLX_ERROR PLX_QUAL PLX_BIBCODE PMRA PMDEC PM_ERR_MAJA PM_ERR_MINA PM_ERR_ANGLE Z_VALUE SCRIPT_NUMBER_ID +"""HD 111980""" "12 53 15.0529" "-18 31 20.013" 14 14 0.0225 0.0183 90 A O """2020yCat.1350....0G""" 8.8 8.91 8.38 "" "" 7.176 """F7V""" C """1988MSS...C04....0H""" 12.9277 4 0.0261 A """2020yCat.1350....0G""" 299.359 -795.843 0.032 0.026 90 0.000517 1 diff --git a/tests/data/cache/astropy/astroquery/Simbad/HD_111980.pickle b/tests/data/cache/astropy/astroquery/Simbad/HD_111980.pickle deleted file mode 100644 index d859789f0b530ff13331220d426ca031f0ddc5c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13108 zcmcgze{398e$V>1W8?fZAr}bK(7W4+WMVrGI0kAvn_!INjkAuE+=(!q-5vYQWPdR; zo7l-gxvKn#^dx%CpgRtss#Wigil(Indi|r<0y>qdy;Dz={<=!#igc=|t}3ls`o}@( z=lkBw?#}MmUc2Ffc0BXu&HMiT`5sTUJ-`3(Ch?E&(;e3?mX_5_v1n(_g6Repb zs?Q$pn!C81p!eQ&Z~s@l$GteeRWp`cTh|tBJ#Xl)YikAEINoy}->Ox1X2y0r-Zqs;%~iqd)~ai3mra*xSz|#j=Um6T;PEY*ZIo=oF$%8kn#F>^ ztSzlOhQ|*?fecSqof0!_Go$A`zH2VHPlcDf?(vx8vF&_MWk#atoYdXp=E8zu1GI_n zuX|;_BfPq178Z&Eqh?Ua=r%ZS>II;Z2<{tDAy$Lg}fp9h|wF-;yZi zOGU?Yjqtn&fX+L$g`%C;T`YooEnCcJ zn#a$`^+y%GuvpINwgRPg%C?b*e3jyY;xa?ANyn75;a)b3f*8peg+-Ss#R5K4bUU+I zFJu)60aLSP+40J0f>$bDHlW%Uyy=+EJ2VISW_XihUwiMt-%P!9ly8GdX9NR{td`L; z%<$OZa+*yD>a)fosK?bd49{Q*@N!mXC-CRA&L$rxeaL~QP=w7_AAj`fBN@}q5M|(N zrkI87THboaE3+v+B-eo*Z*hSx*fQ9-rzTVDvrilN!XdQwjc4bY+ z)e9NJ)7f1Yyrf=cJAoYA%i?T5)1HB9F_o#wXT)lIXW6o2W}G#2Q!t>!OpmvN|1R`2 zW`hS0ziG02}=B8em{LJ zv1a|e!+|vyvh_&!vzH~({c^3BgS8YnzYc5H%o~cpS;guGAswHNJ^U&D8Gsh>tDeEX z#%}z7=1S|_P132DW~A8LOL>jrMhE@|p<_j)4*J><7IXBdS|gvaq2aSj-~8kEAfGC| zzwqw-xBlSM=UyU(Vq=xrN%l@T9SE@lt{7Z}Amxn^hY;l7N#_5(be(LTZxc?lWP{z0 zi0k7XJI7n!fAUq~H1EU$6#+$rhOk17&8BDG`H$cJIE?V{JI@atcyXcu;U5JE^VYoX zz;BXo|FJ|6jve~^`MjCSnG{&oz=1_Gb3LOsDy)QI{EiYB#zz59V+?5kE0%3U6h>Z{ zu>GmPHqJg~pBNO3fO8kkQQ-8$tQj8>D{cz0X8gZzlW<6uRRoe&Yi!e|fIIL6i2tow zeOUsvy6{rKwYtTfgxiS;N<3Q+_R_lnB~=xgc;dDvXjDj~7VMS~*p_9`+O}-yKDE}) z3gG@4z}+-Mi7(p(x@qHkoBeD3Tp4KlS2aBLCVPu-5xGiEyJX~w8Pi>sKKHxU9$-~t zDPh+e;Tfd0-x;#@$kbN4`d(r4s0$pj_~uMMg3J{$jF?L-*(IP`2SJ>r(&a8(D9Ts^ z^fZjiic79Y^mdufMEN!(Gn=zoV>+{)-(H`!M1PKqEUSsEr8BGfc}r_n3o;j(oad0` zR}+y{7NSI?vLKd0rY{m8u}qoLNv4+!Z$EF>vN}>E_65H{YopZHMjEztk|+J;$0J=J3igYWA}T&Swt{#ncn1j>1&CuOW(dU$Np^pxJMZ|cqc1@ z6+BvPcozG%Fr-{ZCxhPl#C>g||--hkbrp zX$%DnwJbbDbB@8mvdD=^t@#7FO(#D$gx=@(biYRi)*6A0&{>oEBZwQvx zEXn(z_tm1-fk1$IyR1ogPo|j585ydxQK$F#b$Hg4>eJ;{^LW+fk39v|;CA|Qva_hXv&SXu z{m?+(IWsYp)TWMm{1&P4dEHmrJ}s|@bv@2^h9QBnavsLgJEJ=njch_bUiYluCvcmO zA)l;_k>YbGzAF`fI`))jEz-1>Qz3Q#N}alok-EdVbU$=l85|ruIx^ttiP$Dzcm}P| zS;$K3l;#zdorEzzST!l@B0hpmO}F8{E@4e=V^9~MmX2FD#7ln1j1GM?v(%?pFb!Kl z^-I-iF>OJXp7k=O2?n;7Gl;X>koM}TnY~Z^&Es1L;If%@nKykaN=>tHkt$hXsh9Lz z83pF%pTFw!9(89MLw@h^1asZe=%GW7nNRCkwR{kMMt9PS>VoZ$(Vv56c5I3;d!V|+ z7m{f?H0YIe-mhIkElPa?EMTINm(GQ^Wf;P8`2t7Oho>lyIxY2H!%JnJojC~W(?xFbc0 z6k!zX-U{sAB-T2F-vq5GMEM?8L+!M6zCe1sSTL^`*>DAgUIFji$42v`&OYCzeT0uH zE{#oD^juCS`IZz_n2PRXjDkZwvx*8>Kfn~e1DzbzcuckR8Xd6S!K>+8csIIj8B=`5 zVTN{U_i1{S;zIAKG%_2HL~6M1n{i?rAs5jJ5v+dY-)W> zZ!w1&^}iuBxAZl^$1j4oYl)VzV^URr4v)zs-(9Cy(H!lg>JIDz7HL2=eYh!1!J zI1Wo3`)kC}1b)4VQ>U~OsgyP|@$kC5P0PY?6U=V=$>~43e{Hp$66|jK$D)AEw5V?+m=kH-lrWb zq2H(?`I>|4R2@v5z^wa(&C#bPP-d4LLk>LVN!9ESX2)ZPt8u2P15?Rnb-Gc0i$*P?-ih<0W_A9YRQ>PlcgleSCw2B{TNSFaT zB9x=!!ISgnwfQEM!uNsS|6VV==2}^DLx}rZkW%#p{Pv)BqYl5LE|d$RCROw15>+cZ zQij;Ud(a;bC(7X-^oaF7*5s5E*>u9Q300}iH z$&%K;05RFIrKa+tUkZFI(5)hQbOPF5EEIv3o4r3}Fk{t7Cht9^13)!}jXVj*VcuHxgUGULD)B z_1LD?hwY|KZ~PLvfHA*`5nc5**s~gmEI_Z0Y^omFsSO}&9VXzb)aVV^jzwY%*sEhZ zRgdk%>%;ahf8)pF8}OB+k&L@^EI zAidc-Gp#r!^s8+6E74vK=<$=A&5oVHX`VCGc@DDoh*BA}-SosQ(NrpP1%!kWH&;@I z?VcL4lofKf-F3NJ1GQ24+h$O^!4w7E$&s14IpijZfnkxNJoFg|_gTq;T_MRTD`qKs z8nToIHbiAA-LogpYiB1;&Nr*le&7A;pZ@9-Km8&0CDu$>{13+Y>q~e1UjK2Kn7;(# zDuvroS+aJ`>QLaEzEm+sUwyZUGQ@wWqSLwPYjL-1{e&v9E+S|h9Us34Yg>O2_PbI* z+XJ*$?2^PPAzE-7U6NDlj3h7r)!%HSJpN9=lyODf0n=;iMMcUBdl)ruMQCp~I-u(N>&f`l*=WO%4BfsS8Di;fBpJ+m|GZBzR> zZ*hC;18ei4AweG5Fb|H%u(&tOgPYmRE#-YqwMPWf3a8fH%>A!V-rY#Fn)z%vbyJ$Z zt8%K>*QuXP?>7xLSzMIfyQ5TNW1ZXzfz?iK=a)B<7;3M*-SfeR<6~=^N@QYagSsTn zmyD|S(l$m{%E&s*T&UTKml;bhWw$uw;J>6TKpwldx)-r^E|Hp=J)xh0c5Q&WS??a~az#;Rtmb{qGTImigyX#7PxLyra!-en`$% Date: Mon, 17 Mar 2025 18:41:21 +0100 Subject: [PATCH 12/18] debug radec labels --- spectractor/extractor/targets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spectractor/extractor/targets.py b/spectractor/extractor/targets.py index d7c239019..f7be9cacd 100644 --- a/spectractor/extractor/targets.py +++ b/spectractor/extractor/targets.py @@ -315,7 +315,7 @@ def load(self): self.simbad_table = simbadQuerier.query_object(astroquery_label) self.simbad_table.write(os.path.join(cache_location,f"{cache_file}.ecsv"), overwrite=True) - if _USE_NEW_SIMBAD: + if "ra" in self.simbad_table.keys(): ra_key = "ra" dec_key = "dec" redshift_key = "rvz_redshift" From 468e27b8e49b6fc263a8b0227a9c492e7c625350 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Mon, 17 Mar 2025 18:42:32 +0100 Subject: [PATCH 13/18] add ecsv and cache --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 120749479..2efb1bbbd 100644 --- a/.gitignore +++ b/.gitignore @@ -29,4 +29,6 @@ tests/.tests/ *__pycache__/ _build.* *.pickle -*.cache/* +*.ecsv +*cache/* + From 47812c76465d288cd3ec6b14395be5a8004f9d43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Mon, 17 Mar 2025 18:43:51 +0100 Subject: [PATCH 14/18] clean imports --- spectractor/extractor/targets.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/spectractor/extractor/targets.py b/spectractor/extractor/targets.py index f7be9cacd..822384e36 100644 --- a/spectractor/extractor/targets.py +++ b/spectractor/extractor/targets.py @@ -4,14 +4,12 @@ import astropy.units as u from astropy.time import Time from astroquery.simbad import SimbadClass -import astropy.config from astropy.io import ascii import matplotlib.pyplot as plt from scipy.interpolate import interp1d import numpy as np import os -import pickle from spectractor import parameters from spectractor.config import set_logger From ae6b7a1c8bcff71ec0277786a13fecee5550c088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Sun, 23 Mar 2025 10:43:41 +0100 Subject: [PATCH 15/18] use default astropy cache location --- spectractor/extractor/targets.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spectractor/extractor/targets.py b/spectractor/extractor/targets.py index 822384e36..bfb7df4c4 100644 --- a/spectractor/extractor/targets.py +++ b/spectractor/extractor/targets.py @@ -5,11 +5,13 @@ from astropy.time import Time from astroquery.simbad import SimbadClass from astropy.io import ascii +import astropy.config import matplotlib.pyplot as plt from scipy.interpolate import interp1d import numpy as np import os +import shutil from spectractor import parameters from spectractor.config import set_logger @@ -27,8 +29,7 @@ def _get_cache_dir(): - cache = os.path.join(os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))), - "tests", "data", "cache", "astropy", "astroquery", "Simbad") + cache = os.path.join(astropy.config.get_cache_dir(), "astroquery", "Simbad") os.makedirs(cache, exist_ok=True) return cache @@ -39,9 +40,8 @@ def _get_cache_file(tag): def _clean_cache_dir(): - cache = os.path.join(os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))), - "tests", "data", "cache", "astropy", "astroquery", "Simbad") - os.rmdir(cache) + cache = _get_cache_dir() + shutil.rmtree(cache) def load_target(label, verbose=False): @@ -294,7 +294,7 @@ def load(self): cache_location = _get_cache_dir() cache_file = _get_cache_file(astroquery_label) - if f"{cache_file}.ecsv" in os.listdir(cache_location): + if os.path.exists(os.path.join(cache_location, f"{cache_file}.ecsv")): self.my_logger.debug(f"\n\tLoad {self.label} coordinates from cached file {cache_file}.ecsv") self.simbad_table = ascii.read(os.path.join(cache_location, f"{cache_file}.ecsv")) else: From a63604572cf1838d8c30b4cfe599b6a1c86168cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Sun, 23 Mar 2025 15:19:26 +0100 Subject: [PATCH 16/18] typos --- spectractor/extractor/targets.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spectractor/extractor/targets.py b/spectractor/extractor/targets.py index bfb7df4c4..d5f014b72 100644 --- a/spectractor/extractor/targets.py +++ b/spectractor/extractor/targets.py @@ -322,7 +322,7 @@ def load(self): dec_key = "DEC" redshift_key = "Z_VALUE" if self.simbad_table is not None: - if self.verbose or True: + if self.verbose: self.my_logger.info(f'\n\tSimbad:\n{self.simbad_table}') if _USE_NEW_SIMBAD: self.radec_position = SkyCoord(self.simbad_table[ra_key][0], self.simbad_table[dec_key][0], unit="deg") @@ -332,8 +332,8 @@ def load(self): ) else: raise RuntimeError(f"Target {self.label} not found in Simbad") - if not np.ma.is_masked(self.simbad_table[redshift_key]): - self.redshift = float(self.simbad_table[redshift_key]) + if not np.ma.is_masked(self.simbad_table[redshift_key][0]): + self.redshift = float(self.simbad_table[redshift_key][0]) else: self.redshift = 0 self.get_radec_position_after_pm(date_obs="J2000") From 400c9ccfdbc273e8733f1a8b977ce18362e2410d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Sun, 23 Mar 2025 15:25:17 +0100 Subject: [PATCH 17/18] typos --- spectractor/extractor/targets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spectractor/extractor/targets.py b/spectractor/extractor/targets.py index d5f014b72..08396419e 100644 --- a/spectractor/extractor/targets.py +++ b/spectractor/extractor/targets.py @@ -309,7 +309,7 @@ def load(self): 'flux(U)', 'flux(B)', 'flux(V)', 'flux(R)', 'flux(I)', 'flux(J)', 'sptype', 'parallax', 'pm', 'z_value' ) - self.my_logger.debug(f"\n\tDownload {self.label} coordinates from Simbad:\n{self.simbad_table}...") + self.my_logger.debug(f"\n\tDownload {self.label} coordinates from Simbad...") self.simbad_table = simbadQuerier.query_object(astroquery_label) self.simbad_table.write(os.path.join(cache_location,f"{cache_file}.ecsv"), overwrite=True) From 2e3bfe3a926e37f1048640d2e47930b27cf4c1a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Neveu?= Date: Wed, 16 Apr 2025 10:13:30 +0200 Subject: [PATCH 18/18] copy cached simbad files in astropy local cache via setup.py --- setup.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/setup.py b/setup.py index 7b7c891bf..aaaecefdb 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,6 @@ from setuptools import setup import os +import shutil import re reqs = [] @@ -14,6 +15,16 @@ with open('README.md') as file: long_description = file.read() +try: + import astropy + astropy_cache_dir = astropy.config.get_cache_dir() +except ImportError: + astropy_cache_dir = os.path.join(f"{os.path.expanduser('~')}", ".astropy", "cache") +os.makedirs(os.path.join(astropy_cache_dir, "astroquery", "Simbad"), exist_ok=True) +shutil.copytree("./tests/data/cache/astropy/astroquery/Simbad", + os.path.join(astropy_cache_dir, "astroquery", "Simbad"), + dirs_exist_ok=True) + # cf. http://stackoverflow.com/questions/458550/standard-way-to-embed-version-into-python-package version_file = os.path.join('spectractor', '_version.py') verstrline = open(version_file, "rt").read()