STaRS-CORE-PROTOCOL (SCP) :
Fuente:
Zenodo
Gespeichert in:
| 1. Verfasser: | |
|---|---|
| Format: | Recurso digital |
| Veröffentlicht: |
Zenodo
2026
|
| Online-Zugang: | |
| Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
| _version_ | 1866901168573120512 |
|---|---|
| author | FRADIER, Kevin |
| author_facet | FRADIER, Kevin |
| contents | <h1> STaRS-CORE-PROTOCOL (SCP) : publication scientifique </h1> <p><strong>Auteur :</strong> Kevin Fradier — Chercheur indépendant<br><strong>Date :</strong> Janvier 2026<br><strong>Licence :</strong> © 2026 Kevin Fradier — CC BY‑NC‑ND 4.0<br><strong>Statut :</strong> Publication méthodologique, testable et reproductible</p> <h2>1️⃣ Résumé</h2> <p>STaRS-CORE-PROTOCOL (SCP) est un pipeline scientifique minimal permettant :</p> <ul> <li>La détection de structures robustes dans tout dataset numérique.</li> <li>La localisation adaptative des zones où un signal robuste apparaît.</li> <li>L’évaluation de la robustesse locale et de la cohérence globale.</li> </ul> <p>Le protocole est <strong>bottom-up</strong>, neutre, testable, reproductible et applicable à tout type de données (réseaux, séries temporelles, images, signaux).</p> <h2>2️⃣ Principe méthodologique</h2> <ol> <li><strong>Normalisation et clipping</strong> : toutes les valeurs ≥ 0, standardisation possible.</li> <li><strong>Perturbations contrôlées</strong> : générer des versions bruitées du dataset.</li> <li><strong>Robustesse locale</strong> : calcul de corrélation entre données originales et perturbées.</li> <li><strong>Entropie locale</strong> : quantification de la structure informationnelle.</li> <li><strong>Détection de breakpoints</strong> : identification des zones robustes selon un seuil donné.</li> </ol> <p><strong>Sorties :</strong> indices robustes, entropie locale, robustesse globale, hash unique.</p> <p><strong>Règles scientifiques :</strong></p> <ul> <li>Pas d’hypothèse causale</li> <li>Testable sur données simulées ou réelles</li> <li>Reproductible par tout utilisateur</li> </ul> <h2>3️⃣ Code Python complet</h2> <pre><code>import numpy as np import matplotlib.pyplot as plt import hashlib # --- Auteur & signature --- AUTHOR_SIGNATURE = "Kevin Fradier | STaRS-CORE-PROTOCOL | 2026" # --- Jeu de données exemple --- np.random.seed(42) n_features = 8 n_samples = 25 part1 = np.random.normal(2, 0.5, (n_features, 8)) part2 = np.random.normal(8, 0.3, (n_features, 9)) part3 = np.random.normal(2, 1.0, (n_features, 8)) data_example = np.hstack([part1, part2, part3]) # --- Fonctions SCP --- def clip_normalize(col): col = np.clip(col, 0, None) if col.sum() > 0: col = col / col.sum() return col def entropy(col): col = clip_normalize(col) p = col[col>0] return -np.sum(p * np.log2(p)) if len(p) > 0 else 0 def simulate_noise(col, loss_rate=0.3): mask = np.random.rand(len(col)) > loss_rate return col * mask def robustness(data, n_iter=50): original = np.array([np.sum(col) for col in data.T]) scores = [] for _ in range(n_iter): perturbed = np.array([np.sum(simulate_noise(col)) for col in data.T]) corr = np.corrcoef(original, perturbed)[0,1] scores.append(corr) return np.nanmean(scores), np.nanstd(scores) def breakpoint_detection(data, threshold=0.7, n_iter=50): robust_sections = [] for i, col in enumerate(data.T): score, _ = robustness(np.array([col]), n_iter=n_iter) if score >= threshold: robust_sections.append(i) if robust_sections: return robust_sections[0], robust_sections[-1] else: return None, None # --- Exécution --- entropies = np.array([entropy(col) for col in data_example.T]) mean_corr, std_corr = robustness(data_example) bp_start, bp_end = breakpoint_detection(data_example, threshold=0.7) # --- Hash unique --- result_dict = { "entropies": entropies.tolist(), "robustness_mean": float(mean_corr), "robustness_std": float(std_corr), "breakpoint_start": bp_start, "breakpoint_end": bp_end, "signature": AUTHOR_SIGNATURE } result_dict["hash"] = hashlib.sha256(str(result_dict).encode()).hexdigest() # --- Visualisation --- plt.figure(figsize=(12,5)) plt.imshow(data_example, aspect="auto", cmap="YlOrBr") plt.colorbar(label="Valeur brute") plt.xlabel("Échantillons") plt.ylabel("Caractéristiques") ax2 = plt.gca().twinx() ax2.plot(entropies, color="blue", marker="o", label="Entropie locale") ax2.set_ylabel("Entropie locale", color="blue") ax2.tick_params(axis='y', labelcolor='blue') if bp_start is not None and bp_end is not None: plt.axvspan(bp_start, bp_end, color='green', alpha=0.3, label="Signal robuste") plt.title("STaRS-CORE-PROTOCOL (SCP) — Démo complète") plt.legend(loc="upper left") plt.tight_layout() plt.show() # --- Affichage résultats --- print(result_dict) </code></pre> <h2>4️⃣ README pour reproductibilité</h2> <p><strong>Instructions :</strong></p> <ol> <li>Installer Python ≥3.8 avec <code>numpy</code>, <code>matplotlib</code>.</li> <li>Copier le code SCP dans un fichier <code>scp_demo.py</code>.</li> <li>Exécuter <code>python scp_demo.py</code>.</li> <li>Observer la figure : heatmap + entropie + zone robuste.</li> <li>Résultats et hash sont imprimés pour vérification.</li> </ol> <p><strong>Objectif :</strong> Tout utilisateur peut reproduire le protocole et vérifier la robustesse des structures détectées.</p> <h2>5️⃣ Licence</h2> <p>© 2026 Kevin Fradier — Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 4.0 International (CC BY-NC-ND 4.0)</p> <ul> <li>Attribution : mentionner l’auteur original Kevin Fradier</li> <li>Pas d’usage commercial</li> <li>Pas de modification</li> </ul> <h2>6️⃣ Points méthodologiques</h2> <ul> <li>Testable et falsifiable sur jeux de données simulés ou réels.</li> <li>Reproductible : hash unique pour chaque exécution.</li> <li>Neutralité scientifique : aucune interprétation causale.</li> <li>Point d’entrée minimal universel pour adoption par tous les utilisateurs.</li> </ul> <p><strong>Licence :</strong> © 2026 Kevin Fradier — CC BY‑NC‑ND 4.0</p> |
| format | Recurso digital |
| id | zenodo_https___doi_org_10_5281_zenodo_18291799 |
| institution | Zenodo |
| language | |
| publishDate | 2026 |
| publisher | Zenodo |
| record_format | zenodo |
| spellingShingle | STaRS-CORE-PROTOCOL (SCP) : FRADIER, Kevin <h1> STaRS-CORE-PROTOCOL (SCP) : publication scientifique </h1> <p><strong>Auteur :</strong> Kevin Fradier — Chercheur indépendant<br><strong>Date :</strong> Janvier 2026<br><strong>Licence :</strong> © 2026 Kevin Fradier — CC BY‑NC‑ND 4.0<br><strong>Statut :</strong> Publication méthodologique, testable et reproductible</p> <h2>1️⃣ Résumé</h2> <p>STaRS-CORE-PROTOCOL (SCP) est un pipeline scientifique minimal permettant :</p> <ul> <li>La détection de structures robustes dans tout dataset numérique.</li> <li>La localisation adaptative des zones où un signal robuste apparaît.</li> <li>L’évaluation de la robustesse locale et de la cohérence globale.</li> </ul> <p>Le protocole est <strong>bottom-up</strong>, neutre, testable, reproductible et applicable à tout type de données (réseaux, séries temporelles, images, signaux).</p> <h2>2️⃣ Principe méthodologique</h2> <ol> <li><strong>Normalisation et clipping</strong> : toutes les valeurs ≥ 0, standardisation possible.</li> <li><strong>Perturbations contrôlées</strong> : générer des versions bruitées du dataset.</li> <li><strong>Robustesse locale</strong> : calcul de corrélation entre données originales et perturbées.</li> <li><strong>Entropie locale</strong> : quantification de la structure informationnelle.</li> <li><strong>Détection de breakpoints</strong> : identification des zones robustes selon un seuil donné.</li> </ol> <p><strong>Sorties :</strong> indices robustes, entropie locale, robustesse globale, hash unique.</p> <p><strong>Règles scientifiques :</strong></p> <ul> <li>Pas d’hypothèse causale</li> <li>Testable sur données simulées ou réelles</li> <li>Reproductible par tout utilisateur</li> </ul> <h2>3️⃣ Code Python complet</h2> <pre><code>import numpy as np import matplotlib.pyplot as plt import hashlib # --- Auteur & signature --- AUTHOR_SIGNATURE = "Kevin Fradier | STaRS-CORE-PROTOCOL | 2026" # --- Jeu de données exemple --- np.random.seed(42) n_features = 8 n_samples = 25 part1 = np.random.normal(2, 0.5, (n_features, 8)) part2 = np.random.normal(8, 0.3, (n_features, 9)) part3 = np.random.normal(2, 1.0, (n_features, 8)) data_example = np.hstack([part1, part2, part3]) # --- Fonctions SCP --- def clip_normalize(col): col = np.clip(col, 0, None) if col.sum() > 0: col = col / col.sum() return col def entropy(col): col = clip_normalize(col) p = col[col>0] return -np.sum(p * np.log2(p)) if len(p) > 0 else 0 def simulate_noise(col, loss_rate=0.3): mask = np.random.rand(len(col)) > loss_rate return col * mask def robustness(data, n_iter=50): original = np.array([np.sum(col) for col in data.T]) scores = [] for _ in range(n_iter): perturbed = np.array([np.sum(simulate_noise(col)) for col in data.T]) corr = np.corrcoef(original, perturbed)[0,1] scores.append(corr) return np.nanmean(scores), np.nanstd(scores) def breakpoint_detection(data, threshold=0.7, n_iter=50): robust_sections = [] for i, col in enumerate(data.T): score, _ = robustness(np.array([col]), n_iter=n_iter) if score >= threshold: robust_sections.append(i) if robust_sections: return robust_sections[0], robust_sections[-1] else: return None, None # --- Exécution --- entropies = np.array([entropy(col) for col in data_example.T]) mean_corr, std_corr = robustness(data_example) bp_start, bp_end = breakpoint_detection(data_example, threshold=0.7) # --- Hash unique --- result_dict = { "entropies": entropies.tolist(), "robustness_mean": float(mean_corr), "robustness_std": float(std_corr), "breakpoint_start": bp_start, "breakpoint_end": bp_end, "signature": AUTHOR_SIGNATURE } result_dict["hash"] = hashlib.sha256(str(result_dict).encode()).hexdigest() # --- Visualisation --- plt.figure(figsize=(12,5)) plt.imshow(data_example, aspect="auto", cmap="YlOrBr") plt.colorbar(label="Valeur brute") plt.xlabel("Échantillons") plt.ylabel("Caractéristiques") ax2 = plt.gca().twinx() ax2.plot(entropies, color="blue", marker="o", label="Entropie locale") ax2.set_ylabel("Entropie locale", color="blue") ax2.tick_params(axis='y', labelcolor='blue') if bp_start is not None and bp_end is not None: plt.axvspan(bp_start, bp_end, color='green', alpha=0.3, label="Signal robuste") plt.title("STaRS-CORE-PROTOCOL (SCP) — Démo complète") plt.legend(loc="upper left") plt.tight_layout() plt.show() # --- Affichage résultats --- print(result_dict) </code></pre> <h2>4️⃣ README pour reproductibilité</h2> <p><strong>Instructions :</strong></p> <ol> <li>Installer Python ≥3.8 avec <code>numpy</code>, <code>matplotlib</code>.</li> <li>Copier le code SCP dans un fichier <code>scp_demo.py</code>.</li> <li>Exécuter <code>python scp_demo.py</code>.</li> <li>Observer la figure : heatmap + entropie + zone robuste.</li> <li>Résultats et hash sont imprimés pour vérification.</li> </ol> <p><strong>Objectif :</strong> Tout utilisateur peut reproduire le protocole et vérifier la robustesse des structures détectées.</p> <h2>5️⃣ Licence</h2> <p>© 2026 Kevin Fradier — Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 4.0 International (CC BY-NC-ND 4.0)</p> <ul> <li>Attribution : mentionner l’auteur original Kevin Fradier</li> <li>Pas d’usage commercial</li> <li>Pas de modification</li> </ul> <h2>6️⃣ Points méthodologiques</h2> <ul> <li>Testable et falsifiable sur jeux de données simulés ou réels.</li> <li>Reproductible : hash unique pour chaque exécution.</li> <li>Neutralité scientifique : aucune interprétation causale.</li> <li>Point d’entrée minimal universel pour adoption par tous les utilisateurs.</li> </ul> <p><strong>Licence :</strong> © 2026 Kevin Fradier — CC BY‑NC‑ND 4.0</p> |
| title | STaRS-CORE-PROTOCOL (SCP) : |
| url | https://doi.org/10.5281/zenodo.18291799 |