{
"info": {
"author": "Vladyslav Oles, Anton Kukushkin",
"author_email": "kukushkin.anton@gmail.com, vladyslav.oles@wsu.edu",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3 :: Only",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Bio-Informatics"
],
"description": "# BoolSi\n\nBoolSi is an open-source command line tool for distributed simulations \nof deterministic Boolean networks with synchronous update. It uses MPI \nstandard to allow execution on computational clusters, as well as \nparallel processing on a single computer.\n\n
\n\nBoolSi can simulate from a range of initial states of the network, \nidentify and analyze network attractors, and find conditions that lead \nto specific states of the network. It also allows user to fix the state \nof any network node for the length of entire simulation (e.g. modeling \ngene knockout in regulatory networks), or perturb the state of the node \nat any time step (e.g. modeling sensory input in robotics).\n\n- [Installation](#installation)\n - [Prerequisites](#prerequisites)\n - [PIP](#pip)\n - [Install from source](#install-from-source)\n- [MPI usage](#mpi-usage)\n- [Quickstart](#quickstart)\n - [Example 1. Simulate network from `example1.yaml` for 5 steps](#example-1-simulate-network-from-example1yaml-for-5-steps)\n - [Example 2. Find and analyze attractors of a network](#example-2-find-and-analyze-attractors-of-a-network)\n - [Example 3. Find simulations that reach specific states of a network](#example-3-find-simulations-that-reach-specific-states-of-a-network)\n- [Advanced usage](#advanced-usage)\n - [Fixed nodes](#fixed-nodes)\n - [Perturbations](#perturbations)\n - [Target state](#target-state)\n- [Command line reference](#command-line-reference)\n- [Input file reference](#input-file-reference)\n- [Output](#output)\n - [Graphical](#graphical)\n - [CSV](#csv)\n\n- [License](#license)\n\n## Installation\n### Prerequisites\nBoolSi requires:\n* Python 3.4 or higher\n\nTo use BoolSi with MPI you must also install:\n\n* MPI Implementation (OpenMPI, MPICH)\n* mpi4py Python library (https://mpi4py.readthedocs.io/)\n\nFor MPI Implementation installation instructions, please refer to vendor \ndocumentation:\n\n* OpenMPI (https://www.open-mpi.org) \n* MPICH (https://www.mpich.org)\n\nWe also expect BoolSi to work with other MPI Implementations, although \nthey have not been tested. \n\nTo install mpi4py:\n\n $ pip install mpi4py\n\nAll other Python package dependencies will be installed automatically \nwhen installing BoolSi.\n\n### PIP\n\n $ pip install boolsi\n\n### Install from source\n\n $ git clone https://github.com/boolsi/boolsi.git\n $ cd boolsi\n $ pip install .\n\n## MPI usage\n\nTo run BoolSi using MPI:\n\n $ mpiexec -np [NUMBER OF PROCESSES] boolsi ...\n\nNote that forceful termination in MPI (Abort) does not guarantee \ngraceful shutdown of an application. \nAs a consequence, aborting MPI run on Windows or in `attract` mode \nwithout the flag `-i` may leave orphaned files in the database directory \n(defaults to \"\\/tmp_db\"). \n## Quickstart\n\nBoolSi provides 3 terminal commands to simulate boolean networks:\n\n- `simulate` to simulate for a number of time steps\n- `attract` to find and analyze attractors for correlations between the nodes\n- `target` to find conditions leading to specific states of the network\n\nEach command allows to run simulations from multiple initial states, \nwith a time cap, and overriding update rule (see [Advanced usage](#advanced-usage) \nfor the latter). All flags and arguments for the commands are covered \nin [Command line reference](#command-line-reference). \n\nCommands produce different types of output. \n`simulate` produces simulations — lists of states of boolean network from its initial state.\n`attract` produces attractors — lists of states that form cycles.\n`target` produces simulations, but only those that reach specified target states.\n \n\nBoolean network to simulate needs to be described in YAML file of a form:\n\n```\nnodes:\n- A\n- B\n- C\n\nupdate rules:\n A: not B\n B: A and C\n C: not A or B\n \ninitial state:\n A: 0\n B: 1\n C: any\n```\n\nFor full input file syntax refer to [Input file reference](#input-file-reference).\n\nLet's run through some basic examples.\n\n### Example 1. Simulate network from `example1.yaml` for 5 steps\n\nFrom the command line, run:\n\n`$ boolsi simulate examples/example1.yaml -t 5`\n\nBecause input file `example1.yaml` specifies multiple initial states (by \nusing keyword `any` for node `C`), BoolSi will run separate simulation \nfor each of them (`A: 0, B: 1, C: 0` and `A: 0, B: 1, C: 1`):\n\n```\n18-Aug-2019 20:17:16 Hi! All BoolSi output (including this log) will appear in \"/Users/user/PycharmProjects/boolsi/examples/output2_example1/\".\n18-Aug-2019 20:17:16 Run parameters: \"simulate examples/example1.yaml -t 5 -o examples/output2_example1\".\n18-Aug-2019 20:17:16 Initializing temporary storage in \"/Users/user/PycharmProjects/boolsi/.tmp_storage/\".\n18-Aug-2019 20:17:16 Read Boolean network of 3 nodes.\n18-Aug-2019 20:17:16 Single process will be used to perform 2 simulations...\n...\n```\n\nThe above also tells you where to look for the simulations after the run \nis finished (`/output_20190403T003836/`):\n\n
\n\nBy default the results are printed in PDF, but other formats are \navailable, including machine-readable CSV (see [Output reference](#output-reference)). \n\n### Example 2. Find and analyze attractors of a network\n\nInput file `example1.yaml` specifies 2 initial states of the network to \nsimulate from. If we want to find all attractors of the network, we need \nto simulate it from all possible initial states. For this, we create \ninput file `example2.yaml`, where the initial state of every node is set \nto `any`:\n\n```\nnodes:\n- A\n- B\n- C\n\nupdate rules:\n A: not B\n B: A and C\n C: not A or B\n \ninitial state:\n A: any\n B: any\n C: any\n```\n\nRunning the command:\n\n`$ boolsi attract examples/example2.yaml`\n\nwill find all attractors and calculate correlations between the node states therein.\n\n
\n\n### Example 3. Find simulations that reach specific states of a network\n\nIf we want to find conditions that lead to the states where e.g. `A` is `0` \nand `B` is `1`, we first need to specify them as target states. For \nthis, we create input file `example3.yaml` with added section \n`target state`. We also set the initial state of `A` to `1` in order to\nomit the trivial results, when the network starts in a target state.\n \n```\nnodes:\n- A\n- B\n- C\n\nupdate rules:\n A: not B\n B: A and C\n C: not A or B\n \ninitial state:\n A: 1\n B: any\n C: any\n \ntarget state:\n A: 0\n B: 1\n C: any\n```\n\nRunning the command:\n\n`$ boolsi target examples/example3.yaml`\n\nwill find the simulations reaching either `A: 0, B: 1, C: 0` or `A: 0, B: 1, C: 1`.\n\n
\n\n## Advanced usage\n\nBoolSi allows to override simulation process, which can be used to model \nexternal influence on the network. User can fix the state of any node \nfor the entire simulation (e.g. modeling gene knockout in regulatory \nnetworks), or perturb it at any time step (e.g. modeling sensory input \nin robotics).\n\n### Fixed nodes\n\nTo permanently fix the state of a node, specify it under `fixed nodes` \nsection of the input file. For example, these lines set the state of \nnode `A` to `0` and `B` to `1` for the entire simulation:\n\n```\nfixed nodes:\n A: 0\n B: 1\n```\n\nAdding the above to `example1.yaml` will make the simulations look like:\n\n
\n\nWhen running `simulate` or `target`, it is also possible to use `0?`, `1?`, `any`, `any?` values.\n\n```\n C: 0?\n```\n\n`0?` (`1?`) doubles the number of produced simulations by fixing the \nstate of node `C` to `0`(`1`) in addition to simulating with unfixed `C`.\n\n\n```\n C: any\n```\n\n`any` doubles the number of simulations by fixing the state of `C` \nseparately to `0` and to `1`. \n\n```\n C: any?\n```\n\n`any?` triples the number of simulations by fixing the state of `C` \nseparately to `0` and `1`, and simulating with unfixed `C`. \n\n### Perturbations\n\nTo force a node into particular state at particular time step, use \n`perturbations` section. For example, to set the state of node `A` to \n`0` at time step `4` and to `1` at time step `5`, and the state of node \n`B` to `1` at time steps `1, 2, 3, 5`:\n\n```\nperturbations:\n A: \n 0: 4\n 1: 5\n B:\n 1: 1-3, 5\n```\n\n
\n\nSimilarly to `fixed nodes`, it is possible to use `0?`, `1?`,`any`, \n`any?` values when running `simulate` or `target`. For example, the \nfollowing lines increase the number of produced simulations by a factor \nof 24 = 16 because the state to force `C` into (`0` or `1`) \nis considered independently at each time step. \n\n```\nperturbations:\n C: \n any: 2, 3, 5, 7\n```\n \nWhen running `attract` or `target`, BoolSi starts looking for attractors \nor target states only after all perturbations have occurred.\n\n## Command line reference\n\nTo run BoolSi, open the terminal and type:\n \n`boolsi COMMAND [ARGS] [OPTIONS]`\n\nYou can stop BoolSi at any point by pressing `Ctrl+C`.\n\n### Commands:\n\n`simulate` Perform simulations.\n\n`attract` Find and analyze attractors.\n\n`target` Find simulations that reach target states.\n\n### Common arguments:\n\n`input_file` (Mandatory) path to YAML file that contains Boolean network description. \n\n### Common options\n\n`-h`, `--help` Prints help for the current command.\n\n`-o`, `--output-directory` Path to directory to print output into. Defaults to \"\\/output_\\\".\n\n`-b`, `--batches-per-process` Number of batches to split each each process will handle. Defaults to 100.\n\n`-d`, `tmp-database-directory` Directory to store intermediate results in. Defaults to \"\\/.tmp_db\".\n\n`--no-pdf` Disable PDF output. PDF output is enabled by default.\n\n`--pdf-page-limit` Maximum number of PDF pages to print. Defaults to 100. Only works when PDF output is enabled.\n\n`--no-csv` Disable CSV output. CSV output is enabled by default.\n\n`--print-png` Enable PNG output. PNG output is disabled by default.\n\n`--png-dpi` PNG dpi. Defaults to 300. Only works when PNG output is enabled.\n\n`--print-tiff` Enable TIFF output. TIFF output is disabled by default.\n\n`--tiff-dpi` TIFF dpi. Defaults to 150. Only works when TIFF output is enabled.\n\n`--print-svg` Enable SVG output. SVG output is disabled by default.\n\n### `simulate` options\n\n`-t`, `--simulation-time` (Mandatory) number of time steps to simulate for.\n \n### `attract` options\n\n`-t`, `--max-simulation-time` Maximum simulation time. If set, simulation stops after this time step even if an attractor was not reached. \n\n`-a`, `--max-attractor-length` Maximum length of attractor to look for. If set, attractors longer than this value will be ignored.\n\n`-r`, `--reduce-memory-usage` Turn off storing all simulation states. Slows down the search for attractors.\n\n`-i`, `--ignore-stale-db-items` Turn off cleaning stale attractors from database on each write. Greatly increases disk space usage, speeds processing up, and makes ETA more accurate.\n\n`-c`, `--no-node-correlations` Turn off computing Spearman's correlations between node states in attractors.\n\n`-p`, `--p-value` p-value threshold for statistical significance of node correlations. Defaults to 0.05.\n\n### `target` options\n\n`-t`, `--max-simulation-time` Maximum simulation time. If set, simulation stops after this time step even if a target state wasn't reached.\n\n`-n`, `--n-simulations-reaching-target` Stop after this many simulations have reached target state.\n\n## Input file reference\nInput file uses YAML syntax to describe a Boolean network and how its state changes over time.\n### Node names\nSection `node names` of input file contains YAML list of node names. Node names must be unique valid YAML strings and contain no whitespaces, parentheses, or commas. In addition, a node name cannot be any of the reserved words `0`, `1`, `and`, `or`, `not`, `majority`.\n\nNode name format is compatible with Python's MathText, allowing for basic TeX-style expressions.\n```\nnode names:\n -composite_node_name\n -$X_5$\n -SOMEGENE4\n```\n### Update rules\nSection `update rules` contains rules that define next state of the \nnetwork based on its current state. A rule for each individual node is a \nBoolean function on a subset of the current node states. It is written \nas an expression that can contain node names, logical operators `and`, \n`or`, and `not`, parentheses, constants `0` and `1`, and function `majority`. \n\n`majority` takes n Boolean inputs and returns `1` if and only if \nmore than n/2 of its inputs are `1`. In particular, when n \nis even and exactly half of the inputs are `0` (and the other half is \n`1`), `majority` returns `0`. To change this tie-breaking behavior to \nreturn `1`, add `1` as an input to the function. Similarly, you could \nmake `majority` return current state of some node `X` in case of a tie \nby adding `X` as an input instead. \n\n```\nupdate rules:\n A: (A or not B) and C\n B: 1\n C: majority(not A, B, D) # Tie cannot happen on odd number of inputs.\n D: majority(A, B) # Returns 0 when A and B are tied.\n E: majority(A, B, 1) # Returns 1 when A and B are tied.\n F: majority(A, B, B) # Returns B when A and B are tied.\n G: majority(A, B, C or D) # Returns C or D when A and B are tied.\n H: A and majority(C, not B, not D, G)\n \n```\n\nNote: update rule for a node is stored as a truth table, whose size \nincreases exponentially with the number of nodes it depends on. \nSpecifying more than 20 nodes in update rule can put your system at risk \nof running out of memory.\n\n### Initial state\nSection `initial state` defines initial state or range of initial states \nto simulate from. State of each node must be specified as either `0`, \n`1`, or `any`. Specifying `any` will simulate from both node states (`0` \nand `1`), and thus the number of simulations will double.\n\nIn the following example, the network will be simulated from both `A: 0, B: 1, C: 0` and `A: 0, B: 1, C: 1`:\n```\ninitial state:\n A: 0\n B: 1\n C: any\n```\n### Fixed nodes\nSection `fixed nodes` allows to define nodes whose state doesn't change \nthroughout a simulation. Setting node to a fixed state `0` or `1` simply \noverrides its update rule with a constant, while `any` sets it to both \n`0` and `1` in separate simulations. Their counterparts with `?` (`0?`, \n`1?`, or `any?`) will simulate with both regular and overridden update \nrule of a node. Thus, specifying `any`, `0?`, or `1?` for a node doubles \nthe number of simulations, while `any?` — triples it. \n\n```\nfixed nodes:\n A: 0\n B: 1\n C: 0?\n D: 1?\n E: any\n F: any?\n```\n\n### Perturbations\nSection `perturbations` allows to override node states at specific time \nsteps. Similarly to [Fixed nodes](#fixed-nodes), the states to override \nwith are defined by `0`, `1`, `any`, `0?`, `1?`, or `any?` but you also \nneed to specify time steps when the override takes place.\n\n```\nperturbations:\n A: \n 0: 5\n 1: 6\n B:\n 1: 10, 15-17, 20\n C:\n 0?: 100\n 1?: 200 \n D:\n any?: 123\n``` \nTime steps may be given individually (e.g. `5, 6, 7, 8`) or in ranges \n(e.g. `5-8`). They must be 1 or greater (0 corresponds to initial state) \nand can't exceed maximum simulation time (if specified).\n\nIf a perturbation occurs with a node in fixed state, this state will be \noverridden at the time steps of the perturbation.\n\nNote that the search for attractors and target states starts only after \nthe last perturbation has occurred.\n\n### Target state\n\nSection `target state` is only applicable when executing `target` \ncommand. It defines target state or range of target states to look for \nin simulations.\n\nSyntax is identical to that of `initial state` — state of each \nnode must be specified as either `0`, `1`, or `any`, where `any` means \nthat both `0` and `1` are acceptable in a target state.\n\n```\ntarget state:\n A: 0\n B: 1\n C: any\n```\n\nIn the above example, the BoolSi will be looking for simulations that \nreach either `A: 0, B: 1, C: 0` or `A: 0, B: 1, C: 1`.\n\n## Output\n### Graphical\nBoolSi supports a number of graphical output formats: PDF, SVG, PNG, and \nTIFF. Each simulation or attractor is printed as a separate page of the \nPDF document and/or an SVG/PNG/TIFF image file. \n\nBelow is an example output of a network (namely, Cambium regulation \nnetwork) simulated from an individual initial state for 10 time steps. \nNote that initial state (at time step 0) is not counted towards the simulation length.\n\n
\n\nHere is an example output of an attractor of the same network. \nUnlike in simulations, time steps in attractors are relative. Note that \nfirst state of an attractor in the output is not guaranteed to be the \nsame as the first state of attractor's first occurrence in the simulation. \n\n
\n\n`attract` also prints pairwise Spearman's correlations between averaged node states across all attractors.\n\n
\n\n### CSV\nBy default, BoolSi additionally writes the output to CSV to allow for \nmachine processing. The output consists of two CSV files: one containing \nsimulation/attractor summaries, and another — simulations or attractors themselves. \n\nA summary of a simulation contains its length, flags representing \nwhether individual nodes were fixed, and the number of perturbations for each node:\n\n\n```\nsimulation_id,length,CK0_is_fixed,CK_is_fixed,AHK_is_fixed,AHP_is_fixed,BARR_is_fixed,IPT_is_fixed,PIN_is_fixed,CKX_is_fixed,AARR_is_fixed,ERF_is_fixed,AHP6_is_fixed,TDIF_is_fixed,PXY_is_fixed,IAA0_is_fixed,IAA_is_fixed,BR_is_fixed,BZR1_is_fixed,STM_is_fixed,GA_is_fixed,GID1_is_fixed,ETHL_is_fixed,ARF_is_fixed,HB8_is_fixed,TMO5_is_fixed,WOX4_is_fixed,LOG3_is_fixed,DELL_is_fixed,WRKY_is_fixed,LHW_is_fixed,ENDO_is_fixed,n_CK0_perturbations,n_CK_perturbations,n_AHK_perturbations,n_AHP_perturbations,n_BARR_perturbations,n_IPT_perturbations,n_PIN_perturbations,n_CKX_perturbations,n_AARR_perturbations,n_ERF_perturbations,n_AHP6_perturbations,n_TDIF_perturbations,n_PXY_perturbations,n_IAA0_perturbations,n_IAA_perturbations,n_BR_perturbations,n_BZR1_perturbations,n_STM_perturbations,n_GA_perturbations,n_GID1_perturbations,n_ETHL_perturbations,n_ARF_perturbations,n_HB8_perturbations,n_TMO5_perturbations,n_WOX4_perturbations,n_LOG3_perturbations,n_DELL_perturbations,n_WRKY_perturbations,n_LHW_perturbations,n_ENDO_perturbations\nsimulation_1,10,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0\n```\n\nA summary of an attractor contains its length, mean and standard \ndeviation of its trajectory length, and relative frequency of attractor \noccurrences across all performed simulations:\n\n\n```\nattractor_id,length,trajectory_length_mean,trajectory_length_SD,relative_frequency\nattractor_1,1,11.018409729,2.573900999723755,0.0625\n...\nattractor_15,13,7.575435556,2.5215366582580407,0.031365394592285156\n...\n```\n\nIn a file storing simulations or attractors, `_` after a node state means \nthat the state of the node is fixed. `*` after a node state means that \nthe node was perturbed into this state at the corresponding time step. \n\nSimulation example:\n\n```\nsimulation_id,time_step,CK0,CK,AHK,AHP,BARR,IPT,PIN,CKX,AARR,ERF,AHP6,TDIF,PXY,IAA0,IAA,BR,BZR1,STM,GA,GID1,ETHL,ARF,HB8,TMO5,WOX4,LOG3,DELL,WRKY,LHW,ENDO\nsimulation_1,0,1,1,1,1,1,1,1,1,1,1,0,0_,1,1,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0\nsimulation_1,1,1,0,1,1,1,1,1,1,1,1,0,0_,0,1,0,1,1,0,0,0,1,0,0,0,1,0,1,0,0,1\nsimulation_1,2,1,0,0,1,1,1,0,0,1,1,0,0_,0,1,0,1,0,0,0,0,1*,0,0,0,1,0,1,1,1,1\nsimulation_1,3,1,1,0,0,1,1,0,0,1,1,0,0_,0,1,1,1,0,0,0,0,1*,0,0,0,1,0,1,0,1,1\nsimulation_1,4,1,1,1,0,0,1,0,0,1,1,0,0_,0,1,1,1,0,0,0,0,1*,1,0,0,1,0,0,0,1,0\nsimulation_1,5,1,1,1,1,0,0,0,0,0,0,1,0_,0,1,1,1,1,0,0,0,1*,1,0,1,1,0,0,0,1,0\nsimulation_1,6,1,0,1,1,1,0,0,0,0,0,1,0_,0,1,1,1,1,0,0,0,1,1,1,1,0,1,0,1,1,0\nsimulation_1,7,1,1,0,1,1,1,1,0,0,1,0,0_,0,1,1,1,1,0,0,0,1,1,1,1,0,1,0,1,1,0\nsimulation_1,8,1,1,1,0,1,1,1,0,0,1,0,0_,0,1,0,1,1,0,0,0,1,1,1,1,1,1,0,1,1,0\nsimulation_1,9,1,1,1,1,0,1,1,0,0,1,0,0_,0,1,0,1,1,0,0,0,1,0,1,1,1,1,1,1,1,1\nsimulation_1,10,1,1,1,1,1,1,0,0,0,1,0,0_,0,1,0,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1\n```\n\n\nAttractor example:\n```\nattractor_id,time_step,CK0,CK,AHK,AHP,BARR,IPT,PIN,CKX,AARR,ERF,AHP6,TDIF,PXY,IAA0,IAA,BR,BZR1,STM,GA,GID1,ETHL,ARF,HB8,TMO5,WOX4,LOG3,DELL,WRKY,LHW,ENDO\nattractor_1,t,0,0,0,0,0,0,0,1,0,0,1,0_,0,1,1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0\n...\nattractor_15,t,0,1,0,0,0,0,0,0,0,1,1,0_,0,1,1,1,1,0,0,0,1,1,0,1,1,0,0,0,1,0\nattractor_15,t+1,0,0,1,0,0,0,0,0,0,0,1,0_,0,1,1,1,1,0,0,0,1,1,1,1,1,1,0,1,1,0\nattractor_15,t+2,0,0,0,1,0,0,0,0,0,1,1,0_,0,1,1,1,1,0,0,0,1,1,1,1,0,1,0,1,1,0\nattractor_15,t+3,0,0,0,0,1,0,0,0,0,1,1,0_,0,1,1,1,1,0,0,0,1,1,1,1,1,1,0,1,1,0\nattractor_15,t+4,0,0,0,0,0,1,1,0,0,1,0,0_,0,1,1,1,1,0,0,0,1,1,1,1,1,1,0,1,1,0\nattractor_15,t+5,0,1,0,0,0,0,0,0,0,1,1,0_,0,1,0,1,1,0,0,0,1,1,1,1,1,1,0,1,1,0\nattractor_15,t+6,0,0,1,0,0,0,0,0,0,1,1,0_,0,1,1,1,1,0,0,0,1,0,1,1,1,1,1,1,1,1\nattractor_15,t+7,0,0,0,1,0,1,0,0,0,1,0,0_,0,1,1,1,0,0,0,0,1,1,0,0,1,1,0,1,1,0\nattractor_15,t+8,0,1,0,0,1,0,0,0,0,1,1,0_,0,1,1,1,1,0,0,0,1,1,0,1,1,0,0,0,1,0\nattractor_15,t+9,0,0,1,0,0,1,1,1,0,1,0,0_,0,1,1,1,1,0,0,0,1,1,1,1,1,1,0,1,1,0\nattractor_15,t+10,0,0,0,1,0,0,0,0,0,1,1,0_,0,1,0,1,1,0,0,0,1,1,1,1,1,1,0,1,1,0\nattractor_15,t+11,0,0,0,0,1,0,0,0,0,1,1,0_,0,1,1,1,1,0,0,0,1,0,1,1,1,1,1,1,1,1\nattractor_15,t+12,0,0,0,0,0,1,0,0,1,1,0,0_,0,1,1,1,0,0,0,0,1,1,0,0,1,1,0,1,1,0\n...\n```\n\nIn `attract`, Spearman's correlations between node states in attractors \nare written to an additional CSV file. The correlations are sorted by \ntheir magnitude in descending order, with statistically significant \ncorrelations printed first:\n\n```\nnode 1,node 2,rho,p-value\nCK,AHK,1.00000,0.00000\nCK,AHP,1.00000,0.00000\nCK,BARR,1.00000,0.00000\nAHK,AHP,1.00000,0.00000\nAHK,BARR,1.00000,0.00000\nAHP,BARR,1.00000,0.00000\nIPT,AHP6,-1.00000,0.00000\n...\n```\n\n## License\n\nBoolSi is licensed with the MIT license.",
"description_content_type": "text/markdown",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/boolsi/boolsi",
"keywords": "",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "boolsi",
"package_url": "https://pypi.org/project/boolsi/",
"platform": "any",
"project_url": "https://pypi.org/project/boolsi/",
"project_urls": {
"Homepage": "https://github.com/boolsi/boolsi"
},
"release_url": "https://pypi.org/project/boolsi/0.9.5/",
"requires_dist": null,
"requires_python": "",
"summary": "BoolSi is a tool for distributed simulations and analysis of Boolean networks",
"version": "0.9.5"
},
"last_serial": 5985972,
"releases": {
"0.9.2": [
{
"comment_text": "",
"digests": {
"md5": "490df7f9c677756a2383590e27d2bef8",
"sha256": "0837100d4a521bea45c4c134f2b50c1ed882e6fcbe662fa0f783cc4e9fd8e041"
},
"downloads": -1,
"filename": "boolsi-0.9.2.tar.gz",
"has_sig": false,
"md5_digest": "490df7f9c677756a2383590e27d2bef8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 62674,
"upload_time": "2019-10-07T22:23:33",
"url": "https://files.pythonhosted.org/packages/a3/22/abdf4df5f1a005ab055da7cfb4e6e0c7c42390ac8ba49ac2f6c4eaf5352a/boolsi-0.9.2.tar.gz"
}
],
"0.9.3": [
{
"comment_text": "",
"digests": {
"md5": "355c14b50c8c29535fa1e8f400df5b83",
"sha256": "1c7333fbec2b74ca676ec366b3eda4348e5421af6afd618979468dbeb731ad89"
},
"downloads": -1,
"filename": "boolsi-0.9.3.tar.gz",
"has_sig": false,
"md5_digest": "355c14b50c8c29535fa1e8f400df5b83",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 62726,
"upload_time": "2019-10-09T00:38:25",
"url": "https://files.pythonhosted.org/packages/39/d5/c90c3f3f8d70036fa6dd5b00f01f35747ecf01c5e5fd526446af242951b8/boolsi-0.9.3.tar.gz"
}
],
"0.9.4": [
{
"comment_text": "",
"digests": {
"md5": "d4189a7c7c3692c0004df1ba75c3f8ab",
"sha256": "f10353e641fea8d9fc9de27bfb158ca5d131ddb8b4ffcbec016ed187e172a1be"
},
"downloads": -1,
"filename": "boolsi-0.9.4.tar.gz",
"has_sig": false,
"md5_digest": "d4189a7c7c3692c0004df1ba75c3f8ab",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 63408,
"upload_time": "2019-10-09T22:13:16",
"url": "https://files.pythonhosted.org/packages/2e/2d/4d47ee61b0af63b57936537f00dcddff11a0e9473d1cfc97077353298c7a/boolsi-0.9.4.tar.gz"
}
],
"0.9.5": [
{
"comment_text": "",
"digests": {
"md5": "5b6aac1e1fa6ebcfd3f3c2a578d9662f",
"sha256": "6dfb82fb5c02d4a7f63141372ae0ea876fbaccb267e7c21200725d6d2c690cbb"
},
"downloads": -1,
"filename": "boolsi-0.9.5.tar.gz",
"has_sig": false,
"md5_digest": "5b6aac1e1fa6ebcfd3f3c2a578d9662f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 63362,
"upload_time": "2019-10-16T19:14:26",
"url": "https://files.pythonhosted.org/packages/d4/34/d47058409516d5acb749e853c42bc228edc48523bb2a996f4b0913972505/boolsi-0.9.5.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "5b6aac1e1fa6ebcfd3f3c2a578d9662f",
"sha256": "6dfb82fb5c02d4a7f63141372ae0ea876fbaccb267e7c21200725d6d2c690cbb"
},
"downloads": -1,
"filename": "boolsi-0.9.5.tar.gz",
"has_sig": false,
"md5_digest": "5b6aac1e1fa6ebcfd3f3c2a578d9662f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 63362,
"upload_time": "2019-10-16T19:14:26",
"url": "https://files.pythonhosted.org/packages/d4/34/d47058409516d5acb749e853c42bc228edc48523bb2a996f4b0913972505/boolsi-0.9.5.tar.gz"
}
]
}