/usr/share/pyshared/brian/unitsafefunctions.py is in python-brian 1.4.1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | # ----------------------------------------------------------------------------------
# Copyright ENS, INRIA, CNRS
# Contributors: Romain Brette (brette@di.ens.fr) and Dan Goodman (goodman@di.ens.fr)
#
# Brian is a computer program whose purpose is to simulate models
# of biological neural networks.
#
# This software is governed by the CeCILL license under French law and
# abiding by the rules of distribution of free software. You can use,
# modify and/ or redistribute the software under the terms of the CeCILL
# license as circulated by CEA, CNRS and INRIA at the following URL
# "http://www.cecill.info".
#
# As a counterpart to the access to the source code and rights to copy,
# modify and redistribute granted by the license, users are provided only
# with a limited warranty and the software's author, the holder of the
# economic rights, and the successive licensors have only limited
# liability.
#
# In this respect, the user's attention is drawn to the risks associated
# with loading, using, modifying and/or developing or reproducing the
# software by the user in light of its specific status of free software,
# that may mean that it is complicated to manipulate, and that also
# therefore means that it is reserved for developers and experienced
# professionals having in-depth computer knowledge. Users are therefore
# encouraged to load and test the software's suitability as regards their
# requirements in conditions enabling the security of their systems and/or
# data to be ensured and, more generally, to use and operate it in the
# same conditions as regards security.
#
# The fact that you are presently reading this means that you have had
# knowledge of the CeCILL license and that you accept its terms.
# ----------------------------------------------------------------------------------
#
"""
Functions which check the dimensions of their arguments, etc.
Functions updated to provide Quantity functionality
---------------------------------------------------
With any dimensions:
* sqrt
Dimensionless:
* log, exp
* sin, cos, tan
* arcsin, arccos, arctan
* sinh, cosh, tanh
* arcsinh, arccosh, arctanh
With homogeneous dimensions:
* dot
"""
from brian_unit_prefs import bup
from units import *
import numpy, math, scipy
from numpy import *
from numpy.random import *
from scipy.integrate import *
import inspect
__all__ = []
# these functions are the ones that will work with the template immediately below, and
# extend the numpy functions to know about Quantity objects
quantity_versions = [
'sqrt',
'log', 'exp',
'sin', 'cos', 'tan',
'arcsin', 'arccos', 'arctan',
'sinh', 'cosh', 'tanh',
'arcsinh', 'arccosh', 'arctanh'
]
def make_quantity_version(func):
funcname = func.__name__
def f(x):
if isinstance(x, Quantity):
return getattr(x, funcname)()
return func(x)
f.__name__ = func.__name__
f.__doc__ = func.__doc__
if hasattr(func, '__dict__'):
f.__dict__.update(func.__dict__)
return f
for name in quantity_versions:
if bup.use_units:
exec name + '=make_quantity_version(' + name + ')'
__all__.append(name)
|