All Projects → NCBI-Hackathons → LabPype

NCBI-Hackathons / LabPype

Licence: other
Framework for Creating Pipeline Software

Programming Languages

python
139335 projects - #7 most used programming language
CSS
56736 projects

Projects that are alternatives of or similar to LabPype

mithril-datepicker
Pick a date! But only if you're using Mithril. (component for Mithril.js ^v1.0)
Stars: ✭ 23 (+27.78%)
Mutual labels:  widget
yii2-jstree-widget
jsTree tree widget for yii2
Stars: ✭ 16 (-11.11%)
Mutual labels:  widget
AbsTK
The Abstract Toolkit – a widget toolkit for GUI and text-mode applications.
Stars: ✭ 67 (+272.22%)
Mutual labels:  widget
pipen
pipen - A pipeline framework for python
Stars: ✭ 82 (+355.56%)
Mutual labels:  pipeline
bitbucket-push-and-pull-request-plugin
Plugin for Jenkins v2.138.2 or later, that triggers job builds on Bitbucket's push and pull request events.
Stars: ✭ 47 (+161.11%)
Mutual labels:  pipeline
SeqTools
A python library to manipulate and transform indexable data (lists, arrays, ...)
Stars: ✭ 42 (+133.33%)
Mutual labels:  pipeline
open-solution-googleai-object-detection
Open solution to the Google AI Object Detection Challenge 🍁
Stars: ✭ 46 (+155.56%)
Mutual labels:  pipeline
KLineChartAndroid
A kline chart UI widget for android(Android版本的k线).
Stars: ✭ 51 (+183.33%)
Mutual labels:  widget
hyperdrive
Extensible streaming ingestion pipeline on top of Apache Spark
Stars: ✭ 31 (+72.22%)
Mutual labels:  pipeline
flutter redux
A Flutter Starter Application
Stars: ✭ 25 (+38.89%)
Mutual labels:  widget
Accordion
Silky-smooth accordion widgets with no external dependencies.
Stars: ✭ 32 (+77.78%)
Mutual labels:  widget
incrementally loading listview
An extension of the Flutter ListView widget for incrementally loading items upon scrolling
Stars: ✭ 172 (+855.56%)
Mutual labels:  widget
MIPS-pipeline-processor
A pipelined implementation of the MIPS processor featuring hazard detection as well as forwarding
Stars: ✭ 92 (+411.11%)
Mutual labels:  pipeline
handy-scroll
Handy dependency-free floating scrollbar widget
Stars: ✭ 15 (-16.67%)
Mutual labels:  widget
widgetci
a Cross-Platform Widget Management App. (Win/Linux/Mac)
Stars: ✭ 36 (+100%)
Mutual labels:  widget
k3ai-core
K3ai-core is the core library for the GO installer. Go installer will replace the current bash installer
Stars: ✭ 23 (+27.78%)
Mutual labels:  pipeline
Apos.Content
Content builder library for MonoGame.
Stars: ✭ 14 (-22.22%)
Mutual labels:  pipeline
jenkins-terraform-pipeline
create a jenkins pipeline which uses terraform to manage AWS resources
Stars: ✭ 17 (-5.56%)
Mutual labels:  pipeline
flhooks
React like Hooks implementation for Flutter.
Stars: ✭ 38 (+111.11%)
Mutual labels:  widget
rails-docker-parallel-example
An example of how to run Rails CI and test steps in parallel with Docker and Buildkite
Stars: ✭ 19 (+5.56%)
Mutual labels:  pipeline

LabPype

PyPI version Python35 Python36

What is LabPype

LabPype provides a solution for rapid development of pipeline and workflow management software. A visualized pipeline software provides features such as reusability of workflows, user-friendly interface, and highly integrated functionalities. LabPype accelerates the making of such software for developers. It also helps the scientists become the developers to meet their increasing and diverging needs.

LabPype is a software and a framework implemented in pure Python language. As a software, LabPype helps you efficiently create highly interactive workflows. As a framework, LabPype tries to minimize the efforts needed to make new widgets.

Getting Started

To quickly get started, use pip to install LabPype:

pip install labpype

To update Labpype and it's dependencies:

pip install -U labpype

Then, to run LabPype:

python -m labpype.__init__

In the main windows, click the button that looks like a wrench on the top left to bring up the package manage dialog. Click "Download from repository", then click "OK" without changing the url in the text box to download the toy widget set.

Dependencies

  • Python (>= 3.5)
  • wxPython (>= 3.0.3)
  • DynaUI

Concept

Concept

For Users

A visualized pipeline software has many advantages:

  • 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.

Users draw a workflow by adding and linking the widgets, and set input for the data widgets or the parameters for the task widgets using their dialogs. Then users can choose to run certain tasks manually, or just run the final task. Widgets will automatically trace back to determine what upstream tasks need to be done first. The results can be either displayed in the task widget's dialog, or in specialized output widgets. 👉See here for examples.👈

For Developers

LabPype tries to minimize the efforts of developers to make a widget-based pipeline software. 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. Each widget may have an associated dialog for interaction. The base dialog class has many APIs for easy creation of various UI elements.

  • Subclassing of Widget and Dialog 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.
  • GUI is fully implemented and is ready to use. Color/font/image are customizable.
  • Efficient resource management.

Examples for making widgets

Let's use summation of numbers as our toy example. The input widget's data type is number, and the task widget simply sum all the numbers passed to it and display the result. Here is the code for the two widgets.

Code in mywidgetpackage/mywidget.py:

class ANCHOR_NUMBER(ANCHOR_REGULAR): pass
class ANCHOR_NUMBERS(ANCHOR_REGULAR): pass

class Number(Widget):
    NAME = "Number"
    DIALOG = "V"
    INTERNAL = FloatField(key="NUMBER", label="Number")
    OUTGOING = ANCHOR_NUMBER

    def Task(self):
        return self["NUMBER"]

class Summer(Widget):
    NAME = "Summer"
    INCOMING = ANCHOR_NUMBERS, "NUMBERS", True, "L"
    OUTGOING = ANCHOR_NUMBER

    def Task(self):
        return sum(self["NUMBERS"])

It's simple to make the Summer run in a separate thread (it sleeps for 0.5s after adding each number to mimic long running tasks):

class Summer(Widget):
    ...
    THREAD = True

    def Task(self):
        p = 0
        for i in self["NUMBERS"]:
            time.sleep(0.5)
            self.Checkpoint()
            p += i
        return p

It can also run in another process. See the code in the toy widget set for more examples.

Contributing

Thank you for being interested in contributing. Please contact the author if you would like to add features to the framework, or develop widgets for certain areas such as bioinformatics and data science.

Future Plans

Add database support

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].