time_slide_id must be non-empty
Even though GraceDB does not use or save the time_slide_id column, it must be non-empty. This is due to bugs in glue.ligolw
that are fixed in ligo.lw
. Migrating from glue.ligolw
to ligo.lw
would fix this.
Here's an example showing that the time_slide_id
column may be empty with ligo.lw
, but may not be empty for glue.ligolw
.
# test.py
import ligo.lw.ligolw
import ligo.lw.lsctables
import ligo.lw.utils
import glue.ligolw.ligolw
import glue.ligolw.lsctables
import glue.ligolw.utils
for api in [glue.ligolw, ligo.lw]:
print('testing API:', api)
xmldoc = api.ligolw.Document()
xmldoc.appendChild(api.ligolw.LIGO_LW())
coinc_table = api.lsctables.New(api.lsctables.CoincTable)
row = coinc_table.RowType()
for colname in coinc_table.validcolumns:
setattr(row, colname, None)
coinc_table.append(row)
xmldoc.childNodes[0].appendChild(coinc_table)
api.utils.write_filename(xmldoc, 'test.xml')
$ python test.py
testing API: <module 'glue.ligolw' from '/usr/lib/python3.8/site-packages/glue/ligolw/__init__.py'>
testing API: <module 'ligo.lw' from '/usr/lib/python3.8/site-packages/ligo/lw/__init__.py'>
Traceback (most recent call last):
File "test.py", line 19, in <module>
api.utils.write_filename(xmldoc, 'test.xml')
File "/usr/lib/python3.8/site-packages/ligo/lw/utils/__init__.py", line 526, in write_filename
write_fileobj(xmldoc, fileobj, gz = gz, **kwargs)
File "/usr/lib/python3.8/site-packages/ligo/lw/utils/__init__.py", line 445, in write_fileobj
xmldoc.write(fileobj, **kwargs)
File "/usr/lib/python3.8/site-packages/ligo/lw/ligolw.py", line 798, in write
c.write(fileobj)
File "/usr/lib/python3.8/site-packages/ligo/lw/ligolw.py", line 389, in write
c.write(fileobj, indent + Indent)
File "/usr/lib/python3.8/site-packages/ligo/lw/ligolw.py", line 389, in write
c.write(fileobj, indent + Indent)
File "/usr/lib/python3.8/site-packages/ligo/lw/table.py", line 433, in write
line = next(rowdumper)
AttributeError: coinc_def_id