def test_ligolw():
    """Test reading events from LIGO-LW XML files."""
    source = events.open(os.path.join(DATA_PATH, '2016_subset.xml.gz'))
    assert len(source) == 250
    event = source[821759]
    assert len(event.singles) == 2
    assert event.singles[0].snr_series is event.singles[1].snr_series is None
    assert event.singles[0].detector == 'H1'
    assert event.singles[0].snr == 8.5362396
    assert event.singles[0].phase == -0.81192881
    assert (event.singles[0].time == event.singles[0].zerolag_time ==
            967328914.866107842)
    psd = event.singles[0].psd
    assert psd.f0 == 0.0
    assert psd.deltaF == 0.125
    assert event.singles[1].detector == 'L1'
    assert event.singles[1].snr == 10.36818
    assert event.singles[1].phase == 1.9740163
    assert (event.singles[1].time == event.singles[1].zerolag_time ==
            967328914.866513726)
    psd = event.singles[0].psd
    assert psd.f0 == 0.0
    assert psd.deltaF == 0.125
    assert event.template_args == {
        'mass1': 1.56687,
        'mass2': 1.474779,
        'spin1x': 0.0,
        'spin1y': 0.0,
        'spin1z': 0.0,
        'spin2x': 0.0,
        'spin2y': 0.0,
        'spin2z': 0.0}
Ejemplo n.º 2
0
import logging
logging.basicConfig(level=logging.INFO)
log = logging.getLogger('BAYESTAR')

# BAYESTAR imports.
from lalinference.io import fits, events
from lalinference.bayestar.sky_map import localize

# Other imports.
import os
from collections import OrderedDict
import sys

# Read coinc file.
log.info('%s:reading input files', ','.join(file.name for file in opts.input))
event_source = events.open(*opts.input, sample=opts.pycbc_sample)

command.mkpath(opts.output)

if opts.condor_submit:
    if opts.coinc_event_id:
        raise ValueError('must not set --coinc-event-id with --condor-submit')
    cmd = [
        'condor_submit', 'accounting_group=ligo.dev.o3.cbc.pe.bayestar',
        'on_exit_remove = (ExitBySignal == False) && (ExitCode == 0)',
        'on_exit_hold = (ExitBySignal == True) || (ExitCode != 0)',
        'on_exit_hold_reason = (ExitBySignal == True ? strcat("The job exited with signal ", ExitSignal) : strcat("The job exited with signal ", ExitCode))',
        'request_memory = 1000 MB', 'universe=vanilla', 'getenv=true',
        'executable=' + sys.executable, 'JobBatchName=BAYESTAR',
        'environment="OMP_NUM_THREADS=1"',
        'error=' + os.path.join(opts.output, '$(CoincEventId).err'), 'log=' +
def test_hdf(tmpdir):
    """Test reading events from HDF5 files."""

    # Create test input files
    ifos = ['L1', 'H1']
    filenames = []
    filename = str(tmpdir / 'coincs.hdf')
    filenames.append(filename)
    with h5py.File(filename, 'w') as coinc_file:
        coinc_file.attrs['timeslide_interval'] = np.e
        coinc_group = coinc_file.create_group('foreground')
        coinc_group['template_id'] = np.arange(5)
        coinc_group['timeslide_id'] = np.arange(0, 50, 10)

        filename = str(tmpdir / 'H1L1-BANK.hdf')
        filenames.append(filename)
        with h5py.File(filename, 'w') as bank_file:
            bank_file.attrs['parameters'] = []

        for i, ifo in enumerate(ifos):
            coinc_file.attrs['detector_{}'.format(i + 1)] = ifo
            coinc_group['trigger_id{}'.format(i + 1)] = np.arange(5)

            filename = str(tmpdir / (ifo + '_triggers.hdf'))
            filenames.append(filename)
            with h5py.File(filename, 'w') as trigger_file:
                trigger_group = trigger_file.create_group(ifo)
                trigger_group['snr'] = i + np.arange(5) * np.pi
                trigger_group['coa_phase'] = i + np.arange(5) * np.pi**2
                trigger_group['end_time'] = i + np.arange(5) * np.pi**3

            filename = str(tmpdir / (ifo + '_psds.hdf'))
            filenames.append(filename)
            with h5py.File(filename, 'w') as psd_file:
                psd_file.attrs['low_frequency_cutoff'] = 10.0
                psd_file.attrs['dynamic_range_factor'] = np.e
                psd_group = psd_file.create_group(ifo)
                psd_group['start_time'] = (np.arange(5) - 0.5) * np.pi**3
                psd_group['end_time'] = (np.arange(5) + 0.5) * np.pi**3
                psd_group = psd_group.create_group('psds')
                for j in range(5):
                    psd_group[str(j)] = np.concatenate(
                        (np.zeros(5), np.arange(5)**2)) * np.e**2
                    psd_group[str(j)].attrs['delta_f'] = 2.0

    # Test reading from filenames
    source = events.open(*filenames)
    assert len(source) == 5
    for coinc_id, coinc in source.items():
        for i, (ifo, single) in enumerate(zip(ifos, coinc.singles)):
            assert single.detector == ifo
            assert single.snr == i + coinc_id * np.pi
            assert single.phase == i + coinc_id * np.pi**2
            assert single.time == (
                single.zerolag_time +
                coinc_id * 10 * np.e * (-0.5 if i == 0 else +0.5))
            assert single.zerolag_time == i + coinc_id * np.pi**3
            assert single.psd.f0 == 10.0
            assert single.psd.deltaF == 2.0
            assert np.all(single.psd.data.data == np.arange(5)**2)
        assert coinc.template_args == {}

    # Test reading from h5py.File instances
    events.open(*(h5py.File(filename, 'r') for filename in filenames))

    # Test reading from file-like objects
    events.open(*(open(filename, 'rb') for filename in filenames))
from lalinference.io import fits, events
from lalinference.bayestar.sky_map import localize

# Other imports.
import os
from collections import OrderedDict
import sys
import six

# Squelch annoying and uniformative LAL log messages.
import lal
lal.ClobberDebugLevel(lal.LALNDEBUG)

# Read coinc file.
log.info('%s:reading input files', ','.join(file.name for file in opts.input))
event_source = events.open(*opts.input, sample=opts.pycbc_sample)

command.mkpath(opts.output)

if opts.condor_submit:
    if opts.coinc_event_id:
        raise ValueError('must not set --coinc-event-id with --condor-submit')
    cmd = ['condor_submit', 'accounting_group=ligo.dev.o3.cbc.pe.bayestar',
           'on_exit_remove = (ExitBySignal == False) && (ExitCode == 0)',
           'on_exit_hold = (ExitBySignal == True) || (ExitCode != 0)',
           'on_exit_hold_reason = (ExitBySignal == True ? strcat("The job exited with signal ", ExitSignal) : strcat("The job exited with signal ", ExitCode))',
           'request_memory = 1000 MB',
           'universe=vanilla', 'getenv=true', 'executable=' + sys.executable,
           'JobBatchName=BAYESTAR', 'environment="OMP_NUM_THREADS=1"',
           'error=' + os.path.join(opts.output, '$(CoincEventId).err'),
           'log=' + os.path.join(opts.output, '$(CoincEventId).log'),