scisort
Sort files in research project folders in a scientific order
Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 2 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.6%) to scientific vocabulary
Keywords
Repository
Sort files in research project folders in a scientific order
Basic Info
Statistics
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
- Releases: 4
Topics
Metadata Files
README.md
Scisort - Sort files in research projects
Scisort is a Python package for sorting files in research projects and scientific (data) repositories. Files and folders are sorted in such a way that inspecting folders in research projects is more intuitive. See the philosophy of scisort to understand the sorting algorithm.
Since scisort is a low-level API, most researchers, developers, and data
scientists may be more interested in scitree.
Scitree is a smart recursive directory listing program that makes use of scisort.
Philosophy of scisort
Philosophy of scisort and scitree:
- Read the README first, therefore I'm on top
- Before I install or use the content, I open the LICENSE.
- Files first, folders second
- Numbered files are naturally sorted
- I love intuitive and reproducible project structures
- Follow the order of execution where possible
- I ignore, what git ignores*
* Only for scitree.
For more information about the structure, see scisort/scisort/keygen.py.
Installation
Scisort requires Python 3.6 or later.
sh
pip install scisort
Getting started
Traditional sorting
Consider the following project folder structure. It's a mixture of files and folders. The folder is sorted on the file or folder name. Some reasons why this sort is not intuitive:
python
files = ['LICENSE.txt',
'README.md',
'data',
'data/Bos_2018.csv',
'jobs.sh',
'output',
'output/simulation',
'output/simulation/Bos_2018',
'output/simulation/Bos_2018/descriptives',
'output/simulation/Bos_2018/descriptives/data_stats_Bos_2018.json',
'output/simulation/Bos_2018/descriptives/wordcloud_Bos_2018.png',
'output/simulation/Bos_2018/descriptives/wordcloud_irrelevant_Bos_2018.png',
'output/simulation/Bos_2018/descriptives/wordcloud_relevant_Bos_2018.png',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_0.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_1640.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_3154.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_3518.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_3519.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_3721.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_4612.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_4699.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_559.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_5673.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_6.json',
'output/simulation/Bos_2018/plot_recall_sim_Bos_2018.png',
'output/simulation/Bos_2018/state_files',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_0.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_1640.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_3154.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_3518.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_3519.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_3721.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_4612.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_4699.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_559.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_5673.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_6.asreview',
'output/tables',
'output/tables/data_descriptives.csv',
'output/tables/data_descriptives.xlsx',
'output/tables/data_metrics.csv',
'output/tables/data_metrics.xlsx',
'scripts',
'scripts/get_plot.py',
'scripts/merge_descriptives.py',
'scripts/merge_metrics.py']
The files and folders are real research output created with ASReview-makita
(see examples).
Scisort sorting
Scisort integrates with Python's sorted by supplying the sort key.
```python from scisort import scisort_keygen
sorted(files, key=scisort_keygen()) ```
python
['README.md',
'LICENSE.txt',
'jobs.sh',
'data',
'data/Bos_2018.csv',
'scripts',
'scripts/get_plot.py',
'scripts/merge_descriptives.py',
'scripts/merge_metrics.py',
'output',
'output/simulation',
'output/simulation/Bos_2018',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_0.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_6.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_559.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_1640.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_3154.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_3518.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_3519.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_3721.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_4612.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_4699.json',
'output/simulation/Bos_2018/metrics_sim_Bos_2018_5673.json',
'output/simulation/Bos_2018/plot_recall_sim_Bos_2018.png',
'output/simulation/Bos_2018/descriptives',
'output/simulation/Bos_2018/descriptives/wordcloud_Bos_2018.png',
'output/simulation/Bos_2018/descriptives/wordcloud_irrelevant_Bos_2018.png',
'output/simulation/Bos_2018/descriptives/wordcloud_relevant_Bos_2018.png',
'output/simulation/Bos_2018/descriptives/data_stats_Bos_2018.json',
'output/simulation/Bos_2018/state_files',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_0.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_6.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_559.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_1640.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_3154.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_3518.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_3519.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_3721.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_4612.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_4699.asreview',
'output/simulation/Bos_2018/state_files/sim_Bos_2018_5673.asreview',
'output/tables',
'output/tables/data_descriptives.csv',
'output/tables/data_descriptives.xlsx',
'output/tables/data_metrics.csv',
'output/tables/data_metrics.xlsx']
Third party support
Scisort also integrates with other libraries implementing sorting based on a key.
Pandas
```python import pandas as pd
from scisort import scisortkeygenpandas
pd.Series(files).sortvalues(key=scisortkeygen_pandas()) ```
Natsort
```python import natsort as ns
ns.natsorted(files, key=scisort_keygen()) ```
License
Contact
Feel free to reach out with questions, remarks, and suggestions. The issue tracker is a good starting point. You can also email me at jonathandebruinos@gmail.com.
Owner
- Name: Jonathan de Bruin
- Login: J535D165
- Kind: user
- Location: Netherlands
- Company: Utrecht University
- Repositories: 45
- Profile: https://github.com/J535D165
Research engineer working on software, datasets, and tools to advance open science 👐 @UtrechtUniversity @asreview
Citation (CITATION.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "De Bruin" given-names: "Jonathan" orcid: "https://orcid.org/0000-0002-4297-0502" title: "Scisort - Sort files in science projects" url: "https://github.com/J535D165/scisort" repository-code: "https://github.com/J535D165/scisort"
GitHub Events
Total
- Watch event: 1
Last Year
- Watch event: 1
Committers
Last synced: about 2 years ago
Top Committers
| Name | Commits | |
|---|---|---|
| Jonathan de Bruin | j****s@g****m | 48 |
Issues and Pull Requests
Last synced: 8 months ago
All Time
- Total issues: 0
- Total pull requests: 1
- Average time to close issues: N/A
- Average time to close pull requests: 11 days
- Total issue authors: 0
- Total pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
- J535D165 (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 11,877 last-month
- Total docker downloads: 47
- Total dependent packages: 1
- Total dependent repositories: 2
- Total versions: 4
- Total maintainers: 1
pypi.org: scisort
Smart sorting algorithm for files and folders in research projects and repositories
- Documentation: https://scisort.readthedocs.io/
- License: MIT
-
Latest release: 0.5.3
published over 3 years ago
Rankings
Maintainers (1)
Dependencies
- actions/checkout v3 composite
- actions/setup-python v1 composite
- actions/checkout v3 composite
- actions/setup-python v3 composite
- actions/checkout v3 composite
- actions/setup-python v3 composite
- pypa/gh-action-pypi-publish release/v1 composite
- natsort *