def todoppler(self, rf, v0, rfq): """Convert a radialvelocity measure or a frequency measure to a doppler measure. In the case of a frequency, a rest frequency has to be specified. The type of doppler wanted (e.g. *RADIO*) has to be specified. :param rf: doppler reference code (see :meth:`doppler`) :param v0: a radialvelocity or frequency measure :param rfq: frequency measure or quantity Example:: f = dm.frequency('lsrk','1410MHz') # specify a frequency dm.todoppler('radio', f, dm.constants('HI')) # give doppler, using HI rest """ if is_measure(rfq) and rfq['type'] == 'frequency': rfq = dq.quantity(rfq['m0']) elif isinstance(rfq, str): rfq = dq.quantity(rfq) if is_measure(v0): if v0['type'] == 'radialvelocity': return self.todop(v0, dq.quantity(1., 'Hz')) elif v0['type'] == 'frequency' and dq.is_quantity(rfq) \ and rfq.conforms(dq.quantity('Hz')): return self.todop(v0, rfq) else: raise TypeError('Illegal Doppler or rest frequency specified') else: raise TypeError('Illegal Frequency specified')
def tofrequency(self, rf, v0, rfq): """Convert a Doppler type value (e.g. in radio mode) to a frequency. The type of frequency (e.g. LSRK) and a rest frequency (either as a frequency quantity (e.g. ``dm.constants('HI'))`` or a frequency measure (e.g. ``dm.frequency('rest','5100MHz'))`` should be specified. :param rf: frequency reference code (see :meth:`frequency`) :param v0: a doppler measure :param rfq: frequency measure or quantity Example:: dop = dm.doppler('radio',0.4) freq = dm.tofrequency('lsrk', dop, dm.constants('HI')) """ if is_measure(rfq) and rfq['type'] == 'frequency': rfq = dq.quantity(rfq['m0']) elif isinstance(rfq, str): rfq = dq.quantity(rfq) if is_measure(v0) and v0['type'] == 'doppler' \ and dq.is_quantity(rfq) \ and rfq.conforms(dq.quantity('Hz')): return self.doptofreq(v0, rf, rfq) else: raise TypeError('Illegal Doppler or rest frequency specified')
def todoppler(self, rf, v0, rfq): """Convert a radialvelocity measure or a frequency measure to a doppler measure. In the case of a frequency, a rest frequency has to be specified. The type of doppler wanted (e.g. *RADIO*) has to be specified. :param rf: doppler reference code (see :meth:`doppler`) :param v0: a radialvelocity or frequency measure :param rfq: frequency measure or quantity Example:: f = dm.frequency('lsrk','1410MHz') # specify a frequency dm.todoppler('radio', f, dm.constants('HI')) # give doppler, using HI rest """ if is_measure(rfq) and rfq['type'] == 'frequency': rfq = dq.quantity(rfq['m0']) elif isinstance(rfq, string_types): rfq = dq.quantity(rfq) if is_measure(v0): if v0['type'] == 'radialvelocity': return self.todop(v0, dq.quantity(1., 'Hz')) elif v0['type'] == 'frequency' and dq.is_quantity(rfq) \ and rfq.conforms(dq.quantity('Hz')): return self.todop(v0, rfq) else: raise TypeError('Illegal Doppler or rest frequency specified') else: raise TypeError('Illegal Frequency specified')
def tofrequency(self, rf, v0, rfq): """Convert a Doppler type value (e.g. in radio mode) to a frequency. The type of frequency (e.g. LSRK) and a rest frequency (either as a frequency quantity (e.g. ``dm.constants('HI'))`` or a frequency measure (e.g. ``dm.frequency('rest','5100MHz'))`` should be specified. :param rf: frequency reference code (see :meth:`frequency`) :param v0: a doppler measure :param rfq: frequency measure or quantity Example:: dop = dm.doppler('radio',0.4) freq = dm.tofrequency('lsrk', dop, dm.constants('HI')) """ if is_measure(rfq) and rfq['type'] == 'frequency': rfq = dq.quantity(rfq['m0']) elif isinstance(rfq, string_types): rfq = dq.quantity(rfq) if is_measure(v0) and v0['type'] == 'doppler' \ and dq.is_quantity(rfq) \ and rfq.conforms(dq.quantity('Hz')): return self.doptofreq(v0, rf, rfq) else: raise TypeError('Illegal Doppler or rest frequency specified')
def measure(self, v, rf, off=None): """Create/convert a measure using the frame state set on the measures server instance (via :meth:`do_frame`) :param v: The measure to convert :param rf: The frame reference to convert to :param off: The optional offset for the measure """ if off is None: off = {} keys = ["m0", "m1", "m2"] for key in keys: if key in v: if dq.is_quantity(v[key]): v[key] = v[key].to_dict() return _measures.measure(self, v, rf, off)