Skip to content
yadizhou edited this page Nov 18, 2017 · 9 revisions

What is LabPype?

LabPype is a software and a framework.

As a software, LabPype helps you efficiently create highly interactive workflows. It is based on the idea that a workflow consists of a series of widgets, each representing a type of data or task that can be executed. LabPype lets you reuse the tasks or data in a previous workflow to construct new workflows with minimal repetition. When designing your lab tasks, whether dry or wet, you can benefit from using LabPype with a suitable set of widgets. Here you can find some examples.

As a framework, LabPype tries to minimize the efforts needed to make new widgets. It handles things such as GUI, resource management, workflow logic, etc., that are universal in pipeline software. It exposes two main base classes, Widget and Dialog, to developers. The base widget class knows how to act in a workflow. Developers just need to subclass it, specify a few attributes, and implement the task it does, or wrap a function that is already implemented. Each widget may have an associated dialog for interaction. The base dialog class has many APIs to simplify the creation of various UI elements.

To get started, see How to install and How to use. To make your own widgets, see How to develop.

The concept of LabPype

Concept

Features

For users

  • Centralized. There is less need to switch between multiple programs. Data management and processing are integrated.
  • Visualized. It allows users to focus on the experiment logic, and saves users from having to use command lines.
  • Interactive. Users can try different workflows, inputs, and parameters, and can get feedback in real time.
  • Extensible. Functions can be extended by user-developed widgets.
  • Reusable. Workflows (or part of the workflow) can be reused to reduce repetitive tasks.
  • Sharable. Workflows can be shared.

For developers

  • Subclassing of Widget.py and Dialog.py is simple and flexible.
  • Widget tasks can run in parallel using either multithreading or multiprocess.
  • Dialogs can be generated automatically, meaning no coding needed for the look and interaction of dialogs.
  • Builtin widgets are growing!
  • Builtin data fields are growing!
  • GUI is fully implemented and is ready to use. Color/font/image are customizable.
  • Software localization is as simple as editing a txt file.