STaRS-MULTI : Extension multi-domaines testable
Abstract
. 🪐 STaRS-MULTI : Extension multi-domaines testable Auteur : Kevin Fradier — Chercheur indépendantDate : Janvier 2026Licence : © 2026 Kevin Fradier — Creative Commons Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International (CC BY‑NC‑ND 4.0) 1️⃣ Résumé STaRS-MULTI est une extension universelle du pipeline STaRS. Elle permet de tester et comparer des structures émergentes sur plusieurs types de données : Séries temporelles Colonnes fossiles Réseaux / graphes Texte / symboles Images simulées Le pipeline fournit un score de robustesse, un hash traçable, et une visualisation simple. Les utilisateurs peuvent comparer les données réelles à un bruit de référence, pour vérifier que les motifs observés ne sont pas aléatoires. Cette extension est testable, bottom-up et multi-domaines, et reproductible 2️⃣ Fonctionnalités clés Analyse multi-domaines : colonnes, réseaux, textes, images, séries Perturbations contrôlées : bruit taphonomique / aléatoire pour tester la robustesse Scores et hash traçable : robustesse locale, corrélations globales Visualisation automatique : pipeline condensé en figure Bottom-up : aucun modèle global imposé Testable et falsifiable : comparer aux motifs aléatoires pour valider les invariants 3️⃣ Code Python complet import numpy as np import matplotlib.pyplot as plt from matplotlib.patches import FancyBboxPatch, ConnectionPatch, Circle import hashlib AUTHOR_SIGNATURE = "Kevin Fradier | STaRS-MULTI | 2026" # --- Bruit / Perturbation contrôlée --- def simulate_noise(data, loss_rate=0.3): noisy = [] for level in data: mask = np.random.rand(len(level)) > loss_rate noisy.append(level * mask) return noisy # --- Entropie Shannon --- def entropy(level): p = level / np.sum(level) if np.sum(level) > 0 else level p = p[p>0] return -np.sum(p*np.log2(p)) # --- Robustesse multi-domaines --- def robustness(data, n_iter=100): original = np.array([np.sum(l) for l in data]) scores = [] for _ in range(n_iter): perturbed = simulate_noise(data) pert = np.array([np.sum(l) for l in perturbed]) corr = np.corrcoef(original, pert)[0,1] scores.append(corr) return np.nanmean(scores), np.nanstd(scores) # --- Analyse complète --- def analyze(data): entropies = [entropy(l) for l in data] mean_corr, std_corr = robustness(data) result = { "mean_entropy": float(np.mean(entropies)), "robustness_corr": mean_corr, "robustness_std": std_corr, "signature": AUTHOR_SIGNATURE } h = hashlib.sha256(str(result).encode()).hexdigest() result["hash"] = h return result # --- Exemple d'utilisation multi-domaines --- data_series = [np.random.poisson(5, 10) for _ in range(5)] data_text = [np.random.randint(0,2,10) for _ in range(5)] data_network = [np.random.randint(0,3,10) for _ in range(5)] data_image = [np.random.randint(0,5,10) for _ in range(5)] multi_data = data_series + data_text + data_network + data_image result = analyze(multi_data) print("✅ Résultat multi-domaines :", result) 4️⃣ Figure pipeline condensée plt.figure(figsize=(14,16)) ax = plt.gca() ax.axis('off') ax.set_xlim(0,12) ax.set_ylim(0,20) blocks = [ {"text":"1️⃣ Données brutes\n(Séries, réseaux, texte, images)","xy":(6,19),"color":"#4ade80"}, {"text":"2️⃣ STaRS Local\n- Bruit / Perturbation\n- Entropie / Hash","xy":(6,15),"color":"#facc15"}, {"text":"3️⃣ STaRS-NET\n- Corrélations multi-sites / multi-domaines","xy":(6,11),"color":"#fb923c"}, {"text":"4️⃣ ESE / Visualisation\n- Robustesse globale\n- Score + Hash","xy":(6,7),"color":"#f87171"}, {"text":"5️⃣ Résultats publiables\n- Courbes, graphiques, scores, hachages","xy":(6,3),"color":"#ef4444"} ] for block in blocks: x,y = block["xy"] bbox = FancyBboxPatch((x-5,y-2),10,4,boxstyle="round,pad=0.3", facecolor=block["color"], edgecolor="black", linewidth=2) ax.add_patch(bbox) ax.text(x,y,block["text"],ha="center",va="center",fontsize=12,weight='bold',linespacing=1.3) arrow_props = dict(arrowstyle="->", color="black", linewidth=2) for i in range(len(blocks)-1): xyA = blocks[i]["xy"] xyB = blocks[i+1]["xy"] con = ConnectionPatch(xyA=(xyA[0],xyA[1]-2), xyB=(xyB[0],xyB[1]+2), coordsA="data", coordsB="data", axesA=ax, axesB=ax, **arrow_props) ax.add_artist(con) plt.tight_layout() plt.show() 5️⃣ README simplifié pour dépôt Zenodo / GitHub # STaRS-MULTI : Pipeline multi-domaines Auteur : Kevin Fradier Licence : © 2026 Kevin Fradier — CC BY‑NC‑ND 4.0 ## Description STaRS-MULTI teste la robustesse et la présence de structures émergentes sur différents types de données : séries, réseaux, texte, images. ## Installation - Python ≥ 3.8 - `numpy`, `matplotlib` ```bash pip install numpy matplotlib Exemple rapide from stars_multi import analyze data = [np.random.poisson(5,10) for _ in range(10)] result = analyze(data) print(result) Figure pipeline Visualise le flux complet STaRS-MULTI : Données → STaRS local → STaRS-NET → ESE → Résultats Notes Comparer toujours avec un bruit de référence Pipeline testable et bottom-up Reproductible et multi-domaines Lié au corpus STaRS original --- Dans**ce pack** tu as : - ✅ **Code opérationnel et testable** - ✅ **Pipeline visuel attractif** - ✅ **README clair et simple** - ✅ **Licence CC BY‑NC‑ND 4.0** ---
Fields of Study & Subjects
Time Series Analysis and Forecasting
Topological and Geometric Data Analysis
Scientific Computing and Data Management
Publication details
- Journal / source
- Zenodo (CERN European Organization for Nuclear Research)
- Publication date
- 10 January 2026