Learnings from Google Summer of Code 2024
(The Julia Programming language)
Libraries and packages within the health and medicine domains have often intrigued me in some way or the other. The current state of the art, medical imaging frameworks such as "MONAI" (medical open network for AI), served as a catalyst for my endeavours under the Google-Summer-of-Code, 2024 with the Julia programming language.
Exposure to Julia as a scientific programming language, which suits itself for becoming an indispensable tool under scientific analysis and machine learning domains, became apparent from a textual publication I indulged in during my leisure, namely "Julia as a Second Language" by Erik Engheim, which only further solidified my alignments towards the language for it being a solution towards the 2 language problem. (Facilitating faster and iterative development, while a being dynamically typed language.)
The medical imaging package ecosystem under Julia is maintained by the JuliaHealth community, where professional personnel from healthcare and medicine build packages for medical analysis and improving medical outcomes. One such package put forward by mentor "Md. phd Dr. Jakub Mitura", is MedEye3d.jl, which aims at following the trails of 3dSlicer by becoming a complete visualisation toolkit for medical-imaging datasets in Julia.
MedEye3d.jl at a glance :
With mid-term evaluations nearing for my GSOC project, following are the intricate technical concepts that I was able to experience on-hand with practical consequences :
Channels in Julia
Channel{T=Any}(size::Int=0)
where T is the Type of the objects one can put in the channel, and size is the relative number of the objects we want to put in the channel asynchronously.MedEye3d.jl needed migration from Rocket.jl package to native Julia Base.Channels, in order to get rid of the frequent flickering and screen tear happening around the main image visualisation. Instead of being equipped with Rocket's actor-subscription mechanism, Julia's Base.channel producer-consumer mechanism took precedence. Channels in Julia are thread-safe dumpsters where you can dump an arbitrary amount of objects and have multiple processes consuming those objects, working on them.
#an example of a Julia's base.channel producer-consumer mechanism function consumer(channel::Base.Channel) object = take!(channel) #take removes the object from the channel after retrieving it. end mainChannel = Base.Channel{String}(1000) #can hold 1000 strings
Subscribe to my newsletter
Read articles from Divyansh Goyal directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Divyansh Goyal
Divyansh Goyal
Microsoft Learn Student Ambassador Sentient Being | Julia Lang admirer