I am searching for PhD programs on Atmospheric Sciences and i can see that the most prefer/require knowledge of Python but almost no one refers to Julia.
From your experience on PhD, it would be a problem in my studies, if instead of python (that they prefer) i will work in my favorite Julia? Did your professor accept working with Julia instead of python?
That very depends on your advisor: some have strong opinions about the tools you should use, others will be happy for you to use what you believe are the best tools to get the job done. The only thing you can do is to talk with them.
I did my doctorate more than a decade ago but in my experience it’s never about the tools when dealing with science. It’s about you being effective at testing your hypotheses. Whatever language you choose should be fine. I coded most of my work in C++ while my supervisor was a devout fan of perl at the time. I also learned perl of course which was a fun and liberating experience.
I can say this though; Had Julia been around when i did my PhD i would have chosen that no questions asked.
In my experience, my supervisors/advisors/mentors/etc have effectively said “the course/project/etc is in matlab/python/etc, so if you decide to do it in Julia then don’t ask for any support and provide some kind of wrapper so that other people can use it in the project’s “official” language/format”.
I’ve always decided to do that and not had a problem, but it helps that I actually enjoy learning more about the problem and about Julia so that being completely on my own was never a problem. So, assuming that your advisors are sufficiently lax that they’d say something like the above, I think it would be important to decide whether you’re interested enough in programming languages that the slight extra time things might take to figure out on your own would be enjoyable and worthwhile for you personally.
The goal of a science PhD is to do science in collaboration with a team. If a nonstandard toolset allows you to do that science faster/easier/better — and your collaborators are ok with it — then go for it. But be very careful: you can easily be derailed and spend more time building tools than doing science. Sure, that can be valuable in its own right, but it’s not your primary goal.
speaking from experience…
I am in my 5th year in a PhD in Atmospheric Sciences (click here to see what we do in our group). Of course it will vary a lot depending on what you will do in your project and where will you collaborate, but I have some thoughts.
If an important part of your job is running simulations and modifying existing code then you will need to be able to use whatever language the code is using. For example, very comprehensive models are written in good old Fortran, some have python interfaces, etc.
If you are in a collaborative project, you will need to be able to use whatever tools others are using, possibly python and in the Atmospheric Sciences for sure you will find a lot of Matlab users.
In my case, I’ve been using Julia for all my data analysis and this didn’t make me spend twice the time because I didn’t get code from anyone in another language, also my advisor does not care what I use as we only collaborate by sharing “products” but he doesn’t do anything with my code, so that is okay. I would say that for sure it is a good question to ask your potential advisors, although I don’t think you should close yourself to any opportunities because of a Python vs Matlab vs Julia preference. You will have enough time to preach Julia to all your colleagues during your PhD.
Two things I would like to add:
Most of the tooling for weather/climate things is growing a lot in Python, not so much in Julia. So I have seen that some students use their spare time to develop the Julia tooling for the community, which will be very important for adoption.
And one more thought, have you checked the CLIMA project? This is a project based in the USA building a Climate Model in Julia. It has members in MIT, Caltech, the Naval Posgraduate Schol, and many other places. If this is your thing, you may be interested in checking it out as you would not have problems for working in julia. There are many people working in this project in the julia community and I suspect it may have many broad topics, because this is a very complex model. Do you like cloud parameterizations? they have them, do you like dynamics the most? they are working on in. Do you prefer land processes, carbon cycle or biological processes? yes, there are people working on that.
I am doing my Ph.D. using Julia (computer engineering)! I research in the optimization area. It took a while to convince my advisor, but now he even adopts it in his classes!
I did my studies in Atmospheric Sciences between 2002-2013, Bacc, Masters and PhD.
I went from Fortran to Matlab… Some were beginning to advocate Python around 2009-2011. Without much success at first. 5-6 years later Python was everywhere!
Climate modelling and analysis covers a lot of ground and having a comprehensive tooling is hard: statistical analysis and modelling, physics modelling, probabilistic approachs, big data handling ( its easy to need to analyze more than 50 TB of data, which needs out of core data handlng-> hello xarray). Also, scaling the workflow on clusters is often necessary, etc.
Hence, the Julia ecosystem is perhaps not there yet, but I would say we are close:
Statistics and probabilistic packages are already better than python alternatives
In my opinion, doing a PhD with Julia is 100% feasible, but you certainly need to talk to your supervisor(s). For example, Montréal Polytechnique Math department migrated to Julia (from Matlab…skipping Python due to Julia’s technical advantages in scientific computing). Those advantages allows certains analysis not possible in Python or Matlab (without Cython, numba, mex files, etc).
In the end, my argument for Julia is that you can do faster itérations of your development cycles with Julia… In a PhD, this means a lot.
If I would have had Julia instead of Python/ Numba/ C++ for my PhD I would have saved at least half a year for my simulations and would have had better result… I started my PhD 2010, you are so lucky that you start it now where Julia exists and has mature libraries…
I would like to add that a PhD is generally a solitary journey in which you will work things out by yourself under supervision. Unless your research group developed a framework or a major project that they would like to keep improving, you should not choose a language/technology based on others’s tastes. Remember you will spend at least 4 years using the language, it better be a pleasant experience.
Just speaking from my own experience, I’m certainly glad that I did my PhD work in Julia. It would have been even better if I could have done my entire PhD in Julia, but I only picked it up a couple years before I graduated. Being able to produce code that was not a complete mess (ruling out C++) but was also fast enough to prove that what I was doing made practical sense (ruling out Python) was amazing.
On the other hand, I had to be willing to do a lot of development and debugging myself, and I had to write more of my own tools than I would have had to if I’d stayed in Python. But I enjoy that sort of thing
In my case, I started my PhD in 2009 and finished it in 2012. I used Matlab to simulate a swarm of UAVs to test filters that can handle delayed measurements. It was so slow that a single Monte Carlo simulation would take 4 months to finish. I ended up “wasting” 2 months recoding everything in C using CMEX. Then, one or two weeks after I finished everything, I read the first blog post about Julia You are so lucky to have this kind of tool now…
The conclusion is not “use Julia”, but do some research to use the right tool. In my case, I had to code everything, so that any language would fit. I selected Matlab, which helped prototype, but gave me problems since I needed to execute simulation many times. For example: if you are treating data, maybe you can use whatever you want. If you need to work with an existing model, it is perhaps better to use the same language. Translating complex models to other languages is not nice 99% of the time
I’m using Julia in my neuroscience PhD. It’s not really numerically heavy work right now so I’m not using Julia for maximum speed, but because I can easily express my analyses with it how I want. Along the way I made a PR to Julia which improved the readability of stack traces, which felt amazing. Imagine being able to just improve your pain points with Matlab yourself… I also wrote packages like Chain.jl and DataFrameMacros.jl because I had a specific idea what syntax I wanted to use. All possible because of macros. I’m sometimes calling out to Matlab, Python or R via the respective connection packages, and rarely have to really use these tools on their own. Overall I’m quite happy, I make heavy use of environments for almost any analysis I do to keep things nice and tidy. The only thing is the compilation latency, because of the many environments and Makie.jl I often have to wait for compilation. Overall, I would only recommend my approach to curious people with a knack for solving little issues here and there. Many of my colleagues just want to use the established tools because they need to be able to find lots of help online, and don’t care about “elegance of implementation” or macro capabilities or environments. Which is also fine, everybody has to find their solution according to their needs.
I implemented an interval branch and bound algorithm in OCaml during my PhD. As an obscure language, that’s hard to beat
OCaml is used by hedge funds though, so, $$$
Isn’t julia used inside Blackrock? So $$$$$$$$$$$$$$
I gave up on OCaml because of the float operations which are expressed as
1.0 +. 2.0 which was a lot of pain in problems where Ints and Floats were present
No fancy broadcasting with dots in OCaml