qdiffusivity 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. qdiffusivity-0.1.0/AUTHORS.md +23 -0
  2. qdiffusivity-0.1.0/CHANGELOG.md +37 -0
  3. qdiffusivity-0.1.0/CODE_OF_CONDUCT.md +136 -0
  4. qdiffusivity-0.1.0/LICENSE +21 -0
  5. qdiffusivity-0.1.0/MANIFEST.in +6 -0
  6. qdiffusivity-0.1.0/PKG-INFO +123 -0
  7. qdiffusivity-0.1.0/README.md +100 -0
  8. qdiffusivity-0.1.0/pyproject.toml +97 -0
  9. qdiffusivity-0.1.0/qdiffusivity/__init__.py +51 -0
  10. qdiffusivity-0.1.0/qdiffusivity/binned.py +614 -0
  11. qdiffusivity-0.1.0/qdiffusivity/data/README.md +17 -0
  12. qdiffusivity-0.1.0/qdiffusivity/data/__init__.py +0 -0
  13. qdiffusivity-0.1.0/qdiffusivity/data/files.py +19 -0
  14. qdiffusivity-0.1.0/qdiffusivity/data/mda.txt +45 -0
  15. qdiffusivity-0.1.0/qdiffusivity/density.py +489 -0
  16. qdiffusivity-0.1.0/qdiffusivity/diffusivity.py +750 -0
  17. qdiffusivity-0.1.0/qdiffusivity/example_api.py +3 -0
  18. qdiffusivity-0.1.0/qdiffusivity/tests/__init__.py +0 -0
  19. qdiffusivity-0.1.0/qdiffusivity/tests/conftest.py +82 -0
  20. qdiffusivity-0.1.0/qdiffusivity/tests/test_binned.py +163 -0
  21. qdiffusivity-0.1.0/qdiffusivity/tests/test_density.py +123 -0
  22. qdiffusivity-0.1.0/qdiffusivity/tests/test_diffusivity.py +227 -0
  23. qdiffusivity-0.1.0/qdiffusivity/tests/test_qdiffusivity.py +8 -0
  24. qdiffusivity-0.1.0/qdiffusivity/tests/utils.py +77 -0
  25. qdiffusivity-0.1.0/qdiffusivity.egg-info/PKG-INFO +123 -0
  26. qdiffusivity-0.1.0/qdiffusivity.egg-info/SOURCES.txt +28 -0
  27. qdiffusivity-0.1.0/qdiffusivity.egg-info/dependency_links.txt +1 -0
  28. qdiffusivity-0.1.0/qdiffusivity.egg-info/requires.txt +10 -0
  29. qdiffusivity-0.1.0/qdiffusivity.egg-info/top_level.txt +1 -0
  30. qdiffusivity-0.1.0/setup.cfg +4 -0
@@ -0,0 +1,23 @@
1
+ # Authors
2
+
3
+ qdiffusivity was created by Shern Ren Tee in 2026.
4
+
5
+
6
+ All contributing authors are listed in this file below.
7
+ The repository history at https://github.com/srtee/qdiffusivity
8
+ and the CHANGELOG show individual code contributions.
9
+
10
+ ## Chronological list of authors
11
+
12
+ <!--
13
+ The rules for this file:
14
+ * Authors are sorted chronologically, earliest to latest
15
+ * Please format it each entry as "Preferred name <GitHub username>"
16
+ * Your preferred name is whatever you wish to go by --
17
+ it does *not* have to be your legal name!
18
+ * Please start a new section for each new year
19
+ * Don't ever delete anything
20
+ -->
21
+
22
+ **2026**
23
+ - Shern Ren Tee <@srtee>
@@ -0,0 +1,37 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ <!--
8
+ The rules for this file:
9
+ * entries are sorted newest-first.
10
+ * summarize sets of changes - don't reproduce every git log comment here.
11
+ * don't ever delete anything.
12
+ * keep the format consistent:
13
+ * do not use tabs but use spaces for formatting
14
+ * 79 char width
15
+ * YYYY-MM-DD date format (following ISO 8601)
16
+ * accompany each entry with github issue/PR number (Issue #xyz)
17
+ -->
18
+
19
+ ## [Unreleased]
20
+
21
+ ### Authors
22
+ <!-- GitHub usernames of contributors to this release -->
23
+
24
+ ### Added
25
+ <!-- New added features -->
26
+
27
+ ### Fixed
28
+ <!-- Bug fixes -->
29
+
30
+ ### Changed
31
+ <!-- Changes in existing functionality -->
32
+
33
+ ### Deprecated
34
+ <!-- Soon-to-be removed features -->
35
+
36
+ ### Removed
37
+ <!-- Removed features -->
@@ -0,0 +1,136 @@
1
+ # Code of conduct
2
+
3
+ The qdiffusivity *Code of Conduct* sets the rules for the behavior of
4
+ every member in the qdiffusivity community so that everyone can
5
+ experience a welcoming, supportive, and productive environment that is
6
+ free from harassment.
7
+
8
+ <!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-generate-toc again -->
9
+ **Table of Contents**
10
+
11
+ - [Code of conduct](#code-of-conduct)
12
+ - [Code of Conduct and Community Guidelines](#code-of-conduct-and-community-guidelines)
13
+ - [Scope](#scope)
14
+ - [Enforcement](#enforcement)
15
+ - [Acknowledgment](#acknowledgment)
16
+
17
+ <!-- markdown-toc end -->
18
+ ## Code of Conduct and Community Guidelines
19
+
20
+ qdiffusivity is part of an engaged and respectful community made up of people from all
21
+ over the world. Your involvement helps us to further our mission and to create
22
+ an open platform that serves a broad range of communities, from research and
23
+ education to industry and beyond. This diversity is one of our biggest
24
+ strengths, but it can also lead to communication issues and conflicts.
25
+ Therefore, we have a few ground rules we ask that our community members adhere
26
+ to.
27
+
28
+ Fundamentally, we are committed to providing a productive,
29
+ harassment-free environment for everyone. Rather than considering this
30
+ code an exhaustive list of things that you can’t do, take it in the
31
+ spirit it is intended - a guide to make it easier to enrich all of us
32
+ and the communities in which we participate.
33
+
34
+ Importantly: as a member of our community, you are also a steward of these
35
+ values. Not all problems need to be resolved via formal processes, and often a
36
+ quick, friendly but clear word on an online forum or in person can help resolve
37
+ a misunderstanding and de-escalate things.
38
+
39
+ By embracing the following principles, guidelines and actions to follow or
40
+ avoid, you will help us make qdiffusivity a welcoming and productive community.
41
+
42
+ 1. **Be friendly and patient**.
43
+
44
+ 2. **Be welcoming**. We strive to be a community that welcomes and supports
45
+ people of all backgrounds and identities. This includes, but is not limited
46
+ to, members of any race, ethnicity, culture, national origin, color,
47
+ immigration status, social and economic class, educational level, sex, sexual
48
+ orientation, gender identity and expression, age, physical appearance, family
49
+ status, political belief, technological or professional choices, academic
50
+ discipline, religion, mental ability, and physical ability.
51
+
52
+ 3. **Be considerate**. Your work will be used by other people, and you in turn
53
+ will depend on the work of others. Any decision you take will affect users
54
+ and colleagues, and you should take those consequences into account when
55
+ making decisions. Remember that we're a world-wide community. You may be
56
+ communicating with someone with a different primary language or cultural
57
+ background.
58
+
59
+ 4. **Be respectful**. Not all of us will agree all the time, but disagreement is
60
+ no excuse for poor behavior or poor manners. We might all experience some
61
+ frustration now and then, but we cannot allow that frustration to turn into a
62
+ personal attack. It’s important to remember that a community where people
63
+ feel uncomfortable or threatened is not a productive one.
64
+
65
+ 5. **Be careful in the words that you choose**. Be kind to others. Do not insult
66
+ or put down other community members. Harassment and other exclusionary
67
+ behavior are not acceptable. This includes, but is not limited to:
68
+ * threats or violent language directed against another person
69
+ * discriminatory jokes and language
70
+ * posting sexually explicit or violent material
71
+ * posting (or threatening to post) other people's personally identifying
72
+ information ("doxing")
73
+ * personal insults, especially those using racist or sexist terms
74
+ * unwelcome sexual attention
75
+ * advocating for, or encouraging, any of the above behavior
76
+ * repeated harassment of others. In general, if someone asks you to stop,
77
+ then stop
78
+
79
+ 6. **Moderate your expectations**. Many in our community volunteer their time.
80
+ They are probably not purposefully ignoring issues, refusing to engage in
81
+ discussion, avoiding features, etc. but often just unavailable.
82
+
83
+ 7. **When we disagree, try to understand why**. Disagreements, both social and
84
+ technical, happen all the time and qdiffusivity is no exception. It is important
85
+ that we resolve disagreements and differing views constructively. Remember
86
+ that we’re different. The strength of qdiffusivity comes from its varied community
87
+ that includes people from a wide range of backgrounds. Different people have
88
+ different perspectives on issues. Being unable to understand why someone
89
+ holds a viewpoint doesn’t mean they’re wrong. Don’t forget that it is human
90
+ to err and blaming each other doesn’t get us anywhere. Instead, focus on
91
+ helping to resolve issues and learning from mistakes.
92
+
93
+ 8. **A simple apology can go a long way**. It can often de-escalate a situation,
94
+ and telling someone that you are sorry is act of empathy that doesn’t
95
+ automatically imply an admission of guilt.
96
+
97
+
98
+ ## Scope
99
+
100
+ This Code of Conduct applies both within project spaces and in public spaces
101
+ when an individual is representing the project or its community. Examples of
102
+ representing a project or community include using an official project e-mail
103
+ address, posting via an official social media account, or acting as an
104
+ appointed representative at an online or offline event. Representation of a
105
+ project may be further defined and clarified by project maintainers.
106
+
107
+ ## Enforcement
108
+
109
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
110
+ reported by contacting the project team at 'shernren@gmail.com'. The project team will
111
+ review and investigate all complaints, and will respond in a way that it deems
112
+ appropriate to the circumstances. The project team is obligated to maintain
113
+ confidentiality with regard to the reporter of an incident. Further details of
114
+ specific enforcement policies may be posted separately.
115
+
116
+ Project maintainers who do not follow or enforce the Code of Conduct in good
117
+ faith may face temporary or permanent repercussions as determined by other
118
+ members of the project's leadership.
119
+
120
+
121
+ ## Acknowledgment
122
+
123
+ Original text was adapted from
124
+ the
125
+ [*Speak Up!*](http://web.archive.org/web/20141109123859/http://speakup.io/coc.html),
126
+ [*Django*](https://www.djangoproject.com/conduct),
127
+ [*Contributor Covenant*](http://contributor-covenant.org/),
128
+ [*Jupyter*](https://github.com/jupyter/governance/blob/master/conduct/code_of_conduct.md),
129
+ [*MolSSI*](https://github.com/MolSSI/cookiecutter-cms/blob/master/%7B%7Bcookiecutter.repo_name%7D%7D/CODE_OF_CONDUCT.md),
130
+ and [*MDAnalysis*](https://github.com/MDAnalysis/mdanalysis/blob/develop/CODE_OF_CONDUCT.md) projects,
131
+ modified by qdiffusivity.
132
+ We are grateful to those projects for contributing these
133
+ materials under open licensing terms for us to easily reuse.
134
+
135
+ All content on this page is licensed under a [*Creative Commons
136
+ Attribution*](http://creativecommons.org/licenses/by/3.0/) license.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026, Shern Ren Tee
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,6 @@
1
+ include LICENSE
2
+ include MANIFEST.in
3
+ include AUTHORS.md CHANGELOG.md CODE_OF_CONDUCT.md README.md
4
+
5
+ graft qdiffusivity
6
+ global-exclude *.py[cod] __pycache__ *.so
@@ -0,0 +1,123 @@
1
+ Metadata-Version: 2.4
2
+ Name: qdiffusivity
3
+ Version: 0.1.0
4
+ Summary: Quantile-based estimation of local diffusivities in molecular dynamics simulations of nanoconfined liquids
5
+ Author-email: Shern Ren Tee <shernren@gmail.com>
6
+ Maintainer-email: Shern Ren Tee <shernren@gmail.com>
7
+ License-Expression: MIT
8
+ Keywords: molecular simulations
9
+ Classifier: Programming Language :: Python :: 3
10
+ Requires-Python: >=3.9
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ License-File: AUTHORS.md
14
+ Requires-Dist: MDAnalysis>=2.0.0
15
+ Provides-Extra: test
16
+ Requires-Dist: pytest>=6.0; extra == "test"
17
+ Requires-Dist: pytest-xdist>=2.5; extra == "test"
18
+ Requires-Dist: pytest-cov>=3.0; extra == "test"
19
+ Provides-Extra: doc
20
+ Requires-Dist: sphinx; extra == "doc"
21
+ Requires-Dist: sphinx_rtd_theme; extra == "doc"
22
+ Dynamic: license-file
23
+
24
+ qdiffusivity
25
+ ==============================
26
+ [//]: # (Badges)
27
+
28
+ | **Latest release** | [![Last release tag][badge_release]][url_latest_release] ![GitHub commits since latest release (by date) for a branch][badge_commits_since] [![Documentation Status][badge_docs]][url_docs]|
29
+ | :----------------- | :------- |
30
+ | **Status** | [![GH Actions Status][badge_actions]][url_actions] [![codecov][badge_codecov]][url_codecov] |
31
+ | **Community** | [![License: MIT License][badge_license]][url_license] [![Powered by MDAnalysis][badge_mda]][url_mda]|
32
+
33
+ [badge_actions]: https://github.com/srtee/qdiffusivity/actions/workflows/gh-ci.yaml/badge.svg
34
+ [badge_codecov]: https://codecov.io/gh/srtee/qdiffusivity/branch/main/graph/badge.svg
35
+ [badge_commits_since]: https://img.shields.io/github/commits-since/srtee/qdiffusivity/latest
36
+ [badge_docs]: https://readthedocs.org/projects/qdiffusivity/badge/?version=latest
37
+ [badge_license]: https://img.shields.io/badge/License-MIT-yellow.svg
38
+ [badge_mda]: https://img.shields.io/badge/powered%20by-MDAnalysis-orange.svg?logoWidth=16&logo=data:image/x-icon;base64,AAABAAEAEBAAAAEAIAAoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJD+XwCY/fEAkf3uAJf97wGT/a+HfHaoiIWE7n9/f+6Hh4fvgICAjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT/yYAlP//AJ///wCg//8JjvOchXly1oaGhv+Ghob/j4+P/39/f3IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJH8aQCY/8wAkv2kfY+elJ6al/yVlZX7iIiI8H9/f7h/f38UAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38egYF/noqAebF8gYaagnx3oFpUUtZpaWr/WFhY8zo6OmT///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAn46Ojv+Hh4b/jouJ/4iGhfcAAADnAAAA/wAAAP8AAADIAAAAAwCj/zIAnf2VAJD/PAAAAAAAAAAAAAAAAICAgNGHh4f/gICA/4SEhP+Xl5f/AwMD/wAAAP8AAAD/AAAA/wAAAB8Aov9/ALr//wCS/Z0AAAAAAAAAAAAAAACBgYGOjo6O/4mJif+Pj4//iYmJ/wAAAOAAAAD+AAAA/wAAAP8AAABhAP7+FgCi/38Axf4fAAAAAAAAAAAAAAAAiIiID4GBgYKCgoKogoB+fYSEgZhgYGDZXl5e/m9vb/9ISEjpEBAQxw8AAFQAAAAAAAAANQAAADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjo6Mb5iYmP+cnJz/jY2N95CQkO4pKSn/AAAA7gAAAP0AAAD7AAAAhgAAAAEAAAAAAAAAAACL/gsAkv2uAJX/QQAAAAB9fX3egoKC/4CAgP+NjY3/c3Nz+wAAAP8AAAD/AAAA/wAAAPUAAAAcAAAAAAAAAAAAnP4NAJL9rgCR/0YAAAAAfX19w4ODg/98fHz/i4uL/4qKivwAAAD/AAAA/wAAAP8AAAD1AAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALGxsVyqqqr/mpqa/6mpqf9KSUn/AAAA5QAAAPkAAAD5AAAAhQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkUFBSuZ2dn/3V1df8uLi7bAAAATgBGfyQAAAA2AAAAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAADoAAAA/wAAAP8AAAD/AAAAWgC3/2AAnv3eAJ/+dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9AAAA/wAAAP8AAAD/AAAA/wAKDzEAnP3WAKn//wCS/OgAf/8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAANwAAADtAAAA7QAAAMAAABUMAJn9gwCe/e0Aj/2LAP//AQAAAAAAAAAA
39
+ [badge_release]: https://img.shields.io/github/release-pre/srtee/qdiffusivity.svg
40
+ [url_actions]: https://github.com/srtee/qdiffusivity/actions?query=branch%3Amain+workflow%3Agh-ci
41
+ [url_codecov]: https://codecov.io/gh/srtee/qdiffusivity/branch/main
42
+ [url_docs]: https://qdiffusivity.readthedocs.io/en/latest/?badge=latest
43
+ [url_latest_release]: https://github.com/srtee/qdiffusivity/releases
44
+ [url_license]: https://opensource.org/licenses/MIT
45
+ [url_mda]: https://www.mdanalysis.org
46
+
47
+ Quantile-based estimation of local diffusivities in molecular dynamics simulations of nanoconfined liquids
48
+
49
+ qdiffusivity is bound by a [Code of Conduct](https://github.com/srtee/qdiffusivity/blob/main/CODE_OF_CONDUCT.md).
50
+
51
+ ### Installation
52
+
53
+ To build qdiffusivity from source,
54
+ we highly recommend using virtual environments.
55
+ If possible, we strongly recommend that you use
56
+ [Anaconda](https://docs.conda.io/en/latest/) as your package manager.
57
+ Below we provide instructions both for `conda` and
58
+ for `pip`.
59
+
60
+ #### With conda
61
+
62
+ Ensure that you have [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html) installed.
63
+
64
+ Create a virtual environment and activate it:
65
+
66
+ ```
67
+ conda create --name qdiffusivity
68
+ conda activate qdiffusivity
69
+ ```
70
+
71
+ Install the development and documentation dependencies:
72
+
73
+ ```
74
+ conda env update --name qdiffusivity --file devtools/conda-envs/test_env.yaml
75
+ conda env update --name qdiffusivity --file docs/requirements.yaml
76
+ ```
77
+
78
+ Build this package from source:
79
+
80
+ ```
81
+ pip install -e .
82
+ ```
83
+
84
+ If you want to update your dependencies (which can be risky!), run:
85
+
86
+ ```
87
+ conda update --all
88
+ ```
89
+
90
+ And when you are finished, you can exit the virtual environment with:
91
+
92
+ ```
93
+ conda deactivate
94
+ ```
95
+
96
+ #### With pip
97
+
98
+ To build the package from source, run:
99
+
100
+ ```
101
+ pip install .
102
+ ```
103
+
104
+ If you want to create a development environment, install
105
+ the dependencies required for tests and docs with:
106
+
107
+ ```
108
+ pip install ".[test,doc]"
109
+ ```
110
+
111
+ ### Copyright
112
+
113
+ The qdiffusivity source code is hosted at https://github.com/srtee/qdiffusivity
114
+ and is available under the [MIT License](https://opensource.org/licenses/MIT) (see the file [LICENSE](https://github.com/srtee/qdiffusivity/blob/main/LICENSE)).
115
+
116
+ Copyright (c) 2026, Shern Ren Tee
117
+
118
+
119
+ #### Acknowledgements
120
+
121
+ Project based on the
122
+ [MDAnalysis Cookiecutter](https://github.com/MDAnalysis/cookiecutter-mda) version 0.1.
123
+ Please cite [MDAnalysis](https://github.com/MDAnalysis/mdanalysis#citation) when using qdiffusivity in published work.
@@ -0,0 +1,100 @@
1
+ qdiffusivity
2
+ ==============================
3
+ [//]: # (Badges)
4
+
5
+ | **Latest release** | [![Last release tag][badge_release]][url_latest_release] ![GitHub commits since latest release (by date) for a branch][badge_commits_since] [![Documentation Status][badge_docs]][url_docs]|
6
+ | :----------------- | :------- |
7
+ | **Status** | [![GH Actions Status][badge_actions]][url_actions] [![codecov][badge_codecov]][url_codecov] |
8
+ | **Community** | [![License: MIT License][badge_license]][url_license] [![Powered by MDAnalysis][badge_mda]][url_mda]|
9
+
10
+ [badge_actions]: https://github.com/srtee/qdiffusivity/actions/workflows/gh-ci.yaml/badge.svg
11
+ [badge_codecov]: https://codecov.io/gh/srtee/qdiffusivity/branch/main/graph/badge.svg
12
+ [badge_commits_since]: https://img.shields.io/github/commits-since/srtee/qdiffusivity/latest
13
+ [badge_docs]: https://readthedocs.org/projects/qdiffusivity/badge/?version=latest
14
+ [badge_license]: https://img.shields.io/badge/License-MIT-yellow.svg
15
+ [badge_mda]: https://img.shields.io/badge/powered%20by-MDAnalysis-orange.svg?logoWidth=16&logo=data:image/x-icon;base64,AAABAAEAEBAAAAEAIAAoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJD+XwCY/fEAkf3uAJf97wGT/a+HfHaoiIWE7n9/f+6Hh4fvgICAjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT/yYAlP//AJ///wCg//8JjvOchXly1oaGhv+Ghob/j4+P/39/f3IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJH8aQCY/8wAkv2kfY+elJ6al/yVlZX7iIiI8H9/f7h/f38UAAAAAAAAAAAAAAAAAAAAAAAAAAB/f38egYF/noqAebF8gYaagnx3oFpUUtZpaWr/WFhY8zo6OmT///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAn46Ojv+Hh4b/jouJ/4iGhfcAAADnAAAA/wAAAP8AAADIAAAAAwCj/zIAnf2VAJD/PAAAAAAAAAAAAAAAAICAgNGHh4f/gICA/4SEhP+Xl5f/AwMD/wAAAP8AAAD/AAAA/wAAAB8Aov9/ALr//wCS/Z0AAAAAAAAAAAAAAACBgYGOjo6O/4mJif+Pj4//iYmJ/wAAAOAAAAD+AAAA/wAAAP8AAABhAP7+FgCi/38Axf4fAAAAAAAAAAAAAAAAiIiID4GBgYKCgoKogoB+fYSEgZhgYGDZXl5e/m9vb/9ISEjpEBAQxw8AAFQAAAAAAAAANQAAADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjo6Mb5iYmP+cnJz/jY2N95CQkO4pKSn/AAAA7gAAAP0AAAD7AAAAhgAAAAEAAAAAAAAAAACL/gsAkv2uAJX/QQAAAAB9fX3egoKC/4CAgP+NjY3/c3Nz+wAAAP8AAAD/AAAA/wAAAPUAAAAcAAAAAAAAAAAAnP4NAJL9rgCR/0YAAAAAfX19w4ODg/98fHz/i4uL/4qKivwAAAD/AAAA/wAAAP8AAAD1AAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALGxsVyqqqr/mpqa/6mpqf9KSUn/AAAA5QAAAPkAAAD5AAAAhQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkUFBSuZ2dn/3V1df8uLi7bAAAATgBGfyQAAAA2AAAAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAADoAAAA/wAAAP8AAAD/AAAAWgC3/2AAnv3eAJ/+dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9AAAA/wAAAP8AAAD/AAAA/wAKDzEAnP3WAKn//wCS/OgAf/8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAANwAAADtAAAA7QAAAMAAABUMAJn9gwCe/e0Aj/2LAP//AQAAAAAAAAAA
16
+ [badge_release]: https://img.shields.io/github/release-pre/srtee/qdiffusivity.svg
17
+ [url_actions]: https://github.com/srtee/qdiffusivity/actions?query=branch%3Amain+workflow%3Agh-ci
18
+ [url_codecov]: https://codecov.io/gh/srtee/qdiffusivity/branch/main
19
+ [url_docs]: https://qdiffusivity.readthedocs.io/en/latest/?badge=latest
20
+ [url_latest_release]: https://github.com/srtee/qdiffusivity/releases
21
+ [url_license]: https://opensource.org/licenses/MIT
22
+ [url_mda]: https://www.mdanalysis.org
23
+
24
+ Quantile-based estimation of local diffusivities in molecular dynamics simulations of nanoconfined liquids
25
+
26
+ qdiffusivity is bound by a [Code of Conduct](https://github.com/srtee/qdiffusivity/blob/main/CODE_OF_CONDUCT.md).
27
+
28
+ ### Installation
29
+
30
+ To build qdiffusivity from source,
31
+ we highly recommend using virtual environments.
32
+ If possible, we strongly recommend that you use
33
+ [Anaconda](https://docs.conda.io/en/latest/) as your package manager.
34
+ Below we provide instructions both for `conda` and
35
+ for `pip`.
36
+
37
+ #### With conda
38
+
39
+ Ensure that you have [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html) installed.
40
+
41
+ Create a virtual environment and activate it:
42
+
43
+ ```
44
+ conda create --name qdiffusivity
45
+ conda activate qdiffusivity
46
+ ```
47
+
48
+ Install the development and documentation dependencies:
49
+
50
+ ```
51
+ conda env update --name qdiffusivity --file devtools/conda-envs/test_env.yaml
52
+ conda env update --name qdiffusivity --file docs/requirements.yaml
53
+ ```
54
+
55
+ Build this package from source:
56
+
57
+ ```
58
+ pip install -e .
59
+ ```
60
+
61
+ If you want to update your dependencies (which can be risky!), run:
62
+
63
+ ```
64
+ conda update --all
65
+ ```
66
+
67
+ And when you are finished, you can exit the virtual environment with:
68
+
69
+ ```
70
+ conda deactivate
71
+ ```
72
+
73
+ #### With pip
74
+
75
+ To build the package from source, run:
76
+
77
+ ```
78
+ pip install .
79
+ ```
80
+
81
+ If you want to create a development environment, install
82
+ the dependencies required for tests and docs with:
83
+
84
+ ```
85
+ pip install ".[test,doc]"
86
+ ```
87
+
88
+ ### Copyright
89
+
90
+ The qdiffusivity source code is hosted at https://github.com/srtee/qdiffusivity
91
+ and is available under the [MIT License](https://opensource.org/licenses/MIT) (see the file [LICENSE](https://github.com/srtee/qdiffusivity/blob/main/LICENSE)).
92
+
93
+ Copyright (c) 2026, Shern Ren Tee
94
+
95
+
96
+ #### Acknowledgements
97
+
98
+ Project based on the
99
+ [MDAnalysis Cookiecutter](https://github.com/MDAnalysis/cookiecutter-mda) version 0.1.
100
+ Please cite [MDAnalysis](https://github.com/MDAnalysis/mdanalysis#citation) when using qdiffusivity in published work.
@@ -0,0 +1,97 @@
1
+ [build-system]
2
+ requires = [
3
+ "setuptools >=77",
4
+ "versioningit",
5
+ ]
6
+ build-backend = "setuptools.build_meta"
7
+
8
+ [project]
9
+ name = "qdiffusivity"
10
+ description = "Quantile-based estimation of local diffusivities in molecular dynamics simulations of nanoconfined liquids"
11
+ license = "MIT"
12
+ license-files = ["LICENSE", "AUTHORS.md"]
13
+
14
+ authors = [
15
+ {name = "Shern Ren Tee", email = "shernren@gmail.com"},
16
+ ]
17
+ maintainers = [
18
+ {name = "Shern Ren Tee", email = "shernren@gmail.com"},
19
+ ]
20
+ readme = "README.md"
21
+ requires-python = ">=3.9"
22
+ dependencies = [
23
+ "MDAnalysis>=2.0.0",
24
+ ]
25
+ keywords = [
26
+ "molecular simulations",
27
+ ]
28
+ classifiers = [
29
+ "Programming Language :: Python :: 3",
30
+ ]
31
+ dynamic = [
32
+ "version",
33
+ ]
34
+
35
+ [project.optional-dependencies]
36
+ test = [
37
+ "pytest>=6.0",
38
+ "pytest-xdist>=2.5",
39
+ "pytest-cov>=3.0",
40
+ ]
41
+ doc = [
42
+ "sphinx",
43
+ "sphinx_rtd_theme",
44
+ ]
45
+
46
+ # [project.urls]
47
+ # source = "https://github.com/srtee/qdiffusivity"
48
+ # documentation = "https://qdiffusivity.readthedocs.io"
49
+
50
+ [tool.setuptools.packages.find]
51
+ include = ["qdiffusivity"]
52
+
53
+ [tool.pytest.ini_options]
54
+ minversion = "6.0"
55
+ testpaths = [
56
+ "qdiffusivity/tests",
57
+ ]
58
+
59
+ [tool.black]
60
+ line-length = 80
61
+
62
+ [tool.versioningit]
63
+ default-version = "1+unknown"
64
+
65
+ [tool.versioningit.vcs]
66
+ method = "git"
67
+ # the below line expects tags to look like '1.0.2'.
68
+ # if prefixing with a v, e.g. 'v1.0.2', change it to ["v*"]
69
+ match = ["*"]
70
+
71
+ [tool.versioningit.format]
72
+ distance = "{base_version}+{distance}.{vcs}{rev}"
73
+ dirty = "{base_version}+{distance}.{vcs}{rev}.dirty"
74
+ distance-dirty = "{base_version}+{distance}.{vcs}{rev}.dirty"
75
+
76
+ [tool.coverage.run]
77
+ omit = [
78
+ # Omit the tests
79
+ "*/tests/*",
80
+ ]
81
+
82
+ [tool.coverage.report]
83
+ exclude_also = [
84
+ "if TYPE_CHECKING:",
85
+ ]
86
+
87
+ [tool.isort]
88
+ multi_line_output = 3
89
+ include_trailing_comma = true
90
+ force_grid_wrap = 0
91
+ use_parentheses = true
92
+ line_length = 80
93
+
94
+ [tool.yapf]
95
+ COLUMN_LIMIT = 80
96
+ INDENT_WIDTH = 4
97
+ USE_TABS = false
@@ -0,0 +1,51 @@
1
+ """
2
+ qdiffusivity
3
+ Quantile-based estimation of local diffusivities in molecular dynamics
4
+ simulations of nanoconfined liquids
5
+ """
6
+
7
+ # Add imports here
8
+ from importlib.metadata import version
9
+
10
+ from .binned import (
11
+ LocalDiffusivityQBinned,
12
+ TransverseDensityQBinned,
13
+ cic_assign,
14
+ resolve_bins,
15
+ )
16
+ from .density import (
17
+ TransverseDensityQKDE,
18
+ epanechnikov_kernel,
19
+ kde_1d,
20
+ select_bandwidth,
21
+ sheather_jones_bw,
22
+ silverman_bw,
23
+ )
24
+ from .diffusivity import (
25
+ LocalDiffusivityQKDE,
26
+ build_cdf,
27
+ gaussian_kernel,
28
+ kde_estimate,
29
+ select_diff_bandwidth,
30
+ )
31
+
32
+ __version__ = version("qdiffusivity")
33
+
34
+ __all__ = [
35
+ "TransverseDensityQBinned",
36
+ "TransverseDensityQKDE",
37
+ "LocalDiffusivityQBinned",
38
+ "LocalDiffusivityQKDE",
39
+ "build_cdf",
40
+ "cic_assign",
41
+ "epanechnikov_kernel",
42
+ "gaussian_kernel",
43
+ "kde_1d",
44
+ "kde_estimate",
45
+ "resolve_bins",
46
+ "select_bandwidth",
47
+ "select_diff_bandwidth",
48
+ "sheather_jones_bw",
49
+ "silverman_bw",
50
+ "__version__",
51
+ ]