Computing

This page is primarily my own reference for installing programs and codes on a Mac, but if you find it useful, great!  

The link to my GitHub page is : https://github.com/AntonyButcher

Python packages 

Create a new pygmli environment: 

conda create -n pg -c gimli -c conda-forge pygimli=1.2.6

conda activate pg

pandas: 

conda install pandas

pylops - Geophysical inversion library:

conda install -c conda-forge pylops

disba - Surface wave modelling code:

pip install disba

obspy - Seismic processing library: 

conda install -c conda-forge obspy 

mtspec - required for estimating MW to avoid spectral leakage, this is a collection of modules for spectral analysis using the multitaper algorithm. (https://github.com/gaprieto/multitaper)

conda install -c gprieto multitaper

UTM - Coordinate conversion code:

conda install -c conda-forge utm

wget for data downloading and web scraping. I was unable to get the conda version to work, therefore used pip instead

pip install wget

jupyter lab: 

conda install -c conda-forge jupyterlab


SAC 

Seismic Analysis Code (SAC) is a general purpose waveform analysis and processing application. For MacOS the .dmg install file can be found here - https://members.elsi.jp/~george/sac-download.html#gl

I'm currently using release grh-116, which fixed the error "**MMGETS:  Memory allocation failure due to offset > 32 bits." when using grh-113

If this is a first time install, then you'll also need the display server XQuartz, which is a replacement to X11. 


A few commands to get you started ....

sactosac -m myfile.sac  # use this command before opening sac to ensure the data is in big-endian format. Obspy defaults to little-endian. 

bd xwindow    # open a viewer.

qdp off        # turn off quick dirty plot.

r myfile.sac   # read sac file.

ppk perplot 3  # plot data. per plot stipulates the number of traces displayed. Use p to pick p-wave; s to pick s-wave; q to quit and return to command line.

wh             # writes the header to the file. Note, if endian format is incorrect, then using this command in v116 corrupts the data.


SW4

SW4 is 3D finite difference seismic modelling code written by Lawrence Livermore NL. 

It can be downloaded from here - https://geodynamics.org/cig/software/sw4/

I've installed it on a MacOS running Catalina (10.15.2) which was recently updated from 10.14, and had a few issues to overcome while following the installation guide. 

Before installing the following path to CPATH needed to be added: 

export CPATH=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/

and the make.inc file needs to be changed to:

etree = no

proj = no

FC = mpif90

CXX = mpicxx

EXTRA_FORT_FLAGS =

EXTRA_LINK_FLAGS = -framework Accelerate -L/usr/local/gcc-8.3/lib -lgfortran

 

Machine Learning

I've install tensorflow and keras for the purposes of using machine learning to detect seismic arrival. Both were installed using conda environments, however I encountered a problem with a numpy dependancy; basically version 1.14 was the default version however this does not have  'numpy.core._multiarray_umath'. Upgrading using 

pip install numpy --upgrade

did the trick. 


RESIPY

ResIPy is a Python wrapper around the R* family of codes (for 2D/3D DC/IP inversion). ResIPy provides a standalone graphical user interface (GUI) along with a Python API (Application Programming Interface) for use in Jupyter notebook. The code and download instructions can be found here : https://hkex.gitlab.io/resipy/

Installation was relatively simple, though yo might need to install the following dependancies:

pip install chardet 

brew install --cask --no-quarantine wine-stable

I also added the following alias to my .bash_profile to make it easier to run:

alias resipy="python <your filepath>/resipy/src/ui.py"


Bluepeeble

Here at Bristol, HPC is provided through BluePeeble and BlueCrystal. BluePeeble can be used for everyday computing tasks. Here are some commands to use a node through jupyterlab. 

Log into bluepeeble using 

ssh -X  abxxxxx@bp1-login.acrc.bris.ac.uk

where abxxxxx is your logon credentials

Add the following to you .bashrc file using a module of you choice

# .bashrc

 

# Source global definitions

if [ -f /etc/bashrc ]; then

        . /etc/bashrc

fi

 

# Load modules

module load lang/python/anaconda/3.8.8-2021.05

You'll now need to create a python virtual environment with all the require libraries in you work directory. In this example we have call the env digimon. 

conda create --prefix /user/work/abxxxxx/conda/digimon 'python=3.8.8'


ln -s /user/work/abxxxx/conda/digimon ~/.conda/envs/digimon

Next create a SBATCH file which will run jupyter lab on a BP node. This should also be located in your work directory. 

#!/bin/bash

# launch jupyter

 

#SBATCH --job-name=jupyter

#SBATCH --output=jupyter_out

#SBATCH --error=jupyter_error

#SBATCH --nodes=1

#SBATCH --ntasks-per-node=4

#SBATCH --time=14:00:00

#SBATCH --mem=20G

 

# Setup Environment

source .bashrc

source activate .conda/envs/digimon

 

jupyter lab --no-browser --ip "*" \

            --notebook-dir /user/home/abxxxxx/

The previous steps only need to be carried out once. To run the sbatch file on the BP terminal

sbatch sbatchfilename.sh 

and retrive the allocated node number with 

squeue -u username

on your local terminal run, replacing 194 with your node number.

ssh -N -f -L 8888:bp1-compute194:8888 abxxxxx@bp1-login01.acrc.bris.ac.uk

If you have locked the port which multiple atempts to run this command, the process can be kill with 

lsof -ti:8888 | xargs kill -9

Finally, find the require url in the jupyter_error file

nano jupyter_error

and paste this into you browser. 

To kill a SLURM job use 

scancel 1234567

where 1234567 is the job number.

Use

scp -r abxxxxx@bp1-login01.acrc.bris.ac.uk:/user/work/abxxxxx/1-Data/1-FRS local/

or sync using 

rsync -r abxxxxx@bp1-login01.acrc.bris.ac.uk:/user/work/abxxxxx/1-Data/1-FRS local/

to copy files from remote to local.