use crate::structure::Structure;
use crate::{AnalysisPolicy, Namespace};
use molframe_chem::ComponentProvider;
use molframe_seq::Scoring;
pub trait CompareExt {
fn dockq(
&self,
native: &Structure,
receptor: &str,
ligand: &str,
options: molframe_compare::DockQOptions,
) -> Result<molframe_compare::DockQ, molframe_compare::CompareError>;
fn dockq_in_namespace(
&self,
native: &Structure,
receptor: &str,
ligand: &str,
namespace: Namespace,
options: molframe_compare::DockQOptions,
) -> Result<molframe_compare::DockQ, molframe_compare::CompareError>;
fn qs_score(
&self,
native: &Structure,
first_chain: &str,
second_chain: &str,
options: molframe_compare::QsOptions,
) -> Result<f64, molframe_compare::CompareError>;
fn qs_score_in_namespace(
&self,
native: &Structure,
first_chain: &str,
second_chain: &str,
namespace: Namespace,
options: molframe_compare::QsOptions,
) -> Result<f64, molframe_compare::CompareError>;
fn map_chains(
&self,
target: &Structure,
provider: &dyn ComponentProvider,
namespace: Namespace,
scoring: Scoring,
min_identity: f64,
) -> Result<Vec<molframe_compare::ChainMapping>, molframe_core::diagnostic::Diagnostic>;
fn assign_chains(
&self,
target: &Structure,
provider: &dyn ComponentProvider,
namespace: Namespace,
scoring: Scoring,
min_identity: f64,
) -> Result<molframe_compare::ChainAssignment, molframe_core::diagnostic::Diagnostic>;
fn chain_sequences(
&self,
provider: &dyn ComponentProvider,
namespace: Namespace,
) -> Result<Vec<molframe_compare::ChainSequence>, molframe_core::diagnostic::Diagnostic>;
fn map_sequence_to_structure(
&self,
query: &[u8],
provider: &dyn ComponentProvider,
namespace: Namespace,
scoring: Scoring,
) -> Result<Vec<molframe_compare::ResidueMatch>, molframe_core::diagnostic::Diagnostic>;
fn governed_dockq(
&self,
reference: &Structure,
receptor: &str,
ligand: &str,
options: molframe_compare::DockQOptions,
policy: &AnalysisPolicy,
) -> Result<crate::Analysis<molframe_compare::DockQ>, molframe_compare::GovernedCompareError>;
fn governed_qs_score(
&self,
reference: &Structure,
first_chain: &str,
second_chain: &str,
options: molframe_compare::QsOptions,
policy: &AnalysisPolicy,
) -> Result<crate::Analysis<f64>, molframe_compare::GovernedCompareError>;
fn governed_map_chains(
&self,
target: &Structure,
provider: &dyn ComponentProvider,
scoring: Scoring,
minimum_identity: f64,
policy: &AnalysisPolicy,
) -> Result<
crate::Analysis<Vec<molframe_compare::ChainMapping>>,
molframe_compare::GovernedCompareError,
>;
fn governed_assign_chains(
&self,
target: &Structure,
provider: &dyn ComponentProvider,
scoring: Scoring,
minimum_identity: f64,
policy: &AnalysisPolicy,
) -> Result<
crate::Analysis<molframe_compare::ChainAssignment>,
molframe_compare::GovernedCompareError,
>;
fn governed_map_sequence_to_structure(
&self,
query: &[u8],
provider: &dyn ComponentProvider,
scoring: Scoring,
policy: &AnalysisPolicy,
) -> Result<
crate::Analysis<Vec<molframe_compare::ResidueMatch>>,
molframe_compare::GovernedCompareError,
>;
fn mapped_dockq(
&self,
native: &Structure,
receptor: &str,
ligand: &str,
mapping: &molframe_compare::MappingOptions<'_>,
options: molframe_compare::DockQOptions,
) -> Result<
(molframe_compare::DockQ, molframe_compare::MappedComparison),
molframe_compare::MappedCompareError,
>;
fn mapped_qs_score(
&self,
native: &Structure,
first_chain: &str,
second_chain: &str,
mapping: &molframe_compare::MappingOptions<'_>,
options: molframe_compare::QsOptions,
) -> Result<(f64, molframe_compare::MappedComparison), molframe_compare::MappedCompareError>;
}