This is a repo containing useful tutorials on different package and tools the Contextual Dynamics Lab uses most. Each tutorial is contained in its own folder.
In general, our tutorials are intended to cultivate and facilitate a "science hacker mindset" and provide some of the tools needed to thrive in an open science hackerspace. As a place to start, you might be interested in viewing this video, which introduces the science hacker mentality and provides an overview of many of the approaches we use in the lab.
You can try running anything on your own system, but the supported method for injesting the tutorials is through our included Docker container. This will allow you to reproduce our computational environment, which is useful for ensuring that things will run the same on any physical system (tested on OSX/MacOS, Windows, Ubuntu, and Debian). Instruction for setting up and using the Docker container are below (copied and modified from the MIND repo):
docker build -t cdl .
Desktop
to /mnt
within the container, so that location is shared between your host OS and the container. Feel free to change Desktop
to whatever folder you prefer to share instead, but make sure to provide the full path. The command will also share port 9999
with your host computer so any jupyter notebooks launched from within the container will be accessible at localhost:9999
in your web browserdocker run -it -p 9999:9999 --name cdl -v ~/Desktop:/mnt cdl
root@
prefix in your terminal, if so you've successfully created a container and are running a shell from inside!jupyter lab --port=9999 --no-browser --ip=0.0.0.0 --allow-root
docker start cdl && docker attach cdl
root@
prefix, letting you know you're inside the containerctrl + d
from the same terminal you used to launch the container, or docker stop cdl
from any other terminalIf you need help or if something is unclear, join our slack's computrons
channel here.
Post a GitHub issue or get in touch!
Our science is made better through the hard work and dedication of the science community. We are committed to giving back, and we hope you'll join us in that effort!
If you have a new tutorial idea or suggestion, please post an GitHub issue with your suggested change or addition. That will give everyone an opportunity to weigh in on and discuss your proposal. This is especially important prior to putting in efforts to substantially modify existing content (e.g. to avoid wasted effort). Please check through the existing issues list to make sure that your idea hasn't already been proposed, and to get a sense of which issues are being actively worked on (and who is working on them). You may also want to add comments to existing issues to help clarify or add to an existing idea.
We track all tutorial ideas through this project board. To add your issue to the backlog, select the "Tutorials" project from the project dropdown list when you create the issue or edit the issue details. You can add any additional thoughts, commentary, arguments for prioritizing the given tutorial, offers to work on the given tutorial, etc. via the issue comments.
To contribute by adding, subtracting, or modifying the existing content, please:
If you are contributing Python code, we prefer Python 3 and try to follow the PEP8 style guide when possible.
We provide a sample suggested tutorial template here. Your tutorial doesn't necessarily have to follow that format, but the example provides a general sense of the sorts of things we hope each tutorial will include.
If you have your own tutorial ideas, feel free to start a new folder, add your stuff (potentially by modifying a copy of the tutorial template), and submit a pull request!
Let us know! We love to hear how the community is using our work and how we can make it better!