Introduction to NOVA and NDIP


  • NDIP is a workflow management system used for analsyis and interpretation of neutron scattering data.
  • NDIP has a range of services and tools to enable the creation of complex workflows for data analysis.
  • NOVA is a set of libraries that provide a framework to simplify the development of interactive applications for NDIP

Getting Started with a Template Application


  • Nova provides a template application to help get started developing your application.
  • Use the copier tool to clone the template application.
  • Poetry is a project management tool used to install dependencies and manage virtual environments.
  • The template application includes everything you need to get started such as basic CI, dockerfile, and tests.
  • Docker containers package your application and all its dependencies for deployment.
  • Galaxy tool XML files define how your tool appears and functions in NDIP.
  • Tools are deployed by adding their XML files to the galaxy-tools repositorys prototype branch.

Programming with NDIP


  • Nova-Galaxy can be used to create powerful python scripts which leverage the functionality of NDIP.
  • Tools are run remotely on the NDIP platform
  • Nova-Galaxy is used to connect to NDIP and run tools
  • The fractal tool is started remotely and run on NDIP.

User Interface Best Practices: The MVVM Design Pattern


  • MVVM stands for Model, View, View-Model.
  • MVVM is a design pattern which provides best practices for UI development.
  • MVVM helps developers create maintainable, testable, and reusable code.
  • The foundation of MVVM is a separation of logic between the UI (view), and the business logic (model) of the application.
  • The View-Model component serves as an intermediary between the Model and the View.
  • Pydantic is frequently used to validate inputs into our models.
  • Bindings are used to synchronize data between the view and view-model.

Web-based User Interface Development


  • Trame is a powerful python UI framework which lets users create a UI declaratively.
  • Nova-Trame is a library which eases the development of UI applications for NOVA.
  • Nova-Trame provides key components, such as, InputField and GridLayout to greatly simplify the creation of a functional UI.

Advanced Data Validation with Pydantic


  • Data Validation has many key benefits, such as protecting against errors, data corruption, and vulnerabilities.
  • Pydantic is a powerful Python library used to define data models and enforce data validation.
  • Pydantic supports complex data structures and custom data validation logic.
  • The NOVA Framework supports Pydantic models to automatically validate UI elements.

Advanced Visualizations


  • Trame integrates well with Plotly for building 2D charts.
  • Trame integrates well with PyVista and VTK for building 3D visualizations.
  • PyVista provides a simpler API compared to VTK at the cost of performance.

Development Cycle and Next Steps


  • Tools must be containerized to run on NDIP.
  • NDIP requires tools to have an XML file which defines inputs, outputs, tool ID, and the container location.
  • Tool XML files must be added to the Galaxy Tools Repository.
  • The development lifecycle involves continuous testing on the prototype branch before promoting to dev.