torchref.refinement.targets.realspace module
Real-Space Targets for Crystallographic Refinement.
This module provides target (loss) functions that compare electron density maps in real space rather than reciprocal space. Two targets are provided:
RealSpaceCorrelationTarget: Maximizes RSCC between 2mFo-DFc and Fcalc density
RealSpaceDifferenceTarget: Minimizes mean squared Fo-Fc difference density
Both targets use a molecular mask (inverse of solvent mask) to restrict comparison to the protein region, and follow the phase detachment pattern from PhaseInformedDifferenceTarget to ensure correct gradient flow.
- class torchref.refinement.targets.realspace.RealSpaceTarget(data=None, model=None, scaler=None, map_type='2mFo-DFc', mask_solvent=True, solvent_radius=1.1, erosion_radius=0.9, verbose=0, target_value=0.0, sigma=0.5)[source]
Bases:
DataTargetBase class for real-space electron density targets.
Inherits from DataTarget to get model, data, and scaler references. Provides common infrastructure for computing observed maps, model density, and molecular masks used by the concrete subclasses.
Gradient Flow Design
Model density: gradients flow through Fcalc -> grid -> IFFT -> density
Observed map (2mFo-DFc): phases and |Fcalc| detached, no gradients
Observed map (Fo-Fc): |Fcalc| retains gradients, phases detached
Molecular mask: boolean, no gradients
- param data:
Observed reflection data.
- type data:
ReflectionData
- param model:
Model for computing Fcalc.
- type model:
ModelFT
- param scaler:
Scaler for Fcalc (applied before map coefficient computation).
- type scaler:
Scaler, optional
- param map_type:
"2mFo-DFc"or"Fo-Fc".- type map_type:
str
- param mask_solvent:
Whether to apply molecular mask. Default True.
- type mask_solvent:
bool
- param solvent_radius:
Probe radius for mask dilation in Angstroms. Default 1.1.
- type solvent_radius:
float
- param erosion_radius:
Radius for mask erosion in Angstroms. Default 0.9.
- type erosion_radius:
float
- param verbose:
Verbosity level. Default 0.
- type verbose:
int
- param target_value:
Target value for loss. Default 0.0.
- type target_value:
float
- param sigma:
Sigma for weighting. Default 0.5.
- type sigma:
float
- VALID_MAP_TYPES = ('2mFo-DFc', 'Fo-Fc')
- __init__(data=None, model=None, scaler=None, map_type='2mFo-DFc', mask_solvent=True, solvent_radius=1.1, erosion_radius=0.9, verbose=0, target_value=0.0, sigma=0.5)[source]
Initialize data target.
- Parameters:
data (ReflectionData, optional) – Reference to the ReflectionData object. Required for forward().
model (Model or ModelFT, optional) – Reference to Model object for F_calc computation. If None, F_calc must be provided when calling forward().
scaler (Scaler, optional) – Reference to the Scaler object.
verbose (int, optional) – Verbosity level. Default is 0.
- class torchref.refinement.targets.realspace.RealSpaceCorrelationTarget(data=None, model=None, scaler=None, mask_solvent=True, solvent_radius=1.1, erosion_radius=0.9, verbose=0)[source]
Bases:
RealSpaceTargetReal-space correlation coefficient (RSCC) target.
Computes RSCC between a 2mFo-DFc observed map and Fcalc model density within the molecular mask. The loss is
1 - RSCC.The observed map uses detached model phases and amplitudes, so gradients flow only through the model density side.
- Parameters:
data (ReflectionData) – Observed reflection data.
model (ModelFT) – Model for computing Fcalc.
scaler (Scaler, optional) – Scaler for Fcalc.
mask_solvent (bool) – Whether to apply molecular mask. Default True.
solvent_radius (float) – Probe radius for mask in Angstroms. Default 1.1.
erosion_radius (float) – Radius for mask erosion in Angstroms. Default 0.9.
verbose (int) – Verbosity level. Default 0.
- __init__(data=None, model=None, scaler=None, mask_solvent=True, solvent_radius=1.1, erosion_radius=0.9, verbose=0)[source]
Initialize data target.
- Parameters:
data (ReflectionData, optional) – Reference to the ReflectionData object. Required for forward().
model (Model or ModelFT, optional) – Reference to Model object for F_calc computation. If None, F_calc must be provided when calling forward().
scaler (Scaler, optional) – Reference to the Scaler object.
verbose (int, optional) – Verbosity level. Default is 0.
- class torchref.refinement.targets.realspace.RealSpaceDifferenceTarget(data=None, model=None, scaler=None, mask_solvent=True, solvent_radius=1.1, erosion_radius=0.9, verbose=0)[source]
Bases:
RealSpaceTargetReal-space Fo-Fc difference density target.
Computes the mean squared Fo-Fc difference density within the molecular mask. This penalizes unexplained features in the difference map.
The |Fcalc| component retains gradients while phases are detached, providing direct gradient signal for model refinement.
- Parameters:
data (ReflectionData) – Observed reflection data.
model (ModelFT) – Model for computing Fcalc.
scaler (Scaler, optional) – Scaler for Fcalc.
mask_solvent (bool) – Whether to apply molecular mask. Default True.
solvent_radius (float) – Probe radius for mask in Angstroms. Default 1.1.
erosion_radius (float) – Radius for mask erosion in Angstroms. Default 0.9.
verbose (int) – Verbosity level. Default 0.
- __init__(data=None, model=None, scaler=None, mask_solvent=True, solvent_radius=1.1, erosion_radius=0.9, verbose=0)[source]
Initialize data target.
- Parameters:
data (ReflectionData, optional) – Reference to the ReflectionData object. Required for forward().
model (Model or ModelFT, optional) – Reference to Model object for F_calc computation. If None, F_calc must be provided when calling forward().
scaler (Scaler, optional) – Reference to the Scaler object.
verbose (int, optional) – Verbosity level. Default is 0.
- class torchref.refinement.targets.realspace.RealSpaceExtrapolatedTarget(dataset_collection, model_dark=None, model_light=None, model_mixed=None, scaler_dark=None, scaler_mixed=None, scaler_light=None, mask_solvent=True, solvent_radius=1.1, erosion_radius=0.9, verbose=0)[source]
Bases:
RealSpaceTargetReal-space correlation target using extrapolated pure-light density.
Computes the RSCC between an extrapolated pure-light electron density map and the light model’s Fcalc density within the molecular mask. The loss is
1 - RSCC.The extrapolation combines observed dark/light amplitudes with model-derived phases:
F_extra = (F_light * exp(i*phi_mixed) - w_dark * F_dark * exp(i*phi_dark)) / w_light
where w_dark, w_light are population fractions from the mixed model.
- Parameters:
dataset_collection (DatasetCollection) – Collection containing ‘dark’ and ‘light’ datasets (aligned HKL).
model_dark (ModelFT) – Dark-state model (for dark phases).
model_light (ModelFT) – Light-state model (gradients flow through this model’s density).
model_mixed (MixedModel) – Mixed model (for mixed-state phases and population fractions).
scaler_dark (Scaler, optional) – Scaler for dark Fcalc.
scaler_mixed (Scaler, optional) – Scaler for mixed Fcalc.
scaler_light (Scaler, optional) – Scaler for light model Fcalc (model density side).
mask_solvent (bool, optional) – Whether to apply molecular mask. Default True.
solvent_radius (float, optional) – Probe radius for mask in Angstroms. Default 1.1.
erosion_radius (float, optional) – Radius for mask erosion in Angstroms. Default 0.9.
verbose (int, optional) – Verbosity level. Default 0.
- __init__(dataset_collection, model_dark=None, model_light=None, model_mixed=None, scaler_dark=None, scaler_mixed=None, scaler_light=None, mask_solvent=True, solvent_radius=1.1, erosion_radius=0.9, verbose=0)[source]
Initialize data target.
- Parameters:
data (ReflectionData, optional) – Reference to the ReflectionData object. Required for forward().
model (Model or ModelFT, optional) – Reference to Model object for F_calc computation. If None, F_calc must be provided when calling forward().
scaler (Scaler, optional) – Reference to the Scaler object.
verbose (int, optional) – Verbosity level. Default is 0.