{"id":50139456,"url":"https://github.com/dpeerlab/qibs2026","last_synced_at":"2026-05-24T00:06:22.529Z","repository":{"id":347323488,"uuid":"1180671812","full_name":"dpeerlab/qibs2026","owner":"dpeerlab","description":"QIBS 2026 Module 6 workshop","archived":false,"fork":false,"pushed_at":"2026-05-12T19:36:07.000Z","size":8348,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-12T21:26:18.451Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dpeerlab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-13T09:35:12.000Z","updated_at":"2026-05-12T19:36:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dpeerlab/qibs2026","commit_stats":null,"previous_names":["dpeerlab/qibs2026"],"tags_count":0,"template":false,"template_full_name":"WeilerP/sc_analysis_template","purl":"pkg:github/dpeerlab/qibs2026","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dpeerlab%2Fqibs2026","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dpeerlab%2Fqibs2026/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dpeerlab%2Fqibs2026/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dpeerlab%2Fqibs2026/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dpeerlab","download_url":"https://codeload.github.com/dpeerlab/qibs2026/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dpeerlab%2Fqibs2026/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33416320,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"ssl_error","status_checked_at":"2026-05-23T22:14:43.778Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-24T00:06:19.373Z","updated_at":"2026-05-24T00:06:22.516Z","avatar_url":"https://github.com/dpeerlab.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QIBS 2026 - Module 6 workshop\n\nWelcome to the QIBS 2026 module 6 labs! In our four sessions together, you will gain hands-on experience in analyzing single-cell sequencing data. The dates for each lab are\n\n-   **Lab 1**: Friday, March 25, 2026, 12-2pm ET\n-   **Lab 2**: Friday, April 3, 2026, 12-2pm ET\n-   **Lab 3**: Thursday, April 23, 2026, 9-11am ET\n-   **Lab 4**: Friday, April 24, 2026, 12-2pm ET\n\nIn this README, I will provide the necessary details to complete each lab, so please **always pull the latest version of the repository at the beginning of our sessions!**\n\n## Setup\n\nI am assuming that your local SSH config includes aliases to ssh into the Cayuga login node **and** compute nodes via a\nproxy jump, i.e.,\n\n```\nHost cayuga-login\n  Hostname cayuga-login1.cac.cornell.edu\n  IdentityFile path/to/cayuga/ssh/key\n  User CWID\n  RequestTTY force\n  ServerAliveInterval 60\n  TCPKeepAlive yes\n\n# Specify HostName with assigned hostname after job submission\nHost cayuga-compute\n  HostName HOSTNAME\n  ProxyJump cayuga-login\n  IdentityFile path/to/cayuga/ssh/key\n  User CWID\n```\n\nwhere _CWID_ is your user id, and _HOSTNAME_ the assigned compute node after starting an interactive session; please adjust any following commands if your setup differs.\n\n### General\n\nPlease setup this repository as follows\n\n```bash\nssh cayuga-login\ncd /athena/qibs_class/scratch/CWID/optional/additional/path\ngit clone https://github.com/dpeerlab/qibs2026.git\n```\n\nAll provided commands assume that the qibs2026 repository is at the base of your scratch directory; i.e., make sure the adjust the commands if your setup differs.\n\n### Job submission\n\n```bash\n# ssh into cayuga login node\nssh cayuga-login\n# start a screen session\nscreen -S qibs2026_module_6\n# start an interactive session\nsrun -n1 --pty --partition=qibs_class --mem=16G --time=02:00:00 bash -i\n# hostname to use for HOSTNAME in ssh config\nhostname\n```\n\nAfter updating you ssh config file, you can connect to the Cayuga compute node via the IDE of your choice, preferably [VS Code](https://code.visualstudio.com/) for our sessions. [For VS Code](https://code.visualstudio.com/docs/remote/ssh): _Open a Remote Window_ \u003e _cayuga-login_; then open the qibs2026 directory.\n\n### Jupyter notebook setup\n\nOn the compute node, you can activate the conda environment that I am providing with\n\n```bash\nconda activate /athena/cayuga_0083/scratch/pfw4001/envs/qibs2026-py312\n```\n\nWhen you use the environment for the first time, you may have to run\n\n```bash\nconda activate /athena/cayuga_0083/scratch/pfw4001/envs/qibs2026-py312\npython -m ipykernel install --user --name qibs2026-py312\n```\n\nin order to use the kernel for your Jupyter notebooks.\n\n### QIBS2026 repository details\n\nFor our purporse, the important parts of this repository are\n\n-   `data/`: this directory will contain the data we are using\n-   `notebooks/`: you will find the notebooks for each session here\n\nIn combination with the provided conda environment, the Python package corresponding to this repo _qibs2026_ provides easy access the data directory in Python from anywhere via the `DATA_DIR` variable\n\n```python\nfrom qibs2026 import DATA_DIR\n```\n\n## Lab instructions\n\n### Lab 1\n\nIn our first lab, we will implement a standard scRNA-seq analysis pipeline. The corresponding Jupyter notebook includes questions for which you will provide the answers to using the worksheet you have received.\n\n-   **Data**: copy the data for this lab into the data directory\n\n```bash\ncp -r /athena/qibs_class/scratch/pfw4001/data/lab_1 /athena/qibs_class/scratch/CWID/qibs2026/data/\n```\n\n-   **Notebook**: `notebooks/lab_1/sc_basics.ipynb`\n-   **Deadline for worksheet**: April 2 at 12pm ET\n\nPlease upload the worksheet and notebook to the Google Drive we shared with you, using the file format `worksheet_1_LASTNAME.xlsx` and `sc_basics_LASTNAME.ipynb`.\n\n### Lab 2\n\nIn our second lab, we will discuss analysing single-cell perturbation data! The corresponding notebook again includes questions for you to answer. As for the first lab, please upload the answer sheet and notebook following the same naming convention as before.\n\n-   **Data**: either use the `DATA_DIR` variable or copy the data for this lab into the data directory and import from there\n\n```bash\ncp -r /athena/qibs_class/scratch/pfw4001/data/lab_2 /athena/qibs_class/scratch/CWID/qibs2026/data/\n```\n\n-   **Notebook**: `notebooks/lab_2/sc_perturbseq.ipynb`\n-   **Deadline for worksheet**: April 9 at 12pm ET\n\n### Lab 3\n\nIn our third lab, we will discuss analysing single-cell ATAC data! There are again questions for you to answer in the correspoding notebook. Please upload the answer sheet and notebook following the same naming convention as before.\n\n-   **Data**: either use the `DATA_DIR` variable or copy the data for this lab into the data directory and import from there\n\n```bash\ncp -r /athena/qibs_class/scratch/pfw4001/data/lab_3 /athena/qibs_class/scratch/CWID/qibs2026/data/\n```\n\n-   **Notebook**: `notebooks/lab_3/scatacseq.ipynb`\n-   **Deadline for worksheet**: April 29 at 12pm ET\n\n### Lab 4\n\nOur fourth and final lab combines the different data views - the transcriptome via scRNA-seq and chromatin accessibility via scATAC-seq - we have studied so far independently of each other in a single analysis via multiome data. As for the previous sessions, there are questions for you to answer in the correspoding notebook. Please upload the answer sheet and notebook following the same naming convention as before.\n\n-   **Data**: either use the `DATA_DIR` variable or copy the data for this lab into the data directory and import from there\n\n```bash\ncp -r /athena/qibs_class/scratch/pfw4001/data/lab_4 /athena/qibs_class/scratch/CWID/qibs2026/data/\n```\n\n-   **Notebook**: `notebooks/lab_4/scmultiome.ipynb`\n-   **Deadline for worksheet**: April 30 at 12pm ET\n\n## Installation\n\nThere is no need to install anything since we will use an existing conda environment. However, these are the commands I\nused to set it up\n\n```bash\nconda create -n qibs-py312 python=3.12 --yes \u0026\u0026 conda activate qibs-py312\npip install -e \".[dev,jupyter]\"\npre-commit install\n\npython -m ipykernel install --user --name qibs-py312 --display-name \"qibs-py312\"\n\nconda install -c bioconda bedtools --yes\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdpeerlab%2Fqibs2026","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdpeerlab%2Fqibs2026","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdpeerlab%2Fqibs2026/lists"}