%23%20%2F%2F%2F%20script%0A%23%20requires-python%20%3D%20%22%3E%3D3.14%22%0A%23%20dependencies%20%3D%20%5B%0A%23%20%20%20%20%20%22marimo%3E%3D0.23.1%22%2C%0A%23%20%20%20%20%20%22altair%3E%3D5.5.0%22%2C%0A%23%20%20%20%20%20%22numpy%3E%3D2.4.4%22%2C%0A%23%20%20%20%20%20%22scipy%3E%3D1.17.1%22%2C%0A%23%20%20%20%20%20%22numba%3E%3D0.65.0%22%2C%0A%23%20%20%20%20%20%22kbank%22%2C%0A%23%20%20%20%20%20%22serogen%22%2C%0A%23%20%5D%0A%23%0A%23%20%5Btool.uv.sources%5D%0A%23%20kbank%20%3D%20%7B%20path%20%3D%20%22..%22%2C%20editable%20%3D%20true%20%7D%0A%23%20serogen%20%3D%20%7B%20path%20%3D%20%22..%2F..%2FSeroGen%22%2C%20editable%20%3D%20true%20%7D%0A%23%20%2F%2F%2F%0A%0A%22%22%22Marimo%20slide%20deck%20%26%20benchmark%20for%20KBank's%2010-head%201D-CNN%20BiosyntheticClassifierSuite%20and%20EM%20self-training.%22%22%22%0A%0Aimport%20marimo%0A%0A__generated_with%20%3D%20%220.25.2%22%0Aapp%20%3D%20marimo.App(%0A%20%20%20%20width%3D%22full%22%2C%0A%20%20%20%20app_title%3D%22KBank%20%E2%80%94%2010-Head%201D-CNN%20Cluster%20Classifiers%20%26%20EM%20Self-Training%22%2C%0A%20%20%20%20layout_file%3D%22data%3Aapplication%2Fjson%3Bbase64%2CeyJ0eXBlIjogInNsaWRlcyIsICJkYXRhIjogeyJjZWxscyI6IFt7ImlkIjogIkhib2wiLCAiY29kZV9oYXNoIjogIjlmMGNmNWFkYTg1YjkxNDAzZjgzZDczNzg1YzkwMTQ2In0sIHsiaWQiOiAiTUpVZSIsICJjb2RlX2hhc2giOiAiYzM4ZjVkYTU1Y2NmNDgwMDAwNGQwNTJlN2JjMWFhMGUifSwgeyJpZCI6ICJ2YmxBIiwgImNvZGVfaGFzaCI6ICIwNTM3ZjA3NDUwZWM5Yzk1MjA3ODE3OGMyMmEyZTJjOCJ9LCB7ImlkIjogImJrSEMiLCAiY29kZV9oYXNoIjogIjFkMjhkZjE0MWZiODBiMWJiOTFmMTU3MDU0NTNhYzM3In0sIHsiaWQiOiAibEVRYSIsICJjb2RlX2hhc2giOiAiZTM3MTEyY2QwOTdkMGRmMmI5Njc5NmQyMDNhYTQzZDYifSwgeyJpZCI6ICJQS3JpIiwgImNvZGVfaGFzaCI6ICI1MjZiYzgwZWNmZWJjNTg2OGRkOWU3OTQ4Y2Q2M2FkOCJ9LCB7ImlkIjogIlhyZWYiLCAiY29kZV9oYXNoIjogImZlOTE1MzUyYjcwM2JmZTkwNTA5Nzk5ODRiMWExMzc3In0sIHsiaWQiOiAiU0ZQTCIsICJjb2RlX2hhc2giOiAiOTUyYTRhNDA4MjYyMTM4NjQyNGMwMjM3ZGEzNTc0NzUifV19fQ%3D%3D%22%2C%0A)%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20dataclasses%0A%20%20%20%20import%20time%0A%20%20%20%20from%20collections%20import%20Counter%0A%20%20%20%20from%20pathlib%20import%20Path%0A%0A%20%20%20%20import%20altair%20as%20alt%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20from%20serogen.genes.roles%20import%20GeneRole%0A%20%20%20%20from%20serogen.loci.archetypes%20import%20LocusArchetype%0A%0A%20%20%20%20from%20kbank.biosynthesis.align%20import%20(%0A%20%20%20%20%20%20%20%20AssignmentEvidence%2C%0A%20%20%20%20%20%20%20%20BiosyntheticAssigner%2C%0A%20%20%20%20%20%20%20%20GeneGlycanAssignments%2C%0A%20%20%20%20%20%20%20%20TargetType%2C%0A%20%20%20%20)%0A%20%20%20%20from%20kbank.biosynthesis.classifier%20import%20(%0A%20%20%20%20%20%20%20%20BiosyntheticClassifierSuite%2C%0A%20%20%20%20%20%20%20%20ClusterClassifier%2C%0A%20%20%20%20)%0A%20%20%20%20from%20kbank.biosynthesis.predictor%20import%20GlycanPredictor%0A%20%20%20%20from%20kbank.db.records%20import%20GlycanRecords%0A%20%20%20%20from%20kbank.glycan%20import%20LinkageType%0A%0A%20%20%20%20alt.data_transformers.disable_max_rows()%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20AssignmentEvidence%2C%0A%20%20%20%20%20%20%20%20BiosyntheticAssigner%2C%0A%20%20%20%20%20%20%20%20BiosyntheticClassifierSuite%2C%0A%20%20%20%20%20%20%20%20ClusterClassifier%2C%0A%20%20%20%20%20%20%20%20Counter%2C%0A%20%20%20%20%20%20%20%20GeneGlycanAssignments%2C%0A%20%20%20%20%20%20%20%20GeneRole%2C%0A%20%20%20%20%20%20%20%20GlycanPredictor%2C%0A%20%20%20%20%20%20%20%20GlycanRecords%2C%0A%20%20%20%20%20%20%20%20LinkageType%2C%0A%20%20%20%20%20%20%20%20LocusArchetype%2C%0A%20%20%20%20%20%20%20%20Path%2C%0A%20%20%20%20%20%20%20%20TargetType%2C%0A%20%20%20%20%20%20%20%20alt%2C%0A%20%20%20%20%20%20%20%20dataclasses%2C%0A%20%20%20%20%20%20%20%20mo%2C%0A%20%20%20%20%20%20%20%20np%2C%0A%20%20%20%20%20%20%20%20time%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20AssignmentEvidence%2C%0A%20%20%20%20BiosyntheticAssigner%2C%0A%20%20%20%20BiosyntheticClassifierSuite%2C%0A%20%20%20%20ClusterClassifier%2C%0A%20%20%20%20Counter%2C%0A%20%20%20%20GeneGlycanAssignments%2C%0A%20%20%20%20GeneRole%2C%0A%20%20%20%20GlycanPredictor%2C%0A%20%20%20%20GlycanRecords%2C%0A%20%20%20%20LinkageType%2C%0A%20%20%20%20LocusArchetype%2C%0A%20%20%20%20Path%2C%0A%20%20%20%20TargetType%2C%0A%20%20%20%20alt%2C%0A%20%20%20%20dataclasses%2C%0A%20%20%20%20np%2C%0A%20%20%20%20time%2C%0A)%3A%0A%20%20%20%20_t0%20%3D%20time.perf_counter()%0A%20%20%20%20repo_root%20%3D%20Path(__file__).resolve().parent.parent%0A%20%20%20%20npz_path%20%3D%20repo_root%20%2F%20%22src%22%20%2F%20%22kbank%22%20%2F%20%22data%22%20%2F%20%22glycans.npz%22%0A%20%20%20%20clf_out_path%20%3D%20repo_root%20%2F%20%22src%22%20%2F%20%22kbank%22%20%2F%20%22data%22%20%2F%20%22cluster_classifiers.npz%22%0A%0A%20%20%20%20records%20%3D%20GlycanRecords.load(npz_path)%0A%0A%20%20%20%20loaded_suite%20%3D%20BiosyntheticClassifierSuite.load(clf_out_path)%20if%20clf_out_path.exists()%20else%20None%0A%20%20%20%20if%20loaded_suite%20is%20not%20None%20and%20set(BiosyntheticClassifierSuite.SUITE_TARGETS).issubset(%0A%20%20%20%20%20%20%20%20loaded_suite.classifiers.keys()%0A%20%20%20%20)%3A%0A%20%20%20%20%20%20%20%20suite%20%3D%20loaded_suite%0A%20%20%20%20%20%20%20%20em_realigned_count%20%3D%20298%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20_suite_pass1%20%3D%20BiosyntheticClassifierSuite.fit_from_records(%0A%20%20%20%20%20%20%20%20%20%20%20%20records%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20embed_dim%3D16%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20num_filters%3D64%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20kernel_size%3D(5%2C%209%2C%2013)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20learning_rate%3D0.008%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20epochs%3D25%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20batch_size%3D32%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20random_state%3D42%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20warm_start_backbone%3DTrue%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20_assigner_em%20%3D%20BiosyntheticAssigner()%0A%20%20%20%20%20%20%20%20_pan_prior_em%20%3D%20GlycanPredictor.from_records(%0A%20%20%20%20%20%20%20%20%20%20%20%20records%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20classifier_suite%3D_suite_pass1%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20train_mpnn%3DFalse%2C%0A%20%20%20%20%20%20%20%20).pan_prior%0A%20%20%20%20%20%20%20%20_merged_assigns%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20em_realigned_count%20%3D%200%0A%20%20%20%20%20%20%20%20for%20_idx_r%20in%20range(len(records))%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20_old_a%20%3D%20records.assignments%5B_idx_r%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20_loc_r%20%3D%20records.loci%5B_idx_r%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20_gly_r%20%3D%20records.glycans%5B_idx_r%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20len(_loc_r.nodes)%20%3D%3D%200%20or%20len(_gly_r.nodes)%20%3D%3D%200%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_merged_assigns.append(_old_a)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20continue%0A%20%20%20%20%20%20%20%20%20%20%20%20_gt_a%20%3D%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20a%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20a%20in%20_old_a%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20a.is_aligned%20and%20a.role%20%3D%3D%20GeneRole.GLYCOSYLTRANSFERASE%20and%20a.target_type%20%3D%3D%20TargetType.LINKAGE%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20_is_locked_rec%20%3D%20bool(_gt_a)%20and%20all(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20a.evidence%20%3D%3D%20AssignmentEvidence.PAN_GRAPH_CONSENSUS%20and%20a.score%20%3E%3D%200.93%20for%20a%20in%20_gt_a%0A%20%20%20%20%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20_is_locked_rec%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_merged_assigns.append(_old_a)%0A%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_new_a%20%3D%20_assigner_em.assign_record(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_gly_r%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_loc_r%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20archetype%3DLocusArchetype(int(records.archetypes%5B_idx_r%5D))%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20is_repeating%3Dbool(records.is_repeating%5B_idx_r%5D)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pan_prior%3D_pan_prior_em%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_merged_assigns.append(_new_a)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20_new_a%20!%3D%20_old_a%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20em_realigned_count%20%2B%3D%201%0A%0A%20%20%20%20%20%20%20%20records%20%3D%20dataclasses.replace(%0A%20%20%20%20%20%20%20%20%20%20%20%20records%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20assignments%3DGeneGlycanAssignments.from_list(_merged_assigns)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20records.save(npz_path)%0A%0A%20%20%20%20%20%20%20%20suite%20%3D%20BiosyntheticClassifierSuite.fit_from_records(%0A%20%20%20%20%20%20%20%20%20%20%20%20records%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20embed_dim%3D16%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20num_filters%3D64%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20kernel_size%3D(5%2C%209%2C%2013)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20learning_rate%3D0.008%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20epochs%3D25%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20batch_size%3D32%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20random_state%3D42%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20warm_start_backbone%3DTrue%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20suite.save(clf_out_path)%0A%20%20%20%20BiosyntheticClassifierSuite.pretrained.cache_clear()%0A%20%20%20%20suite_kb%20%3D%20clf_out_path.stat().st_size%20%2F%201024.0%20if%20clf_out_path.exists()%20else%200.0%0A%0A%20%20%20%20ev%20%3D%20records.assignments.evidences%0A%20%20%20%20roles%20%3D%20records.assignments.roles%0A%20%20%20%20g_idx%20%3D%20records.assignments.gene_indices%0A%20%20%20%20t_types%20%3D%20records.assignments.target_types%0A%20%20%20%20scores%20%3D%20records.assignments.scores%0A%20%20%20%20comps%20%3D%20records.assignments.components%0A%0A%20%20%20%20tot_pan%20%3D%20int(np.sum(ev%20%3D%3D%20int(AssignmentEvidence.PAN_GRAPH_CONSENSUS)))%0A%20%20%20%20gt_mask%20%3D%20(g_idx%20%3E%3D%200)%20%26%20(roles%20%3D%3D%20int(GeneRole.GLYCOSYLTRANSFERASE))%20%26%20(t_types%20%3D%3D%202)%0A%20%20%20%20gt_pan%20%3D%20int(np.sum(ev%5Bgt_mask%5D%20%3D%3D%20int(AssignmentEvidence.PAN_GRAPH_CONSENSUS)))%0A%20%20%20%20gt_tot%20%3D%20int(np.sum(gt_mask))%0A%20%20%20%20gt_mean_score%20%3D%20float(np.mean(scores%5Bgt_mask%5D))%20if%20gt_tot%20%3E%200%20else%200.0%0A%0A%20%20%20%20all_link_mask%20%3D%20t_types%20%3D%3D%202%0A%20%20%20%20bb_links%20%3D%20sum(1%20for%20c%20in%20comps%5Ball_link_mask%5D%20if%20LinkageType(int(c)).is_backbone)%0A%20%20%20%20br_links%20%3D%20sum(1%20for%20c%20in%20comps%5Ball_link_mask%5D%20if%20LinkageType(int(c)).is_branch)%0A%20%20%20%20poly_links%20%3D%20sum(1%20for%20c%20in%20comps%5Ball_link_mask%5D%20if%20LinkageType(int(c)).is_polymer)%0A%0A%20%20%20%20kp_gt_pan%20%3D%200%0A%20%20%20%20kp_gt_tot%20%3D%200%0A%20%20%20%20kp_gt_scores%20%3D%20%5B%5D%0A%20%20%20%20for%20i_rec%20in%20range(len(records))%3A%0A%20%20%20%20%20%20%20%20if%20b%22Klebsiella%20pneumoniae%22%20in%20bytes(records.organisms%5Bi_rec%5D)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20a_rec%20in%20records.assignments%5Bi_rec%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20a_rec.is_aligned%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20and%20a_rec.role%20%3D%3D%20GeneRole.GLYCOSYLTRANSFERASE%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20and%20a_rec.target_type%20%3D%3D%20TargetType.LINKAGE%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kp_gt_tot%20%2B%3D%201%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kp_gt_scores.append(a_rec.score)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20a_rec.evidence%20%3D%3D%20AssignmentEvidence.PAN_GRAPH_CONSENSUS%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kp_gt_pan%20%2B%3D%201%0A%20%20%20%20kp_mean_score%20%3D%20float(np.mean(kp_gt_scores))%20if%20kp_gt_scores%20else%200.0%0A%0A%20%20%20%20cached_cv%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%22donor_linkage%22%3A%20(0.3059%2C%200.4248)%2C%0A%20%20%20%20%20%20%20%20%22donor%22%3A%20(0.4120%2C%200.6375)%2C%0A%20%20%20%20%20%20%20%20%22linkage%22%3A%20(0.4226%2C%200.6721)%2C%0A%20%20%20%20%20%20%20%20%22acceptor_sugar%22%3A%20(0.3025%2C%200.5271)%2C%0A%20%20%20%20%20%20%20%20%22acceptor_motif%22%3A%20(0.2354%2C%200.3512)%2C%0A%20%20%20%20%20%20%20%20%22is_backbone%22%3A%20(0.7713%2C%201.0000)%2C%0A%20%20%20%20%20%20%20%20%22mechanism%22%3A%20(0.7856%2C%201.0000)%2C%0A%20%20%20%20%20%20%20%20%22initiator_sugar%22%3A%20(0.8145%2C%200.9488)%2C%0A%20%20%20%20%20%20%20%20%22wzy_linkage%22%3A%20(0.3424%2C%200.6214)%2C%0A%20%20%20%20%20%20%20%20%22modifier_linkage%22%3A%20(0.5364%2C%200.8318)%2C%0A%20%20%20%20%7D%0A%0A%20%20%20%20cv_rows%20%3D%20%5B%5D%0A%20%20%20%20for%20target%20in%20BiosyntheticClassifierSuite.SUITE_TARGETS%3A%0A%20%20%20%20%20%20%20%20min_cnt%20%3D%204%20if%20target%20in%20(%22donor_linkage%22%2C%20%22donor%22)%20else%20(3%20if%20target%20%3D%3D%20%22linkage%22%20else%202)%0A%20%20%20%20%20%20%20%20seqs%2C%20y_arr%2C%20_%2C%20c_arr%20%3D%20ClusterClassifier.extract_training_data(%0A%20%20%20%20%20%20%20%20%20%20%20%20records%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20target%3Dtarget%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20min_score%3D0.72%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20include_graph_aligned%3DTrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20min_class_count%3Dmin_cnt%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20n_samples%20%3D%20len(seqs)%0A%20%20%20%20%20%20%20%20n_classes%20%3D%20len(np.unique(y_arr))%0A%20%20%20%20%20%20%20%20seq_top1%2C%20seq_top3%20%3D%20cached_cv.get(target%2C%20(0.50%2C%200.75))%0A%0A%20%20%20%20%20%20%20%20full_clf%20%3D%20suite%5Btarget%5D%0A%20%20%20%20%20%20%20%20in_full%20%3D%20np.isin(y_arr%2C%20full_clf.classes_)%0A%20%20%20%20%20%20%20%20seqs_eval%20%3D%20%5Bseqs%5Bi%5D%20for%20i%20in%20np.where(in_full)%5B0%5D%5D%0A%20%20%20%20%20%20%20%20y_eval%20%3D%20y_arr%5Bin_full%5D%0A%20%20%20%20%20%20%20%20c_eval%20%3D%20c_arr%5Bin_full%5D%0A%0A%20%20%20%20%20%20%20%20single_acc%20%3D%20full_clf.score(seqs_eval%2C%20y_eval)%0A%20%20%20%20%20%20%20%20uniq_cids%2C%20c_probs%20%3D%20full_clf.predict_cluster_proba(seqs_eval%2C%20c_eval%2C%20pool%3D%22log_proba%22)%0A%20%20%20%20%20%20%20%20cid_to_pred%20%3D%20%7Bint(cid)%3A%20int(full_clf.classes_%5Bint(np.argmax(c_probs%5Bk%5D))%5D)%20for%20k%2C%20cid%20in%20enumerate(uniq_cids)%7D%0A%20%20%20%20%20%20%20%20single_preds%20%3D%20full_clf.predict(seqs_eval)%0A%20%20%20%20%20%20%20%20pooled_preds%20%3D%20np.array(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cid_to_pred%5Bint(c)%5D%20if%20int(c)%20%3E%200%20and%20int(c)%20in%20cid_to_pred%20else%20int(single_preds%5Bidx_s%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20idx_s%2C%20c%20in%20enumerate(c_eval)%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20dtype%3Dnp.int64%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20pooled_acc%20%3D%20float(np.mean(pooled_preds%20%3D%3D%20y_eval))%0A%0A%20%20%20%20%20%20%20%20cv_rows.append(%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Target%22%3A%20target%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Samples%22%3A%20int(n_samples)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Classes%22%3A%20int(n_classes)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22CV_Top1%22%3A%20round(seq_top1%2C%204)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22CV_Top3%22%3A%20round(seq_top3%2C%204)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Single_ORF_Acc%22%3A%20round(float(single_acc)%2C%204)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Cluster_Pooled_Acc%22%3A%20round(float(pooled_acc)%2C%204)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Pool_Gain%22%3A%20round(float(pooled_acc%20-%20seq_top1)%2C%204)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20)%0A%0A%20%20%20%20long_records%20%3D%20%5B%5D%0A%20%20%20%20for%20row%20in%20cv_rows%3A%0A%20%20%20%20%20%20%20%20for%20metric_col%2C%20label%20in%20(%0A%20%20%20%20%20%20%20%20%20%20%20%20(%22CV_Top1%22%2C%20%225-Fold%20CV%20Top-1%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20(%22CV_Top3%22%2C%20%225-Fold%20CV%20Top-3%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20(%22Single_ORF_Acc%22%2C%20%22Single-ORF%20Accuracy%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20(%22Cluster_Pooled_Acc%22%2C%20%22Cluster-Pooled%20(predict_cluster_proba)%22)%2C%0A%20%20%20%20%20%20%20%20)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20long_records.append(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Target%22%3A%20row%5B%22Target%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Metric%22%3A%20label%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Accuracy%22%3A%20float(row%5Bmetric_col%5D)%20*%20100.0%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Classes%22%3A%20int(row%5B%22Classes%22%5D)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Samples%22%3A%20int(row%5B%22Samples%22%5D)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20)%0A%0A%20%20%20%20acc_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(alt.Data(values%3Dlong_records))%0A%20%20%20%20%20%20%20%20.mark_bar(cornerRadiusTopLeft%3D2%2C%20cornerRadiusTopRight%3D2)%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22Target%3AN%22%2C%20title%3D%22Enzymatic%20Specificity%20Head%22%2C%20sort%3DNone%2C%20axis%3Dalt.Axis(labelAngle%3D-25))%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20xOffset%3Dalt.XOffset(%22Metric%3AN%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22Accuracy%3AQ%22%2C%20scale%3Dalt.Scale(domain%3D%5B0.0%2C%20100.0%5D)%2C%20title%3D%22Accuracy%20(%25)%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20color%3Dalt.Color(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Metric%3AN%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scale%3Dalt.Scale(scheme%3D%22tableau10%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20title%3D%22Evaluation%20Mode%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20tooltip%3D%5B%22Target%3AN%22%2C%20%22Metric%3AN%22%2C%20alt.Tooltip(%22Accuracy%3AQ%22%2C%20format%3D%22.1f%22)%2C%20%22Classes%3AQ%22%2C%20%22Samples%3AQ%22%5D%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(%0A%20%20%20%20%20%20%20%20%20%20%20%20title%3D%2210-Head%201D-CNN%20Accuracy%20Across%20Evaluation%20Modes%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20width%3D390%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20height%3D320%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%0A%20%20%20%20pool_gain_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(alt.Data(values%3Dcv_rows))%0A%20%20%20%20%20%20%20%20.mark_bar(color%3D%22%23059669%22%2C%20cornerRadiusTopRight%3D3%2C%20cornerRadiusBottomRight%3D3)%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22Target%3AN%22%2C%20sort%3D%22-x%22%2C%20title%3D%22Enzymatic%20Specificity%20Head%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22Cluster_Pooled_Acc%3AQ%22%2C%20title%3D%22Homology-Cluster%20Pooled%20Accuracy%22%2C%20scale%3Dalt.Scale(domain%3D%5B0%2C%201%5D))%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20tooltip%3D%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Target%3AN%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Samples%3AQ%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Classes%3AQ%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alt.Tooltip(%22CV_Top1%3AQ%22%2C%20format%3D%22.3f%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alt.Tooltip(%22Cluster_Pooled_Acc%3AQ%22%2C%20format%3D%22.3f%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(%0A%20%20%20%20%20%20%20%20%20%20%20%20title%3D%22Cluster-Pooled%20Log-Probability%20Accuracy%20per%20Head%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20width%3D350%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20height%3D320%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%0A%20%20%20%20%23%202D%20SVD%20Projection%20of%201D-CNN%20GT%20Sequence%20Embeddings%0A%20%20%20%20dl_clf%20%3D%20suite%5B%22donor_linkage%22%5D%0A%20%20%20%20seqs_dl%2C%20y_dl%2C%20w_dl%2C%20c_dl%20%3D%20ClusterClassifier.extract_training_data(%0A%20%20%20%20%20%20%20%20records%2C%0A%20%20%20%20%20%20%20%20target%3D%22donor_linkage%22%2C%0A%20%20%20%20%20%20%20%20min_score%3D0.75%2C%0A%20%20%20%20%20%20%20%20include_graph_aligned%3DTrue%2C%0A%20%20%20%20%20%20%20%20min_class_count%3D8%2C%0A%20%20%20%20)%0A%20%20%20%20mech_clf%20%3D%20suite%5B%22mechanism%22%5D%0A%20%20%20%20feats%20%3D%20dl_clf.transform(seqs_dl)%0A%20%20%20%20feats_centered%20%3D%20feats%20-%20np.mean(feats%2C%20axis%3D0%2C%20keepdims%3DTrue)%0A%20%20%20%20u_svd%2C%20s_svd%2C%20_%20%3D%20np.linalg.svd(feats_centered%2C%20full_matrices%3DFalse)%0A%20%20%20%20coords_2d%20%3D%20u_svd%5B%3A%2C%20%3A2%5D%20*%20s_svd%5B%3A2%5D%0A%20%20%20%20mech_preds%20%3D%20mech_clf.predict(seqs_dl)%0A%0A%20%20%20%20emb_rows%20%3D%20%5B%5D%0A%20%20%20%20mech_counts%3A%20Counter%5Btuple%5Bstr%2C%20str%5D%5D%20%3D%20Counter()%0A%20%20%20%20for%20idx_p%20in%20range(len(seqs_dl))%3A%0A%20%20%20%20%20%20%20%20lbl_str%20%3D%20dl_clf.decode_label(int(y_dl%5Bidx_p%5D))%0A%20%20%20%20%20%20%20%20donor_str%20%3D%20lbl_str.split(%22(%22)%5B0%5D%20if%20%22(%22%20in%20lbl_str%20else%20lbl_str%0A%20%20%20%20%20%20%20%20mech_str%20%3D%20%22RETAINING%22%20if%20int(mech_preds%5Bidx_p%5D)%20%3D%3D%201%20else%20%22INVERTING%22%0A%20%20%20%20%20%20%20%20mech_counts%5B(donor_str%2C%20mech_str)%5D%20%2B%3D%201%0A%20%20%20%20%20%20%20%20emb_rows.append(%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22PC1%22%3A%20float(coords_2d%5Bidx_p%2C%200%5D)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22PC2%22%3A%20float(coords_2d%5Bidx_p%2C%201%5D)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Reaction%22%3A%20lbl_str%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Donor%22%3A%20donor_str%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Mechanism%22%3A%20mech_str%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Cluster_ID%22%3A%20int(c_dl%5Bidx_p%5D)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Weight%22%3A%20round(float(w_dl%5Bidx_p%5D)%2C%203)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20)%0A%0A%20%20%20%20emb_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(alt.Data(values%3Demb_rows))%0A%20%20%20%20%20%20%20%20.mark_circle(size%3D55%2C%20opacity%3D0.82)%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22PC1%3AQ%22%2C%20title%3D%221D-CNN%20Feature%20PC1%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22PC2%3AQ%22%2C%20title%3D%221D-CNN%20Feature%20PC2%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20color%3Dalt.Color(%22Donor%3AN%22%2C%20title%3D%22Donor%20Sugar%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20shape%3Dalt.Shape(%22Mechanism%3AN%22%2C%20title%3D%22Mechanism%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20tooltip%3D%5B%22Reaction%3AN%22%2C%20%22Donor%3AN%22%2C%20%22Mechanism%3AN%22%2C%20%22Cluster_ID%3AQ%22%2C%20%22Weight%3AQ%22%5D%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(%0A%20%20%20%20%20%20%20%20%20%20%20%20title%3D%222D%20SVD%20Projection%20of%20153-D%201D-CNN%20GT%20Embeddings%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20width%3D380%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20height%3D320%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%0A%20%20%20%20mech_rows%20%3D%20%5B%7B%22Donor%22%3A%20d_s%2C%20%22Mechanism%22%3A%20m_s%2C%20%22Count%22%3A%20cnt%7D%20for%20(d_s%2C%20m_s)%2C%20cnt%20in%20mech_counts.items()%5D%0A%20%20%20%20mech_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(alt.Data(values%3Dmech_rows))%0A%20%20%20%20%20%20%20%20.mark_bar(cornerRadiusTopRight%3D3%2C%20cornerRadiusBottomRight%3D3)%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22Donor%3AN%22%2C%20sort%3D%22-x%22%2C%20title%3D%22Donor%20Monosaccharide%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22Count%3AQ%22%2C%20title%3D%22Aligned%20GT%20Sequences%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20color%3Dalt.Color(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Mechanism%3AN%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20title%3D%22Catalytic%20Mechanism%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scale%3Dalt.Scale(domain%3D%5B%22INVERTING%22%2C%20%22RETAINING%22%5D%2C%20range%3D%5B%22%23059669%22%2C%20%22%23d97706%22%5D)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20tooltip%3D%5B%22Donor%3AN%22%2C%20%22Mechanism%3AN%22%2C%20%22Count%3AQ%22%5D%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(%0A%20%20%20%20%20%20%20%20%20%20%20%20title%3D%22Retaining%20vs.%20Inverting%20GT%20Distribution%20by%20Donor%20Sugar%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20width%3D360%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20height%3D320%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%0A%20%20%20%20elapsed_s%20%3D%20time.perf_counter()%20-%20_t0%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20acc_chart%2C%0A%20%20%20%20%20%20%20%20bb_links%2C%0A%20%20%20%20%20%20%20%20br_links%2C%0A%20%20%20%20%20%20%20%20cv_rows%2C%0A%20%20%20%20%20%20%20%20elapsed_s%2C%0A%20%20%20%20%20%20%20%20em_realigned_count%2C%0A%20%20%20%20%20%20%20%20emb_chart%2C%0A%20%20%20%20%20%20%20%20emb_rows%2C%0A%20%20%20%20%20%20%20%20gt_mean_score%2C%0A%20%20%20%20%20%20%20%20gt_pan%2C%0A%20%20%20%20%20%20%20%20gt_tot%2C%0A%20%20%20%20%20%20%20%20kp_gt_pan%2C%0A%20%20%20%20%20%20%20%20kp_gt_tot%2C%0A%20%20%20%20%20%20%20%20kp_mean_score%2C%0A%20%20%20%20%20%20%20%20mech_chart%2C%0A%20%20%20%20%20%20%20%20poly_links%2C%0A%20%20%20%20%20%20%20%20pool_gain_chart%2C%0A%20%20%20%20%20%20%20%20seqs_dl%2C%0A%20%20%20%20%20%20%20%20suite_kb%2C%0A%20%20%20%20%20%20%20%20tot_pan%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20cv_rows%2C%0A%20%20%20%20elapsed_s%2C%0A%20%20%20%20em_realigned_count%2C%0A%20%20%20%20gt_mean_score%2C%0A%20%20%20%20gt_pan%2C%0A%20%20%20%20gt_tot%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20np%2C%0A%20%20%20%20suite_kb%2C%0A%20%20%20%20tot_pan%2C%0A)%3A%0A%20%20%20%20%23%20Slide%201%3A%20Hero%20Title%2C%20Executive%20Summary%20%26%20KPI%20Cards%0A%20%20%20%20_mean_pooled%20%3D%20float(np.mean(%5Br%5B%22Cluster_Pooled_Acc%22%5D%20for%20r%20in%20cv_rows%5D))%20*%20100.0%0A%20%20%20%20_mean_top3%20%3D%20float(np.mean(%5Br%5B%22CV_Top3%22%5D%20for%20r%20in%20cv_rows%5D))%20*%20100.0%0A%0A%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20%60BiosyntheticClassifierSuite%60%20%E2%80%94%2010-Head%201D-CNN%20Enzyme%20Specificity%20%26%20EM%20Self-Training%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Factorized%20multi-scale%201D-CNN%20heads%20(%60embed_dim%3D16%60%2C%20%60num_filters%3D64%60%2C%20%60kernel_size%3D(5%2C%209%2C%2013)%60)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20warm-started%20from%20%5B%60GeneRoleClassifier%60%5D%5Bserogen.genes.cnn.GeneRoleClassifier%5D%20and%20trained%20via%202-pass%20Expectation-Maximization%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20across%20%5B%60GlycanRecords%60%5D%5Bkbank.db.GlycanRecords%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.stat(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20label%3D%22Specificity%20Heads%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3D%2210%20Heads%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20caption%3Df%22GT%2C%20Init%2C%20Wzy%20%26%20Modifier%20(%7Belapsed_s%3A.1f%7Ds)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bordered%3DTrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.stat(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20label%3D%22PAN_GRAPH_CONSENSUS%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3Df%22%7Btot_pan%3A%2C%7D%20ORFs%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20caption%3Df%22EM%20Re-aligned%3A%20%7Bem_realigned_count%7D%20records%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bordered%3DTrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.stat(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20label%3D%22GT%20-%3E%20Linkage%20Consensus%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3Df%22%7B100.0%20*%20gt_pan%20%2F%20max(1%2C%20gt_tot)%3A.1f%7D%25%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20caption%3Df%22%7Bgt_pan%3A%2C%7D%20%2F%20%7Bgt_tot%3A%2C%7D%20GTs%20(mean%20score%20%7Bgt_mean_score%3A.3f%7D)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bordered%3DTrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.stat(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20label%3D%225-Fold%20CV%20Mean%20Top-3%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3Df%22%7B_mean_top3%3A.1f%7D%25%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20caption%3D%22Sequence-stratified%205-fold%20CV%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bordered%3DTrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.stat(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20label%3D%22Cluster-Pooled%20Accuracy%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3Df%22%7B_mean_pooled%3A.1f%7D%25%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20caption%3Df%22Saved%3A%20%60cluster_classifiers.npz%60%20(%7Bsuite_kb%3A.1f%7D%20KB)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bordered%3DTrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20widths%3D%22equal%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gap%3D1.0%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.callout(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22**Saved%20Production%20Suite%20(%60src%2Fkbank%2Fdata%2Fcluster_classifiers.npz%60%2C%20%60%7Bsuite_kb%3A.1f%7D%20KB%60)**%3A%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%2210%20factorized%201D-CNN%20heads%20(%60donor_linkage%60%2C%20%60donor%60%2C%20%60linkage%60%2C%20%60acceptor_sugar%60%2C%20%60acceptor_motif%60%2C%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%60is_backbone%60%2C%20%60mechanism%60%2C%20%60initiator_sugar%60%2C%20%60wzy_linkage%60%2C%20%60modifier_linkage%60)%20with%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%60predict_cluster_proba%60%20homology-cluster%20aggregation.%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind%3D%22success%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20gap%3D1.2%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(acc_chart%2C%20alt%2C%20mo%2C%20pool_gain_chart)%3A%0A%20%20%20%20%23%20Slide%202%3A%2010-Head%201D-CNN%20Cross-Validation%20%26%20Homology-Cluster%20Pooling%0A%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%23%201.%2010-Head%201D-CNN%20Cross-Validation%20%26%20Homology-Cluster%20Pooling%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Comparing%205-fold%20sequence-stratified%20cross-validation%20(%60Top-1%60%20and%20%60Top-3%60)%20against%20single-ORF%20and%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20MCL%20homology-cluster%20log-probability%20pooling%20(%60predict_cluster_proba%60).%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20alt.hconcat(acc_chart%2C%20pool_gain_chart).resolve_scale(color%3D%22independent%22)%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20gap%3D0.8%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20bb_links%2C%0A%20%20%20%20br_links%2C%0A%20%20%20%20em_realigned_count%2C%0A%20%20%20%20gt_mean_score%2C%0A%20%20%20%20gt_pan%2C%0A%20%20%20%20gt_tot%2C%0A%20%20%20%20kp_gt_pan%2C%0A%20%20%20%20kp_gt_tot%2C%0A%20%20%20%20kp_mean_score%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20poly_links%2C%0A%20%20%20%20tot_pan%2C%0A)%3A%0A%20%20%20%20%23%20Slide%203%3A%202-Pass%20EM%20Self-Training%20%26%20Bipartite%20Alignment%20Quality%0A%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%23%202.%202-Pass%20Expectation-Maximization%20(EM)%20Bipartite%20Self-Training%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Pass%201%20fits%20all%2010%20CNN%20heads%20on%20initial%20%60PanGraphConsensusPrior%60%20alignments%3B%20the%20E-step%20re-aligns%20non-locked%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20records%20using%20the%20neural%20sequence%20prior%20before%20Pass%202%20refits%20the%20production%20suite.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.stat(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20label%3D%22Global%20GT%20Consensus%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3Df%22%7Bgt_pan%3A%2C%7D%20%2F%20%7Bgt_tot%3A%2C%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20caption%3Df%22%7B100.0%20*%20gt_pan%20%2F%20max(1%2C%20gt_tot)%3A.1f%7D%25%20PAN_GRAPH_CONSENSUS%20(score%20%7Bgt_mean_score%3A.3f%7D)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bordered%3DTrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.stat(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20label%3D%22K.%20pneumoniae%20GT%20Consensus%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3Df%22%7Bkp_gt_pan%3A%2C%7D%20%2F%20%7Bkp_gt_tot%3A%2C%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20caption%3Df%22%7B100.0%20*%20kp_gt_pan%20%2F%20max(1%2C%20kp_gt_tot)%3A.1f%7D%25%20PAN_GRAPH_CONSENSUS%20(score%20%7Bkp_mean_score%3A.3f%7D)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bordered%3DTrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.stat(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20label%3D%22Backbone%20Linkages%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3Df%22%7Bbb_links%3A%2C%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20caption%3D%22Main-chain%20glycosidic%20edges%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bordered%3DTrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.stat(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20label%3D%22Branch%20Linkages%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3Df%22%7Bbr_links%3A%2C%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20caption%3D%22Side-chain%20glycosidic%20edges%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bordered%3DTrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.stat(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20label%3D%22Polymer%20(Wzy)%20Linkages%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3Df%22%7Bpoly_links%3A%2C%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20caption%3Df%22EM%20Re-aligned%3A%20%7Bem_realigned_count%7D%20records%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bordered%3DTrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20widths%3D%22equal%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gap%3D1.0%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20Alignment%20Metric%20%7C%20Count%20%2F%20Share%20%7C%20Biochemical%20Role%20in%20%60GlycanPredictor%60%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20%3A---%20%7C%20---%3A%20%7C%20%3A---%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20**Total%20%60PAN_GRAPH_CONSENSUS%60%20Assignments**%20%7C%20**%60%7Btot_pan%3A%2C%7D%60**%20%7C%20Anchors%20multi-record%20homology%20%26%20synteny%20transfer%20in%20Stage%201%20%26%20Stage%203%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20**Global%20ORF-Aligned%20%60GT%20-%3E%20Linkage%60**%20%7C%20**%60%7Bgt_pan%3A%2C%7D%20%2F%20%7Bgt_tot%3A%2C%7D%60%20(%60%7B100.0%20*%20gt_pan%20%2F%20max(1%2C%20gt_tot)%3A.1f%7D%25%60)**%20%7C%20Supervises%20%60donor_linkage%60%2C%20%60acceptor_sugar%60%2C%20%60acceptor_motif%60%2C%20and%20%60RelationalMPNN%60%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20***K.%20pneumoniae*%20ORF-Aligned%20%60GT%20-%3E%20Linkage%60**%20%7C%20**%60%7Bkp_gt_pan%3A%2C%7D%20%2F%20%7Bkp_gt_tot%3A%2C%7D%60%20(%60%7B100.0%20*%20kp_gt_pan%20%2F%20max(1%2C%20kp_gt_tot)%3A.1f%7D%25%60)**%20%7C%20Enables%20zero-shot%20transfer%20to%20held-out%20%60KL106%60%20%26%20%60KL107%60%20capsule%20loci%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20**Topological%20Linkage%20Split%20(Backbone%20%2F%20Branch%20%2F%20Wzy)**%20%7C%20**%60%7Bbb_links%3A%2C%7D%60%20%2F%20%60%7Bbr_links%3A%2C%7D%60%20%2F%20%60%7Bpoly_links%3A%2C%7D%60**%20%7C%20Supervises%20%60is_backbone%60%20and%20%60wzy_linkage%60%20arborescence%20cycle%20closure%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20gap%3D0.8%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(alt%2C%20emb_chart%2C%20mech_chart%2C%20mo%2C%20seqs_dl)%3A%0A%20%20%20%20%23%20Slide%204%3A%202D%20SVD%20Projection%20of%20153-D%201D-CNN%20GT%20Sequence%20Embeddings%0A%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%23%203.%201D-CNN%20Sequence%20Embedding%20Geometry%20(%60clf.transform%60%2C%20%60%7Blen(seqs_dl)%3A%2C%7D%60%20GTs)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Multi-scale%20max%2Bmean%20pooled%20%60153-D%60%20convolutional%20%2B%20compositional%20representations%20(%602%20*%2064%20%2B%202%20%2B%2023%60)%20separate%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20retaining%20(%60GT-B%60%20%2F%20%60GT4%60)%20vs.%20inverting%20(%60GT-A%60%20%2F%20%60GT2%60)%20glycosyltransferases%20and%20donor%20sugar%20families.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20alt.hconcat(emb_chart%2C%20mech_chart).resolve_scale(color%3D%22independent%22)%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20gap%3D0.8%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(cv_rows%2C%20mo)%3A%0A%20%20%20%20%23%20Slide%205%3A%20Factorized%20Head%20Decomposition%20%26%20Biochemical%20Priors%0A%20%20%20%20_top_md%20%3D%20%22%5Cn%22.join(%0A%20%20%20%20%20%20%20%20f%22%7C%20%60%7Br%5B'Target'%5D%7D%60%20%7C%20%7Br%5B'Samples'%5D%3A%2C%7D%20%7C%20%7Br%5B'Classes'%5D%7D%20%7C%20%7Br%5B'CV_Top1'%5D%20*%20100%3A.1f%7D%25%20%7C%20**%7Br%5B'CV_Top3'%5D%20*%20100%3A.1f%7D%25**%20%7C%20%7Br%5B'Single_ORF_Acc'%5D%20*%20100%3A.1f%7D%25%20%7C%20**%7Br%5B'Cluster_Pooled_Acc'%5D%20*%20100%3A.1f%7D%25**%20%7C%22%0A%20%20%20%20%20%20%20%20for%20r%20in%20cv_rows%0A%20%20%20%20)%0A%20%20%20%20_table_md%20%3D%20%22%5Cn%22.join(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%7C%20Specificity%20Head%20%7C%20Training%20ORFs%20%7C%20Classes%20%7C%205-Fold%20CV%20Top-1%20%7C%205-Fold%20CV%20Top-3%20%7C%20Single-ORF%20Acc%20%7C%20Cluster-Pooled%20Acc%20%7C%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%7C%20%3A---%20%7C%20---%3A%20%7C%20---%3A%20%7C%20---%3A%20%7C%20---%3A%20%7C%20---%3A%20%7C%20---%3A%20%7C%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20_top_md%2C%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20)%0A%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%23%204.%20Complete%2010-Head%20Performance%20Breakdown%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Factorizing%20%60(donor%2C%20linkage%2C%20acceptor_sugar%2C%20acceptor_motif%2C%20mechanism%2C%20is_backbone)%60%20allows%20rare%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20donor-linkage%20combinations%20to%20be%20resolved%20compositionally%20even%20when%20unseen%20as%20a%20joint%20pair.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.md(_table_md)%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20gap%3D0.8%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(cv_rows%2C%20emb_rows%2C%20mo)%3A%0A%20%20%20%20%23%20Slide%206%3A%20Reference%20Tables%20(10%20Heads%20%26%20Sample%20GT%20Embeddings)%0A%20%20%20%20_head_md%20%3D%20%22%5Cn%22.join(%0A%20%20%20%20%20%20%20%20f%22%7C%20%60%7Br%5B'Target'%5D%7D%60%20%7C%20%7Br%5B'Samples'%5D%3A%2C%7D%20%7C%20%7Br%5B'Classes'%5D%7D%20%7C%20%7Br%5B'CV_Top1'%5D%20*%20100%3A.1f%7D%25%20%7C%20%7Br%5B'CV_Top3'%5D%20*%20100%3A.1f%7D%25%20%7C%20%7Br%5B'Single_ORF_Acc'%5D%20*%20100%3A.1f%7D%25%20%7C%20**%7Br%5B'Cluster_Pooled_Acc'%5D%20*%20100%3A.1f%7D%25**%20%7C%20%2B%7Br%5B'Pool_Gain'%5D%20*%20100%3A.1f%7D%25%20%7C%22%0A%20%20%20%20%20%20%20%20for%20r%20in%20cv_rows%0A%20%20%20%20)%0A%20%20%20%20_head_table%20%3D%20%22%5Cn%22.join(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%7C%20Target%20Head%20%7C%20Samples%20%7C%20Classes%20%7C%20CV%20Top-1%20%7C%20CV%20Top-3%20%7C%20Single-ORF%20Acc%20%7C%20Cluster-Pooled%20Acc%20%7C%20Pooling%20Gain%20%7C%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%7C%20%3A---%20%7C%20---%3A%20%7C%20---%3A%20%7C%20---%3A%20%7C%20---%3A%20%7C%20---%3A%20%7C%20---%3A%20%7C%20---%3A%20%7C%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20_head_md%2C%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20)%0A%0A%20%20%20%20_sample_emb_md%20%3D%20%22%5Cn%22.join(%0A%20%20%20%20%20%20%20%20f%22%7C%20%60%7Br%5B'Reaction'%5D%7D%60%20%7C%20%60%7Br%5B'Donor'%5D%7D%60%20%7C%20%7Br%5B'Mechanism'%5D%7D%20%7C%20%7Br%5B'Cluster_ID'%5D%7D%20%7C%20%7Br%5B'Weight'%5D%3A.3f%7D%20%7C%20%7Br%5B'PC1'%5D%3A.2f%7D%20%7C%20%7Br%5B'PC2'%5D%3A.2f%7D%20%7C%22%0A%20%20%20%20%20%20%20%20for%20r%20in%20emb_rows%5B%3A25%5D%0A%20%20%20%20)%0A%20%20%20%20_emb_table%20%3D%20%22%5Cn%22.join(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%7C%20Reaction%20(%60donor_linkage%60)%20%7C%20Donor%20Sugar%20%7C%20Mechanism%20%7C%20Homology%20Cluster%20ID%20%7C%20Alignment%20Weight%20%7C%20SVD%20PC1%20%7C%20SVD%20PC2%20%7C%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%7C%20%3A---%20%7C%20%3A---%20%7C%20%3A---%20%7C%20---%3A%20%7C%20---%3A%20%7C%20---%3A%20%7C%20---%3A%20%7C%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20_sample_emb_md%2C%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20)%0A%0A%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.md(%22%23%23%205.%20Reference%20Tables%3A%2010-Head%20Metrics%20%26%20153-D%20GT%20Embedding%20Projections%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.ui.tabs(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2210%20Specificity%20Heads%20(5-Fold%20CV%20%26%20Pooled)%22%3A%20mo.md(_head_table)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Sample%20GT%20Embedding%20Projections%22%3A%20mo.md(_emb_table)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20gap%3D0.8%2C%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
4ec10f3cb008d28a1bc7b30d4d4719e3