scisort

Sort files in research project folders in a scientific order

https://github.com/j535d165/scisort

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

directory-lister directory-listing file-sorting python research research-data-management science sorting utrecht-university
Last synced: 6 months ago · JSON representation ·

Repository

Sort files in research project folders in a scientific order

Basic Info
  • Host: GitHub
  • Owner: J535D165
  • License: mit
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 53.7 KB
Statistics
  • Stars: 4
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 4
Topics
directory-lister directory-listing file-sorting python research research-data-management science sorting utrecht-university
Created over 3 years ago · Last pushed over 3 years ago
Metadata Files
Readme License Citation

README.md

Scisort - Sort files in science projects.

Scisort - Sort files in research projects

PyPI DOI

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:

* 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

MIT

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

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

All Time
  • Total Commits: 48
  • Total Committers: 1
  • Avg Commits per committer: 48.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 48
  • Committers: 1
  • Avg Commits per committer: 48.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email 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

  • Versions: 4
  • Dependent Packages: 1
  • Dependent Repositories: 2
  • Downloads: 11,877 Last month
  • Docker Downloads: 47
Rankings
Downloads: 3.1%
Docker downloads count: 3.1%
Dependent packages count: 4.8%
Average: 5.7%
Dependent repos count: 11.6%
Maintainers (1)
Last synced: 6 months ago

Dependencies

.github/workflows/python-lint.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v1 composite
.github/workflows/python-package.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
.github/workflows/python-publish.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
  • pypa/gh-action-pypi-publish release/v1 composite
pyproject.toml pypi
  • natsort *