def _initialise_ephemeris(self, earth_ephem, sun_ephem, time_corr): """ Initialise the solar system ephemeris. """ if earth_ephem is not None: earthfile = earth_ephem else: earthfile = self.__earthstr.format(self.ephem) if sun_ephem is not None: sunfile = sun_ephem else: sunfile = self.__sunstr.format(self.ephem) if time_corr is not None: timefile = time_corr else: timefile = self.__timecorrstr.format(self.__units_map[self.units]) try: edat = lalpulsar.InitBarycenter(earthfile, sunfile) except RuntimeError: try: # try downloading the ephemeris files from astropy.utils.data import download_file efile = download_file(DOWNLOAD_URL.format(earthfile), cache=True) sfile = download_file(DOWNLOAD_URL.format(sunfile), cache=True) edat = lalpulsar.InitBarycenter(efile, sfile) except Exception as e: raise IOError( "Could not read in ephemeris files: {}".format(e)) try: tdat = lalpulsar.InitTimeCorrections(timefile) except RuntimeError: try: # try downloading the ephemeris files from astropy.utils.data import download_file tfile = download_file(DOWNLOAD_URL.format(timefile), cache=True) tdat = lalpulsar.InitTimeCorrections(tfile) except Exception as e: raise IOError( "Could not read in time correction file: {}".format(e)) return edat, tdat
def _initialise_ephemeris(self, earth_ephem, sun_ephem, time_corr): """ Initialise the solar system ephemeris. """ if earth_ephem is not None: earthfile = earth_ephem else: earthfile = self.__earthstr.format(self.ephem) if sun_ephem is not None: sunfile = sun_ephem else: sunfile = self.__sunstr.format(self.ephem) if time_corr is not None: timefile = time_corr else: timefile = self.__timecorrstr.format(self.__units_map[self.units]) try: edat = lalpulsar.InitBarycenter(earthfile, sunfile) except Exception as e: raise IOError("Could not read in ephemeris files: {}".format(e)) try: tdat = lalpulsar.InitTimeCorrections(timefile) except Exception as e: raise IOError( "Could not read in time correction file: {}".format(e)) return edat, tdat
[1000072000.0, -7.948860127300e-27, -9.699169393802e-27], [1000075600.0, 3.255444398910e-27, -4.686765876987e-27], [1000079200.0, 1.369234859571e-26, 1.647785967195e-27], [1000082800.0, 2.100706686852e-26, 7.709825036865e-27]]) # set ephemeris files earthephem = os.path.join(os.environ['LAL_TEST_PKGDATADIR'], 'earth00-19-DE405.dat.gz') sunephem = os.path.join(os.environ['LAL_TEST_PKGDATADIR'], 'sun00-40-DE405.dat.gz') timefile = os.path.join(os.environ['LAL_TEST_PKGDATADIR'], 'te405_2000-2040.dat.gz') # get ephemeris files edat = lalpulsar.InitBarycenter(earthephem, sunephem) tdat = lalpulsar.InitTimeCorrections(timefile) def test_one(): par = PulsarParametersPy() par['F'] = [123.456789, -9.87654321e-12] # set frequency par['DELTAF'] = [0.0, 0.0] # frequency difference par['RAJ'] = lal.TranslateHMStoRAD('01:23:34.5') # set right ascension par['DECJ'] = lal.TranslateDMStoRAD('-45:01:23.4') # set declination pepoch = lal.TranslateStringMJDTTtoGPS('58000') par['PEPOCH'] = pepoch.gpsSeconds + 1e-9 * pepoch.gpsNanoSeconds par['H0'] = 5.6e-26 par['COSIOTA'] = -0.2 par['PSI'] = 0.4 par['PHI0'] = 2.3
def initialise_ephemeris( ephem="DE405", units="TCB", earthfile=None, sunfile=None, timefile=None, ssonly=False, timeonly=False, filenames=False, ): """ Download/read and return solar system ephemeris and time coordinate data. If files are provided these will be used and read. If not provided then, using supplied ``ephem`` and ``units`` values, it will first attempt to find files locally (either in your current path or in a path supplied by a ``LAL_DATA_PATH`` environment variable), and if not present will then attempt to download the files from a repository. To do ----- Add the ability to create ephemeris files using astropy. Parameters ---------- earthfile: str A file containing the Earth's position/velocity ephemeris sunfile: str A file containing the Sun's position/velocity ephemeris timefile: str A file containing time corrections for the TCB or TDB time coordinates. ephem: str The JPL ephemeris name, e.g., DE405 units: str The time coordinate system, which can be either "TDB" or "TCB" (TCB is the default). ssonly: bool If True only return the initialised solar system ephemeris data. Default is False. timeonly: bool If True only return the initialised time correction ephemeris data. Default is False. filenames: bool If True return the paths to the ephemeris files. Default is False. Returns ------- edat, sdat, filenames: The LAL EphemerisData object and TimeCorrectionData object. """ earth = "earth00-40-{}.dat.gz".format( ephem) if earthfile is None else earthfile sun = "sun00-40-{}.dat.gz".format(ephem) if sunfile is None else sunfile filepaths = [] if not timeonly: try: with MuteStream(): # get full file path earthf = lalpulsar.PulsarFileResolvePath(earth) sunf = lalpulsar.PulsarFileResolvePath(sun) edat = lalpulsar.InitBarycenter(earthf, sunf) filepaths = [edat.filenameE, edat.filenameS] except RuntimeError: # try downloading the ephemeris files try: efile = download_ephemeris_file( LAL_EPHEMERIS_URL.format(earth)) sfile = download_ephemeris_file(LAL_EPHEMERIS_URL.format(sun)) edat = lalpulsar.InitBarycenter(efile, sfile) filepaths = [efile, sfile] except Exception as e: raise IOError( "Could not read in ephemeris files: {}".format(e)) if ssonly: return (edat, filepaths) if filenames else edat unit = None if timefile is None: if units.upper() in ["TCB", "TDB"]: unit = dict(TCB="te405", TDB="tdb")[units.upper()] else: raise ValueError("units must be TCB or TDB") time = "{}_2000-2040.dat.gz".format(unit) if timefile is None else timefile try: with MuteStream(): # get full file path timef = lalpulsar.PulsarFileResolvePath(time) tdat = lalpulsar.InitTimeCorrections(timef) filepaths.append(timef) except RuntimeError: try: # try downloading the time coordinate file tfile = download_ephemeris_file(LAL_EPHEMERIS_URL.format(time)) tdat = lalpulsar.InitTimeCorrections(tfile) filepaths.append(tfile) except Exception as e: raise IOError( "Could not read in time correction file: {}".format(e)) if timeonly: return (tdat, filepaths) if filenames else tdat else: return (edat, tdat, filepaths) if filenames else (edat, tdat)
def initialise_ephemeris(ephem="DE405", units="TCB", earthfile=None, sunfile=None, timefile=None): """ Download/read and return solar system ephemeris and time coordinate data. If files are provided these will be used and read. If not provided then, using supplied ``ephem`` and ``units`` values, it will first attempt to find files locally (either in your current path or in a path supplied by a ``LAL_DATA_PATH`` environment variable), and if not present will then attempt to download the files from a repository. To do ----- Add the ability to create ephemeris files using astropy. Parameters ---------- earthfile: str A file containing the Earth's position/velocity ephemeris sunfile: str A file containing the Sun's position/velocity ephemeris timefile: str A file containing time corrections for the TCB or TDB time coordinates. ephem: str The JPL ephemeris name, e.g., DE405 units: str The time coordinate system, which can be either "TDB" or "TCB" (TCB is the default). """ DOWNLOAD_URL = "https://git.ligo.org/lscsoft/lalsuite/raw/master/lalpulsar/lib/{}" unit = None if timefile is None: if units.upper() in ["TCB", "TDB"]: unit = dict(TCB="te405", TDB="tdb")[units.upper()] else: raise ValueError("units must be TCB or TDB") earth = "earth00-40-{}.dat.gz".format( ephem) if earthfile is None else earthfile sun = "sun00-40-{}.dat.gz".format(ephem) if sunfile is None else sunfile time = "{}_2000-2040.dat.gz".format(unit) if timefile is None else timefile try: edat = lalpulsar.InitBarycenter(earth, sun) except RuntimeError: # try downloading the ephemeris files try: from astropy.utils.data import download_file efile = download_file(DOWNLOAD_URL.format(earth), cache=True) sfile = download_file(DOWNLOAD_URL.format(sun), cache=True) edat = lalpulsar.InitBarycenter(efile, sfile) except Exception as e: raise IOError("Could not read in ephemeris files: {}".format(e)) try: tdat = lalpulsar.InitTimeCorrections(time) except RuntimeError: try: # try downloading the time coordinate file from astropy.utils.data import download_file tfile = download_file(DOWNLOAD_URL.format(time), cache=True) tdat = lalpulsar.InitTimeCorrections(tfile) except Exception as e: raise IOError( "Could not read in time correction file: {}".format(e)) return edat, tdat