You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
concept-airr-record audit, seven fixes verified end-to-end. (1) "locus · chain" row dropped the fictional "chain" field — verified that 'chain' is not in rec.keys(); kept "locus: IGH". (2) cdr3_start / cdr3_end card entries replaced with cdr3_aa (which DOES exist on records, returns None for non-productive) and junction_length — verified that cdr3_start/end aren't fields, junction_start/end are. (3) CIGAR examples 3S280M / 35M4S replaced with realistic 17D279M / 20M / 35M1I12M — verified the engine emits only M/I/D ops never S, with 5' loss surfacing as a leading D-run (e.g. 17D279M not 17S279M), and added a phr-more note documenting the M/I/D-only invariant. (4) trace address mutate.s5f.position[7] corrected to mutate.s5f.site[7] — verified trace.find('mutate.s5f.position[0]') returns None whereas mutate.s5f.site[0] returns ChoiceRecord(Int(246)) — same bug shape we already fixed in guide-trace-introspection; concept page now also mentions the paired mutate.s5f.base[k] entry. (5) PART 03 snippet was using rec.final_simulation().junction_span() — both fictional (rec is a dict from run_records so has no .final_simulation method; Simulation has no .junction_span method). rewrite uses the actual record fields rec["junction_start"] / rec["junction_end"] / rec["junction_aa"] / rec["junction_length"]; verified at seed=10 that the documented values reproduce exactly (junction_start=288, junction_end=348, junction_aa='CARITYIHTAMGFQAYFQHW', junction_length=60). (6) PART 05 prefix_query output mock "[length=5, bases[0]='A', ...]" was misrepresenting the return type — real return is an iterable of ChoiceRecord objects with .address and .value attributes — snippet now shows the actual idiom of iterating and printing rec.address + rec.value with the real output shape. (7) legacy allele names IGHV3-23*01 / IGHD3-10*01 / IGHJ4*02 (which don't exist in the shipped configs anyway) replaced everywhere on the page with the current scheme: IGHVF10-G38*04 / IGHD2-15*01 / IGHJ2*01 on the PART 04 Identity card and PART 02 ribbon, matching what seed=42 actually produces and consistent with how the same record is illustrated across lesson-1 and elsewhere on the site.
<li><spanclass="pass-name">junction_start / junction_end</span><spanclass="pass-note">first base of Cys codon · last base of anchor codon</span></li>
211
-
<li><spanclass="pass-name">junction · junction_aa</span><spanclass="pass-note">nucleotide and amino-acid sequence between anchors</span></li>
212
-
<li><spanclass="pass-name">cdr3_start / cdr3_end</span><spanclass="pass-note">junction minus the flanking anchor codons</span></li>
210
+
<li><spanclass="pass-name">junction_start / junction_end</span><spanclass="pass-note">first base of Cys codon · last base of anchor codon (0-based, end-exclusive)</span></li>
211
+
<li><spanclass="pass-name">junction · junction_aa</span><spanclass="pass-note">nucleotide and amino-acid sequence including both anchor codons</span></li>
212
+
<li><spanclass="pass-name">cdr3_aa</span><spanclass="pass-note">amino-acid sequence without the flanking anchor codons (populated when productive)</span></li>
<li><spanclass="pass-name">mutate.s5f.site[7]</span><spanclass="pass-note">the 8th SHM substitution location (paired with <code>.base[7]</code> for the new base)</span></li>
339
345
</ul>
340
346
</div>
341
347
@@ -347,13 +353,16 @@ <h2>The trace — every decision, addressable.</h2>
0 commit comments