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.

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:

FamilyTypesColor
ReadsFASTQ (and list/paired variants)amber
SequencesFASTA, BIOSEQviolet
AlignmentsSAM light blue, BAM blue, BAM_INDEXED/CRAM deep blueblues
VariantsVCF red, VCF_INDEXED deep red, BCF rosereds
Intervals & annotationGFF/GTF/BED/BEDGRAPH/BIGWIG/ASSEMBLYgreens
Phylogeny & MSAPHYLOGENY_TREE, NEWICK, MSAteal
Indexes*_INDEX, INDEX_DIR, KRAKEN2_DBcyan
ReportsQC_REPORT_DIR, MULTIQC_REPORT pink; HTML_REPORT/PDF orange; PNG/IMAGE pinkmixed
TablesCSV, TSV, COUNT_MATRIX, SAMPLE_SHEETpurple
ScalarsSTRING slate, INT indigo, FLOAT rose, BOOLEAN yellowmixed
GenericFILE gray, DIRECTORY/OUTPUT_DIR slategrays

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