Skip to content

Conversation

@dimitri-yatsenko
Copy link
Member

@dimitri-yatsenko dimitri-yatsenko commented Jan 16, 2026

Summary

Three documentation fixes for DataJoint 2.0 standards:

  1. Replace deprecated "antijoin" terminology with "anti-restriction"
  2. Replace native int type with core type uint16
  3. Fix custom codec examples to use correct storage types and API

Changes

src/tutorials/advanced/sql-comparison.ipynb

  • Line 1238: # Antijoin:# Anti-restriction:
  • Line 2586: | Antijoin || Anti-restriction |

src/tutorials/advanced/custom-codecs.ipynb

  • Line 116: conn_id : intconn_id : uint16
  • Line 256: unit_id : intunit_id : uint16

src/explanation/custom-codecs.md

  • All occurrences: is_externalis_store (8 instances)
  • GraphCodec, MedicalImageCodec, FlexibleCodec: return "<hash>"return "<blob@>"
  • BamCodec, LargeDataCodec: return "<object>"return "<object@>"

src/how-to/create-custom-codec.md

  • Example code: return "<hash>"return "<blob@>"
  • Documentation: Updated return value descriptions
  • ZarrCodec: return "<object>"return "<object@>"

Rationale

Terminology (TERMINOLOGY.md)

  • Anti-restriction (- operator): Filter rows NOT matching condition
  • Restriction (& operator): Filter rows matching condition
  • "Antijoin" and "semijoin" are SQL-specific terms, not part of DataJoint's canonical vocabulary

Core Types (Type System specification)

Core DataJoint types (Layer 2) are preferred:

  • uint8, uint16, int32, float32 — Standardized, portable, explicit size
  • Native types like int, float are discouraged — Backend-specific, lack size metadata

Codec API (DataJoint 2.0)

  • Parameter: is_store (not is_external)
  • External blob storage: <blob@> (not <hash>)
  • Schema-addressed storage: <object@> (not <object>)
  • Internal storage: <blob>, bytes, json

Key Fixes

Storage type corrections:

  • <hash> was an internal implementation detail, not a public API
  • <blob@> is the correct public API for external blob storage
  • <object@> is required for schema-addressed storage (plain <object> is invalid)

Parameter name:

  • is_store reflects the boolean nature (True = use object store)
  • More accurate than is_external which was ambiguous

Verification

  • ✅ No other "antijoin" or "semijoin" occurrences
  • ✅ Python dataclass SpikeTrain.unit_id: int correctly unchanged (Python type, not DataJoint type)
  • ✅ All codec examples now use correct API
  • ✅ Storage type documentation updated

Related

  • User reports from docs.datajoint.com
  • Aligns with TERMINOLOGY.md, Type System specification, and Codec API

- Changed 'Antijoin' to 'Anti-restriction' in cell 18 comment
- Updated operator reference table in cell 35
- Aligns with TERMINOLOGY.md canonical terms
@dimitri-yatsenko dimitri-yatsenko force-pushed the term/replace-antijoin-semijoin branch from 56aecac to 429d510 Compare January 16, 2026 22:29
…utorial

- Changed conn_id : int → conn_id : uint16 in Connectivity table
- Changed unit_id : int → unit_id : uint16 in Unit table
- Python dataclass SpikeTrain.unit_id: int unchanged (Python type, not DJ type)
- Aligns with core type standards from TERMINOLOGY.md
@dimitri-yatsenko dimitri-yatsenko changed the title term: replace 'antijoin' with canonical 'anti-restriction' terminology docs: fix terminology and use core types in tutorials Jan 16, 2026
…ore parameter

- Replace is_external with is_store throughout
- Replace <hash> with <blob@> for external blob storage
- Replace <object> with <object@> for schema-addressed storage
- Update documentation to reflect correct codec API
@dimitri-yatsenko dimitri-yatsenko changed the title docs: fix terminology and use core types in tutorials docs: fix terminology, core types, and codec examples Jan 16, 2026
@MilagrosMarin MilagrosMarin merged commit 1f224ac into main Jan 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants