Skip to content

Commit

Permalink
Merge pull request #3 from gboeing/update
Browse files Browse the repository at this point in the history
update to v0.3.0
  • Loading branch information
gboeing authored Dec 30, 2020
2 parents e793e43 + 76f49d6 commit bbc2071
Show file tree
Hide file tree
Showing 24 changed files with 1,062 additions and 587 deletions.
39 changes: 39 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
name: Bug report
about: Report a bug in Pynamical's code
title: ''
labels: bug
assignees: ''

---

**Read these instructions carefully**

Please don't use the issue tracker to ask "how-to" or usage questions. If asked here, they will be closed automatically. Instead, ask "how-to" and usage questions on [StackOverflow](https://stackoverflow.com/).

Bug reports are for reporting a bug you have found in Pynamical's codebase. Your issue will be closed automatically if you don't provide the requested information that we need in order to help you. Before you proceed, review the contributing guidelines in this repo's CONTRIBUTING.md file. If you installed Pynamical via conda and are experiencing installation problems, please open an issue at its [feedstock](https://github.com/conda-forge/pynamical-feedstock/issues). If you've found a problem in Pynamical itself, first search the open/closed issues and StackOverflow to see if the problem has already been noted. If it hasn't, fill in the bug reporting template below. We need this information to assist you:

**Problem description**
- What did you do?
- What did you expect to happen?
- And what actually happened instead?

**Environment information**
- What operating system are you using?
- What Python version are you using?
- What Pynamical version are you using?
- Provide a complete list of your environment's packages and their versions (for example, run `conda list` or `pip list` then paste the output between the two "details" tags below)

<details>
# paste the output of your Python packages/versions here between these two "details" tags

</details>

**Provide a complete minimal reproducible example**

Your example code snippet here must be *minimal* so it doesn't contain extraneous code unrelated to your specific problem and it must be *complete* so we can independently run it from top to bottom by copying/pasting it into a Python interpreter. That means all imports and all variables must be defined. If you're unsure how to create a good reproducible example, read [this guide](https://stackoverflow.com/help/minimal-reproducible-example). Do not post a screenshot of your code or error message: provide it as text.

```python
# your code goes here

```
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
blank_issues_enabled: false
30 changes: 30 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
name: Feature proposal
about: Propose an enhancement before opening a pull request to add it
title: ''
labels: enhancement
assignees: ''

---

**Read these instructions carefully**

Please don't use the issue tracker to ask "how-to" or usage questions. If asked here, they will be closed automatically. Instead, ask "how-to" and usage questions on [StackOverflow](https://stackoverflow.com/).

Feature requests are for proposing an enhancement to Pynamical before opening a pull request to add your proposed functionality to the codebase. Your issue will be closed automatically if you don't provide the requested information that we need below. Before you proceed, review the contributing guidelines in this repo's CONTRIBUTING.md file.

**Is your feature proposal related to a problem?**

A clear and concise description of what the problem is.

**Describe the solution you'd like to propose**

A clear and concise description of what you want to change in Pynamical and how you plan to implement it.

**Describe alternatives you've considered**

A clear and concise description of any alternative solutions or features you've considered.

**Additional context**

Provide a complete minimal working example of code to demonstrate your use case. Add any additional code snippets, context, or screenshots about the feature proposal to demonstrate its importance and feasibility.
9 changes: 9 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
**Read these instructions carefully**

Before you proceed, review the contributing guidelines in this repo's CONTRIBUTING.md file, especially the sections on project coding standards and tests.

In this pull request, please include:

- a reference to related issue(s)
- a description of the changes proposed in the pull request
- an example code snippet illustrating usage of the new functionality
69 changes: 69 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: tests

on:
push:
branches: [master]
pull_request:
branches: [master]

jobs:

build:

name: Python ${{ matrix.python-version }} ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
python-version: ['3.6', '3.7', '3.8', '3.9']

defaults:
run:
shell: bash -l {0}

steps:

- name: Checkout repo
uses: actions/checkout@v2

- name: Cache conda
uses: actions/cache@v2
env:
CACHE_NUMBER: 0
with:
path: ~/conda_pkgs_dir
key: ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-${{ hashFiles('tests/environment-dev.yml') }}

- name: Setup conda environment
uses: conda-incubator/setup-miniconda@v2
with:
use-only-tar-bz2: true # required for caching
show-channel-urls: true
channel-priority: strict
activate-environment: pynamical-dev
environment-file: tests/environment-dev.yml

- name: Install pynamical
run: |
python setup.py install
conda list
conda info --all
- name: Lint code
run: |
isort . --check-only
black . --line-length 100 --check --diff
flake8 .
pydocstyle .
- name: Test docs
run: make -C ./docs html

- name: Test code
run: |
coverage run --source ./pynamical --module pytest --verbose
coverage xml -i
coverage report -m
- name: Upload coverage report
uses: codecov/codecov-action@v1
29 changes: 0 additions & 29 deletions .travis.yml

This file was deleted.

31 changes: 21 additions & 10 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,32 @@
Thanks for using pynamical and for considering contributing to it!
# Pynamical contributing guidelines

Thanks for using Pynamical and for considering contributing to it by opening an issue or pull request.

#### If you have a "how-to" or usage question rather than a bug report or new feature proposal:

- please ask your question on [StackOverflow](https://stackoverflow.com/search?q=pynamical)

#### If you're having an installation problem:

- make sure you've followed the installation instructions in the [documentation](https://pynamical.readthedocs.io/)
- if you installed Pynamical via conda-forge, please open an issue at its [feedstock](https://github.com/conda-forge/pynamical-feedstock/issues)

#### If you've found a bug:

- read the error message and [documentation](https://pynamical.readthedocs.io/)
- search through the [open issues](https://github.com/gboeing/pynamical/issues?q=is%3Aopen+is%3Aissue) and [closed issues](https://github.com/gboeing/pynamical/issues?q=is%3Aissue+is%3Aclosed) first
- if the problem is with a dependency of this project, open an issue on the dependency's repo
- if the problem is with pynamical and you can fix it simply, please submit a PR
- if the problem persists, please open an issue in the [issue tracker](https://github.com/gboeing/pynamical/issues) filling out all sections of the template, including a minimal working example to reproduce the problem
- search through the [open issues](https://github.com/gboeing/pynamical/issues?q=is%3Aopen+is%3Aissue) and [closed issues](https://github.com/gboeing/pynamical/issues?q=is%3Aissue+is%3Aclosed) to see if it has already been reported
- if the problem is with a dependency of this project, open an issue in the dependency's repo
- if the problem is with Pynamical and you can fix it simply, please open a pull request
- if the problem persists, please open an issue in the [issue tracker](https://github.com/gboeing/pynamical/issues) filling out all sections of the template, including a minimal working example so others can independently and completely reproduce the problem

#### If you have a feature proposal or want to contribute:

- post your proposal on the [issue tracker](https://github.com/gboeing/pynamical/issues) so we can review it together (some proposals may not be a good fit for the project)
- fork the repo, make your change (adhering to pynamical's existing coding, commenting, and docstring styles), [test it](https://github.com/gboeing/pynamical/tree/master/tests), and submit a PR
- fork the repo, make your change, [test it](./tests), and submit a PR
- respond to code review

#### If this is a general/usage question (rather than a bug report or proposed PR):

- please ask your question on [StackOverflow](https://stackoverflow.com/search?q=pynamical)
- adhere to the following project standards
- `black` code style with max line length of 100
- `isort` sorted imports
- `numpy` style docstrings

Every piece of software is a work in progress. This project is the result of many hours of work contributed freely by myself and the many people that build the projects it depends on. Thank you for contributing!
2 changes: 1 addition & 1 deletion LICENSE.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License (MIT)

Copyright (c) 2020 Geoff Boeing https://geoffboeing.com/
Copyright (c) 2015-2021 Geoff Boeing https://geoffboeing.com/

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
15 changes: 5 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,22 @@

**Python package for modeling, simulating, visualizing, and animating discrete nonlinear dynamical systems and chaos**

pynamical uses pandas, numpy, and numba for fast simulation, and matplotlib for visualizations and animations to explore system behavior. Compatible with Python 2 and 3.
Pynamical uses pandas, numpy, and numba for fast simulation, and matplotlib for visualizations and animations to explore system behavior.

Pynamical comes packaged with the logistic map, the Singer map, and the cubic map predefined. The models may be run with a range of parameter values over a set of time steps, and the resulting numerical output is returned as a pandas DataFrame. Pynamical can then visualize this output in various ways, including with bifurcation diagrams, two-dimensional phase diagrams, three-dimensional phase diagrams, and cobweb plots.

You can read/cite the journal article about pynamical: Boeing, G. 2016. "[Visual Analysis of Nonlinear Dynamical Systems: Chaos, Fractals, Self-Similarity and the Limits of Prediction](https://geoffboeing.com/publications/nonlinear-chaos-fractals-prediction/)." *Systems*, 4 (4), 37. doi:10.3390/systems4040037.
**Citation info**: Boeing, G. 2016. "[Visual Analysis of Nonlinear Dynamical Systems: Chaos, Fractals, Self-Similarity and the Limits of Prediction](https://geoffboeing.com/publications/nonlinear-chaos-fractals-prediction/)." *Systems*, 4 (4), 37. doi:10.3390/systems4040037.

## Install:

You can install pynamical with [conda](https://anaconda.org/conda-forge/pynamical):

```
conda install -c conda-forge pynamical
conda config --prepend channels conda-forge
conda create -n pynamical --strict-channel-priority jupyterlab pynamical
```

Alternatively, you can run pynamical + Jupyter directly from this
[docker container](https://hub.docker.com/r/gboeing/pynamical),
or you can install it with pip:

```
pip install pynamical
```
Alternatively, you can run pynamical + Jupyter directly from its [Docker container](https://hub.docker.com/r/gboeing/pynamical), or you can install it with pip.

## Documentation:

Expand Down
6 changes: 6 additions & 0 deletions codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
coverage:
status:
project:
default:
target: auto # compare against coverage from the base commit
threshold: 0.1% # allow coverage to drop by X% and still pass
Loading

0 comments on commit bbc2071

Please sign in to comment.