Package: expam
Install.From Bioconda (Recommended)Conda installation is recommended, and best practise is to installexpamin a new environment. Some users may wish to use the ETE3 toolkit for plotting, while others may prefer the iTOL tool. Both commands are included in respective order.With ETE3conda create -n expam -c conda-forge -c bioconda -c etetoolkit expam ete3Without ETE3conda create -n expam -c conda-forge -c bioconda expamFrom PyPIMacYou will need a local installation of HDF5. This may already be installed on your machine, but can be installed using Homebrew with the following commands.brew install pkg-configbrew install hdf5If you encounter any errors, check the FAQ section on GitHub for solutions.Thenupgrade pipand install expam.python3 -m pip install --upgrade pippython3 -m pip install expamLinuxYou may need to update g++ resources on your local machine. For linux, you can run the following.apt updateapt-get install build-essentialThenupgrade pipand install expam.python3 -m pip install --upgrade pippython3 -m pip install expamFrom GitLab sourceTo install from source, you need a local installation ofPython >=3.8, as well asnumpyandcython. There are some commonly encountered problems when installing on Linux, the
most common of which are outlined in the FAQ section below.You may need to update g++ resources on your local machine. For linux, you can run the following.apt updateapt-get install build-essentialFirst download the source code from the GitLab repository.git clone https://github.com/seansolari/expam.gitThis can then be installed locally by executing the following command from the
source code root:cd expampython3 -m pip install --upgrade pippython3 -m pip install -r requirements.txtpython3 setup.py installDocumentationView our online documentation!https://expam.readthedocs.io/en/latest/index.htmlSee the Quick Start Tutorial for a guide to expam's basic usage and download links for pre-built databases.Quick Start TutorialFAQProblems during installationerror: g++: Command not foundThis is simply a matter of updating the compiler.sudo apt-get install build-essentialfatal error: Python.h: No such file or directoryThis simply means you need to install/update the Python development files for version 3.sudo apt-get install python3-dev(Reference -SO)ERROR:: Could not find a local HDF5 installation(Mac)Ensure you have HDF5 installed using Homebrew:brew install pkg-configbrew install hdf5If you seeYou may need to explicitly state where your local HDF5 headers and library can be found by setting the ''HDF5_DIR'' environment variable or by using the ''--hdf5'' command-line option.you will need to explicitly set theHDF5_DIRenvironment variable. To see where HDF5 has been installed, runbrew info hdf5You should see something like/usr/local/Cellar/hdf5/VERSION...or/opt/local/Cellar/hdf5/VERSION...(ie. ignore everything after the complete version, which will have numbers separated by dots). Then set this environment variable withHDF5_DIR=/opt/local/Cellar/hdf5/VERSION,replacing this path with your output frombrew info.Now retry the installation having set this environment variable.ete3 importing errorsFor instance,ImportError: cannot import name 'NodeStyle'.Theete3module depends on Qt to draw things, and there are two stages to getting this to work: first, Qt needs to be installed, and then you need to let Python know that Qt is installed. Follow the following instructions depending on your OS.MacInstall qt5 using brew.brewinstallqt5
brewlist--versionsqt5This should show you the precise version that brew installed. We now tell Python which version of Qt5 to link up with. Say we haveqt@5 5.15.3from the above command, then we would runpython3-mpipinstallpyqt5==5.15Had the output beenqt@5 5.12.0, we would runpython3-mpipinstallpyqt5==5.12ie. the first two parts of the version from brew. This should remedy the problem.LinuxFirst update the local installation of Qt.sudoapt-getinstallqt5-defaultNow double-check which version of Qt has been installed.dpkg-l|grep"pyqt5"Take the first two parts of the version output from this, and pass it to this following install with Pip. For instance, if we haveqt5 5.12.0, take the5.12component. Install the corresponding Python interface to Qt.python3-mpipinstallpyqt5==5.12OOM KillerIf you run into the unlikely circumstance where the OOM killer has been invoked and the program experiences an ungraceful exit, the operating system may not have cleaned all shared memory resources expam used, leading to potentially problematic memory leaks.To prevent this occurring, make prudent use of theexpam_limitfunctionality (see documentation), and don't use an extremely high number of processes (particularly for large databases). Within the range of 10-30 processes will likely be suitable for high-memory machines.If you suspect that OOM killer has been invoked, this can be confirmed using the following command:dmesg-T|egrep-i'killed process'In the event OOM killer has been called, it is prudent to check
how much shared memory is currently being used by the system.df-h/dev/shmIf the amount of shared memory used is higher than you would expect, you can first check if there are any residual resources that need to be cleaned up.ls-lah/dev/shmIf there are files starting with 'psm' and owned by you, these may be residual files that need to be cleaned up. Contact your systems administrator to remove these files.It may also be the case that OOM killer has killed some child process, leaving the parent process sleeping (and therefore holding onto resources). You will need your system administrator's assistance to clean this up.To check for sleeping (expam) processes, runsudolsof/dev/shm|grep"expam"These sleeping processes should then be killed by runningkill-9<PID>Confirm that the leaked memory has been freed by runningdf -h /dev/shm.CommandsA complete list of available commands can by found by using the-h/--helpflags.expam --versionexpam --help...Bug ReportsPlease raise any bug reports athttps://github.com/seansolari/expam/issuesaccompanied by any error messages, a rough description of the database/setup and
parameters used to create the database.