/*! A list of several protein density value references that have been proposed in the literature. * These constants are meant to be used with the set_used_protein_density() function to set the * protein density to one of these reference values * - HARPAZ and al (1994) Computed value 0.826446=1/1.21 Da/A3 * - ANDERSSON and Hovmöller (1998) Computed value 1.22 g/cm3 ~ 0.7347 Da/A3 * - TSAI et al. (1999) Computed value 1.40 g/cm3 ~ 0.84309 Da/A3 * - QUILLIN and Matthews (2000) Computed value 1.43 g/cm3 ~ 0.86116 Da/A3 * - SQUIRE and Himmel (1979), Gekko and Noguchi (1979) Experimental value 1.37 g/cm3 ~ 0.82503 Da/A3 */ IMPEMEXPORT enum ProteinDensityReference { HARPAZ, ANDERSSON, TSAI, QUILLIN, SQUIRE } ; /*! returns the protein density value used for internal computations (in kDa/Angstrom^3) */ IMPEMEXPORT double get_used_protein_density(); //! sets the protein density value used for internal computations /*! sets the protein density value used for internal computations * \param[in] densityValue : the protein density value that we wish to use in our computations (in kDa/Angstrom^3) */ IMPEMEXPORT double set_used_protein_density(double densityValue); //! sets the protein density value used for internal computations /*! sets the protein density value used for internal computations * \param[in] densityValue : a reference protein density value that we wish to * use in our computations (in kDa/Angstrom^3). * * See ProteinDensityReference for authorized values. */ IMPEMEXPORT double set_used_protein_density(ProteinDensityReference densityValue); //! Compute an approximate molecular mass /** Compute an approximate molecular mass for the set of voxels with intensity * under a given threshold \param[in] m a density map \param[in] threshold consider volume of only voxels above this threshold \return an approximate molecular mass for the set of voxels with intensity under the provided threshold (mass in Da) \note By default, the method assumes 1.21 cubic A per dalton (Harpaz 1994). this constant can be modified through the set_used_protein_density function. */ IMPEMEXPORT Float approximate_molecular_mass(DensityMap* m, Float threshold); //! Computes the threshold consider in an EM map to get a desired volume /** Computes the threshold consider in an EM map to get a desired volume * (i.e, the set of voxels with intensity greater than the threshold occupies that volume) \param[in] m a density map \param[in] desiredVolume (in A^3) */ IMPEMEXPORT Float compute_threshold_for_approximate_volume(DensityMap* m, Float desiredVolume); //! Computes the threshold to consider in an EM map to get a desired mass /** Computes the threshold to consider in an EM map to get a desired mass * (only voxels with intensity greater than the threshold are considered) \param[in] m a density map \param[in] desiredMass (in Da) \note By default, the method assumes 1.21 cubic A per dalton (Harpaz 1994). this constant can be modified through the set_used_protein_density function. */ IMPEMEXPORT Float compute_threshold_for_approximate_mass(DensityMap* m, Float desiredMass);