-
Notifications
You must be signed in to change notification settings - Fork 6
add magMWdust function #19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
AngusWright
wants to merge
24
commits into
asgr:master
Choose a base branch
from
AngusWright:master
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
24 commits
Select commit
Hold shift + click to select a range
847bff6
add magMWdust function, documentation, and lookup table
AngusWright 987c0b0
remove unnecessary eq2gal function
AngusWright d78e856
remove reference to old code in documentation
AngusWright 77597e9
add catch for empty data, and only display progress during interactiv…
AngusWright 7125a27
check show.status with isTRUE()
AngusWright d1ef6ae
remove dust key in documentation
AngusWright c0fbebc
update magMWdust to use lazy-loaded SFD_dust lookup rather than direc…
AngusWright a828188
update documentation for new dust.data input
AngusWright f8d91f2
update documentation to descibe the lookup usage
AngusWright e66a7d1
update magMWdust function to require dlon and dlat when using bespoke…
AngusWright b9746f1
catch non-numeric dlon and dlat
AngusWright b0c2190
only require dlon and dlat when plotting polygons
AngusWright b468e78
remove borders from polygons, tweak defaults for nicer plotting
AngusWright 718ad78
tweak default dlon dlat to reduce edge effects
AngusWright e9e7adc
update lookup documentation, now uses complete map
AngusWright 5c2da7c
version update
AngusWright c548a49
update behaviour for latitudes beyond \pm 90 to reflect, rather than …
AngusWright cacfda4
update magMWdust to use correct default dlat/dlon
AngusWright 15e52ef
remove outdated comment
AngusWright f183132
add SFD credit to authorship
AngusWright b7aea6a
move citation to references block in docs
AngusWright a1fa7a6
add label cex option to magproj
AngusWright f0359cb
add txtProgressBar to namespace imports for magMWdust
AngusWright a558a05
add alias to SFD_dust to manual for magMWdust
AngusWright File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,72 @@ | ||
| #========================================= | ||
| # | ||
| # File Name : magMWdust.R | ||
| # Created By : awright | ||
| # Creation Date : 03-06-2026 | ||
| # Last Modified : Wed Jun 3 13:40:13 2026 | ||
| # | ||
| #========================================= | ||
|
|
||
|
|
||
| # Define a plotting helper that overlays Milky Way dust on a projected sky plot. | ||
| magMWdust <- function(dust.data = NULL, dlon = NULL, dlat = NULL, type = "p", pch = 16, pt.cex = 0.5, opacity.range = c(0, 0.5), whiteblack.percentile = c(0.5, 0.95), stretch = "lin", min.opacity.plot = 0.01, show.status = TRUE, ...) { | ||
|
|
||
| # Restrict the drawing style to points or polygons. | ||
| if (!type %in% c("pl", "p")) stop("magMWdust function expects type of 'p' (for points) or 'pl' (for polygons) only") | ||
| # If none provided, read the dust map data, which is a dlon=dlat=1 sampling | ||
| if (is.null(dust.data)) { | ||
| # Define the dlon and dlat values | ||
| dlon <- dlat <- 1 | ||
| # Lazy load the SFD_dust data | ||
| dust_all<-SFD_dust | ||
| } else { | ||
| if (!is.data.frame(dust.data)) { | ||
| stop("dust.data is not a data frame; load an example with data(SFD_dust)") | ||
| } | ||
| if (!all(c("ebv","ra","dec")%in%colnames(dust.data))) { | ||
| stop("dust.data is missing required components; load an example with data(SFD_dust)") | ||
| } | ||
| dust_all<-dust.data | ||
| if (type=='pl') { | ||
| if (is.null(dlon)) stop("dlon must be provided when providing input dust.data and using type == 'pl'") | ||
| if (is.null(dlat)) stop("dlat must be provided when providing input dust.data and using type == 'pl'") | ||
| if (!is.numeric(dlon)) stop("dlon must be numeric") | ||
| if (!is.numeric(dlat)) stop("dlat must be numeric") | ||
| } | ||
| } | ||
| # Map dust values onto an opacity scale for plotting. | ||
| dust_all$map <- magicaxis::magmap(dust_all$ebv, range = opacity.range, hicut = whiteblack.percentile[2], locut = whiteblack.percentile[1], stretch = stretch)$map | ||
| # Drop grid cells that would be too faint to plot usefully. | ||
| dust <- dust_all[which(dust_all$map > min.opacity.plot), ] | ||
| # Stop on empty result | ||
| if (nrow(dust)==0) stop("threshold for min.opacity.plot causes no data to be plotted. Reduce value to produce a result") | ||
|
|
||
| # Draw filled polygons when polygon mode has been requested. | ||
| if (type == "pl") { | ||
| # Open a progress bar for the per-cell polygon loop. | ||
| if (interactive() & isTRUE(show.status)) { | ||
| pb <- txtProgressBar(style = 3, min = 1, max = nrow(dust)) | ||
| } | ||
| # Iterate over each retained sky cell. | ||
| for (i in 1:nrow(dust)) { | ||
| # Project and draw the four corners of the current sky cell. | ||
| magicaxis::magproj(c(dust$ra[i] - dlon/2, dust$ra[i] - dlon/2, dust$ra[i] + dlon/2, dust$ra[i] + dlon/2), | ||
| c(dust$dec[i] - dlat/2, dust$dec[i] + dlat/2, dust$dec[i] + dlat/2, dust$dec[i] - dlat/2), | ||
| type = type, add = TRUE, col = hsv(v = 0, alpha = dust$map[i]), border=NA, ...) | ||
| # Advance the progress bar after drawing the current polygon. | ||
| if (interactive() & isTRUE(show.status)) { | ||
| setTxtProgressBar(pb, i) | ||
| } | ||
| } | ||
| # Close the progress bar when the polygon layer is complete. | ||
| if (interactive() & isTRUE(show.status)) { | ||
| close(pb) | ||
| } | ||
| } else { | ||
| # Draw the retained dust grid cells as projected points. | ||
| magicaxis::magproj(dust$ra, dust$dec, type = "p", add = TRUE, pch = pch, cex = pt.cex, col = hsv(v = 0, alpha = dust$map), ...) | ||
| } | ||
| # Return invisibly because this function is used for its plotting side effects. | ||
| return(invisible(NULL)) | ||
| } | ||
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,100 @@ | ||
| \name{magMWdust} | ||
| \alias{magMWdust} | ||
| \alias{SFD_dust} | ||
| \title{ | ||
| Plot a Milky Way dust overlay | ||
| } | ||
| \description{ | ||
| Adds a projected Milky Way dust layer to an existing sky plot using a lookup-table | ||
| constructed from the SFD dust map on an equatorial grid, and drawing the result as | ||
| points or filled polygons. | ||
| } | ||
| \usage{ | ||
| magMWdust(dust.data = NULL, | ||
| dlon = NULL, dlat = NULL, | ||
| type = "p", pch = 16, pt.cex = 0.5, | ||
| opacity.range = c(0, 0.5), | ||
| whiteblack.percentile = c(0.5, 0.95), | ||
| stretch = "lin", | ||
| min.opacity.plot = 0.01, show.status = TRUE, ...) | ||
| } | ||
| \arguments{ | ||
| \item{dust.data}{ | ||
| The data set to use for drawing the dust map. If \code{NULL} (the default), the function | ||
| lazy-loads the SFD dust map data provided with the package (\code{data("SFD_dust")}). The | ||
| code expects this data to be a data frame containing columns "ra", "dec", and "ebv". | ||
| } | ||
| \item{dlon}{ | ||
| Step size between element of longitude. Required when specifying dust.data directly, | ||
| and uses \code{dlon=1} when lazy-loading the internal dust map. | ||
| } | ||
| \item{dlat}{ | ||
| Step size between element of latitude. Required when specifying dust.data directly, | ||
| and uses \code{dlat=1} when lazy-loading the internal dust map. | ||
| } | ||
| \item{type}{ | ||
| Character scalar giving the drawing mode: \code{"p"} for points or \code{"pl"} | ||
| for polygons. | ||
| } | ||
| \item{pch}{ | ||
| Plotting symbol used when \code{type = "p"}. | ||
| } | ||
| \item{pt.cex}{ | ||
| Point expansion factor used when \code{type = "p"}. | ||
| } | ||
| \item{opacity.range}{ | ||
| Two-element numeric vector giving the output opacity range passed to | ||
| \code{\link{magmap}}. | ||
| } | ||
| \item{whiteblack.percentile}{ | ||
| Two-element numeric vector giving the lower and upper percentiles used when | ||
| mapping dust values to opacity. | ||
| } | ||
| \item{stretch}{ | ||
| Stretch mode passed through to \code{\link{magmap}}. | ||
| } | ||
| \item{min.opacity.plot}{ | ||
| Minimum mapped opacity required for a grid cell to be drawn. | ||
| } | ||
| \item{show.status}{ | ||
| Option to show a progress bar when drawing polygons. | ||
| } | ||
| \item{\dots}{ | ||
| Additional arguments passed to \code{\link{magproj}}. | ||
| } | ||
| } | ||
| \details{ | ||
| The function plots \code{E(B-V)} values from a provided dust map data.frame, or if none is provided uses a lazy-loaded | ||
| SFD dust map which is sampled on a 1x1 deg grid. This lookup table is then mapped to points (or polygons, see below) | ||
| with opacity determined by \code{\link{magmap}}, using the requested white/black points defined using percentiles | ||
| (\code{whiteblack.percentile}) of the map, and throwing away cells whose opacity is below the requested | ||
| minimum (\code{min.opacity.plot}). | ||
|
|
||
| When \code{type = "pl"} each retained grid cell is drawn as a projected | ||
| four-corner polygon. Otherwise the retained cells are drawn as projected | ||
| points. Polygon drawing is very slow when drawing to X11 (many minutes) except | ||
| with very low resolutions. Polygon drawing may nonetheless be preferable when | ||
| writing to file, where the operation is much faster and reduces aliasing effects | ||
| caused by over- (or under-)lapping points. | ||
| } | ||
| \value{ | ||
| Returns \code{NULL} invisibly. The function is called for its plotting side | ||
| effects. | ||
| } | ||
| \references{ | ||
| Schlegel, Finkbeiner, & Davis, 1998, ApJ, 500, 2, 525 | ||
| } | ||
| \author{ | ||
| Angus H Wright | ||
| } | ||
|
AngusWright marked this conversation as resolved.
|
||
| \seealso{ | ||
| \code{\link{magmap}}, \code{\link{magproj}} | ||
| } | ||
| \examples{ | ||
| magproj(0,0,type='n') #Construct a base magproj plot | ||
| magMWdust() #add MW dust map as points | ||
| \dontrun{ | ||
| magMWdust(type = "pl") #add MW dust map as polygons | ||
| } | ||
| } | ||
| \keyword{plot} | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But don't you set it to 0.99...?