Repository for the Innovation Networks project, accepted for NetSciX 2024.
This project takes fits empirical social netowrks to an agent-based model (ABM). After determining the reinforcement and novelty parameters, the ABM generates multiple 50-node networks to represent the original network. Innovation simulations are then conducted to assess how reinforcement and novelty impact innovation efficiency. The project also compares different empirical networks with innovation-optimal networks to identify differences.
-
Calculate the network metrics for your social network by running the code in
calculate_metrics
. This will createdata/metrics/<dataset>.csv
with the metrics of the empirical network. -
Fit your network to the ABM by running the code in
fitting
. This will createfitting/results/<dataset>/best.csv
with the best fit reinforcement and novelty parameters using QD algorithms and the metrics from step 1. -
Run the ABM and calculate the resulting innovation efficiencies by running the code in
empirical
. This will createempirical/results/<dataset>/output.csv
with the mean NCTF and TTF of the ABM0-generated networks. -
Run the full search to running the code in
full_search
. This will createfull_search/results/<innovation_type>/output.csv
with the mean NCTF and TTF of the ABM-generated networks for all possible reinforcement and novelty parameters. -
To visualise the results in the browser, the optimal and least optimal innovation networks must be converted into JSON format. This is done by running
full_search/analyse.py
. This will create 100 networks for the best and worst choice of ABM parameters and create correspodning JSON files infull_search/data/output/graph/
. -
To run the webapp navigate to
webapp
and runnpm install
andnpm start
. This will start the webapp onlocalhost:3000
. The webapp can be used to visualise the networks in the browser. You need to ensure the correct JSON files are placed inwebapp/src/data/
. See thewebapp
README for more details. -
To create plots of the results, run the scripts in
visualise
. This will create plots invisualise/results/
.