GithubHelp home page GithubHelp logo

nanobragg_multipanel's Introduction

Installation


This package depends on CCTBX, DXTBX, and DIALS

To install CCTBX, DXTBX and DIALS one needs to create an install folder, and go there

export XTAL=$HOME/Crystal # install 
mkdir $XTAL
cd $XTAL

and then download the cctbx bootrap script which auto installs a lot of packages, including CCTBX, DXTBX, and DIALS

wget https://raw.githubusercontent.com/cctbx/cctbx_project/master/libtbx/auto_build/bootstrap.py

check for cuda

We will try to build using nvcc so that we can run nanoBragg on the GPU. To do that, after setting up CUDA on your machine you need to specify where cuda libraries and tools (e.g. nvcc, nvidia-smi) are located. This usually amounts to

export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64

Before building for GPU-use you should be able to do

nvidia-smi -a

and see the GPU device(s) listed on your current node. Usually its a good idea to also try running some of the cuda sample scripts, e.g.

cd /usr/local/cuda-10.1/samples/1_Utilities/deviceQuery
make
./deviceQuery

If you are working on a cluster, you might simply just have to module load cuda and let all your cuda woes vanish.

Run Bootstrap

Next we can run bootstrap. First use bootstrap to pull in CCTBX+DIALS+DXTBX specific modules

python bootstrap.py hot update --builder=dials

Note bootstrap can be run with most any python, usually your system default will suffice. You will see a modules folder now in $XTAL/modules. This above command can routinely be run to bring in updates, though you can also go to specific module folders and run git pull for any updates. Next we need to build a python environment and for that we use conda (usually bootstrap can also do this, but it tries to be sneaky and find hidden condas you might not want it to use, so the most fool proof installation method is as follows):

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh

Follow the onscreen instructions, elect to install conda somewhere convenient. I let conda build in $XTAL/newconda3 for example. Then with the new conda, create the cctbx environment we will be using by providing the path to an environment file located in the dials repository

source $XTAL/newconda3/etc/profile.d/conda.sh
conda create --name cctbx --file $XTAL/modules/dials/.conda-envs/dials_py36_linux-64.txt
cd $XTAL
python bootstrap.py  build --use_conda=$XTAL/newconda3/envs/cctbx/ --builder=dials --nproc=12 --config-flags='--enable_cuda'

And thats it for the build. It might take a while.

Using the build

Whenever you want to use cctbx,dials, or dxtbx you just need to set your environment with the magic script

source $XTAL/build/setpaths.sh

This will add a lot of programs to your path. Notably it will add libtbx.python which is a wrapper script pointing to your cctbx python installation. You can now write python scripts using cctbx/dials/dxtbx libraries and run them with libtbx.python.

Run the multi panel code


The next step is to clone this repo into the modules folder

cd $XTAL/modules
git clone https://github.com/dermen/nanoBragg_multipanel.git

# install the multi panel format class for using dials image viewer to read multi panel hdf5
cd nanoBragg_multipanel
dxtbx.install_format -u format/FormatHDF5AttributeGeometry.py 

# install dependencies for reading crystfel geometry files
libtbx.python -m pip install cfelpyutils --user

Now we can simulate Jungfrau16M images and Eiger16M images

cd $XTAL/modules/nanoBragg_multipanel/
libtbx.python examples.py

dials.image_viewer jungfrau_images.h5

libtbx.python examples.py --model eiger
dials.image_viewer eiger_images.h5

I hope the script provides a good example of how to simulate multi panel setups! You can use cuda by adding the argument --cuda, though speed ups may not be noticable until you switch on mosacitiy divergence etc. If you add the argument --pinkbeam then a 5% bandwidth X-ray spectrum will be used to simulate the scattering, and there you will definitely notice the GPU version running faster. The spectrum was recorded at BioCars. The Eiger sim takes longer than the Jungfrau - I think because the eiger model includes a finite detector sensor thickness.

Optional: ipython

You can install it along with jupyter (for making jupyter notebooks)

libtbx.python -m pip install jupyter
libtbx.refresh 

# launch an interactive session
libtbx.ipython --pylab

Optional: pycharm

Download the community edition pycharm and when you install it create a new project with the $XTAL/modules folder as root. Choose as your python interpreter $XTAL/build/bin/python. It won't be perfect, but it will index a lot of the code so you can then work with libtbx in an IDE.

nanobragg_multipanel's People

Contributors

dermen avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.