import os import numpy import autoprocess.errors from autoprocess.parsers import xds from autoprocess.utils import log, misc, programs, xdsio from autoprocess.utils.choices import Choices from autoprocess.utils.misc import Table _logger = log.get_module_logger(__name__) PROBLEMS = Choices( (1, 'index_origin', 'Detector origin not optimal.'), (2, 'multiple_subtrees', 'Indexed reflections belong to multiple subtrees.'), (3, 'poor_solution', 'Poor solution, indexing refinement problems.'), (4, 'non_integral', 'Indices deviate significantly from integers.'), (5, 'unindexed_spots', 'Too many un-indexed spots.'), (6, 'spot_accuracy', 'Spots deviate significantly from expected positions.'), (7, 'dimension_2d', 'Clusters are not 3-Dimensional.'), (8, 'few_spots', 'Insufficient spots available.'), (9, 'failed', 'Indexing failed for unknown reason.')) CODES = { xds.SPOT_LIST_NOT_3D: PROBLEMS.dimension_2d, xds.INSUFFICIENT_INDEXED_SPOTS: PROBLEMS.unindexed_spots, xds.INSUFFICIENT_SPOTS: PROBLEMS.few_spots, xds.POOR_SOLUTION: PROBLEMS.spot_accuracy, xds.REFINE_ERROR: PROBLEMS.poor_solution,
import os import sys from autoprocess.engine.process import Manager from autoprocess.utils import log from autoprocess.utils import misc logger = log.get_module_logger('auto.integrate') def main(args): if args.dir: os.chdir(args.dir) try: checkpoint = misc.load_chkpt() except IOError: logger.error( 'Must be in, or provide a valid directory from previous session.') sys.exit(1) app = Manager(checkpoint=checkpoint) # update app and overwrite options overwrite = {'optimize': args.opt, 'backup': args.backup} if args.anom != app.options['anomalous']: overwrite['anomalous'] = args.anom if args.frames: overwrite['data_range'] = tuple(map(int, args.frames.split('-'))) if args.exclude: overwrite['skip_frames'] = [
import sys import os from autoprocess.engine.process import Manager from autoprocess.utils import log from autoprocess.utils import misc from autoprocess.utils import xtal logger = log.get_module_logger('auto.symmetry') def main(args): if args.dir: os.chdir(args.dir) try: checkpoint = misc.load_chkpt() except IOError: logger.error('Must be in, or provide a valid directory from previous session.') sys.exit(1) app = Manager(checkpoint=checkpoint) overwrite = { 'backup': args.backup, 'chiral': (not args.nonchiral) } if args.anom != app.options['anomalous']: overwrite['anomalous'] = args.anom if args.res: overwrite['resolution'] = args.res
import sys import os from autoprocess.engine.process import Manager from autoprocess.utils import log from autoprocess.utils import misc logger = log.get_module_logger('auto.strategy') def main(args): if args.dir: os.chdir(args.dir) try: chkpt = misc.load_chkpt() except IOError: logger.error('This command must be run within a data processing directory.') sys.exit(1) app = Manager(checkpoint=chkpt) overwrite = { 'backup': args.backup } if args.anom != app.options['anomalous']: overwrite['anomalous'] = args.anom if args.res: overwrite['resolution'] = args.res app.run(resume_from=(chkpt['run_position'][0], 'strategy'), overwrite=overwrite)
import sys import os from autoprocess.engine.process import Manager from autoprocess.utils import log from autoprocess.utils import misc logger = log.get_module_logger('auto.scale') def main(args): if args.dir: os.chdir(args.dir) try: checkpoint = misc.load_chkpt() except IOError: logger.error( 'Must be in, or provide a valid directory from previous session.') sys.exit(1) app = Manager(checkpoint=checkpoint) overwrite = {'backup': args.backup} if args.anom != app.options['anomalous']: overwrite['anomalous'] = args.anom if args.res: overwrite['resolution'] = args.res app.run(resume_from=(checkpoint['run_position'][0], 'scaling'), overwrite=overwrite)
import os import sys from autoprocess.engine.process import Manager from autoprocess.utils import log from autoprocess.utils import misc logger = log.get_module_logger('auto.process') def main(args): if len(args.images) >= 1: options = { 'images': args.images, 'anomalous': bool(args.anom), 'mode': 'simple', 'backup': args.backup, 'chiral': (not args.nonchiral), 'solve-small': args.formula, 'directory': args.dir, 'prefix': [] if not args.prefix else args.prefix.split(',') } if args.screen: options['mode'] = 'screen' elif args.mad: options['mode'] = 'mad' options['anomalous'] = True elif len(args.images) > 1: options['mode'] = 'merge' if len(options['prefix']) != len(args.images):
import os import sys from autoprocess.utils import log, misc from autoprocess.engine import reporting logger = log.get_module_logger('auto.report') def main(args): if args.dir: os.chdir(args.dir) try: data = misc.load_chkpt() reporting.save_report(data['datasets'], data['options']) except IOError: logger.error( 'Must be in, or provide a valid directory from previous session.') def run(args): try: log.log_to_console() main(args) except KeyboardInterrupt: sys.exit(1)
import re import socket from autoprocess.utils.log import get_module_logger from twisted.internet import reactor from twisted.spread import pb logger = get_module_logger(__name__) class ServerClientFactory(pb.PBClientFactory): def buildProtocol(self, addr): broker = pb.PBClientFactory.buildProtocol(self, addr) pb.PBClientFactory.clientConnectionMade(self, broker) return broker class PBClient(object): """ A Perspective Broker Client :param address: string representing the <address>:<port> of the server """ NAME = 'PB Server' def __init__(self, address): super().__init__() self.address = address self.name = self.NAME self.connection = None self.factory = None
from autoprocess.utils.ellipse import fit_ellipse SHARE_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'share') try: from scipy.signal import savgol_filter except: from autoprocess.utils.misc import savgol_filter warnings.filterwarnings('ignore') XSTEP = 0.05 BACKSTOP_OFFSET = 200 CENTER_SEARCH_LIMIT = 500 logger = log.get_module_logger('powder') class Fit2DFile(object): def __init__(self, filename, format): self.rawfile = filename self.format = format path, ext = os.path.splitext(self.rawfile) if self.format == 'TIFF': self.filename = '{}.{}'.format(path, 'tiff') else: self.filename = self.rawfile self.name = os.path.basename(path) def __enter__(self): if self.format == 'TIFF':