Package: rseng
Research Software EngineeringCriteria and taxonomy for research software engineering (rseng).OverviewThis repository serves a taxonomy and criteria for research software,
intended to be used with theresearch software encyclopedia.
The two are maintained separately for development, and because it might
be the case that the criteria and taxonomy would want to be used separately
from the encyclopedia.How do I contribute?You can edittaxonomyorcriteriaitems
by way of opening a pull request against the master branch. When it is merged,
anautomated taskwill update the interface served athttps://rseng.github.io/rseng. You can also interact with the rseng software for your own needs, shown below.UsageUsage of the library includes programmatic (within Python or command line)
interaction with criteria or taxonomy, and generation of output files.CriteriaTaxonomyGenerateCriteriaFor usage within Python, you will first want to instantiate aCriteriaSet. If you
don't provide a default file, the library default will be used.fromrseng.main.criteriaimportCriteriaSetcset=CriteriaSet()# [CriteriaSet:6]You can then see questions loaded. Each has a unique id that gives a sense of
what is being asked:cset.criteria{'RSE-research-intention':<rseng.main.criteria.base.Criteriaat0x7f3d2e85d410>,'RSE-domain-intention':<rseng.main.criteria.base.Criteriaat0x7f3d2dab8490>,'RSE-question-intention':<rseng.main.criteria.base.Criteriaat0x7f3d2dab8910>,'RSE-citation':<rseng.main.criteria.base.Criteriaat0x7f3d2db34810>,'RSE-usage':<rseng.main.criteria.base.Criteriaat0x7f3d2db340d0>,'RSE-absence':<rseng.main.criteria.base.Criteriaat0x7f3d2db34850>}You can inspect any particular criteria:cset.criteria['RSE-usage']<rseng.main.criteria.base.Criteriaat0x7f3d2db340d0>cset.criteria['RSE-usage'].uid# 'RSE-usage'cset.criteria['RSE-usage'].question# 'Has the software been used by researchers?'cset.criteria['RSE-usage'].options# ['yes', 'no']And further interact with the CriteriaSet, for example export to a tabular file:print(cset.export())# You can also define a "filename" and/or "sep" here.RSE-research-intentionIsthesoftwareintendedforresearch?yes,noRSE-domain-intentionIsthesoftwareintendedforaparticulardomain?yes,noRSE-question-intentionWasthesoftwarecreatedwithintentiontosolvearesearchquestion?yes,noRSE-citationHasthesoftwarebeencited?yes,noRSE-usageHasthesoftwarebeenusedbyresearchers?yes,noRSE-absenceWouldtakingawaythesoftwarebeadetrimenttoresearch?yes,noor iterate through the criteria, or get a list of all of them.>list(cset)[[Criteria:RSE-research-intention,Isthesoftwareintendedforresearch?],[Criteria:RSE-domain-intention,Isthesoftwareintendedforaparticulardomain?],[Criteria:RSE-question-intention,Wasthesoftwarecreatedwithintentiontosolvearesearchquestion?],[Criteria:RSE-citation,Hasthesoftwarebeencited?],[Criteria:RSE-usage,Hasthesoftwarebeenusedbyresearchers?],[Criteria:RSE-absence,Wouldtakingawaythesoftwarebeadetrimenttoresearch?]]forcriteriaincset:print(criteria)[Criteria:RSE-research-intention,Isthesoftwareintendedforresearch?][Criteria:RSE-domain-intention,Isthesoftwareintendedforaparticulardomain?][Criteria:RSE-question-intention,Wasthesoftwarecreatedwithintentiontosolvearesearchquestion?][Criteria:RSE-citation,Hasthesoftwarebeencited?][Criteria:RSE-usage,Hasthesoftwarebeenusedbyresearchers?][Criteria:RSE-absence,Wouldtakingawaythesoftwarebeadetrimenttoresearch?]TaxonomyThe taxonomy is interacted with in a similar fashion.fromrseng.main.taxonomyimportTaxonomytax=Taxonomy()It will show you the total number of nodes (nested too):fromrseng.main.taxonomyimportTaxonomytax=Taxonomy()#  [Taxonomy:24]Validation happens as the default file is loaded. Akin to criteria, the files
are located inrseng/main/taxonomyin yaml format, and
are dated. You can quickly print an easily viewable, human understandable
version of the tree:fornameintax.flatten():...:print(name)...:Softwaretodirectlyconductresearch>>Domain-specificsoftware>>Domain-specifichardwareSoftwaretodirectlyconductresearch>>Domain-specificsoftware>>Domain-specificoptimizedsoftwareSoftwaretodirectlyconductresearch>>Domain-specificsoftware>>Domain-specificanalysissoftwareSoftwaretodirectlyconductresearch>>Generalsoftware>>NumericallibrariesSoftwaretodirectlyconductresearch>>Generalsoftware>>DatacollectionSoftwaretodirectlyconductresearch>>Generalsoftware>>VisualizationSoftwaretosupportresearch>>Explicitlyforresearch>>WorkflowmanagersSoftwaretosupportresearch>>Explicitlyforresearch>>InteractivedevelopmentenvironmentsforresearchSoftwaretosupportresearch>>Explicitlyforresearch>>ProvenanceandmetadatacollectiontoolsSoftwaretosupportresearch>>Usedforresearchbutnotexplicitlyforit>>DatabasesSoftwaretosupportresearch>>Usedforresearchbutnotexplicitlyforit>>ApplicationProgrammingInterfacesSoftwaretosupportresearch>>Usedforresearchbutnotexplicitlyforit>>FrameworksSoftwaretosupportresearch>>Incidentallyusedforresearch>>OperatingsystemsSoftwaretosupportresearch>>Incidentallyusedforresearch>>PersonalschedulingandtaskmanagementSoftwaretosupportresearch>>Incidentallyusedforresearch>>VersioncontrolSoftwaretosupportresearch>>Incidentallyusedforresearch>>TexteditorsandintegrateddevelopmentenvironmentsSoftwaretosupportresearch>>Incidentallyusedforresearch>>CommunicationtoolsorplatformsAs of version 0.0.13 there are assigned colors for each taxonomy item to ensure
more consistency across interface generation. The colors to choose from
can be imported fromrse.utils.colors.browser_palette, and include those
with "medium" or "dark" in the name. This one hasn't been used yet, and the
list should be consulted for others.mediumvioletredGenerateAfter you install rseng, thersengexecutable should be in your path.
You can generate output files for the taxonomy or critiera to a folder
oath that doesn't exist yet. For example, to generate the markdown
files for the static documentation for each of the taxonomy and criteria
we do:Markdown Jekyll Pages# rseng generate <type>   <path>          <version>$rsenggeneratetaxonomydocs/_taxonomy
docs/_taxonomy/RSE-taxonomy-domain-hardware.md
docs/_taxonomy/RSE-taxonomy-optimized.md
docs/_taxonomy/RSE-taxonomy-analysis.md
docs/_taxonomy/RSE-taxonomy-numericallibraries.md
docs/_taxonomy/RSE-taxonomy-data-collection.md
docs/_taxonomy/RSE-taxonomy-visualization.md
docs/_taxonomy/RSE-taxonomy-workflow-managers.md
docs/_taxonomy/RSE-taxonomy-ide-research.md
docs/_taxonomy/RSE-taxonomy-provenance-metadata-tools.md
docs/_taxonomy/RSE-taxonomy-databases.md
docs/_taxonomy/RSE-taxonomy-application-programming-interfaces.md
docs/_taxonomy/RSE-taxonomy-frameworks.md
docs/_taxonomy/RSE-taxonomy-operating-systems.md
docs/_taxonomy/RSE-taxonomy-personal-scheduling-task-management.md
docs/_taxonomy/RSE-taxonomy-version-control.md
docs/_taxonomy/RSE-taxonomy-text-editors-ides.md
docs/_taxonomy/RSE-taxonomy-communication-tools.mdThe default version generated for each is "latest" but you can add another
version as the last argument to change that. Here is generation
of the criteria, showing using latest:# rseng generate <type>   <path>          <version>$rsenggeneratecriteriadocs/_criteria
docs/_criteria/RSE-research-intention.md
docs/_criteria/RSE-domain-intention.md
docs/_criteria/RSE-question-intention.md
docs/_criteria/RSE-citation.md
docs/_criteria/RSE-usage.md
docs/_criteria/RSE-absence.mdIntended for Visualization (json)You can also generate a (non flat) version of the taxonomy, specifically a json
file that plugs easily into the d3 hierarchy plots.# rseng generate taxonomy-json <filename>
$ rseng generate taxonomy-json taxonomy.jsonGitHub Issue TemplatesIf you want an issue template that can work with a GitHub workflow
(both in your software repository) to items via GitHub, both can be produced
with updated criteria or taxonomy items via:$rsenggeneratecriteria-annotation-templateAnd the template will be generated (with default filename) in the present working
directory:---
name: Annotate Criteria
about: Select this template to annotate criteria for a software repository
title: "[CRITERIA]"
labels: ''assignees: ''---## Repository<!-- write the name of the repository here-->## Criteria<!-- check boxes for criteria to indicate "yes" -->- [ ]criteria-RSE-research-intention- [ ]criteria-RSE-domain-intention- [ ]criteria-RSE-question-intention- [ ]criteria-RSE-citation- [ ]criteria-RSE-usage- [ ]criteria-RSE-absenceYou can do the same for a GitHub issues taxonomy annotation template:$rsenggeneratetaxonomy-annotation-template---
name: Annotate Taxonomy
about: Select this template to annotate software with taxonomy categories
title: "[TAXONOMY]"
labels: ''
assignees: ''
---

## Repository

<!-- write the name of the repository here-->

## Taxonomy

<!-- check one or more boxes for categories to indicate "yes" -->


 - [ ] RSE-taxonomy-domain-hardware
Software to directly conduct research >> Domain-specific software >> Domain-specific hardware

 - [ ] RSE-taxonomy-optimized
Software to directly conduct research >> Domain-specific software >> Domain-specific optimized software

 - [ ] RSE-taxonomy-analysis
Software to directly conduct research >> Domain-specific software >> Domain-specific analysis software

 - [ ] RSE-taxonomy-numerical libraries
Software to directly conduct research >> General software >> Numerical libraries

 - [ ] RSE-taxonomy-data-collection
Software to directly conduct research >> General software >> Data collection

 - [ ] RSE-taxonomy-visualization
Software to directly conduct research >> General software >> Visualization

 - [ ] RSE-taxonomy-workflow-managers
Software to support research >> Explicitly for research >> Workflow managers

 - [ ] RSE-taxonomy-ide-research
Software to support research >> Explicitly for research >> Interactive development environments for research

 - [ ] RSE-taxonomy-provenance-metadata-tools
Software to support research >> Explicitly for research >> Provenance and metadata collection tools

 - [ ] RSE-taxonomy-databases
Software to support research >> Used for research but not explicitly for it >> Databases

 - [ ] RSE-taxonomy-application-programming-interfaces
Software to support research >> Used for research but not explicitly for it >> Application Programming Interfaces

 - [ ] RSE-taxonomy-frameworks
Software to support research >> Used for research but not explicitly for it >> Frameworks

 - [ ] RSE-taxonomy-operating-systems
Software to support research >> Incidentally used for research >> Operating systems

 - [ ] RSE-taxonomy-personal-scheduling-task-management
Software to support research >> Incidentally used for research >> Personal scheduling and task management

 - [ ] RSE-taxonomy-version-control
Software to support research >> Incidentally used for research >> Version control

 - [ ] RSE-taxonomy-text-editors-ides
Software to support research >> Incidentally used for research >> Text editors and integrated development environments

 - [ ] RSE-taxonomy-communication-tools
Software to support research >> Incidentally used for research >> Communication tools or platformsExample in the wild includethis one for criteriaandthis one for the taxonomy.
Note that you should add the templates along with creating labels, one for each
oftaxonomyandcriteria. A workflow to automatically update criteria/taxonomy items
is being written and will be added soon.LicenseFree software: MPL 2.0 License