.. NSLS-II arch documentation master file, created by sphinx-quickstart on Sun Jan 18 10:00:09 2015. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. NSLS-II Software Documentation ****************************** The NSLS-II software toolchain is a set of cooperative software components which aim to meet the following goals. Design Goals ============ * Provide an integrated, **end-to-end solution** for data collection and analysis. * Support **streaming** data analysis, variously called "in-line" or "live". * Support **prompt** data analysis: immediate, semi-automated data analysis that can inform decisions made during an experiment * Capture **metadata** to record a detailed snapshot of the hardware and --- as much as possible --- represent the user intention, the meaning of the measurements. * Make datasets **searchable** with rich queries on metadata and data. * Use **existing, open-source technologies and languages**; avoid inventing a domain-specific language. * Leverage tools from the **open scientific software** community and in particular the **scientific Python** community, a mature and widely-used ecosystem of scientific code used in trusted, critical applications in research and beyond. * Establish **clear, consistent interfaces** (meaning inputs and outputs, APIs) that allow project components to be used independently, extended, and interfaced with other, outside projects. * Adhere to good software practices, especially code review and automated testing, with the goal of enabling **large-scale collaboration** while maintaining **stability and robustness**. .. image:: _static/collection-overview.gif :align: center Project Roadmap =============== Early work has been focused on identifying common tasks and key abstractions to guide the development of a general-purpose framework. Interacting with real hardware and real users, the framework has undergone several iterations of re-design. Now, approaching the Summer 2016 operating cycle at NSLS-II , the framework is stabilizing. New and unforeseen applications are fitting well into the framework, validating its assumptions and optimizations. At the same time, software bugs are being discovered less often and being fixed more quickly. Looking forward, software targeted to more specific tasks will need to be built. For example, a user who only does about five different kinds of experiment does not need the full power of the framework and can benefit from a simpler (if more limited) toolkit. The volume of such toolkits will be large, but it is hoped that the effort required can be greatly diminished by resting on this framework --- and reaching outside of it when necessary. Detailed plans for each project are managed and discussed in the open on `GitHub `_, where the user community is invited to observe, comment, and contribute. Software Packages ================= The following software packages work together to handle different aspects of data collection and analysis. They interoperate by sharing a common :ref:`event-based model `. Each package has its own detailed documentation, linked below. * Data Collection Packages * `bluesky `_ -- a framework for specifying and executing experiments * `ophyd `_ -- a collection of Python objects that represent hardware, providing a common high-level interface * Data Access Packages * High-level Data Access * `databroker `_ -- a simple interface that pulls together data from all sources * `amostra `_ -- for managing metadata related to experiment samples * Low-Level Data Storage and Access * metadataclient (preferred), metadatastore (deprecated) * filestore * Data Munging Packages * `datamuxer `_ -- a "de-multiplexer" for alignment and basic processing of asynchronous, event-based data * Data Export Packages * `suitcase `_ -- a simple proof-of-concept, exporting experiment data and metadata from a database to a stand-alone file * Scientific Data Processing Packages * the built-in subscriptions in `bluesky `_ * Beamline-specific \*tools repositories: * `csxtools `_ * `chxtools `_ (undocumented) * `hxntools `_ (undocumented) .. toctree:: :hidden: :maxdepth: 2 architecture-overview tutorials collection-quick-start analysis-quick-start examples/index sandbox fresh-installation resources technologies .. toctree:: :hidden: :caption: Data Collection bluesky ophyd .. toctree:: :hidden: :caption: Data Access databroker amostra .. toctree:: :hidden: :caption: Data Munging datamuxer .. toctree:: :hidden: :caption: Data Export suitcase .. toctree:: :hidden: :caption: GitHub Links NSLS-II repositories Wish List Bug Reports