{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Multiverse basics\n",
"\n",
"To conduct a multiverse analysis, the forking paths must be specified in a dictionary. Options can contain:\n",
"\n",
"* strings\n",
"* numerical values\n",
"* boolean values\n",
"* comet dFC methods\n",
"* comet and bct graph measures\n",
"* any kind of function"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from comet.multiverse import Multiverse\n",
"\n",
"forking_paths = {\n",
" \"strings\": [\"Hello\", \"world\"],\n",
" \"numbers\": [3.14, 4, 5.2],\n",
" \"booleans\": [True, False],\n",
" \"dfc_measures\": [\n",
" {\"name\": \"LeiDA\", \"func\": \"comet.connectivity.LeiDA(time_series=ts).estimate()\"},\n",
" {\"name\": \"JC11\", \"func\": \"comet.connectivity.Jackknife(time_series=ts, windowsize=11).estimate()\"}],\n",
" \"graph_measures\": [\n",
" {\"name\": \"efficiency\", \"func\": \"comet.graph.efficiency(G, local= False)\"},\n",
" {\"name\": \"clustering\", \"func\": \"comet.graph.avg_clustering_onella(G)\"}],\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With the decisions and options defined, an analysis template has to be specified. This is similar to a standard analysis pipeline with three additional requirements:\n",
"\n",
"* The template is required to be encapsulated in a dedicated function\n",
"* Required imports need to be within the template function\n",
"* Decision points need to be specified in double brackets: `{{decision}}`\n",
"\n",
"In this brief example, the corresponding string, number, and boolean decision will be printed in each universe. Then, connectivity will be estimated with the corresponding dFC method, and a graph measure (local efficiency or clustering) is calculated:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def analysis_template():\n",
" import comet\n",
"\n",
" print(\"Decision 1:\", {{strings}})\n",
" print(\"Decision 2:\", {{numbers}})\n",
" print(\"Decision 3:\", {{booleans}})\n",
"\n",
" # Load example data and calculate dFC\n",
" ts = comet.utils.load_example()\n",
" dfc = {{dfc_measures}}\n",
"\n",
" # Calculate graph measure\n",
" graph_measure = []\n",
" for i in range(dfc.shape[2]):\n",
" G = dfc[:, :, i]\n",
" G = comet.graph.handle_negative_weights(G, type=\"absolute\")\n",
" G = comet.graph.threshold(G, type=\"density\", density=0.5)\n",
" G = comet.graph.binarise(G)\n",
" gm = {{graph_measures}}\n",
" graph_measure.append(gm)\n",
"\n",
" # Save the results\n",
" result = {\"graph_measure\": graph_measure, \"number\": {{numbers}}}\n",
" comet.utils.save_universe_results(result)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The forking paths dictionary defines 5 decision points consisting of 2 options each. Thus, the resulting multiverse will contain 2⁵=32 universes. A `Multiverse` object has to be created and can then be used to create, run, summarize, and visualize the multiverse.\n",
"\n",
"* `mverse.create()` will generate Python scripts for all 32 universes. These scripts will be saved in a newly created `example_multiverse/` folder\n",
"* `mverse.summary()` will print the decisions for every universe. This information is also available as a .csv in the `example_multiverse/results/` folder\n",
"* `mverse.run()` will either run all or individual universes. If the computational resources allow for it, this can be parallelized by using e.g. `mverse.run(parallel=4)`"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Universe | \n",
" Decision 1 | \n",
" Value 1 | \n",
" Decision 2 | \n",
" Value 2 | \n",
" Decision 3 | \n",
" Value 3 | \n",
" Decision 4 | \n",
" Value 4 | \n",
" Decision 5 | \n",
" Value 5 | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" Universe_1 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 1 | \n",
" Universe_2 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 2 | \n",
" Universe_3 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 3 | \n",
" Universe_4 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 4 | \n",
" Universe_5 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 5 | \n",
" Universe_6 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 6 | \n",
" Universe_7 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 7 | \n",
" Universe_8 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 8 | \n",
" Universe_9 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 9 | \n",
" Universe_10 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 10 | \n",
" Universe_11 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 11 | \n",
" Universe_12 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 12 | \n",
" Universe_13 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 13 | \n",
" Universe_14 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 14 | \n",
" Universe_15 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 15 | \n",
" Universe_16 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 16 | \n",
" Universe_17 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 17 | \n",
" Universe_18 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 18 | \n",
" Universe_19 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 19 | \n",
" Universe_20 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 20 | \n",
" Universe_21 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 21 | \n",
" Universe_22 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 22 | \n",
" Universe_23 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 23 | \n",
" Universe_24 | \n",
" strings | \n",
" Hello | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 24 | \n",
" Universe_25 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 25 | \n",
" Universe_26 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 26 | \n",
" Universe_27 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 27 | \n",
" Universe_28 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 28 | \n",
" Universe_29 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 29 | \n",
" Universe_30 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 30 | \n",
" Universe_31 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 31 | \n",
" Universe_32 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 3.14 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 32 | \n",
" Universe_33 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 33 | \n",
" Universe_34 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 34 | \n",
" Universe_35 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 35 | \n",
" Universe_36 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 36 | \n",
" Universe_37 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 37 | \n",
" Universe_38 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 38 | \n",
" Universe_39 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 39 | \n",
" Universe_40 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 4.00 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 40 | \n",
" Universe_41 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 41 | \n",
" Universe_42 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 42 | \n",
" Universe_43 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 43 | \n",
" Universe_44 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" True | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 44 | \n",
" Universe_45 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 45 | \n",
" Universe_46 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" LeiDA | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
" | 46 | \n",
" Universe_47 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" efficiency | \n",
"
\n",
" \n",
" | 47 | \n",
" Universe_48 | \n",
" strings | \n",
" world | \n",
" numbers | \n",
" 5.20 | \n",
" booleans | \n",
" False | \n",
" dfc_measures | \n",
" JC11 | \n",
" graph_measures | \n",
" clustering | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Universe Decision 1 Value 1 Decision 2 Value 2 Decision 3 Value 3 \\\n",
"0 Universe_1 strings Hello numbers 3.14 booleans True \n",
"1 Universe_2 strings Hello numbers 3.14 booleans True \n",
"2 Universe_3 strings Hello numbers 3.14 booleans True \n",
"3 Universe_4 strings Hello numbers 3.14 booleans True \n",
"4 Universe_5 strings Hello numbers 3.14 booleans False \n",
"5 Universe_6 strings Hello numbers 3.14 booleans False \n",
"6 Universe_7 strings Hello numbers 3.14 booleans False \n",
"7 Universe_8 strings Hello numbers 3.14 booleans False \n",
"8 Universe_9 strings Hello numbers 4.00 booleans True \n",
"9 Universe_10 strings Hello numbers 4.00 booleans True \n",
"10 Universe_11 strings Hello numbers 4.00 booleans True \n",
"11 Universe_12 strings Hello numbers 4.00 booleans True \n",
"12 Universe_13 strings Hello numbers 4.00 booleans False \n",
"13 Universe_14 strings Hello numbers 4.00 booleans False \n",
"14 Universe_15 strings Hello numbers 4.00 booleans False \n",
"15 Universe_16 strings Hello numbers 4.00 booleans False \n",
"16 Universe_17 strings Hello numbers 5.20 booleans True \n",
"17 Universe_18 strings Hello numbers 5.20 booleans True \n",
"18 Universe_19 strings Hello numbers 5.20 booleans True \n",
"19 Universe_20 strings Hello numbers 5.20 booleans True \n",
"20 Universe_21 strings Hello numbers 5.20 booleans False \n",
"21 Universe_22 strings Hello numbers 5.20 booleans False \n",
"22 Universe_23 strings Hello numbers 5.20 booleans False \n",
"23 Universe_24 strings Hello numbers 5.20 booleans False \n",
"24 Universe_25 strings world numbers 3.14 booleans True \n",
"25 Universe_26 strings world numbers 3.14 booleans True \n",
"26 Universe_27 strings world numbers 3.14 booleans True \n",
"27 Universe_28 strings world numbers 3.14 booleans True \n",
"28 Universe_29 strings world numbers 3.14 booleans False \n",
"29 Universe_30 strings world numbers 3.14 booleans False \n",
"30 Universe_31 strings world numbers 3.14 booleans False \n",
"31 Universe_32 strings world numbers 3.14 booleans False \n",
"32 Universe_33 strings world numbers 4.00 booleans True \n",
"33 Universe_34 strings world numbers 4.00 booleans True \n",
"34 Universe_35 strings world numbers 4.00 booleans True \n",
"35 Universe_36 strings world numbers 4.00 booleans True \n",
"36 Universe_37 strings world numbers 4.00 booleans False \n",
"37 Universe_38 strings world numbers 4.00 booleans False \n",
"38 Universe_39 strings world numbers 4.00 booleans False \n",
"39 Universe_40 strings world numbers 4.00 booleans False \n",
"40 Universe_41 strings world numbers 5.20 booleans True \n",
"41 Universe_42 strings world numbers 5.20 booleans True \n",
"42 Universe_43 strings world numbers 5.20 booleans True \n",
"43 Universe_44 strings world numbers 5.20 booleans True \n",
"44 Universe_45 strings world numbers 5.20 booleans False \n",
"45 Universe_46 strings world numbers 5.20 booleans False \n",
"46 Universe_47 strings world numbers 5.20 booleans False \n",
"47 Universe_48 strings world numbers 5.20 booleans False \n",
"\n",
" Decision 4 Value 4 Decision 5 Value 5 \n",
"0 dfc_measures LeiDA graph_measures efficiency \n",
"1 dfc_measures LeiDA graph_measures clustering \n",
"2 dfc_measures JC11 graph_measures efficiency \n",
"3 dfc_measures JC11 graph_measures clustering \n",
"4 dfc_measures LeiDA graph_measures efficiency \n",
"5 dfc_measures LeiDA graph_measures clustering \n",
"6 dfc_measures JC11 graph_measures efficiency \n",
"7 dfc_measures JC11 graph_measures clustering \n",
"8 dfc_measures LeiDA graph_measures efficiency \n",
"9 dfc_measures LeiDA graph_measures clustering \n",
"10 dfc_measures JC11 graph_measures efficiency \n",
"11 dfc_measures JC11 graph_measures clustering \n",
"12 dfc_measures LeiDA graph_measures efficiency \n",
"13 dfc_measures LeiDA graph_measures clustering \n",
"14 dfc_measures JC11 graph_measures efficiency \n",
"15 dfc_measures JC11 graph_measures clustering \n",
"16 dfc_measures LeiDA graph_measures efficiency \n",
"17 dfc_measures LeiDA graph_measures clustering \n",
"18 dfc_measures JC11 graph_measures efficiency \n",
"19 dfc_measures JC11 graph_measures clustering \n",
"20 dfc_measures LeiDA graph_measures efficiency \n",
"21 dfc_measures LeiDA graph_measures clustering \n",
"22 dfc_measures JC11 graph_measures efficiency \n",
"23 dfc_measures JC11 graph_measures clustering \n",
"24 dfc_measures LeiDA graph_measures efficiency \n",
"25 dfc_measures LeiDA graph_measures clustering \n",
"26 dfc_measures JC11 graph_measures efficiency \n",
"27 dfc_measures JC11 graph_measures clustering \n",
"28 dfc_measures LeiDA graph_measures efficiency \n",
"29 dfc_measures LeiDA graph_measures clustering \n",
"30 dfc_measures JC11 graph_measures efficiency \n",
"31 dfc_measures JC11 graph_measures clustering \n",
"32 dfc_measures LeiDA graph_measures efficiency \n",
"33 dfc_measures LeiDA graph_measures clustering \n",
"34 dfc_measures JC11 graph_measures efficiency \n",
"35 dfc_measures JC11 graph_measures clustering \n",
"36 dfc_measures LeiDA graph_measures efficiency \n",
"37 dfc_measures LeiDA graph_measures clustering \n",
"38 dfc_measures JC11 graph_measures efficiency \n",
"39 dfc_measures JC11 graph_measures clustering \n",
"40 dfc_measures LeiDA graph_measures efficiency \n",
"41 dfc_measures LeiDA graph_measures clustering \n",
"42 dfc_measures JC11 graph_measures efficiency \n",
"43 dfc_measures JC11 graph_measures clustering \n",
"44 dfc_measures LeiDA graph_measures efficiency \n",
"45 dfc_measures LeiDA graph_measures clustering \n",
"46 dfc_measures JC11 graph_measures efficiency \n",
"47 dfc_measures JC11 graph_measures clustering "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"mverse = Multiverse(name=\"example_mv_basics\")\n",
"mverse.create(analysis_template, forking_paths)\n",
"mverse.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can now run individual universes by specifying a number, or run all of them (parallelization is also supported). This example will only evaluate the first two universes (`universe=[1,2]`)."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Starting analysis for universe(s): [1, 2]...\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "fb0bd4cd4a4b44cfb31cb7ec503cf4cf",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Performing multiverse analysis:: 0%| | 0/2 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Decision 1: Hello\n",
"Decision 2: 3.14\n",
"Decision 3: True\n",
"Decision 1: Hello\n",
"Decision 2: 3.14\n",
"Decision 3: True\n",
"The multiverse analysis completed without any errors.\n"
]
}
],
"source": [
"mverse.run(universe=[1,2], parallel=2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"After this, the results from all universes can be loaded as a dict of dicts (default) or as a DataFrame:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Multiverse results structure:\n",
"\n",
"dict_keys(['universe_1', 'universe_2'])\n",
"dict_keys(['graph_measure', 'number', '__decisions'])\n",
"[np.float64(0.517973602484472), np.float64(0.5365295031055901), np.float64(0.531832298136646), np.float64(0.517973602484472), np.float64(0.522554347826087)]\n"
]
}
],
"source": [
"from matplotlib import pyplot as plt\n",
"\n",
"results = mverse.get_results()\n",
"print(\"Multiverse results structure:\\n\")\n",
"print(results.keys())\n",
"print(results[\"universe_1\"].keys())\n",
"print(results[\"universe_1\"][\"graph_measure\"][:5]) # Print the first 5 graph measures from universe 1"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" universe | \n",
" graph_measure | \n",
" number | \n",
" __decisions | \n",
"
\n",
" \n",
" \n",
" \n",
" | 1 | \n",
" universe_1 | \n",
" [0.517973602484472, 0.5365295031055901, 0.5318... | \n",
" 3.14 | \n",
" {'Decision 1': 'strings', 'Value 1': 'Hello', ... | \n",
"
\n",
" \n",
" | 2 | \n",
" universe_2 | \n",
" [0.7096208416867087, 0.7107480051537015, 0.708... | \n",
" 3.14 | \n",
" {'Decision 1': 'strings', 'Value 1': 'Hello', ... | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" universe graph_measure number \\\n",
"1 universe_1 [0.517973602484472, 0.5365295031055901, 0.5318... 3.14 \n",
"2 universe_2 [0.7096208416867087, 0.7107480051537015, 0.708... 3.14 \n",
"\n",
" __decisions \n",
"1 {'Decision 1': 'strings', 'Value 1': 'Hello', ... \n",
"2 {'Decision 1': 'strings', 'Value 1': 'Hello', ... "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"results = mverse.get_results(as_df=True)\n",
"results"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Derived measures can be added to existing multiverse results:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" universe | \n",
" graph_measure | \n",
" number | \n",
" __decisions | \n",
" number2x | \n",
"
\n",
" \n",
" \n",
" \n",
" | 1 | \n",
" universe_1 | \n",
" [0.517973602484472, 0.5365295031055901, 0.5318... | \n",
" 3.14 | \n",
" {'Decision 1': 'strings', 'Value 1': 'Hello', ... | \n",
" 6.28 | \n",
"
\n",
" \n",
" | 2 | \n",
" universe_2 | \n",
" [0.7096208416867087, 0.7107480051537015, 0.708... | \n",
" 3.14 | \n",
" {'Decision 1': 'strings', 'Value 1': 'Hello', ... | \n",
" 6.28 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" universe graph_measure number \\\n",
"1 universe_1 [0.517973602484472, 0.5365295031055901, 0.5318... 3.14 \n",
"2 universe_2 [0.7096208416867087, 0.7107480051537015, 0.708... 3.14 \n",
"\n",
" __decisions number2x \n",
"1 {'Decision 1': 'strings', 'Value 1': 'Hello', ... 6.28 \n",
"2 {'Decision 1': 'strings', 'Value 1': 'Hello', ... 6.28 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"number2x = results[\"number\"] * 2\n",
"\n",
"results = mverse.add_results(\"number2x\", number2x)\n",
"results"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And also removed:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" universe | \n",
" graph_measure | \n",
" number | \n",
" __decisions | \n",
"
\n",
" \n",
" \n",
" \n",
" | 1 | \n",
" universe_1 | \n",
" [0.517973602484472, 0.5365295031055901, 0.5318... | \n",
" 3.14 | \n",
" {'Decision 1': 'strings', 'Value 1': 'Hello', ... | \n",
"
\n",
" \n",
" | 2 | \n",
" universe_2 | \n",
" [0.7096208416867087, 0.7107480051537015, 0.708... | \n",
" 3.14 | \n",
" {'Decision 1': 'strings', 'Value 1': 'Hello', ... | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" universe graph_measure number \\\n",
"1 universe_1 [0.517973602484472, 0.5365295031055901, 0.5318... 3.14 \n",
"2 universe_2 [0.7096208416867087, 0.7107480051537015, 0.708... 3.14 \n",
"\n",
" __decisions \n",
"1 {'Decision 1': 'strings', 'Value 1': 'Hello', ... \n",
"2 {'Decision 1': 'strings', 'Value 1': 'Hello', ... "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"results = mverse.remove_results(\"number2x\")\n",
"results"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "comet",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}