{"id":13929379,"url":"https://github.com/rseng/rseng","last_synced_at":"2025-07-19T11:31:53.385Z","repository":{"id":54136214,"uuid":"271359724","full_name":"rseng/rseng","owner":"rseng","description":"research software engineering taxonomy and criteria","archived":false,"fork":false,"pushed_at":"2022-10-18T12:30:57.000Z","size":32991,"stargazers_count":11,"open_issues_count":1,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-05T02:16:06.022Z","etag":null,"topics":["criteria","rseng","taxonomy"],"latest_commit_sha":null,"homepage":"https://rseng.github.io/rseng/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rseng.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null},"funding":{"github":"vsoch"}},"created_at":"2020-06-10T18:52:32.000Z","updated_at":"2024-09-12T16:36:18.000Z","dependencies_parsed_at":"2022-08-13T07:20:25.241Z","dependency_job_id":null,"html_url":"https://github.com/rseng/rseng","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rseng%2Frseng","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rseng%2Frseng/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rseng%2Frseng/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rseng%2Frseng/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rseng","download_url":"https://codeload.github.com/rseng/rseng/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226597692,"owners_count":17657191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["criteria","rseng","taxonomy"],"created_at":"2024-08-07T18:02:18.553Z","updated_at":"2024-11-26T18:30:42.940Z","avatar_url":"https://github.com/rseng.png","language":"Python","funding_links":["https://github.com/sponsors/vsoch"],"categories":["others"],"sub_categories":[],"readme":"# Research Software Engineering\n\n[![PyPI version](https://badge.fury.io/py/rseng.svg)](https://badge.fury.io/py/rseng)\n[![https://img.shields.io/badge/rseng-project-purple](https://img.shields.io/badge/rseng-project-purple)](https://rseng.github.io/) [![https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg](https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg)](https://good-labs.github.io/greater-good-affirmation)\n[![DOI](https://zenodo.org/badge/271359724.svg)](https://zenodo.org/badge/latestdoi/271359724)\n\nCriteria and taxonomy for research software engineering (rseng).\n\n![https://raw.githubusercontent.com/rseng/rseng/gh-pages/assets/img/taxonomy/taxonomy-circle.png](https://raw.githubusercontent.com/rseng/rseng/gh-pages/assets/img/taxonomy/taxonomy-circle.png)\n\n## Overview\n\nThis repository serves a taxonomy and criteria for research software,\nintended to be used with the [research software encyclopedia](https://github.com/rseng/rse).\nThe two are maintained separately for development, and because it might\nbe the case that the criteria and taxonomy would want to be used separately\nfrom the encyclopedia. \n\n## How do I contribute?\n\nYou can edit [taxonomy](rseng/main/taxonomy) or [criteria](rseng/main/criteria) items \nby way of opening a pull request against the master branch. When it is merged,\nan [automated task](https://github.com/rseng/rseng/blob/master/.github/workflows/staging.yml)\nwill update the interface served at [https://rseng.github.io/rseng](https://rseng.github.io/rseng). You can also interact with the rseng software for your own needs, shown below.\n\n## Usage\n\nUsage of the library includes programmatic (within Python or command line) \ninteraction with criteria or taxonomy, and generation of output files.\n\n - [Criteria](#criteria)\n - [Taxonomy](#taxonomy)\n - [Generate](#generate)\n\n### Criteria\n\nFor usage within Python, you will first want to instantiate a `CriteriaSet`. If you\ndon't provide a default file, the library default will be used.\n\n```python\nfrom rseng.main.criteria import CriteriaSet\ncset = CriteriaSet()\n# [CriteriaSet:6]\n```\n\nYou can then see questions loaded. Each has a unique id that gives a sense of\nwhat is being asked:\n\n```python\ncset.criteria                                                                       \n{'RSE-research-intention': \u003crseng.main.criteria.base.Criteria at 0x7f3d2e85d410\u003e,\n 'RSE-domain-intention': \u003crseng.main.criteria.base.Criteria at 0x7f3d2dab8490\u003e,\n 'RSE-question-intention': \u003crseng.main.criteria.base.Criteria at 0x7f3d2dab8910\u003e,\n 'RSE-citation': \u003crseng.main.criteria.base.Criteria at 0x7f3d2db34810\u003e,\n 'RSE-usage': \u003crseng.main.criteria.base.Criteria at 0x7f3d2db340d0\u003e,\n 'RSE-absence': \u003crseng.main.criteria.base.Criteria at 0x7f3d2db34850\u003e}\n```\n\nYou can inspect any particular criteria:\n\n```python\ncset.criteria['RSE-usage']\n\u003crseng.main.criteria.base.Criteria at 0x7f3d2db340d0\u003e\n\ncset.criteria['RSE-usage'].uid\n# 'RSE-usage'\n\ncset.criteria['RSE-usage'].question\n# 'Has the software been used by researchers?'\n\ncset.criteria['RSE-usage'].options\n# ['yes', 'no']\n```\n\nAnd further interact with the CriteriaSet, for example export to a tabular file:\n\n```python\nprint(cset.export()) # You can also define a \"filename\" and/or \"sep\" here.\nRSE-research-intention\tIs the software intended for research?\tyes,no\nRSE-domain-intention\tIs the software intended for a particular domain?\tyes,no\nRSE-question-intention\tWas the software created with intention to solve a research question?\tyes,no\nRSE-citation\tHas the software been cited?\tyes,no\nRSE-usage\tHas the software been used by researchers?\tyes,no\nRSE-absence\tWould taking away the software be a detriment to research?\tyes,no\n```\n\nor iterate through the criteria, or get a list of all of them.\n\n```python\n\u003e list(cset)\n[[Criteria:RSE-research-intention,Is the software intended for research?],\n [Criteria:RSE-domain-intention,Is the software intended for a particular domain?],\n [Criteria:RSE-question-intention,Was the software created with intention to solve a research question?],\n [Criteria:RSE-citation,Has the software been cited?],\n [Criteria:RSE-usage,Has the software been used by researchers?],\n [Criteria:RSE-absence,Would taking away the software be a detriment to research?]]\n\nfor criteria in cset:\n    print(criteria)\n\n[Criteria:RSE-research-intention,Is the software intended for research?]\n[Criteria:RSE-domain-intention,Is the software intended for a particular domain?]\n[Criteria:RSE-question-intention,Was the software created with intention to solve a research question?]\n[Criteria:RSE-citation,Has the software been cited?]\n[Criteria:RSE-usage,Has the software been used by researchers?]\n[Criteria:RSE-absence,Would taking away the software be a detriment to research?]\n```\n\n### Taxonomy\n\nThe taxonomy is interacted with in a similar fashion.\n\n```python\nfrom rseng.main.taxonomy import Taxonomy\ntax = Taxonomy()\n```\n\nIt will show you the total number of nodes (nested too):\n\n\n```python\nfrom rseng.main.taxonomy import Taxonomy\ntax = Taxonomy()\n#  [Taxonomy:24]\n```\n\nValidation happens as the default file is loaded. Akin to criteria, the files\nare located in [rseng/main/taxonomy](rseng/main/taxonomy) in yaml format, and\nare dated. You can quickly print an easily viewable, human understandable\nversion of the tree:\n\n```python\nfor name in tax.flatten(): \n   ...:     print(name) \n   ...:                                                                                                                                                                                                                      \nSoftware to directly conduct research \u003e\u003e Domain-specific software \u003e\u003e Domain-specific hardware\nSoftware to directly conduct research \u003e\u003e Domain-specific software \u003e\u003e Domain-specific optimized software\nSoftware to directly conduct research \u003e\u003e Domain-specific software \u003e\u003e Domain-specific analysis software\nSoftware to directly conduct research \u003e\u003e General software \u003e\u003e Numerical libraries\nSoftware to directly conduct research \u003e\u003e General software \u003e\u003e Data collection\nSoftware to directly conduct research \u003e\u003e General software \u003e\u003e Visualization\nSoftware to support research \u003e\u003e Explicitly for research \u003e\u003e Workflow managers\nSoftware to support research \u003e\u003e Explicitly for research \u003e\u003e Interactive development environments for research\nSoftware to support research \u003e\u003e Explicitly for research \u003e\u003e Provenance and metadata collection tools\nSoftware to support research \u003e\u003e Used for research but not explicitly for it \u003e\u003e Databases\nSoftware to support research \u003e\u003e Used for research but not explicitly for it \u003e\u003e Application Programming Interfaces\nSoftware to support research \u003e\u003e Used for research but not explicitly for it \u003e\u003e Frameworks\nSoftware to support research \u003e\u003e Incidentally used for research \u003e\u003e Operating systems\nSoftware to support research \u003e\u003e Incidentally used for research \u003e\u003e Personal scheduling and task management\nSoftware to support research \u003e\u003e Incidentally used for research \u003e\u003e Version control\nSoftware to support research \u003e\u003e Incidentally used for research \u003e\u003e Text editors and integrated development environments\nSoftware to support research \u003e\u003e Incidentally used for research \u003e\u003e Communication tools or platforms\n```\n\nAs of version 0.0.13 there are assigned colors for each taxonomy item to ensure\nmore consistency across interface generation. The colors to choose from\ncan be imported from `rse.utils.colors.browser_palette`, and include those\nwith \"medium\" or \"dark\" in the name. This one hasn't been used yet, and the\nlist should be consulted for others.\n\n```\nmediumvioletred\n```\n\n### Generate\n\nAfter you install rseng, the `rseng` executable should be in your path.\nYou can generate output files for the taxonomy or critiera to a folder\noath that doesn't exist yet. For example, to generate the markdown\nfiles for the static documentation for each of the taxonomy and criteria\nwe do:\n\n#### Markdown Jekyll Pages\n\n```bash\n# rseng generate \u003ctype\u003e   \u003cpath\u003e          \u003cversion\u003e\n$ rseng generate taxonomy docs/_taxonomy\ndocs/_taxonomy/RSE-taxonomy-domain-hardware.md\ndocs/_taxonomy/RSE-taxonomy-optimized.md\ndocs/_taxonomy/RSE-taxonomy-analysis.md\ndocs/_taxonomy/RSE-taxonomy-numerical libraries.md\ndocs/_taxonomy/RSE-taxonomy-data-collection.md\ndocs/_taxonomy/RSE-taxonomy-visualization.md\ndocs/_taxonomy/RSE-taxonomy-workflow-managers.md\ndocs/_taxonomy/RSE-taxonomy-ide-research.md\ndocs/_taxonomy/RSE-taxonomy-provenance-metadata-tools.md\ndocs/_taxonomy/RSE-taxonomy-databases.md\ndocs/_taxonomy/RSE-taxonomy-application-programming-interfaces.md\ndocs/_taxonomy/RSE-taxonomy-frameworks.md\ndocs/_taxonomy/RSE-taxonomy-operating-systems.md\ndocs/_taxonomy/RSE-taxonomy-personal-scheduling-task-management.md\ndocs/_taxonomy/RSE-taxonomy-version-control.md\ndocs/_taxonomy/RSE-taxonomy-text-editors-ides.md\ndocs/_taxonomy/RSE-taxonomy-communication-tools.md\n```\n\nThe default version generated for each is \"latest\" but you can add another\nversion as the last argument to change that. Here is generation\nof the criteria, showing using latest:\n\n```bash\n# rseng generate \u003ctype\u003e   \u003cpath\u003e          \u003cversion\u003e\n$ rseng generate criteria docs/_criteria\ndocs/_criteria/RSE-research-intention.md\ndocs/_criteria/RSE-domain-intention.md\ndocs/_criteria/RSE-question-intention.md\ndocs/_criteria/RSE-citation.md\ndocs/_criteria/RSE-usage.md\ndocs/_criteria/RSE-absence.md\n```\n\n#### Intended for Visualization (json)\n\nYou can also generate a (non flat) version of the taxonomy, specifically a json\nfile that plugs easily into the d3 hierarchy plots.\n\n```\n# rseng generate taxonomy-json \u003cfilename\u003e\n$ rseng generate taxonomy-json taxonomy.json\n```\n\n\n#### GitHub Issue Templates\n\nIf you want an issue template that can work with a GitHub workflow\n(both in your software repository) to items via GitHub, both can be produced\nwith updated criteria or taxonomy items via:\n\n```bash\n$ rseng generate criteria-annotation-template \n```\n\nAnd the template will be generated (with default filename) in the present working\ndirectory:\n\n```markdown\n---\nname: Annotate Criteria\nabout: Select this template to annotate criteria for a software repository\ntitle: \"[CRITERIA]\"\nlabels: ''\nassignees: ''\n---\n\n## Repository\n\n\u003c!-- write the name of the repository here--\u003e\n\n## Criteria\n\n\u003c!-- check boxes for criteria to indicate \"yes\" --\u003e\n\n\n - [ ] criteria-RSE-research-intention\n - [ ] criteria-RSE-domain-intention\n - [ ] criteria-RSE-question-intention\n - [ ] criteria-RSE-citation\n - [ ] criteria-RSE-usage\n - [ ] criteria-RSE-absence\n```\n\nYou can do the same for a GitHub issues taxonomy annotation template:\n\n```bash\n$ rseng generate taxonomy-annotation-template \n```\n```\n---\nname: Annotate Taxonomy\nabout: Select this template to annotate software with taxonomy categories\ntitle: \"[TAXONOMY]\"\nlabels: ''\nassignees: ''\n---\n\n## Repository\n\n\u003c!-- write the name of the repository here--\u003e\n\n## Taxonomy\n\n\u003c!-- check one or more boxes for categories to indicate \"yes\" --\u003e\n\n\n - [ ] RSE-taxonomy-domain-hardware\nSoftware to directly conduct research \u003e\u003e Domain-specific software \u003e\u003e Domain-specific hardware\n\n - [ ] RSE-taxonomy-optimized\nSoftware to directly conduct research \u003e\u003e Domain-specific software \u003e\u003e Domain-specific optimized software\n\n - [ ] RSE-taxonomy-analysis\nSoftware to directly conduct research \u003e\u003e Domain-specific software \u003e\u003e Domain-specific analysis software\n\n - [ ] RSE-taxonomy-numerical libraries\nSoftware to directly conduct research \u003e\u003e General software \u003e\u003e Numerical libraries\n\n - [ ] RSE-taxonomy-data-collection\nSoftware to directly conduct research \u003e\u003e General software \u003e\u003e Data collection\n\n - [ ] RSE-taxonomy-visualization\nSoftware to directly conduct research \u003e\u003e General software \u003e\u003e Visualization\n\n - [ ] RSE-taxonomy-workflow-managers\nSoftware to support research \u003e\u003e Explicitly for research \u003e\u003e Workflow managers\n\n - [ ] RSE-taxonomy-ide-research\nSoftware to support research \u003e\u003e Explicitly for research \u003e\u003e Interactive development environments for research\n\n - [ ] RSE-taxonomy-provenance-metadata-tools\nSoftware to support research \u003e\u003e Explicitly for research \u003e\u003e Provenance and metadata collection tools\n\n - [ ] RSE-taxonomy-databases\nSoftware to support research \u003e\u003e Used for research but not explicitly for it \u003e\u003e Databases\n\n - [ ] RSE-taxonomy-application-programming-interfaces\nSoftware to support research \u003e\u003e Used for research but not explicitly for it \u003e\u003e Application Programming Interfaces\n\n - [ ] RSE-taxonomy-frameworks\nSoftware to support research \u003e\u003e Used for research but not explicitly for it \u003e\u003e Frameworks\n\n - [ ] RSE-taxonomy-operating-systems\nSoftware to support research \u003e\u003e Incidentally used for research \u003e\u003e Operating systems\n\n - [ ] RSE-taxonomy-personal-scheduling-task-management\nSoftware to support research \u003e\u003e Incidentally used for research \u003e\u003e Personal scheduling and task management\n\n - [ ] RSE-taxonomy-version-control\nSoftware to support research \u003e\u003e Incidentally used for research \u003e\u003e Version control\n\n - [ ] RSE-taxonomy-text-editors-ides\nSoftware to support research \u003e\u003e Incidentally used for research \u003e\u003e Text editors and integrated development environments\n\n - [ ] RSE-taxonomy-communication-tools\nSoftware to support research \u003e\u003e Incidentally used for research \u003e\u003e Communication tools or platforms\n```\n\nExample in the wild include [this one for criteria](https://github.com/rseng/software/blob/master/.github/ISSUE_TEMPLATE/annotate-criteria.md) and [this one for the taxonomy](https://github.com/rseng/software/blob/master/.github/ISSUE_TEMPLATE/annotate-taxonomy.md).\nNote that you should add the templates along with creating labels, one for each\nof `taxonomy` and `criteria`. A workflow to automatically update criteria/taxonomy items\nis being written and will be added soon.\n\n## License\n\n * Free software: MPL 2.0 License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frseng%2Frseng","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frseng%2Frseng","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frseng%2Frseng/lists"}