Example #1
0
def run_refinement(projectf, mixture_index, options):
    """
        Runs a refinement setup for 
            - projectf: project data
            - mixture_index: what mixture in the project to use
            - options: refinement options
    """
    if projectf is not None:
        from pyxrd.data import settings
        settings.CACHE = None
        settings.apply_runtime_settings()

        from pyxrd.generic import pool
        pool.get_pool()

        from pyxrd.project.models import Project

        type(Project).object_pool.clear()
        project = Project.load_object(None, data=projectf)
        del projectf
        import gc
        gc.collect()

        mixture = project.mixtures[mixture_index]
        mixture.update_refinement_treestore()
        mixture.refiner.setup_context(store=False) # we already have a dumped project
        context = mixture.refiner.context
        context.options = options

        mixture.refiner.refine(stop=pool.pool_stop)

        return list(context.best_solution), context.best_residual, (context.record_header, context.records) #@UndefinedVariable
Example #2
0
def setup_project(projectf):
    # Only import these at this point, the cause a considerable increase in
    # memory usage, so if no projectf was passed to improve_solutions, this
    # module does not use more then it needs.
    from pyxrd.data import settings
    settings.apply_runtime_settings()

    from pyxrd.project.models import Project
    type(Project).object_pool.clear()

    f = StringIO()
    f.write(projectf)
    project = Project.load_object(f)
    f.close()

    return project
Example #3
0
# coding=UTF-8
# ex:ts=4:sw=4:et=on

# Copyright (c) 2013, Mathijs Dumon
# All rights reserved.
# Complete license can be found in the LICENSE file.

import time
from itertools import izip

import numpy as np
from scipy.optimize import fmin_l_bfgs_b

from pyxrd.data import settings
settings.apply_runtime_settings()
import logging
logger = logging.getLogger(__name__)

from .specimen import calculate_phase_intensities, get_summed_intensities
from .exceptions import wrap_exceptions
from .statistics import Rp, Rpw, Rpder

__residual_method_map = {
    "Rp" : Rp,
    "Rpw" : Rpw,
    "Rpder": Rpder
}

def parse_solution(x, mixture):
    fractions = np.asanyarray(x[:mixture.m])
    scales = np.asanyarray(x[mixture.m:mixture.m + mixture.n])