summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Seibert <stan@mtrr.org>2011-10-03 10:08:08 -0400
committerStan Seibert <stan@mtrr.org>2011-10-03 10:08:08 -0400
commit5bc1516d020cd5b304d0364b74b65d6f3239809c (patch)
treed1557cf6a99ae5bf4ba15cb9c26847c5fef078c4
parentf546e2ee29db8c62112e9370c9a51947e6f87da1 (diff)
downloadchroma-5bc1516d020cd5b304d0364b74b65d6f3239809c.tar.gz
chroma-5bc1516d020cd5b304d0364b74b65d6f3239809c.tar.bz2
chroma-5bc1516d020cd5b304d0364b74b65d6f3239809c.zip
Create a chroma.log module that provides the default logger object for
the package. Rather than use the logging module directly, we wrap it with this to ensure that logger.basicConfig() is called automatically. All chroma code should use this logger for printing status information so that it can be hidden when chroma is part of a bigger application.
-rwxr-xr-xbin/chroma-cam2
-rwxr-xr-xbin/chroma-sim4
-rw-r--r--chroma/geometry.py28
-rw-r--r--chroma/log.py3
4 files changed, 32 insertions, 5 deletions
diff --git a/bin/chroma-cam b/bin/chroma-cam
index e81469e..25f0eb3 100755
--- a/bin/chroma-cam
+++ b/bin/chroma-cam
@@ -9,6 +9,8 @@ if __name__ == '__main__':
from chroma import view, build, EventViewer
from chroma import mesh_from_stl
from chroma.tools import enable_debug_on_crash
+ from chroma.log import logger, logging
+ logger.setLevel(logging.INFO)
parser = optparse.OptionParser('%prog')
parser.add_option('--debug', dest='debug', action='store_true',
diff --git a/bin/chroma-sim b/bin/chroma-sim
index 0d737c4..7f309de 100755
--- a/bin/chroma-sim
+++ b/bin/chroma-sim
@@ -16,6 +16,10 @@ if __name__ == '__main__':
from chroma.rootimport import ROOT
ROOT.gROOT.SetBatch()
+ from chroma.log import logger, logging
+ logger.setLevel(logging.INFO)
+
+
parser = optparse.OptionParser('%prog <detector>')
parser.add_option('-o', dest='output_filename',
help='output filename', default='out.root')
diff --git a/chroma/geometry.py b/chroma/geometry.py
index 19f27a3..8c97a74 100644
--- a/chroma/geometry.py
+++ b/chroma/geometry.py
@@ -1,11 +1,14 @@
import sys
import os
-import numpy as np
-from chroma.itertoolset import *
-from chroma.tools import timeit, profile_if_possible
from hashlib import md5
import cPickle as pickle
import gzip
+import numpy as np
+import time
+
+from chroma.itertoolset import *
+from chroma.tools import timeit, profile_if_possible
+from chroma.log import logger
# all material/surface properties are interpolated at these
# wavelengths when they are sent to the gpu
@@ -270,6 +273,12 @@ class Geometry(object):
vertices = np.empty((nv[-1],3), dtype=np.float32)
triangles = np.empty((nt[-1],3), dtype=np.uint32)
+
+
+ logger.info('Setting up BVH for detector mesh...')
+ logger.info(' triangles: %d' % len(triangles))
+ logger.info(' vertices: %d' % len(vertices))
+
for i, solid in enumerate(self.solids):
vertices[nv[i]:nv[i+1]] = \
@@ -316,7 +325,7 @@ class Geometry(object):
except IOError:
pass
else:
- #print 'loading cache.'
+ logger.info('Loading BVH from cache.')
data = pickle.load(f)
reorder = data.pop('reorder')
@@ -330,8 +339,14 @@ class Geometry(object):
for key, value in data.iteritems():
setattr(self, key, value)
f.close()
+
+ logger.info(' nodes: %d' % len(self.upper_bounds))
return
+ logger.info('Constructing new BVH from mesh. This may take several minutes.')
+
+ start_time = time.time()
+
zvalues_mesh = morton_order(self.mesh, bits)
reorder = np.argsort(zvalues_mesh)
zvalues_mesh = zvalues_mesh[reorder]
@@ -397,8 +412,11 @@ class Geometry(object):
self.start_node = self.node_map.size - 1
+ logger.info('BVH construction completed in %1.1f seconds.' % (time.time() - start_time))
+ logger.info(' nodes: %d' % len(self.upper_bounds))
+
if use_cache:
- #print 'Writing BVH to cache directory...'
+ logger.info('Writing BVH to ~/.chroma cache directory...')
sys.stdout.flush()
if not os.path.exists(cache_dir):
diff --git a/chroma/log.py b/chroma/log.py
new file mode 100644
index 0000000..4c41bdb
--- /dev/null
+++ b/chroma/log.py
@@ -0,0 +1,3 @@
+import logging
+logging.basicConfig() # Avoid "no handlers could be found" warnings
+logger = logging.getLogger('chroma')