Exemple #1
0
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'] = [
Exemple #3
0
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)

Exemple #5
0
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):
Exemple #7
0
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)
Exemple #8
0
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
Exemple #9
0
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':