From e332857eeae409007b808ca919399afd61ae156f Mon Sep 17 00:00:00 2001 From: "J. Xavier Prochaska" Date: Mon, 16 May 2016 08:18:36 -0700 Subject: [PATCH] speeding up more --- linetools/isgm/abscomponent.py | 4 +++- linetools/isgm/abssystem.py | 6 ++++-- linetools/spectralline.py | 14 ++++++-------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/linetools/isgm/abscomponent.py b/linetools/isgm/abscomponent.py index a7e1ddfe..7c6f7546 100644 --- a/linetools/isgm/abscomponent.py +++ b/linetools/isgm/abscomponent.py @@ -14,6 +14,7 @@ from astropy import constants as const from astropy import units as u +from astropy.units import Quantity from astropy.coordinates import SkyCoord from astropy.table import QTable, Column @@ -126,6 +127,7 @@ def from_dict(cls, idict, coord=None, **kwargs): else: radec = SkyCoord(ra=idict['RA']*u.deg, dec=idict['DEC']*u.deg) # Init + #slf = cls(radec, tuple(idict['Zion']), idict['zcomp'], Quantity(idict['vlim'], unit='km/s'), slf = cls(radec, tuple(idict['Zion']), idict['zcomp'], idict['vlim']*u.km/u.s, Ej=idict['Ej']/u.cm, A=idict['A'], Ntup = tuple([idict[key] for key in ['flag_N', 'logN', 'sig_logN']]), @@ -137,7 +139,7 @@ def from_dict(cls, idict, coord=None, **kwargs): # Return return slf - def __init__(self, radec, Zion, z, vlim, Ej=0./u.cm, A=None, + def __init__(self, radec, Zion, z, vlim, Ej=Quantity(0., unit='1/cm'), A=None, Ntup=None, comment='', name=None, stars=None): """ Initiator diff --git a/linetools/isgm/abssystem.py b/linetools/isgm/abssystem.py index b7029d59..8d377b95 100644 --- a/linetools/isgm/abssystem.py +++ b/linetools/isgm/abssystem.py @@ -25,6 +25,8 @@ from linetools.spectralline import AbsLine from linetools.abund import ions +# Globals to speed things up +constckms = const.c.to('km/s') class AbsSystem(object): """ @@ -224,8 +226,8 @@ def add_component(self, abscomp, toler=0.2*u.arcsec, chk_sep=True, **kwargs): else: test = True # Now redshift/velocity - zlim_comp = (1+abscomp.zcomp)*abscomp.vlim/const.c.to('km/s') - zlim_sys = (1+self.zabs)*self.vlim/const.c.to('km/s') + zlim_comp = (1+abscomp.zcomp)*abscomp.vlim/constckms + zlim_sys = (1+self.zabs)*self.vlim/constckms test = test & (zlim_comp[0]>=zlim_sys[0]) & (zlim_comp[1]<=zlim_sys[1]) # Additional checks (specific to AbsSystem type) diff --git a/linetools/spectralline.py b/linetools/spectralline.py index 1ccb6d1a..cf53a4f3 100644 --- a/linetools/spectralline.py +++ b/linetools/spectralline.py @@ -22,7 +22,7 @@ from linetools.lists.linelist import LineList from linetools import utils as ltu -# A few globals to speed performace +# A few globals to speed up performance (astropy.Quantity issue) zero_coord = SkyCoord(ra=0.*u.deg, dec=0.*u.deg) # Coords init_analy = { 'spec': None, # Analysis inputs (e.g. spectrum; from .clm file or AbsID) @@ -38,9 +38,9 @@ 'EW': 0.*u.AA, 'sig_EW': 0.*u.AA, 'flag_EW': 0 # EW } -#abs_attrib = {'N': 0./u.cm**2, 'sig_N': 0./u.cm**2, 'flag_N': 0, # Column ## NOT ENOUGH SPEED-UP -# 'b': 0.*u.km/u.s, 'sig_b': 0.*u.km/u.s # Doppler -# } +abs_attrib = {'N': 0./u.cm**2, 'sig_N': 0./u.cm**2, 'flag_N': 0, # Column ## NOT ENOUGH SPEED-UP + 'b': 0.*u.km/u.s, 'sig_b': 0.*u.km/u.s # Doppler + } # Class for Spectral line class SpectralLine(object): @@ -156,7 +156,7 @@ def __init__(self, ltype, trans, linelist=None, closest=False, z=0., # Other self.data = {} # Atomic/Molecular Data (e.g. f-value, A coefficient, Elow) self.analy = init_analy - self.attrib = init_attrib #{ + self.attrib = init_attrib # Fill data self.fill_data(trans, linelist=linelist, closest=closest, verbose=verbose) @@ -455,9 +455,7 @@ def fill_data(self, trans, linelist=None, closest=False, verbose=True): }) # Additional fundamental attributes for Absorption Line - self.attrib.update({'N': 0./u.cm**2, 'sig_N': 0./u.cm**2, 'flag_N': 0, # Column - 'b': 0.*u.km/u.s, 'sig_b': 0.*u.km/u.s # Doppler - } ) + self.attrib.update(abs_attrib) # Voigt def generate_voigt(self, wave=None, **kwargs):