def testDefaultConstruction(self): """ Testing the default construction of the class using a dictionary. """ # Attempt to construct an instance of the class. parameters = EMCOrientationParameters() # Check instance and inheritance. self.assertIsInstance(parameters, EMCOrientationParameters) self.assertIsInstance(parameters, AbstractCalculatorParameters) # Check all parameters are set to default values. self.assertTrue(parameters.beamstop) self.assertTrue(parameters.detailed_output) self.assertEqual(parameters.initial_number_of_quaternions, 1) self.assertEqual(parameters.max_number_of_quaternions, 2) self.assertEqual(parameters.min_error, 1.e-5) self.assertEqual(parameters.max_number_of_iterations, 100)
def testConstructionParameters(self): """ Testing the construction of the class with a parameters object. """ # Construct the object. emc_parameters = EMCOrientationParameters( initial_number_of_quaternions=2, max_number_of_quaternions=4, max_number_of_iterations=5, min_error=1.e-6, beamstop=False, detailed_output=False) analyzer = EMCOrientation(parameters=emc_parameters) # Test a parameter. self.assertEqual(analyzer.parameters.initial_number_of_quaternions, 2) self.assertIsInstance(analyzer, EMCOrientation)
def testLegacyDictionary(self): """ Check parameter object can be initialized via a old-style dictionary. """ parameter_dict = { 'initial_number_of_quaternions': 1, 'max_number_of_quaternions': 9, 'max_number_of_iterations': 200, 'min_error': 1.0e-8, 'beamstop': False, 'detailed_output': False } parameters = EMCOrientationParameters( parameters_dictionary=parameter_dict) # Check all parameters are set to default values. self.assertFalse(parameters.beamstop) self.assertFalse(parameters.detailed_output) self.assertEqual(parameters.initial_number_of_quaternions, 1) self.assertEqual(parameters.max_number_of_quaternions, 9) self.assertEqual(parameters.min_error, 1.e-8) self.assertEqual(parameters.max_number_of_iterations, 200)
def __init__(self, parameters=None, input_path=None, output_path=None, tmp_files_path=None, run_files_path=None): """ :param parameters: Parameters for the EMC orientation calculator. :type parameters: EMCOrientationParameters instance :param input_path: Path to directory holding input data for EMC. :type input_path: str :param output_path: Path to file where output data will be stored. :type output_path: str :param tmp_files_path: Path to directory where temporary files will be stored. :type tmp_files_path: str :param run_files_path: Path to directory where run data will be stored, in particular the sparse photons file 'photons.dat' and 'detector.dat'. :type run_files_path: str :note: If 'run_files_path' is an existing directory that contains data from a previous EMC run, the current run will append to the existing data. A consistency check is performed. """ # Check parameters. if isinstance(parameters, dict): parameters = EMCOrientationParameters( parameters_dictionary=parameters) # Set default parameters is no parameters given. if parameters is None: parameters = checkAndSetInstance(EMCOrientationParameters, parameters, EMCOrientationParameters()) else: parameters = checkAndSetInstance(EMCOrientationParameters, parameters, None) # Initialize base class. super(EMCOrientation, self).__init__(parameters, input_path, output_path) self.__provided_data = [ 'data/data', 'data/angle', 'data/center', 'params/info', 'version', ] self.__expected_data = [ '/data/data', '/data/diffr', '/data/angle', '/params/geom/detectorDist', '/params/geom/pixelWidth', '/params/geom/pixelHeight', '/params/geom/mask', '/params/beam/photonEnergy', '/params/beam/photons', '/params/beam/focusArea', ] # Set run and tmp files paths. if _checkPaths(run_files_path, tmp_files_path): self.run_files_path = run_files_path self.tmp_files_path = tmp_files_path