[89200] trunk/dports/science

ram at macports.org ram at macports.org
Fri Jan 20 19:22:04 PST 2012


Revision: 89200
          http://trac.macports.org/changeset/89200
Author:   ram at macports.org
Date:     2012-01-20 19:22:04 -0800 (Fri, 20 Jan 2012)
Log Message:
-----------
science/ligo-gracedb: new port

Added Paths:
-----------
    trunk/dports/science/ligo-gracedb/
    trunk/dports/science/ligo-gracedb/Portfile
    trunk/dports/science/ligo-gracedb/files/
    trunk/dports/science/ligo-gracedb/files/patch-disable_server.diff

Added: trunk/dports/science/ligo-gracedb/Portfile
===================================================================
--- trunk/dports/science/ligo-gracedb/Portfile	                        (rev 0)
+++ trunk/dports/science/ligo-gracedb/Portfile	2012-01-21 03:22:04 UTC (rev 89200)
@@ -0,0 +1,40 @@
+# $Id$
+
+PortSystem    1.0
+PortGroup     python27 1.0
+
+name          ligo-gracedb
+version       1.0
+categories    science
+platforms     darwin
+maintainers   ram
+license       GPL
+
+description   Gravitational-wave Candidate Event Database
+long_description \
+  A prototype system to organize candidate events from \
+  gravitational-wave searches and to provide an environment to record \
+  information about follow-ups. This package provides a simple client \
+  tool to submit candidate events to the database.
+
+homepage      https://www.lsc-group.phys.uwm.edu/daswg/projects/gracedb.html
+master_sites  http://www.lsc-group.phys.uwm.edu/daswg/download/software/source/
+
+checksums     md5 609ccccf5521405ae8cc3926f6b944af \
+              sha1 d5a80129a49aef9983537657da6930863365e86a \
+              rmd160 07a7d3d18905260d97970831ffb250586d9e750e
+
+patchfiles    patch-disable_server.diff
+
+depends_lib-append port:ligo-common \
+                   port:py27-m2crypto
+
+python.link_binaries no
+
+post-destroot {
+  foreach x [glob -type {x} ${destroot}${python.prefix}/bin/*] { system "ln $x ${destroot}${prefix}/bin" }
+}
+
+livecheck.type   regex
+livecheck.url    ${master_sites}
+livecheck.regex  {ligo-gracedb-(\d+(?:\.\d+)*).tar.gz}


Property changes on: trunk/dports/science/ligo-gracedb/Portfile
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Added: trunk/dports/science/ligo-gracedb/files/patch-disable_server.diff
===================================================================
--- trunk/dports/science/ligo-gracedb/files/patch-disable_server.diff	                        (rev 0)
+++ trunk/dports/science/ligo-gracedb/files/patch-disable_server.diff	2012-01-21 03:22:04 UTC (rev 89200)
@@ -0,0 +1,450 @@
+--- ligo/gracedb/__init__.py
++++ gracedb/__init__.py
+@@ -16,8 +16,6 @@
+ # with this program; if not, write to the Free Software Foundation, Inc.,
+ # 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ 
+-__all__ = ["utils"]
+-
+ 
+ import httplib, mimetypes, urllib
+ import socket
+--- ligo/gracedb/utils.py
++++ /dev/null
+@@ -1,436 +0,0 @@
+-#!/usr/bin/python
+-
+-from math import log
+-from time import gmtime, strftime
+-
+-from pylal import Fr
+-from glue.lal import LIGOTimeGPS
+-from glue.ligolw import ligolw
+-from glue.ligolw import table
+-from glue.ligolw import lsctables
+-
+-##############################################################################
+-#
+-#          useful variables
+-#
+-##############################################################################
+-
+-#Need these for each search: inspiral, burst, etc.
+-InspiralCoincDef = lsctables.CoincDef(search = u"inspiral", \
+-                                      search_coinc_type = 0, \
+-                                      description = \
+-                                      u"sngl_inspiral<-->sngl_inspiral coincidences")
+-#these should work for both Omega and CWB
+-BurstCoincDef = lsctables.CoincDef(search = u"burst", \
+-                                      search_coinc_type = 0, \
+-                                      description = \
+-                                      u"coherent burst coincidences")
+-
+-#list of detectors participating in the coinc
+-#MBTA only sends triples to gracedb at the time being so this list is
+-#simply for convenience.  burst and future inspiral searches should
+-#construct this list on the fly
+-H1L1V1_detlist = ['H1', 'L1', 'V1']
+-H1L1_detlist = ['H1', 'L1']
+-H1V1_detlist = ['H1', 'V1']
+-L1V1_detlist = ['L1', 'V1']
+-H1_detlist = ['H1']
+-L1_detlist = ['L1']
+-V1_detlist = ['V1']
+-
+-#this is the subset of SnglInspiralTable.validcolumn.keys() that
+-#are assigned from MBTA coinc triggers
+-MBTA_set_keys = ['ifo', 'search', 'end_time', 'end_time_ns', 'mass1', 'mass2',\
+-               'mchirp', 'mtotal', 'eta', 'snr', 'eff_distance', 'event_id',\
+-               'process_id', 'channel']
+-#Omega 
+-Omega_set_keys = ['process_id', 'ifos', 'start_time', 'start_time_ns',\
+-                 'duration', 'confidence', 'coinc_event_id']
+-#CWB
+-CWB_set_keys = ['process_id', 'ifos', 'start_time', 'start_time_ns',\
+-                'coinc_event_id']
+-
+-#this dictionary is the simplest way to assign event_id's
+-#collisions are are taken care of in the process of conversion to sqlite
+-insp_event_id_dict = {'H1': 'sngl_inspiral:event_id:0',\
+-                 'L1': 'sngl_inspiral:event_id:1',\
+-                 'V1': 'sngl_inspiral:event_id:2'}
+-#this one is designed for coherent searches, which don't have event_ids
+-coherent_event_id_dict = None
+-
+-#the names of the variables we're going to get from omega
+-omega_vars = ['time', 'frequency', 'duration', 'bandwidth', 'modeTheta',\
+-              'modePhi', 'probSignal', 'probGlitch', 'logSignal','logGlitch',\
+-              'network', 'URL_web', 'URL_file']
+-              
+-##############################################################################
+-#
+-#          convenience functions
+-#
+-##############################################################################
+-
+-def compute_mchirp_eta(m1,m2):
+-  """
+-  compute and return mchirp and eta for a given pair of masses 
+-  """
+-  
+-  mtot = m1 + m2
+-  mu = m1*m2/mtot
+-  eta = mu/mtot
+-  mchirp = pow(eta,3.0/5.0)*mtot
+-  
+-  return float(mchirp), float(eta)
+-
+-def write_output_files(root_dir, xmldoc, log_content, \
+-                       xml_fname = 'coinc.xml', log_fname = 'event.log'):
+-  """
+-  write the xml-format coinc tables and log file
+-  """
+-
+-  f = open(root_dir+'/'+xml_fname,'w')
+-  xmldoc.write(f)
+-  f.close()
+-
+-  f = open(root_dir+'/'+log_fname,'w')
+-  f.write(log_content)
+-  f.close()
+-
+-def get_ifos_for_cwb(cwb_ifos):
+-  """
+-  get human-readable things from CWB detector labels
+-  """
+-  
+-  ifos = []
+-  for i in cwb_ifos:
+-    if i == '1':  ifos.append('L1')
+-    if i == '2' : ifos.append('H1')
+-    if i == '3' : ifos.append('H2')
+-    if i == '4' : ifos.append('G1')
+-    if i == '5' : ifos.append('T1')
+-    if i == '6' : ifos.append('V1')
+-    if i == '7' : ifos.append('A1')
+-
+-  return ifos
+-  
+-##############################################################################
+-#
+-#          table populators
+-#
+-##############################################################################
+-
+-def populate_inspiral_tables(MBTA_frame, set_keys = MBTA_set_keys, \
+-                             event_id_dict = insp_event_id_dict):
+-  """
+-  create xml file and populate the SnglInspiral and CoincInspiral tables from a
+-  coinc .gwf file from MBTA
+-  xmldoc: xml file to append the tables to
+-  MBTA_frame: frame file to get info about triggers from
+-  set_keys: columns in the SnglInspiral Table to set
+-  process_id: process_id
+-  event_id_dict: {ifo:event_id} dictionary to assign event_id's
+-  coinc_event_id: coinc_event_id
+-  detectors: detectors participating in the coinc
+-
+-  returns xmldoc and contents of the comment field
+-  """
+-  #initialize xml document
+-  xmldoc = ligolw.Document()
+-  xmldoc.appendChild(ligolw.LIGO_LW())
+-  #dictionaries to store about individual triggers
+-  end_time = {}
+-  snr = {}
+-  mass1 = {}
+-  mass2 = {}
+-  Deff = {}
+-  mchirp = {}
+-  eta = {}
+-
+-  #extract the information from the frame file
+-  events = Fr.frgetevent(MBTA_frame)
+-  #get the ifos from the event name
+-  for event in events:
+-    if 'MbtaHLV' in event['name']:
+-      detectors = H1L1V1_detlist
+-    elif 'MbtaHL' in event['name']:
+-      detectors = H1L1_detlist
+-    elif 'MbtaHV' in event['name']:
+-      detectors = H1V1_detlist
+-    elif 'MbtaH' in event['name']:
+-      detectors = H1_detlist
+-    elif 'MbtaLV' in event['name']:
+-      detectors = L1V1_detlist
+-    elif 'MbtaL' in event['name']:
+-      detectors = L1_detlist
+-    elif 'MbtaV' in event['name']:
+-      detectors = V1_detlist
+-    else:
+-      raise ValueError, "Invalid FrEvent name"
+-
+-    log_data = event['comment'] + '\n'
+-    try:
+-      far = 1/(float(event['IFAR_year'])*365.0)
+-    except KeyError:
+-        far = None
+-    for ifo in detectors:
+-      end_time[ifo] = LIGOTimeGPS(event[ifo+':end_time'])
+-      snr[ifo] = float(event[ifo+':SNR'])
+-      mass1[ifo] = float(event[ifo+':mass1'])
+-      mass2[ifo] = float(event[ifo+':mass2'])
+-      mchirp[ifo], eta[ifo] = compute_mchirp_eta(mass1[ifo],mass2[ifo])
+-      Deff[ifo] = float(event[ifo+':eff_distance'])
+-
+-  #fill the SnglInspiralTable
+-  sin_table = lsctables.New(lsctables.SnglInspiralTable)
+-  xmldoc.childNodes[0].appendChild(sin_table)
+-  process_id = lsctables.ProcessTable.get_next_id()
+-  for ifo in detectors:
+-    row = sin_table.RowType()
+-    row.ifo = ifo
+-    row.search = 'MBTA'
+-    row.end_time = end_time[ifo].seconds
+-    row.end_time_ns = end_time[ifo].nanoseconds
+-    row.mass1 = mass1[ifo]
+-    row.mass2 = mass2[ifo]
+-    row.mchirp = mchirp[ifo]
+-    row.mtotal = mass1[ifo] + mass2[ifo]
+-    row.eta = eta[ifo]
+-    row.snr = snr[ifo]
+-    row.eff_distance = Deff[ifo]
+-    row.event_id = event_id_dict[ifo]
+-    row.process_id = process_id
+-    row.channel = ''
+-    #zero out the rest of the columns
+-    #should work in chi2 and chi2cut 
+-    for key in sin_table.validcolumns.keys():
+-      if key not in set_keys:
+-        setattr(row,key,None)
+-    sin_table.append(row)
+-
+-  #CoincInspiralTable
+-  #using the conventions found in:
+-  #https://www.lsc-group.phys.uwm.edu/ligovirgo/cbcnote/S6Plan/ 
+-  #090505160219S6PlanningNotebookCoinc_and_Experiment_Tables_ihope_implementation?
+-  #highlight=%28coinc%29|%28table%29
+-  
+-  temp_data_loc = None
+-
+-  if len(detectors) < 2:
+-    return xmldoc, log_data, temp_data_loc
+-    
+-  #coinc_event_id = coinc_event_id_base + str(UID)
+-
+-  #this next line is to guard against future violence to the table definitions
+-  cintcols = ['coinc_event_id','ifos','end_time','end_time_ns','mass','mchirp','snr','false_alarm_rate','combined_far']
+-  cin_table = lsctables.New(lsctables.CoincInspiralTable,columns=cintcols)
+-  xmldoc.childNodes[0].appendChild(cin_table)
+-  row = cin_table.RowType()
+-  row.set_ifos(detectors)
+-  cid = lsctables.CoincTable.get_next_id()
+-  row.coinc_event_id = cid
+-  row.end_time = end_time['H1'].seconds
+-  row.end_time_ns = end_time['H1'].nanoseconds
+-  row.mass = (sum(mass1.values()) + sum(mass2.values()))/3
+-  row.mchirp = sum(mchirp.values())/3
+-  #the snr here is really the snr NOT effective snr
+-  row.snr = pow(sum([x*x for x in snr.values()]),0.5)
+-  if far is not None:
+-      #far is triggers/day
+-      row.false_alarm_rate = float(far)
+-  else:
+-      row.false_alarm_rate = None
+-  row.combined_far = 0
+-  cin_table.append(row)
+-
+-
+-  xmldoc = populate_coinc_tables(xmldoc,cid,insp_event_id_dict,\
+-                                 InspiralCoincDef,detectors)
+-    
+-  return xmldoc, log_data, temp_data_loc
+-
+-def populate_omega_tables(datafile, set_keys = Omega_set_keys):
+-  """
+-  """
+-  #initialize xml document
+-  xmldoc = ligolw.Document()
+-  xmldoc.appendChild(ligolw.LIGO_LW())
+-  
+-  #extract the data from the intial Omega file
+-  f = open(datafile, 'r')
+-  omega_list = []
+-  for line in f.readlines():
+-    if not line.strip(): continue # ignore blank lines
+-    elif '#' in line.strip()[0]: continue # ignore comments
+-    elif '=' not in line: raise ValueError, "Improperly formatted line"
+-    else:
+-      omega_list.extend([dat.strip() for dat in line.split('=',1)])
+-  f.close()
+-  omega_data = dict(zip(omega_list[::2],omega_list[1::2]))  
+-  # basic error checking
+-# for key in omega_data:
+-#   if not (key in omega_vars):
+-#     raise ValueError, "Unknown variable"
+-    
+-  #create the content for the event.log file
+-  log_data = '\nLog File created '\
+-             +strftime("%a, %d %b %Y %H:%M:%S", gmtime())\
+-             +'\n'
+-
+-  for var in omega_vars:
+-    log_data += var + ': ' + omega_data[var] + '\n'
+-  
+-  #pull out the ifos
+-  detectors = [ifo for ifo in omega_data['network'].split(',')]
+-  
+-  #fill the MutliBurstTable
+-  mb_table = lsctables.New(lsctables.MultiBurstTable)
+-  xmldoc.childNodes[0].appendChild(mb_table)
+-  row = mb_table.RowType()
+-  row.process_id = lsctables.ProcessTable.get_next_id()
+-  row.set_ifos(detectors)
+-  st = LIGOTimeGPS(omega_data['time'])
+-  row.start_time = st.seconds
+-  row.start_time_ns = st.nanoseconds
+-  row.duration = None
+-  row.confidence = -log(float(omega_data['probGlitch']))
+-  cid = lsctables.CoincTable.get_next_id()
+-  row.coinc_event_id = cid
+-  for key in mb_table.validcolumns.keys():
+-      if key not in set_keys:
+-        setattr(row,key,None)
+-  mb_table.append(row)
+-
+-  xmldoc = populate_coinc_tables(xmldoc,cid, coherent_event_id_dict,\
+-                                     BurstCoincDef, detectors)
+-  
+-  return xmldoc, log_data, omega_data['URL_file']
+-
+-def populate_cwb_tables(datafile, set_keys=CWB_set_keys):
+-  """
+-  """
+-  #initialize xml document
+-  xmldoc = ligolw.Document()
+-  xmldoc.appendChild(ligolw.LIGO_LW())
+-
+-  #extract the data from the file
+-  f = open(datafile,'r')
+-  cwb_list = []
+-  for line in f.readlines():
+-    if not line.strip(): continue #ignore blanks
+-    elif '#' in line.strip()[0]: continue #skip comments
+-    elif 'H1:' in line.strip() or 'L1:' in line.strip() or 'V1:' in line.strip(): continue #skip DQ stuff
+-    elif ':' in line.strip(): cwb_list.extend([dat.strip() for dat in line.split(':',1)])
+-
+-  f.close()
+-  cwb_data = dict(zip(cwb_list[::2],cwb_list[1::2]))
+-  
+-  #create the content for the event.log file
+-  log_data = '\nLog File created '\
+-             +strftime("%a, %d %b %Y %H:%M:%S", gmtime())\
+-             +'\n'
+-  detectors = get_ifos_for_cwb(cwb_data['ifo'].split())
+-
+-  for var in cwb_data:
+-    log_data += var + ': ' + cwb_data[var] + '\n'
+-
+-  #fill the MutliBurstTable
+-  mb_table = lsctables.New(lsctables.MultiBurstTable)
+-  xmldoc.childNodes[0].appendChild(mb_table)
+-  row = mb_table.RowType()
+-  row.process_id = lsctables.ProcessTable.get_next_id()
+-  row.set_ifos(detectors)
+-  st = LIGOTimeGPS(cwb_data['start'][0])
+-  row.start_time = st.seconds
+-  row.start_time_ns = st.nanoseconds
+-  cid = lsctables.CoincTable.get_next_id()
+-  row.coinc_event_id = cid
+-  for key in mb_table.validcolumns.keys():
+-      if key not in set_keys:
+-        setattr(row,key,None)
+-  mb_table.append(row)
+-
+-  xmldoc = populate_coinc_tables(xmldoc,cid, coherent_event_id_dict,\
+-                                    BurstCoincDef, detectors)
+-  
+-  return xmldoc, log_data, None
+-  
+-      
+-    
+-def populate_coinc_tables(xmldoc, coinc_event_id, event_id_dict,\
+-                          CoincDef, detectors, \
+-                          time_slide_id = None, likelihood = None):
+-  """
+-  populate a set of coinc tables
+-  xmldoc:  xml file to append the tables to
+-  CoincDef: pre-initialized CoincDef table row
+-  detectors: detectors participating in the coinc
+-  """
+-  #make sure there's actually a coinc there to write
+-  if len(detectors) < 2:
+-    return xmldoc
+-  else:
+-    #CoincTable
+-    coinc_table = lsctables.New(lsctables.CoincTable)
+-    xmldoc.childNodes[0].appendChild(coinc_table)
+-    row = coinc_table.RowType()
+-    row.process_id = lsctables.ProcessTable.get_next_id()
+-    row.coinc_event_id =  coinc_event_id
+-    coinc_def_id = lsctables.CoincDefTable.get_next_id()
+-    row.coinc_def_id = coinc_def_id
+-    row.time_slide_id = time_slide_id
+-    row.set_instruments(detectors)
+-    if 'inspiral' in CoincDef.search:
+-      row.nevents = len(detectors)
+-    elif 'burst' in CoincDef.search:
+-      row.nevents = 1
+-    else:
+-      raise ValueError, "Unrecognize CoincDef.search"
+-    row.likelihood = likelihood
+-    coinc_table.append(row)
+-
+-    #CoincMapTable
+-    coinc_map_table = lsctables.New(lsctables.CoincMapTable)
+-    xmldoc.childNodes[0].appendChild(coinc_map_table)
+-    for ifo in detectors:
+-      row = coinc_map_table.RowType()
+-      row.coinc_event_id = coinc_event_id
+-      if 'inspiral' in CoincDef.search:
+-        row.table_name = lsctables.SnglInspiralTable.tableName.split(':')[0]
+-      elif 'burst' in CoincDef.search:
+-        row.table_name = lsctables.MultiBurstTable.tableName.split(':')[0]
+-      else:
+-        raise ValueError, "Unrecognize CoincDef.search"
+-      if event_id_dict:
+-        row.event_id = event_id_dict[ifo]
+-        coinc_map_table.append(row)
+-    if not event_id_dict:
+-      row.event_id = coinc_event_id
+-      coinc_map_table.append(row)
+-
+-    #CoincDefTable
+-    coinc_def_table = lsctables.New(lsctables.CoincDefTable)
+-    xmldoc.childNodes[0].appendChild(coinc_def_table)
+-    row = coinc_def_table.RowType()
+-    row.coinc_def_id = coinc_def_id
+-    row.search = CoincDef.search
+-    row.search_coinc_type = CoincDef.search_coinc_type
+-    row.description = CoincDef.description
+-    coinc_def_table.append(row)
+-    
+-    return xmldoc 
+-  
+-
+-##############################################################################
+-#
+-#          usage example
+-#
+-##############################################################################
+-
+-#here's how it works for inspirals
+-#populate the tables
+-#xmldoc, log_data, temp_data_loc = populate_inspiral_tables("MbtaFake-930909680-16.gwf")
+-#write the output
+-#write_output_files('.', xmldoc, log_data)
+-
+-#here's how it works for bursts
+-#xmldoc, log_data, temp_data_loc = populate_burst_tables("initial.data")
+-#write_output_files('.', final_xmldoc, log_data)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20120120/a46444bb/attachment-0001.html>


More information about the macports-changes mailing list