top of page

Our Open-Source Code

MesoHOPS_Logo-01.png

MesoHOPS is a formally exact trajectory based approach for solving the time evolution of open quantum systems coupled to non-Markovian thermal environments. MesoHOPS extends the Hierarchy Of Pure States (HOPS) formalism to leverage the dynamic localization present in the wave functions and construct an adaptive basis. Using the adaptive basis MesoHOPS is computationally tractable with large system sizes.

Tools

Github.png

We use GitHub for shared version control of our group codes. You 

should setup up an account soon and make sure you have been added as a collaborator. Here is a good primer and a guide for when we make mistakes.

Fork.png

We often use Fork to manage our local git repositories - especially if you haven't used git before this can ease the transition into shared version control.

PyCharm.png

We write lots of python code and we use PyCharm to do it. Remember that professional license is free for academics. 

Anaconda_Logo.png

We manage our python environments with anaconda. No python environment is clean for long, but we do our best to make ours maintainable. If you would like some help, this is a nice tutorial

SnakeVIz.png

We profile our python code using SnakeViz - you can Conda install it. Just remember -

premature optimization is the root of all evil (in code),

but once you see the bottleneck - fix it. 

style_guide.jpg

We all agree to write our code using a shared style guide. This helps make sure that we can all read our shared libraries. It is also worth looking over the zen of python and PEP8

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.


Readability counts.
 

-Tim Peters, 1999

Resources

Writing

Guides to writing papers

If you have not written a paper before (or even if you have!) here are some resources for how we write papers.

1. Storyboard like the paper depends on it

2. Think about how sentences and paragraphs are structured

3. Think about the words you use (and the one's you shouldn't)

4. Learn how to write with equations elegantly 

We use Zotero to manage citations and share bibliography references. Your thesis will thank you.

Zotero.jpg

We use overleaf to write shared latex documents. To help you get used to latex editing the way here is a useful cheat sheet

overleaf.png

If you have not done any coding before then it may be a bit intimidating to get started. We recommend the following tutorials, videos and resources to familiarize yourself with python.

Python

We often look at other peoples code to learn more about coding. These examples are mostly taken from other science groups who have similar challenges with making robust, maintainable, and numerically efficient python code. 

bottom of page