Scheduled maintenance on Monday 2019-06-24 between 10:00-11:00 CEST

...
 
Commits (19)
---
Language: Cpp
# BasedOnStyle: LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: false
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: false
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Allman
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: false
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
- Regex: '^(<|"(gtest|isl|json)/)'
Priority: 3
- Regex: '.*'
Priority: 1
IndentCaseLabels: true
IndentWidth: 2
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: true
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
ReflowComments: true
SortIncludes: true
SpaceAfterCStyleCast: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 8
UseTab: Never
...
before_script:
- export LANG=C
# define two stages, that way coverage only runs after all other
# tests have been done.
# For some reason doing shallow fetch doesnt work
#variables:
# GIT_DEPTH: "3"
stages:
- build
- tests
- coverage
- deploy
###############################################
# default build (without CUDA)
# default GCC build, with coverage
build-gcc-mpi:
stage: build
script:
- .gitlab-ci/build/run_build.sh gcc-mpi
artifacts:
paths:
- build/
expire_in: 30 days
# default GCC build, minimal test
build-gcc-mpi-test:
stage: build
script:
- .gitlab-ci/build/run_build.sh gcc-mpi
- .gitlab-ci/test/run_test.sh gcc-mpi 4 2
- .gitlab-ci/test/run_coverage.sh build/CMakeFiles/bioEM.dir coverage_data
- .gitlab-ci/test/run_coverage.sh build/CMakeFiles/bioEM.dir coverage_test
artifacts:
paths:
- coverage_data
- coverage_test
expire_in: 30 days
# GPU build (with CUDA)
build-gcc-mpi-cuda:
......@@ -23,3 +41,83 @@ build-gcc-mpi-cuda:
script:
- .gitlab-ci/build/run_build.sh gcc-mpi-cuda
# Intel build
build-intel-mpi:
stage: build
script:
- .gitlab-ci/build/run_build.sh intel-mpi
###############################################
# Extended tests on different inputs
verify_options:
stage: tests
dependencies:
- build-gcc-mpi
script:
- .gitlab-ci/test/verify_options.sh gcc-mpi 4 2
- .gitlab-ci/coverage/ci_coverage_collect.sh
artifacts:
paths:
- ang_prob
- environment
- coverage_data
expire_in: 30 days
# Testing tutorial options
verify_tutorial:
stage: tests
dependencies:
- build-gcc-mpi
script:
- .gitlab-ci/test/verify_tutorial.sh build/bioEM Tutorial_BioEM
- .gitlab-ci/coverage/ci_coverage_collect.sh
artifacts:
paths:
- coverage_data
expire_in: 30 days
# Testing probabilities with different environment options
verify_probabilities:
stage: tests
dependencies:
- build-gcc-mpi
script:
- .gitlab-ci/test/verify_probabilities.sh gcc-mpi 4 2
- .gitlab-ci/coverage/ci_coverage_collect.sh
artifacts:
paths:
- all_probabilities
- environment
- coverage_data
expire_in: 30 days
###############################################
# Print coverage results
total_coverage:
stage: coverage
dependencies:
- verify_options
- verify_tutorial
- verify_probabilities
script:
- echo "Generating coverage report"
- .gitlab-ci/coverage/ci_coverage_summary.sh
artifacts:
paths:
- coverage_summary
expire_in: 30 days
# Publish coverage results
pages:
stage: deploy
dependencies:
- total_coverage
script:
- echo "Publishing pages"
- mv coverage_summary/ public/
artifacts:
paths:
- public
expire_in: 30 days
\ No newline at end of file
......@@ -15,21 +15,21 @@ echo "building BioEM with ARCH=$ARCHITECTURE"
case "$ARCHITECTURE" in
intel-mpi)
module load intel/15.0 impi/5.0.3 fftw/3.3.4 boost/intel/1.56
module load intel impi fftw
rm -rf build/; mkdir build
cd build
cmake .. -DCMAKE_CXX_COMPILER=icpc -DCMAKE_C_COMPILER=icc
cmake .. -DCMAKE_CXX_COMPILER=icpc -DCMAKE_C_COMPILER=icc -DUSE_MPI=on -DUSE_OPENMP=on -DUSE_CUDA=off
make VERBOSE=1 -j 2
;;
gcc-mpi)
module load gcc/4.9 impi/5.0.3 fftw/gcc/3.3.4 boost/gcc/1.56
module load gcc/4.9 impi/5.0.3 fftw/gcc/3.3.4
rm -rf build/; mkdir build
cd build
cmake .. -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS_DEBUG='-g -Wall --coverage' -DCMAKE_C_FLAGS_DEBUG='-g -Wall --coverage'
make VERBOSE=1 -j 2
;;
gcc-mpi-cuda)
module load gcc/4.9 cuda/7.5 impi/5.0.3 fftw/gcc/3.3.4 boost/gcc/1.56
module load gcc/4.9 cuda/7.5 impi/5.0.3 fftw/gcc/3.3.4
rm -rf build/; mkdir build
cd build
cmake .. -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc -DUSE_CUDA=on -DCUDA_CUDA_LIBRARY=$CUDA_HOME/lib64/stubs/libcuda.so
......
#!/bin/bash
PATH=${HOME}/bin:${PATH}
set -e
set pipefail
. /etc/profile.d/modules.sh
module load gcc/4.9
cov_dir=coverage_data
prefix=$cov_dir/coverage_${CI_BUILD_REF}_${CI_BUILD_NAME}
mkdir -p $cov_dir/
for dir in $(find -name "*.gcno" -print0 | xargs -0 -n 1 dirname | sort -u); do
dir=${dir#./};
lcov -c -b $PWD -d $dir --to-package $prefix.${dir//\//_}.package;
done
#!/bin/bash
PATH=${HOME}/bin:${PATH}
. /etc/profile.d/modules.sh
module load gcc/4.9
for p in coverage_data/coverage_${CI_BUILD_REF}*.package ; do
cov_file=$PWD/${p%.package}.info
lcov -c -b $PWD --from-package $p --output-file $cov_file
lcov -r $cov_file "/usr/*" -o $cov_file
lcov -r $cov_file "/usr/include/*" -o $cov_file
lcov -r $cov_file "*4.9.3*" -o $cov_file
lcov -r $cov_file "/afs/*" -o $cov_file
lcov -r $cov_file "BioEM/include/MersenneTwister.h" -o $cov_file
lcov -r $cov_file "BioEM/include/autotuner.h" -o $cov_file
lcov -r $cov_file "BioEM/autotuner.cpp" -o $cov_file
done
lcov $(for i in coverage_data/coverage_${CI_BUILD_REF}_*.info; do echo -a $i; done) -o coverage_data/coverage_${CI_BUILD_REF}.info
lcov --summary coverage_data/coverage_${CI_BUILD_REF}.info 2>&1 | \
awk '/lines|functions/ {
gsub(/\.*:$/, "", $1);
gsub(/^./, "", $3);
printf "%s: %s (%s of %s), ", $1, $2, $3, $5;
}
/branches/ {
print "";
}' | \
sed 's/^/__COVERAGE__:/; s/, $//;'
mkdir -p coverage_summary
genhtml coverage_data/coverage_${CI_BUILD_REF}.info -o coverage_summary
#!/bin/bash
# Tests assume 4 nodes, with two GPUs per node.
# If this is not the case, adapt the configuration!
# Input paths
BUILD_DIR=${1}
INPUT_DIR=${2}
datafile=${3}
# Environment variables
export BIOEM="$BUILD_DIR/bioEM"
export FFTALGO=1 # Although this is needed only for BioEM<2.0
export GPUDEVICE=-1
export KMP_AFFINITY=compact,granularity=core,1
export BIOEM_DEBUG_OUTPUT=1
# Environment capture
> $datafile
$HOME/BioEM_project/get_info.sh $datafile
rm -rf Output_Probabilities
###################################
# Exp 1: Large benchmark, with best config
echo "* EXP 1: LARGE BENCH OUTPUT (FACTOR 10)" >> $datafile
#export BIOEM_ALGO=1
export GPU=1
#export GPUWORKLOAD=-1
#export BIOEM_CUDA_THREAD_COUNT=256
export BIOEM_DEBUG_BREAK=1350
#export BIOEM_DEBUG_NMAPS=2000
export OMP_NUM_THREADS=12
#export BIOEM_PROJECTIONS_AT_ONCE=1
export NP=2
# Running
mpiexec -perhost $NP $BIOEM --Inputfile $INPUT_DIR/INPUT_FRH_Sep2016 --Modelfile $INPUT_DIR/Mod_X-ray_PDB --Particlesfile $INPUT_DIR/2000FRH_Part >> $datafile
# Saving probabilities
echo "* EXP 1: PROBABILITIES" >> $datafile
cat Output_Probabilities >> $datafile
# Cleanup
rm -rf Output_Probabilities
unset BIOEM_ALGO GPU GPUWORKLOAD BIOEM_CUDA_THREAD_COUNT BIOEM_DEBUG_BREAK BIOEM_DEBUG_NMAPS OMP_NUM_THREADS BIOEM_PROJECTIONS_AT_ONCE NP
###################################
# Exp 2: Middle benchmark, with best config
echo "* EXP 2: MIDDLE BENCH OUTPUT (FACTOR 10)" >> $datafile
export BIOEM_ALGO=1
export GPU=1
export GPUWORKLOAD=-1
#export BIOEM_CUDA_THREAD_COUNT=256
export BIOEM_DEBUG_BREAK=600
export BIOEM_DEBUG_NMAPS=100
export OMP_NUM_THREADS=12
export BIOEM_PROJECTIONS_AT_ONCE=2
export NP=2
# Running
mpiexec -perhost $NP $BIOEM --Inputfile $INPUT_DIR/INPUT_FRH_Sep2016 --Modelfile $INPUT_DIR/Mod_X-ray_PDB --Particlesfile $INPUT_DIR/2000FRH_Part >> $datafile
# Saving probabilities
echo "* EXP 2: MIDDLE BENCH PROBABILITIES" >> $datafile
cat Output_Probabilities >> $datafile
# Cleanup
rm -rf Output_Probabilities
unset BIOEM_ALGO GPU GPUWORKLOAD BIOEM_CUDA_THREAD_COUNT BIOEM_DEBUG_BREAK BIOEM_DEBUG_NMAPS OMP_NUM_THREADS BIOEM_PROJECTIONS_AT_ONCE NP
###################################
# Exp 3: Small benchmark, with best ALGO=1 config
echo "* EXP 3: SMALL BENCH OUTPUT (FACTOR 10)" >> $datafile
x=1
mod=`awk -v x=$x 'NR==x' $INPUT_DIR/ListParticles`
export GPU=0
export BIOEM_ALGO=1
#export GPUWORKLOAD=100
#export BIOEM_CUDA_THREAD_COUNT=256
export BIOEM_DEBUG_BREAK=600
export BIOEM_DEBUG_NMAPS=1
export OMP_NUM_THREADS=1
export BIOEM_PROJECTIONS_AT_ONCE=1
export NP=96
# Running
mpiexec -perhost $NP $BIOEM --Modelfile $INPUT_DIR/CA-Ref_Nosym.pdb --ReadPDB --Inputfile $INPUT_DIR/Param_Input_AP-1 --Particlesfile $INPUT_DIR/IMAGES/$mod --ReadMRC --ReadOrientation $INPUT_DIR/LISTS_ORIENTATIONS/List_ori_$x >> $datafile
# Saving probabilities
echo "* EXP 3: SMALL BENCH PROBABILITIES" >> $datafile
cat Output_Probabilities >> $datafile
# Cleanup
rm -rf Output_Probabilities
unset BIOEM_ALGO GPU GPUWORKLOAD BIOEM_CUDA_THREAD_COUNT BIOEM_DEBUG_BREAK BIOEM_DEBUG_NMAPS OMP_NUM_THREADS BIOEM_PROJECTIONS_AT_ONCE NP
###################################
# Exp 4: Small benchmark, with CPU-only ALGO=2 config
echo "* EXP 4: SMALL BENCH OUTPUT (FACTOR 10)" >> $datafile
x=1
mod=`awk -v x=$x 'NR==x' $INPUT_DIR/ListParticles`
export GPU=0
export BIOEM_ALGO=2
#export GPUWORKLOAD=100
#export BIOEM_CUDA_THREAD_COUNT=256
export BIOEM_DEBUG_BREAK=600
export BIOEM_DEBUG_NMAPS=1
export OMP_NUM_THREADS=12
export BIOEM_PROJECTIONS_AT_ONCE=12
export NP=2
# Running
mpiexec -perhost $NP $BIOEM --Modelfile $INPUT_DIR/CA-Ref_Nosym.pdb --ReadPDB --Inputfile $INPUT_DIR/Param_Input_AP-1 --Particlesfile $INPUT_DIR/IMAGES/$mod --ReadMRC --ReadOrientation $INPUT_DIR/LISTS_ORIENTATIONS/List_ori_$x >> $datafile
# Saving probabilities
echo "* EXP 4: SMALL BENCH PROBABILITIES" >> $datafile
cat Output_Probabilities >> $datafile
# Cleanup
rm -rf Output_Probabilities
unset BIOEM_ALGO GPU GPUWORKLOAD BIOEM_CUDA_THREAD_COUNT BIOEM_DEBUG_BREAK BIOEM_DEBUG_NMAPS OMP_NUM_THREADS BIOEM_PROJECTIONS_AT_ONCE NP
###################################
# Exp 5: Small benchmark, with best ALGO=2 config
echo "* EXP 5: SMALL BENCH OUTPUT (FACTOR 10)" >> $datafile
x=1
mod=`awk -v x=$x 'NR==x' $INPUT_DIR/ListParticles`
export GPU=1
export BIOEM_ALGO=2
export GPUWORKLOAD=100
export BIOEM_CUDA_THREAD_COUNT=1024
export BIOEM_DEBUG_BREAK=600
export BIOEM_DEBUG_NMAPS=1
export OMP_NUM_THREADS=12
#export BIOEM_PROJECTIONS_AT_ONCE=1
export NP=2
# Running
mpiexec -perhost $NP $BIOEM --Modelfile $INPUT_DIR/CA-Ref_Nosym.pdb --ReadPDB --Inputfile $INPUT_DIR/Param_Input_AP-1 --Particlesfile $INPUT_DIR/IMAGES/$mod --ReadMRC --ReadOrientation $INPUT_DIR/LISTS_ORIENTATIONS/List_ori_$x >> $datafile
# Saving probabilities
echo "* EXP 5: SMALL BENCH PROBABILITIES" >> $datafile
cat Output_Probabilities >> $datafile
# Cleanup
rm -rf Output_Probabilities
unset BIOEM_ALGO GPU GPUWORKLOAD BIOEM_CUDA_THREAD_COUNT BIOEM_DEBUG_BREAK BIOEM_DEBUG_NMAPS OMP_NUM_THREADS BIOEM_PROJECTIONS_AT_ONCE NP
......@@ -8,7 +8,6 @@ module load gcc/4.9
mkdir $OUTPUT_DIR
lcov --no-checksum --capture --directory $INPUT_DIR --output-file coverage.info
lcov -r coverage.info */boost/* --output-file coverage.info
lcov -r coverage.info /usr/* --output-file coverage.info
lcov -r coverage.info /usr/include/* --output-file coverage.info
lcov -r coverage.info *4.9.3* --output-file coverage.info
......
#!/bin/bash
# FAIL in case of any error
set -e
function exittrap {
echo "$0 failed"
exit 1
}
trap exittrap ERR INT TERM
set -x
# Environment
ARCH=$1
NUMPROCS=${2:-4}
NUMTHRDS=${3:-2}
BIOEM=../build/bioEM
. /etc/profile.d/modules.sh
module load impi
export OMP_NUM_THREADS=$NUMTHRDS
export OMP_PLACES=cores
export OMP_STACKSIZE=128M
cat /proc/cpuinfo > environment
env >> environment
> ang_prob
cp -r Tutorial_BioEM test2
cd test2
# Compare results with a certain numerical precision
NUMDIFF=/home/rzg/soft/numdiff/bin/numdiff
# Running tests
echo "@testing help output (error allowed)"
$BIOEM --help || true
echo "@testing debugging options"
BIOEM_DEBUG_OUTPUT=2 BIOEM_DEBUG_BREAK=2 BIOEM_DEBUG_NMAPS=1 $BIOEM --Inputfile Param_Input --Modelfile Model_Text --Particlesfile Text_Image_Form
echo "@testing prior probabilities"
$BIOEM --Modelfile Model_Text --Particlesfile Text_Image_Form --Inputfile Param_Input_Priors --ReadOrientation Euler_Angle_List_Prior
$NUMDIFF --relative=1e-2 Output_Probabilities test_outputs/Output_Probabilities_prior
echo "@testing print map model"
$BIOEM --Modelfile Model.pdb --ReadPDB --PrintBestCalMap Param_Print_MAP
# Random generator is involved, so there is no sence to compare the error
#$NUMDIFF --relative=1e-4 BESTMAP test_outputs/BESTMAP
echo "@testing print posterior as a function of orientations"
mpiexec -n $NUMPROCS $BIOEM --Inputfile Param_Input_WritePAng --Modelfile Model_Text --Particlesfile Text_Image_Form
cat ANG_PROB > ang_prob
$NUMDIFF --overview ANG_PROB test_outputs/ANG_PROB || true
$NUMDIFF --relative=1e-2 ANG_PROB test_outputs/ANG_PROB
echo "@successfully finished testing several specific options"
#!/bin/bash
# FAIL in case of any error
set -e
function exittrap {
echo "$0 failed"
exit 1
}
trap exittrap ERR INT TERM
set -x
# Environment
ARCH=$1
NUMPROCS=${2:-4}
NUMTHRDS=${3:-2}
BIOEM=../build/bioEM
. /etc/profile.d/modules.sh
module load impi
export OMP_NUM_THREADS=$NUMTHRDS
export OMP_PLACES=cores
export OMP_STACKSIZE=128M
cat /proc/cpuinfo > environment
env >> environment
> all_probabilities
cp -r Tutorial_BioEM test3
cd test3
# Compare results with a certain numerical precision
NUMDIFF=/home/rzg/soft/numdiff/bin/numdiff
# Running experiments
for algo in 1 2
do
for gpu in 0
do
for proj in 1 $OMP_NUM_THREADS
do
echo "@running probabilities for BIOEM_ALGO=$algo GPU=$gpu BIOEM_PROJ_CONV_AT_ONCE=$proj"
BIOEM_ALGO=$algo GPU=$gpu BIOEM_PROJ_CONV_AT_ONCE=$proj BIOEM_DEBUG_OUTPUT=2 mpiexec -n $NUMPROCS $BIOEM --Inputfile Param_Input --Modelfile Model_Text --Particlesfile Text_Image_Form
echo "@probabilities for BIOEM_ALGO=$algo GPU=$gpu BIOEM_PROJ_CONV_AT_ONCE=$proj"
cat Output_Probabilities
cat Output_Probabilities >> all_probabilities
echo "@comparing Output_Probabilities test_outputs/Output_Probabilities_ref"
$NUMDIFF --overview Output_Probabilities test_outputs/Output_Probabilities_ref || true
echo "@verifying Output_Probabilities test_outputs/Output_Probabilities_ref"
$NUMDIFF --relative=1e-1 Output_Probabilities test_outputs/Output_Probabilities_ref
done
done
done
echo "@successfully finished testing probabilities for both algorithms"
#!/bin/bash
# FAIL in case of any error
set -e
function exittrap {
echo "$0 failed"
exit 1
}
trap exittrap ERR INT TERM
set -x
# Environment
BIOEM=../${1}
TUTORIAL_DIR=$2
echo "BioEM path: ${BIOEM}"
echo "Tutorial directory path: ${TUTORIAL_DIR}"
rm -rf testTutorial
cp -r $TUTORIAL_DIR testTutorial
cd testTutorial
# Running tests
echo "@testing all tutorial options"
echo "@@ Text model - Text Image"
$BIOEM --Inputfile Param_Input --Modelfile Model_Text --Particlesfile Text_Image_Form
echo "@@ PDB Model - Text Image "
$BIOEM --Inputfile Param_Input --Modelfile Model.pdb --ReadPDB --Particlesfile Text_Image_Form
echo "@@ PDB Model - One MRC Image"
$BIOEM --Inputfile Param_Input --Modelfile Model.pdb --ReadPDB --Particlesfile OneImage.mrc --ReadMRC
echo "@@ PDB Model - Multiple MRCs"
$BIOEM --Inputfile Param_Input --Modelfile Model.pdb --ReadPDB --Particlesfile ListMRC --ReadMRC --ReadMultipleMRC
echo "@@ Read Euler angles from file"
$BIOEM --Inputfile Param_Input --Modelfile Model.pdb --ReadPDB --Particlesfile Text_Image_Form --ReadOrientation Euler_Angle_List
echo "@@ Read quaternions from file"
$BIOEM --Inputfile Param_Input_Quat --Modelfile Model.pdb --ReadPDB --Particlesfile Text_Image_Form --ReadOrientation Quat_list_Small
echo "@@ Input-parameter suggestions"
echo "Disabled as it is too long for the current CI"
#$BIOEM --Inputfile Param_Input_Quat --Modelfile Model.pdb --ReadPDB --Particlesfile Text_Image_Form --ReadOrientation List_Quat_ProRun
echo "@@ Dump particle-images"
$BIOEM --Inputfile Param_Input --Modelfile Model.pdb --ReadPDB --Particlesfile ListMRC --ReadMRC --ReadMultipleMRC --DumpMaps
echo "@@ Load particle-images"
$BIOEM --Inputfile Param_Input --Modelfile Model.pdb --ReadPDB --LoadMapDump
echo "@@ Including prior probabilities"
$BIOEM --Modelfile Model_Text --Particlesfile Text_Image_Form --Inputfile Param_Input_Priors --ReadOrientation Euler_Angle_List_Prior
## Dont test for the PrintBestCalMap as it is in the other test (and not in Tutorial anymore)
echo "@successfully finished testing all tutorial options"
......@@ -2,11 +2,12 @@
Authors of BioEM
=======================
*** v1.0 in 2016
*** v2.0 in 2017
Pilar Cossio
David Rohr
Fabio Barruffa
Luka Stanisic
Markus Rampp
Volker Lindenstruth
Gerhard Hummer
......@@ -29,7 +29,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}")
include_directories(include)
set (BIOEM_ICC_FLAGS "-xHost -O3 -fno-alias -fno-fnalias -unroll -g0 -ipo")
set (BIOEM_ICC_FLAGS "-O3 -fno-alias -fno-fnalias -unroll -g0 -ip")
set (BIOEM_GCC_FLAGS "-O3 -march=native -fweb -mfpmath=sse -frename-registers -minline-all-stringops -ftracer -funroll-loops -fpeel-loops -fprefetch-loop-arrays -ffast-math -ggdb")
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
......@@ -50,11 +50,6 @@ if (NOT FFTW_FOUND)
endif()
include_directories(${FFTW_INCLUDE_DIRS})
find_package( Boost 1.43 REQUIRED COMPONENTS program_options )
include_directories( ${Boost_INCLUDE_DIRS} )
###Find Optional Packages
###Find CUDA
......@@ -163,7 +158,6 @@ if (FFTWF_LIBRARIES)
else()
target_link_libraries(bioEM -L${FFTW_LIBDIR} -lfftw3 -lfftw3f)
endif()
target_link_libraries(bioEM ${Boost_PROGRAM_OPTIONS_LIBRARY})
if (MPI_FOUND)
target_link_libraries(bioEM ${MPI_LIBRARIES})
......@@ -172,7 +166,6 @@ endif()
###Show Status
message(STATUS "Build Status")
message(STATUS "FFTW library: ${FFTW_LIBDIR}")
message(STATUS "Boost directory: ${Boost_LIBRARY_DIRS}")
message(STATUS "FFTW includedir: ${FFTW_INCLUDEDIR}")
message(STATUS "CUDA libraries: ${CUDA_CUDA_LIBRARY}")
message(STATUS "CUDART libraries: ${CUDA_LIBRARIES}")
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
\begin{titlepage}
\begin{center}
\thispagestyle{empty}
\vfill
% Title
\vspace{0.8 in}
\centerline{\textit{}}
\vspace{1 in}
\HRule \\[0.5in]
{\fontsize{50}{60}\selectfont BioEM Manual}
\vspace{0.5 in}
\HRule \\[0.5in]
\vspace{0.4 in}
\centerline{\textit{}}
\vspace{0.7 in}
\centerline{\Large \textit{A software for Bayesian analysis of EM images}}
\vspace{2 in}
%\centerline{\large \textit{Theoretical Biophysics}}
\centerline{\small \textbf{Max Planck Institute of Biophysics}}
\vspace{0.1 in}
\centerline{\small \textbf{Frankfurt Institute for Advanced Studies}}
\vspace{0.1 in}
\centerline{\small \textbf{Max Planck Computing and Data Facility}}
\vspace{0.2 in}
\centerline{\Large 2016}
\vfill
% Bottom of the page
%{\large \today}
\end{center}
\end{titlepage}
......@@ -3,13 +3,15 @@
## Build status and test coverage
[![Build status](https://gitlab.mpcdf.mpg.de/MPIBP-Hummer/BioEM/badges/master/build.svg)](https://gitlab.mpcdf.mpg.de/MPIBP-Hummer/BioEM/commits/master)
[![Code coverage](https://gitlab.mpcdf.mpg.de/MPIBP-Hummer/BioEM/badges/master/coverage.svg)](http://MPIBP-Hummer.pages.mpcdf.de/BioEM/)
[![Build status](https://gitlab.mpcdf.mpg.de/MPIBP-Hummer/BioEM/badges/master/build.svg)](https://gitlab.mpcdf.mpg.de/sluka/BioEM/commits/master)
[![Code coverage](https://gitlab.mpcdf.mpg.de/MPIBP-Hummer/BioEM/badges/master/coverage.svg?job=total_coverage)](http://sluka.pages.mpcdf.de/BioEM/)
[![Doc](https://readthedocs.org/projects/pip/badge/?version=stable)](http://bioem.readthedocs.io)
[![License: GPL v3][license-badge]](License.txt)
## Contributors
Pilar Cossio, David Rohr, Fabio Baruffa, Markus Rampp, Volker Lindenstruth and Gerhard Hummer
Pilar Cossio, David Rohr, Fabio Baruffa, Markus Rampp, Luka Stanisic, Volker Lindenstruth and Gerhard Hummer
## References
......@@ -33,18 +35,16 @@ For a detailed description of the BioEM software see the BioEM_Maunal.pdf that i
++++++++++++ FROM COMMAND LINE +++++++++++
Command line inputs:
--Modelfile arg (Mandatory) Name of model file
--Particlesfile arg if BioEM (Mandatory) Name of particle-image file
--Inputfile arg if BioEM (Mandatory) Name of input parameter file
--PrintBestCalMap arg (Optional) Only print best calculated map. NO BioEM (!)
--Modelfile arg (Mandatory) Name of model file
--Particlesfile arg (Mandatory) Name of particle-image file
--Inputfile arg (Mandatory) Name of input parameter file
--ReadOrientation arg (Optional) Read file name containing orientations
--ReadPDB (Optional) If reading model file in PDB format
--ReadMRC (Optional) If reading particle file in MRC format
--ReadMultipleMRC (Optional) If reading Multiple MRCs
--DumpMaps (Optional) Dump maps after they were read from
particle-image file
--DumpMaps (Optional) Dump maps after they were read from particle-image file
--LoadMapDump (Optional) Read Maps from dump option
--OutputFile arg (Optional) For changing the outputfile name
--OutputFile arg (Optional) For changing the outputfile name
--help (Optional) Produce help message
Details for the inputfiles and formats are provided in chapters 1 and 2 of the BioEM_Manual.pdf.
......@@ -102,10 +102,6 @@ Dependencies and software requirements:
for free software see: http://www.fftw.org
* BOOST
for free software see: http://www.boost.org/
* CUDA (required to build and run the GPU version)
for free software see: https://developer.nvidia.com/cuda-downloads
......@@ -123,3 +119,5 @@ threads etc. These are passed via environment variables. See chapter 3 of the Bi
The BioEM program is a free software, under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License.
This program is distributed in the hope that it will be useful, but without any warranty. See License.txt for more details.
[license-badge]: https://img.shields.io/badge/License-GPL%20v3-blue.svg
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
##### Micrograph Parameters #######
NUMBER_PIXELS 224
PIXEL_SIZE 1.32
##### Quaterion grid points: #######
USE_QUATERNIONS
##### Constrast transfer integration: #######
CTF_B_ENV 2.0 300. 4
CTF_DEFOCUS 0.5 4.5 8
CTF_AMPLITUDE 0.01 0.601 5
SIGMA_PRIOR_B_CTF 50.
SIGMA_PRIOR_DEFOCUS 0.4
PRIOR_DEFOCUS_CENTER 2.8
##### Center displacement: #######
DISPLACE_CENTER 40 1
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
### run in /bin/bash
#$ -S /bin/bash
#$ -cwd
#$ -N bioem-test-array
#$ -l h_rt=00:30:00
### Allocating nodes with 2 GPUs each, on "phys" cluster
#$ -pe impi_hydra 24
#$ -P gpu
#$ -l use_gpus=1
#$ -l type_gpus=gtx1080
### Allocation job-array for 20 jobs
#$ -t 1-20
set -e
# Local ID of the job
x=$SGE_TASK_ID
SGE_TASK_COUNT=$((($SGE_TASK_LAST - $SGE_TASK_FIRST + 1) / $SGE_TASK_STEPSIZE))
# Loading necessary libraries
module purge
module load intel impi cuda python33/python/3.3 python33/scipy/2015.10
# Variables
#TMPDIR="/tmp/"
M=M2
MODEL=MODEL_2
GRID=smallGrid_125
PYTHON=python3.3
INPUTPROB=Output_${MODEL}
ORIENTATIONS=${TMPDIR}/Quaternion_List_${M}_P${x}
TMP1=${TMPDIR}/base${x}
TMP2=${TMPDIR}/ll${x}
OUTPUTPROB=${TMPDIR}/Output_${MODEL}_P${x}
FINALOUTTMP=Output_Tmp
FINALOUTPROB=Output_${MODEL}_Round2
##########################################################
##########################################################
##########################################################
# Creating list of quaternions
grep Maxi ${INPUTPROB} | grep -v Notat | awk -v y=${x} '{if(NR==y)print $6,$8,$10,$12}' > ${TMP1}
# Using the python numpy library to multiply the quaternions
$PYTHON ./multiply_quat.py ${TMP1} ${GRID} > ${TMP2}
# Generating the list of quaternions around the best orientation from base
echo 125 > ${ORIENTATIONS}
sed 's/,/ /g' ${TMP2} | sed 's/)/ /g' | sed 's/(/ /g' | awk '{printf"%12.8f%12.8f%12.8f%12.8f\n",$1,$2,$3,$4}' >> ${ORIENTATIONS}
rm -f ${TMP1} ${TMP2}
##########################################################
##########################################################
##########################################################
# BioEM part Round 2
# Path to your BioEM installation
BIOEM=${HOME}/BioEM_project/build/bioEM
# Running BioEM
OMP_NUM_THREADS=12 GPU=1 GPUDEVICE=-1 BIOEM_DEBUG_OUTPUT=0 BIOEM_ALGO=2 mpiexec -perhost 2 ${BIOEM} --Modelfile ${MODEL} --Particlesfile Particles/Particle_$x --Inputfile Param_Input_ModelComparision --ReadOrientation ${ORIENTATIONS} --OutputFile ${OUTPUTPROB}
##########################################################
##########################################################
##########################################################
# Writing results with a proper text in a proper order
# Note that the order in which jobs are going to finish is undetermined, but the results are written in the good order at the end
# Writing to the temporary shared file
echo Job: ${x} $(tail -2 ${OUTPUTPROB} | head -1 | sed 's/RefMap: 0/RefMap: '${x}'/') >> ${FINALOUTTMP}
echo Job: ${x} $(tail -1 ${OUTPUTPROB} | sed 's/RefMap: 0/RefMap: '${x}'/') >> ${FINALOUTTMP}
# Cleanup
rm -f ${ORIENTATIONS} ${OUTPUTTPROB}
# If this was the last job, sort everything and remove JobID
y=2
if [[ $(wc -l < ${FINALOUTTMP}) == $(( $y * $SGE_TASK_COUNT )) ]]
then
sort -n -k 2 ${FINALOUTTMP} | sed 's/Job: [0-9]\+ //' > ${FINALOUTPROB}
rm -rf ${FINALOUTTMP}
fi
#!/bin/bash -l
# Standard output and error:
#SBATCH -o ./tjob_hybrid.out.%j
#SBATCH -e ./tjob_hybrid.err.%j
# Initial working directory:
#SBATCH -D ./
# Job Name:
#SBATCH -J bioem-test-array
# Queue (Partition):
#SBATCH --partition=gpu
# Node feature:
#SBATCH --constraint="gpu"
# Number of nodes and MPI tasks per node:
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=2
# for OpenMP:
#SBATCH --cpus-per-task=16
#SBATCH --time=00:30:00
# Submitting an array
#SBATCH --array=1-20
set -e
echo "Hello: I'm task $SLURM_ARRAY_TASK_ID. SLURM_ARRAY_TASK_MIN=$SLURM_ARRAY_TASK_MIN SLURM_ARRAY_TASK_MAX=$SLURM_ARRAY_TASK_MAX SLURM_ARRAY_TASK_STEP=$SLURM_ARRAY_TASK_STEP"
x=$SLURM_ARRAY_TASK_ID
# The following line is only needed for the older Slurm versions
SLURM_ARRAY_TASK_COUNT=$((($SLURM_ARRAY_TASK_MAX - $SLURM_ARRAY_TASK_MIN + 1) / $SLURM_ARRAY_TASK_STEP))
##########################################################
##########################################################
##########################################################
# Creating a list of quaternions for a specific particle image
# Code similar to the create_gridOr.sh script, only for a single particle image
# Loading Python
module purge
module load anaconda/3/4.3.1
# Variables
#TMPDIR="/tmp/"
M=M1
MODEL=MODEL_1
GRID=smallGrid_125
PYTHON=python3.6
INPUTPROB=Output_${MODEL}
ORIENTATIONS=${TMPDIR}/Quaternion_List_${M}_P${x}
TMP1=${TMPDIR}/base${x}
TMP2=${TMPDIR}/ll${x}
OUTPUTPROB=${TMPDIR}/Output_${MODEL}_P${x}
FINALOUTTMP=Output_Tmp
FINALOUTPROB=Output_${MODEL}_Round2
# Creating list of quaternions
grep Maxi ${INPUTPROB} | grep -v Notat | awk -v y=${x} '{if(NR==y)print $6,$8,$10,$12}' > ${TMP1}
# Using the python numpy library to multiply the quaternions
$PYTHON ./multiply_quat.py ${TMP1} ${GRID} > ${TMP2}
# Generating the list of quaternions around the best orientation from base
echo 125 > ${ORIENTATIONS}
sed 's/,/ /g' ${TMP2} | sed 's/)/ /g' | sed 's/(/ /g' | awk '{printf"%12.8f%12.8f%12.8f%12.8f\n",$1,$2,$3,$4}' >> ${ORIENTATIONS}
rm -f ${TMP1} ${TMP2}
##########################################################
##########################################################
##########################################################
# BioEM part Round 2
# Loading necessary modules for Intel compilers
module load intel/17.0
module load impi/2017.3
module load fftw/3.3.6
module load cuda/8.0
# Environment variables
export OMP_NUM_THREADS=16
export OMP_PLACES=cores
export GPUDEVICE=-1
export GPUWORKLOAD=100
# Environment variable to tune
export BIOEM_CUDA_THREAD_COUNT=1024
export BIOEM_DEBUG_OUTPUT=1
export BIOEM_ALGO=2
export GPU=1
export BIOEM_PROJ_CONV_AT_ONCE=16
# Path to your BioEM installation
BIOEM=${HOME}/BioEM_project/build/bioEM
# Running BioEM
mpiexec -perhost 2 ${BIOEM} --Modelfile ${MODEL} --Particlesfile Particles/Particle_$x --Inputfile Param_Input_ModelComparision --ReadOrientation ${ORIENTATIONS} --OutputFile ${OUTPUTPROB}
##########################################################
##########################################################
##########################################################
# Writing results with a proper text in a proper order
# Note that the order in which jobs are going to finish is undetermined, but the results are written in the good order at the end
# Writing to the temporary shared file
echo Job: ${x} $(tail -2 ${OUTPUTPROB} | head -1 | sed 's/RefMap: 0/RefMap: '${x}'/') >> ${FINALOUTTMP}
echo Job: ${x} $(tail -1 ${OUTPUTPROB} | sed 's/RefMap: 0/RefMap: '${x}'/') >> ${FINALOUTTMP}
# Cleanup
rm -f ${ORIENTATIONS} ${OUTPUTTPROB}
y=2
# If this was the last job, sort everything and remove JobID
if [[ $(wc -l < ${FINALOUTTMP}) == $(( $y * $SGE_TASK_COUNT )) ]]
then
sort -n -k 2 ${FINALOUTTMP} | sed 's/Job: [0-9]\+ //' > ${FINALOUTPROB}
rm -rf ${FINALOUTTMP}
fi
### to run:
# ./create_gridOr.sh $1 $2
## $1 == Output file from previous BioEM round
## $2 == Name to put on lists
# necessary python libraries:
module load python33/python/3.3 python33/scipy/2015.10
PYTHON=python3.3
TMPDIR=/tmp/
INDIR=${TMPDIR}/Quaternion_Lists_${2}
mkdir -p ${INDIR}
OUTPUTFILE=${INDIR}/Quaternion_List_${2}_P
TMP1=${TMPDIR}/base
TMP2=${TMPDIR}/ll
#Change the variable for the total number of images
numim=20
for((y=1;y<${numim}+1;y++))
do
#Extracting the best orientation from the output file from column 1
grep Maxi $1 | grep -v Notat | awk -v x=$y '{if(NR==x)print $6,$8,$10,$12}' > ${TMP1}
#Using the python numpy library to multiply the quaternions
$PYTHON ./multiply_quat.py ${TMP1} smallGrid_125 > ${TMP2}
#generating the list of quaternions around the best orientation from base
echo 125 > ${OUTPUTFILE}${y}
sed 's/,/ /g' ${TMP2} | sed 's/)/ /g' | sed 's/(/ /g' | awk '{printf"%12.8f%12.8f%12.8f%12.8f\n",$1,$2,$3,$4}' >> ${OUTPUTFILE}${y}
echo "Finished ${y}/${numim}"
rm ${TMP1} ${TMP2}
done
import math
import numpy as np
import sys
base = sys.argv[1]
smallGrid = sys.argv[2]
def q_mult(q1, q2):
x1, y1, z1, w1 = q1
x2, y2, z2, w2 = q2
w = w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2
x = w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2
y = w1 * y2 + y1 * w2 + z1 * x2 - x1 * z2
z = w1 * z2 + z1 * w2 + x1 * y2 - y1 * x2
return x, y, z, w
file = open(base,'r')
linesbase = file.readlines()
file.close()
for ii in linesbase:
b0 = float(ii.split()[0])
b1 = float(ii.split()[1])
b2 = float(ii.split()[2])
b3 = float(ii.split()[3])
base = np.array([b0,b1,b2,b3])
file = open(smallGrid,'r')
lines = file.readlines()
file.close()
for i in lines:
q0t = float(i.split()[0])
q1t = float(i.split()[1])
q2t = float(i.split()[2])
q3t = float(i.split()[3])
dqt = np.array([q0t,q1t,q2t,q3t])
v = q_mult(base,dqt)
print (v)
-0.02000000 -0.02000000 -0.02000000 0.99939982
-0.02000000 -0.02000000 -0.01000000 0.99954990
-0.02000000 -0.02000000 -0.00000000 0.99959992
-0.02000000 -0.02000000 0.01000000 0.99954990
-0.02000000 -0.02000000 0.02000000 0.99939982
-0.02000000 -0.01000000 -0.02000000 0.99954990
-0.02000000 -0.01000000 -0.01000000 0.99969995
-0.02000000 -0.01000000 -0.00000000 0.99974997
-0.02000000 -0.01000000 0.01000000 0.99969995
-0.02000000 -0.01000000 0.02000000 0.99954990
-0.02000000 -0.00000000 -0.02000000 0.99959992
-0.02000000 -0.00000000 -0.01000000 0.99974997
-0.02000000 -0.00000000 -0.00000000 0.99979998
-0.02000000 -0.00000000 0.01000000 0.99974997
-0.02000000 -0.00000000 0.02000000 0.99959992
-0.02000000 0.01000000 -0.02000000 0.99954990
-0.02000000 0.01000000 -0.01000000 0.99969995
-0.02000000 0.01000000 -0.00000000 0.99974997
-0.02000000 0.01000000 0.01000000 0.99969995
-0.02000000 0.01000000 0.02000000 0.99954990
-0.02000000 0.02000000 -0.02000000 0.99939982
-0.02000000 0.02000000 -0.01000000 0.99954990
-0.02000000 0.02000000 -0.00000000 0.99959992
-0.02000000 0.02000000 0.01000000 0.99954990
-0.02000000 0.02000000 0.02000000 0.99939982
-0.01000000 -0.02000000 -0.02000000 0.99954990
-0.01000000 -0.02000000 -0.01000000 0.99969995
-0.01000000 -0.02000000 -0.00000000 0.99974997
-0.01000000 -0.02000000 0.01000000 0.99969995
-0.01000000 -0.02000000 0.02000000 0.99954990
-0.01000000 -0.01000000 -0.02000000 0.99969995
-0.01000000 -0.01000000 -0.01000000 0.99984999
-0.01000000 -0.01000000 -0.00000000 0.99989999
-0.01000000 -0.01000000 0.01000000 0.99984999
-0.01000000 -0.01000000 0.02000000 0.99969995
-0.01000000 -0.00000000 -0.02000000 0.99974997
-0.01000000 -0.00000000 -0.01000000 0.99989999
-0.01000000 -0.00000000 -0.00000000 0.99995000
-0.01000000 -0.00000000 0.01000000 0.99989999
-0.01000000 -0.00000000 0.02000000 0.99974997
-0.01000000 0.01000000 -0.02000000 0.99969995
-0.01000000 0.01000000 -0.01000000 0.99984999
-0.01000000 0.01000000 -0.00000000 0.99989999
-0.01000000 0.01000000 0.01000000 0.99984999
-0.01000000 0.01000000 0.02000000 0.99969995
-0.01000000 0.02000000 -0.02000000 0.99954990
-0.01000000 0.02000000 -0.01000000 0.99969995
-0.01000000 0.02000000 -0.00000000 0.99974997
-0.01000000 0.02000000 0.01000000 0.99969995
-0.01000000 0.02000000 0.02000000 0.99954990
-0.00000000 -0.02000000 -0.02000000 0.99959992
-0.00000000 -0.02000000 -0.01000000 0.99974997
-0.00000000 -0.02000000 -0.00000000 0.99979998
-0.00000000 -0.02000000 0.01000000 0.99974997
-0.00000000 -0.02000000 0.02000000 0.99959992
-0.00000000 -0.01000000 -0.02000000 0.99974997
-0.00000000 -0.01000000 -0.01000000 0.99989999
-0.00000000 -0.01000000 -0.00000000 0.99995000
-0.00000000 -0.01000000 0.01000000 0.99989999
-0.00000000 -0.01000000 0.02000000 0.99974997
-0.00000000 -0.00000000 -0.02000000 0.99979998
-0.00000000 -0.00000000 -0.01000000 0.99995000
-0.00000000 -0.00000000 -0.00000000 1.00000000
-0.00000000 -0.00000000 0.01000000 0.99995000
-0.00000000 -0.00000000 0.02000000 0.99979998
-0.00000000 0.01000000 -0.02000000 0.99974997
-0.00000000 0.01000000 -0.01000000 0.99989999
-0.00000000 0.01000000 -0.00000000 0.99995000
-0.00000000 0.01000000 0.01000000 0.99989999
-0.00000000 0.01000000 0.02000000 0.99974997
-0.00000000 0.02000000 -0.02000000 0.99959992
-0.00000000 0.02000000 -0.01000000 0.99974997
-0.00000000 0.02000000 -0.00000000 0.99979998
-0.00000000 0.02000000 0.01000000 0.99974997
-0.00000000 0.02000000 0.02000000 0.99959992
0.01000000 -0.02000000 -0.02000000 0.99954990
0.01000000 -0.02000000 -0.01000000 0.99969995
0.01000000 -0.02000000 -0.00000000 0.99974997
0.01000000 -0.02000000 0.01000000 0.99969995
0.01000000 -0.02000000 0.02000000 0.99954990
0.01000000 -0.01000000 -0.02000000 0.99969995
0.01000000 -0.01000000 -0.01000000 0.99984999
0.01000000 -0.01000000 -0.00000000 0.99989999
0.01000000 -0.01000000 0.01000000 0.99984999
0.01000000 -0.01000000 0.02000000 0.99969995
0.01000000 -0.00000000 -0.02000000 0.99974997
0.01000000 -0.00000000 -0.01000000 0.99989999
0.01000000 -0.00000000 -0.00000000 0.99995000
0.01000000 -0.00000000 0.01000000 0.99989999
0.01000000 -0.00000000 0.02000000 0.99974997
0.01000000 0.01000000 -0.02000000 0.99969995
0.01000000 0.01000000 -0.01000000 0.99984999
0.01000000 0.01000000 -0.00000000 0.99989999
0.01000000 0.01000000 0.01000000 0.99984999
0.01000000 0.01000000 0.02000000 0.99969995
0.01000000 0.02000000 -0.02000000 0.99954990
0.01000000 0.02000000 -0.01000000 0.99969995
0.01000000 0.02000000 -0.00000000 0.99974997
0.01000000 0.02000000 0.01000000 0.99969995
0.01000000 0.02000000 0.02000000 0.99954990
0.02000000 -0.02000000 -0.02000000 0.99939982
0.02000000 -0.02000000 -0.01000000 0.99954990
0.02000000 -0.02000000 -0.00000000 0.99959992
0.02000000 -0.02000000 0.01000000 0.99954990
0.02000000 -0.02000000 0.02000000 0.99939982
0.02000000 -0.01000000 -0.02000000 0.99954990
0.02000000 -0.01000000 -0.01000000 0.99969995
0.02000000 -0.01000000 -0.00000000 0.99974997
0.02000000 -0.01000000 0.01000000 0.99969995
0.02000000 -0.01000000 0.02000000 0.99954990
0.02000000 -0.00000000 -0.02000000 0.99959992
0.02000000 -0.00000000 -0.01000000 0.99974997
0.02000000 -0.00000000 -0.00000000 0.99979998
0.02000000 -0.00000000 0.01000000 0.99974997
0.02000000 -0.00000000 0.02000000 0.99959992
0.02000000 0.01000000 -0.02000000 0.99954990
0.02000000 0.01000000 -0.01000000 0.99969995
0.02000000 0.01000000 -0.00000000 0.99974997
0.02000000 0.01000000 0.01000000 0.99969995
0.02000000 0.01000000 0.02000000 0.99954990
0.02000000 0.02000000 -0.02000000 0.99939982
0.02000000 0.02000000 -0.01000000 0.99954990
0.02000000 0.02000000 -0.00000000 0.99959992
0.02000000 0.02000000 0.01000000 0.99954990
0.02000000 0.02000000 0.02000000 0.99939982
paste $1 $2 | grep LogProb: | awk 'BEGIN{cum=0;dif=0}{if($1=="RefMap:"){dif=$4-$10;cum+=dif;printf"MapNum: %6d Mod1: %10.5f Mod2: %10.5f Dif: %10.5f Cum: %10.5f\n",$2,$4,$10,dif,cum}}'
......@@ -9,7 +9,7 @@ GRIDPOINTS_BETA 2
##### Constrast transfer integration: #######
CTF_B_ENV 10.0 300.5 3
CTF_DEFOCUS 0.5 4.5 5
CTF_AMPLITUDE 0.01 0.2 3
CTF_AMPLITUDE 0.01 0.4 3
##### Center displacement: #######
DISPLACE_CENTER 10 2
......@@ -18,7 +18,9 @@ DISPLACE_CENTER 10 2
PRIOR_MODEL 0.005
PRIOR_ANGLES
#Examples of CTF priors
SIGMA_PRIOR_DEFOCUS 0.4
PRIOR_DEFOCUS_CENTER 1.8
SIGMA_PRIOR_B_CTF 10.
SIGMA_PRIOR_AMP_CTF 0.2
PRIOR_AMP_CTF_CENTER 0.1
......@@ -15,4 +15,4 @@ CTF_AMPLITUDE 0.1 0.1 1
DISPLACE_CENTER 10 2
#### Write probability as function of Orientations ####
WRITE_PROB_ANGLES
WRITE_PROB_ANGLES 2
************************* HEADER:: NOTATION *******************************************
RefMap: MapNumber ; alpha[rad] - beta[rad] - gamma[rad] - logP - cal log Probability + Constant: Numerical Const.+ log (volume) + prior ang
************************* HEADER:: NOTATION *******************************************
0 -1.5708 1.15928 2.19912 -68003.1 Separated: 0.0114472 683.164 -68686.3
0 -1.5708 1.15928 -0.942478 -68035.7 Separated: 0.0106541 650.494 -68686.3
\ No newline at end of file
************************* HEADER:: NOTATION *******************************************
Notation= RefMap: MapNumber ; LogProb natural logarithm of posterior Probability ; Constant: Numerical Const. for adding Probabilities
Notation= RefMap: MapNumber ; Maximizing Param: MaxLogProb - alpha[rad] - beta[rad] - gamma[rad] - CTF amp - CTF defocus - CTF B-Env - center x - center y - normalization - offsett
**** Remark: Using Prior Proability in Angles ****
************************* HEADER:: NOTATION *******************************************
RefMap: 0 LogProb: -68442.4 Constant: 240.249
RefMap: 0 Maximizing Param: -68442.4 0.836 [] 1.369 [] 2.64 [] 0.27 [] 2.1 [micro-m] 10 [A²] -2 [pix] -8 [pix] -0.00313061 [] 0.0288172 []
************************* HEADER:: NOTATION *******************************************
Notation= RefMap: MapNumber ; LogProb natural logarithm of posterior Probability ; Constant: Numerical Const. for adding Probabilities
Notation= RefMap: MapNumber ; Maximizing Param: MaxLogProb - alpha[rad] - beta[rad] - gamma[rad] - CTF amp - CTF defocus - CTF B-Env - center x - center y - normalization - offsett
************************* HEADER:: NOTATION *******************************************
RefMap: 0 LogProb: -68317.6 Constant: 363.117
RefMap: 0 Maximizing Param: -68317.6 -1.5708 [] 1.0472 [] 1.5708 [] 0.1 [] 5 [micro-m] 200.25 [A²] -2 [pix] -6 [pix] -0.00154624 [] 0.0141542 []
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
SPHINXPROJ = BioEM
SOURCEDIR = .
BUILDDIR = _build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
\ No newline at end of file
......@@ -709,15 +709,6 @@ ISSN = {{1047-8477}},
Unique-ID = {{ISI:000243391100002}},
}
@article{ Penczek_2010,
Author = {Penczek, Pawel A.},
Title = {{Image Restoration in Cryo-Electron Microscopy}},
Journal = {{Methods in Enzymology}},
Year = {{2010}},
Volume = {{482}},
Pages = {{35-72}},
}
@article{Escrt-I-II,
Author = {Boura, Evzen and Rozycki, Bartosz and Chung, Hoi Sung and Herrick, Dawn
Z. and Canagarajah, Bertram and Cafiso, David S. and Eaton, William A.
......@@ -1329,9 +1320,17 @@ Unique-ID = {{ISI:000185731300001}},
title = "BioEM: GPU-accelerated computing of Bayesian inference of electron microscopy images",
journal = "Comput. Phys. Commun.",
author = "Cossio, Pilar and Rohr, David and Baruffa, Fabio and Rampp, Markus and Lindenstruth, Volker and Hummer, Gerhard",
year = "2016"
year = "2017"
}
@article{BioEM_cring,
title = " Bayesian inference of rotor ring stoichiometry from electron microscopy images of archaeal ATP synthase",
journal = "Submitted",
author = "Cossio, Pilar and Allegretti, Matteo and Mayer, Florian and Mueller, Volker and Vonck, Janet and Hummer, Gerhard",
year = "2017"
}
@article{CossioHummerJSB_2013,
title = "Bayesian analysis of individual electron microscopy images: Towards structures of dynamic and heterogeneous biomolecular assemblies ",
journal = "J. Struct. Biol.",
......
This diff is collapsed.
def setup(app):
app.add_crossref_type('inpar', 'inpar', 'single: %s')
app.add_crossref_type('outpar', 'outpar', 'single: %s')
return {'version': '0.1'} # identifies the version of our extension
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
@ECHO OFF
pushd %~dp0
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=.
set BUILDDIR=_build
set SPHINXPROJ=BioEM
if "%1" == "" goto help
%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
goto end
:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
:end
popd
This diff is collapsed.
This diff is collapsed.
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
< BioEM software for Bayesian inference of Electron Microscopy images>
Copyright (C) 2016 Pilar Cossio, David Rohr, Fabio Baruffa, Markus Rampp,
Copyright (C) 2016 Pilar Cossio, David Rohr, Fabio Baruffa, Markus Rampp,
Volker Lindenstruth and Gerhard Hummer.
Max Planck Institute of Biophysics, Frankfurt, Germany.
Frankfurt Institute for Advanced Studies, Goethe University Frankfurt, Germany.
Max Planck Computing and Data Facility, Garching, Germany.
Frankfurt Institute for Advanced Studies, Goethe University Frankfurt,
Germany.