MolQuest integrates various programs for molecular biology data processing. Programs are distributed by their developers in packages. Packages are installed by the main menu command Tools -> Install Package. All available programs are displayed in Programs Sheet of the Toolbox Tab.
In MolQuest, a task is a command to run a program using certain values of its parameters (properties). Same program with two different sets of values of its parameters is considered to represent two different tasks. Current status of a task (being processed, finished, ready) is displayed in Project tab. Tasks can be joined in pipelines with pipes connecting their slots.
Project is the key element and executable unit of MolQuest workflow, consisting of an ordered set of tasks, defined by user. For each new project, MolQuest creates a separate folder. That folder contains subfolders corresponding to each of a project's task, where those tasks' outputs are written and can be accessed by user. A list of a project's tasks is shown in Project tab and Pipeline Tab . While executing a project, only tasks with status Enabled are executed (see Task Status).
Quite often, users run the same program with varied values of program's parameters (properties). Each set Program + Properties can be specified as a separate task: for instance, program P with several different sets of parameters can be defined as several separate tasks, T1, T2 etc. In many cases, however, an alternative approach, which uses MolQuest's concept called View, is more convenient. View is a set of parameters values within a task, so that instead of separate tasks as above we get a set of separate views, V1, V2 etc. Each task has at least one view, Current View, which is used when task is executed. Each of existing views within a task can be set as Current View, which is done when user wants to run a task with a different set of values of program's parameters.
User can not only set parameters to different values, but also hide non-essential parameters from being shown Properties tab. For instance, user can take view V1 and hide all non-essential parameters, creating view V2 - identical in all respects except visual representation of parameter values. This is useful in case of multi-parameter tasks, when only few parameters are varied, while the majority remain the same and are hidden from view in order not to distract user.
In most cases of pipeline-like queues of tasks, an output of one task, supposed to be used as an input of another task, has format that is incompatible with "downstream" task. To convert an output to format suitable for another program, special auxilliary programs, called converters, are used. In many cases, MolQuest can automatically add an appropriate converter to a pipeline. As most programs, converters are distributed in packages. The Converters Sheet in the Toolbox Tab shows all available converters.
Output from one task is often used as an input for another task. In the previous version of MolQuest, we used pipes to transfer data from one task to another: every task output could be connected with one or several pipes, and every input could be connected with a single pipe. So tasks could be joined in pipelines. Now for more flexible data processing we introduce next generation of task connection system, which allows use several pipes in an input slot. New pipeline are not just a sequential order of tasks, but allows loops, conditions and processing complex sets of data in desirable order.
Now we have new entity between pipes and task input/output, which is called slot. Slot controls dataflow of pipes. An input slot gets data for a task input from pipes and files, an output slot sends corresponded task output to pipes and files. Data arrangement in an input slot depends on slot settings, received internal signals and pipes contents.
Slot is a data item manager. Slot can buffer data items, send and receive signals, perform some action on particular events. For a given task, an input slot gets data items for a task input from pipes and files and arrange them in desirable way, an output slot sends corresponded task output data items to pipes and files. Slots are automatically created for all task inputs and outputs.
Pipe is a channel between an input and an output slot. A pipe transfers data items and flags from its output slot to its input slot.
Pipeline is a set of tasks, connected by pipes. The Pipeline tab displays all links between tasks in a pipeline. Predefined pipelines from packages are shown in Pipelines Sheet of Toolbox Tab.
Flag is a special object which can be send by a pipe from its output slot and requires some actions from its input slot when received. Now there are two types of flags: Complete Queue and Complete Pipe.
Signal Signal (Internal signal) is a message which can be sent by a slot or a task to all slots of the task.
Static data of a slot are data items from explicitly set sources, for example, from a file or a list of files.
Dynamic data of a slot are data items from pipes connected to the slot.
Queue is a sequence of data items and flags delimited by Complete Queue flags. Queue can contain both static and dynamic data, static data always precede. If a queue contains only static data, a Complete Queue flag is not necessary.