Xmipp structure

XMIPP software is split in three repositories (XmippCore, XmippViz and Xmipp) plus the repository regarding to the Scipion’s plugin (scipion-em-xmipp). All this four repositories are in I2PC gitHub.

  • scipion-em-xmipp: It is the Scipion’s plugin. Protocol (wrappers), viewers, tests… are there. All Xmipp regarding Scipion is there.

  • xmipp: EM-reconstraction methods. Usually wrote in C++.

  • xmippCore: Low-level image-processing and EM-images definitions. In addition, metadata_labels, metadata and data are there.

  • xmippViz: Basically ShowJ, coordinates viewer and Xmipp Picker. Java code.

We call xmipp-bundle to the folder that contains the four repositories listed above in the following structure.

xmipp-bundle                  # This is the https://github.com/I2PC/xmipp repository
├── CHANGELOG.md
├── LICENSE
├── README.md
│
├── xmipp          # Main script
├── xmipp.conf     # Config file
│
├── scripts
│   └── (...)
├── sonar-project.properties
│
├── src      # Sources directory
│   ├── scipion-em-xmipp      # This is the https://github.com/I2PC/scipion-em-xmipp repository
│   │   └── (...)
│   ├── xmipp
│   │   └── (...)
│   ├── xmippCore             # This is the https://github.com/I2PC/xmippCore repository
│   │   └── (...)
│   └── xmippViz              # This is the https://github.com/I2PC/xmippViz repository
│       └── (...)
│
└── build    # Self-contained directory with all runnable Xmipp (created during the installation)
    ├── bin        # All binaries of Xmipp
    │   └── (...)
    ├── bindings   # Bindings to other languages
    │   └── (...)
    ├── lib        # Libraries that some binaries use
    │   └── (...)
    ├── pylib      # Python modules that some binaries use
    │   └── (...)
    ├── v3.20.07         # Installation token containing the version number
    ├── xmipp.bashrc     # bash script to set Xmipp env. vars. (run 'source xmipp.basrc')
    ├── xmippEnv.json    # Variables to set environ for Xmipp in running time
    └── xmipp.fish       # fish script to set Xmipp env. vars. (run 'fish xmipp.fish')

To get this structure in a certain directory, run

cd certain_directory
git clone https://github.com/I2PC/xmipp xmipp-bundle
cd xmipp-bundle
./xmipp get_devel_sources

Check below a detailed structure of Xmipp. Please, check also the Xmipp API.

xmipp-bundle                -> this is the https://github.com/I2PC/xmipp repository <-
│
├── xmipp            # Main script
├── xmipp.conf       # Config file
├── xmippEnv.json    # Temporary compilation environ saving for runtime uses
├── CHANGELOG.md
├── LICENSE
├── README.md
├── scripts
│   ├── install_cuda_travis.sh
│   └── tar.py
├── sonar-project.properties
│
├── src     # Main folder containing sources subrepos (scipion-em-xmipp, xmippCore and xmippViz).
│   │
│   ├── scipion-em-xmipp    # Repository of the Scipion's plugin   -> this is the https://github.com/I2PC/scipion-em-xmipp repository <-
│   │   ├── CHANGES.txt
│   │   ├── LICENSE
│   │   ├── MANIFEST.in
│   │   ├── README.md
│   │   ├── requirements.txt
│   │   ├── scipion_em_xmipp.egg-info
│   │   ├── setup.py
│   │   ├── sonar-project.properties
│   │   └── xmipp3               # Xmipp plugin for Scipion
│   │       ├── base.py
│   │       ├── bibtex.py
│   │       ├── constants.py
│   │       ├── convert
│   │       │   └── (...)
│   │       ├── __init__.py
│   │       ├── programs.py
│   │       ├── protocols
│   │       │   └── (...)
│   │       ├── protocols.conf
│   │       ├── tests
│   │       │   └── (...)
│   │       ├── utils.py
│   │       ├── viewers
│   │       │   └── (...)
│   │       ├── wizards.py
│   │       └── xmipp_logo.png
│   │
│   ├── xmipp        # Main sources for Xmipp
│   │   │
│   │   ├── applications
│   │   │   ├── programs  # This contains the main fuctions for the Xmipp progrmas
│   │   │   │   ├── angular_accuracy_pca
│   │   │   │   ├── (...)
│   │   │   │   └── xray_psf_create
│   │   │   ├── scripts  # This contains programs coded in non-compiling lenguage (e.g. python)
│   │   │   │   ├── apropos
│   │   │   │   ├── (...)
│   │   │   │   └── volume_align
│   │   │   └── tests    # This contains some tests
│   │   │       └── function_tests
│   │   │           ├── aft_tests.h
│   │   │           ├── (...)
│   │   │           └── test_funcs_main.cpp
│   │   ├── bin  # This is created in compilation time
│   │   │   ├── xmipp_angular_accuracy_pca
│   │   │   ├── (...)
│   │   │   └── xmipp_xray_psf_create
│   │   ├── bindings    # This contains binding for other lenguages
│   │   │   ├── matlab
│   │   │   │   ├── mirt3D_mexinterp.cpp
│   │   │   │   ├── (...)
│   │   │   │   └── xmipp_write.m
│   │   │   └── python
│   │   │       ├── python_constants.cpp
│   │   │       ├── (...)
│   │   │       ├── xmipp_base.py
│   │   │       ├── xmipp_conda_envs.py
│   │   │       ├── xmippmodule.cpp
│   │   │       ├── xmippmodule.h
│   │   │       ├── xmippmodule.os
│   │   │       └── xmipp.py
│   │   ├── external
│   │   │   ├── condor
│   │   │   │   ├── CNLSolver.cpp
│   │   │   │   ├── (...)
│   │   │   │   └── Vector.cpp
│   │   │   ├── delaunay
│   │   │   │   ├── dcel.cpp
│   │   │   │   ├── (...)
│   │   │   │   └── voronoi.cpp
│   │   │   ├── gtest
│   │   │   │   └── (...)
│   │   │   └── sh_alignment
│   │   │       ├── frm.cpp
│   │   │       ├── (...)
│   │   │       └── swig_frm.py
│   │   ├── install    # This is created in compilation time
│   │   │   ├── scons-tools
│   │   │   │   ├── AutoConfig.py
│   │   │   │   ├── Make.py
│   │   │   │   └── __pycache__
│   │   │   ├── xmipp.conf
│   │   │   └── xmipp.template
│   │   ├── lib    # This contains the compiled final libraries
│   │   │   ├── libcuFFTAdvisor.so
│   │   │   ├── libXmippCuda.a
│   │   │   ├── libXmippInterfaceCuda.so
│   │   │   ├── libXmippParallelCuda.so
│   │   │   ├── libXmippParallel.so
│   │   │   ├── libXmipp.so
│   │   │   ├── _swig_frm.so
│   │   │   └── xmippLib.so
│   │   ├── libraries    # This contains the hard code of Xmipp (xmipp is made of C++ libraries)
│   │   │   ├── classification
│   │   │   │   ├── ahc_classifier.cpp
│   │   │   │   ├── (...)
│   │   │   │   └── vector_ops.h
│   │   │   ├── data
│   │   │   │   ├── aft.h
│   │   │   │   ├── (...)
│   │   │   │   └── xmipp_polynomials.cpp
│   │   │   ├── dimred
│   │   │   │   ├── diffusionMaps.cpp
│   │   │   │   ├── (...)
│   │   │   │   └── transform_dimred.cpp
│   │   │   ├── interface
│   │   │   │   ├── docfile.cpp
│   │   │   │   ├── (...)
│   │   │   │   └── virus.h
│   │   │   ├── parallel
│   │   │   │   ├── mpi_angular_accuracy_pca.cpp
│   │   │   │   ├── (...)
│   │   │   │   └── xmipp_mpi.cpp
│   │   │   ├── parallel_adapt_cuda
│   │   │   │   ├── mpi_reconstruct_fourier_gpu.cpp
│   │   │   │   ├── mpi_reconstruct_fourier_gpu.h
│   │   │   │   └── mpi_reconstruct_fourier_gpu.os
│   │   │   ├── py_xmipp
│   │   │   │   ├── coordinatesTools
│   │   │   │   ├── deepConsensusWorkers
│   │   │   │   ├── deepDenoising
│   │   │   │   ├── deepLearningToolkitUtils
│   │   │   │   ├── deepResLearner
│   │   │   │   ├── example_module2
│   │   │   │   └── example_module.py
│   │   │   ├── reconstruction
│   │   │   │   ├── aalign_significant.cpp
│   │   │   │   ├── (...)
│   │   │   │   └── xray_psf_create.cpp
│   │   │   ├── reconstruction_adapt_cuda
│   │   │   │   ├── align_significant_gpu.cpp
│   │   │   │   ├── (...)
│   │   │   │   └── xmipp_gpu_utils.cpp
│   │   │   └── reconstruction_cuda
│   │   │       ├── cuda_all.cpp
│   │   │       ├── (...)
│   │   │       └── gpu.cpp
│   │   ├── resources
│   │   │   └── test
│   │   │       ├── dimred
│   │   │       ├── EMX
│   │   │       ├── filters
│   │   │       ├── funcs
│   │   │       ├── image
│   │   │       ├── metadata
│   │   │       ├── polynomials
│   │   │       ├── pythoninterface
│   │   │       └── sampling
│   │   ├── SConscript           # This contains the instructions to compile Xmipp (SConscript)
│   │   ├── SConstruct           # This contains the instructions to compile Xmipp (SConstruct)
│   │   └── tests  # This is created in testing time
│   │       ├── data
│   │       │   ├── gold
│   │       │   │   └── (...)
│   │       │   ├── input
│   │       │   │   └── (...)
│   │       │   ├── MANIFEST
│   │       │   ├── temp.txt
│   │       │   └── tmpLink
│   │       ├── __init__.py
│   │       ├── _test_internal.py
│   │       ├── test_programs_xmipp.py
│   │       ├── test.py
│   │       └── _test_pythoninferface_xmipp.py
│   │
│   ├── xmippCore        # Repository of the Core        -> this is the https://github.com/I2PC/xmippCore repository <-
│   │   │
│   │   ├── bindings  # This contains bindings to other lenguages
│   │   │   └── python
│   │   │       ├── python_image.h
│   │   │       └── xmippmoduleCore.h
│   │   ├── CHANGELOG.md
│   │   ├── core   # This contains the Xmipp CORE code
│   │   │   ├── alglib
│   │   │   │   ├── alglibinternal.cpp
│   │   │   │   ├── (...)
│   │   │   │   └── stdafx.h
│   │   │   ├── args.cpp
│   │   │   ├── (...)
│   │   │   ├── bilib
│   │   │   │   ├── changebasis.cc
│   │   │   │   ├── (...)
│   │   │   │   └── window.CC
│   │   │   ├── gcc_version.h
│   │   │   ├── (...)
│   │   │   ├── utils
│   │   │   │   └── (...)
│   │   │   ├── xmipp_color.cpp
│   │   │   ├── (...)
│   │   │   └── xvsmooth.os
│   │   ├── install  # This is created in compilation time
│   │   │   ├── scons-tools
│   │   │   │   ├── AutoConfig.py
│   │   │   │   ├── Make.py
│   │   │   │   └── __pycache__
│   │   │   ├── xmipp.conf
│   │   │   └── xmipp.template
│   │   ├── lib    # Where the final libraries ends up
│   │   │   ├── libXmippCore.so
│   │   │   └── xmippCore.so
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── SConscript           # This contains the instructions to compile XmippCore (SConscript)
│   │   └── SConstruct           # This contains the instructions to compile XmippCore (SConstruct)
│   │
│   └── xmippViz        # Repository of the Core       -> this is the https://github.com/I2PC/xmippViz repository <-
│       │
│       ├── applications
│       │   └── scripts
│       │       ├── metadata_plot
│       │       └── showj
│       ├── bin
│       │   ├── xmipp_metadata_plot
│       │   └── xmipp_showj
│       ├── bindings
│       │   ├── java
│       │   │   ├── src
│       │   │   │   └── (...)
│       │   │   ├── xmipp_Aux.cpp
│       │   │   ├── (...)
│       │   │   └── xmipp_TiltPairAligner.cpp
│       │   └── python
│       │       └── xmippViz.py
│       ├── CHANGELOG.md
│       ├── external
│       │   ├── imagej
│       │   │   └── (...)
│       │   └── imagej.tgz
│       ├── install
│       │   ├── scons-tools
│       │   │   ├── AutoConfig.py
│       │   │   └── Make.py
│       │   ├── xmipp.conf
│       │   └── xmipp.template
│       ├── java
│       │   ├── build
│       │   │   ├── HandleExtraFileTypes.class
│       │   │   ├── (...)
│       │   │   └── XmippViewer.jar_source.txt
│       │   ├── lib
│       │   │   ├── commons-cli-1.1.jar
│       │   │   ├── (...)
│       │   │   └── XmippViewer.jar
│       │   └── src          # This contains the hard code of xmippViz (coded in Java)
│       │       ├── HandleExtraFileTypes.java
│       │       └── xmipp
│       │           └── (...)
│       ├── lib
│       │   └── libXmippJNI.so
│       ├── LICENSE
│       ├── README.md
│       ├── resources
│       │   ├── add.gif
│       │   ├── (...)
│       │   └── zoom.png
│       ├── SConscript           # This contains the instructions to compile XmippViz (SConscript)
│       ├── SConstruct           # This contains the instructions to compile XmippViz (SConstruct)
│       └── xmipp_MetaData.cpp
│
└── build        # After compilation, all binaries ends up to the self-contained build folder
    ├── bin   # This contains the binaries to be launched
    │   ├── xmipp_angular_accuracy_pca
    │   ├── (...)
    │   └── xmipp_xray_psf_create
    ├── bindings  # This contains the compiled bindings to other lenguages
    │   ├── java
    │   ├── matlab
    │   └── python
    ├── lib    # This contains the compiled libraries (needed to launch binaries in the bin folder)
    │   ├── libcuFFTAdvisor.so
    │   ├── libXmippCore.so
    │   ├── libXmippCuda.a
    │   ├── libXmippInterfaceCuda.so
    │   ├── libXmippJNI.so
    │   ├── libXmippParallelCuda.so
    │   ├── libXmippParallel.so
    │   └── libXmipp.so
    ├── pylib    # Python modules to use in running time
    │   └── xmippPyModules
    │       └── xmippPyModules
    │       ├── coordinatesTools
    │       ├── deepConsensusWorkers
    │       ├── deepDenoising
    │       ├── deepLearningToolkitUtils
    │       ├── deepResLearner
    │       ├── example_module2
    │       ├── example_module.py
    │       └── __init__.py
    ├── resources
    │   ├── add.gif
    │   ├── binocular.png
    │   ├── brush.png
    │   ├── (...)
    │   └── zoom.png
    ├── v3.20.07         # Installation token containing the version number
    ├── xmipp.bashrc     # bash script to set Xmipp env. vars. (run 'source xmipp.basrc')
    ├── xmippEnv.json    # Variables to set environ for Xmipp in running time
    └── xmipp.fish       # fish script to set Xmipp env. vars. (run 'fish xmipp.basrc')