Comments (1)
This should be doable, will require computation of LSRK and then conversion of frequency axis to velocity.
Blimpy currently has a compute_lsrk()
function that requires PySLALIB, and reports back a LSRK value. This code (should) do the same thing, but within astropy:
# Code modified from: https://gist.github.com/StuartLittlefair/5aaf476c5d7b52d20aa9544cfaa936a1
from astropy.time import Time
from astropy.coordinates import SkyCoord, solar_system, EarthLocation, ICRS, UnitSphericalRepresentation, CartesianRepresentation
from astropy import units as u
from astropy import constants as const
from astropy.coordinates import EarthLocation
from astropy.coordinates import Angle
def velcorr(time, skycoord, location=None):
"""Barycentric velocity correction.
Uses the ephemeris set with ``astropy.coordinates.solar_system_ephemeris.set`` for corrections.
For more information see `~astropy.coordinates.solar_system_ephemeris`.
Parameters
----------
time : `~astropy.time.Time`
The time of observation.
skycoord: `~astropy.coordinates.SkyCoord`
The sky location to calculate the correction for.
location: `~astropy.coordinates.EarthLocation`, optional
The location of the observatory to calculate the correction for.
If no location is given, the ``location`` attribute of the Time
object is used
Returns
-------
vel_corr : `~astropy.units.Quantity`
The velocity correction to convert to Barycentric velocities. Should be added to the original
velocity.
"""
if location is None:
if time.location is None:
raise ValueError('An EarthLocation needs to be set or passed '
'in to calculate bary- or heliocentric '
'corrections')
location = time.location
# ensure sky location is ICRS compatible
if not skycoord.is_transformable_to(ICRS()):
raise ValueError("Given skycoord is not transformable to the ICRS")
ep, ev = solar_system.get_body_barycentric_posvel('earth', t) # ICRS position and velocity of Earth's geocenter
op, ov = location.get_gcrs_posvel(t) # GCRS position and velocity of observatory
# ICRS and GCRS are axes-aligned. Can add the velocities
velocity = ev + ov # relies on PR5434 being merged
# get unit ICRS vector in direction of SkyCoord
sc_cartesian = skycoord.icrs.represent_as(UnitSphericalRepresentation).represent_as(CartesianRepresentation)
return sc_cartesian.dot(velocity).to(u.km/u.s) # similarly requires PR5434
pks = EarthLocation(Angle(148.2614, unit='degree'), Angle(-32.9994, unit='degree'), 414.80 * u.m)
t = Time(b.axes.time[0], format='mjd')
ra = b.axes.coordinates['ra'][0]
dec = b.axes.coordinates['dec'][0]
radec = SkyCoord(ra, dec, 'icrs', unit=('hourangle', 'degree'))
print velcorr(t, radec, location=pks)
from blimpy.
Related Issues (20)
- Try to remove HDF5 files that cannot be fully written due to an exception
- Inadvertently, testing is using the previous release
- Utility stax has time-axis issues
- Emit more useful write-blob messages - Filterbank and HDF5
- GuppyFile.get_data() raises StopIteration HOT 3
- Need a tool for patching the header source_name in an HDF5 file
- Support FBH5 version 2.0 reporting HOT 1
- fil2h5, h52fil, dice, and bl_scrunch can mangle the output file name
- Enhance rawhdr to focus on critical header fields for rawspec
- guppi.py assumes that numbers without periods are integers
- examine_h5 in hdf_reader.py is loading too much data
- Plotting fails plt.show() and this should work for X-terminals HOT 3
- Waterfall from existing data array + header dict combo currently broken (`setup_freqs()` missing) HOT 7
- Typo in `waterfall.py` HOT 2
- Introduce Filterbank file downsampling capability
- Need to initialise more container fields for the data_array + header case for Waterfall
- Enhance dsamp to output SIGPROC (.fil) files as well as .h5 files
- Add detailed testing to streaming Waterfall objects
- bl_scrunch never really worked correctly! )-:
- hdf5plugin.Bitshuffle's lz4 argument is deprecated, use cname='lz4' or 'none' instead
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from blimpy.