Powered by OpenAIRE graph
Found an issue? Give us feedback
image/svg+xml art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos Open Access logo, converted into svg, designed by PLoS. This version with transparent background. http://commons.wikimedia.org/wiki/File:Open_Access_logo_PLoS_white.svg art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos http://www.plos.org/ ZENODOarrow_drop_down
image/svg+xml art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos Open Access logo, converted into svg, designed by PLoS. This version with transparent background. http://commons.wikimedia.org/wiki/File:Open_Access_logo_PLoS_white.svg art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos http://www.plos.org/
ZENODO
Event . 2026
Data sources: ZENODO
ZENODO
Event . 2026
Data sources: Datacite
ZENODO
Event . 2026
Data sources: Datacite
versions View all 2 versions
addClaim

Invariants émergents dans réseaux dynamiques : méta-pipeline bottom-up testable

Authors: FRADIER, Kevin;

Invariants émergents dans réseaux dynamiques : méta-pipeline bottom-up testable

Abstract

Invariants émergents dans réseaux dynamiques : méta-pipeline bottom-up testable Auteur : Kevin FradierDate : 2026Licence : © 2026 Kevin Fradier — CC BY-NC-ND 4.0 Résumé Cette publication propose un pipeline bottom-up minimal et testable pour détecter des signaux émergents dans des réseaux dynamiques à partir de corrélations locales uniquement. L’objectif est de fournir un outil reproductible et indépendant de tout cadre théorique global, permettant de : Extraire des motifs locaux (cycles, sous-graphes connectés) Calculer des signaux émergents agrégés à partir de ces motifs Vérifier la robustesse des signaux face à des perturbations locales Visualiser le réseau et la distribution des signaux Les utilisateurs sont invités à tester, ces observables pour leurs propres applications, sans hypothèses additionnelles. Code Python : emergent_dynamics.py import numpy as np import networkx as nx import matplotlib.pyplot as plt from itertools import combinations class EmergentDynamics: def __init__(self, adjacency, states, motif_size=(2,3)): """ adjacency : np.array NxN Matrice d'adjacence du réseau states : np.array NxT États locaux simulés motif_size : tuple Taille minimale et maximale des motifs locaux """ self.A = adjacency self.states = states self.motif_size = motif_size self.motifs = [] self.signal = None def extract_motifs(self): nodes = list(range(self.A.shape[0])) self.motifs = [] for r in range(self.motif_size[0], self.motif_size[1]+1): for combo in combinations(nodes, r): sub = self.A[np.ix_(combo, combo)] if np.any(sub): self.motifs.append(list(combo)) return self.motifs def compute_signal(self, method="mean"): if not self.motifs: self.extract_motifs() vals = [] for m in self.motifs: S = self.states[m,:] if method=="mean": vals.append(np.mean(S)) elif method=="norm": vals.append(np.linalg.norm(S)) self.signal = np.mean(vals) if vals else 0 return self.signal def perturb_and_stabilize(self, noise_levels=[0,0.05,0.1], trials=50): stable_vals = [] for noise in noise_levels: trial_vals = [] for _ in range(trials): perturbed = self.states + np.random.normal(0, noise, self.states.shape) trial_vals.append(np.mean([np.mean(perturbed[m,:]) for m in self.motifs])) stable_vals.append(np.mean(trial_vals)) self.signal = np.mean(stable_vals) return self.signal def plot_network(self, node_colors=None, save_path=None): G = nx.from_numpy_array(self.A) pos = nx.spring_layout(G) plt.figure(figsize=(8,6)) nx.draw(G, pos, node_color=node_colors, cmap='coolwarm', node_size=25) plt.title(f"Réseau - Signal : {np.sign(self.signal)}") if save_path: plt.savefig(save_path, dpi=300) plt.show() def plot_signal_distribution(self, save_path=None): traces = [np.mean(self.states[m,:]) for m in self.motifs] plt.figure(figsize=(10,5)) plt.hist(traces, bins=15, color='skyblue', edgecolor='k') plt.axvline(np.mean(traces), color='r', linestyle='--', label='Moyenne') plt.title("Distribution du signal émergent") plt.xlabel("Signal local") plt.ylabel("Nombre de motifs") plt.legend() if save_path: plt.savefig(save_path, dpi=300) plt.show() if __name__=="__main__": np.random.seed(123) A = np.random.randint(0,2,(10,10)) states = np.random.choice([-1,1], size=(10,5)) pipeline = EmergentDynamics(A, states) pipeline.extract_motifs() sig = pipeline.compute_signal() sig_stable = pipeline.perturb_and_stabilize() print("Signal brute :", sig) print("Signal stabilisé :", sig_stable) pipeline.plot_network(node_colors=states[:,0], save_path="../figures/example_network.png") pipeline.plot_signal_distribution(save_path="../figures/example_signal.png") Licence : CC BY-NC-ND 4.0 © 2026 Kevin Fradier — Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 4.0 International (CC BY-NC-ND 4.0) Vous êtes libres de : - Partager — copier et redistribuer le matériel sous n’importe quel format - Attribution obligatoire Vous ne pouvez pas : - Utiliser à des fins commerciales - Modifier, transformer ou créer un dérivé README.md # Invariants émergents dans réseaux dynamiques : pipeline bottom-up testable ## Description Ce dépôt fournit un **pipeline minimal** pour détecter des signaux émergents dans des réseaux à partir de **corrélations locales uniquement**. Aucun cadre global n’est requis. ## Contenu - `code/emergent_dynamics.py` : code Python principal - `mini_dataset.npy` : mini-dataset simulé (10x10) - `figures/` : figures générées automatiquement - `LICENSE` : licence CC BY-NC-ND 4.0 ## Installation ```bash pip install numpy networkx matplotlib Utilisation rapide import numpy as np from code.emergent_dynamics import EmergentDynamics # Charger le mini-dataset A = np.load("mini_dataset.npy") states = np.random.choice([-1,1], size=(10,5)) # Initialiser pipeline pipeline = EmergentDynamics(A, states) pipeline.extract_motifs() signal = pipeline.compute_signal() signal_stable = pipeline.perturb_and_stabilize() print("Signal brute :", signal) print("Signal stabilisé :", signal_stable) # Générer figures pipeline.plot_network(node_colors=states[:,0], save_path="figures/example_network.png") pipeline.plot_signal_distribution(save_path="figures/example_signal.png") Notes Les données réelles sont hors dépôt pour raisons légales. Le mini-dataset permet de tester immédiatement toutes les fonctionnalités. Les utilisateurs peuvent tester, ce pipeline pour leurs propres applications. Licence © 2026 Kevin Fradier — CC BY-NC-ND 4.0

  • BIP!
    Impact byBIP!
    selected citations
    These citations are derived from selected sources.
    This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
    0
    popularity
    This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network.
    Average
    influence
    This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
    Average
    impulse
    This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network.
    Average
Powered by OpenAIRE graph
Found an issue? Give us feedback
selected citations
These citations are derived from selected sources.
This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
BIP!Citations provided by BIP!
popularity
This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network.
BIP!Popularity provided by BIP!
influence
This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
BIP!Influence provided by BIP!
impulse
This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network.
BIP!Impulse provided by BIP!
0
Average
Average
Average