Skip to main content

SOFTware Metadata Extraction Framework:从自述文件中自动提取相关软件信息的工具

项目描述

软件元数据提取框架 (SOMEF)

Python 派皮 DOI 粘合剂 项目状态:活跃——项目已达到稳定、可用状态,正在积极开发中。

标识

用于从自述文件中自动提取相关信息的命令行界面。

作者: Daniel Garijo、Allen Mao、Miguel Ángel García Delgado、Haripriya Dharmala、Vedant Diwanji、Jiaying Wang 和 Aidan Kelley。

特征

给定一个自述文件(或 GitHub/Gitlab 存储库),SOMEF 将提取以下类别(如果存在):

  • 名称:标识软件组件的名称
  • 全名:姓名+所有者(所有者/姓名)
  • 完整标题:如果存储库是短名称,我们将尝试提取存储库名称的较长版本
  • 描述:对软件功能的描述。
  • 引文:作者在自述文件中所述的首选引文(通常以.bib形式)。
  • 安装说明:一组说明如何安装目标存储库的说明
  • 调用:运行科学软件组件所需的执行命令
  • 使用示例:作者在执行软件组件时记录的假设和注意事项,或有关如何使用它的示例。
  • 文档:在哪里可以找到有关软件组件的其他文档。
  • 要求:执行软件组件所需的先决条件和依赖项。
  • 贡献者:软件组件的贡献者
  • FAQ : 关于软件组件的常见问题
  • 支持:获取软件组件支持的指南和链接
  • 许可:软件组件的许可和使用条款
  • 联系人:负责维护软件组件的联系人
  • 下载 URL:下载目标软件的 URL(通常是安装程序、软件包或 tarball 到稳定版本)
  • DOI:与软件关联的数字对象标识符(如果有)
  • DockerFile:构建文件以为目标软件创建 Docker 映像
  • Notebooks:存储库中包含的 Jupyter 笔记本
  • 可执行笔记本:准备好执行的 Jupyter 笔记本(例如,通过 myBinder)
  • Owner:负责存储库的用户或组织的名称
  • 所有者类型:存储库的所有者、用户或组织的类型
  • 关键字:用于通常标识软件组件的一组术语
  • 源代码:链接到源代码(通常是可以找到自述文件的存储库)
  • Releases:指向软件组件可用版本的指针
  • Changelog : 版本间变化的描述
  • 问题跟踪器:链接在哪里打开目标存储库的问题
  • 编程语言:存储库中使用的语言
  • Repository Status : repostatus.org中描述的存储库状态
  • Arxiv 链接:Arxiv 文章的链接
  • Stargazers count : 项目的观星者总数
  • Forks count:项目的分叉数
  • Forks url:由项目组成的分叉的链接
  • 行为准则:链接到项目的行为准则
  • 脚本:存储库中包含的代码片段。
  • 支持渠道:可以用来获得有关目标软件组件的支持的帮助渠道。
  • 图片:用于说明软件组件的图片。
  • Logo : 用于表示目标软件组件的主要标志。
  • Ontologies:存储库中存在的本体文件的 URL 和路径。

我们使用不同的监督分类器、标头分析、正则表达式和 GitHub/Gitlab API 来检索所有这些字段(每个字段可能使用一种以上的技术)

文档

请参阅https://somef.readthedocs.io/en/latest/上的完整文档

引用一些:

期刊发表(首选):

@article{10.1162/qss_a_00167,
    author = {Kelley, Aidan and Garijo, Daniel},
    title = "{A Framework for Creating Knowledge Graphs of Scientific Software Metadata}",
    journal = {Quantitative Science Studies},
    pages = {1-37},
    year = {2021},
    month = {11},
    issn = {2641-3337},
    doi = {10.1162/qss_a_00167},
    url = {https://doi.org/10.1162/qss\_a\_00167},
    eprint = {https://direct.mit.edu/qss/article-pdf/doi/10.1162/qss\_a\_00167/1971225/qss\_a\_00167.pdf},
}

会议刊物(首发):

@INPROCEEDINGS{9006447,
author={A. {Mao} and D. {Garijo} and S. {Fakhraei}},
booktitle={2019 IEEE International Conference on Big Data (Big Data)},
title={SoMEF: A Framework for Capturing Scientific Software Metadata from its Documentation},
year={2019},
doi={10.1109/BigData47090.2019.9006447},
url={http://dgarijo.com/papers/SoMEF.pdf},
pages={3032-3037}
}

要求

  • 蟒蛇 3.9

SOMEF 已在 Unix、MacOS 和 Windows 微软操作系统上进行了测试

从 Pypi 安装

在Pypi中可以使用 SOMEF!. 要安装它,只需键入:

pip install somef

从 GitHub 安装

要运行 SOMEF,请按照以下步骤操作:

克隆这个 GitHub 存储库

git clone https://github.com/KnowledgeCaptureAndDiscovery/somef.git

安装 somef (您应该在刚刚克隆的文件夹中)。请注意,对于 Python 3.7 和 3.8,模块 Cython 应预先安装(通过命令:)pip install Cython。

cd somef
pip install -e .

测试 SOMEF 安装

somef --help

如果一切顺利,您应该看到:

Usage: somef [OPTIONS] COMMAND [ARGS]...

Options:
  -h, --help  Show this message and exit.

Commands:
  configure  Configure credentials
  describe   Running the Command Line Interface
  version    Show somef version.

通过 Docker 安装

我们提供了一个已经安装了 SOMEF 的 Docker 镜像。要通过 Docker 运行,您可以通过运行以下命令来构建存储库中提供的 Dockerfile:

docker build -t somef .

或者只使用DockerHub中已经内置的 Docker 镜像:

docker pull kcapd/somef

然后,要运行您的图像,只需键入:

docker run -it kcapd/somef /bin/bash

您将准备好使用 SOMEF(请参阅下面的部分)。如果您想访问结果,我们建议您安装一个卷。例如,以下命令会将当前目录挂载为outDocker 映像中的文件夹:

docker run -it --rm -v $PWD/:/out kcapd/somef /bin/bash

如果您将 somef 生成的任何文件移动到/out中,那么您将能够在当前目录中看到它们。

用法

在第一次运行 SOMEF 之前,您必须对其进行适当的配置(您只需执行一次)。跑

somef configure

您将被要求提供以下信息:

如果你想自动配置 somef(没有 GitHUb 身份验证密钥并使用默认分类器),只需键入:

somef configure -a

要显示有关可用选项的帮助,请运行:

somef configure --help

其中显示:

Usage: somef configure [OPTIONS]

  Configure GitHub credentials and classifiers file path

Options:
  -a, --auto  Automatically configure SOMEF
  -h, --help  Show this message and exit.

更新 SOMEF

如果您将 SOMEF 更新到较新的版本,我们configure再次推荐您使用该库(通过运行somef configure)。基本原理是不同的版本可能依赖于可能存储在不同路径中的分类器。

运行 SOMEF

$ somef describe --help
  SOMEF Command Line Interface
Usage: somef describe [OPTIONS]

  Running the Command Line Interface

Options:
  -t, --threshold FLOAT           Threshold to classify the text  [required]
  Input: [mutually_exclusive, required]
    -r, --repo_url URL            Github/Gitlab Repository URL
    -d, --doc_src PATH            Path to the README file source
    -i, --in_file PATH            A file of newline separated links to GitHub/
                                  Gitlab repositories

  Output: [required_any]
    -o, --output PATH             Path to the output file. If supplied, the
                                  output will be in JSON

    -c, --codemeta_out PATH       Path to an output codemeta file
    -g, --graph_out PATH          Path to the output Knowledge Graph export
                                  file. If supplied, the output will be a
                                  Knowledge Graph, in the format given in the
                                  --format option chosen (turtle, json-ld)

  -f, --graph_format [turtle|json-ld]
                                  If the --graph_out option is given, this is
                                  the format that the graph will be stored in

  -p, --pretty                    Pretty print the JSON output file so that it
                                  is easy to compare to another JSON output
                                  file.

  -m, --missing                   JSON report with the missing metadata fields
                                  SOMEF was not able to find. The report will
                                  be placed in  $PATH_missing.json, where
                                  $PATH is -o, -c or -g.
  -kt, --keep_tmp PATH            SOMEF will NOT delete the temporary folder
                                  where files are stored for analysis. Files
                                  will be stored at the
                                  desired path


  -h, --help                      Show this message and exit.

使用示例:

以下命令从https://github.com/dgarijo/Widoco/提取所有可用的元数据。

somef describe -r https://github.com/dgarijo/Widoco/ -o test.json -t 0.8

使用我们的示例笔记本在 Binder 中尝试 SOMEF:粘合剂

贡献:

如果您想通过拉取请求做出贡献,请将其提交给dev分支。

下一个特点:

要查看即将推出的功能,请查看我们的未解决问题和里程碑

扩展 SOMEF 类别:

要运行具有附加类别的分类器或删除现有类别,应在 config.json 中提供相应的路径条目,并应在 .json 中的类别变量中添加/删除类别类型cli.py。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

somef-0.8.2.tar.gz (549.8 kB 查看哈希)

已上传 source

内置分布

somef-0.8.2-py3-none-any.whl (554.1 kB 查看哈希)

已上传 py3