forked from AstroChem/VISIBLE
-
Notifications
You must be signed in to change notification settings - Fork 2
VISIbility Based Line Extraction
License
johnilee/VISIBLE
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
VISIBLE (VISIbility Based Line Extraction) - Python package for spectral line extraction from interferometric data using matched filtering ==================================================== Purpose: __________ The matched_filter() method in VISIBLE allows you to apply an approximated matched filter to interferometric spectral line data and extract a signal. The filter can be created from a FITS image or RADMC3D output image, and the weak line data can be a CASA MS or uvfits file. The filter response spectrum can be output either to a .npy file or returned back to the user (for scripting) Installation and dependencies: __________ Along with the basic dependencies of numpy, matplotlib, and scipy, VISIBLE depends on the vis_sample (https://github.com/AstroChem/vis_sample) package. The simplest way to install VISIBLE and its dependent packages is to use pip (https://pypi.org/project/VISIBLE): > pip install VISIBLE With release 0.2, conda installation has been deprecated, please use pip. Python version must be 3.6. Parameters: __________ filterfile : input filter image or a list of filter images, needs to be in a valid FITS format with units of DEG for the RA and DEC, a RADMC3D image.out file (ascii format), or a SkyImage object from vis_sample. Must have an accurate reference frequency datafile - path to uvfits file or CASA measurement set containing the weak line. This should be as broad as possible (for a baseline), and NOT just a small window around the line mu_RA - (optional, default = 0) right ascension offset from phase center in arcseconds (i.e. filter visibilities are sampled as if the image is centered at (mu_RA, mu_DEC) mu_DEC - (optional, default = 0) declination offset from phase center in arcseconds (i.e. filter visibilities are sampled as if the image is centered at (mu_RA, mu_DEC) src_distance - distance to source in parsecs - only required for RADMC3D input images interpolate - (optional, default = True) whether the filter is interpolated to match the the local velocity spacing of the data. Should remain true unless you have a good reason otherwise. weights - (optional, default = 'renormalize') options are 'renormalize', 'preserve', and 'statwt'. 'renormalize' will calculate the offset (if any) between the current weights and the scatter of the visibilities, and renormalize accordingly. If 'preserve' is selected, then the data weights are assumed to be correct as-is. 'statwt' will assume that the CASA task 'statwt' was applied to the data and no renormalization will be applied. 'renormalize' should not be used if strong lines are present in the data, and the application of statwt using channels without signal will be preferable. norm_chans - (optional) specify signal free channels to normalize the output spectrum. Channels should be specified as a list of start/stop channel pairs (i.e. [[0,100][130,400],[450,600]]). This option should only be used if the selected 'weights' option cannot normalize the spectrum properly. Note that the channel indices are for the 'n_chan - n_kernel + 1' sized impulse response spectrum window_func - (optional, default = 'Hanning') the window function used in processing the time domain data, which introduces a channel correlation. A Hanning filter is used for ALMA. Can be set to 'none' for synthetic data, other options (Welch, Hamming, etc.) will be added in the future. binfactor - (optional, default = 2) the degree to which data was averaged/binned after the window function was applied. The default for ALMA observations after Cycle 3 is a factor of 2 (set in the OT). Valid factors are 1, 2, 3, and 4. Factors over 4 are treated as having no channel correlation. outfile - (optional) name of output file for filter response, needs to have a .npy extension. If n filter images are provided then n outfiles must be specified. mode - (optional, default = 'channel') output format of the x-axis of the impulse response spectrum. Options are 'channel', 'frequency', and 'velocity'. restfreq - (optional) rest frequency for 'velocity' output mode, input as a float in MHz. If a rest frequency is not specified then the center frequency of the data will be used. plot - (optional) plot the real portion of the filter response spectrum against the x-axis chosen by the 'mode' parameter. The output will still be either returned or saved to 'outfile'. verbose - (boolean) flag to print all progress output and timing Usage: __________ >> from VISIBLE import matched_filter # import the matched_filter command >> matched_filter(filterfile="my_filter.fits", datafile="observations.ms", outfile="spectrum.npy") # filter observations.ms using the filter image from my_filter.fits and output spectrum to spectrum.npy >> output = matched_filter(filterfile="my_filter.fits", datafile="observations.ms") # filter observations.ms using the filter image from my_filter.fits, result stored in variable 'output', where output looks likes [channels, xc_spectrum]. >> spectrum = matched_filter(filterfile="my_filter.fits", datafile="observations.ms.cvel", mode="frequency") # same as above, output with x axis in units of frequency. Input ms should be run through cvel prior to filtering >> spectrum = matched_filter(filterfile="my_filter.fits", datafile="observations.ms.cvel", mode="velocity") # same as above, output with x axis in units of lsrk velocity. Input ms should be run through cvel prior to filtering Example: __________ An example is available at https//doi.org/10.5281/zenodo.1174545, which recreates Figure 5 from Loomis et al. ================================= Source Structure ------------ Contents: VISBILE |-- VISIBLE | |-- matched_filter.py : defines the matched_filter() function | | | |-- __init__.py | |-- README |-- LICENSE
About
VISIbility Based Line Extraction
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- Python 100.0%