Hi Chris,
I hope you are enjoying the conference.
Thanks for the answers on docstrings and unit tests.
I have made good progress and I think I should be able to ask George to finish the rest of the work soon.
There is one install problem left that I would like to discuss with you.
It is quite useful to be able to install bumpy and scipy to the sire python install. Nautilus needs those as dependencies. However scipy needs to have working blas/lapack libraries
At the moment I am using the versions provided by ubuntu package but I think it would make sense to ship those with sire to solve installation problems on a system where the user doesn’t have root permissions.
Now I can see that in corelib cmake has already a SIRE_BUNDLEBLASLAPACK option which is on by default.
However src/bundled doesn’t have BLAS/LAPACK source files.
Is there a reason why you started including this dependency and then backed off or it is just unfinished work ?
Another issue I have is that every time I check out a fresh version of my branch, or that I touch a CMAKELists file I get a CMake error in core lib when recompiling because of :
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
TBB_LIBRARY
linked by target "SireMM" in directory /home/julien/software/devel/sirejulien/corelib/src/libs/SireMM
TBB_MALLOC_LIBRARY
linked by target "SireMM" in directory /home/julien/software/devel/sirejulien/corelib/src/libs/SireMM
This is easily solved by
‘ccmake’, ‘c’, ‘g’ , ‘make'
By default SIRE_BUNDLE_TBB is ON
It does look like tbb is built and installed, so it sounds like a bug in the cmake build protocol.
If these two problems, and the pip auto build bug are fixed, then it would be relatively easy to write install instructions to add Nautilus support to an able version of Sire.
It would look roughly like this at the moment
# Install
~/sire.app/bundled/bin/pip install numpy
~/sire.app/bundled/bin/pip install cython
~/sire.app/bundled/bin/pip install scipy
~/sire.app/bundled/bin/pip install mdtraj
cd $SIRESOURCE/python2
tar -xvf nautilus-patch.tar
cd Tools
patch < CMakeLists.patch
cd $SIRESOURCE/buildpython2
make install
# Test
cd $SIRE/test/Tools
$SIRE/bin/python test_nautilus.py
When a public release of Nautilus becomes possible, we could adapt the above instructions to update the Sire python2 build procedure (with maybe a SIRE_ENABLE_NAUTILUS flag)
A potential weakness is that this procedure may fail in the future if the python dependencies become backward incompatible.
On the other hand it sounds like a maintenance nightmare to bundle everything. I think we are better off in general to proceed this way and fix issues as they appear.
Does this sound all sensible to you ?
Best wishes,
Julien
Hi Chris,
I think it would be a mistake to not make it easier to link Sire with other python modules. There are many other useful software libraries with a python interface in development and it is very important that we maximise interoperability between different software libraries
I never had problems using numpy with Sire. Half of Nautilus uses numpy because for some operations the code was faster (in our hands) than what could be done with Sire datastructures. We just had to be careful with the ways modules are imported to avoid name clashes (e.g. import numpy as np). The majority of potential developers will be more comfortable with Python than C++ and it is only natural that they will want to use the modules they already know well.
Scipy just needs a statically linked blas library. I don’t think it should be so hard to compile the blas sources to link to this library as part of the installation process.
I agree with you that it would be a headache to provide a general support for any dependencies for a python library. However I don’t advocate we do that. I suggest we support blas/lapack so we can have numpy (which a large portion of python developers will want immediately). We document how we added blas/lapack support in sire so that developers could further extend the build procedure should they wish to include other libraries. If possible we recommend to link against static libraries.
I don’t have any problems using the blas/lapack libraries from the Ubuntu packages on my laptop (probably because static). However this isn’t clearly the way to distribute the code.
/This sounds sensible, and it will be a maintenance nightmare to bundle
/everything. However, python's module system is so convoluted that we
/may need to put in the effort to bundle (or at the very least provide
/a binary download that can be patched into a binary install of Sire).
/Solving people's compile and install problems is extremely time
/consuming and installing from source or via a complicated set of
/commands is a major barrier to adoption. If we can bundle it all then
/we should. Ideally then people could just download a "nautilus.run"
/file, and then unpack that to give them sire.app/bin/nautilus (or even
/nautilus/run, which calls nautilus/sire.app/bin/nautilus). I don't
/think that it is a big issue if different Sire apps all end up
/shipping with different copies of Sire. Indeed, this may be simpler
/than trying to build a single Sire binary bundle that supports all of
/the different python modules that different Sire apps will need...
/
/What do you think?
Sounds like wine for molecular simulations ! I think this is a good solution to provide the software to users. If you can show me how this could be done by making a bundle of one app, I would be happy to test this way of packaging sire applications for Nautilus or somd (that will ship with mdtraj/numpy/openmm) and to write a documentation describing the build procedure that other developers could adapt to make their own bundle.
Clearly we have two different problems: 1) how to make the code useful to developers of other simulation software 2) how to make the code easy to run for end-users. I think both categories of users are very important but they have different needs/abilities and a different solution is required.
Best wishes,
In terms of distributions, I have a set of virtual machines(*) that
has about a dozen different distributions from over the last 5 or so
years. The problem is that everything worked on all of them, as I had
originally installed these distros as graphical development servers,
and so zlib / ssl was installed on all of them by default. I am not
sure how we solve this problem, other than perhaps test on "minimal"
installs of the distributions?
I agree that once this is stable, it will be easier to document the
process of compiling and installing dependent modules.
> email to sire-developers+unsubscribe@googlegroups.com.
> To post to this group, send email to sire-developers@googlegroups.com.