Skip to content

Commit e69be26

Browse files
authored
Merge pull request #54 from DynamicsAndNeuralSystems/jmoo2880-update-readme
Update pyspi README
2 parents 43be835 + 7efa33e commit e69be26

File tree

3 files changed

+284
-15
lines changed

3 files changed

+284
-15
lines changed

.github/CODE_OF_CONDUCT.md

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge 🤝
4+
5+
We as members, contributors, and leaders pledge to make participation in our
6+
community a harassment-free experience for everyone, regardless of age, body
7+
size, visible or invisible disability, ethnicity, sex characteristics, gender
8+
identity and expression, level of experience, education, socio-economic status,
9+
nationality, personal appearance, race, religion, or sexual identity
10+
and orientation.
11+
12+
We pledge to act and interact in ways that contribute to an open, welcoming,
13+
diverse, inclusive, and healthy community.
14+
15+
## Our Standards 🌟
16+
17+
Examples of behavior that contributes to a positive environment for our
18+
community include:
19+
20+
* Demonstrating empathy and kindness toward other people
21+
* Being respectful of differing opinions, viewpoints, and experiences
22+
* Giving and gracefully accepting constructive feedback
23+
* Accepting responsibility and apologizing to those affected by our mistakes,
24+
and learning from the experience
25+
* Focusing on what is best not just for us as individuals, but for the
26+
overall community
27+
28+
Examples of unacceptable behavior include:
29+
30+
* The use of sexualized language or imagery, and sexual attention or
31+
advances of any kind
32+
* Trolling, insulting or derogatory comments, and personal or political attacks
33+
* Public or private harassment
34+
* Publishing others' private information, such as a physical or email
35+
address, without their explicit permission
36+
* Other conduct which could reasonably be considered inappropriate in a
37+
professional setting
38+
39+
## Enforcement Responsibilities 🛡️
40+
41+
Community leaders are responsible for clarifying and enforcing our standards of
42+
acceptable behavior and will take appropriate and fair corrective action in
43+
response to any behavior that they deem inappropriate, threatening, offensive,
44+
or harmful.
45+
46+
Community leaders have the right and responsibility to remove, edit, or reject
47+
comments, commits, code, wiki edits, issues, and other contributions that are
48+
not aligned to this Code of Conduct, and will communicate reasons for moderation
49+
decisions when appropriate.
50+
51+
## Scope 🌐
52+
53+
This Code of Conduct applies within all community spaces, and also applies when
54+
an individual is officially representing the community in public spaces.
55+
Examples of representing our community include using an official e-mail address,
56+
posting via an official social media account, or acting as an appointed
57+
representative at an online or offline event.
58+
59+
## Enforcement 👮🏻
60+
61+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62+
reported to the community leaders responsible for enforcement [here]([email protected]).
63+
All complaints will be reviewed and investigated promptly and fairly.
64+
65+
All community leaders are obligated to respect the privacy and security of the
66+
reporter of any incident.
67+
68+
## Enforcement Guidelines 📋
69+
70+
Community leaders will follow these Community Impact Guidelines in determining
71+
the consequences for any action they deem in violation of this Code of Conduct:
72+
73+
### 1. Correction ✔️
74+
75+
**Community Impact**: Use of inappropriate language or other behavior deemed
76+
unprofessional or unwelcome in the community.
77+
78+
**Consequence**: A private, written warning from community leaders, providing
79+
clarity around the nature of the violation and an explanation of why the
80+
behavior was inappropriate. A public apology may be requested.
81+
82+
### 2. Warning ❗
83+
84+
**Community Impact**: A violation through a single incident or series
85+
of actions.
86+
87+
**Consequence**: A warning with consequences for continued behavior. No
88+
interaction with the people involved, including unsolicited interaction with
89+
those enforcing the Code of Conduct, for a specified period of time. This
90+
includes avoiding interactions in community spaces as well as external channels
91+
like social media. Violating these terms may lead to a temporary or
92+
permanent ban.
93+
94+
### 3. Temporary Ban ⏳
95+
96+
**Community Impact**: A serious violation of community standards, including
97+
sustained inappropriate behavior.
98+
99+
**Consequence**: A temporary ban from any sort of interaction or public
100+
communication with the community for a specified period of time. No public or
101+
private interaction with the people involved, including unsolicited interaction
102+
with those enforcing the Code of Conduct, is allowed during this period.
103+
Violating these terms may lead to a permanent ban.
104+
105+
### 4. Permanent Ban ❌
106+
107+
**Community Impact**: Demonstrating a pattern of violation of community
108+
standards, including sustained inappropriate behavior, harassment of an
109+
individual, or aggression toward or disparagement of classes of individuals.
110+
111+
**Consequence**: A permanent ban from any sort of public interaction within
112+
the community.
113+
114+
## Attribution 👍
115+
116+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
117+
version 2.0, available at
118+
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
119+
120+
Community Impact Guidelines were inspired by [Mozilla's code of conduct
121+
enforcement ladder](https://github.com/mozilla/diversity).
122+
123+
[homepage]: https://www.contributor-covenant.org
124+
125+
For answers to common questions about this code of conduct, see the FAQ at
126+
https://www.contributor-covenant.org/faq. Translations are available at
127+
https://www.contributor-covenant.org/translations.

.github/SECURITY.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Reporting Security Issues 🛡️
2+
3+
The _pyspi_ team and community take security bugs in _pyspi_ seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions.
4+
5+
To report a security issue, please use the GitHub Security Advisory tab.
6+
7+
The _pyspi_ team will send a response indicating the next steps in handling your report. After the initial reply to your report, the security team will keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance.
8+
9+
## Supported Versions
10+
11+
The following versions of _pyspi_ are
12+
currently being supported with security updates.
13+
14+
| Version | Supported |
15+
| ------- | ------------------ |
16+
| 0.4 | :white_check_mark: |
17+
18+

README.md

Lines changed: 139 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
<h1 align="center"><em>pyspi</em>: Python Toolkit of Statistics for Pairwise Interactions</h1>
44

5+
6+
57
<p align="center">
68
<a href="https://zenodo.org/badge/latestdoi/601919618"><img src="https://zenodo.org/badge/601919618.svg" height="20"/></a>
79
<a href="https://www.gnu.org/licenses/gpl-3.0"><img src="https://img.shields.io/badge/License-GPLv3-blue.svg" height="20"/></a>
810
<a href="https://github.com/DynamicsAndNeuralSystems/pyspi/actions/workflows/run_unit_tests.yaml"><img src="https://github.com/DynamicsAndNeuralSystems/pyspi/actions/workflows/run_unit_tests.yaml/badge.svg" height="20"/></a>
911
<a href="https://twitter.com/compTimeSeries"><img src="https://img.shields.io/twitter/url/https/twitter.com/compTimeSeries.svg?style=social&label=Follow%20%40compTimeSeries" height="20"/></a>
12+
1013
</p>
1114

1215
_pyspi_ is a comprehensive python library for computing statistics of pairwise interactions (SPIs) from multivariate time-series (MTS) data.
@@ -16,32 +19,153 @@ The code is licensed under the [GNU GPL v3 license](http://www.gnu.org/licenses/
1619
**Feel free to reach out for help with real-world applications.**
1720
Feedback is much appreciated through [issues](https://github.com/DynamicsAndNeuralSystems/pyspi/issues), or [pull requests](https://github.com/DynamicsAndNeuralSystems/pyspi/pulls).
1821

19-
## Acknowledgement :+1:
22+
| Section | Description |
23+
|:--------------|:----------------------|
24+
| [Installation](#installation-) | Installing _pyspi_ and its dependencies |
25+
| [Getting Started](#getting-started-) | A quick introduction on how to get started with _pyspi_ |
26+
| [SPI Descriptions](#spi-descriptions-) | A link to the full table of SPIs and detailed descriptions |
27+
| [Documentation](#documentation) | A link to our API reference and full documentation on GitBooks |
28+
| [Contributing to _pyspi_](#contributing-to-pyspi-) | A guide for community members willing to contribute to _pyspi_ |
29+
| [Acknowledgement](#acknowledgement-) | A citation for _pyspi_ for scholarly articles |
30+
| [Our Contributors](#our-contributors-) | A summary of our primary contributors |
31+
<hr style="border-top: 3px solid #bbb;">
2032

21-
If you use this software, please read and cite this article:
33+
## Installation 📥
34+
The simplest way to get the _pyspi_ package up and running is to install the package locally using `pip`.
35+
For access to the full library of SPIs, the code requires GNU's [Octave](https://octave.org/download) to be installed on your system.
2236

23-
- &#x1F4D7; O.M. Cliff, A.G. Bryant, J.T. Lizier, N. Tsuchiya, B.D. Fulcher. [Unifying pairwise interactions in complex dynamics](https://doi.org/10.1038/s43588-023-00519-x), _Nature Computational Science_ (2023).
37+
#### 1. Pre-Install Octave (Optional)
38+
While you can safely install _pyspi_ without first installing `Octave`, you will not have access to the full library of SPIs
2439

25-
Note that [preprint](https://arxiv.org/abs/2201.11941) and [free-to-read](https://rdcu.be/dn3JB) versions of this article are available.
40+
#### 2. Create a conda environment (Optional, Recommended)
41+
While you can also install _pyspi_ outside of a conda environment, it depends on a lot of user packages that may make managing dependencies quite difficult.
42+
So, we would also recommend installing pyspi in a conda environment. Firstly, create a fresh conda environment:
43+
```
44+
conda create -n pyspi python=3.9.0
45+
```
46+
Once you have created the environment, activate it using `conda activate pyspi`.
47+
48+
#### 3. Install with _pip_
49+
To install _pyspi_ using a local pip install, download or clone the latest version from the repository:
50+
```
51+
git clone https://github.com/DynamicsAndNeuralSystems/pyspi
52+
```
53+
54+
Once you have navigated to the main folder (`pyspi`), you can install using:
55+
```
56+
pip install .
57+
```
58+
59+
60+
For a more detailed guide on how to install _pyspi_, as well as how you can use _pyspi_ without first installing Octave,
61+
please see the [full documentation](https://time-series-features.gitbook.io/pyspi/installation/installing-pyspi).
62+
Additionally, we provide a comprehensive [troubleshooting guide](https://time-series-features.gitbook.io/pyspi/installation/troubleshooting) for users who encounter issues installing _pyspi_ on their system,
63+
as well as [alternative installation options](https://time-series-features.gitbook.io/pyspi/installation/alternative-installation-options).
64+
65+
## Getting Started 🚀
66+
67+
Once you have installed _pyspi_, you can learn how to apply the package by checking out the [walkthrough tutorials](https://time-series-features.gitbook.io/pyspi/usage/walkthrough-tutorials) in our documentation. Click any of the examples below to access the tutorials in our full documentation:
68+
69+
- [Simple demonstration](https://time-series-features.gitbook.io/pyspi/usage/walkthrough-tutorials/getting-started-a-simple-demonstration)
70+
71+
- [Finance: stock price time series](https://time-series-features.gitbook.io/pyspi/usage/walkthrough-tutorials/finance-stock-price-time-series)
72+
73+
74+
- [Neuroimaging: fMRI time series)](https://time-series-features.gitbook.io/pyspi/usage/walkthrough-tutorials/neuroimaging-fmri-time-series)
2675

27-
## Getting Started
76+
### Advanced Usage
77+
For advanced users, we offer several additional guides in the [full documentation](https://time-series-features.gitbook.io/pyspi/usage/advanced-usage) on how you can distribute your _pyspi_ jobs across PBS clusters, as well as how you can construct your own subsets of SPIs.
78+
Click one of the following dropdowns for more information:
2879

29-
See the [documentation](https://time-series-features.gitbook.io/pyspi/) for installing and setting up _pyspi_.
30-
Once you're done, you can learn how to use the package by checking out the:
80+
<details closed>
81+
<summary>Distributing pyspi calculations</summary>
82+
<p>If you have access to a PBS cluster and are processing MTS with many processes (or are analyzing many MTS), then you may find the <a href="https://github.com/DynamicsAndNeuralSystems/pyspi-distribute"><em>pyspi distribute</em></a> repository helpful.
83+
In the full <a href="https://time-series-features.gitbook.io/pyspi/usage/advanced-usage/distributing-calculations-on-a-cluster">documentation </a>, we provide a comprehensive guide on how you can distribute <em>pyspi</em> calculations on a PBS cluster, along with the necessary scripts and commands to get started!</p>
84+
</details>
3185

32-
- [Simple demo](https://time-series-features.gitbook.io/pyspi/usage/walkthrough-tutorials/getting-started-a-simple-demonstration)
33-
- [Tutorial (finance: stock price time series)](https://time-series-features.gitbook.io/pyspi/usage/walkthrough-tutorials/finance-stock-price-time-series)
34-
- [Tutorial (neuroimaging: fMRI time series)](https://time-series-features.gitbook.io/pyspi/usage/walkthrough-tutorials/neuroimaging-fmri-time-series).
86+
<details closed>
87+
<summary>Reduced subsets</summary>
88+
<p>If your dataset is large (containing many processes and/or observations), you can use a pre-configured set of reduced statistics or create your own subsets.
89+
Follow the guide in the <a href="https://time-series-features.gitbook.io/pyspi/usage/advanced-usage/using-a-reduced-spi-set">documentation </a> to learn how you can create your own reduced subsets.</p>
90+
</details>
3591

36-
If you have access to a PBS cluster and are processing MTS with many processes (or are analyzing many MTS), then you may find the [_pyspi_ distribute](https://github.com/DynamicsAndNeuralSystems/pyspi-distribute) repository helpful.
3792

38-
If your dataset is large (containing many processes and/or observations), you can use a pre-configured set of reduced statistics or create your own subsets (cf. the [documentation guide](https://time-series-features.gitbook.io/pyspi/usage/advanced-usage/using-a-reduced-spi-set)).
3993

40-
## Other highly comparative toolboxes
94+
## SPI Descriptions 📋
95+
To access a table with a high-level overview of the _pyspi_ library of SPIs, including their associated identifiers, see the [table of SPIs](https://time-series-features.gitbook.io/pyspi/spis/table-of-spis) in the full documentation.
96+
For detailed descriptions of each SPI, as well as its associated estimators, we provide a full breakdown in the [SPI descriptions](https://time-series-features.gitbook.io/pyspi/spis/spi-descriptions) page of our documentation.
97+
98+
## Documentation
99+
The full documentation is hosted on [GitBooks](https://time-series-features.gitbook.io/pyspi/).
100+
Use the following links to quickly access some of the key sections:
101+
102+
- [Full installation guide](https://time-series-features.gitbook.io/pyspi/installation)
103+
- [Troubleshooting](https://time-series-features.gitbook.io/pyspi/installation/troubleshooting)
104+
- [Alternative installation options](https://time-series-features.gitbook.io/pyspi/installation/alternative-installation-options)
105+
- [Usage guide](https://time-series-features.gitbook.io/pyspi/usage)
106+
- [Distributing _pyspi_ computations](https://time-series-features.gitbook.io/pyspi/usage/advanced-usage/distributing-calculations-on-a-cluster)
107+
- [Table of SPIs and descriptions](https://time-series-features.gitbook.io/pyspi/spis)
108+
- [FAQ](https://time-series-features.gitbook.io/pyspi/usage/faq)
109+
- [API Reference](https://time-series-features.gitbook.io/pyspi/api-reference)
110+
- [Development guide](https://time-series-features.gitbook.io/pyspi/development)
111+
112+
## Contributing to _pyspi_ 👨‍👨‍👦‍👦
113+
Contributions play a vital role in the continual development and enhancement of _pyspi_, a project built and enriched through community collaboration.
114+
If you would like to contribute to _pyspi_, or explore the many ways in which you can participate in the project, please have a look at our
115+
detailed [contribution guidelines](https://time-series-features.gitbook.io/pyspi/development/contributing-to-pyspi) about how to proceed.
116+
In contributing to _pyspi_, all participants are expected to adhere to our [code of conduct](https://time-series-features.gitbook.io/pyspi/development/code-of-conduct).
117+
118+
### SPI Wishlist
119+
We strive to provide the most comprehensive toolkit of SPIs. If you have ideas for new SPIs or suggestions for improvements to existing ones, we are eager to hear from and collaborate with you!
120+
Any pairwise dependence measure, provided it is accompanied by a published research paper, typically falls within the scope for consideration in the
121+
_pyspi_ library.
122+
You can access our SPI wishlist via the [projects tab](https://github.com/DynamicsAndNeuralSystems/pyspi/projects) in this repo to open a request.
123+
124+
## Acknowledgement 👍
125+
126+
If you use this software, please read and cite this article:
127+
128+
- &#x1F4D7; O.M. Cliff, A.G. Bryant, J.T. Lizier, N. Tsuchiya, B.D. Fulcher. [Unifying pairwise interactions in complex dynamics](https://doi.org/10.1038/s43588-023-00519-x), _Nature Computational Science_ (2023).
129+
130+
Note that [preprint](https://arxiv.org/abs/2201.11941) and [free-to-read](https://rdcu.be/dn3JB) versions of this article are available.
131+
132+
<details closed>
133+
<summary>Click here for a BibTex reference:</summary>
134+
135+
```
136+
@article{Cliff2023:UnifyingPairwiseInteractions,
137+
title = {Unifying pairwise interactions in complex dynamics},
138+
volume = {3},
139+
issn = {2662-8457},
140+
url = {https://www.nature.com/articles/s43588-023-00519-x},
141+
doi = {10.1038/s43588-023-00519-x},
142+
number = {10},
143+
journal = {Nature Computational Science},
144+
author = {Cliff, Oliver M. and Bryant, Annie G. and Lizier, Joseph T. and Tsuchiya, Naotsugu and Fulcher, Ben D.},
145+
month = oct,
146+
year = {2023},
147+
pages = {883--893},
148+
}
149+
```
150+
151+
</details>
152+
153+
## Other highly comparative toolboxes 🧰
154+
If you are interested in trying other highly comparative toolboxes like _pyspi_, see the below list:
41155

42156
- [_hctsa_](https://github.com/benfulcher/hctsa), the _highly comparative time-series analysis_ toolkit, computes over 7000 time-series features from univariate time series.
43157
- [_hcga_](https://github.com/barahona-research-group/hcga), a _highly comparative graph analysis_ toolkit, computes several thousands of graph features directly from any given network.
44158

45-
## SPI Wishlist
46159

47-
As _pyspi_ is under active development, we are always open to suggestions for new SPIs to be added via the [projects tab](https://github.com/DynamicsAndNeuralSystems/pyspi/projects) in this repo.
160+
## Our Contributors 🌟
161+
We are thankful for the contributions of each and everyone who has helped make this project better.
162+
Whether you've added a line of code, improved our documentation, or reported an issue, your contributions are greatly appreciated!
163+
Below are some of the leading contributors to _pyspi_:
164+
165+
<a href="https://github.com/DynamicsAndNeuralSystems/pyspi/graphs/contributors">
166+
<img src="https://contrib.rocks/image?repo=DynamicsAndNeuralSystems/pyspi" />
167+
</a>
168+
169+
## License 🧾
170+
_pyspi_ is released under the [GNU General Public License](https://www.gnu.org/licenses/gpl-3.0).
171+

0 commit comments

Comments
 (0)