+ Select a collection below to view the trends of the software associated + to a specific project/organization +
++ {{ collections[model].subtitle }} +
++ {{ collections[model].description }} +
++ {{ caption }} +
++ Introduce the URL of the GitHub repository of the software: +
+Enter the URL of the metadata file:
+Select a file from your computer to upload:
++ Select a tool from the Software's Observatory Database: +
++ {{ item.indicator }} +
++ {{ item.indicator }} +
+
+
+ Licensing is one of the most crucial features of a piece of software, + determining both its Accessibility and + Reusability. +
+
+ Publications of software in the form of research papers generally
+ offer a careful description of the software, often including domain of
+ application and usage, contributing to its
+ Findability.
+
+ A publication can serve as the reference to credit authors of a
+ software and is the most common way to cite software in research
+ publications.
+
+ Percentage (top) and impact factor (bottom) of publications devoted + to software in the top publishers of software in the Life + Sciences. +
++ Making software available through any of the main software + repositories makes it more + Findable and + Accessible. +
++ Version control offers a standardized record of source code changes, + making it easier to be + Reused. +
++ Number of instances in four widely used platforms for software + distribution and development +
++ Following a specific set of rules for naming software releases allows its + inequivocal identification, which increases its + Findability, + Reusability and guarantees the + Reproducibility of research results. +
++ Instances using semantics versionings +
++ The Software Observatory is designed as a dynamic tool to + systematically monitor, assess, and elevate the quality of Life + Sciences reearch software. Our mission is not just to observe but to + actively foster the adoption of best practices in software development + within the Life Sciences community. +
+ ++ Software Metadata and statistics are made available through the + Software Observatory API. +
+ ++ The Software Observatory uses the following terminology: +
+ +
+ FAIRsoft - A practical implementation of FAIR principles for
+ research software
+ Eva Martín del Pico, Josep Lluís Gelpí, Salvador Capella-Gutiérrez
+ bioRxiv 2022.05.04.490563; doi:
+ https://doi.org/10.1101/2022.05.04.490563
+
+ All data is distributed under a + + CC-BY-ND + license. +
+ Our system periodically pulls metadata from
+ eight diverse sources, enriched further with dynamic
+ data on repository activity, website availability, and trends in
+ publication citations. As each piece of metadata flows into our
+ system, it undergoes a meticulous harmonization process, ensuring
+ uniformity and relevance across varying data types and sources.
+
+ On this page, you can Visualize the Integration: dive
+ into our enriched database and see firsthand the scope of each
+ source's contribution, the comprehensive depth of metadata, and the
+ overlaps that characterize our dataset.
+
+ Features obtained from the different software metadata + sources and total number of instances for which each feature + exists in the dataset. +
+
+ Dots (green: primary sources, red: secondary sources, blue:
+ OpenEbench) show the availability of such features in the
+ indicated sources.
+ Bars indicate the actual number of retrieved metadata items.
+ Variation of the amounts is a consequence of the lack of
+ completeness of metadata annotation.
+
+ Cumulative distribution of number of sources where individual + instances are found (yellow). +
++ Stacked bars represent the contribution of each source in terms + of number of metadata entries. Sources used to discover software + and build an initial collection of instances are coloured in + shades of green, while those used to further enrich the initial + collection are depicted in shades of red. OpenEBench, as an + exception, is coloured in red while belonging to the latter + category. +
++ + Distribution of number of features collected on individual + instances. + +
++ The higher the number of features for an instance, the more + information gathered about that instance. +
++ Distribution of the types of instances in the + collection. +
++ Research Software may be implemented or accessed in different + ways via web interface, REST API, command line, workflow, etc. + Current types captured are (cmd, web, db, app, lib, ontology, workflow, plugin, sparql, + soap, script, rest, workbench, suite) +
+
+ Enhance the FAIRness of your software.
+
+ Here’s how you can use our tool:
+
+ This page brings to light the
+ collective insights from our FAIRsoft indicators,
+ providing a clear snapshot of trends and scores across various
+ software.
+ Dive into the details:
+
+ Looking for a personalized analysis? 🤔
+ Head over to the
+
+ Explore trends in key aspects to the FAIRness of research software. +
+' + + error.message + + ''; + commit('setDialogParseMetadata', false); + commit('setErrorDialogParseMetadata', true); + commit('setErrorProgressText', errorMessage); + return; + } + + // Trim whitespace from fileContent + fileContent = fileContent.trim(); + + let parsedContent; + try { + parsedContent = JSON.parse(fileContent); + } catch (error) { + console.error('Error parsing JSON:', error); + commit('setDialogParseMetadata', false); + commit('setErrorDialogParseMetadata', true); + const errorMessage = + 'Error parsing metadata file content:' + + '
' + + error.message + + ''; + commit('setErrorProgressText', errorMessage); + dispatch('observatory/evaluation/changeStep', 2, { root: true }); + return; + } + + // Transform file fields into the UI metadata model fields + let metadata = { + topics: buildFeTopicsOperations( + parsedContent['schema:applicationSubcategory'] + ), + name: parsedContent['schema:name'] || '', + webpage: parsedContent['schema:url'] || '', + description: buildFeDescription(parsedContent['schema:description']), + os: parsedContent['schema:operatingSystem'] || [], + license: buildFeLicense(parsedContent['schema:license']), + authors: buildFeAuthors(parsedContent['schema:author']), + version: buildFeVersion(parsedContent['schema:softwareVersion']), + repository: parsedContent['schema:codeRepository'] || [], + operations: buildFeTopicsOperations(parsedContent['schema:featureList']), + input: buildFeInputOutput(parsedContent['bioschemas:input']), + output: buildFeInputOutput(parsedContent['bioschemas:output']), + download: parsedContent['schema:downloadURL'] || [], + documentation: buildFeHelp(parsedContent['schema:softwareHelp']), + dependencies: parsedContent['schema:requirements'] || [], + registration_not_mandatory: + parsedContent['schema:isAccessibleForFree'] || false, + edam_topics: buildFeEdamTopicsOperations( + parsedContent['schema:applicationSubcategory'] + ), + edam_operations: buildFeEdamTopicsOperations( + parsedContent['schema:featureList'] + ), + label: [parsedContent['schema:name']] || [], + src: parsedContent['schema:codeRepository'] || [], + links: buildFeLinks(parsedContent), + api_lib: false, + type: '', + test: [], + source: [], + registries: [], + e_infrastructures: [], + operational: null, + inst_instr: false, + contribPolicy: [], + other_versions: [], + }; + + // Add ids to the lists so v-for loops work properly + metadata = prepareListsIds(metadata); + + dispatch('observatory/evaluation/metadata/updateToolsMetadata', metadata, { + root: true, + }); + dispatch('observatory/evaluation/metadata/updateLoadedMetadata', true, { + root: true, + }); + + commit('setParseProgressText', 'Done'); + commit('setParseProgressText', ''); + commit('setDialogParseMetadata', false); + + dispatch('observatory/evaluation/changeStep', 3, { root: true }); + }, + + updateDialogParseMetadata({ commit, _state }, value) { + commit('setDialogParseMetadata', value); + }, + + updateDialogInstallApp({ commit, _state }, value) { + commit('setDialogInstallApp', value); + }, + + cancelParse({ commit, _state, dispatch }) { + commit('setDialogParseMetadata', false); + commit('setErrorDialogParseMetadata', false); + commit('setParseProgressText', ''); + dispatch('observatory/evaluation/changeStep', 2, { + root: true, + }); + }, +}; + +export const mutations = { + setDialogParseMetadata(state, value) { + state._dialogParseMetadata = value; + }, + setParseProgressText(state, value) { + state._parseProgressText = value; + }, + setErrorDialogParseMetadata(state, value) { + state._errorDialogParseMetadata = value; + }, + setErrorProgressText(state, text) { + state._errorProgressText = text; + }, + setDialogInstallApp(state, value) { + state._dialogInstallApp = value; + }, +}; diff --git a/store/observatory/evaluation/github.js b/store/observatory/evaluation/github.js new file mode 100644 index 00000000..5a9ffb4b --- /dev/null +++ b/store/observatory/evaluation/github.js @@ -0,0 +1,168 @@ +/* +This store is used for the github integration. +In Step 2: import of metadata from a github repository. +*/ +// state +export const state = () => ({ + // requested repository to import metadata from (as