This page gives links to information and downloads for my software. If you find any of it useful and publish papers based upon it, please remember me in the acknowledgements. It is freely available to anyone who wishes to download it, but I disclaim all responsibility for any problems that might result from its use.
These links may give you a better idea of whether you want to download a given piece of software or not. They always refer to the most recent version; you will have to install the old versions if you want documentation on them. I divide up by programming language merely because the installation procedure has come to be defined by this.
Most of my software is now written in C++ or Python, but there are a couple of well-used FORTRAN pacakges. These come with self-contained installation instructions. Although the installation is in theory not as portable as for the more recent packages, it is not normally too bad. The spectrum reduction "pamela" is now part of the starlink distribution, and since one needs starlink installed to use it, I no longer distribute it from here. Note that there is a bug in the hikianalia distribution of pamela, that will be fixed in the next release. For convenience however, I still keep the old pamela documentation alive here.
Package | Download | Version | Date | Changes | Description | |
---|---|---|---|---|---|---|
doppler | doppler.tar.gz | 1.0.3 | Fri Aug 13 09:06:49 BST 2010 | Recent | All | Starlink library & maximum entropy-based Doppler tomography package. |
molly | molly.tar.gz | 1.1.8 | Tue 7 Jan 17:35:17 GMT 2020 | Recent | All | 1D spectrum analysis program. |
I have moved my packages to github under user name trmrsh. This is largely because git provides a nice platform for me to track changes and also to allow anyone else to add their own fixes, and once you get going with it, it makes updating really easy.
First steps:
setenv CPPFLAGS -I/home/username/trm_software/include setenv LDFLAGS -L/home/username/trm_software/libAdapt according to your configuration. If you intend also to use my Python packages (some of which use the C++ ones) you should also define
setenv TRM_SOFTWARE /path/to/trm_software/
I will now assume that the above was successful; if not you will find out during installation and may have to return to the above section later. Here now is the procedure to follow for each C++ package, which I will assume is called 'new-package' on github (see the list of my repositories)
git clone https://github.com/trmrsh/new-package.gitThis will download the software and create a sub-directory called 'new-package' (e.g. 'cpp-subs' for the standard C++ subroutines library).
./configure --prefix=/path/to/trm_software(change according to your details). If you have root permission and don't mind polluting your root directories with my software, then a plain
./configurewill do, perhaps involving a 'sudo'.
make make install
If you are having problems, read the troubleshooting tips, and if that does not help, contact me. In fact I recommend reading the troubleshooting tips before you start ... they could well save you some bother. Be warned, no matter how much I try, installation never seems to be smooth and I have largely lost the will to make it better. If you are trying to install the ULTRACAM pipeline, then you may want to look at this list of required software as well which summarises what can be extracted from this page, but in short order.
Suppose you have got through the above, but there is a new version (perhaps as the result of a fix for a bug you found and very nicely told me about). Then things should be much easier. You go to the relevant source directory ('cpp-subs' perhaps). You then type
git pull make make installand should be good to go. If something more significant then a bugfix to an existing file has happened, you might need to re-run configure, but it should be easy. It might also be useful to know that 'make' can use multiple cores e.g. 'make -j4', but if you use this you should generally finish with a plain 'make' because it can get itself confused. Of course if you are trying to fix, say, 'ultracam', because of a bug in 'subs', then you will need to propagate the installations, and so will need to run 'make', 'make install' in the 'ultracam' repository directory after the above fix has been completed.
See above re the C++ packages and github. Follow steps 1 to 4 to get the software from github and check dependencies. Once these are satisfied, its just the usual python installation procedure:
python setup.py install --prefix=your_installation_directorywhere the installation directory will end up with a sub-directory or two. I use the same directory as I use for my C++ software in which lib/ and include/ appear. Just as for any python package, to use the package you may need to adjust your PYTHONPATH to point to where the package is, which could be something like
your_installation_directory>/lib64/python2.6/site-packagesbut obviously check the precise location first. You will know if it is not in your PYTHONPATH when an attempt to import the package or to access the help with 'pydoc' fails.
setenv CPPFLAGS "-I/home/user/trm_soft/include -I/some/other/path/include" setenv LDFLAGS "-L/usr/local/lib -L/some/other/path/lib"Essentially they end up as directives which get passed to the compiler/linker. You can add any number of such directives.
A common time to hit problems that require compiler/linker directives is when you try installing the first package that needs 'subs', because 'subs' only needs system packages which are usually to be found in standard locations, whereas you might well install 'subs' itself in a non-standard location because e.g. you are not root. You will only find out when you try installing a package that needs 'subs', at which point configure might say:
configure: error: cannot find 'subs' headersIf this happens, configure does not know where you put 'trm/subs.h' etc, so you need to tell it. (If you are puzzled by this, remember that different uses of 'configure', the first to install 'subs', the second to install pacakage 'X', do not communicate with each other, so unless you tell it, at the time of installing 'X', 'configure' has no idea where 'subs' is without your telling it.) To fix it, add wherever 'trm/subs.h' is located to CPPFLAGS and run configure again. Better yet, brefore re-running 'configure', you might as well direct LDFLAGS to where 'libsubs.so' is. If you get past this stage, you are on the downhill slope ... If you expect to install others of my packages, you may want to hardwire the CPPFLAGS and LDFLAGS into your .cshrc or equivalent scripts.
The various packages are supposed to be built so that they know where any shareable libraries that they were built with reside. However, one linux user had a problem building 'subs' which did not know where to find PGPLOT. I would interested if anyone else encounters this as I don't understand why it occurred. A fix (one I don't much like, but have no alternative to) is to direct the linker ('ld') to the right directory which can be done with the environment variable 'LD_LIBRARY_PATH'.
The image below attempts to show what is needed for the C++ routines. If you are interested in a particular package, 'rvanal' for instance, follow the lines leading up from it, but never take a line sloping downwards. In this case you will see that you need 'observing' to be installed which requires 'subs' which in turn requires 'slalib', 'pgplot' and 'pcre'. 'pgplot' in turns needs 'png' (although see above for more about this). To install 'rvanal' therefore you would need to install first 'png', then 'pgplot, 'pcre' and 'slalib', then 'subs', 'observing' and finally 'rvanal'.
You will need many other pieces of more standard software which I don't include in the diagram as they are more usually available. A (probably incomplete) list is: autoconf, automake, libcurl, libtool ("gnu auotools"), gcc, gfortran, g++, readline, git (for getting the software in first place). ultracam comes also with some Python scripts for which there are some other dependencies. The most important is probably yo have either 'pyfits' or 'astropy' in place to allow the script 'ulog2fits.py' to operate. If the package is one that is required for compilation and linking (e.g. 'readline', 'libcurl' and 'pcre', but not 'git'), you will need the development version (often called 'package-name-devel').
Tom Marsh, Warwick