The Software Metadata Extraction Framework is a CLI for extracting metadata from code repositories
1.6K
A command line interface for automatically extracting relevant information from readme files.
Authors: Daniel Garijo, Allen Mao, Haripriya Dharmala, Vedant Diwanji, Jiaying Wang and Aidan Kelley.
Given a readme file (or a GitHub repository) SOMEF will extract the following categories (if present):
.bib form) as the authors have stated in their readme file.We use different supervised classifiers, header analysis, regular expressions and the GitHub API to retrieve all these fields (more than one technique may be used for each field)
See full documentation at https://somef.readthedocs.io/en/latest/
SOMEF has also been tested on Python 3.7 and 3.8.
To run SOMEF, please follow the next steps:
Clone this GitHub repository
git clone https://github.com/KnowledgeCaptureAndDiscovery/somef.git
Install somef (you should be in the folder that you just cloned). Note that for Python 3.7 and 3.8 the module Cython should be installed in advanced (through the command: pip install Cython).
cd somef
pip install -e .
Test SOMEF installation
somef --help
If everything goes fine, you should see:
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.
We provide a Docker image with SOMEF already installed. To run through Docker, you may build the Dockerfile provided in the repository by running:
docker build -t somef .
Or just use the Docker image already built in DockerHub:
docker pull kcapd/somef
Then, to run your image just type:
docker run -it kcapd/somef /bin/bash
And you will be ready to use SOMEF (see section below). If you want to have access to the results we recommend mounting a volume. For example, the following command will mount the current directory as the out folder in the Docker image:
docker run -it --rm -v $PWD/:/out kcapd/somef /bin/bash
If you move any files produced by somef into /out, then you will be able to see them in your current directory.
Before running SOMEF, you must configure it appropriately. Run
somef configure
And you will be asked to provide the following:
If you want somef to be automatically configured (without GitHUb authentication key and using the default classifiers) just type:
somef configure -a
For showing help about the available options, run:
somef configure --help
Which displays:
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 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 Repository URL
-d, --doc_src PATH Path to the README file source
-i, --in_file PATH A file of newline separated links to GitHub
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.
-h, --help Show this message and exit.
The following command extracts all metadata available from https://github.com/dgarijo/Widoco/.
somef describe -r https://github.com/dgarijo/Widoco/ -o test.json -t 0.8
Try SOMEF in Binder with our sample notebook:
To run a classifier with an additional category or remove an existing one, a corresponding path entry in the config.json should be provided and the category type should be added/removed in the category variable in cli.py
If you want to contribute with a pull request, please do so by submitting it to the dev branch.
@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},
url={http://dgarijo.com/papers/SoMEF.pdf},
pages={3032-3037}
}
To see upcoming features, please have a look at our open issues and milestones
Content type
Image
Digest
sha256:45ca45089…
Size
2.3 GB
Last updated
1 day ago
docker pull kcapd/somef