Creating an ontology project, an update
December 16, 2015 2 Comments
- In a previous post, I recommended some standard ways of managing the various portions of an ontology project using a version control system like GitHub.
Since writing that post, I’ve written a new utility that makes this task even easier. With the ontology-starter-kit you can generate all your project files and get set up for creating your first release in minutes. This script takes into account some changes since the original post two years ago:
- Travis-CI has become the de-facto standard continuous integration system for performing unit tests on any project managed in GitHub (for more on CI see this post). The starter-kit will give you a default travis setup.
- Managing your metadata and PURLs on the OBO Library has changed to a GitHub-based system:
- ROBOT has emerged as a simpler way of managing many aspects of a release process, particularly managing your external imports
To get started, clone or download cmungall/ontology-starter-kit
Currently, you will need:
- git (command line client)
For best results, you should also download owltools, oort and robot (in the future we’ll have a more unified system)
You can obtain all these by running the install script:
This should be run from within the ontology-starter-kit directory
Then, from within that directory, you can seed your ontology:
./seed-my-ontology-repo.pl -d ro -d uberon -u obophenotype -t cnidaria-ontology cnido
This assumes that you are building some kind of extension to uberon, using the relation ontology (OBO Library ontology IDs must be used here), that you will be placing this in the https://github.com/obophenotype/ organization and that the repo name in obophenotype/cnidaria-ontology, and that IDs will be of the form CNIDA:nnnnnnn
After running, the repository will be created in the target/cnidaria-ontology folder, relative to where you are. You can move this out to somewhere more convenient.
The script is chatty, and it informs of you how it is copying the template files from the template directory into the target directory. It will create your initial source setup, including a makefile, and then it will use that makefile to create an initial release, going so far as to init the git repo, add and commit files (unless overridden). It will not go as far as to create a repo for you on github, but it provides explicit instructions on what you should do next:
EXECUTING: git status
# On branch master
nothing to commit, working directory clean
0. Examine target/cnidaria-ontology and check it meets your expectations. If not blow it away and start again
1. Go to: https://github.com/new
2. The owner MUST be obophenotype. The Repository name MUST be cnidaria-ontology
3. Do not initialize with a README (you already have one)
4. Click Create
5. See the section under '…or push an existing repository from the command line'
git remote add origin firstname.lastname@example.org:obophenotype/cnido.git
git push -u origin master
Note also that it also generates a metadata directory for you, with .md and .yml files you can use for your project on obolibrary (of course, you need to request your ontology ID space first, but you can go ahead and make a pull request with these files).
The overall system may no longer be necessary in the future, if we get a complete turnkey ontology release system with capabilities similar to analogous tools in software development such as maven.
For now, the Makefile approach is most flexible, and is widely understood by many software developers, but a long standing obstacle has been the difficulty in setting up the Makefile for a new project. The starter kit provides a band-aid here.
If required, it should be possible to set up alternate templates for different styles of project layouts. Pull requests on the starter-kit repository are welcome!