Skip to content
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

More changes for v2.3.7 release #4760

Merged
merged 4 commits into from
May 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 32 additions & 4 deletions bin/all_sky_search/pycbc_make_bayestar_skymap
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,14 @@ import glob
import sys
import random
import tempfile

from ligo.lw import lsctables, utils as ligolw_utils

import pycbc.version
from pycbc import init_logging
from pycbc.waveform import bank as wavebank
from pycbc.io import WaveformArray
from pycbc.io.ligolw import LIGOLWContentHandler

parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('--version', action="version",
Expand All @@ -38,14 +44,12 @@ parser.add_argument('--bayestar-executable',
parser.add_argument('--event-xml', required=True,
help="XML file containing event information, SNR "
"timeseries and PSD to pass to bayestar")
parser.add_argument('--waveform', default='TaylorF2',
help="Waveform used in the matched-filtering "
"to generate the SNR timeseries.")
parser.add_argument('--low-frequency-cutoff', type=float, default=20,
help="Low-frequency cutoff used in the matched-filtering "
"to generate the SNR timeseries")
parser.add_argument('--output-file', required=True,
help="Filename to output the fits file to.")
wavebank.add_approximant_arg(parser)
args, unknown = parser.parse_known_args()

# Default logging is set higher than normal for this job
Expand All @@ -57,12 +61,36 @@ bayestar_exe = args.bayestar_executable or 'bayestar-localize-coincs'

tmpdir = tempfile.mkdtemp()

# Work out which approximant is being used
# Load the file
xmldoc = ligolw_utils.load_filename(
args.event_xml,
contenthandler=LIGOLWContentHandler
)

# Grab the single inspiral table(s) which contain the template information
sngl_inspiral_table = lsctables.SnglInspiralTable.get_table(xmldoc)

# turn this into a waveform array
row = WaveformArray.from_ligolw_table(
sngl_inspiral_table,
)

# Work out which waveform is used based on the template information
# Note that as there are multiple single inspiral tables (one per ifo)
# with the same information, we use [0] here
waveform = wavebank.parse_approximant_arg(args.approximant, row)[0]

# BAYESTAR uses TaylorF2 instead of SPAtmplt
if waveform == 'SPAtmplt':
waveform = 'TaylorF2'

# Set up the command to pass to bayestar.
# The XML file path being passed twice is a legacy requirement, not a mistake.
cmd = [bayestar_exe,
args.event_xml,
args.event_xml,
'--waveform', args.waveform,
'--waveform', waveform,
'--f-low', str(args.low_frequency_cutoff),
'-o', tmpdir]

Expand Down
2 changes: 1 addition & 1 deletion bin/all_sky_search/pycbc_upload_single_event_to_gracedb
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ if args.production_server:
else:
gracedb = GraceDb(service_url='https://gracedb-playground.ligo.org/api/')

labels = [l.upper() for l in args.labels]
labels = [l.upper() for l in (args.labels or [])]
allowed_labels = gracedb.allowed_labels

if set(labels) - set(allowed_labels):
Expand Down
2 changes: 1 addition & 1 deletion pycbc/psd/variation.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ def calc_filt_psd_variation(strain, segment, short_segment, psd_long_segment,
fweight = norm * fweight
fwhiten = numpy.sqrt(2. / srate) / numpy.sqrt(plong)
fwhiten[0] = 0.
full_filt = sig.hann(int(psd_duration * srate)) * numpy.roll(
full_filt = sig.windows.hann(int(psd_duration * srate)) * numpy.roll(
irfft(fwhiten * fweight), int(psd_duration / 2) * srate)
# Convolve the filter with long segment of data
wstrain = sig.fftconvolve(astrain, full_filt, mode='same')
Expand Down
3 changes: 2 additions & 1 deletion pycbc/workflow/minifollowups.py
Original file line number Diff line number Diff line change
Expand Up @@ -1104,11 +1104,12 @@ def make_upload_files(workflow, psd_files, snr_timeseries, xml_all,
'--output-file',
)

# This will be called if the approximant is within the bank
if approximant == b'SPAtmplt':
# Bayestar doesn't use the SPAtmplt approximant
approximant = b'TaylorF2'
if approximant is not None:
bayestar_node.add_opt('--waveform', approximant.decode())
bayestar_node.add_opt('--approximant', approximant.decode())

workflow += bayestar_node

Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ def __getattr__(self, attr):
vinfo = _version_helper.generate_git_version_info()
except:
vinfo = vdummy()
vinfo.version = '2.3.6'
vinfo.version = '2.3.7'
vinfo.release = 'True'

version_script = f"""# coding: utf-8
Expand Down
Loading