Software for a wide
Angular-Range Chopper Spectrometer at the SNS
This is the root of the ARCS package documentation tree. The following are links to developer's API-level documentation roots for all available ARCS (alpha) packages.
distutils_adpt:
Distutils was extended to more easily generate distributions for
packages that follow Michael Aivazis' template package structure. Some
improvements include recursive inclusion of python subdirectories, the
option to use dynamically linked libraries, and the ability to find and
modify PATH variables (from DANSE's grid services light package).
distutils_adpt python package caltech build procedure headers
journal:
journal allows component and core programmers to communicate information
to subsequent users on an unlimited number of channels that can be switched
on at will, with severities including debug, error, info, warning, and
firewall. Journal is available in both C++ and Python, with C++ journals
fully integrated with their Python counterparts. Journal devices are
abstracted, making them adaptable to environments such as massively parallel
platforms or geographically dispersed distributed computing.
journal python package journal C++ library journal python bindings
Pyre is the software framework for high performance computing. Written in
Python, pyre is an extensible, object-oriented framework for specifying and
staging complex, multi-physics simulations. It includes support for remote
monitoring and visualization. With pyre, you don't need to be fluent in
FORTRAN or C to harness the power of massively parallel computational
resources. Pyre, which has the ability to utilize code written in other
languages, provides a level of transparency that allows scientists to focus
on their research rather than being distracted by computational details.
However, while pyre will enable the average user, it was also designed not to
hinder expert users, offering powerful, flexible development features.
pyre python package pyre C++ library pyre python bindings examples/applications
StdVector allows Python programmers to create C++ standard vector objects in
a variety of numerical types. Limited interaction with those vectors is
supported through methods like size, assign, begin, end, plusEquals,
average, etc. Through the asNumarray() method, StdVectors may also be
manipulated using the Numarray multidimensional indexing interface, and
passed to functions that expect a numarray object, without potentially
costly copying. Through the asList method, a StdVector may be converted to a
Python list. Thus, StdVector objects are compatible with a wide variety of
Python, C, and C++ interfaces.
stdVector python package stdVector C++ library stdVector python bindings
hdf5_cpp:
Recent releases of NCSA's C++ interface have not supported
building shared objects. For those who do not have access to a
properly prepared HDF5 distribution, this package provides a limited
remedy by distributing the NCSA HDF5 C++ interface, version 1.6.4,
along with Caltech build system or Python distutils instructions to
build as a shared object. It requires the user to have the NCSA HDF5
version 1.6.4 of the C library already built.
hdf5fs provides Python bindings to part of the HDF5 C++ library.
It offers the user a UNIX filesystem abstraction, implementing function
like 'open', 'stat', etc. Written primarily by Maciek Brodowicz of
CACR, it has since been modified by Tim Kelley. This is the primary
ARCS interface to HDF5 files.
hdf5fs python package hdf5fs python bindings
nx5:
Our primary file format is HDF5, structured according to NeXus. nx5 is
a layer above HDF5 (via hdf5fs, though one could use the nexus API) that
represents the structure of files and the corresponding semantic content.
nx5 python package
The histogram package supplies classes that combine arrays (storage) with
attributes to model various complex ideas about neutron scattering datasets.
histogram python package
measurement:
combines nx5 and histogram to provide a convenient layer for applications
programmers through functions such as "getPixelData", "getMonitorData", etc.
measurement python package
The instrument package consists of classes to represent neutron scattering
instrument information. An instrument is represented by an instance of the
Instrument class, which is the root node of a graph of objects (Elements).
The coordinates of the elements of an instrument are maintained by a separate
class, Geometer. This creates a generic way to represent and serve
information about instrument configuration and properties and sample
configuration and properties. Factories construct core representations from
both hard-coded sources (such as ARCSBootstrap) and from nx5 file graphs
(NX5ToARCS family); additional factories render instrument graphs to file
graphs (ARCSToNX5 family) or to visual models (VTKInstrumentViewer).
instrument python package
The reduction subpackage contains the classes and components that are
responsible for actually reducing data from a time-of-flight direct geometry
spectrometer. Reduction transforms data from I(TOF, {detectorLabels}) to
something approximating (or resembling) S(|Q|, E). These classes are mostly
built up out of pieces from other ARCS subpackages.
reduction python package reduction C++ library reduction python bindings examples/applications
bvk:
bvk provides basic Born-von Karman (force constant) models of phonons from
perfect crystals. While nothing in the code precludes the use of a completely
arbitrary crystal structure, presently the relation between bonds and
force constants must be specified by the user by overriding the
ForceConstantTensor class. Present outputs include density of states
histograms; plans are in place to include neutron scattering cross sections.
The code is structured to allow arbitrary iteration of {Q} space; random
sampling from a user-specified cube is implemented.
bvk python package bvk C++ library bvk python bindings
sam:
Sam provides python bindings to Matlab, and is written and
maintained by Patrick Hung. Sam does NOT provide a pyre component; however,
it both a standalone package and required by 'graphics.Matlab'.
sam python package sam python bindings head
pyIDL:
pyIDL provides python bindings to RSI's IDL, and is based on
Andrew McMurray's python-IDL. pyIDL provides an IDL session emulator
where IDL commmands can be used directly to manipulate data. pyIDL is also
NOT a pyre component; however, it is both a standalone package and required
by 'graphics.IDL'.
pyIDL python package pyIDL C++ library pyIDL python bindings head
The mcstas package provides Python bindings to McStas. Bindings are
available for building neutron scattering instrument components and launching
simulations of experiments. In McStas, an instrument is constructed from an
ordered list of components described by a dedicated meta-language. Neutrons
go through each component one by one. The state of a neutron is modified
(scattered or absorbed) by the C-code of each component. The statistical
weight of the neutron is adjusted if, for example, a specific target solid
angle for scattering is provided, in order to reduce the simulation time.
The code is generated by McStas, which acts as a compiler that compiles
the meta language in an instrument description file to one big C file.
mcstas python package mcstas C++ library mcstas.mcstas_wrapper python subpackage mcstas.components python subpackage mcstas.utils python subpackage
InstrumentViewer:
InstrumentViewer renders an instrument in a display in two steps. In the
first step, the instrument is transformed to a graph with nodes that contain
only display information like position, orientation, shape, color, and
opacity. In the second step, the graph is rendered to the screen. The
default renderer is VTK, which provides a nice 3d picture of the instrument.
InstrumentViewer python package
pyIO:
PyIO is a 'generic' file reader/writer package for N-column text or python
nested list formats. PyIO reads some plain text dialects, can read/write
data asRows or asColumns, and can extract simple headers from text files
(if matches dialect format)
pyIO python package