00001 """
00002 @mainpage SLIMpy
00003
00004 This page has been generated from the source code of SLIMpy.
00005
00006 @section intro Introduction
00007 SLIMpy is a Python interface that exposes the functionality of seismic
00008 data processing packages, such as MADAGASCAR, through operator
00009 overloading. SLIMpy provides a concrete coordinate-free
00010 implementation of classes for out-of-core linear (implicit
00011 matrix-vector), and element-wise operations, including calculation of
00012 norms and other basic vector operations. The library is intended to
00013 provide the user with an abstract scripting language to program
00014 iterative algorithms from numerical linear algebra. These algorithms
00015 require repeated evaluation of operators that were initially designed
00016 to be run as part of batch-oriented processing flows. The current
00017 implementation supports a plugin for Madagascar's out-of-core UNIX
00018 pipe-based applications and is extenable to pipe-based collections of
00019 programs such as Seismic Un*x, SEPLib, and FreeUSP. To optimize
00020 performance, SLIMpy uses an Abstract Syntax Tree that parses the
00021 algorithm and optimizes the pipes.
00022
00023
00024 @section Installation Installation
00025
00026 @subsection Prerequisites Prerequisites
00027
00028 - \b Python
00029 SLIMpy is written in pure Python.
00030 - see http://www.python.org
00031 - python 2.5 is required
00032 - \b SCons
00033 is a build tool similar to make.
00034 - see http://www.scons.org
00035 - scons 0.98+ is required
00036 - \b svn
00037 is a version control client similar to cvs
00038 - see http://www.subversion.tigris.org
00039 - \b Madagascar
00040 is an open-source software package for geophysical data processing and reproducible numerical experiments.
00041 - see http://rsf.sourceforge.net/
00042
00043 @subsection DandI Download and Install
00044
00045 To install SLIMpy check it out of the SLIMpy repository by using the commands:
00046 @code
00047 [shell]$ svn co https://wave.eos.ubc.ca/Public/Public.Software.SLIMpy/STABLE ./core
00048 [shell]$ svn co https://wave.eos.ubc.ca/Public/Public.Software.SLIMpy-contrib/STABLE ./contrib
00049 @endcode
00050
00051 Once the files are on your machine from both the core and contrib directories run:
00052 @code
00053 [shell]$ python setup.py install [--prefix=/path/to/mypython]
00054 @endcode
00055
00056 \note If you use the \b --prefix option the path you set \b must be on your \b PYTHONPATH.
00057
00058 @section quickstart Quick Start Guide
00059 - @subpage tutpage
00060 - @ref slimpyopers
00061
00062 @section REFERENCE Reference
00063
00064 If you are just browsing the SLIMpy documentation the best place to start
00065 is from the groups:
00066 @arg @ref userclasses
00067 @arg @ref functions
00068 @arg @ref linop.
00069
00070
00071 @section HELP Help
00072
00073 SLIMPy is an academic research code which we share with the community
00074 through this alpha release. By releasing SLIMpy as open source, we
00075 hope to create an active community to help us further develop this
00076 software.
00077
00078 Through this release, we hope that SLIMpy can grow into a widely-used
00079 library, supplementing the functionality of currently available
00080 processing-flow oriented (seismic) software packages. Please, use
00081 SLIMpy-user (http://slim.eos.ubc.ca/mailman/listinfo/slimpy-user)
00082 mailing list to report concerns and exchange the ideas. Those of you,
00083 who wish to contribute to development, please, subscribe to
00084 SLIMpy-devel (http://slim.eos.ubc.ca/mailman/listinfo/slimpy-devel).
00085
00086 @section features Features
00087 The main features of SLIMpy include:
00088
00089 - Powerful interpreted programming language (Python)
00090 - Syntax (through overloading) close to pseudo-code for numerical linear algebra
00091 - Abstract Syntax Tree analyzer/optimizer (including command rearrangement form improved performance)
00092 - Concrete linear operator and vector classes, including dottests, domain-range
00093 and type checks
00094 - Elementwise reduction-transformation operations (norms, elementary
00095 math)
00096 - Compounded linear operators
00097 - Augmented linear operators and vector classes
00098 - Plugin mechanism for Unix pipe-based collections of (seismic) data processing programs
00099 - Parallel execution of reduction/transformation operations
00100 - Parallel execution of embarrassingly parallel linear operators (block diagonal)
00101 - Integration with SCons
00102 - Automatic cleanup of temporary datafiles (garbage collection)
00103 - In-code documentation through Doxygen
00104
00105 @section LICENCE License
00106
00107 %SLIMpy is free software: you can redistribute it and/or modify
00108 it under the terms of the GNU Lesser General Public License as published by
00109 the Free Software Foundation, either version 3 of the License, or
00110 (at your option) any later version.
00111
00112 %SLIMpy is distributed in the hope that it will be useful,
00113 but WITHOUT ANY WARRANTY; without even the implied warranty of
00114 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00115 GNU Lesser General Public License for more details.
00116
00117 You should have received a copy of the GNU Lesser General Public License
00118 along with SLIMpy . If not, see http://www.gnu.org/licenses/
00119
00120 For the full licence, please see the @subpage licencefile and @subpage licencefilelesser
00121 files.
00122
00123
00124 @author Sean Ross-Ross
00125 @date May 22, 2008
00126
00127
00128
00129 @page licencefile COPYING
00130 \verbinclude COPYING
00131 @page licencefilelesser COPYING.LESSER
00132 \verbinclude COPYING.LESSER
00133
00134
00135 """
00136 __copyright__ = """
00137 Copyright 2008 Sean Ross-Ross
00138 """
00139 __license__ = """
00140 This file is part of SLIMpy .
00141
00142 SLIMpy is free software: you can redistribute it and/or modify
00143 it under the terms of the GNU Lesser General Public License as published by
00144 the Free Software Foundation, either version 3 of the License, or
00145 (at your option) any later version.
00146
00147 SLIMpy is distributed in the hope that it will be useful,
00148 but WITHOUT ANY WARRANTY; without even the implied warranty of
00149 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00150 GNU Lesser General Public License for more details.
00151
00152 You should have received a copy of the GNU Lesser General Public License
00153 along with SLIMpy . If not, see <http://www.gnu.org/licenses/>.
00154 """
00155
00156
00157
00158 from distutils.core import setup
00159 from os.path import join
00160 from glob import glob
00161
00162
00163 slimpy_base_packages = [
00164
00165 "slimpy_base",
00166 "slimpy_base.api",
00167 "slimpy_base.api.functions",
00168 "slimpy_base.api.linearops",
00169 "slimpy_base.api.Plugins",
00170 "slimpy_base.api.Plugins.slim2numpy",
00171 "slimpy_base.api.Plugins.slim2rsf",
00172 "slimpy_base.api.Plugins.slim2rsf.sfcommands",
00173 "slimpy_base.api.Plugins.slim2su",
00174 "slimpy_base.Core",
00175 "slimpy_base.Core.Builders",
00176 "slimpy_base.Core.Command",
00177 "slimpy_base.Core.Command.Drivers",
00178 "slimpy_base.Core.Graph",
00179 "slimpy_base.Core.Graph._dep_Builders",
00180 "slimpy_base.Core.Graph.Graph",
00181 "slimpy_base.Core.Interface",
00182 "slimpy_base.Core.MutiProcessUtils",
00183 "slimpy_base.Core.Runners",
00184 "slimpy_base.Core.User",
00185 "slimpy_base.Core.User.linop",
00186 "slimpy_base.Core.User.Structures",
00187
00188 "slimpy_base.Environment",
00189 "slimpy_base.setup",
00190 "slimpy_base.SLIMmath",
00191 "slimpy_base.test_SLIMpy",
00192 "slimpy_base.test_SLIMpy.test_Core",
00193 "slimpy_base.test_SLIMpy.test_Core.test_Command",
00194 "slimpy_base.test_SLIMpy.test_Core.test_Command.test_Drivers",
00195 "slimpy_base.test_SLIMpy.test_Core.test_Graph",
00196 "slimpy_base.test_SLIMpy.test_Core.test_Graph.test_Builders",
00197 "slimpy_base.test_SLIMpy.test_Core.test_Graph.test_Graph",
00198 "slimpy_base.test_SLIMpy.test_Core.test_Interface",
00199 "slimpy_base.test_SLIMpy.test_Core.test_MultiCore",
00200 "slimpy_base.test_SLIMpy.test_Core.test_Plugins",
00201 "slimpy_base.test_SLIMpy.test_Core.test_runners",
00202 "slimpy_base.test_SLIMpy.test_Core.test_User",
00203 "slimpy_base.test_SLIMpy.test_Core.test_User.test_linop",
00204 "slimpy_base.test_SLIMpy.test_env",
00205 "slimpy_base.test_SLIMpy.test_User",
00206 "slimpy_base.test_SLIMpy.test_User.test_AugmentedMatrix",
00207 "slimpy_base.test_SLIMpy.test_utils",
00208 "slimpy_base.User",
00209 "slimpy_base.User.AumentedMatrix",
00210 "slimpy_base.utils", ]
00211
00212 slimpy_package = [ 'SLIMpy' ]
00213
00214 proj_packages = [
00215 "slimproj_core",
00216 "slimproj_core.builders",
00217 "slimproj_core.slim_tools" ]
00218
00219 Utils_packages = [
00220 "SLIMutils",
00221 ]
00222
00223 modules = [ 'slimproj' ]
00224 scripts_dir = join( "scripts" , "*")
00225 scripts = glob( scripts_dir )
00226 all_packages = slimpy_base_packages + slimpy_package + proj_packages + Utils_packages
00227
00228
00229
00230
00231
00232 from svninfo import tofile
00233 try:
00234 tofile( "slimpy_base/info.py" )
00235 except:
00236 print "Could not upate SLIMpy.__version__ from svn"
00237
00238
00239
00240 setup(
00241 name='SLIMpy',
00242 version='0.3',
00243 description='Python Interface to ANA',
00244 author = "Sean Ross-Ross",
00245 author_email='srossross@gmail.com',
00246 url='http://slim.eos.ubc.ca/SLIMpy' ,
00247
00248 packages = all_packages,
00249 py_modules = modules,
00250 scripts=scripts,
00251
00252 )
00253