Installation

Source code

Source code of Python wrapper is available on GitHub <https://github.com/lavakyan/mstm-spectrum>. Stable version published on PyPi <https://pypi.org/project/mstm-studio/>.

The source code of MSTM is not included and should be obtained from <https://scattport.org/index.php/light-scattering-software/multiple-particle-scattering/468-mstm>. MSTM studio can be run without MSTM binary, but with restricted functionality.

For non-spherical particles (currently available only spheroids) the ScatterPy library is used (See Binding with ScatterPy).

Linux installation

Install from PyPi:

pip install mstm_studio

On systems without root access:

pip install mstm_studio --user

Running GUI with

python -m mstm_studio

May be required to explicitely specify python version, i.e. use pip3 and python3 in above commands.

Binding with MSTM

MSTM-studio will search for mstm.x binary in ~/bin directory.

This can be altered by setting of MSTM_BIN environment variable, i.e. in bash:

export $MSTM_BIN=~/my_compiled_mstm/mstm_v3.bin

Note

MSTM can be compiled with gfortran as:

gfortran  mpidefs-serial.f90 mstm-intrinsics-v3.0.f90 mstm-modules-v3.0.f90 mstm-main-v3.0.f90 -O2  -o mstm.x

This is serial compilation, for parallel the file mpidefs-serial.f90 should be replaced. Consult the MSTM website for details.

Windows installation

The tested way is using Anaconda Python distribution <https://www.anaconda.com/>.

  1. Open “Anaconda Prompt”. The new terminal window should pop up.
  2. Type in pip install mstm_studio. This may take a while since the dependent code will be downloaded and installed.
  3. Check GUI by typing python -m mstm_studio in Anaconda Prompt or check python scripting by typing import mstm_studio in python console.

Binding with MSTM

  1. Obtain the MSTM binary. Put it to some folder.
  2. Setup environmental variable MSTM_BIN to point on the binary. The shell comannd SETX MSTM_BIN="path_to_your_mstm_bin" will do the temporary setup, which is useful for making *.cmd scripts. Permanent setup of environemnt variable should be done with graphical interface, see for example, <https://docs.oracle.com/en/database/oracle/r-enterprise/1.5.1/oread/creating-and-modifying-environment-variables-on-windows.html>.

Note

If you write *.cmd script to run gui, don’t forget to update PATH variable to point on the Python distribution. The easist way is to type echo %PATH% in Anaconda Promt, and use the output in your script. Example of GUI running script is:

@ECHO OFF
PATH=C:\ProgramData\Anaconda3;C:\ProgramData\Anaconda3\Library\mingw-w64\bin;C:\ProgramData\Anaconda3\Library\usr\bin;C:\ProgramData\Anaconda3\Library\bin;C:\ProgramData\Anaconda3\Scripts;C:\ProgramData\Anaconda3\bin;C:\ProgramData\Anaconda3\condabin;%PATH%
set MSTM_BIN="C:\Users\L\Desktop\mstm_studio old\mstm-spectrum\mstm.exe"
python.exe -m mstm_studio
PAUSE

The last command (PAUSE) is put to prevent console windows from closing after program is ended.

Binding with ScatterPy

For calculation of extinction spectra of isolated non-sphericla particle ScatterPy can be used. This library is available on github <https://github.com/TCvanLeth/ScatterPy> and PiPy repository.

Installation from PyPi: pip install scatterpy or pip install scatterpy --user

ScatterPy without Numba

ScatterPy requires Numba library for speeding up the calculation. However, it is possible to install without Numba:

  1. Download scatterpy source code

  2. Edit file scatterpy/special.py. Remove line:

    import numba as nb
    

    and add lines:

    try:
        import numba as nb
    except ImportError:
        print('WARNING: Numba support is disabled in ScatterPy')
    
  3. Build and install: python setup.py install (Needed setuptools and may be other dev packages)