Repository navigation
Code review #24
Description
Hi and thanks for the nice package. Before moving to BioJulia, I took a look over your code and found a bunch of issues you might want to address:
KEGG itself is for academic users only. I think you should either
- Feature this prominently in the README or the docs of exported functions, or
- License the package to only academic users
You can't use batching with kegg_ddi. It means some combinations (of drugs in different batches) are not tested.
Where possible, specify the return type in the documentation signature.
Some functions do not describe what they return.
In kegg_conv, it is confusing that timeout refers to something other than a normal request timeout. It seems to be an interval between requests. I suggest renaming to another keyword. This is also present in other functions.
The code is inconsistent as to what KeggTupleList means. E.g. conv_parser returns two columns in the .data vector, whereas kegg_conv returns a vector of rows.
I think you should document the type more precisely. With comments, specify what each field means, then check all functions conform to that
chunk_vector already exists as collect(Iterators.partition(vec, chunk_size)). The existing implementation returns views, which might be preferable from a performance standpoint.
The examples in the docstring should be tested. See documenter for how to do this. For example, the documentation of kegg_conv calls a nonexistent function.
No structs are public or exported. I recommend making the types of all values that are returned from functions public. Also, RequestError should probably be public.
The documentation of request promises that a RequestError is returned on error. But HTTP can also throw exceptions so that is not true.
In kegg_ddi, repeated string concatenation is quadratic. Use a buffer to store strings, then call join at the end.
In kegg_list, there is no guarantee that a read with readavailable reads whole lines. Hence, the following eachline could read partial lines and corrupt data. Since you store all the data anyway, you might as well just read in all the data at once.
Base using SomePackage is not a good idea in registered packages, because if any identifier conflicts with a future export from Base, you can get a conflict. Instead, use the specific names you use from packages: using SomePackage: some_name, OtherName.
The docstring for kegg_list makes no sense - both kegg_list(brite::String, option::String) and kegg_list(genome::String, option::String) refer to the same signature. Should option be replaced with query_type?
If request is not inteded for direct use, why is it exported?
Consider marking const fields of mutable structs const.
There is no compat for Test or Runic - okay since they're test dependencies, but still a good idea.
CodeCov does not seem to work - at least the coverage is "unknown" on the README badge, and clicking the badge leads to a dead link.
I believe colnames in conv_parser is wrong - KEGG orders sources first, then target.
Activity
cvigilv commentedon Sep 7, 2026
I split this review into focused issues so each change can be discussed and implemented independently:
The tabular-result work in #26 now proposes a Tables.jl-compatible result type. A sensible implementation order is #26, #27, #28, #29, #30, and then #31. The licensing notice, coverage repair, and test-tool compatibility work can proceed independently.
oxinabox commentedon Sep 9, 2026
KEGG is not restricted to academic users.
Commercial users are permitted if they have a license.
Commercial lisences are not cheap.
But they exist.
Mentioning thid in read me, probably via linking to the kegg lisences page makes sense.
I would strongly advise against making this package only lisenced for academic users.
Or for people with kegg lisences.
Because it would then no longer be open source.
And being open source is a requirement for registration in the Julia registry.
The package listence doesn't have to reflect the listence of what it can access.
fix: standardize tabular result rows
cvigilv commentedon Sep 17, 2026
Hi @jakobnissen! Just wrapped up fixing all the comments you proposed. Let me know what you think to see if I need to add anything else before the transfer of ownership
jakobnissen commentedon Sep 24, 2026
Sorry for letting you hang - I think it's ready now! I'm not available this weekend but if you transfer ownership I can set up the repo tomorrow Friday, or next week.
cvigilv commentedon Sep 28, 2026
@jakobnissen Just transfered ownership to BioJulia, let me know what I should do to wrap this up
jakobnissen commentedon Sep 28, 2026
I think we’re all set
cvigilv commentedon Sep 28, 2026
Could you add me as a maintainer? That way I can release the changes resulting from your review + point the Pkg registration to this URL
jakobnissen commentedon Sep 29, 2026
Done