source: sasview/sansmodels/src/setup.py @ eec8dbb

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since eec8dbb was 642b259, checked in by Jae Cho <jhjcho@…>, 14 years ago

moving c smearer to model extension

  • Property mode set to 100644
File size: 11.4 KB
RevLine 
[ae3ce4e]1"""
2 Installation script for SANS models
3
4  - To compile and install:
5      python setup.py install
6  - To create distribution:
7      python setup.py bdist_wininst
8  - To create odb files:
9      python setup.py odb
10
11"""
[f88624d]12import sys
13import os
[fbae881]14
[b72b595]15from numpy.distutils.misc_util import get_numpy_include_dirs
[6c13861]16numpy_incl_path = os.path.join(get_numpy_include_dirs()[0], "numpy")
[b72b595]17
[ae3ce4e]18def createODBcontent(class_name):
19    """
20        Return the content of the Pyre odb file for a given class
21        @param class_name: Name of the class to write an odb file for [string]
22        @return: content of the file [string]
23    """
24    content  = "\"\"\"\n"
25    content += "  Facility for SANS model\n\n"
26    content += "  WARNING: THIS FILE WAS AUTOGENERATED AT INSTALL TIME\n"
27    content += "           DO NOT MODIFY\n\n"
28    content += "  This code was written as part of the DANSE project\n"
29    content += "  http://danse.us/trac/sans/\n"
30    content += "  @copyright 2007:"
[25579e8]31    content += "  SANS/DANSE Group (University of Tennessee), for the DANSE project\n\n"
[ae3ce4e]32    content += "\"\"\"\n"
33    content += "def model():\n"
34    content += "    from ScatteringIntensityFactory import ScatteringIntensityFactory\n"
35    content += "    from sans.models.%s import %s\n" % (class_name, class_name)
36    content += "    return ScatteringIntensityFactory(%s)('%s')\n"\
37                 % (class_name, class_name)
38
39    return content
40
41def createODBfiles():
42    """
43       Create odb files for all available models
44    """
45    from sans.models.ModelFactory import ModelFactory
46   
47    class_list = ModelFactory().getAllModels()
48    for name in class_list:
49        odb = open("sans/models/pyre/%s.odb" % name, 'w')
50        odb.write(createODBcontent(name))
51        odb.close()
52        print "sans/models/pyre/%s.odb created" % name
53       
54#
55# Proceed with installation
56#
57
58# First, create the odb files
59if len(sys.argv) > 1 and sys.argv[1].lower() == 'odb':
60    print "Creating odb files"
61    try:
62        createODBfiles()
63    except:   
64        print "ERROR: could not create odb files"
65        print sys.exc_value
66    sys.exit()
67
68# Then build and install the modules
69from distutils.core import setup, Extension
70
71
72# Build the module name
73srcdir  = "sans/models/c_extensions"
74igordir = "libigor"
75
76print "Installing SANS models"
77
78
79setup(
80    name="models",
[6d7bfe76]81    version = "0.4",
[ae3ce4e]82    description = "Python module for SANS scattering models",
83    author = "Mathieu Doucet",
84    author_email = "doucet@nist.gov",
85    url = "http://danse.us/trac/sans",
86   
87    # Place this module under the sans package
88    #ext_package = "sans",
89   
90    # Use the pure python modules
91    package_dir = {"sans_extension":"sans/models/c_extensions"},
92   
93    packages = ["sans","sans.models","sans.models.test",
94                "sans_extension","sans.models.pyre"],
95   
96    ext_modules = [ Extension("sans_extension.c_models",
97     sources = [
[8809e48]98        "sans/models/c_models/c_models.cpp",
[0f5bc9f]99        #srcdir+"/CSphereModel.c",
100        #srcdir+"/sphere.c",
101        "sans/models/c_models/CSphereModel.cpp",
[5d57267]102        "sans/models/c_models/COnionModel.cpp",
103        "sans/models/c_models/onion.cpp",
104        srcdir+"/onion.c",
[35aface]105        "sans/models/c_models/CReflModel.cpp",
106        "sans/models/c_models/refl.cpp",
107        srcdir+"/refl.c",
[3be060d]108        "sans/models/c_models/CReflAdvModel.cpp",
109        "sans/models/c_models/refl_adv.cpp",
110        srcdir+"/refl_adv.c",
[8240eab]111        #srcdir+"/SquareWell.c",
[25579e8]112        "sans/models/c_models/CSquareWellStructure.cpp", 
113        "sans/models/c_models/SquareWell.cpp", 
[8240eab]114        #srcdir+"/StickyHS.c",         
[25579e8]115        "sans/models/c_models/CStickyHSStructure.cpp", 
[8240eab]116        "sans/models/c_models/StickyHS.cpp",             
[25579e8]117        "sans/models/c_models/CHardsphereStructure.cpp", 
[5be36bb]118        "sans/models/c_models/Hardsphere.cpp",   
[8240eab]119        #srcdir+"/DiamCyl.c",         
[93d04e5]120        "sans/models/c_models/CDiamCylFunc.cpp", 
121        "sans/models/c_models/DiamCyl.cpp",   
[8240eab]122        #srcdir+"/DiamEllip.c",         
[93d04e5]123        "sans/models/c_models/CDiamEllipFunc.cpp", 
[5be36bb]124        "sans/models/c_models/DiamEllip.cpp",     
[8240eab]125        #srcdir+"/HayterMSA.c",         
[25579e8]126        "sans/models/c_models/CHayterMSAStructure.cpp", 
[93d04e5]127        "sans/models/c_models/HayterMSA.cpp",             
[0f5bc9f]128        "sans/models/c_models/sphere.cpp",
[89c0919]129        srcdir+"/fuzzysphere.c",
130        "sans/models/c_models/CFuzzySphereModel.cpp",
131        "sans/models/c_models/fuzzysphere.cpp",
[af03ddd]132        #srcdir+"/CCylinderModel.c",
133        "sans/models/c_models/CCylinderModel.cpp",
134        "sans/models/c_models/cylinder.cpp",
135        "sans/models/c_models/parameters.cpp",
136        "sans/models/c_models/dispersion_visitor.cpp",
[ae3ce4e]137        srcdir+"/cylinder.c",
[f41b4c3]138        #srcdir+"/CParallelepiped.c",
139        "sans/models/c_models/CParallelepipedModel.cpp",
140        "sans/models/c_models/parallelepiped.cpp",
141        srcdir+"/parallelepiped.c",
[2e862a0]142        "sans/models/c_models/CCSParallelepipedModel.cpp",
143        "sans/models/c_models/csparallelepiped.cpp",
144        srcdir+"/csparallelepiped.c",
[0f5bc9f]145        #srcdir+"/CCoreShellCylinderModel.c",
146        "sans/models/c_models/CCoreShellCylinderModel.cpp",
147        "sans/models/c_models/coreshellcylinder.cpp",
[ae3ce4e]148        srcdir+"/core_shell_cylinder.c",
[27fea3f]149        #srcdir+"/CHollowCylinderModel.c",
150        "sans/models/c_models/CHollowCylinderModel.cpp",
151        "sans/models/c_models/hollowcylinder.cpp",
152        srcdir+"/hollow_cylinder.c",
[0f5bc9f]153        #srcdir+"/CCoreShellModel.c",
154        #srcdir+"/core_shell.c",
155        "sans/models/c_models/CCoreShellModel.cpp",
156        "sans/models/c_models/coreshellsphere.cpp",
157        #srcdir+"/CEllipsoidModel.c",
158        "sans/models/c_models/CEllipsoidModel.cpp",
159        "sans/models/c_models/ellipsoid.cpp",       
[ae3ce4e]160        srcdir+"/ellipsoid.c",
[89c0919]161        "sans/models/c_models/CCoreFourShellModel.cpp",
162        "sans/models/c_models/corefourshell.cpp",
[2399b2a]163        #srcdir+"/corefourshell.c",
[0f5bc9f]164        #srcdir+"/CEllipticalCylinderModel.c",
165        "sans/models/c_models/CEllipticalCylinderModel.cpp",
166        "sans/models/c_models/ellipticalcylinder.cpp",               
[ae3ce4e]167        srcdir+"/elliptical_cylinder.c",
[34c3020]168        #srcdir+"/CTriaxialEllipsoidModel.c",
[5068697]169        "sans/models/c_models/CTriaxialEllipsoidModel.cpp",
170        "sans/models/c_models/triaxialellipsoid.cpp",               
171        srcdir+"/triaxial_ellipsoid.c",
172        #srcdir+"/CFlexibleCylinderModel.c",
173        "sans/models/c_models/CFlexibleCylinderModel.cpp",
174        "sans/models/c_models/flexiblecylinder.cpp",               
175        srcdir+"/flexible_cylinder.c",
[89c0919]176        "sans/models/c_models/CFlexCylEllipXModel.cpp",
177        "sans/models/c_models/flexcyl_ellipX.cpp",         
178        srcdir+"/flexcyl_ellipX.c",
[20f00bed]179        "sans/models/c_models/CBarBellModel.cpp",
180        "sans/models/c_models/barbell.cpp",         
181        srcdir+"/barbell.c",
182        "sans/models/c_models/CCappedCylinderModel.cpp",
183        "sans/models/c_models/capcyl.cpp",         
184        srcdir+"/capcyl.c",
[5068697]185        #srcdir+"/CStakedDisksModel.c",
[d2d815d]186        "sans/models/c_models/CSCCrystalModel.cpp",
187        "sans/models/c_models/sc.cpp",               
188        srcdir+"/sc.c",
189        "sans/models/c_models/CFCCrystalModel.cpp",
190        "sans/models/c_models/fcc.cpp",               
191        srcdir+"/fcc.c",
192        "sans/models/c_models/CBCCrystalModel.cpp",
193        "sans/models/c_models/bcc.cpp",               
194        srcdir+"/bcc.c",
[5068697]195        "sans/models/c_models/CStackedDisksModel.cpp",
196        "sans/models/c_models/stackeddisks.cpp",               
197        srcdir+"/stacked_disks.c",
[34c3020]198        #srcdir+"/CLamellarModel.c",
199        "sans/models/c_models/CLamellarModel.cpp",
200        "sans/models/c_models/lamellar.cpp",               
201        srcdir+"/lamellar.c",
202        #srcdir+"/CLamellarFFHGModel.c",
203        "sans/models/c_models/CLamellarFFHGModel.cpp",
204        "sans/models/c_models/lamellarFF_HG.cpp",               
[2399b2a]205        #srcdir+"/lamellarFF_HG.c",
[27a0771]206        #srcdir+"/CLamellarPSModel.c",
207        "sans/models/c_models/CLamellarPSModel.cpp",
208        "sans/models/c_models/lamellarPS.cpp",               
209        srcdir+"/lamellarPS.c",
210        #srcdir+"/CLamellarPSHGModel.c",
211        "sans/models/c_models/CLamellarPSHGModel.cpp",
212        "sans/models/c_models/lamellarPS_HG.cpp",               
[2399b2a]213        #srcdir+"/lamellarPS_HG.c",
[20f00bed]214        "sans/models/c_models/CLamellarPCrystalModel.cpp",
215        "sans/models/c_models/lamellarPC.cpp",               
[2399b2a]216        #srcdir+"/lamellarPC.c",
[27a0771]217        #srcdir+"/COblateModel.c",
[8e36cdd]218        "sans/models/c_models/CCoreShellEllipsoidModel.cpp",
[975ec8e]219        "sans/models/c_models/spheroid.cpp",   
220        srcdir+"/spheroid.c",             
221        #srcdir+"/COblateModel.c",
[5be36bb]222        #"sans/models/c_models/COblateModel.cpp",
223        #"sans/models/c_models/oblate.cpp",               
224        #srcdir+"/oblate.c",
[27a0771]225        #srcdir+"/CProlateModel.c",
[5be36bb]226        #"sans/models/c_models/CProlateModel.cpp",
227        #"sans/models/c_models/prolate.cpp",               
228        #srcdir+"/prolate.c",
[3d25331f]229        #srcdir+"/CMultishellModel.c",
[0211d67]230        "sans/models/c_models/CMultiShellModel.cpp",
[3d25331f]231        "sans/models/c_models/multishell.cpp",               
[2399b2a]232        #srcdir+"/multishell.c",
[96d19c6]233        "sans/models/c_models/CSphereSLDModel.cpp",
234        "sans/models/c_models/spheresld.cpp",               
235        srcdir+"/spheresld.c",
[3d25331f]236        #srcdir+"/CVesicleModel.c",
237        "sans/models/c_models/CVesicleModel.cpp",
238        "sans/models/c_models/vesicle.cpp",               
[2399b2a]239        #srcdir+"/vesicle.c",
[3d25331f]240        #srcdir+"/CBinaryHSModel.c",
241        "sans/models/c_models/CBinaryHSModel.cpp",
242        "sans/models/c_models/binaryHS.cpp",               
[89c0919]243        "sans/models/c_models/CPoly_GaussCoil.cpp",
244        "sans/models/c_models/polygausscoil.cpp",   
[35aface]245        srcdir+"/rpa.c",             
246        "sans/models/c_models/CRPAModel.cpp",
247        "sans/models/c_models/rpa.cpp", 
[2399b2a]248        #srcdir+"/fractal.c",             
[89c0919]249        "sans/models/c_models/CFractalModel.cpp",
250        "sans/models/c_models/fractal.cpp", 
[96d19c6]251        srcdir+"/sld_cal.c",         
252        "sans/models/c_models/CSLDCalFunc.cpp", 
253        "sans/models/c_models/sld_cal.cpp", 
[89c0919]254        #gammainc function need to imported from somewhere 
255        #srcdir+"/polyexclvol.c",             
256        #"sans/models/c_models/CPolymerExclVolModel.cpp",
257        #"sans/models/c_models/polyexclvol.cpp", 
[96d19c6]258        srcdir+"/libmultifunc/librefl.c",
[8240eab]259        #srcdir+"/polygausscoil.c",             
[2399b2a]260        #srcdir+"/binaryHS.c",
[8240eab]261        #srcdir+"/disperser.c",
[ae3ce4e]262        igordir+"/libCylinder.c",
[25579e8]263        igordir+"/libStructureFactor.c",
[ae3ce4e]264        igordir+"/libSphere.c",
[89c0919]265        igordir+"/libTwoPhase.c",
[8240eab]266        #srcdir+"/gaussian.c",
267        #"sans/models/c_models/CGaussian.cpp",
268        #srcdir+"/logNormal.c",
269        #"sans/models/c_models/CLogNormal.cpp",
270        #srcdir+"/schulz.c",
271        #"sans/models/c_models/CSchulz.cpp",
272        #srcdir+"/lorentzian.c",
273        #"sans/models/c_models/CLorentzian.cpp"
[ae3ce4e]274            ],
[642b259]275         include_dirs=[igordir,srcdir,"sans/models/c_models",numpy_incl_path]),       
276         # Smearer extension
277         Extension("sans_extension.smearer",
278                   sources = [
279        "sans/models/c_smearer/smearer_module.cpp",
280        "sans/models/c_smearer/smearer.cpp",
281        ],
282        include_dirs=["sans/models/c_smearer",numpy_incl_path])])
[b72b595]283       
Note: See TracBrowser for help on using the repository browser.