Skip to main content

Swift BAT GUANO imaging and mosaic pipeline.

Project description

BAT-GLIMPSE

Requirements

HEASoft needs to be installed. We recommend to install it via Conda as described here, doing

conda create -n henv heasoft \
  -c https://heasarc.gsfc.nasa.gov/FTP/software/conda/ \
  -c conda-forge

In the same environment, install BAT-GLIMPSE and NITRATES as described in the next two steps. CALDB environment variables need to be defined as described here

Install

The package can be installed via pip, with Python 3.10 or greater.

pip install bat-glimpse

Optional: installing NITRATES

In order to have the data setup managed by NITRATES, we need to install it locally using:

git clone git@github.com:Swift-BAT/NITRATES.git
cd NITRATES
python -m pip install -e .

Developer Mode

git clone git@github.com:samueleronchini/BAT-GLIMPSE.git
cd BAT-GLIMPSE
python -m pip install -e .

Run commands

bat-glimpse --workdir </path/to/workdir> --trigtime <trigtime>

You can also run the package module directly:

python -m batglimpse --workdir </path/to/workdir> --trigtime <trigtime>

Main options

  • --workdir: required working directory for inputs and outputs.
  • --trigtime: trigger time in YYYY-MM-DDTHH:MM:SS.sss format.
  • --tmin and --tmax: explicit ad-hoc analysis window.
  • --pipe: imaging or mosaic for ad-hoc analysis.
  • --ext_obsid: override the GUANO obsid.
  • --healpix_nside: mosaic HEALPix resolution.
  • --skyview_nprocs: processes used while creating skyviews.
  • --mosaic_nprocs: processes used while mosaicing.
  • --trig_instr: Name of the triggering instrument

For --trig_instr use IGWN when it's a GW. This allows to create the preliminary maps with the partial coding distribution. Otherwise,by default the code searches for a Fermi-GBM map.

External Map Search

Fermi localization

  • Uses gdt.missions.fermi if installed.
  • Computes a Fermi trigger ID from trigtime.
  • Downloads the localization and renames it to ext_loc_fermi_glg_*.fits.

GW localization (IGWN only)

  • Queries GraceDb for the most relevant FITS sky map.
  • Downloads it to workdir/ext_loc_*.fits.

Branch A: Ad-hoc analysis (tmin/tmax/pipe provided)

  • If pipe == imaging:
    • Runs imaging() once for [tmin, tmax].
  • If pipe == mosaic:
    • Runs mosaic() once for [tmin, tmax].
  • If max SNR >= 6:
    • Sorts CSVs and posts results to Slack/Telegram.

Branch B: Default analysis (no explicit window)

  1. NITRATES time seeds:
    • If time_seeds.csv exists and is non-empty:
      • Sort by snr and take top 10 seeds.
      • Call imaging() with those time windows.
    • If empty or missing, log and continue.
  2. SNR check:
    • Reads SNR values from CSVs.
    • Posts to Slack/Telegram if SNR >= 6.
  3. Custom seed search:
    • Runs cust_seeds(); if seeds are found, refine and re-image/mosaic:
      • If max SNR already >= 20, skip refinement.
      • For each seed within +/- 20 s:
        • Refine the seed center and duration.
        • If duration <= 0.2 s: run imaging().
        • If 0.2 s <= duration < 15 s:
          • Run mosaic() if interval intersects a slew interval.
          • Otherwise run imaging().

Imaging Algorithm Details

imaging(t0, event, workdir, ...)

  • Energy range: 15-350 keV.
  • Creates skyview with:
    • aperture=CALDB:DETECTION
    • pcodethresh=0.01
  • Source detection parameters:
    • snrthresh=5.5, srcdetect=yes
  • Filters detections:
    • NAME contains UNKNOWN.
    • SNR > 5 and CENT_SNR > 5.
  • Writes imaging.csv with RA, Dec, SNR, CENT_SNR, partial coding, detect status, dt/duration, and energy bounds.

Mosaic Algorithm Details

mosaic(t0, event, workdir, ...)

  • Energy range: 15-350 keV.
  • Initial duration dt_0 = tmax - tmin.
  • Builds time bins in 0.2 s steps; uses a 3-bin fallback for short windows.
  • Creates skyviews in parallel, then filters to those with:
    • sky_img, pcode_img, and bkg_stddev_img present.
  • If 0 valid skyviews: double dt_0 and retry.
  • If 1 valid skyview: fall back to that skyview.
  • Otherwise mosaic with ba.parallel.mosaic_skyview().
  • Detects sources with snrthresh=5.5.
  • Accepts sources with psffwhm_separation > 1.
  • Writes mosaic.csv with RA, Dec, SNR, t_start, t_end, and energy bounds.

Run examples

Always pass trigger time explicitly.

python run_bat_glimpse.py \
  --workdir /absolute/path/to/workdir \
  --trigtime 2020-03-25T03:18:35.000

Optional ad-hoc window:

python run_bat_glimpse.py \
  --workdir /absolute/path/to/workdir \
  --trigtime 2020-03-25T03:18:35.000 \
  --pipe imaging \
  --tmin -2.0 \
  --tmax 6.0

Mosaic run with explicit process counts:

python run_bat_glimpse.py \
  --workdir /absolute/path/to/workdir \
  --trigtime 2020-03-25T03:18:35.000 \
  --pipe mosaic \
  --tmin -5.0 \
  --tmax 15.0 \
  --healpix_nside 512 \
  --skyview_nprocs 8 \
  --mosaic_nprocs 8

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bat_glimpse-0.1.2.tar.gz (30.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bat_glimpse-0.1.2-py3-none-any.whl (32.0 kB view details)

Uploaded Python 3

File details

Details for the file bat_glimpse-0.1.2.tar.gz.

File metadata

  • Download URL: bat_glimpse-0.1.2.tar.gz
  • Upload date:
  • Size: 30.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for bat_glimpse-0.1.2.tar.gz
Algorithm Hash digest
SHA256 b74971a6b73a4e20c2f659700effbe939bf6fe5b6f901d7ca300bfe0bee1031b
MD5 d693fd08ededb4d58c92aa45c848dba1
BLAKE2b-256 f62e4332082e8b5004f3a7d59e8b693a6b7cd8a93a8f0205b433aeead941d498

See more details on using hashes here.

File details

Details for the file bat_glimpse-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: bat_glimpse-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 32.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for bat_glimpse-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 86115021edc563b4f3bfd98b9580d3f4562b64710491809cdc573f420e5793f3
MD5 3061a73db100369e6563279853de58f7
BLAKE2b-256 48a203536cdf527b81155f6708b9f7930035c95c3fa0cfc9c422848bd8c96512

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page