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.
Port colors
Every type has a stable color used for ports, edges, and previews, so you can read the flow of a graph at a glance, sequencing reads read warm, alignments are blue, variants red, quantification purple:
| Family | Types | Color |
|---|---|---|
| Reads | FASTQ (and list/paired variants) | amber |
| Sequences | FASTA, BIOSEQ | violet |
| Alignments | SAM light blue, BAM blue, BAM_INDEXED/CRAM deep blue | blues |
| Variants | VCF red, VCF_INDEXED deep red, BCF rose | reds |
| Intervals & annotation | GFF/GTF/BED/BEDGRAPH/BIGWIG/ASSEMBLY | greens |
| Phylogeny & MSA | PHYLOGENY_TREE, NEWICK, MSA | teal |
| Indexes | *_INDEX, INDEX_DIR, KRAKEN2_DB | cyan |
| Reports | QC_REPORT_DIR, MULTIQC_REPORT pink; HTML_REPORT/PDF orange; PNG/IMAGE pink | mixed |
| Tables | CSV, TSV, COUNT_MATRIX, SAMPLE_SHEET | purple |
| Scalars | STRING slate, INT indigo, FLOAT rose, BOOLEAN yellow | mixed |
| Generic | FILE gray, DIRECTORY/OUTPUT_DIR slate | grays |
Unknown or custom types get a deterministic color derived from their name, so the same type is always the same color, including across users sharing a workflow.
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.