Welcome to the Quetzal-CoalTL tutorials! :tada:

These tutorials should help you have a better grasp of what this library can do for you (spoiler: it will not solve you PhD :trollface:)

If you are here, then there is a good chance that you are interested in writing complicated code to simulate complicated stuff in complicated landscapes and you would like to understand how this library is eveeeer going to simplify your life :laughing:

Well, the problem with stacking up complications is that at the end it’s quite tricky to give you an overview of the library capabilities and possible extensions without having you running away in utter despair! :scream_cat:

So I will try to keep things simple. But even doing so, there will be problems along this bumpy road I’m trying to carve for us. So don’t get discouraged if something happens, and contact me to help you out:

  • :email: write me an email
  • :heavy_exclamation_mark: or open an issue on github!
  • :point_down: or much easier, just describe you problem in the comment sections!

What’s in it for me?

The big goal of this series of tutorial is to have you be able to use the library to write your own Quetzal-EGG simulator :egg: or to extend the library in the direction of your choice :rocket:

But to do so you will have to understand a few concepts:

  • :microscope: some are scientific in nature (e.g., how to model gene genealogies in landscapes)
  • :computer: some are pure C++ concepts (e.g., template programming, policy-based design)
  • :snake: other are concepts that are specific to Quetzal-CoalTL (e.g., what the library mean by “manipulating gene trees?”).

Consequently, we will begin with simplistic models and expectations, like simulating a gene copy walking in a straight line, or counting the increasing number of leaves in a coalescing tree.

Not as fun as full blown Quetzal-EGGS, but assuredly more tractable!

But no worries, at the end, we will tie everything together to come up with a customized, usable simulator! :egg: :egg: :egg:

What is not in there?

:scream_cat: My time is limited. I know. It sucks, metaphysically speaking.

But it also mean I may unfortunately not be able to give you a full course on C++ programming (I would love to, though). Fortunately, many resources out-there would do a much better job at it than I could ever do: go find them! :1st_place_medal:

I will always try to answer your questions and help you the best I can! If you ask them!

Any final word before I venture further?

If you’re beginning with C++, stay strong, it’s not about you, it’s just a very stubborn compiler: you rock! :muscle: