dcjones/coitrees

Proposal: Next Step

cauliyang opened this issue · 3 comments

Current Ideas

  • replace panic with reasonable Error (pass the decision of handling errors to the user)
  • add Python binding
  • add Julia binding
  • add R binding
  • add C/C++ binding
  • add APIs documentation for bindings
  • add CI
  • add continuous benching and visualize result https://github.com/benchmark-action/github-action-benchmark
  • comprehensive benchmarking #7
  • add more convenient command lines tools

hi @dcjones, what do you think about the quick ideas?

I think this is a pretty good plan! To my mind, getting testing and benchmarking squared away should probably be the priority.

More comprehensive command line tools should probably be a separate crate, since that potentially expands the scope a lot. The current bed-intersect example isn't really intended to be used for serious work other than winning benchmarks 😜. Better to build something else than expand that.

As far as bindings, Python would be good. I might like to work on Julia bindings. I personally really dislike like doing R package development, but that's where a lot of potential users are, so we should consider that as well.

Hi @dcjones, Yep, it makes sense that we create convenient command-line tools in a separate crate. For the features of standalone tools, does the tool focus on some certain format (bed, vcf, etc.)? For example, the bedtk or bedtools provide features including filter, intersect, compute coverage, sort, etc. for bed files. We'd better define the feature scope of the standalone tool before implementation. What do you think about that?

For benchmarking, what kinds of datasets should we use? I could help conduct the benchmarking as well.

For the binding, I will begin to work on the Python binding after we merge the most recent PR. I do not like R as well, even though it is popular. However, I could try to figure out how to add R binding after we finish Julia and Python binding.

For Python binding, I would also add CI that uses a GitHub action to release the Python library automatically.

As for the API document of the bindings (R, Julia, Python), do we provide it via md files or other document systems like Sphinx, Rustdoc, mkdocs, etc.?

Again, I really appreciate your work and time, and let's show off the tool to a more wide community.

Hi @dcjones, Thanks for your time! I am going to work for Python binding recently. Also, I can help test for coitrees neon, and add the information to readme.