Core ConceptsData Types

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

TypeDescriptionTypical producers
FASTQRaw sequencing reads (single or paired-end)FASTQ Input, SRA Download
FASTAReference / assembled sequencesReference Input, SPAdes
SAM/BAMAligned reads (text / binary)BWA, Bowtie2, STAR
CRAMReference-compressed alignmentssamtools
VCF/BCFVariant callsGATK, bcftools
BEDGenomic intervalspeak callers, annotations
GTF/GFFGene annotationsreference inputs
MatrixCount / expression matrices (e.g. h5ad, mtx)Cell Ranger, featureCounts
ReportHTML/PDF reportsFastQC, MultiQC, QUAST
TableTabular 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 → BAM and BAM → CRAM via samtools nodes.
  • BCF ↔ VCF via bcftools nodes.
  • A specific type can always connect to a generic File input.

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 BAM output, the palette can suggest only the nodes that accept a BAM.
  • 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.