public ValidationReport ValidateReaction(IReaction subject) { Trace.TraceInformation($"Validating {nameof(IReaction)}"); var report = new ValidationReport(); // apply validators foreach (var test in validators.Values) { report.Add(test.ValidateReaction(subject)); } // traverse into super class report.Add(ValidateChemObject(subject)); // traverse into hierarchy var reactants = subject.Reactants; foreach (var reactant in reactants) { report.Add(ValidateMolecule(reactant)); } var products = subject.Products; foreach (var product in products) { report.Add(ValidateMolecule(product)); } return(report); }
public ValidationReport ValidateChemModel(IChemModel subject) { Trace.TraceInformation($"Validating {nameof(IChemModel)}"); var report = new ValidationReport(); // apply validators foreach (var test in validators.Values) { report.Add(test.ValidateChemModel(subject)); } // traverse into super class report.Add(ValidateChemObject(subject)); // traverse into hierarchy ICrystal crystal = subject.Crystal; if (crystal != null) { report.Add(ValidateCrystal(crystal)); } IReactionSet reactionSet = subject.ReactionSet; if (reactionSet != null) { report.Add(ValidateReactionSet(reactionSet)); } var moleculeSet = subject.MoleculeSet; if (moleculeSet != null) { report.Add(ValidateMoleculeSet(moleculeSet)); } return(report); }
public override ValidationReport ValidateBond(IBond subject) { var report = new ValidationReport(); report.Add(ValidateStereoChemistry(subject)); report.Add(ValidateMaxBondOrder(subject)); return(report); }
public override ValidationReport ValidateAtom(IAtom subject) { var report = new ValidationReport(); report.Add(ValidateCharge(subject)); report.Add(ValidateHydrogenCount(subject)); report.Add(ValidatePseudoAtom(subject)); return(report); }
public ValidationReport ValidateAtom(IAtom subject) { Trace.TraceInformation($"Validating {nameof(IAtom)}"); var report = new ValidationReport(); // apply validators foreach (var test in validators.Values) { report.Add(test.ValidateAtom(subject)); } // traverse into super class report.Add(ValidateAtomType(subject)); // traverse into hierarchy return(report); }
public ValidationReport ValidateElectronContainer(IElectronContainer subject) { Trace.TraceInformation($"Validating {nameof(IElectronContainer)}"); var report = new ValidationReport(); // apply validators foreach (var test in validators.Values) { report.Add(test.ValidateElectronContainer(subject)); } // traverse into super class report.Add(ValidateChemObject(subject)); // traverse into hierarchy return(report); }
public ValidationReport ValidateReactionSet(IReactionSet subject) { Trace.TraceInformation("Validating org.openscience.cdk.ReactionSet"); var report = new ValidationReport(); // apply validators foreach (var test in validators.Values) { report.Add(test.ValidateReactionSet(subject)); } // traverse into super class report.Add(ValidateChemObject(subject)); // traverse into hierarchy foreach (var reaction in subject) { report.Add(ValidateReaction(reaction)); } return(report); }
public ValidationReport ValidateMoleculeSet(IChemObjectSet <IAtomContainer> subject) { Trace.TraceInformation($"Validating {nameof(IChemObjectSet<IAtomContainer>)}"); var report = new ValidationReport(); // apply validators foreach (var test in validators.Values) { report.Add(test.ValidateMoleculeSet(subject)); } // traverse into super class report.Add(ValidateChemObject(subject)); // traverse into hierarchy foreach (var container in subject) { report.Add(ValidateMolecule(container)); } return(report); }
public ValidationReport ValidateChemSequence(IChemSequence subject) { Trace.TraceInformation($"Validating {nameof(IChemSequence)}"); var report = new ValidationReport(); // apply validators foreach (var test in validators.Values) { report.Add(test.ValidateChemSequence(subject)); } // traverse into super class report.Add(ValidateChemObject(subject)); // traverse into hierarchy foreach (var model in subject) { report.Add(ValidateChemModel(model)); } return(report); }
public ValidationReport ValidateBond(IBond subject) { Trace.TraceInformation($"Validating {nameof(IBond)}"); var report = new ValidationReport(); // apply validators foreach (var test in validators.Values) { report.Add(test.ValidateBond(subject)); } // traverse into super class report.Add(ValidateElectronContainer(subject)); // traverse into hierarchy foreach (var atom in subject.Atoms) { report.Add(ValidateAtom(atom)); } return(report); }
public override ValidationReport ValidateReaction(IReaction subject) { var report = new ValidationReport(); var container1 = subject.Builder.NewAtomContainer(); var reactants = subject.Reactants; for (int i = 0; i < reactants.Count; i++) { container1.Add(reactants[i]); } var container2 = subject.Builder.NewAtomContainer(); var products = subject.Products; for (int i = 0; i < products.Count; i++) { container2.Add(products[i]); } report.Add(ValidateAtomCountConservation(subject, container1, container2)); report.Add(ValidateChargeConservation(subject, container1, container2)); return(report); }
public override ValidationReport ValidateMolecule(IAtomContainer subject) { var report = new ValidationReport(); var emptyMolecule = new ValidationTest(subject, "Molecule does not contain any atom"); if (subject.Atoms.Count == 0) { report.Errors.Add(emptyMolecule); } else { report.OKs.Add(emptyMolecule); var massCalcProblem = new ValidationTest(subject, "Molecule contains PseudoAtom's. Won't be able to calculate some properties, like molecular mass."); bool foundMassCalcProblem = false; for (int i = 0; i < subject.Atoms.Count; i++) { if (subject.Atoms[i] is IPseudoAtom) { foundMassCalcProblem = true; } else { report.Add(ValidateBondOrderSum(subject.Atoms[i], subject)); } } if (foundMassCalcProblem) { report.Warnings.Add(massCalcProblem); } else { report.OKs.Add(massCalcProblem); } } return(report); }