STaRS × ESE — Protocole Universel de Structures Emergentes et Fossiles

Read full text
Authors: Kevin FRADIER
Cited by: 0

Abstract

🔹 STaRS × ESE — Protocole Universel de Structures Emergentes et Fossiles Auteur : Kevin Fradier — Chercheur indépendant 🇫🇷Date : Janvier 2026Licence : © 2026 Kevin Fradier — Creative Commons Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International (CC BY-NC-ND 4.0) Statut : Publication méthodologique · Testable · Falsifiable · Multi-domainesPosition épistémique : Neutralité stricte (ni affirmation, ni négation ontologique) 1️⃣ Objectif STaRS et ESE ne disent pas ce qui s’est passé.Ils indiquent jusqu’où les données peuvent parler sans qu’on leur fasse dire plus. Ces outils fournissent un diagnostic bottom-up, universel et sécurisable des structures persistantes dans tout système produisant de l’information : Fossiles et stratigraphie → STaRS, STaRS-NET Textes, séquences symboliques, signaux → ESE, ESE-NET Réseaux et corrélations inter-domaines → extensions réseau Ils sont complètement agnostiques et falsifiables. 2️⃣ Phases du protocole consolidé 🔹 Phase I — STaRS (local) Pour chaque colonne/assemblage : Calcul de la diversité et robustesse locale Perturbations contrôlées Génération de hash de traçabilité Règle : si STaRS échoue → le bassin n’apporte rien → STOP local. 🔹 Phase II — STaRS-NET (inter-bassins) Pour les bassins valides : Construction du réseau de corrélations Analyse de robustesse inter-bassins (NRSS) Hash du réseau Résultat : réseau vide → pas de structure globale ; réseau stable → structure non triviale. 🔹 Phase III — ESE-NET (test universel) Sur les structures réseau obtenues : Calcul signature moyenne et variations Perturbation et stabilité du signal Comparaison au bruit de référence universel Important : ici on ne parle plus de fossiles mais du signal structurel. 🔹 Phase IV — Tableau de décision final STaRS local STaRS-NET ESE-NET Statut scientifique ❌ – – Données non contraignantes ✅ ❌ – Signal local non corrélé ✅ ✅ ❌ Corrélation fragile ✅ ✅ ✅ Structure robuste détectée 🔹 Phase V — Sorties publiables Courbes observées et enveloppes de bruit Graphes réseaux Scores (STaRS, NRSS, ESE) Hashes de reproductibilité ❌ Interdit de publier : causes, scénarios, extinctions, récits, climat 🔹 Phase VI — Règles d’usage Reproductible : graine et hash obligatoire Falsifiable : comparaison avec bruit local et global Multi-domaines : texte, signal, image, réseau, fossiles Chaque mini-univers = module autonome 🔹 Phase VII — Conclusion méthodologique STaRS et ESE ne disent pas ce qui s’est passé.Ils indiquent jusqu’où les données peuvent parler sans qu’on leur fasse dire plus. Le protocole est fermé, sécurisé, et applicable sur tout jeu de données sans risque d’interprétation abusive. 🔹 Étapes suivantes possibles (optionnel) Test sur jeu réel connu (fossiles ou réseau) Visualisation consolidée en pipeline unique Extensions : STaRS-TIME (incertitude datation), STaRS-EXT (artefacts extinction), couplage ESE×STaRS 🔹 CODE OPÉRATIONNEL CONSOLIDÉ import numpy as np import hashlib from scipy.ndimage import gaussian_filter from hurst import compute_Hc AUTHOR_SIGNATURE = "Kevin Fradier | STaRS-ESE Consolidated | 2026" # ------------------------- # Fonctions utilitaires # ------------------------- def simulate_taphonomic_noise(counts, loss_rate=0.3): noisy = [] for level in counts: mask = np.random.rand(len(level)) > loss_rate noisy.append(level * mask) return noisy def strat_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)) def robustness_test(data, n_iter=100, loss_rate=0.3): original = np.array([np.sum(l) for l in data]) scores = [] for _ in range(n_iter): perturbed = simulate_taphonomic_noise(data, loss_rate=loss_rate) 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) def ese_analyze_sequence(seq): probs = [seq.count(c)/len(seq) for c in set(seq)] entropy = -sum(p*np.log2(p) for p in probs if p>0) compression = len(seq)/len(np.packbits(np.array([ord(c) for c in seq],dtype=np.uint8))) numeric = np.array([ord(c) for c in seq]) H, _, _ = compute_Hc(numeric, kind='change') return {"entropy": entropy, "compression": compression, "hurst": H} def spatial_field_analysis(field, sigma_corr=3): field_corr = gaussian_filter(field, sigma=sigma_corr) fft2 = np.fft.fftshift(np.fft.fft2(field_corr)) power = np.abs(fft2)**2 return field_corr, power def radial_power_spectrum(power): N = power.shape[0] kx, ky = np.meshgrid(np.fft.fftfreq(N), np.fft.fftfreq(N)) k = np.sqrt(kx**2 + ky**2) k_flat, p_flat = k.flatten(), power.flatten() bins = np.linspace(0, np.max(k), 50) radial_power = np.array([p_flat[(k_flat>=bins[i]) & (k_flat

Publication details

Journal / source
Zenodo (CERN European Organization for Nuclear Research)
Publication date
8 January 2026