Skip to content

Commit

Permalink
Merge pull request #4 from lsst/feature/SIMS-1131-create-benchmarks
Browse files Browse the repository at this point in the history
Feature/sims 1131 create benchmarks
  • Loading branch information
rhiannonlynne committed May 7, 2015
2 parents 458961e + 2ed5bb6 commit 6ebeb67
Show file tree
Hide file tree
Showing 71 changed files with 2,775 additions and 5,732 deletions.
109 changes: 109 additions & 0 deletions examples/pythonScripts/exampleAllSlicers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
import numpy as np
import lsst.sims.maf.db as db
import lsst.sims.maf.metrics as metrics
import lsst.sims.maf.slicers as slicers
import lsst.sims.maf.metricBundles as metricBundles
import lsst.sims.maf.plots as plots

# Let's try running all the Slicers and check that things work


# Set up the database connection
opsdb = db.OpsimDatabase('sqlite:///enigma_1189_sqlite.db')
outDir = 'AllSlicers'
resultsDb = db.ResultsDb(outDir=outDir)
sqlWhere = 'night < 365'

bundleList = []

# Hourglass slicer
slicer = slicers.HourglassSlicer()
metric = metrics.HourglassMetric()
bundle = metricBundles.MetricBundle(metric, slicer, sqlWhere)
bundleList.append(bundle)

# UniSlicer
slicer = slicers.UniSlicer()
metric = metrics.MeanMetric(col='airmass')
bundle = metricBundles.MetricBundle(metric, slicer, sqlWhere)
bundleList.append(bundle)

# HealpixSlicer
slicer = slicers.HealpixSlicer(nside=16)
metric = metrics.MeanMetric(col='airmass', metricName='MeanAirmass_heal')
bundle = metricBundles.MetricBundle(metric, slicer, sqlWhere)
bundleList.append(bundle)

# OneDSlicer
slicer = slicers.OneDSlicer(sliceColName='night', binsize=10)
metric = metrics.CountMetric(col='expMJD')
bundle = metricBundles.MetricBundle(metric, slicer, sqlWhere)
bundleList.append(bundle)

# OpsimFieldSlicer
slicer = slicers.OpsimFieldSlicer()
metric = metrics.MeanMetric(col='airmass')
bundle = metricBundles.MetricBundle(metric, slicer, sqlWhere)
bundleList.append(bundle)

# UserPointsSlicer
ra = np.arange(0,101,1)/100.*np.pi
dec = np.arange(0,101,1)/100.*(-np.pi)
slicer = slicers.UserPointsSlicer(ra=ra,dec=dec)
metric = metrics.MeanMetric(col='airmass', metricName='meanAirmass_user')
bundle = metricBundles.MetricBundle(metric, slicer, sqlWhere)
bundleList.append(bundle)

# healpixComplexSlicer (healpix slicer + summaryHistogram)
bins = np.arange(0.5, 3.0, 0.1)
slicer = slicers.HealpixSlicer(nside=16)
metric = metrics.TgapsMetric(bins=bins)
plotDict = {'bins':bins}
plotFuncs = [plots.SummaryHistogram()]
bundle = metricBundles.MetricBundle(metric, slicer, sqlWhere, plotDict=plotDict, plotFuncs=plotFuncs)
bundleList.append(bundle)

# f0 plot -- this should just go to a healpixslicer with a different plotter.
slicer = slicers.HealpixSlicer(nside=64)
metric = metrics.CountMetric('expMJD', metricName='fO')
plotFuncs = [plots.FOPlot()]
bundle = metricBundles.MetricBundle(metric, slicer, sqlWhere, plotFuncs=plotFuncs)
bundleList.append(bundle)


# Run everything above
bundleDict = metricBundles.makeBundleDict(bundleList)
bgroup = metricBundles.MetricBundleGroup(bundleDict, opsdb, outDir=outDir, resultsDb=resultsDb)
bgroup.runAll()
bgroup.plotAll()
bgroup.writeAll()


# Make a 6-panel seeing plot
filters = ['u','g','r','i','z','y']
slicer = slicers.HealpixSlicer(nside=64)
metric = metrics.MeanMetric(col='finSeeing')
for f in filters:
bundle = metricBundles.MetricBundle(metric, slicer, 'filter = "%s" and night < 365'%f)
bundleDict = metricBundles.makeBundleDict([bundle])
bgroup = metricBundles.MetricBundleGroup(bundleDict, opsdb, outDir=outDir, resultsDb=resultsDb)
bgroup.runAll()
bgroup.plotAll()
bgroup.writeAll()




# healpixSDSSSlicer
# need to run setup pymssql to get this part to run. Do we want to add that to our dependencies?
runSDSS = False
if runSDSS:
sdssDB = db.SdssDatabase('mssql+pymssql://clue-1:[email protected]:1433')
sqlWhere = "filter='r' and nStars > 0 and nGalaxy > 0"
slicer = slicers.HealpixSDSSSlicer(nside=64, lonCol='RA1', latCol='Dec1')
metric = metrics.MeanMetric(col='psfWidth')
bundle = metricBundles.MetricBundle(metric, slicer, sqlWhere)
bgroup = metricBundles.MetricBundleGroup({0:bundle}, sdssDB, outDir=outDir, resultsDb=resultsDb)
bgroup.runAll()
bgroup.plotAll()
bgroup.writeAll()
29 changes: 29 additions & 0 deletions examples/pythonScripts/exampleMetricBundle.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import matplotlib.pyplot as plt
import lsst.sims.maf.metricBundles as metricBundles
import lsst.sims.maf.metrics as metrics
import lsst.sims.maf.slicers as slicers
import lsst.sims.maf.stackers as stackers
import lsst.sims.maf.db as db



database = db.OpsimDatabase('sqlite:///enigma_1189_sqlite.db')


metric = metrics.MeanMetric(col='HA')
slicer = slicers.HealpixSlicer(nside=4)
stackerList = [stackers.NormAirmassStacker()]

mb = metricBundles.MetricBundle(metric, slicer, stackerList=stackerList, sqlconstraint='filter="r" and night < 100')
metric = metrics.RmsMetric(col='airmass')
mb2 = metricBundles.MetricBundle(metric, slicer, stackerList=stackerList, sqlconstraint='filter="r" and night < 100')


print mb.dbCols

mbD = {0:mb, 1:mb2}

mbg = metricBundles.MetricBundleGroup(mbD, database, outDir='test')
mbg.runAll()
mbg.plotAll(closefigs=False)
plt.show()
31 changes: 17 additions & 14 deletions python/lsst/sims/maf/db/resultsDb.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,10 @@ class MetricRow(Base):
sqlConstraint = Column(String)
metricMetadata = Column(String)
metricDataFile = Column(String)
metricRun = Column(Integer)
def __repr__(self):
return "<Metric(metricId='%d', metricName='%s', slicerName='%s', simDataName='%s', sqlConstraint='%s', metadata='%s', metricDataFile='%s', metricRun='%d')>" \
return "<Metric(metricId='%d', metricName='%s', slicerName='%s', simDataName='%s', sqlConstraint='%s', metadata='%s', metricDataFile='%s')>" \
%(self.metricId, self.metricName, self.slicerName, self.simDataName,
self.sqlConstraint, self.metricMetadata, self.metricDataFile, self.metricRun)
self.sqlConstraint, self.metricMetadata, self.metricDataFile)

class DisplayRow(Base):
"""
Expand Down Expand Up @@ -133,7 +132,7 @@ def updateMetric(self, metricName, slicerName, simDataName, sqlConstraint,
- metricDatafile: the data file the metric data is stored in
If same metric (same metricName, slicerName, simDataName, sqlConstraint, metadata)
already exists, adds to the db with 'run' value increased by one.
already exists, it does nothing.
Returns metricId: the Id number of this metric in the metrics table.
"""
Expand All @@ -145,19 +144,20 @@ def updateMetric(self, metricName, slicerName, simDataName, sqlConstraint,
metricMetadata = 'NULL'
if metricDataFile is None:
metricDataFile = 'NULL'
metricRun = 0;
# Check if metric has already been added to database.
prev = self.session.query(MetricRow).filter_by(metricName=metricName, slicerName=slicerName,
simDataName=simDataName, metricMetadata=metricMetadata).all()
metricRun += len(prev)
metricinfo = MetricRow(metricName=metricName, slicerName=slicerName, simDataName=simDataName,
sqlConstraint=sqlConstraint, metricMetadata=metricMetadata,
metricDataFile=metricDataFile, metricRun=metricRun)
self.session.add(metricinfo)
self.session.commit()
if len(prev) == 0:
metricinfo = MetricRow(metricName=metricName, slicerName=slicerName, simDataName=simDataName,
sqlConstraint=sqlConstraint, metricMetadata=metricMetadata,
metricDataFile=metricDataFile)
self.session.add(metricinfo)
self.session.commit()
else:
metricinfo = prev[0]
return metricinfo.metricId

def updateDisplay(self, metricId, displayDict):
def updateDisplay(self, metricId, displayDict, overwrite=True):
"""
Add a row to or update a row in the displays table.
Expand All @@ -170,8 +170,11 @@ def updateDisplay(self, metricId, displayDict):
# First check if a display line is present with this metricID.
displayinfo = self.session.query(DisplayRow).filter_by(metricId=metricId).all()
if len(displayinfo) > 0:
for d in displayinfo:
self.session.delete(d)
if overwrite:
for d in displayinfo:
self.session.delete(d)
else:
return
# Then go ahead and add new displayDict.
for k in displayDict:
if displayDict[k] is None:
Expand Down
2 changes: 0 additions & 2 deletions python/lsst/sims/maf/driver/__init__.py

This file was deleted.

Loading

0 comments on commit 6ebeb67

Please sign in to comment.