Submitting author: @edawson (Eric Dawson)
Repository: https://github.com/edawson/gfakluge
Version: 1.1.2
Editor: @mgymrek
Reviewer: @sjackman
Archive: 10.5281/zenodo.2546721
Status badge code:
HTML: <a href="http://joss.theoj.org/papers/d731f6dfc6b77013caaccfd8333c684a"><img src="http://joss.theoj.org/papers/d731f6dfc6b77013caaccfd8333c684a/status.svg"></a>
Markdown: [](http://joss.theoj.org/papers/d731f6dfc6b77013caaccfd8333c684a)
Reviewers and authors:
Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)
@sjackman, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:
The reviewer guidelines are available here: https://joss.theoj.org/about#reviewer_guidelines. Any questions/concerns please let @mgymrek know.
โจ Please try and complete your review in the next two weeks โจ
paper.md file include a list of authors with their affiliations?Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @sjackman it looks like you're currently assigned as the reviewer for this paper :tada:.
:star: Important :star:
If you haven't already, you should seriously consider unsubscribing from GitHub notifications for this (https://github.com/openjournals/joss-reviews) repository. As a reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all reviews ๐ฟ
To fix this do the following two things:


For a list of things I can do to help you, just type:
@whedon commands
Attempting PDF compilation. Reticulating splines etc...
Installation: Does installation proceed as outlined in the documentation?
You can build libgfakluge and the command line gfak utilities by typing
makein the repo.
On macOS with Apple clang, make fails with error: 'omp.h' file not found, because gfakluge requires OpenMP, and Apple clang does not provide OpenMP. Please add OpenMP to the list of dependencies. Please include instructions in README.md for building from source on macOS.
brew install gcc@8
make CXX=g++-8
GFAKluge [@GFAKluge] is a set of command line utilities
@online{GFAKluge,
author = {Eric T. Dawson and Richard Durbin},
title = {GFAKluge},
year = 2018,
url = {https://github.com/edawson/gfakluge}
}
I don't believe it's typical to cite the software repository from the paper.
@mgymrek Opinion?
Please mention the homepage and license in the Summary. For example
Homepage: https://github.com/edawson/gfakluge
License: MIT
GFAKluge facilitates interprogram exchange by providing a high-level C++ API for developers
To use GFAKluge in your program, you'll need to add a few lines to your code. First, add the necessary include line to your C++ code:
#include "gfakluge.hpp"
Next, make sure that the library is on the proper system paths and compile line:
GFAKluge would be more easily used as a library if
-Lโฆ -lโฆ)make install and the Brew package installed that headerTo make gfakluge a header-only library, merge gfakluge.hpp and gfakluge.cpp into a single file and remove gfakluge.cpp. Make every method an inline method by either defining it within class GFAKluge or decorating the definition with static inline if it's defined outside the class.
Header-only libraries are much easier to use in practice than libraries that require linking. It avoids the challenges of distributing shared libraries, whose details vary between operating systems.
Please add a make install target to Makefile.
PREFIX=/usr/local
install:
install gfak $(DESTDIR)$(PREFIX)/bin/
install src/gfakluge.hpp $(DESTDIR)$(PREFIX)/include/
and converting between legacy GFA formats.
Please be more specific. I suggest and converting between GFA versions 1 and 2.
To our knowledge, GFAKluge is the only publically-available software package that can consume and produce both GFA1 and GFA2
GfaPy is able to consume and produce both GFA1 and GFA2.
https://doi.org/10.1093/bioinformatics/btx398
RGFA handles only GFA1 (I believe). I suggest citing it.
https://doi.org/10.7717/peerj.2681
abyss-todot (now a misnomer, since it handles multiple formats) included with ABySS 2 produces both GFA1 and GFA2 (with the command line options --gfa1 and --gfa2), and consumes both with some format limitations (it does not handle all record types).
https://doi.org/10.1101/gr.214346.116
the gfak convert tool
I'd suggest typesetting this asโฆ
the gfak convert tool
Ditto vg msga
We see the command line utilities as being useful to the development community in the short term.
The need for file conversion will likely never go away. Older tools that support only GFA1 may never be updated to support GFA2. Newer tools may support producing only GFA2 and not GFA1. To make these tools interoperate, a conversion tool is needed. That need is likely not temporary.
Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
Please list in the manuscript the currently available commands.
convert: Convert between GFA 0.1 <-> 1.0 <-> 2.0
diff: Determine whether two GFA files have identical graphs
extract: Convert the S lines of a GFA file to FASTA format.
fillseq: Add sequences from a FASTA file to S lines.
ids: Coordinate the ID spaces of multiple GFA graphs.
concat: Merge GFA graphs (without ID collisions).
sort: Print a GFA file in HSLP / HSEFGUO order.
stats: Get assembly statistics (e.g. N50) for a GFA file.
subset: Extract the subgraph between two IDs in a graph.
trim: Remove elements from a GFA graph.
Please give command line examples of three or more commands.
Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
Is the API documented? If not, please document the API using Doxygen or a similar tool. A one-line summary of the purpose of each public method is sufficient. Please post the rendered HTML API documentation online using GitHub Pages or similar.
Automated tests: Are there automated tests or manual steps described so that the function of the software can be verified?
Please include a make check rule in the Makefile that runs the automated tests.
Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support
I've ticked this off as complete, since I think it's self evident how to use GitHub to submit issues and pull requests. You could if you liked add Reporting bugs and Contributing sections to the README.md or CONTRIBUTING.md.
@whedon commands
Here are some things you can ask me to do:
# List Whedon's capabilities
@whedon commands
# List of editor GitHub usernames
@whedon list editors
# List of reviewers together with programming language preferences and domain expertise
@whedon list reviewers
# Compile the paper
@whedon generate pdf
๐ง ๐ง ๐ง Experimental Whedon features ๐ง ๐ง ๐ง
# Compile the paper from a custom git branch
@whedon generate pdf from branch custom-branch-name
My review is complete.
Thanks for these helpful comments @sjackman.
To summarize for @edawson:
@edawson: I wanted to check in on this and see if you were able to make the requested changes.
@whedon generate pdf
Attempting PDF compilation. Reticulating splines etc...
@mgymrek I believe I've just addressed the last of these. I've included my checklist, which I pulled out from @sjackman 's comments.
For the authors of the reference "Gene Myers, Jason Chin, & Durbin, R. (2015)", I suggest adding Shaun Jackman (myself), Heng Li, and Giorgio Gonnella based on this text:
Jason Chin, Richard Durbin, and myself (Gene Myers) found ourselves together at a workshop meeting in Dagstuhl Germany and hammered out an initial proposal for an assembly format. We started with GFA 1 and proceeded to build a more comprehensive design around it. After extensive revision and discussion on Github with the GFA group including Shaun Jackman, Heng Li, and Giorgio Gonnella, we arrived at GFA 2.0.
https://github.com/gfa-spec/gfa-spec/#gfa-20-graphical-fragment-assembly-gfa2-format-specification-20
convert: Convert between GFA 0.1 <-> 1.0 <-> 2.0
What is GFA 0.1, and how does it differ from GFA 1.0?
available in the interface.md file file.
There's a typo here: file file.
My review is complete.
Thanks @sjackman, if all the items have been completed could you just update the checklist above?
@sjackman I've addressed your remaining comments. We consider the original GFA proposal by Heng Li to be "GFA 0.1," and it's supported as a legacy format that predates any real specification. Thanks for your review!
@whedon generate pdf
We consider the original GFA proposal by Heng Li to be "GFA 0.1," and it's supported as a legacy format that predates any real specification.
Are there any tangible technical differences between Heng's proposal GFA 0.1 and GFA 1.0?
Off the top of my head, the only things that come to mind are the x and a lines sometimes seen in early minimap2 runs and the W walk line used in place of the P path line syntax.
Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
Examples of various commands are included in the examples.md file.
Can you please make examples.md a link to that file?
Please set the GitHub website link to the appropriate documentation. Click the button Edit next to the description A C++ library and utilities for manipulating the Graphical Fragment Assembly format. I recommend GitHub Pages if you have no documentation web site currently.
Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
Examples of the C++ API are included in the
interface.mdfile.
Can you please make interface.md a link to that file?
Automated tests: Are there automated tests or manual steps described so that the function of the software can be verified?
$ make check
prove test/gfa_test.t
test/gfa_test.t .. test/gfa_test.t: line 5: ./bash-tap/bash-tap-bootstrap: No such file or directory
test/gfa_test.t: line 7: plan: command not found
test/gfa_test.t: line 10: is: command not found
test/gfa_test.t: line 14: is: command not found
test/gfa_test.t: line 17: is: command not found
test/gfa_test.t: line 20: is: command not found
test/gfa_test.t: line 23: is: command not found
test/gfa_test.t: line 26: is: command not found
Processed 1 graphs...
Done.
test/gfa_test.t: line 29: is: command not found
Merging 2 graphs...
test/gfa_test.t: line 32: is: command not found
test/gfa_test.t .. Dubious, test returned 127 (wstat 32512, 0x7f00)
No subtests run
Test Summary Report
-------------------
test/gfa_test.t (Wstat: 32512 Tests: 0 Failed: 0)
Non-zero exit status: 127
Parse errors: No plan found in TAP output
Files=1, Tests=0, 1 wallclock secs ( 0.04 usr 0.01 sys + 0.06 cusr 0.06 csys = 0.17 CPU)
Result: FAIL
make: *** [Makefile:40: check] Error 1
Should the file bash-tap/bash-tap-bootstrap be included in the source code, or are further instructions needed for the automated tests?
You may want to consider using Autotools (autoconf and automake) if you're interested. Not a requirement though.
make install installs gfakluge.hpp, which depends on tinyfa.hpp and pliib.hpp, but those files are not installed by make install.
I've updated brewsci/bio/gfakluge to 1.1.0. See PR https://github.com/brewsci/homebrew-bio/pull/547
It'd be awesome if you'd like to submit PRs to bump the version for future releases. I'd be happy to show you around Homebrew/Linuxbrew and Brewsci/bio if you like. To open a PR for a new version release, you can do it in the GitHub web editor if you like. You need only update the url and sha256.
git clone --recursive make install installs pliib.hpp and tinyfa.hppI've updated brewsci/bio/gfakluge to 1.1.0.
Awesome! I was trying to do this before but struggling. I'd definitely appreciate the help learning how to bump a version and cut a fresh release on homebrew.
Awesome! I was trying to do this before but struggling. I'd definitely appreciate the help learning how to bump a version and cut a fresh release on homebrew.
Open an issue or PR next time over at Brewsci/bio, and if you run into any trouble, I'll be happy to walk you through it.
Thanks @sjackman, if all the items have been completed could you just update the checklist above?
@mgymrek All checked off, Melissa! โ
@whedon generate pdf
Attempting PDF compilation. Reticulating splines etc...
Thanks @sjackman!
@edawson could you (1) create a Zenodo archive and report the DOI in this thread and (2) check over the proof that was just generated by whedon?
@whedon generate pdf
Attempting PDF compilation. Reticulating splines etc...
@whedon generate pdf
Attempting PDF compilation. Reticulating splines etc...
@whedon generate pdf
Attempting PDF compilation. Reticulating splines etc...
@mgymrek I had to make a few changes to the bibliography that I missed earlier, but the latest proof is now good. The DOI is: 10.5281/zenodo.2546721 . Thanks (and thanks again @sjackman )!
Congrats, Eric! ๐พ
@whedon set 10.5281/zenodo.2546721 as archive
OK. 10.5281/zenodo.2546721 is the archive.
@whedon set 1.1.2 as version
OK. 1.1.2 is the version.
thanks, congrats @edawson! and thanks @sjackman for the helpful review
@whedon accept
Attempting dry run of processing paper acceptance...
Check final proof :point_right: https://github.com/openjournals/joss-papers/pull/449
If the paper PDF and Crossref deposit XML look good in https://github.com/openjournals/joss-papers/pull/449, then you can now move forward with accepting the submission by compiling again with the flag deposit=true e.g.
@whedon accept deposit=true
@whedon accept deposit=true
Doing it live! Attempting automated processing of paper acceptance...
๐จ๐จ๐จ THIS IS NOT A DRILL, YOU HAVE JUST ACCEPTED A PAPER INTO JOSS! ๐จ๐จ๐จ
Here's what you must now do:
Party like you just published a paper! ๐๐๐ฆ๐๐ป๐ค
Any issues? notify your editorial technical team...
@sjackman - many thanks for your review here and to @mgymrek for editing this submission โจ
@edawson - your paper is now accepted into JOSS :zap::rocket::boom:
:tada::tada::tada: Congratulations on your paper acceptance! :tada::tada::tada:
If you would like to include a link to your paper from your README use the following code snippets:
Markdown:
[](https://doi.org/10.21105/joss.01083)
HTML:
<a style="border-width:0" href="https://doi.org/10.21105/joss.01083">
<img src="http://joss.theoj.org/papers/10.21105/joss.01083/status.svg" alt="DOI badge" >
</a>
reStructuredText:
.. image:: http://joss.theoj.org/papers/10.21105/joss.01083/status.svg
:target: https://doi.org/10.21105/joss.01083
This is how it will look in your documentation:
We need your help!
Journal of Open Source Software is a community-run journal and relies upon volunteer effort. If you'd like to support us please consider doing either one (or both) of the the following:
I've added the citation to the Brewsci/bio package. https://github.com/brewsci/homebrew-bio/commit/311543ab3629b3fd029fdd16be59c2040867607b
The URL https://doi.org/10.21105/joss.01083 resolves to JOSS, but doi.org does not yet have a Bibtex entry. I imagine it will soon enough.
$ curl -sLH "Accept: text/bibliography; style=bibtex" "https://doi.org/10.21105/joss.01083"
Resource not found.
The URL https://doi.org/10.21105/joss.01083 resolves to JOSS, but doi.org does not yet have a Bibtex entry. I imagine it will soon enough.
Yeah, it can take a few hours for the DOI metadata to propagate properly.
Most helpful comment
thanks, congrats @edawson! and thanks @sjackman for the helpful review