PennLINC Project Setup Guide
Each project at PennLINC has several key elements to facilitate collaboration and ensure reproducbility. For clarity in naming, all elements (GitHub, Slack, CUBIC, etc) should be named similarly– often Lastname_ProjectName with CamelCasing, where “Lastname” is the last name of the first author / trainee leading the project.
GitHub Repository
All code, from the beginning of the project, should be in a GitHub repository. This is a prerequisite for reproducible neuroscience – please start your project out on the right foot! These repos should reside in the PennLINC org, not your personal github.
Use the Template!
There is a GitHub repository template that you should use to create your project repository: https://github.com/PennLINC/paper-template.
Project documentation on GitHub Pages
Careful tracking of your project is essential. While well-commented code, reproducible analytic notebooks, and an archived Slack channel are very helpful, an “overview” website also helps a lot to document how the different pieces of code fit together. This can be easily made using markdown and GitHub Pages (like this one). See the project docs page for how to do this with your project’s GitHub repository.
Important
Your project website is very important! It is what your replication buddy will use at pre-defined checkpoints for replicating your code; see the project reproducibility guide for more info.
Slack Channel
All projects in the lab are collaborative, and furthermore form a knowledge and code base for other subsequent projects. A lot of valuable knowledge (esp re: troubleshooting) tends to be captured in correspondence. As such, it is critical for the lab that this knowledge is not “locked away” in inaccessible repositories like private email inboxes or direct message channels on Slack. As such nearly all project discussion should occur in a project specific Slack channel; this will be created (by Ted) when the project is initiated. Please try to avoid using direct message channels on Slack for project communication. The main exception to this are documents (e.g., manuscripts) that need review; please send these directly to Ted via email. See also our notes on Slack, Communication, & Collaboration.
CUBIC Project
Nearly all projects in the lab will require the HPC resources provided by CUBIC. Please see the CUBIC documentation for details on project setup.
For small projects, you may be able to use your personal user on CUBIC. However, for any project that will require more than minimal storage or that will involve collaboration or a reproducibilibuddy, you will want to either gain access to an existing project user or request a new one.
For each project, you will need a separate folder in the relevant user’s home directory on CUBIC, as well as a customized mamba environment for the project. For example, if you are working with the PAFIN dataset, you may want to use the pafin project user. However, since this is a shared project user, you will need to create a new project directory in the pafin user’s home directory, such as /cbica/projects/pafin/projects/Lastname_ProjectName. Inside that folder you will have a clone of your project’s GitHub repository and any data generated by the project.
Notion Project
We reccomend that notes on your project – including meeting notes, interim results, and links to code – be stored in a Notion project. When you joined the lab you should have been added to the PennLINC Notion Org. We are actively developing a project template for Notion and suggest you use this + provide feedback.
Zotero Library
Zotero is the most popular reference management tool in the lab. It may be integrated with Notion via Notero, and many lab members use it to manage the bibliographies for their manuscripts (often initially drafted in Google Docs).