~turion/+junk/eniglab

« back to all changes in this revision

Viewing changes to eniglab/__init__.py

  • Committer: Manuel Bärenz
  • Date: 2012-03-03 11:38:59 UTC
  • Revision ID: manuel@enigmage.de-20120303113859-0v1mjjsvfosel1no
Komplette Umkrempelung

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
# -*- coding: utf-8 -*-
3
3
 
4
4
__ALL__ = ['uncert', 'fit']
 
5
 
 
6
import pylab
 
7
 
 
8
PLOTRANGE_RELATIVE_OVERLAP = 1/30.0
 
9
DOTS = 100
 
10
 
 
11
def plotrange_minmax(mina, maxa, dots, relative_overlap = PLOTRANGE_RELATIVE_OVERLAP):
 
12
        overlap = (maxa - mina)*relative_overlap
 
13
        return pylab.linspace(mina - overlap, maxa + overlap, dots)
 
14
 
 
15
def plotrange(array, dots=DOTS, logarithmic=False):
 
16
        mina, maxa = min(array), max(array)
 
17
        if array.dtype == "object": # Assume it's an uncertainties.unumpy.uarray
 
18
                mina, maxa = (m.nominal_value + sign*m.std_dev() for m, sign in ((mina, -1), (maxa, +1)))
 
19
        if logarithmic:
 
20
#               overlap = (maxa - mina)**PLOTRANGE_RELATIVE_OVERLAP
 
21
#               return pylab.linspace(mina / overlap, maxa * overlap, dots)
 
22
                return pylab.exp(plotrange_minmax(pylab.log(mina), pylab.log(maxa), dots))
 
23
        else:
 
24
                return plotrange_minmax(mina, maxa, dots)