Commit fc650495 authored by Zolnierczuk, Piotr's avatar Zolnierczuk, Piotr
Browse files

toward a final version ....

parent a24fdc61
Loading
Loading
Loading
Loading
+475 −239

File changed.

Preview size limit exceeded, changes collapsed.

+8 −7
Original line number Diff line number Diff line
@@ -23,7 +23,10 @@ build: build-ui build-docs
build-dist: build
	@$(PYTHON) setup.py  bdist

install-user: build
install:	build-ui
	pip install .

install-user: build-ui
	pip install --user .

uninstall:
@@ -40,14 +43,12 @@ pylint:

clean: clean-ui clean-docs
	@-$(PYTHON) setup.py clean
	@find . -name '*~'    | xargs rm -f
	@find . -name '*.pyc' | xargs rm -f
	@find . -name '*.pyo' | xargs rm -f
	@find . -name __pycache__ | xargs rm -rf
	@rm -f lint.log

distclean: clean
	rm -rf build dist MANIFEST cachedir *.egg-info $(PROJECT).tar.gz
	@rm -rf build dist MANIFEST cachedir *.egg-info $(PROJECT).tar.gz
	@find . -name '*~'          | xargs rm -f
	@find . -name '*.py[co]'    | xargs rm -f
	@find . -name '__pycache__' | xargs rm -rf

tarball:
	git archive --format=tar --prefix=$(PROJECT)/ HEAD > $(PROJECT).tar
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ from math import pi as PI
import scipy.constants as sc

from .lib      import get_theta, get_q, q_binning, l_binning, t_binning # NOQA
from .misc     import setup_logger, dictionary_hash # NOQA
from .misc     import setup_logger, dictionary_hash, DEFAULT_LOG_LEVEL  # NOQA
from .revision import version                       # NOQA

# h(Planck)/m_n(neutron mass)
+26 −28
Original line number Diff line number Diff line
@@ -15,11 +15,13 @@ import numpy as np
from . import ( get_theta, get_q, q_binning, l_binning,
                KAPPA_N_NSA, HMN, ANGSTROM )

INST_POSITIONS =  ['p1', 'p2', 'p3', 'p4']
INST_MODES     =  ['standard', 'shorty', 'shorty_2', 'mixed']


# 1. Distances
Ltot = { 'p1': 18.3,
         'p2': 21.3,
         'p3': 24.3,
         'p4': 27.3}  # [m] source to detector distance
## Lot [m] source to detector distance
Ltot = dict(zip(INST_POSITIONS,[18.3,21.3,24.3,27.3]))

L2   =  3.952         # [m] sample to detector distance (was 3.939)
M1   = -2.669         # [m] sample to monitor1 distance (negative means upstream)
@@ -28,10 +30,7 @@ M2 = -2.709 # [m] sample to monitor2 distance
# 2. Limits
# min, max scattering angle
MIN_PHI = 2.5          # degrees
MAX_PHI = {'p1': 29.0,
           'p2': 42.0,
           'p3': 56.0,
           'p4': 79.5} # degrees
MAX_PHI = dict(zip(INST_POSITIONS,[29.0,42.0,56.0,79.5])) # degrees

# wavelenth bandwitdh
# now computed based on Ltot
@@ -131,7 +130,6 @@ def wavelength_bandwitdh(pos='p2', freq=DEFAULT_ACCELERATOR_FREQ):
    return HMN/(Ltot.get(pos)*freq*ANGSTROM)


verbose=0
def pixel_angle(ix, iy, theta0, **kwargs):
    """get pixel polar and azimuth angles in the lab frame

@@ -239,17 +237,13 @@ def get_attenuation(att_pos, wavelength, att_table=None):

# ========================for coverage ==============================================

def _write_ql_min_max(out, qmin, lmax, dlam):
    "write out min max lambda, q"
def _write_ql_min_max(qmin, lmax, dlam):
    "write min max lambda, q"
    ql = qmin*lmax
    out.write("lmax=%.1f qmin=%.3f\t" % (lmax, qmin))
    lave  = lmax - dlam/2.0
    qave  = ql/lave
    out.write("lave=%.1f qave=%.3f\t" % (lave, qave))
    lmin  =  lmax - dlam
    lave  = (lmax + lmin)/2
    qmax  = ql/lmin
    out.write("lmin=%.1f qmax=%.3f\n" % (lmin, qmax))
    out.write("\n")
    qave  = ql/lave
    return dict(lmax=lmax,lmin=lmin,lave=lave,qmin=qmin,qmax=qmax,qave=qave)

def _coverage_check_tau(taus, tlimits, lmax, limits_error=False):
@@ -281,7 +275,7 @@ def _get_theta_pix(x,y,z, sa, ca):

def _gen_plot_data(out, q, tau, lmax, l1, l2):
    lave = 0.5*(l1+l2)
    out.write("\ttau set=%7.3f" % tau)
    out.write("  tau\tset=%7.3f" % tau)
    xtau = tau*(lave/lmax)**3
    dt1  = abs(tau*(l1/lmax)**3-xtau)
    dt2  = abs(tau*(l2/lmax)**3-xtau)
@@ -328,28 +322,28 @@ def coverage(lmax, qmin, **kwargs):
    # check coverage
    _coverage_check_tau(taus, (tau_min, tau_max), lmax, limits_error=True)
    theta0 = _coverage_check_theta(qmin, lmax, detpos)
    #pylint: disable=bad-string-format-type
    out.write("phi=%4.1f tau_range=(%.3f,%.3f)\n" % (degrees(theta0), tau_min, tau_max))
    #
    results['theta']   = theta0
    results['taus']    = taus
    results['tbins']   = tbins
    results['tau_min'] = tau_min
    results['tau_max'] = tau_max
    results.update(_write_ql_min_max(out, qmin, lmax, dlam))

    results.update(_write_ql_min_max(qmin, lmax, dlam))
    out.write('q=({qmin:.3f},{qmax:.3f}), '
              'lambda=({lmin:.2f},{lmax:.2f})\n'
              .format(**results))
    plot_data = []
    for it1, it2 in zip(tbin1, tbin2):
        l1 = l_binning(lmax, it1, dlam=dlam, nt=ntbin)
        l2 = l_binning(lmax, it2, dlam=dlam, nt=ntbin)
        lave   = 0.5*(l1+l2)
        q, dq = q_binning(lmax, qmin, it1, it2, dlam=dlam, nt=ntbin)
        out.write("q=(%.3f +/-%.3f)\t" % (q, dq))
        out.write("lave=%.3f [%d %d]\n" % (lave, it1, it2))
        out.write("qave=({0:.3f} +/- {1:.3f})\t".format(q, dq))
        out.write("lave={0:.2f} [{1} {2}]\n".format(lave, it1, it2))
        _coverage_check_tau(taus, (tau_min, tau_max), lmax, limits_error=limits)
        for tau in taus:
            res = _gen_plot_data(out, q, tau, lmax, l1,l2)
            plot_data.append(res+(dq,dq,tau))
    out.write("\n")
    results['plot_data'] = np.asarray(plot_data).T

    # limits
@@ -370,6 +364,10 @@ def coverage(lmax, qmin, **kwargs):
            t1, t2   = tau_limits(lq/q, mode)
            limits.append((q, t1, t2))

    results['info'] = ( "q={0:.3f}/A, lambda={1:.2f}A, "
                        "phi={2:.1f}deg, tau_range=({3:.1f},{4:.1f})ns"
                        .format(qmin, lmax,
                                degrees(theta0), tau_min, tau_max) )
    results['limits']  = limits
    results['message'] = out.getvalue()
    return results # (lmax, qmin, result, limits, out.getvalue())
    results['details'] = out.getvalue()
    return results
+3 −2
Original line number Diff line number Diff line
@@ -14,8 +14,9 @@ def convert_file(filenames, outdir, **kwargs):
    log = logging.getLogger()
    for filename in filenames:
        # get the file extension and the header
        try:
        basename    = os.path.basename(filename)
        _, file_ext = os.path.splitext(filename)
        try:
            if file_ext=='.echo':
                log.debug('reading echo data %s', filename)
                outfile = convert_to_hdf(filename, outdir, data_type='echo', **kwargs)
@@ -35,7 +36,7 @@ def convert_file(filenames, outdir, **kwargs):
                raise RuntimeError("Unknown file type")
            log.info('written HDF5 file %s', outfile)
        except RuntimeError as exc:
            log.warning("error converting %s: %s", os.path.basename(filename), exc)
            log.warning("error converting %s: %s", basename, exc)
        except OSError as exc:
            log.warning("error converting %s: %s", filename, exc.strerror)

Loading