예제 #1
0
def find_version_xml(segfile,seg,verbose):
  """
  Find out the version of the flag for the given seg.
  """
  from glue.ligolw import ligolw
  from glue.ligolw import table
  from glue.ligolw import utils

  def ContentHandler(xmldoc):
    return ligolw.PartialLIGOLWContentHandler(xmldoc, lambda name, attrs:\
               (name == ligolw.Table.tagName) and\
               (table.StripTableName(attrs["Name"]) in ["segment_definer","segment_summary"]))
  try:
    table.use_in(ligolw.PartialLIGOLWContentHandler)
  except AttributeError:
    # old glue did not allow .use_in().
    # FIXME:  remove when we can require the latest version of glue
    pass

  xmldoc = utils.load_url(segfile, verbose = verbose,gz = segfile.endswith(".gz"), contenthandler = ContentHandler)
  for n, table_elem in enumerate(xmldoc.getElements(lambda e:\
                                       (e.tagName == ligolw.Table.tagName))):
    if n == 0:
      definer = {}
      for row in table_elem:
        if row.name != "RESULT":
          definer[str(row.segment_def_id).split(":")[-1]] = row.version

    if n == 1:
      for row in table_elem:
        if seg[0] >= row.start_time and seg[1] <= row.end_time:
          if str(row.segment_def_id).split(":")[-1] in definer.keys():
            xmldoc.unlink()
            return definer[str(row.segment_def_id).split(":")[-1]]
예제 #2
0
def read_segfile_xml(segfile,verbose):
  """
  Read segment file in ligolw xml type and return in glue.segments.segmentlist
  format.
  """
  from glue.ligolw import ligolw
  from glue.ligolw import table
  from glue.ligolw import utils

  def ContentHandler(xmldoc):
    return ligolw.PartialLIGOLWContentHandler(xmldoc, lambda name, attrs:\
               (name == ligolw.Table.tagName) and\
               (table.StripTableName(attrs["Name"]) in ["segment"]))
  try:
    table.use_in(ligolw.PartialLIGOLWContentHandler)
  except AttributeError:
    # old glue did not allow .use_in().
    # FIXME:  remove when we can require the latest version of glue
    pass

  xmldoc = utils.load_url(segfile, verbose = verbose,gz = segfile.endswith(".gz"), contenthandler = ContentHandler)
  seg_list = segmentlist()
  for table_elem in xmldoc.getElements(lambda e:\
                                       (e.tagName == ligolw.Table.tagName)):
    for row in table_elem:
      seg_list.append(segment(row.start_time, row.end_time))
  xmldoc.unlink()
  return seg_list
예제 #3
0
def find_version_xml(segfile,seg,verbose):
  """
  Find out the version of the flag for the given seg.
  """
  from glue.ligolw import ligolw
  from glue.ligolw import table
  from glue.ligolw import utils

  def ContentHandler(xmldoc):
    return ligolw.PartialLIGOLWContentHandler(xmldoc, lambda name, attrs:\
               (name == ligolw.Table.tagName) and\
               (table.Table.TableName(attrs["Name"]) in ["segment_definer","segment_summary"]))
  try:
    table.use_in(ligolw.PartialLIGOLWContentHandler)
  except AttributeError:
    # old glue did not allow .use_in().
    # FIXME:  remove when we can require the latest version of glue
    pass

  xmldoc = utils.load_url(segfile, verbose = verbose,gz = segfile.endswith(".gz"), contenthandler = ContentHandler)
  for n, table_elem in enumerate(xmldoc.getElements(lambda e:\
                                       (e.tagName == ligolw.Table.tagName))):
    if n == 0:
      definer = {}
      for row in table_elem:
        if row.name != "RESULT":
          definer[str(row.segment_def_id).split(":")[-1]] = row.version

    if n == 1:
      for row in table_elem:
        if seg[0] >= row.start_time and seg[1] <= row.end_time:
          if str(row.segment_def_id).split(":")[-1] in definer.keys():
            xmldoc.unlink()
            return definer[str(row.segment_def_id).split(":")[-1]]
예제 #4
0
def read_segfile_xml(segfile,verbose):
  """
  Read segment file in ligolw xml type and return in glue.segments.segmentlist
  format.
  """
  from glue.ligolw import ligolw
  from glue.ligolw import table
  from glue.ligolw import utils

  def ContentHandler(xmldoc):
    return ligolw.PartialLIGOLWContentHandler(xmldoc, lambda name, attrs:\
               (name == ligolw.Table.tagName) and\
               (table.Table.TableName(attrs["Name"]) in ["segment"]))
  try:
    table.use_in(ligolw.PartialLIGOLWContentHandler)
  except AttributeError:
    # old glue did not allow .use_in().
    # FIXME:  remove when we can require the latest version of glue
    pass

  xmldoc = utils.load_url(segfile, verbose = verbose,gz = segfile.endswith(".gz"), contenthandler = ContentHandler)
  seg_list = segmentlist()
  for table_elem in xmldoc.getElements(lambda e:\
                                       (e.tagName == ligolw.Table.tagName)):
    for row in table_elem:
      seg_list.append(segment(row.start_time, row.end_time))
  xmldoc.unlink()
  return seg_list
예제 #5
0
def use_in(ContentHandler):
    """
    Modify ContentHandler, a sub-class of
    glue.ligolw.LIGOLWContentHandler, to cause it to use the  
    tables from this module as well as from lsctable.py
    when parsing XML documents.

    Example:

    >>> from glue.ligolw import ligolw
    >>> def MyContentHandler(ligolw.LIGOLWContentHandler):
    ...	pass
    ...
    >>> from laldetchar.idq import idq_tables
    >>> idq_tables.use_in(MyContentHandler)
    """
    ContentHandler = table.use_in(ContentHandler)

    def startTable(self,
                   parent,
                   attrs,
                   __orig_startTable=ContentHandler.startTable):
        name = table.StripTableName(attrs[u"Name"])
        if name in TableByName:
            return TableByName[name](attrs)
        return __orig_startTable(self, parent, attrs)

    ContentHandler.startTable = startTable

    return ContentHandler
예제 #6
0
def use_in(ContentHandler):
    """
    Modify ContentHandler, a sub-class of
    glue.ligolw.LIGOLWContentHandler, to cause it to use the  
    tables from this module as well as from lsctable.py
    when parsing XML documents.

    Example:

    >>> from glue.ligolw import ligolw
    >>> def MyContentHandler(ligolw.LIGOLWContentHandler):
    ...	pass
    ...
    >>> from laldetchar.idq import idq_tables
    >>> idq_tables.use_in(MyContentHandler)
    """
    ContentHandler = table.use_in(ContentHandler)

    def startTable(self, parent, attrs, __orig_startTable = ContentHandler.startTable):
        name = attrs[u"Name"]
        if name in TableByName:
            return TableByName[name](attrs)
        return __orig_startTable(self, parent, attrs)

    ContentHandler.startTable = startTable

    return ContentHandler
예제 #7
0
    return False


#}}}

#####################################################
########## Obtain & Save new sample points ##########
#####################################################

######## Reading old points file ############
old_points_name = options.old_bank
if not os.path.exists(old_points_name):
    old_points_table = []
else:
    indoc = ligolw_utils.load_filename(old_points_name,
                                       contenthandler=table.use_in(
                                           ligolw.LIGOLWContentHandler),
                                       verbose=options.verbose)
    try:
        old_points_table = lsctables.SimInspiralTable.get_table(indoc)
    except:
        raise IOError("Please provide the old bank as a SimInspiralTable")

######## Creating the new points file ############
#{{{
if options.iid is not None:
    iid = options.iid
    new_file_name = options.output_prefix + "%06d.xml" % iid
else:
    idx = 0
    name1 = options.output_prefix + "%06d.xml" % idx
    idx += 1