simple_commanders_resolest.f90 — for resolution estimation
simple_commanders_sieve.f90 — analysis of class averages
simple_commanders_sim.f90 — for simulating noise, particles, movies, atoms, etc.
simple_commanders_starproject.f90 — starproject import, export, etc.
simple_commanders_stkops.f90 — operations on image stacks
simple_commanders_validate.f90 — validation of stream functionalities in batch execution mode
simple_commanders_volops.f90 — operations on volumes
single/ — home of the single commanders implementing high-level application code
single_commanders_experimental.f90 — experimental commanders under development
single_commanders_nano2D.f90 — 2D analysis commanders used in SINGLE for nanoparticle processing
single_commanders_nano3D.f90 — 3D refinement and reconstruction commanders used in SINGLE for nanoparticle processing
single_commanders_trajectory.f90 — commanders operating on extracted time-trajectories, used in SINGLE for nanoparticle processing
single_commanders_tseries.f90 — commanders operating on the full time-series field of view, used in SINGLE for nanoparticle processing
test/ — home of the test commanders implementing high-level testing code
simple_commanders_test_class.f90 — for all class tests
simple_commanders_test_fft.f90 — for all fft tests
simple_commanders_test_geometry.f90 — for all geometry tests
simple_commanders_test_highlevel.f90 — for all highlevel tests
simple_commanders_test_io.f90 — for all input/output tests
simple_commanders_test_masks.f90 — for all masks tests
simple_commanders_test_network.f90 — for all network tests
simple_commanders_test_numerics.f90 — for all numerics tests
simple_commanders_test_optimize.f90 — for all optimize tests
simple_commanders_test_parallel.f90 — for all parallel tests
simple_commanders_test_single.f90 — tests for single
simple_commanders_test_stats.f90 — for all stats tests
simple_commanders_test_utils.f90 — for all utils tests
simple_test_mod_phasecorr.f90
ctf/ — home of the modules for estimation and application of the contrast transfer function
simple_ctf.f90 — defines the Contrast Transfer Function (CTF) of the electron microscope
simple_ctf_estimate_cost.f90 — cost functions for CTF fitting
simple_ctf_estimate_fit.f90 — routines for anisotroic (patched) CTF estimation
simple_ctf_estimate_iter.f90 — does one iteration of CTF estimation
exec/
simple_exec_abinitio3D.f90 — execution of abinitio3D commanders
simple_exec_cavgproc.f90 — execution of cavgs processing commanders
simple_exec_cluster2D.f90 — execution of cluster2D commanders
simple_exec_denoise.f90 — execution of denoising commanders
simple_exec_dock.f90 — execution of map docking commanders
simple_exec_filter.f90 — execution of filtering commanders
simple_exec_image.f90 — execution of image processing commanders
simple_exec_mask.f90 — execution of masking commanders
simple_exec_ori.f90 — execution of orientation commanders
simple_exec_other.f90 — execution of other commanders
simple_exec_preproc.f90 — execution of preprocessing commanders
simple_exec_print.f90 — execution of printing commanders
simple_exec_project.f90 — execution of project management commanders
simple_exec_refine3D.f90 — execution of 3D refinement commanders
simple_exec_res.f90 — execution of resolution estimation commanders
simple_exec_sieve.f90 — execution of project management commanders
simple_exec_sim.f90 — execution of simulation commanders
simple_exec_sym.f90 — execution of symmetry-related commanders
simple_exec_validate.f90 — execution of validation commanders
simple_exec_volume.f90 — execution of volume manipulation commanders
simple_test_exec_class.f90 — execution of test class processing commanders
simple_test_exec_fft.f90 — execution of test fft processing commanders
simple_test_exec_geometry.f90 — execution of test geometry processing commanders
simple_test_exec_highlevel.f90 — execution of test highlevel processing commanders
simple_test_exec_io.f90 — execution of test input/output processing commanders
simple_test_exec_masks.f90 — execution of test masks processing commanders
simple_test_exec_network.f90 — execution of test network processing commanders
simple_test_exec_numerics.f90 — execution of test numerics processing commanders
simple_test_exec_optimize.f90 — execution of test optimize processing commanders
simple_test_exec_parallel.f90 — execution of test parallel processing commanders
simple_test_exec_single.f90 — execution of test single processing commanders
simple_test_exec_stats.f90 — execution of test stats processing commanders
simple_test_exec_utils.f90 — execution of test utils processing commanders
single_exec_atom.f90
single_exec_map.f90
single_exec_nano2D.f90
single_exec_nano3D.f90
single_exec_trajectory.f90
single_exec_tseries.f90
single_exec_validate.f90
flex/
simple_flex_analysis_strategy.f90 — shmem/worker/master sparse diffusion-map 3D variability analysis
simple_flex_diffmap_features.f90 — registered residual feature preparation for flex_analysis diffusion maps
simple_flex_diffmap_preimage.f90 — flex-analysis diffusion-manifold targets selected with SIMPLE k-medoids
simple_flex_diffmap_rec3D.f90 — projection-aware residual Nyström pre-images for flex_analysis
simple_flex_projected_latent_model.f90 — Projection-aware latent volume model kernels for flex_analysis
simple_flex_reconstructor_latent_ops.f90 — Latent-volume projection/backprojection helpers for flex_analysis
image/ — home of the submodules of the image class, its extensions, and its variants
simple_ft_expanded.f90 — expanded Fourier transform class for improved cache utilisation
simple_ftexp_shsrch.f90 — shift search with L-BFGS-B using expanded Fourier transforms (used in motion_correct)
simple_ftiter.f90 — Fourier index loop range generator and mapping of logical indexing to physical indexing
simple_image.f90 — the abstract image data type and its methods. 2D/3D & FT/real all implemented by this class and FTs done in-place to reduce memory usage
simple_image_access.f90 — image class getters, setters, serializers etc.
simple_image_arith.f90 — arithmetics on images
simple_image_bin.f90 — extension of the image class for binary images
simple_image_calc.f90 — calculating stuff from images
simple_image_checks.f90 — checking image stuff
simple_image_core.f90 — core image functionality, such as constructors/object lifecycle
simple_image_ctf.f90 — for applying CTF to images
simple_image_fft.f90 — core fft routines as well as fused optimized operations involving ffts
simple_image_filt.f90 — image filtering and denoising
simple_image_freq_anal.f90 — image frequency domain analysis, power spectrum etc.
simple_image_geom.f90 — geometrical image operations: window, shift, pad, clip etc.
simple_image_io.f90 — for reading and writing images from/to disk
simple_image_msk.f90 — extension of the image class to provide 2D/3D envelope and adaptive masking
simple_image_seg.f90 — image segmentation related stuff to support masking
simple_image_vis.f90 — for supporting visualization of images in various ways
simple_projector.f90 — projection of 3D volumes in the Fourier domain by convolution interpolation to generate band-pass limited Cartesian and polar 2D Fourier transforms
simple_matcher_refvol_utils.f90 — shared helpers for reading, masking, filtering and reprojecting reference volumes
simple_matcher_smpl_and_lplims.f90 — search-space and particle-selection policy routines for matcher workflows
simple_strategy2D.f90 — abstract base class defining the common strategy2D interface
simple_strategy2D_alloc.f90 — array allocation for concrete strategy2D extensions to improve caching and reduce alloc overheads
simple_strategy2D_eval.f90 — 2D strategy for objective function evaluation
simple_strategy2D_greedy.f90 — 2D strategy for exhaustive projection matching with greedy in-plane search
simple_strategy2D_greedy_smpl.f90 — 2D strategy for exhaustive projection matching with probabilistic in-plane search
simple_strategy2D_inpl.f90 — 2D strategy for in-plane refinement
simple_strategy2D_inpl_smpl.f90 — 2D strategy for in-plane refinement with probabilistic sampling
simple_strategy2D_matcher.f90 — high-level search routines for the cluster2D and abinitio2D applications
simple_strategy2D_prob.f90 — 2D strategy for probabilistic class assignment (precomputed by prob_align2D/prob_tab2D)
simple_strategy2D_snhc.f90 — 2D strategy for stochastic neighborhood hill climbing
simple_strategy2D_snhc_smpl.f90 — 2D strategy for stochastic neighborhood hill climbing with probabilistic in-plane search
simple_strategy2D_snhc_smpl_many.f90 — 2D strategy for stochastic neighborhood hill climbing with probabilistic in-plane search
simple_strategy2D_srch.f90 — common strategy2D methods and type specification for polymorphic strategy2D object creation are delegated to this class
simple_strategy2D_tseries.f90 — 2D strategy for time-restrained search, used in SINGLE
simple_strategy2D_utils.f90 — utility routines for 2D class average processing
simple_strategy3D.f90 — abstract base class defining the common strategy3D interface
simple_strategy3D_alloc.f90 — array allocation for concrete strategy3D extensions to improve caching and reduce alloc overheads
simple_strategy3D_eval.f90 — 3D strategy for objective function evaluation
simple_strategy3D_greedy.f90 — 3D strategy for exhaustive projection matching
simple_strategy3D_greedy_inpl.f90 — 3D strategy for exhaustive in-plane matching of a single re-projection
simple_strategy3D_greedy_smpl.f90 — 3D strategy for exhaustive projection matching with probabilistic in-plane search
simple_strategy3D_greedy_sub.f90 — 3D strategy for neighborhood projection matching with exhaustive subspace initialization
simple_strategy3D_matcher.f90
simple_strategy3D_prob.f90 — 3D strategy for probabilistic projection matching
simple_strategy3D_shc.f90 — 3D strategy for projection matching by stochastic hill climbing
simple_strategy3D_shc_smpl.f90 — 3D strategy for stochastic neighborhood hill climbing with probabilistic in-plane search
simple_strategy3D_snhc_smpl.f90 — 3D strategy for stochastic neighborhood hill climbing with probabilistic in-plane search
simple_strategy3D_srch.f90 — common strategy3D methods and type specification for polymorphic strategy3D object creation are delegated to this class
simple_strategy3D_utils.f90 — utility routines for 3D strategies
stream/ — home of the stream task commanders in the pipelined stream application and their utilities
simple_mini_stream_utils.f90 — utilities for running the mini batch version of the stream
simple_stream2D_state.f90 — singleton for common state variables across the stream modules
simple_stream_abinitio2D_chunks.f90 — split a project into independent abinitio2D subset jobs
simple_stream_chunk.f90 — abstract data type for the stream_chunk, defining a chunk of data processed in parallel
simple_stream_chunk2D_utils.f90 — utilities for chunk-based 2D clustering in stream
simple_stream_cluster2D_utils.f90 — utilities for running 2D clustering in the stream
simple_stream_p00_master.f90 — task 00 in the stream pipeline: master controller used when running from GUI
simple_stream_p01_preprocess_new.f90 — task 1 in the stream pipeline: pre-processing (movie registration, CTF estimation, segmentation-based picking)
simple_stream_p02_assign_optics_new.f90 — task 2 in the stream pipeline: assign optics groups to streamed micrographs
simple_stream_p03_initial_analysis.f90 — task 3 in the stream pipeline: the first 2D analysis from segmentation picked particles used for initial screening and generation of picking references
simple_stream_p04_refpick_extract_new.f90 — task 4 in the stream pipeline: reference-based picking and extraction
simple_stream_p05_sieve_cavgs_new.f90 — stream task 5: continuous particle-sieving with staged chunk generation and class-average rejection
simple_stream_p06_pool2D_new.f90 — stream pipeline stage 6 â global 2D classification of pooled particles from sieving
simple_stream_pool2D_utils.f90 — utilities for running the pool 2D refinement
simple_stream_state.f90 — global stream master pipe descriptors for IPC
simple_stream_utils.f90 — various stream utilities
simple_stream_watcher.f90 — movie watcher for stream processing
ui/
simple_ui.f90 — the main user interface module
simple_ui_descriptor_types.f90 — shared presentation-only value types for the command descriptor layer
simple_ui_hash.f90 — extension type providing typed convenience accessors for ui_param & ui_program
simple_vol_pproc_policy.f90 — per-state automask and nonuniform-filter policy decisions consumed by volume assembly
simple_volanalyzer.f90 — for analyzing sets of ab initio volumes, current implementation just outputting the medoid
simple_volcluster.f90 — clustering of pre-docked volumes from Fourier-shell correlations
simple_volinterp.f90 — projection of 3D volumes in the Fourier domain by convolution interpolation to generate band-pass limited Cartesian and polar 2D Fourier transforms, high-level routines
simple_volpft_corrcalc.f90 — fast cross-correlation calculation between Fourier volumes using defined sampling space geometries
simple_volpft_symsrch.f90 — symmetry search using polar volume representation
utils/ — utilities source code directory
simple_block_tree.f90
simple_block_tree_corr.f90
simple_corrmat.f90 — for calculation of correlation matrices
simple_eulspace_neigh_map.f90
simple_exec_helpers.f90 — helpers for restarted execution, asynchronous execution, script-based execution etc.
simple_forked_process.f90 — POSIX fork-based child-process manager with timestamps, auto-restart, and status polling
simple_forked_process_tester.f90 — unit tests for simple_forked_process (lifecycle, signals, restart, timestamps, I/O)
simple_gauss2Dfit.f90 — Module for fitting the intensity distributions of 2D particle image arrays with 2D multivariate Gaussians
simple_gpu_utils.f90 — contains utilities for gpu offloading with OpenMP and
simple_imgarr_utils.f90 — utilities for image arrays
simple_imgproc.f90 — various image processing routines
simple_is_check_assert.f90 — assertions
simple_jiffys.f90 — jiffy = the time it takes light to travel one centimeter in vacuum
simple_magic_boxes.f90 — box sizes optimised for FFTW perfomance
simple_map_reduce.f90 — routines for distributed SIMPLE execution
simple_memoize_ft_maps.f90 — Light-weight module to memoize logical to physical address/spatial frequency mapping and avoid re-computing them repeatedly
simple_memory_monitor.f90 — opt-in process memory telemetry for all SIMPLE commanders and processing phases
gui/ — utilities for feeding information to the GUI
simple_gui_assembler.f90 — Assembles GUI metadata objects into a compact JSON document and sends it to the NICE frontend
simple_gui_assembler_tester.f90 — Unit tests for gui_assembler â lifecycle, hash suppression, and all assemble_stream_* procedures
simple_gui_utils.f90 — various GUI utility functions
simple_guistats.f90 — abstract data type for generating various stats for the gui
simple_nice.f90 — the module implementing New Interface for Cryo-Em (NICE)
metadata/ — metadata structures for passing between processes and generating json for sending to nice
simple_gui_metadata_base.f90 — Abstract base type for GUI metadata objects.
simple_gui_metadata_cavg2D.f90 — GUI metadata type for a single 2D class average entry (sprite-sheet position + stats).
simple_gui_metadata_histogram.f90 — GUI metadata type for a labelled histogram.
simple_gui_metadata_micrograph.f90 — GUI metadata type for a single micrograph and its particle coordinates.
simple_gui_metadata_optics_group.f90 — GUI metadata type for an optics group and its beam-shift scatter plot.
simple_gui_metadata_tester.f90 — Unit tests for all gui_metadata types â lifecycle, serialisation, and JSON serialisation
simple_gui_metadata_timeplot.f90 — GUI metadata type for a time-series plot with one or two data traces.
simple_gui_metadata_types.f90 — Integer type-tag constants for all GUI metadata kinds.
simple_gui_metadata_utils.f90 — Utility functions for GUI metadata types.
stream/ — stream related metadata structures
simple_gui_metadata_stream_opening2D.f90 — GUI metadata for the stream opening-2D stage â particle counts, masking parameters, and user-input flag
simple_gui_metadata_stream_optics_assignment.f90 — GUI metadata for the stream optics-assignment stage â micrograph and optics-group assignment counts
simple_gui_metadata_stream_particle_sieving.f90 — GUI metadata for the stream particle-sieving stage â particle counts, masking parameters, and user-input flag
simple_gui_metadata_stream_picking.f90 — GUI metadata for the stream initial-picking stage â micrograph counts, particle yield, and import timestamp
simple_gui_metadata_stream_pool2D.f90 — GUI metadata for the stream pool-2D stage â particle counts, mask geometry, initial reference selection, and user-input flag
simple_gui_metadata_stream_pool2D_snapshot.f90 — GUI metadata for a pool-2D snapshot â id, filename, particle count, and timestamp
simple_gui_metadata_stream_preprocess.f90 — GUI metadata for the stream preprocessing stage â movie counts, CTF quality averages, and acceptance cutoffs
simple_gui_metadata_stream_update.f90 — GUI metadata for a stream quality update â thresholds and user selections broadcast from the GUI
math/ — home of mathematical and statistical utility routines
simple_decay_funs.f90 — decay functions for annealing
simple_histogram.f90 — abstract data type for histogram generation
simple_linalg.f90 — SIMPLE linear algebra helpers with BLAS/LAPACK-backed kernels.
simple_math.f90 — various mathematical subroutines and functions
simple_math_ctf.f90 — CTF-related math routines
simple_math_ft.f90 — Fourier transform-related math routines
simple_neighs.f90 — pixel neighborhood definitions and generation
simple_online_var.f90 — online moments estimation
simple_r8lib.f90 — cholesky decompositions and solvers
simple_ran_tabu.f90 — routines for generation of directed random numbers
simple_rnd.f90 — random number generation module
simple_srch_sort_loc.f90 — searching ordered tables, sorting, locate etc.
simple_stat.f90 — statistics utility functions
simple_testfuns.f90 — provides 20 mathematical test functions for evaluating unconstrained optimization procedures
persistent_worker/
simple_persistent_worker_server.f90
simple_persistent_worker_server_tester.f90 — unit tests for simple_persistent_worker_server
message/
simple_persistent_worker_message_base.f90
simple_persistent_worker_message_heartbeat.f90
simple_persistent_worker_message_status.f90
simple_persistent_worker_message_task.f90
simple_persistent_worker_message_terminate.f90
simple_persistent_worker_message_tester.f90 — unit tests for persistent-worker wire message modules
simple_persistent_worker_message_types.f90
qsys/ — utilities for controlling queue systems in distributed computing environments