bpsio
index
/Users/schwehr/projects/xcore/src/pmag-py/bpsio.py

Stuff for working with the specific setup for the BPSIO Aug 2004
Cruise to the Santa Barbara Basin: Schwehr, Babcock, Driscoll, Kent,
and Jim from BP.
 
     Copyright (C) 2005  Kurt Schwehr
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
$Id: bpsio.py,v 1.9 2005/05/13 17:07:20 schwehr Exp $

 
Modules
       
sqlite
unittest

 
Classes
       
DepthLookup
SampleName
unittest.TestCase(__builtin__.object)
BpsioTests

 
class BpsioTests(unittest.TestCase)
    Some of the test cases here may seem trivial, but it is good to
cover all the bases!
 
Run the test cases by doing:
 
   ./bpsio.py
 
 
Method resolution order:
BpsioTests
unittest.TestCase
__builtin__.object

Methods defined here:
test_setDecRange_0_360(self)
Test the simplest case for 0...360 deg
test_setDecRange_0_360_large(self)
Make sure that wrapping workings in the 0..360 case
test_setDecRange_0_360_neg(self)
Make sure that negatives popup right
test_setDecRange_0_360_neg_large(self)
Check wrapping in the negative direction
test_setDecRange_neg180_180(self)
Basic check for -180...180, 0 centered range

Methods inherited from unittest.TestCase:
__call__(self, *args, **kwds)
__init__(self, methodName='runTest')
Create an instance of the class that will use the named test
method when executed. Raises a ValueError if the instance does
not have a method with the specified name.
__repr__(self)
__str__(self)
assertAlmostEqual = failUnlessAlmostEqual(self, first, second, places=7, msg=None)
Fail if the two objects are unequal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
 
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
assertAlmostEquals = failUnlessAlmostEqual(self, first, second, places=7, msg=None)
Fail if the two objects are unequal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
 
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
assertEqual = failUnlessEqual(self, first, second, msg=None)
Fail if the two objects are unequal as determined by the '=='
operator.
assertEquals = failUnlessEqual(self, first, second, msg=None)
Fail if the two objects are unequal as determined by the '=='
operator.
assertFalse = failIf(self, expr, msg=None)
Fail the test if the expression is true.
assertNotAlmostEqual = failIfAlmostEqual(self, first, second, places=7, msg=None)
Fail if the two objects are equal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
 
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
assertNotAlmostEquals = failIfAlmostEqual(self, first, second, places=7, msg=None)
Fail if the two objects are equal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
 
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
assertNotEqual = failIfEqual(self, first, second, msg=None)
Fail if the two objects are equal as determined by the '=='
operator.
assertNotEquals = failIfEqual(self, first, second, msg=None)
Fail if the two objects are equal as determined by the '=='
operator.
assertRaises = failUnlessRaises(self, excClass, callableObj, *args, **kwargs)
Fail unless an exception of class excClass is thrown
by callableObj when invoked with arguments args and keyword
arguments kwargs. If a different type of exception is
thrown, it will not be caught, and the test case will be
deemed to have suffered an error, exactly as for an
unexpected exception.
assertTrue = failUnless(self, expr, msg=None)
Fail the test unless the expression is true.
assert_ = failUnless(self, expr, msg=None)
Fail the test unless the expression is true.
countTestCases(self)
debug(self)
Run the test without collecting errors in a TestResult
defaultTestResult(self)
fail(self, msg=None)
Fail immediately, with the given message.
failIf(self, expr, msg=None)
Fail the test if the expression is true.
failIfAlmostEqual(self, first, second, places=7, msg=None)
Fail if the two objects are equal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
 
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
failIfEqual(self, first, second, msg=None)
Fail if the two objects are equal as determined by the '=='
operator.
failUnless(self, expr, msg=None)
Fail the test unless the expression is true.
failUnlessAlmostEqual(self, first, second, places=7, msg=None)
Fail if the two objects are unequal as determined by their
difference rounded to the given number of decimal places
(default 7) and comparing to zero.
 
Note that decimal places (from zero) are usually not the same
as significant digits (measured from the most signficant digit).
failUnlessEqual(self, first, second, msg=None)
Fail if the two objects are unequal as determined by the '=='
operator.
failUnlessRaises(self, excClass, callableObj, *args, **kwargs)
Fail unless an exception of class excClass is thrown
by callableObj when invoked with arguments args and keyword
arguments kwargs. If a different type of exception is
thrown, it will not be caught, and the test case will be
deemed to have suffered an error, exactly as for an
unexpected exception.
id(self)
run(self, result=None)
setUp(self)
Hook method for setting up the test fixture before exercising it.
shortDescription(self)
Returns a one-line description of the test, or None if no
description has been provided.
 
The default implementation of this method returns the first line of
the specified test method's docstring.
tearDown(self)
Hook method for deconstructing the test fixture after testing it.

Data and other attributes inherited from unittest.TestCase:
__dict__ = <dictproxy object>
dictionary for instance variables (if defined)
__weakref__ = <attribute '__weakref__' of 'TestCase' objects>
list of weak references to the object (if defined)
failureException = <class exceptions.AssertionError>
Assertion failed.

 
class DepthLookup
     Methods defined here:
__init__(self, db_cx)
Lookup the section table and make a dictionary.  Loads from the database section table
lookup(self, sampleNameStr)
return the depth in cm

 
class SampleName
    Parse a Kurt style pmag sample cube name
 
  Methods defined here:
__init__(self, nameString='')
__str__(self)
Reconstruct the original sample name string

 
Functions
       
fixDecRange(dec)
Make the Dec be between -180 and 180 for better plotting
getCoreDescription(db_cx, corenum)
return the string for the one line core location / context description
 
db_cx    --- the sqlite database handle
corenum  --- numeric id for the core (1..6)
getCoreLength(db_cx, corenum)
Compute the length of a core from the last section top depth and
the length of the section.
 
FIX: do a better SQL query that only gets the 1st entry
 
This is not quite it...
select max(section),sectopdepth,sectionlength FROM sections WHERE corenum=1 group by sectopdepth,sectionlength;
getDepth(db_cx, samplename, depthTable='mag')
Lookup the depth of a sample from a table.
 
PARAMETERS:
db_cx      - sqlite database connection
samplename - find the depth for this sample
depthTable - the table that has both samplename and depth fields
 
RETURNS:
depth in cm
getRot(db_cx, core, section)
return combined halfrot and decrot - this is the total
rotation that should be applied to a core.
 
db_cx   -  sqlite database handle
core    -  corenumber (integer)
section -  which section of the core.  1 is the top
getWaterWeightPercent(db_cx, corenum, type=None, half=None)
Get the weight percent of water for a core
 
db_cx - sqlite database connection
 
Arguments
 
db_cx - database connection, sqlite
corenum - integer core number
type - type of core (e.g. 'g' for gravity)
half - which half of the core (e.g. 'w' for working, 'a' for archive)
 
Returns:
 
A list of (depth,waterPercent) pairs.  Depth in cm
setDecRange(dec, center)
Convert a degree direction to a specified center range +/- 180 degrees
 
dec    --- direction to be modified in degrees
center --- center of the 360 degree range
 
e.g. center=180 will give 0..360, while center=0 will give +/- 180 degrees

 
Data
        dbFileName = '/Users/schwehr/projects/xcore/data/BPSIO-04/bpsio04.db'