{"id":3565,"date":"2026-03-26T11:55:41","date_gmt":"2026-03-26T11:55:41","guid":{"rendered":"https:\/\/www.chess.lumn.eu\/wordpress\/?p=3565"},"modified":"2026-03-26T16:37:35","modified_gmt":"2026-03-26T16:37:35","slug":"ordo-gui-copy","status":"publish","type":"post","link":"https:\/\/www.chess.lumn.eu\/wordpress\/2026\/03\/26\/ordo-gui-copy\/","title":{"rendered":"Ordo &#038; BayesElo GUI"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"3565\" class=\"elementor elementor-3565\">\n\t\t\t\t\t\t<div class=\"elementor-inner\">\n\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-82809f0 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"82809f0\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e047cbf\" data-id=\"e047cbf\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5a8adb2 elementor-widget elementor-widget-html\" data-id=\"5a8adb2\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>OrdoStat \u2014 Manuel d'Utilisation<\/title>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:wght@400;700;900&family=Source+Serif+4:ital,wght@0,300;0,400;0,600;0,700;1,400&family=IBM+Plex+Mono:wght@400;600&family=Bebas+Neue&display=swap\" rel=\"stylesheet\">\n<style>\n\/* \u2500\u2500 Variables \u2500\u2500 *\/\n:root {\n  --ink:       #0a0e1a;\n  --paper:     #f5f0e8;\n  --card:      #ffffff;\n  --gold:      #b8860b;\n  --gold-lt:   #d4af37;\n  --gold-pale: #f9f3e0;\n  --blue:      #1a3a6c;\n  --blue-lt:   #4a90d9;\n  --blue-pale: #e8f0fb;\n  --green:     #1a4a2a;\n  --green-lt:  #5a9a5a;\n  --green-pale:#eaf4ea;\n  --red:       #8b2020;\n  --red-pale:  #faeaea;\n  --muted:     #6b6456;\n  --border:    #d4c9b0;\n  --rule:      #c0b090;\n}\n\n\/* \u2500\u2500 Reset & Base \u2500\u2500 *\/\n*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\nhtml { font-size: 16px; }\nbody {\n  font-family: 'Source Serif 4', Georgia, serif;\n  background: var(--paper);\n  color: var(--ink);\n  line-height: 1.7;\n}\n\n\/* \u2500\u2500 Typography \u2500\u2500 *\/\nh1, h2, h3, h4 { font-family: 'Playfair Display', Georgia, serif; }\nh1 { font-size: 3.5rem; font-weight: 900; line-height: 1.05; }\nh2 { font-size: 1.9rem; font-weight: 700; line-height: 1.2; }\nh3 { font-size: 1.35rem; font-weight: 700; }\nh4 { font-size: 1.05rem; font-weight: 700; }\np  { margin-bottom: 1rem; }\ncode, kbd {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.85em;\n  background: rgba(0,0,0,0.06);\n  padding: 0.15em 0.4em;\n  border-radius: 3px;\n  color: var(--blue);\n}\npre {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.83rem;\n  background: #1a1a2e;\n  color: #c8d6f0;\n  padding: 1.4rem 1.6rem;\n  border-radius: 8px;\n  overflow-x: auto;\n  line-height: 1.6;\n  border-left: 4px solid var(--gold-lt);\n  margin: 1.2rem 0;\n}\npre .c  { color: #6a7d9a; font-style: italic; }  \/* comment *\/\npre .k  { color: #d4af37; }                       \/* keyword *\/\npre .s  { color: #7ec8a0; }                       \/* string *\/\npre .n  { color: #a0c4e8; }                       \/* name *\/\nstrong  { font-weight: 700; }\nem      { font-style: italic; }\n\n\/* \u2500\u2500 Layout \u2500\u2500 *\/\n.page-wrap { max-width: 900px; margin: 0 auto; padding: 0 2rem; }\n\n\/* \u2500\u2500 COVER \u2500\u2500 *\/\n.cover {\n  background: var(--ink);\n  color: var(--paper);\n  min-height: 100vh;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  text-align: center;\n  padding: 4rem 2rem;\n  position: relative;\n  overflow: hidden;\n  page-break-after: always;\n}\n.cover::before {\n  content: '';\n  position: absolute; inset: 0;\n  background:\n    radial-gradient(ellipse 70% 50% at 20% 80%, rgba(184,134,11,0.12) 0%, transparent 60%),\n    radial-gradient(ellipse 50% 60% at 80% 20%, rgba(74,144,217,0.10) 0%, transparent 60%);\n  pointer-events: none;\n}\n.cover-label {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.78rem;\n  letter-spacing: 0.25em;\n  text-transform: uppercase;\n  color: var(--gold-lt);\n  margin-bottom: 2rem;\n  opacity: 0.8;\n}\n.cover h1 {\n  font-size: 5.5rem;\n  font-weight: 900;\n  color: #ffffff;\n  letter-spacing: -0.02em;\n  line-height: 0.95;\n  margin-bottom: 0.4rem;\n}\n.cover h1 span { color: var(--gold-lt); }\n.cover-tagline {\n  font-family: 'Source Serif 4', serif;\n  font-size: 1.2rem;\n  font-style: italic;\n  color: rgba(245,240,232,0.65);\n  margin-top: 1.2rem;\n  margin-bottom: 3rem;\n}\n.cover-divider {\n  width: 80px;\n  height: 2px;\n  background: linear-gradient(90deg, transparent, var(--gold-lt), transparent);\n  margin: 0 auto 3rem;\n}\n.cover-meta {\n  display: flex;\n  gap: 3rem;\n  justify-content: center;\n  flex-wrap: wrap;\n}\n.cover-meta-item { text-align: center; }\n.cover-meta-item .label {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.65rem;\n  letter-spacing: 0.2em;\n  text-transform: uppercase;\n  color: rgba(245,240,232,0.4);\n  display: block;\n  margin-bottom: 0.3rem;\n}\n.cover-meta-item .value {\n  font-family: 'Playfair Display', serif;\n  font-size: 0.95rem;\n  color: rgba(245,240,232,0.85);\n}\n.cover-chess-bg {\n  position: absolute;\n  font-size: 14rem;\n  opacity: 0.03;\n  bottom: -2rem;\n  right: -2rem;\n  line-height: 1;\n  pointer-events: none;\n}\n\n\/* \u2500\u2500 TABLE OF CONTENTS \u2500\u2500 *\/\n.toc-section {\n  background: var(--ink);\n  color: var(--paper);\n  padding: 4rem 0;\n  page-break-after: always;\n}\n.toc-inner { max-width: 900px; margin: 0 auto; padding: 0 2rem; }\n.toc-header {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.7rem;\n  letter-spacing: 0.3em;\n  text-transform: uppercase;\n  color: var(--gold-lt);\n  margin-bottom: 0.5rem;\n}\n.toc-title { font-size: 2.2rem; color: #fff; margin-bottom: 2.5rem; }\n.toc-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 0.4rem 3rem;\n}\n.toc-item {\n  display: flex;\n  align-items: baseline;\n  gap: 0.8rem;\n  padding: 0.5rem 0;\n  border-bottom: 1px solid rgba(255,255,255,0.06);\n}\n.toc-num {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.7rem;\n  color: var(--gold-lt);\n  opacity: 0.7;\n  min-width: 1.8rem;\n  flex-shrink: 0;\n}\n.toc-text {\n  font-size: 0.92rem;\n  color: rgba(245,240,232,0.8);\n  flex: 1;\n}\n.toc-sub {\n  font-size: 0.8rem;\n  color: rgba(245,240,232,0.4);\n  padding-left: 2.6rem;\n}\n\n\/* \u2500\u2500 SECTION WRAPPER \u2500\u2500 *\/\n.section {\n  padding: 4rem 0 3rem;\n  page-break-inside: avoid;\n}\n.section + .section { border-top: 1px solid var(--border); }\n\n\/* \u2500\u2500 Section Header \u2500\u2500 *\/\n.section-label {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.68rem;\n  letter-spacing: 0.28em;\n  text-transform: uppercase;\n  color: var(--gold);\n  margin-bottom: 0.4rem;\n}\n.section h2 {\n  color: var(--ink);\n  margin-bottom: 0.3rem;\n}\n.section-rule {\n  width: 50px;\n  height: 3px;\n  background: var(--gold-lt);\n  border-radius: 2px;\n  margin: 0.8rem 0 1.8rem;\n}\n\n\/* \u2500\u2500 CALLOUT BOXES \u2500\u2500 *\/\n.callout {\n  border-radius: 8px;\n  padding: 1.2rem 1.4rem;\n  margin: 1.4rem 0;\n  display: flex;\n  gap: 1rem;\n  align-items: flex-start;\n}\n.callout-icon {\n  font-size: 1.3rem;\n  flex-shrink: 0;\n  margin-top: 0.1rem;\n}\n.callout-body { flex: 1; }\n.callout-body p { margin-bottom: 0.4rem; }\n.callout-body p:last-child { margin-bottom: 0; }\n.callout-title {\n  font-family: 'Playfair Display', serif;\n  font-weight: 700;\n  font-size: 0.95rem;\n  margin-bottom: 0.3rem;\n  display: block;\n}\n.callout.note   { background: var(--blue-pale);  border-left: 4px solid var(--blue-lt);  }\n.callout.note .callout-title { color: var(--blue); }\n.callout.tip    { background: var(--gold-pale);  border-left: 4px solid var(--gold-lt);  }\n.callout.tip .callout-title { color: var(--gold); }\n.callout.warn   { background: var(--red-pale);   border-left: 4px solid #cc4444;         }\n.callout.warn .callout-title { color: var(--red); }\n.callout.ok     { background: var(--green-pale); border-left: 4px solid var(--green-lt); }\n.callout.ok .callout-title { color: var(--green); }\n\n\/* \u2500\u2500 STEP CARDS \u2500\u2500 *\/\n.steps { display: flex; flex-direction: column; gap: 1rem; margin: 1.5rem 0; }\n.step {\n  display: flex;\n  gap: 1.2rem;\n  align-items: flex-start;\n  background: var(--card);\n  border: 1px solid var(--border);\n  border-radius: 10px;\n  padding: 1.2rem 1.4rem;\n  box-shadow: 0 1px 4px rgba(0,0,0,0.05);\n}\n.step-num {\n  background: var(--ink);\n  color: var(--gold-lt);\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.8rem;\n  font-weight: 600;\n  width: 32px; height: 32px;\n  border-radius: 50%;\n  display: flex; align-items: center; justify-content: center;\n  flex-shrink: 0;\n}\n.step-content { flex: 1; }\n.step-title { font-weight: 700; font-size: 0.95rem; margin-bottom: 0.3rem; }\n.step-desc { font-size: 0.88rem; color: var(--muted); margin: 0; }\n\n\/* \u2500\u2500 FIELD TABLE \u2500\u2500 *\/\n.field-table { width: 100%; border-collapse: collapse; margin: 1.4rem 0; font-size: 0.9rem; }\n.field-table th {\n  background: var(--ink);\n  color: var(--gold-lt);\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.72rem;\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n  padding: 0.75rem 1rem;\n  text-align: left;\n}\n.field-table td {\n  padding: 0.75rem 1rem;\n  border-bottom: 1px solid var(--border);\n  vertical-align: top;\n}\n.field-table tr:last-child td { border-bottom: none; }\n.field-table tr:hover td { background: var(--gold-pale); }\n.field-table .fname {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.82rem;\n  font-weight: 600;\n  color: var(--blue);\n  white-space: nowrap;\n}\n.field-table .req {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.7rem;\n  padding: 0.15em 0.5em;\n  border-radius: 3px;\n  font-weight: 600;\n}\n.req.oui  { background: #d4edda; color: #155724; }\n.req.non  { background: #e2e3e5; color: #383d41; }\n.req.cond { background: #fff3cd; color: #856404; }\n\n\/* \u2500\u2500 RESULT TABLE \u2500\u2500 *\/\n.result-cols { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 0.8rem; margin: 1.2rem 0; }\n.result-col {\n  background: var(--card);\n  border: 1px solid var(--border);\n  border-top: 3px solid var(--gold-lt);\n  border-radius: 8px;\n  padding: 1rem 1.1rem;\n}\n.result-col .col-name {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.78rem;\n  font-weight: 600;\n  color: var(--gold);\n  margin-bottom: 0.3rem;\n  display: block;\n}\n.result-col p { font-size: 0.83rem; color: var(--muted); margin: 0; }\n\n\/* \u2500\u2500 MODE BADGE \u2500\u2500 *\/\n.mode-badge {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.4rem;\n  padding: 0.3rem 0.9rem;\n  border-radius: 20px;\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.78rem;\n  font-weight: 600;\n  margin-bottom: 0.8rem;\n}\n.mode-badge.ordo  { background: #1e2a10; color: #7aaa50; border: 1px solid #3a6a1a; }\n.mode-badge.bayes { background: #1a3a5c; color: #4a90d9; border: 1px solid #2a5a90; }\n\n\/* \u2500\u2500 FILE TREE \u2500\u2500 *\/\n.file-tree {\n  background: #1a1a2e;\n  border-radius: 8px;\n  padding: 1.4rem 1.6rem;\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.83rem;\n  line-height: 2;\n  color: #c8d6f0;\n  margin: 1.2rem 0;\n}\n.file-tree .dir   { color: var(--gold-lt); }\n.file-tree .exe   { color: #7ec8a0; }\n.file-tree .pgn   { color: #a0c4e8; }\n.file-tree .out   { color: #d4a0d0; }\n.file-tree .csv   { color: #f0c080; }\n.file-tree .note  { color: #6a7d9a; font-style: italic; }\n\n\/* \u2500\u2500 FIGURE \/ SCREENSHOT \u2500\u2500 *\/\n.ui-mock {\n  background: #0f0e0c;\n  border: 1px solid #3a3520;\n  border-radius: 10px;\n  padding: 1.2rem;\n  margin: 1.5rem 0;\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.78rem;\n  color: #e8dfc0;\n}\n.ui-mock-title {\n  font-family: 'Source Serif 4', serif;\n  font-size: 0.75rem;\n  color: #7a7050;\n  margin-bottom: 0.8rem;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n}\n.ui-row {\n  display: flex;\n  align-items: center;\n  gap: 0.6rem;\n  margin-bottom: 0.4rem;\n}\n.ui-label  { color: #7a7050; min-width: 100px; text-align: right; font-size: 0.72rem; }\n.ui-field  { background: #0b0a07; border: 1px solid #3a3520; border-radius: 3px; padding: 0.2rem 0.5rem; flex: 1; color: #e8dfc0; }\n.ui-btn    { background: #b8960c; color: #0f0e0c; border-radius: 3px; padding: 0.2rem 0.6rem; font-weight: bold; font-size: 0.72rem; }\n.ui-btn-green { background: #2a4a2a; color: #b0d8b0; border: 1px solid #3a6a3a; padding: 0.3rem 1rem; border-radius: 4px; }\n.ui-chk    { color: #b8960c; }\n.ui-sep    { border: none; border-top: 1px solid #252010; margin: 0.6rem 0; }\n.ui-badge-o { background: #1e2a10; color: #7aaa50; border: 1px solid #3a6a1a; border-radius: 10px; padding: 0.1rem 0.5rem; font-size: 0.7rem; }\n.ui-badge-b { background: #1a3a5c; color: #4a90d9; border: 1px solid #2a5a90; border-radius: 10px; padding: 0.1rem 0.5rem; font-size: 0.7rem; }\n.ui-grp-title { color: #d4af37; font-size: 0.72rem; margin: 0.6rem 0 0.3rem; }\n.ui-console { background: #050503; border: 1px solid #1a3a1a; border-radius: 4px; padding: 0.5rem 0.6rem; font-size: 0.72rem; color: #3a8a3a; margin-top: 0.4rem; }\n\n\/* \u2500\u2500 TWO-COL \u2500\u2500 *\/\n.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; margin: 1.2rem 0; }\n.two-col > div { background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 1.3rem; }\n.two-col h4 { margin-bottom: 0.5rem; }\n\n\/* \u2500\u2500 ANCHOR DEMO \u2500\u2500 *\/\n.anchor-demo {\n  background: linear-gradient(135deg, #0a0e1a 0%, #1a1a30 100%);\n  border-radius: 10px;\n  padding: 1.8rem;\n  margin: 1.4rem 0;\n  color: #e8dfc0;\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.82rem;\n}\n.anchor-demo .scale {\n  display: flex;\n  align-items: flex-end;\n  gap: 2px;\n  height: 80px;\n  margin: 1rem 0 0.5rem;\n}\n.anchor-demo .bar {\n  background: #3a3520;\n  border-radius: 2px 2px 0 0;\n  flex: 1;\n  position: relative;\n  transition: all 0.3s;\n}\n.anchor-demo .bar.highlight {\n  background: var(--gold-lt);\n  box-shadow: 0 0 8px rgba(212,175,55,0.3);\n}\n.anchor-demo .bar.shifted { background: #4a90d9; }\n.anchor-demo .arrow {\n  text-align: center;\n  color: var(--gold-lt);\n  font-size: 1.2rem;\n  margin: 0.3rem 0;\n}\n.anchor-demo .label { color: #7a7050; font-size: 0.72rem; margin-top: 0.3rem; }\n\n\/* \u2500\u2500 COMPARISON TABLE \u2500\u2500 *\/\n.comp-table { width: 100%; border-collapse: collapse; margin: 1.4rem 0; }\n.comp-table th {\n  padding: 0.8rem 1rem;\n  text-align: left;\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.72rem;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n}\n.comp-table th:first-child { background: var(--ink); color: var(--gold-lt); border-radius: 8px 0 0 0; }\n.comp-table th:nth-child(2) { background: #1e2a10; color: #7aaa50; }\n.comp-table th:nth-child(3) { background: #1a3a5c; color: #4a90d9; border-radius: 0 8px 0 0; }\n.comp-table td { padding: 0.75rem 1rem; border-bottom: 1px solid var(--border); font-size: 0.88rem; }\n.comp-table tr:last-child td { border-bottom: none; }\n.comp-check { color: #5a9a5a; font-size: 1.1rem; }\n.comp-cross { color: #aa4040; font-size: 1.1rem; }\n.comp-part  { color: #b8860b; font-size: 1.1rem; }\n\n\/* \u2500\u2500 KEYBOARD SHORTCUT \u2500\u2500 *\/\n.shortcuts { display: flex; flex-direction: column; gap: 0.5rem; margin: 1rem 0; }\n.shortcut { display: flex; align-items: center; gap: 1rem; }\n.shortcut kbd {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.78rem;\n  background: var(--ink);\n  color: var(--gold-lt);\n  padding: 0.2rem 0.6rem;\n  border-radius: 4px;\n  border-bottom: 2px solid #4a3a00;\n  white-space: nowrap;\n}\n.shortcut .action { font-size: 0.88rem; color: var(--muted); }\n\n\/* \u2500\u2500 FOOTER \u2500\u2500 *\/\n.manual-footer {\n  background: var(--ink);\n  color: rgba(245,240,232,0.4);\n  text-align: center;\n  padding: 2.5rem 2rem;\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.72rem;\n  letter-spacing: 0.1em;\n  margin-top: 4rem;\n}\n.manual-footer strong { color: var(--gold-lt); }\n\n\/* \u2500\u2500 PRINT \u2500\u2500 *\/\n@media print {\n  .cover { page-break-after: always; }\n  .toc-section { page-break-after: always; }\n  .section { page-break-inside: avoid; }\n  h2 { page-break-after: avoid; }\n  h3 { page-break-after: avoid; }\n  pre, .callout, .step, .ui-mock { page-break-inside: avoid; }\n}\n<\/style>\n<\/head>\n<body>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     COVER\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"cover\">\n  <div class=\"cover-chess-bg\">\u265f<\/div>\n  <p class=\"cover-label\">Manuel d'Utilisation Officiel<\/p>\n  <h1>Ordo<span>Stat<\/span><\/h1>\n  <p style=\"font-family:'IBM Plex Mono',monospace;font-size:0.8rem;letter-spacing:0.15em;color:rgba(212,175,55,0.6);margin-top:0.3rem;\">v 1.0  \u2014  Interface PyQt6<\/p>\n  <p class=\"cover-tagline\">Calcul des performances Elo de moteurs d'\u00e9checs<br>par maximum de vraisemblance<\/p>\n  <div class=\"cover-divider\"><\/div>\n  <div class=\"cover-meta\">\n    <div class=\"cover-meta-item\">\n      <span class=\"label\">Auteur<\/span>\n      <span class=\"value\">Valter Drazic<\/span>\n    <\/div>\n    <div class=\"cover-meta-item\">\n      <span class=\"label\">Moteurs support\u00e9s<\/span>\n      <span class=\"value\">Ordo \u00b7 BayesElo<\/span>\n    <\/div>\n    <div class=\"cover-meta-item\">\n      <span class=\"label\">Laboratoire<\/span>\n      <span class=\"value\">Chroniques Software<\/span>\n    <\/div>\n    <div class=\"cover-meta-item\">\n      <span class=\"label\">\u00c9dition<\/span>\n      <span class=\"value\">Mars 2026<\/span>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     TABLE OF CONTENTS\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"toc-section\">\n  <div class=\"toc-inner\">\n    <p class=\"toc-header\">Sommaire<\/p>\n    <h2 class=\"toc-title\">Table des mati\u00e8res<\/h2>\n    <div class=\"toc-grid\">\n      <div>\n        <div class=\"toc-item\"><span class=\"toc-num\">01<\/span><span class=\"toc-text\">Introduction &amp; concept<\/span><\/div>\n        <div class=\"toc-item\"><span class=\"toc-num\">02<\/span><span class=\"toc-text\">Installation &amp; organisation des fichiers<\/span><\/div>\n        <div class=\"toc-sub\">Structure recommand\u00e9e du dossier de travail<\/div>\n        <div class=\"toc-item\"><span class=\"toc-num\">03<\/span><span class=\"toc-text\">Interface utilisateur \u2014 Vue d'ensemble<\/span><\/div>\n        <div class=\"toc-sub\">Zones de l'interface \u00b7 S\u00e9lection de langue<\/div>\n        <div class=\"toc-item\"><span class=\"toc-num\">04<\/span><span class=\"toc-text\">Mode Ordo \u2014 Guide complet<\/span><\/div>\n        <div class=\"toc-sub\">S\u00e9lection des fichiers \u00b7 Ancres \u00b7 Lancement<\/div>\n        <div class=\"toc-item\"><span class=\"toc-num\">05<\/span><span class=\"toc-text\">Mode BayesElo \u2014 Guide complet<\/span><\/div>\n        <div class=\"toc-sub\">S\u00e9quence stdin \u00b7 Ancre offset \u00b7 R\u00e9sultats<\/div>\n      <\/div>\n      <div>\n        <div class=\"toc-item\"><span class=\"toc-num\">06<\/span><span class=\"toc-text\">Interpr\u00e9tation des r\u00e9sultats<\/span><\/div>\n        <div class=\"toc-sub\">Colonnes du tableau \u00b7 Erreurs \u00b1 \u00b7 Score%<\/div>\n        <div class=\"toc-item\"><span class=\"toc-num\">07<\/span><span class=\"toc-text\">Ancrage Elo \u2014 M\u00e9thodologie<\/span><\/div>\n        <div class=\"toc-sub\">Ancres simples vs multiples \u00b7 Fichier CSV<\/div>\n        <div class=\"toc-item\"><span class=\"toc-num\">08<\/span><span class=\"toc-text\">Fonctions avanc\u00e9es<\/span><\/div>\n        <div class=\"toc-sub\">Menu contextuel \u00b7 Export \u00b7 Copie commande<\/div>\n        <div class=\"toc-item\"><span class=\"toc-num\">09<\/span><span class=\"toc-text\">Comparaison Ordo vs BayesElo<\/span><\/div>\n        <div class=\"toc-item\"><span class=\"toc-num\">10<\/span><span class=\"toc-text\">D\u00e9pannage<\/span><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     MAIN CONTENT\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"page-wrap\">\n\n<!-- \u00a71 INTRODUCTION -->\n<div class=\"section\" id=\"intro\">\n  <p class=\"section-label\">Section 01<\/p>\n  <h2>Introduction &amp; concept<\/h2>\n  <div class=\"section-rule\"><\/div>\n\n  <p><strong>OrdoStat<\/strong> est une interface graphique Python\/PyQt6 con\u00e7ue pour orchestrer deux moteurs de calcul Elo sp\u00e9cialis\u00e9s dans l'\u00e9valuation des performances de moteurs d'\u00e9checs \u00e0 partir de fichiers PGN de tournoi.<\/p>\n\n  <p>Contrairement au syst\u00e8me Elo classique (incr\u00e9mental, con\u00e7u pour les listes en cours), OrdoStat utilise des algorithmes de <strong>maximum de vraisemblance<\/strong> qui calculent la coh\u00e9rence globale de tous les r\u00e9sultats d'un tournoi \u00e0 la fois, produisant des classements nettement plus pr\u00e9cis et robustes.<\/p>\n\n  <div class=\"two-col\">\n    <div>\n      <h4>\u265f Le probl\u00e8me r\u00e9solu<\/h4>\n      <p style=\"font-size:0.88rem;color:var(--muted);\">Vous disposez d'un fichier PGN contenant les r\u00e9sultats d'un tournoi entre plusieurs moteurs d'\u00e9checs. Vous souhaitez conna\u00eetre leur force Elo relative \u2014 et si possible absolue, calibr\u00e9e sur une \u00e9chelle connue.<\/p>\n    <\/div>\n    <div>\n      <h4>\u2699 La solution OrdoStat<\/h4>\n      <p style=\"font-size:0.88rem;color:var(--muted);\">OrdoStat pilote Ordo (Miguel Ballicora) ou BayesElo (R\u00e9mi Coulom), produit un classement complet avec erreurs statistiques, et l'affiche dans un tableau interactif tri-able.<\/p>\n    <\/div>\n  <\/div>\n\n  <div class=\"callout note\">\n    <div class=\"callout-icon\">\u2139<\/div>\n    <div class=\"callout-body\">\n      <span class=\"callout-title\">Fondement math\u00e9matique<\/span>\n      <p>Pour deux moteurs <em>i<\/em> et <em>j<\/em> de cotes respectives R<sub>i<\/sub> et R<sub>j<\/sub>, la probabilit\u00e9 de victoire suit la fonction logistique : <strong>P(i,j) = 1 \/ (1 + 10<sup>\u2212(R\u1d62\u2212R\u2c7c)\/400<\/sup>)<\/strong>. Les algorithmes minimisent l'\u00e9cart entre r\u00e9sultats observ\u00e9s et ces probabilit\u00e9s th\u00e9oriques.<\/p>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- \u00a72 INSTALLATION -->\n<div class=\"section\" id=\"install\">\n  <p class=\"section-label\">Section 02<\/p>\n  <h2>Installation &amp; organisation des fichiers<\/h2>\n  <div class=\"section-rule\"><\/div>\n\n  <h3>Pr\u00e9requis syst\u00e8me<\/h3>\n  <p>OrdoStat fonctionne sur Windows 10\/11 (et Linux\/macOS sous r\u00e9serve de disposer des binaires appropri\u00e9s). Les composants n\u00e9cessaires sont :<\/p>\n\n  <table class=\"field-table\">\n    <thead><tr><th>Composant<\/th><th>Version minimale<\/th><th>R\u00f4le<\/th><\/tr><\/thead>\n    <tbody>\n      <tr><td class=\"fname\">Python<\/td><td>3.10+<\/td><td>Interpr\u00e9teur de l'interface graphique<\/td><\/tr>\n      <tr><td class=\"fname\">PyQt6<\/td><td>6.4+<\/td><td>Biblioth\u00e8que UI (install\u00e9e via pip)<\/td><\/tr>\n      <tr><td class=\"fname\">ordo-win64.exe<\/td><td>1.2.6<\/td><td>Moteur de calcul Ordo (Miguel Ballicora)<\/td><\/tr>\n      <tr><td class=\"fname\">bayeselo.exe<\/td><td>0056<\/td><td>Moteur de calcul BayesElo (R\u00e9mi Coulom) \u2014 optionnel<\/td><\/tr>\n      <tr><td class=\"fname\">OrdoStat.exe<\/td><td>\u2014<\/td><td>Ex\u00e9cutable compil\u00e9 par PyInstaller (mode autonome)<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n\n  <h3 style=\"margin-top:1.8rem;\">Structure recommand\u00e9e du dossier de travail<\/h3>\n  <p>Tous les fichiers peuvent se trouver dans le m\u00eame dossier. OrdoStat d\u00e9tecte automatiquement Ordo et BayesElo d\u00e8s que le chemin du PGN est s\u00e9lectionn\u00e9, si les ex\u00e9cutables sont pr\u00e9sents dans le m\u00eame r\u00e9pertoire.<\/p>\n\n  <div class=\"file-tree\">\n    <span class=\"dir\">\ud83d\udcc1 MonTournoi\\<\/span><br>\n    &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"exe\">\u2699 ordo-win64.exe<\/span>&nbsp;&nbsp;&nbsp;<span class=\"note\">\u2190 moteur Ordo (obligatoire en mode Ordo)<\/span><br>\n    &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"exe\">\u2699 bayeselo.exe<\/span>&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"note\">\u2190 moteur BayesElo (obligatoire en mode BayesElo)<\/span><br>\n    &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"exe\">\u2699 OrdoStat.exe<\/span>&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"note\">\u2190 l'interface graphique elle-m\u00eame<\/span><br>\n    &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"pgn\">\ud83d\udcc4 TotalGames.pgn<\/span>&nbsp;&nbsp;<span class=\"note\">\u2190 votre fichier de parties<\/span><br>\n    &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"csv\">\ud83d\udcc4 anchors.csv<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"note\">\u2190 ancres Elo (optionnel)<\/span><br>\n    &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"out\">\ud83d\udcc4 rating.txt<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"note\">\u2190 r\u00e9sultats Ordo (g\u00e9n\u00e9r\u00e9 automatiquement)<\/span><br>\n    &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"out\">\ud83d\udcc4 rating.csv<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"note\">\u2190 r\u00e9sultats Ordo au format CSV (g\u00e9n\u00e9r\u00e9)<\/span><br>\n    &nbsp;&nbsp;&nbsp;&nbsp;<span class=\"out\">\ud83d\udcc4 rating_bayeselo.txt<\/span>&nbsp;<span class=\"note\">\u2190 r\u00e9sultats BayesElo (g\u00e9n\u00e9r\u00e9 automatiquement)<\/span>\n  <\/div>\n\n  <div class=\"callout tip\">\n    <div class=\"callout-icon\">\ud83d\udca1<\/div>\n    <div class=\"callout-body\">\n      <span class=\"callout-title\">D\u00e9tection automatique des ex\u00e9cutables<\/span>\n      <p>D\u00e8s que vous chargez un fichier PGN, OrdoStat scanne le m\u00eame dossier et remplit automatiquement les champs <code>Ordo exe<\/code> et <code>BayesElo exe<\/code> si les ex\u00e9cutables y sont pr\u00e9sents. De m\u00eame, le champ <code>R\u00e9sultat .txt<\/code> est pr\u00e9-rempli avec <code>rating.txt<\/code> dans ce dossier.<\/p>\n    <\/div>\n  <\/div>\n\n  <div class=\"callout warn\">\n    <div class=\"callout-icon\">\u26a0<\/div>\n    <div class=\"callout-body\">\n      <span class=\"callout-title\">Chemins avec espaces ou caract\u00e8res sp\u00e9ciaux<\/span>\n      <p>\u00c9vitez les accents et espaces dans le nom du dossier de travail. Si votre chemin PGN contient des espaces, OrdoStat g\u00e8re ce cas automatiquement, mais certaines versions de bayeselo peuvent avoir des difficult\u00e9s. OrdoStat cr\u00e9e un fichier temporaire avec un nom s\u00fbr pour contourner ce probl\u00e8me.<\/p>\n    <\/div>\n  <\/div>\n\n  <h3 style=\"margin-top:1.8rem;\">Installation via PyInstaller (mode autonome)<\/h3>\n  <p>Pour distribuer OrdoStat sans exiger Python sur la machine cible, utilisez le script <code>compiler.bat<\/code> fourni :<\/p>\n  <pre>compiler.bat<\/pre>\n  <p>Ce script installe les d\u00e9pendances, compile <code>ordo_gui.py<\/code> en <code>dist\\OrdoStat.exe<\/code> via PyInstaller, et propose une compression UPX optionnelle. L'ex\u00e9cutable g\u00e9n\u00e9r\u00e9 est autonome \u2014 aucune installation Python n'est requise sur la machine de l'utilisateur final.<\/p>\n<\/div>\n\n<!-- \u00a73 INTERFACE -->\n<div class=\"section\" id=\"interface\">\n  <p class=\"section-label\">Section 03<\/p>\n  <h2>Interface utilisateur \u2014 Vue d'ensemble<\/h2>\n  <div class=\"section-rule\"><\/div>\n\n  <p>L'interface est organis\u00e9e en cinq zones verticales, empil\u00e9es de haut en bas :<\/p>\n\n  <div class=\"ui-mock\">\n    <div class=\"ui-mock-title\">OrdoStat \u2014 Vue g\u00e9n\u00e9rale sch\u00e9matique<\/div>\n    <div style=\"display:flex;gap:0.4rem;margin-bottom:0.6rem;justify-content:flex-end;\">\n      <div style=\"width:26px;height:20px;background:#211e11;border:1px solid #3a3520;border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:0.65rem;\">FR<\/div>\n      <div style=\"width:26px;height:20px;background:#0f0e0c;border:1px solid #3a3520;border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:0.65rem;\">EN<\/div>\n      <div style=\"width:26px;height:20px;background:#0f0e0c;border:1px solid #3a3520;border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:0.65rem;\">ES<\/div>\n      <div style=\"width:26px;height:20px;background:#0f0e0c;border:1px solid #3a3520;border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:0.65rem;\">NL<\/div>\n      <div style=\"width:26px;height:20px;background:#0f0e0c;border:1px solid #3a3520;border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:0.65rem;\">DE<\/div>\n    <\/div>\n    <div style=\"display:flex;gap:0.5rem;margin-bottom:0.8rem;\">\n      <div class=\"ui-btn-green\">\u265f Calculer les performances Elo<\/div>\n      <div style=\"background:#1e3050;color:#a0c0e0;border:1px solid #2a4a70;border-radius:3px;padding:0.2rem 0.7rem;font-size:0.72rem;\">\ud83d\udcc2 Charger r\u00e9sultat existant<\/div>\n      <div style=\"background:#b8960c;color:#0f0e0c;border-radius:3px;padding:0.2rem 0.7rem;font-size:0.72rem;font-weight:bold;\">\u2715 Effacer<\/div>\n    <\/div>\n    <div style=\"border:1px solid #b8960c;border-radius:4px;padding:0.7rem;margin-bottom:0.5rem;\">\n      <div class=\"ui-grp-title\">Fichiers<\/div>\n      <div class=\"ui-row\"><span class=\"ui-label\">PGN :<\/span><span class=\"ui-field\">C:\\Tournoi\\TotalGames.pgn<\/span><span class=\"ui-btn\">\u2026<\/span><\/div>\n      <div class=\"ui-row\"><span class=\"ui-label\">Ordo exe :<\/span><span class=\"ui-field\">C:\\Tournoi\\ordo-win64.exe<\/span><span class=\"ui-btn\">\u2026<\/span><\/div>\n      <div class=\"ui-row\"><span class=\"ui-label\">R\u00e9sultat .txt :<\/span><span class=\"ui-field\">C:\\Tournoi\\rating.txt<\/span><span class=\"ui-btn\">\u2026<\/span><\/div>\n      <div style=\"margin-top:0.4rem;display:flex;align-items:center;gap:0.8rem;\">\n        <span class=\"ui-chk\">\u2611<\/span><span style=\"font-size:0.75rem;\">Avantage trait blanc (-W)<\/span>\n        <span style=\"flex:1\"><\/span>\n        <span style=\"color:#d4af37;font-size:0.72rem;\">76 moteur(s) disponible(s)<\/span>\n      <\/div>\n    <\/div>\n    <div style=\"border:1px solid #b8960c;border-radius:4px;padding:0.7rem;margin-bottom:0.5rem;\">\n      <div class=\"ui-grp-title\">Ancres Elo (moteurs de r\u00e9f\u00e9rence)<\/div>\n      <div style=\"color:#7a7050;font-size:0.7rem;\">[\u2611] Junior 7 &nbsp;\u2192 1914 &nbsp;|&nbsp; [\u2611] Fritz 6 &nbsp;\u2192 1824 &nbsp;|&nbsp; [\u2611] Rybka 2.4 &nbsp;\u2192 2352 &nbsp;|&nbsp; \u2026<\/div>\n    <\/div>\n    <div style=\"border:1px solid #b8960c;border-radius:4px;padding:0.7rem;margin-bottom:0.5rem;\">\n      <div class=\"ui-grp-title\">R\u00e9sultats \u2014 Classement Elo<\/div>\n      <div style=\"font-size:0.7rem;color:#7a7050;\">76 moteurs class\u00e9s \u00b7 erreurs \u00b1 calcul\u00e9es<\/div>\n      <div style=\"display:grid;grid-template-columns:30px 1fr 70px 60px 60px 60px 40px;gap:0 0.4rem;margin-top:0.4rem;font-size:0.68rem;\">\n        <span style=\"color:#d4af37;\">#<\/span><span style=\"color:#d4af37;\">Moteur<\/span><span style=\"color:#d4af37;\">Elo<\/span><span style=\"color:#d4af37;\">\u00b1<\/span><span style=\"color:#d4af37;\">Points<\/span><span style=\"color:#d4af37;\">Parties<\/span><span style=\"color:#d4af37;\">%<\/span>\n        <span>1<\/span><span>Dragon by Komodo Chess 64-bit<\/span><span>3121.2<\/span><span>\u00b18.2<\/span><span>42.0<\/span><span>45<\/span><span>93%<\/span>\n        <span>2<\/span><span>Rebel-16.3 8CPU<\/span><span>3065.5<\/span><span>\u00b18.9<\/span><span>41.0<\/span><span>44<\/span><span>93%<\/span>\n      <\/div>\n    <\/div>\n    <div class=\"ui-console\">ResultSet&gt; 1697 game(s) loaded... \u2713 &nbsp;Calcul termin\u00e9 \u2014 76 moteur(s) class\u00e9(s).<\/div>\n  <\/div>\n\n  <h3 style=\"margin-top:1.8rem;\">Barre de langues<\/h3>\n  <p>Cinq langues sont disponibles via les boutons drapeaux en haut \u00e0 droite : <strong>FR<\/strong>, <strong>EN<\/strong>, <strong>ES<\/strong>, <strong>NL<\/strong>, <strong>DE<\/strong>. Le changement est instantan\u00e9 et s'applique \u00e0 l'ensemble de l'interface. La langue active est m\u00e9moris\u00e9e entre sessions.<\/p>\n\n  <h3 style=\"margin-top:1.2rem;\">Boutons principaux<\/h3>\n  <table class=\"field-table\">\n    <thead><tr><th>Bouton<\/th><th>Action<\/th><\/tr><\/thead>\n    <tbody>\n      <tr><td class=\"fname\">\u265f Calculer les performances Elo<\/td><td>Lance le moteur s\u00e9lectionn\u00e9 (Ordo ou BayesElo) sur le PGN charg\u00e9<\/td><\/tr>\n      <tr><td class=\"fname\">\ud83d\udcc2 Charger r\u00e9sultat existant<\/td><td>Charge et affiche un fichier <code>rating.txt<\/code> existant sans relancer le calcul<\/td><\/tr>\n      <tr><td class=\"fname\">\u2715 Effacer<\/td><td>Vide le tableau de r\u00e9sultats et la console<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<!-- \u00a74 ORDO -->\n<div class=\"section\" id=\"ordo\">\n  <p class=\"section-label\">Section 04<\/p>\n  <h2>Mode Ordo \u2014 Guide complet<\/h2>\n  <div class=\"section-rule\"><\/div>\n\n  <span class=\"mode-badge ordo\">\u25cf ORDO<\/span>\n\n  <p>Ordo (Miguel Ballicora, v1.2.6) est le moteur principal d'OrdoStat. Il utilise un algorithme d'escalade de colline (<em>hill climbing<\/em>) convergent pour estimer les forces relatives de mani\u00e8re coh\u00e9rente sur l'ensemble du pool de parties.<\/p>\n\n  <h3>4.1 Champs de fichiers<\/h3>\n\n  <table class=\"field-table\">\n    <thead><tr><th>Champ<\/th><th>Obligatoire<\/th><th>Description<\/th><th>Exemple<\/th><\/tr><\/thead>\n    <tbody>\n      <tr>\n        <td class=\"fname\">PGN<\/td>\n        <td><span class=\"req oui\">OUI<\/span><\/td>\n        <td>Fichier de parties au format PGN standard. Peut contenir des milliers de parties. Les tags <code>[White]<\/code> et <code>[Black]<\/code> servent \u00e0 identifier les moteurs.<\/td>\n        <td><code>TotalGames.pgn<\/code><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fname\">Ordo exe<\/td>\n        <td><span class=\"req oui\">OUI<\/span><\/td>\n        <td>Ex\u00e9cutable Ordo. Noms accept\u00e9s : <code>ordo-win64.exe<\/code>, <code>ordo-win32.exe<\/code>, <code>ordo.exe<\/code>, ou <code>ordo<\/code> (Linux).<\/td>\n        <td><code>ordo-win64.exe<\/code><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fname\">R\u00e9sultat .txt<\/td>\n        <td><span class=\"req oui\">OUI<\/span><\/td>\n        <td>Fichier de sortie texte. Cr\u00e9\u00e9 ou \u00e9cras\u00e9 \u00e0 chaque calcul. Un fichier <code>.csv<\/code> homonyme est \u00e9galement g\u00e9n\u00e9r\u00e9 automatiquement.<\/td>\n        <td><code>rating.txt<\/code><\/td>\n      <\/tr>\n    <\/tbody>\n  <\/table>\n\n  <h3 style=\"margin-top:1.6rem;\">4.2 Option Avantage trait blanc (-W)<\/h3>\n  <p>Lorsque cette case est coch\u00e9e (par d\u00e9faut), Ordo calcule et corrige automatiquement l'avantage li\u00e9 au trait blanc. Cette option est <strong>fortement recommand\u00e9e<\/strong> pour tout tournoi \u00e0 cadence normale. Elle ajoute le switch <code>-W<\/code> \u00e0 la commande Ordo.<\/p>\n\n  <div class=\"callout tip\">\n    <div class=\"callout-icon\">\ud83d\udca1<\/div>\n    <div class=\"callout-body\">\n      <span class=\"callout-title\">R\u00e9sultat de la correction blanc<\/span>\n      <p>OrdoStat affiche en bas du fichier <code>rating.txt<\/code> la valeur calcul\u00e9e, par exemple <code>White advantage = 58.12<\/code> et <code>Draw rate (equal opponents) = 50.00%<\/code>. Ces informations ne sont pas affich\u00e9es dans le tableau mais restent dans le fichier.<\/p>\n    <\/div>\n  <\/div>\n\n  <h3 style=\"margin-top:1.6rem;\">4.3 Section Ancres Elo<\/h3>\n  <p>Sans ancre, Ordo produit un classement <strong>relatif<\/strong> dont la moyenne interne est fix\u00e9e \u00e0 0. Pour obtenir des valeurs <strong>absolues<\/strong> comparables \u00e0 SSDF, CCRL ou votre propre r\u00e9f\u00e9rence, il faut ancrer le classement.<\/p>\n\n  <p>La section ancres est compos\u00e9e de 10 lignes, chacune comprenant :<\/p>\n  <ul style=\"margin:0.5rem 0 1rem 1.5rem;font-size:0.9rem;\">\n    <li><strong>Case \u00e0 cocher<\/strong> \u2014 active\/d\u00e9sactive cette ligne d'ancre<\/li>\n    <li><strong>Menu d\u00e9roulant<\/strong> \u2014 s\u00e9lectionne le moteur de r\u00e9f\u00e9rence (peupl\u00e9 depuis le PGN)<\/li>\n    <li><strong>Champ Elo<\/strong> \u2014 valeur Elo \u00e0 assigner \u00e0 ce moteur<\/li>\n  <\/ul>\n\n  <div class=\"callout warn\">\n    <div class=\"callout-icon\">\u26a0<\/div>\n    <div class=\"callout-body\">\n      <span class=\"callout-title\">Minimum requis : 2 ancres actives<\/span>\n      <p>Ordo exige au moins 2 ancres actives pour calibrer l'\u00e9chelle Elo. Avec une seule ancre, le calcul est rejet\u00e9 et un avertissement s'affiche. Avec de nombreuses ancres bien r\u00e9parties dans la hi\u00e9rarchie, le calibrage est plus pr\u00e9cis.<\/p>\n    <\/div>\n  <\/div>\n\n  <h4 style=\"margin-top:1.2rem;\">Charger un fichier anchors.csv<\/h4>\n  <p>Le bouton <strong>\ud83d\udcc2 Charger anchors.csv<\/strong> permet d'importer directement une liste d'ancres depuis un fichier CSV au format :<\/p>\n  <pre>\"Junior 7\", 1914\n\"Fritz 6\", 1824\n\"Deep Junior 7\", 1823\n\"Rybka 2.4 mp 32-bit 8CPU\", 2352\n\"Glaurung 2.2 JA 8CPU\", 2158\n\"Wasp 2.00 8CPU\", 2315<\/pre>\n\n  <p>Les moteurs pr\u00e9sents dans le CSV mais absents du PGN sont ajout\u00e9s \u00e0 la liste sans provoquer d'erreur \u2014 Ordo les ignorera silencieusement.<\/p>\n\n  <h4 style=\"margin-top:1.2rem;\">Sauvegarder les ancres<\/h4>\n  <p>Le bouton <strong>\ud83d\udcbe Sauver anchors.csv<\/strong> exporte les ancres actives vers un nouveau fichier CSV, r\u00e9utilisable dans de futurs tournois.<\/p>\n\n  <h3 style=\"margin-top:1.6rem;\">4.4 Charger les moteurs depuis le PGN<\/h3>\n  <p>Le bouton <strong>\u2699 Charger moteurs du PGN<\/strong> parse les tags <code>[White]<\/code> et <code>[Black]<\/code> du PGN et peuple les menus d\u00e9roulants des ancres. Cette op\u00e9ration est \u00e9galement effectu\u00e9e <strong>automatiquement<\/strong> d\u00e8s que le chemin du PGN est s\u00e9lectionn\u00e9.<\/p>\n\n  <h3 style=\"margin-top:1.6rem;\">4.5 Lancement du calcul<\/h3>\n  <div class=\"steps\">\n    <div class=\"step\">\n      <div class=\"step-num\">1<\/div>\n      <div class=\"step-content\">\n        <p class=\"step-title\">V\u00e9rification automatique<\/p>\n        <p class=\"step-desc\">OrdoStat v\u00e9rifie que les trois fichiers obligatoires sont d\u00e9finis et existent sur disque. Un avertissement est affich\u00e9 si l'un est manquant.<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"step\">\n      <div class=\"step-num\">2<\/div>\n      <div class=\"step-content\">\n        <p class=\"step-title\">\u00c9criture du fichier d'ancres temporaire<\/p>\n        <p class=\"step-desc\">Si des ancres sont actives, un fichier <code>_anchors_tmp.csv<\/code> est cr\u00e9\u00e9 dans le dossier de sortie, pass\u00e9 \u00e0 Ordo via le switch <code>-m<\/code>, puis supprim\u00e9 \u00e0 la fin du calcul.<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"step\">\n      <div class=\"step-num\">3<\/div>\n      <div class=\"step-content\">\n        <p class=\"step-title\">Ex\u00e9cution asynchrone<\/p>\n        <p class=\"step-desc\">Ordo tourne dans un thread s\u00e9par\u00e9. La sortie console est diffus\u00e9e en temps r\u00e9el dans la zone Console. L'interface reste r\u00e9active pendant le calcul.<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"step\">\n      <div class=\"step-num\">4<\/div>\n      <div class=\"step-content\">\n        <p class=\"step-title\">Affichage des r\u00e9sultats<\/p>\n        <p class=\"step-desc\">\u00c0 la fin du calcul, le tableau est peupl\u00e9 automatiquement depuis le fichier <code>rating.txt<\/code> g\u00e9n\u00e9r\u00e9. Les moteurs sont tri\u00e9s par Elo d\u00e9croissant.<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <h3 style=\"margin-top:1.6rem;\">4.6 Commande g\u00e9n\u00e9r\u00e9e<\/h3>\n  <p>OrdoStat assemble la commande suivante (exemple avec ancres et avantage blanc) :<\/p>\n  <pre>ordo-win64.exe -W -m anchors_tmp.csv -p TotalGames.pgn -o rating.txt -c rating.csv<\/pre>\n  <p>Le bouton <strong>\ud83d\udccb Copier commande<\/strong> place cette commande exacte dans le presse-papier, permettant une ex\u00e9cution manuelle en ligne de commande.<\/p>\n<\/div>\n\n<!-- \u00a75 BAYESELO -->\n<div class=\"section\" id=\"bayeselo\">\n  <p class=\"section-label\">Section 05<\/p>\n  <h2>Mode BayesElo \u2014 Guide complet<\/h2>\n  <div class=\"section-rule\"><\/div>\n\n  <span class=\"mode-badge bayes\">\u25cf BAYESELO<\/span>\n\n  <p>BayesElo (R\u00e9mi Coulom, v0056) est un programme de calcul Elo bay\u00e9sien qui utilise un mod\u00e8le d'estimation diff\u00e9rent d'Ordo. Il produit des intervalles de confiance asym\u00e9triques et g\u00e8re les taux de nulle de mani\u00e8re rigoureuse.<\/p>\n\n  <h3>5.1 Activation du mode BayesElo<\/h3>\n  <p>Dans la section <strong>Fichiers<\/strong>, s\u00e9lectionnez le bouton radio <strong>BayesElo<\/strong>. L'interface se modifie imm\u00e9diatement :<\/p>\n  <ul style=\"margin:0.5rem 0 1rem 1.5rem;font-size:0.9rem;\">\n    <li>Le champ <strong>BayesElo exe<\/strong> appara\u00eet (le champ Ordo reste disponible mais non utilis\u00e9)<\/li>\n    <li>Le panneau <strong>Options BayesElo<\/strong> devient visible<\/li>\n    <li>La section <strong>Ancres Elo<\/strong> est gris\u00e9e (BayesElo g\u00e8re son ancrage diff\u00e9remment)<\/li>\n    <li>Le badge <span class=\"mode-badge bayes\" style=\"font-size:0.7rem;padding:0.15rem 0.5rem;\">\u25cf BAYESELO<\/span> confirme le mode actif<\/li>\n  <\/ul>\n\n  <div class=\"callout note\">\n    <div class=\"callout-icon\">\u2139<\/div>\n    <div class=\"callout-body\">\n      <span class=\"callout-title\">Badge de mode toujours visible<\/span>\n      <p>Le badge color\u00e9 (vert <span class=\"mode-badge ordo\" style=\"font-size:0.65rem;padding:0.1rem 0.4rem;\">\u25cf ORDO<\/span> ou bleu <span class=\"mode-badge bayes\" style=\"font-size:0.65rem;padding:0.1rem 0.4rem;\">\u25cf BAYESELO<\/span>) indique en permanence quel moteur de calcul sera utilis\u00e9 lors du prochain clic sur <em>Calculer<\/em>.<\/p>\n    <\/div>\n  <\/div>\n\n  <h3 style=\"margin-top:1.6rem;\">5.2 Champs sp\u00e9cifiques \u00e0 BayesElo<\/h3>\n  <table class=\"field-table\">\n    <thead><tr><th>Champ<\/th><th>Obligatoire<\/th><th>Description<\/th><\/tr><\/thead>\n    <tbody>\n      <tr>\n        <td class=\"fname\">BayesElo exe<\/td>\n        <td><span class=\"req oui\">OUI<\/span><\/td>\n        <td>Ex\u00e9cutable BayesElo. Noms accept\u00e9s : <code>bayeselo.exe<\/code> ou <code>bayeselo<\/code>. D\u00e9tect\u00e9 automatiquement si pr\u00e9sent dans le dossier du PGN.<\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fname\">Ancre (moteur)<\/td>\n        <td><span class=\"req non\">NON<\/span><\/td>\n        <td>Menu d\u00e9roulant peupl\u00e9 depuis le PGN. S\u00e9lectionnez le moteur dont vous connaissez l'Elo et souhaitez utiliser comme r\u00e9f\u00e9rence d'\u00e9chelle.<\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fname\">Elo ancre<\/td>\n        <td><span class=\"req cond\">SI ANCRE<\/span><\/td>\n        <td>Valeur Elo \u00e0 assigner au moteur d'ancre. BayesElo d\u00e9cale l'ensemble de l'\u00e9chelle de sorte que ce moteur soit positionn\u00e9 \u00e0 cette valeur.<\/td>\n      <\/tr>\n    <\/tbody>\n  <\/table>\n\n  <h3 style=\"margin-top:1.6rem;\">5.3 S\u00e9quence de calcul BayesElo<\/h3>\n  <p>OrdoStat pilote BayesElo de mani\u00e8re interactive via stdin. La s\u00e9quence exacte envoy\u00e9e est :<\/p>\n  <pre>readpgn <span class=\"n\">be_tmp_XXXXXX.pgn<\/span>    <span class=\"c\">\u2190 copie temporaire avec nom ASCII s\u00fbr<\/span>\nelo                              <span class=\"c\">\u2190 entre dans le sous-syst\u00e8me EloRating<\/span>\nmm                               <span class=\"c\">\u2190 algorithme Minorization-Maximization<\/span>\nexactdist                        <span class=\"c\">\u2190 distribution exacte (plus pr\u00e9cis)<\/span>\noffset <span class=\"n\">2352<\/span> <span class=\"n\">Rybka 2.4 mp 32-bit 8CPU<\/span>  <span class=\"c\">\u2190 ancre (si d\u00e9finie)<\/span>\nratings                          <span class=\"c\">\u2190 extrait le classement<\/span>\nx                                <span class=\"c\">\u2190 quitte EloRating<\/span>\nx                                <span class=\"c\">\u2190 quitte BayesElo<\/span><\/pre>\n\n  <div class=\"callout tip\">\n    <div class=\"callout-icon\">\ud83d\udca1<\/div>\n    <div class=\"callout-body\">\n      <span class=\"callout-title\">Pourquoi mm puis exactdist ?<\/span>\n      <p><code>mm<\/code> (Minorization-Maximization) effectue une pr\u00e9-convergence rapide. <code>exactdist<\/code> affine ensuite les r\u00e9sultats en calculant la distribution de probabilit\u00e9 exacte. Les deux \u00e9tapes ensemble donnent le r\u00e9sultat le plus pr\u00e9cis.<\/p>\n    <\/div>\n  <\/div>\n\n  <div class=\"callout note\">\n    <div class=\"callout-icon\">\u2139<\/div>\n    <div class=\"callout-body\">\n      <span class=\"callout-title\">Fichier temporaire et chemin<\/span>\n      <p>BayesElo v0056 ne g\u00e8re pas les guillemets ni les chemins absolus Windows dans la commande <code>readpgn<\/code>. OrdoStat contourne ce probl\u00e8me en copiant le PGN sous un nom temporaire sans espaces (<code>be_tmp_XXXXXX.pgn<\/code>) dans le m\u00eame dossier, puis en lan\u00e7ant BayesElo depuis ce dossier (<code>cwd<\/code>). Le fichier temporaire est supprim\u00e9 automatiquement apr\u00e8s le calcul.<\/p>\n    <\/div>\n  <\/div>\n\n  <h3 style=\"margin-top:1.6rem;\">5.4 R\u00e9sultat de sortie<\/h3>\n  <p>BayesElo produit une sortie de type :<\/p>\n  <pre>Rank Name                            Elo    +    - games score oppo. draws\n   1 Dragon by Komodo Chess 64-bit  3825  152  127    45   93%  3269   13%\n   2 Caissa 1.24 POPCNT 8CPU        3788  144  123    45   92%  3254   16%\n   ...<\/pre>\n  <p>OrdoStat parse cette sortie et la reformate au format Ordo standard, permettant l'affichage dans le tableau de r\u00e9sultats habituel. Le r\u00e9sultat est \u00e9galement sauvegard\u00e9 dans le fichier <code>R\u00e9sultat .txt<\/code> d\u00e9fini.<\/p>\n<\/div>\n\n<!-- \u00a76 R\u00c9SULTATS -->\n<div class=\"section\" id=\"results\">\n  <p class=\"section-label\">Section 06<\/p>\n  <h2>Interpr\u00e9tation des r\u00e9sultats<\/h2>\n  <div class=\"section-rule\"><\/div>\n\n  <h3>6.1 Colonnes du tableau<\/h3>\n\n  <div class=\"result-cols\">\n    <div class=\"result-col\">\n      <span class=\"col-name\">#<\/span>\n      <p>Rang dans le classement par ordre d\u00e9croissant d'Elo. Les 3 premiers rangs sont mis en \u00e9vidence en or.<\/p>\n    <\/div>\n    <div class=\"result-col\">\n      <span class=\"col-name\">Moteur<\/span>\n      <p>Nom exact du moteur tel qu'il appara\u00eet dans les tags <code>[White]<\/code>\/<code>[Black]<\/code> du PGN.<\/p>\n    <\/div>\n    <div class=\"result-col\">\n      <span class=\"col-name\">Elo<\/span>\n      <p>Force calcul\u00e9e par maximum de vraisemblance. Valeur absolue si des ancres sont d\u00e9finies, relative sinon.<\/p>\n    <\/div>\n    <div class=\"result-col\">\n      <span class=\"col-name\">\u00b1 (Erreur)<\/span>\n      <p>Erreur standard calcul\u00e9e par la formule \u03c3 = 400 \u00b7 \u221a(p\u00b7(1\u2212p)\/n), o\u00f9 p est le score et n le nombre de parties.<\/p>\n    <\/div>\n    <div class=\"result-col\">\n      <span class=\"col-name\">Points<\/span>\n      <p>Total de points marqu\u00e9s (victoire = 1, nulle = 0.5, d\u00e9faite = 0).<\/p>\n    <\/div>\n    <div class=\"result-col\">\n      <span class=\"col-name\">Parties<\/span>\n      <p>Nombre total de parties jou\u00e9es par ce moteur dans le tournoi.<\/p>\n    <\/div>\n    <div class=\"result-col\">\n      <span class=\"col-name\">%<\/span>\n      <p>Score en pourcentage : (Points \/ Parties) \u00d7 100. Indicateur direct de la performance globale.<\/p>\n    <\/div>\n  <\/div>\n\n  <h3 style=\"margin-top:1.6rem;\">6.2 Tri du tableau<\/h3>\n  <p>Par d\u00e9faut, le tableau est tri\u00e9 par <strong>Elo d\u00e9croissant<\/strong>. Vous pouvez cliquer sur n'importe quel en-t\u00eate de colonne pour trier selon cette valeur (croissant\/d\u00e9croissant). Le tri num\u00e9rique fonctionne correctement pour toutes les colonnes, y compris l'erreur \u00b1.<\/p>\n\n  <h3 style=\"margin-top:1.6rem;\">6.3 Lecture de l'erreur \u00b1<\/h3>\n  <p>La colonne \u00b1 donne une id\u00e9e de la pr\u00e9cision du classement. Pour un moteur avec \u00b1 15, il faudrait une diff\u00e9rence Elo d'au moins 30 points pour que la sup\u00e9riorit\u00e9 soit statistiquement significative \u00e0 95% de confiance.<\/p>\n\n  <div class=\"callout note\">\n    <div class=\"callout-icon\">\u2139<\/div>\n    <div class=\"callout-body\">\n      <span class=\"callout-title\">Erreur standard vs. Ordo -s (simulations)<\/span>\n      <p>L'erreur \u00b1 affich\u00e9e par OrdoStat est calcul\u00e9e analytiquement. Pour des erreurs plus pr\u00e9cises (surtout avec des ancres multiples), utilisez l'option Ordo <code>-s 1000<\/code> en ligne de commande ou via \"Copier commande\" pour ajouter le param\u00e8tre manuellement.<\/p>\n    <\/div>\n  <\/div>\n\n  <h3 style=\"margin-top:1.6rem;\">6.4 Exemple de lecture<\/h3>\n  <table class=\"field-table\">\n    <thead><tr><th>#<\/th><th>Moteur<\/th><th>Elo<\/th><th>\u00b1<\/th><th>Points<\/th><th>Parties<\/th><th>%<\/th><\/tr><\/thead>\n    <tbody>\n      <tr><td>1<\/td><td>Dragon by Komodo Chess 64-bit<\/td><td><strong>3121.2<\/strong><\/td><td>\u00b18.2<\/td><td>42.0<\/td><td>45<\/td><td>93%<\/td><\/tr>\n      <tr><td>57<\/td><td>Junior 7<\/td><td><strong>1914.1<\/strong><\/td><td>\u00b112.7<\/td><td>10.0<\/td><td>45<\/td><td>22%<\/td><\/tr>\n      <tr><td>67<\/td><td>Fritz 6<\/td><td><strong>1824.3<\/strong><\/td><td>\u00b113.1<\/td><td>7.5<\/td><td>45<\/td><td>17%<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n  <p style=\"font-size:0.85rem;color:var(--muted);\">Lecture : Dragon (rang 1, 3121 Elo) a marqu\u00e9 42 points sur 45 parties (93%). Son erreur \u00b18 signifie que sa vraie force est vraisemblablement entre 3113 et 3129 Elo. Junior 7 (rang 57) et Fritz 6 (rang 67) sont les ancres basses du classement.<\/p>\n<\/div>\n\n<!-- \u00a77 ANCRAGE -->\n<div class=\"section\" id=\"anchoring\">\n  <p class=\"section-label\">Section 07<\/p>\n  <h2>Ancrage Elo \u2014 M\u00e9thodologie<\/h2>\n  <div class=\"section-rule\"><\/div>\n\n  <p>L'ancrage est le processus par lequel un classement <em>relatif<\/em> est converti en classement <em>absolu<\/em>, comparable \u00e0 des listes de r\u00e9f\u00e9rence comme le SSDF, le CCRL ou votre propre base de donn\u00e9es.<\/p>\n\n  <h3>7.1 Ancre simple vs. ancres multiples<\/h3>\n  <div class=\"two-col\">\n    <div>\n      <h4>Ancre unique<\/h4>\n      <p style=\"font-size:0.88rem;color:var(--muted);\">Une seule ancre translate l'ensemble du classement de sorte que ce moteur soit \u00e0 la valeur sp\u00e9cifi\u00e9e. Tous les autres Elos sont d\u00e9cal\u00e9s du m\u00eame delta. Simple mais sensible \u00e0 la qualit\u00e9 de l'ancre.<\/p>\n    <\/div>\n    <div>\n      <h4>Ancres multiples (recommand\u00e9)<\/h4>\n      <p style=\"font-size:0.88rem;color:var(--muted);\">Ordo effectue une <strong>r\u00e9gression<\/strong> sur plusieurs points de r\u00e9f\u00e9rence, distribuant les d\u00e9calages de mani\u00e8re optimale. Avec 7 ancres bien choisies, l'\u00e9chelle est robuste m\u00eame si une ancre est l\u00e9g\u00e8rement impr\u00e9cise.<\/p>\n    <\/div>\n  <\/div>\n\n  <h3 style=\"margin-top:1.6rem;\">7.2 Choix des ancres \u2014 Bonnes pratiques<\/h3>\n  <ul style=\"margin:0.5rem 0 1rem 1.5rem;font-size:0.9rem;line-height:2;\">\n    <li>Distribuez les ancres <strong>sur toute la plage Elo<\/strong> du tournoi (faibles, moyens, forts)<\/li>\n    <li>Utilisez des moteurs dont les valeurs SSDF\/CCRL sont bien \u00e9tablies sur plusieurs milliers de parties<\/li>\n    <li>\u00c9vitez les moteurs dont le comportement varie selon le mat\u00e9riel (certains moteurs NPS-d\u00e9pendants)<\/li>\n    <li>Minimum recommand\u00e9 : 5-7 ancres r\u00e9parties uniform\u00e9ment<\/li>\n    <li>Les ancres dont les valeurs officielles datent de plus de 5 ans m\u00e9ritent une v\u00e9rification<\/li>\n  <\/ul>\n\n  <div class=\"callout ok\">\n    <div class=\"callout-icon\">\u2713<\/div>\n    <div class=\"callout-body\">\n      <span class=\"callout-title\">Exemple d'ancres \u2014 Tournoi Valter Drazic (Ryzen 9 7950X3D)<\/span>\n      <p>Junior 7 (1914) \u00b7 Fritz 6 (1824) \u00b7 Deep Junior 7 (1823) \u00b7 Shredder 10 (1940) \u00b7 Glaurung 2.2 (2158) \u00b7 Rybka 2.4 (2352) \u00b7 Wasp 2.00 (2315). Ces 7 ancres couvrent la plage 1824\u20132352, suffisante pour calibrer un tournoi allant de Fritz 5.32 (~1636) \u00e0 Dragon (~3121).<\/p>\n    <\/div>\n  <\/div>\n\n  <h3 style=\"margin-top:1.6rem;\">7.3 Ancrage BayesElo : la commande <code>offset<\/code><\/h3>\n  <p>BayesElo n'accepte pas un fichier CSV d'ancres multiples. L'ancrage se fait par la commande <code>offset<\/code> qui d\u00e9place l'\u00e9chelle enti\u00e8re d'un d\u00e9calage (offset) pour placer le moteur s\u00e9lectionn\u00e9 \u00e0 l'Elo d\u00e9sir\u00e9 :<\/p>\n  <pre>offset <span class=\"n\">2352<\/span> <span class=\"n\">Rybka 2.4 mp 32-bit 8CPU<\/span><\/pre>\n  <p>Cette commande est automatiquement ins\u00e9r\u00e9e par OrdoStat dans la s\u00e9quence stdin lorsqu'une ancre est s\u00e9lectionn\u00e9e dans le panneau Options BayesElo.<\/p>\n<\/div>\n\n<!-- \u00a78 FONCTIONS AVANC\u00c9ES -->\n<div class=\"section\" id=\"advanced\">\n  <p class=\"section-label\">Section 08<\/p>\n  <h2>Fonctions avanc\u00e9es<\/h2>\n  <div class=\"section-rule\"><\/div>\n\n  <h3>8.1 Menu contextuel (clic droit sur le tableau)<\/h3>\n  <p>Un clic droit sur n'importe quelle ligne du tableau de r\u00e9sultats affiche un menu avec deux actions :<\/p>\n\n  <div class=\"steps\">\n    <div class=\"step\">\n      <div class=\"step-num\">\u265f<\/div>\n      <div class=\"step-content\">\n        <p class=\"step-title\">Ajouter \u00ab NomMoteur \u00bb comme ancre<\/p>\n        <p class=\"step-desc\">Cr\u00e9e automatiquement une nouvelle ancre avec le moteur de la ligne s\u00e9lectionn\u00e9e et son Elo calcul\u00e9 comme valeur de r\u00e9f\u00e9rence. Pratique pour ajuster l'ancrage apr\u00e8s un premier calcul.<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"step\">\n      <div class=\"step-num\">\ud83d\udccb<\/div>\n      <div class=\"step-content\">\n        <p class=\"step-title\">Copier le nom<\/p>\n        <p class=\"step-desc\">Copie le nom exact du moteur dans le presse-papier. Utile pour le coller dans le champ ancre BayesElo ou dans un script externe.<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <h3 style=\"margin-top:1.6rem;\">8.2 Copier la commande<\/h3>\n  <p>Le bouton <strong>\ud83d\udccb Copier commande<\/strong> place dans le presse-papier :<\/p>\n  <ul style=\"margin:0.5rem 0 1rem 1.5rem;font-size:0.9rem;line-height:2;\">\n    <li><strong>En mode Ordo<\/strong> : la commande compl\u00e8te avec tous les arguments, ex\u00e9cutable en ligne de commande<\/li>\n    <li><strong>En mode BayesElo<\/strong> : le script stdin exact envoy\u00e9 \u00e0 bayeselo, reproductible manuellement<\/li>\n  <\/ul>\n\n  <h3 style=\"margin-top:1.6rem;\">8.3 Charger un r\u00e9sultat existant<\/h3>\n  <p>Le bouton <strong>\ud83d\udcc2 Charger r\u00e9sultat existant<\/strong> permet d'afficher un fichier <code>rating.txt<\/code> pr\u00e9c\u00e9demment g\u00e9n\u00e9r\u00e9 sans relancer le calcul. OrdoStat parse le fichier et affiche le tableau complet. Si un fichier <code>.csv<\/code> homonyme existe, il est charg\u00e9 \u00e9galement.<\/p>\n\n  <h3 style=\"margin-top:1.6rem;\">8.4 Enregistrer les r\u00e9sultats<\/h3>\n  <p>Le bouton <strong>\ud83d\udcbe Enregistrer r\u00e9sultats<\/strong> exporte le tableau affich\u00e9 vers :<\/p>\n  <ul style=\"margin:0.5rem 0 1rem 1.5rem;font-size:0.9rem;\">\n    <li><strong>Format CSV<\/strong> : toutes les colonnes s\u00e9par\u00e9es par des virgules, importable dans Excel<\/li>\n    <li><strong>Format TXT<\/strong> : tableau format\u00e9 en colonnes align\u00e9es, lisible directement<\/li>\n  <\/ul>\n\n  <h3 style=\"margin-top:1.6rem;\">8.5 Persistance des param\u00e8tres<\/h3>\n  <p>OrdoStat m\u00e9morise automatiquement entre sessions :<\/p>\n  <table class=\"field-table\">\n    <thead><tr><th>Param\u00e8tre<\/th><th>Sauvegard\u00e9<\/th><\/tr><\/thead>\n    <tbody>\n      <tr><td>Chemins des fichiers (PGN, Ordo exe, BayesElo exe, R\u00e9sultat)<\/td><td>\u2713 Oui<\/td><\/tr>\n      <tr><td>Mode calculateur (Ordo ou BayesElo)<\/td><td>\u2713 Oui<\/td><\/tr>\n      <tr><td>Ancre BayesElo (nom + Elo)<\/td><td>\u2713 Oui<\/td><\/tr>\n      <tr><td>Langue de l'interface<\/td><td>\u2713 Oui<\/td><\/tr>\n      <tr><td>Taille et position de la fen\u00eatre<\/td><td>\u2713 Oui<\/td><\/tr>\n      <tr><td>Ancres Ordo (lignes actives)<\/td><td>\u2717 Non \u2014 \u00e0 recharger via le fichier CSV<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n\n<!-- \u00a79 COMPARAISON -->\n<div class=\"section\" id=\"comparison\">\n  <p class=\"section-label\">Section 09<\/p>\n  <h2>Comparaison Ordo vs BayesElo<\/h2>\n  <div class=\"section-rule\"><\/div>\n\n  <p>Les deux moteurs produisent des classements Elo par maximum de vraisemblance, mais avec des philosophies et des capacit\u00e9s diff\u00e9rentes. Le choix d\u00e9pend de votre objectif.<\/p>\n\n  <table class=\"comp-table\">\n    <thead>\n      <tr>\n        <th>Crit\u00e8re<\/th>\n        <th>Ordo v1.2.6<\/th>\n        <th>BayesElo v0056<\/th>\n      <\/tr>\n    <\/thead>\n    <tbody>\n      <tr><td>Ancres multiples (fichier CSV)<\/td><td><span class=\"comp-check\">\u2713<\/span> Oui, r\u00e9gression<\/td><td><span class=\"comp-cross\">\u2717<\/span> Non \u2014 offset unique<\/td><\/tr>\n      <tr><td>Correction avantage blanc<\/td><td><span class=\"comp-check\">\u2713<\/span> Automatique (-W)<\/td><td><span class=\"comp-check\">\u2713<\/span> Int\u00e9gr\u00e9e<\/td><\/tr>\n      <tr><td>Calcul du taux de nulle<\/td><td><span class=\"comp-check\">\u2713<\/span> Automatique (-D)<\/td><td><span class=\"comp-check\">\u2713<\/span> Int\u00e9gr\u00e9<\/td><\/tr>\n      <tr><td>Intervalles d'erreur<\/td><td><span class=\"comp-part\">\u25d1<\/span> Via simulations (-s)<\/td><td><span class=\"comp-check\">\u2713<\/span> Asym\u00e9triques natifs<\/td><\/tr>\n      <tr><td>Plusieurs fichiers PGN<\/td><td><span class=\"comp-check\">\u2713<\/span> Oui (switch --)<\/td><td><span class=\"comp-cross\">\u2717<\/span> Un seul fichier<\/td><\/tr>\n      <tr><td>Ancres \"flottantes\" (bay\u00e9siennes)<\/td><td><span class=\"comp-check\">\u2713<\/span> Oui (-y)<\/td><td><span class=\"comp-part\">\u25d1<\/span> Concept natif<\/td><\/tr>\n      <tr><td>Moteurs sans victoire\/d\u00e9faite<\/td><td><span class=\"comp-check\">\u2713<\/span> G\u00e9r\u00e9 (floor\/ceiling)<\/td><td><span class=\"comp-check\">\u2713<\/span> G\u00e9r\u00e9<\/td><\/tr>\n      <tr><td>Rapidit\u00e9 (76 moteurs, 1697 parties)<\/td><td><span class=\"comp-check\">\u2713<\/span> &lt; 1 seconde<\/td><td><span class=\"comp-check\">\u2713<\/span> ~2 secondes<\/td><\/tr>\n      <tr><td>Recommand\u00e9 pour<\/td><td>Calibrage absolu pr\u00e9cis<\/td><td>Distribution statistique bay\u00e9sienne<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n\n  <div class=\"callout tip\">\n    <div class=\"callout-icon\">\ud83d\udca1<\/div>\n    <div class=\"callout-body\">\n      <span class=\"callout-title\">Recommandation pratique<\/span>\n      <p>Pour un tournoi de calibration avec ancres multiples et r\u00e9f\u00e9rence \u00e0 une liste externe (SSDF, CCRL), utilisez <strong>Ordo<\/strong>. Pour une analyse statistique approfondie avec intervalles de confiance asym\u00e9triques, ou comme v\u00e9rification ind\u00e9pendante des r\u00e9sultats Ordo, utilisez <strong>BayesElo<\/strong>. Les deux r\u00e9sultats devraient \u00eatre tr\u00e8s proches si le tournoi est bien connect\u00e9.<\/p>\n    <\/div>\n  <\/div>\n<\/div>\n\n<!-- \u00a710 D\u00c9PANNAGE -->\n<div class=\"section\" id=\"troubleshooting\">\n  <p class=\"section-label\">Section 10<\/p>\n  <h2>D\u00e9pannage<\/h2>\n  <div class=\"section-rule\"><\/div>\n\n  <table class=\"field-table\">\n    <thead><tr><th>Sympt\u00f4me<\/th><th>Cause probable<\/th><th>Solution<\/th><\/tr><\/thead>\n    <tbody>\n      <tr>\n        <td>\"0 game(s) loaded\" dans la console BayesElo<\/td>\n        <td>Chemin PGN avec caract\u00e8res sp\u00e9ciaux ou fichier illisible<\/td>\n        <td>OrdoStat cr\u00e9e un fichier temporaire ASCII automatiquement. V\u00e9rifiez les permissions du dossier.<\/td>\n      <\/tr>\n      <tr>\n        <td>Tableau vide apr\u00e8s calcul Ordo<\/td>\n        <td>Fichier <code>rating.txt<\/code> non g\u00e9n\u00e9r\u00e9, ou Ordo a retourn\u00e9 une erreur<\/td>\n        <td>V\u00e9rifiez la console pour le code d'erreur. V\u00e9rifiez que le PGN contient des r\u00e9sultats valides (pas de <code>*<\/code> uniquement).<\/td>\n      <\/tr>\n      <tr>\n        <td>\"Ordo exige au minimum 2 ancres\"<\/td>\n        <td>Une seule ancre active coch\u00e9e<\/td>\n        <td>Cochez au moins deux lignes d'ancres, ou utilisez un fichier <code>anchors.csv<\/code> avec plusieurs moteurs.<\/td>\n      <\/tr>\n      <tr>\n        <td>Les menus d\u00e9roulants d'ancres sont vides<\/td>\n        <td>PGN pas encore charg\u00e9, ou PGN sans tags White\/Black valides<\/td>\n        <td>Cliquez sur \"\u2699 Charger moteurs du PGN\" apr\u00e8s avoir s\u00e9lectionn\u00e9 votre PGN.<\/td>\n      <\/tr>\n      <tr>\n        <td>BayesElo : \"Unknown command: offset\"<\/td>\n        <td>Mauvais nom de moteur dans le champ ancre<\/td>\n        <td>Le nom doit \u00eatre identique \u00e0 ce que bayeselo a charg\u00e9 (case-sensitive). Copiez le nom depuis le tableau de r\u00e9sultats via clic droit \u2192 \"Copier le nom\".<\/td>\n      <\/tr>\n      <tr>\n        <td>L'Elo calcul\u00e9 semble irr\u00e9aliste<\/td>\n        <td>Ancres mal choisies ou PGN mal connect\u00e9 (groupes isol\u00e9s)<\/td>\n        <td>V\u00e9rifiez que tous les moteurs ont jou\u00e9 contre des moteurs communs. Ordo affiche \"WARNING\" pour les groupes isol\u00e9s dans la console.<\/td>\n      <\/tr>\n      <tr>\n        <td>L'interface est lente pendant le calcul<\/td>\n        <td>Calcul en cours sur un gros PGN<\/td>\n        <td>Normal. Le calcul tourne dans un thread s\u00e9par\u00e9 ; l'interface reste r\u00e9active. Attendez la fin (barre de statut affiche \"Calcul en cours\u2026\").<\/td>\n      <\/tr>\n      <tr>\n        <td>Ex\u00e9cutable non d\u00e9tect\u00e9 automatiquement<\/td>\n        <td>Nom non standard de l'ex\u00e9cutable<\/td>\n        <td>Utilisez le bouton \"\u2026\" pour naviguer manuellement vers l'ex\u00e9cutable. Noms d\u00e9tect\u00e9s automatiquement : <code>ordo-win64.exe<\/code>, <code>ordo-win32.exe<\/code>, <code>ordo.exe<\/code>, <code>bayeselo.exe<\/code>.<\/td>\n      <\/tr>\n    <\/tbody>\n  <\/table>\n\n  <div class=\"callout warn\" style=\"margin-top:1.6rem;\">\n    <div class=\"callout-icon\">\u26a0<\/div>\n    <div class=\"callout-body\">\n      <span class=\"callout-title\">PGN avec des r\u00e9sultats \u00ab * \u00bb<\/span>\n      <p>Les parties sans r\u00e9sultat (<code>*<\/code>) sont ignor\u00e9es par Ordo et BayesElo. Si votre PGN contient uniquement des parties en cours, le calcul ne produira aucun r\u00e9sultat. Assurez-vous que les tags de r\u00e9sultat <code>[Result \"1-0\"]<\/code>, <code>[Result \"0-1\"]<\/code> ou <code>[Result \"1\/2-1\/2\"]<\/code> sont pr\u00e9sents.<\/p>\n    <\/div>\n  <\/div>\n<\/div>\n\n<\/div><!-- \/page-wrap -->\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     FOOTER\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div style=\"text-align:center; margin: 2rem 0;\">\n  <a href=\"https:\/\/www.chess.lumn.eu\/wordpress\/?sdm_process_download=1&download_id=3570\"\n     style=\"display:inline-block; background-color:#1a3a6c; color:white; padding:14pt 36pt; border-radius:4px; font-size:1.1rem; font-weight:bold; text-decoration:none; letter-spacing:0.05em;\">\n    \u2b07 T\u00e9l\u00e9charger OrdoStat\n  <\/a>\n<\/div>\n\n<div class=\"manual-footer\">\n  <strong>OrdoStat<\/strong> \u2014 Interface PyQt6 pour Ordo &amp; BayesElo<br>\n  Chroniques Software \u00b7 Laboratoire Maison \u00b7 Valter Drazic \u00b7 Mars 2026<br><br>\n  Ordo v1.2.6 \u00a9 Miguel A. Ballicora (GPL) &nbsp;\u00b7&nbsp; BayesElo v0056 \u00a9 R\u00e9mi Coulom (GPL)\n<\/div>\n\n<\/body>\n<\/html>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>T\u00e9l\u00e9chargez mon interface graphique pour ordo et BayesElo<\/p>\n","protected":false},"author":1,"featured_media":3575,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":""},"categories":[69],"tags":[],"rttpg_featured_image_url":{"full":["https:\/\/www.chess.lumn.eu\/wordpress\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_nze1e3nze1e3nze1.png",1115,944,false],"landscape":["https:\/\/www.chess.lumn.eu\/wordpress\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_nze1e3nze1e3nze1.png",1115,944,false],"portraits":["https:\/\/www.chess.lumn.eu\/wordpress\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_nze1e3nze1e3nze1.png",1115,944,false],"thumbnail":["https:\/\/www.chess.lumn.eu\/wordpress\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_nze1e3nze1e3nze1-150x150.png",150,150,true],"medium":["https:\/\/www.chess.lumn.eu\/wordpress\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_nze1e3nze1e3nze1-300x254.png",300,254,true],"large":["https:\/\/www.chess.lumn.eu\/wordpress\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_nze1e3nze1e3nze1-1024x867.png",1024,867,true],"1536x1536":["https:\/\/www.chess.lumn.eu\/wordpress\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_nze1e3nze1e3nze1.png",1115,944,false],"2048x2048":["https:\/\/www.chess.lumn.eu\/wordpress\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_nze1e3nze1e3nze1.png",1115,944,false],"neve-blog":["https:\/\/www.chess.lumn.eu\/wordpress\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_nze1e3nze1e3nze1-930x620.png",930,620,true]},"rttpg_author":{"display_name":"valterd","author_link":"https:\/\/www.chess.lumn.eu\/wordpress\/author\/valterd\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/www.chess.lumn.eu\/wordpress\/category\/downloads\/\" rel=\"category tag\">Downloads<\/a>","rttpg_excerpt":"T\u00e9l\u00e9chargez mon interface graphique pour ordo et BayesElo","_links":{"self":[{"href":"https:\/\/www.chess.lumn.eu\/wordpress\/wp-json\/wp\/v2\/posts\/3565"}],"collection":[{"href":"https:\/\/www.chess.lumn.eu\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.chess.lumn.eu\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.chess.lumn.eu\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.chess.lumn.eu\/wordpress\/wp-json\/wp\/v2\/comments?post=3565"}],"version-history":[{"count":7,"href":"https:\/\/www.chess.lumn.eu\/wordpress\/wp-json\/wp\/v2\/posts\/3565\/revisions"}],"predecessor-version":[{"id":3576,"href":"https:\/\/www.chess.lumn.eu\/wordpress\/wp-json\/wp\/v2\/posts\/3565\/revisions\/3576"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.chess.lumn.eu\/wordpress\/wp-json\/wp\/v2\/media\/3575"}],"wp:attachment":[{"href":"https:\/\/www.chess.lumn.eu\/wordpress\/wp-json\/wp\/v2\/media?parent=3565"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.chess.lumn.eu\/wordpress\/wp-json\/wp\/v2\/categories?post=3565"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.chess.lumn.eu\/wordpress\/wp-json\/wp\/v2\/tags?post=3565"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}