Data Types
BioNodulo uses a typed port system. Every input and output port declares a data type, and the editor only allows connections between compatible types. This catches a huge class of pipeline errors before a run starts — no more feeding a BAM into a tool that expects FASTQ.
Common bioinformatics types
| Type | Description | Typical producers |
|---|---|---|
FASTQ | Raw sequencing reads (single or paired-end) | FASTQ Input, SRA Download |
FASTA | Reference / assembled sequences | Reference Input, SPAdes |
SAM/BAM | Aligned reads (text / binary) | BWA, Bowtie2, STAR |
CRAM | Reference-compressed alignments | samtools |
VCF/BCF | Variant calls | GATK, bcftools |
BED | Genomic intervals | peak callers, annotations |
GTF/GFF | Gene annotations | reference inputs |
Matrix | Count / expression matrices (e.g. h5ad, mtx) | Cell Ranger, featureCounts |
Report | HTML/PDF reports | FastQC, MultiQC, QUAST |
Table | Tabular data (CSV/TSV) | many |
Generic types
In addition to domain types, ports can use generic primitives:
File— an opaque file of any kind.Directory— a folder of files.String,Int,Float,Bool— scalar parameters and small values.List<T>— an ordered collection of another type (used for fan-in nodes).
Coercion
Some conversions are automatic or available via explicit conversion nodes:
SAM → BAMandBAM → CRAMvia samtools nodes.BCF ↔ VCFvia bcftools nodes.- A specific type can always connect to a generic
Fileinput.
The editor shows a small badge on an edge when a coercion is being applied.
Why typing matters
- Earlier failure. Type errors surface at edit time, not three hours into a run.
- Better suggestions. When you drag from a
BAMoutput, the palette can suggest only the nodes that accept aBAM. - Reproducibility. Types are part of the workflow JSON, so a graph’s contract is explicit and versioned.
Defining types for custom nodes
Custom nodes declare their port types in the SDK. You can reuse the built-in types or register your own. See Creating Custom Nodes.