Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE] Compare JuliaHealth Capabilities To Other Ecosystems #121

Open
TheCedarPrince opened this issue Dec 19, 2023 · 11 comments
Open

[FEATURE] Compare JuliaHealth Capabilities To Other Ecosystems #121

TheCedarPrince opened this issue Dec 19, 2023 · 11 comments
Labels
documentation Improvements or additions to documentation enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed

Comments

@TheCedarPrince
Copy link
Member

@Jay-sanjay and I were chatting about methods for benchmarking the JuliaHealth ecosystem against other ecosystems. I mentioned that benchmarking in terms of speed/performance would most likely not be possible but in terms of functionalities covered, I think this could be useful. Therefore, creating a table to host on the JuliaHealth website that aims to showcase the capabilities of JuliaHealth in relation to other available frameworks in Python and R would be great to add to the JuliaHealth website.

This would encompass looking for the following aspects of other ecosystems:

  1. Identify key functionalities provided by prominent health frameworks in Python and R.
  2. Evaluate and demonstrate how these functionalities can be achieved or approximated within JuliaHealth.
  3. Create a comprehensive table comparing functionalities across ecosystems, detailing their availability and implementation in JuliaHealth.

A potential table could look something like this:

Functionality Julia R Python
Building OMOP CDM Patient Cohorts OHDSICohortExpressions.jl CirceR
Cofactor OMOP CDM Patients OMOPCDMCohortCreator.jl Characterization

† Not an official JuliaHealth package
‡ Limited support

@TheCedarPrince TheCedarPrince added documentation Improvements or additions to documentation enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed labels Dec 19, 2023
@TheCedarPrince
Copy link
Member Author

I think BioJulia did a fantastic job of this here: https://biojulia.dev/BioJuliaDocs/dev/comparisons/biopython/

CC @M-PERSIC if you have perhaps any thoughts or ideas to contribute here on how we could effectively do this and any lessons you learned.

@sneha9231
Copy link

I have one question sorry if it sounds silly but after creating a table how can i show you? or how can i present to you like through ddocumenter.jl ? or something else?

@TheCedarPrince
Copy link
Member Author

Hi @sneha9231!

Great questions and not silly at all! Here's a few options:

  1. Fork this repository and then create a new file that contains the table. Create a PR with this new file and I can work with you to review it and how to add it into the website. This would be the best option.
  2. Create a table here on this issue using Markdown. Then I can comment here.

If you want to use Franklin to preview a table locally (note that for the website we use Franklin), do the following:

  1. Fork and clone this repository
  2. Instantiate this repository in your Julia REPL (i.e. open up Julia on your computer, go to the copied repository, and run ]activate . and ]instantiate within package mode)
  3. Within the normal Julia, run using Franklin then run serve()
  4. Navigate to http://localhost:8000 within your favorite browser
  5. Then you should see a live preview of the website!

If you add a new page called newfile.md, you would go to http://localhost:8000/newfile to see it. While you still have the serve() command running, you will see whatever content of newfile.md get updated as you edit it.

Hope that helps and let me know if you have any questions! I am available both here and on the Julia Slack (I have the same username).

Thanks!

~ tcp 🌳

@M-PERSIC
Copy link

M-PERSIC commented Dec 19, 2023

Thanks for the CC @TheCedarPrince! Here are a few insights:

  • I would wait before committing to a JuliaHealthDocs site until your org has been fully established, i.e. what are your main packages, do the packages cover most basic functionality required for your domain, etc. BioJuliaDocs is based on the SciMLDocs initiative which you can also use as a template
  • A more ambitious idea is that of a meta "omni" package that is just one package that loads all of the main JuliaHealth packages. You can look at my version for BioJulia called OmniBioJulia. It could be used, for example, for benchmarking the entire ecosystem at once similar to OmniPackage

@sneha9231 To add on to Jacob's comment, if the table is small and you only need to share it with others in the comment section, one can simply make a table in Markdown and add it to a comment (GitHub will automatically format it like so):

A B C
1 2 3
| A | B | C |
|---|---|---|
| 1 | 2 | 3 |

The Markdown Tables generator has an excellent UI for creating simple tables to start with

@Sweetdevil144
Copy link

The idea of benchmarking the JuliaHealth ecosystem in terms of functionality is a constructive approach. It allows for a direct comparison of capabilities without getting into the potentially complex and variable-dependent realm of performance benchmarking. Here's how I would contribute to this task:

  1. Identify Key Functionalities: I'd start by conducting a thorough literature review and online research to identify the most commonly used functionalities in health informatics frameworks within Python and R. This would include reviewing documentation, community forums, and academic publications to understand what features are considered essential by practitioners and researchers.

  2. Functionality Mapping: After identifying the functionalities, I'd map them to the current offerings of the JuliaHealth ecosystem. This would involve understanding the capabilities of JuliaHealth packages and how they correlate with those in Python and R.

  3. Gap Analysis: I'd perform a gap analysis to see where JuliaHealth stands relative to the other ecosystems. This would highlight the areas where JuliaHealth excels and where it might need further development.

  4. Create Comparative Table: With the information gathered, I would contribute to the creation of a comprehensive table that compares the functionalities across ecosystems, much like the example provided. This table would be both an informative piece for users and a roadmap for developers, showing where efforts could be concentrated for future development.

  5. Documentation and Examples: I would suggest adding practical examples and vignettes that demonstrate how JuliaHealth's functionalities can be used to achieve similar outcomes as those in Python and R. This would not only help in benchmarking but also serve as a valuable resource for users transitioning from those ecosystems to Julia.

  6. Community Engagement: Engaging with the community is crucial. I would suggest reaching out to the community for feedback, particularly to those who have experience in other ecosystems. They could provide insight into the most valued functionalities and performance expectations.

  7. Iterative Improvement: The benchmarking should be an ongoing process. As JuliaHealth develops, the table should be updated to reflect new capabilities and improvements.

  8. Collaboration: I would engage with other developers and users in the community, like M-PERSIC, to share knowledge and collaborate on this benchmarking project. Learning from their experiences, especially if they have done similar work with BioJulia, could streamline the process and help avoid potential pitfalls.

All comments and remarks are welcome!! ^^

@TheCedarPrince
Copy link
Member Author

Hey @Sweetdevil144 ,

Thanks for the comment here! Just some responses to your post about how we can turn this into actionable points:

Identify Key Functionalities

Like the example I had above in the original post, have you had a chance to look through the rest of JuliaHealth to find the other functionalities across the ecosystem? JuliaHealth is our baseline here for comparing to other package ecosystems -- then we can compare to other ecosystems.

Feel free to report what you find back here! 😄

Documentation and Examples

Yea! Would you want to take a crack at trying #112? We are trying to get this up and running but I haven't had a chance to yet. Happy to help mentor on that issue @Sweetdevil144

Community Engagement

Have you joined the Julia Slack @Sweetdevil144 ? I haven't seen you around in the #health-and-medicine channel yet. We'd love to have you!

@Jay-sanjay
Copy link
Member

Thanks @TheCedarPrince for putting our discussion regarding bench-marking in a separate issue, this would really be an important addition to the ecosystem.

@Sweetdevil144
Copy link

Hey @TheCedarPrince For your queries :

have you had a chance to look through the rest of JuliaHealth to find the other functionalities across the ecosystem?

Unfortunately not at the time. although I'll surely take a peek and fix this. Currently I'm working to focus more on he geospatial and geographic mapping of Julia and Machine Learning. I'll make sure to have a quick chat as I've joined the #health-and-medicine chat.

Yea! Would you want to take a crack at trying #112?

Absolutely, I'll take a crack at the issue as soon as possible.

My procedure to take a look on this issue was purely on a surface level, so I would request everyone not to take THAT much of inspiration with it 😆 .
Any other suggestions ?

@TheCedarPrince
Copy link
Member Author

TheCedarPrince commented Dec 23, 2023

Hi @Sweetdevil144 ,

Currently I'm working to focus more on he geospatial and geographic mapping of Julia and Machine Learning. I'll make sure to have a quick chat as I've joined the #health-and-medicine chat.

Sounds great and welcome aboard! I'll mention it, and we can chat more over Slack, in JuliaHealth there is definitely an interest in combining geospatial information and patient health records together. Would be an interesting thing to explore.

Absolutely, I'll take a crack at the issue as soon as possible.

If you have questions about this issue, feel free to follow up with me on #112 for sure. Thanks!

@TheCedarPrince
Copy link
Member Author

TheCedarPrince commented Dec 27, 2023

Hi @sneha9231!

Great questions and not silly at all! Here's a few options:

  1. Fork this repository and then create a new file that contains the table. Create a PR with this new file and I can work with you to review it and how to add it into the website. This would be the best option.
  2. Create a table here on this issue using Markdown. Then I can comment here.

If you want to use Franklin to preview a table locally (note that for the website we use Franklin), do the following:

  1. Fork and clone this repository
  2. Instantiate this repository in your Julia REPL (i.e. open up Julia on your computer, go to the copied repository, and run ]activate . and ]instantiate within package mode)
  3. Within the normal Julia, run using Franklin then run serve()
  4. Navigate to http://localhost:8000 within your favorite browser
  5. Then you should see a live preview of the website!

If you add a new page called newfile.md, you would go to http://localhost:8000/newfile to see it. While you still have the serve() command running, you will see whatever content of newfile.md get updated as you edit it.

Hope that helps and let me know if you have any questions! I am available both here and on the Julia Slack (I have the same username).

Thanks!

~ tcp 🌳

Hey @sneha9231, just following up from our Slack discussion -- these instructions and the original comment I made are still relevant to how to tackle this issue. Do you have any questions at the moment? If you make a PR, happy to chat more on this there! 😄

EDIT:

P.S. This is what I would love to have integrated into the website someday: https://biojulia.dev/BioJuliaDocs/dev/comparisons/biopython/

@sneha9231
Copy link

Not right now, i'll let you know for sure @TheCedarPrince

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed
Projects
Development

No branches or pull requests

5 participants