gwastro / pycbc

Core package to analyze gravitational-wave data, find signals, and study their parameters. This package was used in the first direct detection of gravitational waves (GW150914), and is used in the ongoing analysis of LIGO/Virgo data.
http://pycbc.org
GNU General Public License v3.0
315 stars 351 forks source link

"Unknown tapering method" Error #1785

Closed tyler-knowles closed 7 years ago

tyler-knowles commented 7 years ago

I recently downloaded PyCBC 1.7.2 and have attempted to run faithfulness tests with the latest master branch of LALSuite. I had no trouble in the past with earlier versions of PyCBC and LALSuite, but now all runs terminate with the error message

2017-07-12 10:16:44,047 Error: <type 'exceptions.ValueError'>, Unknown tapering method NE, valid methods are TAPER_END, startend, TAPER_STARTEND, TAPER_NONE, start, TAPER_START, end

In the past I didn't set a taper method in my .ini file, so I attempted to do so. It appears that the first two letters of the tapering method are being cut off somewhere, as setting the taper method in my .ini file to "taper-injection=none" gives the "unknown method" appearing in the error message to "NE". Similarly "taper-injection=start" gives "ART", "taper-injection=startend" gives "ARTEND", and "taper-injection=end" gives "ND".

In an effort to fool PyCBC into doing the run anyway, I tried setting "taper-injection=XXstart" but that threw an earlier error check that indeed "XXstart" is not a recognized taper method.

My precfaithfulness.txt

faithfulness.ini file is attached (as .txt since GitHub wouldn't let me attach an .ini file).

spxiwh commented 7 years ago

TL;DR: If you don't want tapering remove taper-injection=none from the [inspinj] section. If you want tapering add the waveform1-taper-template and waveform2-taper-template options directly to the faithsim.

Hi @tyler-knowles, I'd need to see the run directory to diagnose this further. I suspect an issue in lalapps_inspinj.

However, I would recommend doing this in a different way. Currently you have:

taper-injection = none

in lalapps_inspinj. This doesn't actually seem to be a supported option. From inspinj's help it says:

Tapering the injection waveform:
  [--taper-injection] OPT  Taper the inspiral template using option OPT
                            (start|end|startend) 

so I think not giving this option at all is equivalent to not having a taper.

Nevertheless, I don't think this option should be provided in the XML file. You can add under:

[faithsim-SEOBNRv3_vs_SEOBNRv3pert_test]

The following:

waveform2-taper-template=start
waveform1-taper-template=start

To taper both waveforms at the start ... Again if you don't give this option at all, no tapering is performed. This let's you vary the tapering that is used for both waveforms (e.g. if comparing frequency to time domain tapering a FD waveform doesn't make sense).

Options here are also:

  --waveform2-taper-template {start,end,startend}
                        For time-domain approximants, taper the start and/or
                        end of the waveform before FFTing. This can also be
                        provided in the sim_inspiral table. Providing this
                        option will override any entry in that table.
duncan-brown commented 7 years ago

@ahnitz @spxiwh I'm removing the v1.7.5 tag from this, is it seems to be a problem with running PyCBC against lalsuite master, and PyCBC v1.7.4 is only guaranteed to work with lalsuite with the hash 539c8700af92eb6dd00e0e91b9dbaf5bae51f004. This should be fixed, but we need a v1.7.5 release to fix the resolve_url() issue.

tyler-knowles commented 7 years ago

Greetings Ian,

Thanks for this information, and I apologize for taking so long to respond! I should probably have been a bit more clear: in the past I did not have any taper option lines in my .ini file (neither taper-injection nor waveformX-taper-template), and the error message I reported appeared when using the PyCBC 1.7.2 and the latest LALSuite master with that configuration. Adding the taper-injection line, as you see in the .ini file I included, was an attempt to fix the issue (and did not, as described). I tried your suggestion of adding

waveform2-taper-template=start waveform1-taper-template=start

under [faithsim-SEOBNRv3_vs_SEOBNRv3pert_test], and the faithfulness tests do run to completion. My preference would be to not have tapering at all (to keep my new tests consistent with old), but removing the temper-template option of course produces the error originally reported. As expected based on the taper-template options you listed, when I tried adding

waveform2-taper-template=none waveform1-taper-template=none

I got an error that an invalid option has been specified. It seems, though, that my faithfulness test results are not greatly affected by having the taper-template=start option set; thus I'm happy with this solution for now.

The original error message can be reproduced in the following directory on Nemo: /home/tyler.knowles/faithfulness_test. There's a copy of PyCBC there, the .ini file, and the output from submitting a short job in faithfulness_output.

Thanks!

K

On Thu, Jul 13, 2017 at 4:17 AM, Ian Harry notifications@github.com wrote:

TL;DR: If you don't want tapering remove taper-injection=none from the [inspinj] section. If you want tapering add the waveform1-taper-template and waveform2-taper-template options directly to the faithsim.

Hi @tyler-knowles https://github.com/tyler-knowles, I'd need to see the run directory to diagnose this further. I suspect an issue in lalapps_inspinj.

However, I would recommend doing this in a different way. Currently you have:

taper-injection = none

in lalapps_inspinj. This doesn't actually seem to be a supported option. From inspinj's help it says:

Tapering the injection waveform: [--taper-injection] OPT Taper the inspiral template using option OPT (start|end|startend)

so I think not giving this option at all is equivalent to not having a taper.

Nevertheless, I don't think this option should be provided in the XML file. You can add under:

[faithsim-SEOBNRv3_vs_SEOBNRv3pert_test]

The following:

waveform2-taper-template=start waveform1-taper-template=start

To taper both waveforms at the start ... Again if you don't give this option at all, no tapering is performed. This let's you vary the tapering that is used for both waveforms (e.g. if comparing frequency to time domain tapering a FD waveform doesn't make sense).

Options here are also:

--waveform2-taper-template {start,end,startend} For time-domain approximants, taper the start and/or end of the waveform before FFTing. This can also be provided in the sim_inspiral table. Providing this option will override any entry in that table.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ligo-cbc/pycbc/issues/1785#issuecomment-315006470, or mute the thread https://github.com/notifications/unsubscribe-auth/Acug_zeERqHxdbv8hqum5xw8qp5yrI5eks5sNdKcgaJpZM4OV1_s .

spxiwh commented 7 years ago

Hi Tyler,

Okay, thanks for the details. Just a short note that if you had done:

waveform2-taper-template=NONE
waveform1-taper-template=NONE

in the faithsim section it would probably have done what you wanted (but that's a hidden feature, and shouldn't be relied upon!)

The problem is actually within lalapps_inspinj, which is the not-part-of-PyCBC code used to create the set of simulations to run the faithsim on. This file in your example is here:

/home/tyler.knowles/faithfulness_test/faithfulness_output/inj.xml

If you read this with:

lwtprint inj.xml -t sim_inspiral -c taper

you can see that all entries in the taper column are garbage, and so the code fails. If you look at this file in a text editor you can see that it contains the full command line needed to generate this:

lalapps_inspinj --min-mass1 1.0 --max-mass1 100. --min-spin1 0. --max-spin1 0.99 --min-mass2 1. --max-mass2 100. --min-spin2 0 --max-spin2 0.99 --max-mtotal 100. --min-mtotal 4. --f-lower 20. --enable-spin --waveform SpinTaylorT4 --disable-milkyway --i-distr uniform --l-distr random --min-distance 1000. --d-distr uniform --max-distance 1000. --gps-start-time 1000000000 --gps-end-time 1000000100 --time-interval 0. --time-step 1.0 --seed 123434 --m-distr componentMass --output inj.xml

So I sourced your environment:

source ~tyler.knowles/faithfulness_test/pycbc-dev/bin/activate

and ran that example, but the resulting file does not contain garbage entries in the taper column. I also ran the faithsim generation script with your ini file:

/home/spxiwh/test

and also in here the resulting inj.xml file contains correct entries.

So I cannot reproduce this issue. However, I cannot see any install of lalapps (including lalapps_inspinj) in your environment. I found that you have installed lal in a directory under this virtualenv, but I do not see any of the actual lalsuite executables. So it's possible you have used another [broken?] version of lalapps_inspinj when running this??

Anyway, I don't think this is a PyCBC issue. So I think think this issue should be closed, but please feel free to continue discussion here if you figure out what lalapps_inspinj was actually run and if this issue can be reproduced.

tyler-knowles commented 7 years ago

Hi Ian,

Since it seems this isn't actually a PyCBC issue, feel free to close the issue (or do I have to do that?).

It turns out that when I recently rebuilt the script I was using to install PyCBC, I was configuring lalsuite with lalapps disabled. Enabling lalapps seems to have mitigated the issue, and I noticed in an older script that I hadn't disabled lalapps in the past.

Thanks for your work on this; should be all cleared now!

K

On Tue, Jul 18, 2017 at 2:36 PM, Ian Harry notifications@github.com wrote:

Hi Tyler,

Okay, thanks for the details. Just a short note that if you had done:

waveform2-taper-template=NONE waveform1-taper-template=NONE

in the faithsim section it would probably have done what you wanted (but that's a hidden feature, and shouldn't be relied upon!)

The problem is actually within lalapps_inspinj, which is the not-part-of-PyCBC code used to create the set of simulations to run the faithsim on. This file in your example is here:

/home/tyler.knowles/faithfulness_test/faithfulness_output/inj.xml

If you read this with:

lwtprint inj.xml -t sim_inspiral -c taper

you can see that all entries in the taper column are garbage, and so the code fails. If you look at this file in a text editor you can see that it contains the full command line needed to generate this:

lalapps_inspinj --min-mass1 1.0 --max-mass1 100. --min-spin1 0. --max-spin1 0.99 --min-mass2 1. --max-mass2 100. --min-spin2 0 --max-spin2 0.99 --max-mtotal 100. --min-mtotal 4. --f-lower 20. --enable-spin --waveform SpinTaylorT4 --disable-milkyway --i-distr uniform --l-distr random --min-distance 1000. --d-distr uniform --max-distance 1000. --gps-start-time 1000000000 --gps-end-time 1000000100 --time-interval 0. --time-step 1.0 --seed 123434 --m-distr componentMass --output inj.xml

So I sourced your environment:

source ~tyler.knowles/faithfulness_test/pycbc-dev/bin/activate

and ran that example, but the resulting file does not contain garbage entries in the taper column. I also ran the faithsim generation script with your ini file:

/home/spxiwh/test

and also in here the resulting inj.xml file contains correct entries.

So I cannot reproduce this issue. However, I cannot see any install of lalapps (including lalapps_inspinj) in your environment. I found that you have installed lal in a directory under this virtualenv, but I do not see any of the actual lalsuite executables. So it's possible you have used another [broken?] version of lalapps_inspinj when running this??

Anyway, I don't think this is a PyCBC issue. So I think think this issue should be closed, but please feel free to continue discussion here if you figure out what lalapps_inspinj was actually run and if this issue can be reproduced.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ligo-cbc/pycbc/issues/1785#issuecomment-316157866, or mute the thread https://github.com/notifications/unsubscribe-auth/Acug_3MtvwMDhD2y1_FVrf8WxJyBef0Nks5sPPs5gaJpZM4OV1_s .

spxiwh commented 7 years ago

Okay, thanks. Closing this now.