JuliaGraphs / JuliaGraphs/Graphs.jl

A reliable idiomatic wrapper for the C library `very_nauty` [$400]

Open
#448 16 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

bounty bounty:400
Dominant language
Julia
Stars
538
Forks
128
Avg merge
10h 25m
Merged PRs (30d)
2

Description

A reliable idiomatic very_nauty wrapper [$400]

The JuliaGraphs/VNGraphs.jl package already exists and provides a simple low-level wrapper for the C library. A lot of this work probably will not be directly in the Graphs.jl repository.

  • Fast conversion and/or views between Graphs.jl types and the C structures of very_nauty (slow converters already exist for simple graphs)
  • Complete Graph API support for the VNGraph types (so that VNGraph types can be used in all already existing Graph.jl algorithms that do not peek behind the API)
  • use GraphsInterfaceChecker.jl in the test suite
  • Dispatch from operations defined in Graphs/GraphsMatching/GraphsOptim to very_nauty implementation. For instance if there is a pre-existing Graphs.some_interesting_property(::AbstractGraph) there should now be a new method defined in VNGraphs some_interesting_property(g::AbstractGraph, ::VNAlgorithm) that dispatches to the C implementation. It should convert the g argument to VNGraph if necessary.
  • If there is an algorithm defined in very_nauty that does not exist yet in Graphs.jl, it should be declared in Graphs.jl (just a function with docs but no methods), together with an error hint that VNGraphs is necessary.
  • Proper tests and documentation.
  • PRs on this topic have to be submitted with clean git histories and well compartmentalized for ease of review.

Required skills: familiarity with the Graphs.jl API and understanding of the Julia-C interface

Reviewer: any Graphs.jl member with merge rights

Duration: 3 months

Payout procedure:

The Funding for these bounties comes from the National Science Foundation and from the NSF Center for Quantum Networks. The payouts are managed by the NumFOCUS foundation and processed in bulk once every two months. If you live in a country in which NumFOCUS can make payments, you can participate in this bounty program.

Click here for more details about the bug bounty program.

Bug bounty logistic details (click to expand)

To claim exclusive time to work on this bounty either post a comment here or message skrastanov@umass.edu with:

  • your name
  • github username
  • (optional) a brief list of previous pertinent projects you have engaged in

If you want to, you can work on this project without making a claim, however claims are encouraged to give you and other contributors peace of mind. Whoever has made a claim takes precedence when solutions are considered.

You can always propose your own funded project, if you would like to contribute something of value that is not yet covered by an official bounty.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the existing JuliaGraphs/VNGraphs.jl wrapper and the slow Graphs.jl converters for simple graphs. Read the Graphs.jl API, GraphsInterfaceChecker.jl, and the Graphs/GraphsMatching/GraphsOptim algorithms to map the required VNGraph support and dispatch points. Done means fast conversions, complete API coverage, tests, documentation, and cleanly separated pull requests.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, julia
Domain
data
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.