itasc.contact_analysis.contacts.signed_contact_length¶
Signed contact length — the signed central junction-length reaction coordinate.
Boltzmann-inversion of this coordinate yields the effective potential / barrier
ΔE_eff of T1 transitions: the energy a junction climbs to reach the
four-fold vertex. That inversion and the resulting potential-landscape plot are
downstream concerns owned by the data repo, not this package — this
module only computes the signed lengths themselves. It is the ITASC
analogue of the reference’s extract_central_junction_lengths /
plot_signed_lengths_neg_log_p_histogram (morphogenesis-on-chip_analysis),
but the sign comes from the t1_events table (losing ↔ gaining pairs)
rather than curated “quad” JSONs.
Headless and Qt-free: it operates on an already-read
PositionContactAnalysis,
so it never opens HDF5 itself and runs unchanged in scripts, notebooks, and the
napari plugin.
Functions
|
Signed central junction length per T1 event, per frame. |
- itasc.contact_analysis.contacts.signed_contact_length.signed_central_junction_lengths(analysis, *, pixel_size_um=None, labels=None)[source]¶
Signed central junction length per T1 event, per frame.
For each T1 event the central junction is the edge that flips from the losing cell pair (pre-transition) to the gaining pair (post-transition). Every frame in which an event’s losing edge exists contributes a negative sample (
−length); every frame its gaining edge exists contributes a positive one (+length). The magnitude is the edge length; it crosses zero at the four-fold vertex, so pooled and inverted these reproduce the reference’s double-well potential without curated quads.Fragmented contacts are joined first: the build splits a single cell-cell boundary into several edge rows (one per disconnected segment from
_coordinate_segments), so the lengths of all rows sharing a(frame, cell-pair)are summed into one total junction length before signing. Otherwise each fragment would enter the landscape as its own (short) sample. This is the headless analogue of the v1find_shared_boundary/order_boundary_pixelsjoin that produced one length per junction.All frames an edge exists are used (no ± window) — matching the reference, which histograms the whole movie.
Columns (column-major, all equal length):
t1_event_id— the event each sample belongs to.frame— the frame the sample is read from.signed_length—±length, in µm when pixel_size_um is given else px.role—"losing"(negative) or"gaining"(positive).contact_type— the event’s transition pair"<losing>→<gaining>"(e.g."A-A→A-B"), where each side is the contact label (contact_labels.contact_label_for()) of that junction’s cell pair.""when no labels map is given (the label-agnostic default). A single per-event label is used (not per-side), so both the negative losing lobe and the positive gaining lobe of an event share it and a grouped curve still spansL = 0for the barrier.
labels maps
cell_id -> label(an optional, caller-supplied per-cell classification); a cell absent from it is"unclassified".Returns empty (but typed) arrays when there are no events or no matching edges; an event whose losing/gaining edges never appear in
edgessimply contributes nothing.