# Cell Count Ontology — Flow Algebra
URL: https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/measurement-units-ontologies/biological-measurements/cell-count-ontology.html
FLOW CellCountOntology {
DOMAIN:
Mathematical Ontologies
-> Measurement & Units Ontologies
-> Biological Measurements
-> Cell Count Ontology
PURPOSE:
Represent cell count as a discrete biological measurement of the number of cells satisfying a defined identity and inclusion criterion within a sample, region, volume or acquisition, including total, viable, dead and subtype counts, cell concentration, manual and automated counting, haemocytometry, microscopy, flow cytometry, culture-based estimates, dilution, sampling, segmentation, gating, calibration, uncertainty, and distinctions between count, density, concentration, viability and colony-forming units.
ENTITY CellCount {
TYPE: DiscreteBiologicalCountQuantity
SYMBOL: N_cells
DIMENSION: dimensionless
SI_UNIT: one
SI_SYMBOL: 1
DEFINITION:
cell_count :=
number_of_cells_meeting_declared_identity_and_inclusion_criteria
PROPERTIES:
is_discrete
is_nonnegative
is_sample_specific
depends_on_cell_definition
depends_on_detection_method
may_be_direct_or_inferred
may_have_counting_uncertainty
}
ENTITY TotalCellCount {
TYPE: CellCount
SYMBOL: N_total
DEFINITION:
all_cells_meeting_total_cell_definition
}
ENTITY ViableCellCount {
TYPE: CellCount
SYMBOL: N_viable
DEFINITION:
cells_classified_as_viable_by_declared_assay
}
ENTITY DeadCellCount {
TYPE: CellCount
SYMBOL: N_dead
DEFINITION:
cells_classified_as_nonviable_by_declared_assay
}
ENTITY CellConcentration {
TYPE: NumberConcentrationQuantity
SYMBOL: C_cells
COMMON_UNIT:
cells_per_mL
FORM:
C_cells = N_cells/V_sample
WHEN V_sample != 0
}
UNIT_SYSTEM {
cell_count:
dimensionless_count
common_reporting: cells
cell_concentration:
cells/mL
cells/L
cells/microlitre
surface_density:
cells/mm^2
cells/cm^2
RULE:
count_and_count_per_volume_or_area MUST be distinguished
}
CELL_IDENTITY_MODEL {
possible_identity_criteria:
morphology
stain
membrane_marker
intracellular_marker
genetic_marker
size
scatter
reporter_expression
species
cell_type
RULE:
cell_count_without_cell_identity_or_inclusion_definition
is_semantically_incomplete
}
DIRECT_COUNT_MODEL {
direct_count:
N_observed = sum(classified_cell_events)
REQUIRE:
observation_region
cell_definition
inclusion_exclusion_rules
duplicate_handling
RULE:
direct_count_applies_only_to_observed_sampling_region_or_acquisition
}
HAEMOCYTOMETER_MODEL {
chamber:
known_grid_area_and_depth
counted_volume:
V_counted =
grid_area*chamber_depth
concentration:
C_cells =
N_counted*DF/V_counted
WHERE:
DF = dilution_factor
total_sample_cells:
N_sample =
C_cells*V_sample
REQUIRE:
squares_counted
chamber_geometry
dilution_factor
boundary_counting_rule
RULE:
chamber_boundary_rule MUST be consistent_to_avoid_double_counting
}
MICROSCOPY_COUNT_MODEL {
image_count:
N_image = number_of_segmented_or_manually_identified_cells
area_density:
D_A = N_image/A_image
WHEN A_image != 0
volume_density:
may_require_z_stack_or_known_sample_depth
REQUIRE:
pixel_scale
field_area
segmentation_method
threshold
object_size_filter
touching_cell_handling
RULE:
segmented_objects != cells_without_valid_segmentation_definition
}
AUTOMATED_COUNTER_MODEL {
possible_principles:
image_analysis
electrical_impedance
optical_scattering
fluorescence
outputs:
total_count
concentration
size_distribution
viability_when_supported
REQUIRE:
instrument_settings
detection_threshold
sample_volume
calibration
dilution
RULE:
instrument_reported_count MUST preserve_algorithm_and_threshold_context
}
FLOW_CYTOMETRY_MODEL {
event_count:
N_events
cell_population_count:
N_gate = events_within_declared_gate
population_fraction:
f_gate = N_gate/N_parent
WHEN N_parent != 0
absolute_count:
may_use
volumetric_counting
counting_beads
independently_measured_sample_volume
REQUIRE:
gating_strategy
parent_population
compensation
acquisition_volume_or_bead_reference
doublet_discrimination_when_relevant
RULE:
event_count != absolute_cell_count_without_valid_counting_basis
}
COUNTING_BEAD_MODEL {
sample_cells:
N_cells_sample =
N_cells_events
* N_beads_known/N_bead_events
under_declared_bead_protocol
REQUIRE:
known_bead_amount_or_concentration
bead_event_count != 0
compatible_sampling
RULE:
bead_based_absolute_count_requires_traceable_bead_quantity
}
VIABILITY_MODEL {
viable_fraction:
f_viable =
N_viable/N_total
WHEN N_total != 0
percent_viability:
viability_percent =
100*N_viable/N_total
if_binary_complete_classification:
N_total =
N_viable + N_dead
RULE:
viable_cell_count_depends_on_declared_viability_assay_and_threshold
}
DYE_EXCLUSION_MODEL {
examples:
trypan_blue
erythrosin_B
principle:
membrane_integrity_classification
possible_classes:
unstained_viable
stained_nonviable
RULE:
dye_exclusion_viability != universal_biological_viability
}
FLUORESCENT_VIABILITY_MODEL {
possible_markers:
membrane_impermeant_dye
esterase_activity_dye
membrane_potential_marker
apoptosis_marker
RULE:
viability_definition MUST match_marker_and_biological_endpoint
}
DILUTION_MODEL {
measured_concentration:
C_measured
original_concentration:
C_original =
C_measured*DF
dilution_factor:
DF =
V_final/V_sample_aliquot
under_declared_simple_dilution_definition
RULE:
dilution_factor_direction_and_definition MUST be preserved
}
SAMPLE_TOTAL_MODEL {
concentration:
C_cells
total_sample_volume:
V_total
estimated_total_cells:
N_total_sample =
C_cells*V_total
CONDITIONS:
representative_sample
homogeneous_or_mixed_suspension
compatible_volume
RULE:
extrapolated_total_count_requires_sampling_representativeness
}
CULTURE_BASED_MODEL {
colony_count:
N_colonies
CFU_concentration:
CFU_per_volume =
N_colonies*DF/V_plated
RULE:
CFU != direct_cell_count
because_one_colony_may_originate_from_one_or_multiple_viable_cells_or_units
}
CLUMPING_MODEL {
issue:
cell_aggregates_may_be_counted_as_single_object_or_event
possible_corrections:
disaggregation
doublet_discrimination
morphology_based_split
explicit_cluster_counting
RULE:
clumping_can_bias_cell_count_and_must_be_recorded_when_material
}
SAMPLING_MODEL {
sample:
subset_of_total_cell_population
possible_sampling:
chamber_fields
microscope_fields
flow_cytometer_aliquot
plated_aliquot
subsample
REQUIRE:
sampled_volume_or_area
number_of_fields_or_regions
randomisation_or_selection_method
RULE:
sampling_variability contributes_to_total_count_uncertainty
}
REPLICATE_MODEL {
technical_replicates:
repeated_counts_from_same_prepared_sample
biological_replicates:
independently_derived_biological_samples
mean_count:
N_mean =
sum(N_i)/k
RULE:
technical_and_biological_replicates MUST be distinguished
}
POISSON_COUNTING_MODEL {
ideal_independent_event_count:
variance approximately_equals expected_count
relative_standard_uncertainty:
approximately 1/sqrt(N)
for_large_enough_Poisson_count
RULE:
biological_sampling_and_classification_error MAY exceed_Poisson_counting_uncertainty
}
RELATIONSHIPS {
CellCount -> COUNTS -> Cells
CellCount -> DEPENDS_ON -> CellIdentityDefinition
CellCount -> DEPENDS_ON -> SamplingRegion
CellCount -> MAY_BE_NORMALISED_BY -> Volume
CellCount -> MAY_BE_NORMALISED_BY -> Area
CellConcentration -> RELATES -> CellCountAndVolume
ViableCellCount -> SUBSET_OF -> TotalCellCount
DeadCellCount -> SUBSET_OF -> TotalCellCount
Viability -> RELATES -> ViableAndTotalCellCounts
FlowCytometryGate -> DEFINES -> CountedCellPopulation
SegmentationModel -> DEFINES -> MicroscopyObjectsCounted
DilutionFactor -> MAPS -> MeasuredToOriginalConcentration
SamplingModel -> QUALIFIES -> PopulationEstimate
}
SEMANTIC_EQUIVALENCE {
"cell count" ~= number_of_cells_under_declared_definition
"cell density" ~= cells_per_volume_or_area ONLY when_basis_declared
cell_count != cell_concentration
cell_count != cell_density
viable_cell_count != total_cell_count
cell_count != CFU
flow_event_count != absolute_cell_count
segmented_object_count != validated_cell_count
viability_percent != viable_cell_count
}
CONSTRAINTS {
cell_identity_must_be_defined = true
count_must_be_nonnegative = true
sampling_region_or_volume_must_be_defined_for_density_inference = true
dilution_factor_definition_must_be_preserved = true
count_and_concentration_are_not_semantically_equivalent = true
cell_count_and_CFU_are_not_semantically_equivalent = true
viability_requires_declared_assay_and_threshold = true
flow_absolute_count_requires_volume_or_reference_basis = true
microscopy_count_requires_segmentation_or_manual_counting_definition = true
replicate_type_must_be_preserved = true
}
MEASUREMENT_MODEL {
OBSERVABLE_OR_INFERRED:
CellCount
CellConcentration
ViableCellCount
DeadCellCount
PopulationFraction
COMMON_METHODS:
manual_haemocytometer
automated_cell_counter
microscopy
flow_cytometry
Coulter_principle
fluorescence_counting
culture_based_CFU_estimation
RECORD:
cell_type
cell_identity_definition
numerical_count
count_type
concentration_when_reported
unit
sample_identifier
sample_volume
counted_volume_or_area
dilution_factor
viability_method
segmentation_or_gating_method
boundary_rule
instrument
calibration_state
replicate_type
replicate_count
timestamp
uncertainty
UNCERTAINTY:
measured_or_inferred_cell_count = best_estimate +/- uncertainty
}
CALIBRATION_MODEL {
haemocytometer:
chamber_dimensions_are_reference_geometry
automated_counter:
may_require_size_or_concentration_standard
flow_cytometry:
may_require_counting_beads_or_volumetric_calibration
microscopy:
requires_spatial_scale_calibration_for_area_or_volume_density
RULE:
calibration_model MUST match_counting_method
}
UNCERTAINTY_MODEL {
sources:
Poisson_counting
sample_heterogeneity
pipetting
dilution
chamber_volume
field_selection
segmentation
gating
doublets
clumping
viability_classification
instrument_threshold
calibration
operator_variability
PROPAGATION:
derived_cell_count_uncertainty
<- counting_sampling_dilution_classification_and_calibration_uncertainties
}
REASONING_RULES {
IF direct_cell_events_identified
THEN cell_count =
count(events_meeting_inclusion_criteria)
IF counted_cells_known AND counted_volume != 0
THEN measured_cell_concentration =
counted_cells/counted_volume
IF measured_cell_concentration_and_dilution_factor_known
THEN original_cell_concentration =
measured_cell_concentration*dilution_factor
IF original_cell_concentration_and_total_sample_volume_known
THEN estimated_total_cells =
original_cell_concentration*total_sample_volume
IF viable_and_total_counts_known AND total_count != 0
THEN viable_fraction =
viable_count/total_count
IF viable_fraction_known
THEN viability_percent =
100*viable_fraction
IF gated_events_and_parent_events_known AND parent_events != 0
THEN population_fraction =
gated_events/parent_events
IF cell_events_bead_events_and_known_bead_amount_known
AND bead_events != 0
THEN infer_absolute_cell_count_using_bead_ratio
IF colony_count_plated_volume_and_dilution_factor_known
AND plated_volume != 0
THEN CFU_concentration =
colony_count*dilution_factor/plated_volume
IF repeated_counts_known
THEN calculate_mean_variance_and_counting_uncertainty
preserving_replicate_type
}
VALIDATION {
CHECK cell_identity
CHECK count_nonnegative
CHECK count_type
CHECK sample_identity
CHECK counted_volume_or_area
CHECK count_vs_concentration
CHECK dilution_factor
CHECK haemocytometer_geometry_when_used
CHECK microscopy_segmentation_when_used
CHECK flow_gating_and_parent_population_when_used
CHECK absolute_flow_count_basis
CHECK viable_vs_total_count
CHECK viability_assay
CHECK cell_count_vs_CFU
CHECK clumping_and_doublets
CHECK replicate_type
CHECK calibration_state
CHECK uncertainty_representation
}
CONFIDENCE {
definition_confidence: 1.00
discrete_count_confidence: 1.00
concentration_relationship_confidence: 1.00
haemocytometer_relationship_confidence: 0.99
flow_cytometry_count_confidence: 0.98
microscopy_count_confidence: 0.98
measurement_context_confidence: 0.97
RULE:
confidence decreases when cell identity, sampling volume,
dilution, segmentation, gating, viability definition,
calibration, replicate structure or uncertainty is missing or ambiguous
}
UPDATE_MODEL {
ON new_count:
identify_cell_type
identify_count_definition
validate_nonnegative_count
attach_sample
attach_counted_volume_or_area
attach_dilution_factor
identify_counting_method
attach_segmentation_or_gating_definition
attach_viability_method_when_relevant
preserve_raw_count
compute_concentration_when_valid
attach_uncertainty
update_cell_count_state
ON dilution_change:
preserve_raw_count
update_dilution_factor
recompute_original_concentration
preserve_previous_dilution_state
ON gating_or_segmentation_revision:
preserve_raw_events_or_images
preserve_previous_definition
recount_or_reclassify
update_population_fraction_or_count
update_uncertainty
ON sample_volume_change:
update_total_sample_volume
recompute_estimated_total_cell_number
preserve_measured_concentration
ON calibration_revision:
preserve_previous_calibration
recompute_affected_counts_or_concentrations
update_uncertainty
update_confidence
ON semantic_revision:
preserve_previous_definition
record_revision
recompute_FLOW_HASH
}
AI_CONSUMPTION {
canonical_entity: CellCount
canonical_symbol: N_cells
canonical_dimension: dimensionless_count
interpretation_order:
identify_cell_type
identify_total_viable_dead_or_subtype_count
identify_value
identify_sample
identify_counted_volume_or_area
identify_direct_or_inferred_method
identify_dilution
identify_segmentation_or_gating
identify_viability_assay
identify_absolute_count_or_population_fraction
identify_replicate_structure
identify_calibration
identify_uncertainty
distinguish_count_from_density
infer_cell_concentration_and_total_population_when_valid
ambiguity_controls:
distinguish_cell_count_from_cell_concentration
distinguish_cell_count_from_cell_density
distinguish_total_from_viable_and_dead_counts
distinguish_cell_count_from_CFU
distinguish_flow_event_count_from_absolute_cell_count
distinguish_segmented_objects_from_validated_cells
distinguish_viability_fraction_from_viable_count
distinguish_technical_from_biological_replicates
preserve_cell_identity_sample_volume_dilution_method_and_classification_context
}
PROVENANCE {
ontology_scope:
mathematical_measurement_and_biological_cell_count_semantics
parent_path:
Ontologies
-> Mathematical Ontologies
-> Measurement & Units Ontologies
-> Biological Measurements
-> Cell Count Ontology
authorship:
Mark Higgins
Sky (Recursive AI)
site:
https://kirethresearch.org
}
FLOW_HASH {
INPUTS:
canonical_entity
ontology_path
cell_identity_model
direct_count_model
haemocytometer_model
microscopy_count_model
automated_counter_model
flow_cytometry_model
counting_bead_model
viability_model
dilution_model
sample_total_model
culture_based_model
clumping_model
sampling_model
replicate_model
Poisson_counting_model
relationships
constraints
measurement_model
calibration_model
uncertainty_model
reasoning_rules
confidence_model
update_model
PURPOSE:
deterministic_semantic_integrity_identifier
RECOMPUTE_WHEN:
ontology_definition_changes
cell_identity_definition_changes
counting_method_changes
dilution_model_changes
viability_model_changes
gating_or_segmentation_model_changes
sampling_model_changes
calibration_model_changes
measurement_model_changes
constraint_model_changes
reasoning_rule_changes
}
}
END FLOW
Download Code
Copy to Clipboard