From d5c9d8a1383c0ecefa9bf55757120e67b845e996 Mon Sep 17 00:00:00 2001 From: Anna Bernadas <104145634+a2nabc@users.noreply.github.com> Date: Wed, 27 Nov 2024 11:19:14 -0500 Subject: [PATCH 1/3] feat: Creating vpn page (#95) * Creating vpn page * Add content to onboarding VPN page * Update docs/onboarding_offboarding/Onboarding/vpn.md Co-authored-by: mtran * Update docs/onboarding_offboarding/Onboarding/vpn.md Co-authored-by: mtran * Update docs/onboarding_offboarding/Onboarding/vpn.md Co-authored-by: mtran --- docs/onboarding_offboarding/Onboarding/vpn.md | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 docs/onboarding_offboarding/Onboarding/vpn.md diff --git a/docs/onboarding_offboarding/Onboarding/vpn.md b/docs/onboarding_offboarding/Onboarding/vpn.md new file mode 100644 index 00000000..d7ce8b5c --- /dev/null +++ b/docs/onboarding_offboarding/Onboarding/vpn.md @@ -0,0 +1,71 @@ +# [Configuring UHN VPN](#configuring-vpn) + +## Quick introduction: why do we need a VPN? + +A Virtual Private Network (VPN) is essential in the workplace to ensure secure and private access to the company network, especially when working remotely or on public Wi-Fi. + +A VPN encrypts internet traffic, protecting sensitive data from potential cyber threats and unauthorized access. This helps maintain confidentiality, ensures data integrity, and supports secure access to internal resources, safeguarding the organization's digital environment. + +GlobalProtect is UHN's VPN service for workers. GlobalProtect provides secure, encrypted access to the corporate network, ensuring users can safely connect to company resources from any location, while maintaining data security and compliance with organizational policies. + +## Steps for configuring VPN on personal devices + +Most likely you will need to configure the VPN on your personal device. The person onboarding you or your supervisor will probably tell you so and either request VPN access to IT for you or help you to do it. + +IT will generally accept the request quickly, and send instructions to your corporate email on the steps to follow to install and configure the VPN. + +If you are a Windows or Mac user, that's it. The manual is pretty good, simple and straightforward. Follow the steps and you've got this. Easy. + +If you are on Ubuntu... There's no downloading link or steps. You get stuck on the very first step. Don't worry, you don't have to open a ticket on Helpdesk and wait for them to respond... The next section will make things easier for you. + +## Downloading GlobalProtect software on Ubuntu +After contacting Helpdesk a few times, I finally got an email with the downloading instructions for Ubuntu. Here I leave the email, I think it may be useful. + +> Download the installation file from the [link](https://roseshare.rose-hulman.edu/portal/s/162637781701644125980.tgz) or via the curl command: +> + curl https://roseshare.rose-hulman.edu/portal/s/162637781701644125980.tgz --output PanGPLinux-5.3.0-c32.tgz --ciphers 'DEFAULT:!DH' + +> Unzip tar file, by running: tar -xvf PanGPLinux-5.3.0-c32.tgz + +> Install the program: + +> On Ubuntu/Debian, this is done through the command: +> + sudo dpkg –i GlobalProtect_deb-5.3.0.0-32.deb + +> On Redhat/CentOS, this is done through the command: +> + sudo yum localinstall GlobalProtect_rpm-5.3.0.0-32.rpm + +> To start the program, simply enter in a shell +> + globalprotect + +> and then a prompt should display. + +> From the prompt, run +> + connect -portal connect2.uhn.ca + + +> Login with your email address (username@uhn.ca) as your username and password. + +> Type quit to exit the prompt. + +## That's it - just remember connecting and disconnecting the VPN every time you need it + +Now that you have your laptop configured for the VPN, don't forget connecting every time you want to use it, running the following command: + + globalprotect + +And then running in the prompt: + + connect -portal connect2.uhn.ca + +When you want to disconnect from the VPN, you have to run + + globalprotect + +And then in the prompt: + + disconnect \ No newline at end of file From 398291893644a103837dceeda673c367d45bce8f Mon Sep 17 00:00:00 2001 From: Matthew Boccalon Date: Wed, 27 Nov 2024 11:19:41 -0500 Subject: [PATCH 2/3] feat: Added Owl page under General/Meetings/ (#90) * Addition of Owl page * More information about finding/obtaining the owl. Blurb about how to use the Owl. --------- Co-authored-by: Jermiah Joseph <44614774+jjjermiah@users.noreply.github.com> --- docs/General/Meetings/owl_basics.md | 17 +++++++ pixi.lock | 77 ++++++++++++++--------------- 2 files changed, 55 insertions(+), 39 deletions(-) create mode 100644 docs/General/Meetings/owl_basics.md diff --git a/docs/General/Meetings/owl_basics.md b/docs/General/Meetings/owl_basics.md new file mode 100644 index 00000000..3d0556b3 --- /dev/null +++ b/docs/General/Meetings/owl_basics.md @@ -0,0 +1,17 @@ +# Lab Owl meeting Basics + +The Owl is a device that works as video and audio input for all meetings conducted in the BHK lab. It is pivotal to include the Owl in all lab meetings to bridge the gap between the users tuning in remote to the users on site. + +## How to find/obtain the Owl + +1. Go to Jermiah's work station (W-16). +2. Grab the key located on the bottom side of Jermiah's desk. +3. Using the key open the top drawer of the filing cabinet under Jermiah's workstation and grab the key labelled "Owl key". +4. Use this new key to open the bottom drawer of the filing cabinet directly to the right of the lab/GPU server and pull out the green Owl duffle bag. + +## How to use the Owl + +The Owl has two major setup components. The Owl must be connected to an electrical outlet and also be connected to your computer via a USB connection. +If you have a Mac laptop you may need to use an adapter to allow direct USB connection. Once the Owl is connected to power and your computer you may set it down in a spot that will +be able to easily see/hear everyone participating in the meeting physically. If you're hosting the meeting you also want to verify that the Owl is being used as the +audio and video input to the call. \ No newline at end of file diff --git a/pixi.lock b/pixi.lock index 239cf368..0a933e8e 100644 --- a/pixi.lock +++ b/pixi.lock @@ -412,7 +412,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-redirects-1.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.9.0-hf235a45_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.6.0-hc19f0b3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/paginate-0.5.7-pyhd8ed1ab_0.conda @@ -493,7 +493,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.3-hac325c4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.49.2-hd79239c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.48.0-h67532ce_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markdownlint-cli-0.42.0-h046caca_0.conda @@ -2053,6 +2053,19 @@ packages: purls: [] size: 33601 timestamp: 1680112270483 +- kind: conda + name: libuv + version: 1.48.0 + build: h67532ce_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.48.0-h67532ce_0.conda + sha256: fb87f7bfd464a3a841d23f418c86a206818da0c4346984392071d9342c9ea367 + md5: c8e7344c74f0d86584f7ecdc9f25c198 + license: MIT + license_family: MIT + purls: [] + size: 407040 + timestamp: 1709913680478 - kind: conda name: libuv version: 1.49.2 @@ -2084,21 +2097,6 @@ packages: purls: [] size: 884647 timestamp: 1729322566955 -- kind: conda - name: libuv - version: 1.49.2 - build: hd79239c_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.49.2-hd79239c_0.conda - sha256: a2083200357513f932b44e88858a50a638d1a751a050bc62b2cbee2ac54f102c - md5: ec36c2438046ca8d2b4368d62dd5c38c - depends: - - __osx >=11.0 - license: MIT - license_family: MIT - purls: [] - size: 413607 - timestamp: 1729322686826 - kind: conda name: libxcrypt version: 4.4.36 @@ -2776,6 +2774,29 @@ packages: - pkg:pypi/nodeenv?source=hash-mapping size: 34489 timestamp: 1717585382642 +- kind: conda + name: nodejs + version: 22.6.0 + build: hc19f0b3_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.6.0-hc19f0b3_1.conda + sha256: a9f637e3ddb845350a1410caf2299caa2dddd201fd44a5ca0e075c17dbf99f91 + md5: 427b3cd460567009e317d10bc5390764 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libuv >=1.48.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + - zlib + license: MIT + license_family: MIT + purls: [] + size: 21337290 + timestamp: 1723482049816 - kind: conda name: nodejs version: 22.9.0 @@ -2831,28 +2852,6 @@ packages: purls: [] size: 15520235 timestamp: 1726665546324 -- kind: conda - name: nodejs - version: 22.9.0 - build: hf235a45_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.9.0-hf235a45_0.conda - sha256: 1bc6445b7ecb3bff478d5a11eb3504e45eb5a3cdde24c6ec7339f80c193d24c8 - md5: 40255c9ffb722d614b02ca7aaee6abcb - depends: - - __glibc >=2.28,<3.0.a0 - - icu >=75.1,<76.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libuv >=1.48.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - - zlib - license: MIT - license_family: MIT - purls: [] - size: 21198038 - timestamp: 1726661026112 - kind: conda name: openssl version: 3.3.2 From 73d51b6e5e58f1b53afbe61c3b763143a5063cea Mon Sep 17 00:00:00 2001 From: Ofek Yu Lin <118444948+Ofek-Lin@users.noreply.github.com> Date: Wed, 27 Nov 2024 11:22:02 -0500 Subject: [PATCH 3/3] feat: add a page for DESeq (#91) * docs/Disciplines/Bioinformatics/ofek_deseq.md * Update deseq.md Introduction to DEseq2 * Update and rename ofek_deseq.md to deseq.md * Update deseq.md --------- Co-authored-by: Ofek Co-authored-by: Jermiah Joseph <44614774+jjjermiah@users.noreply.github.com> --- docs/disciplines/Bioinformatics/deseq.md | 52 ++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 docs/disciplines/Bioinformatics/deseq.md diff --git a/docs/disciplines/Bioinformatics/deseq.md b/docs/disciplines/Bioinformatics/deseq.md new file mode 100644 index 00000000..33f30358 --- /dev/null +++ b/docs/disciplines/Bioinformatics/deseq.md @@ -0,0 +1,52 @@ +# DESeq2 +DESeq2 is a popular R package used for analyzing RNA count data - transcriptomics. It is widely used for differentially expressed analysis (DE) between different conditions (e.g. WT vs. mutant). The package also integrates many powerful data processing and analysis tools. +## Features: +**Normalization**: DESeq2 normalizes the count data to account for differences in sequencing depth and RNA composition. +**Statistical Modeling**: It uses a negative binomial distribution to model the count data, which is appropriate for overdispersed count data. +**Differential Expression Analysis**: DESeq2 provides statistical tests to identify genes that are differentially expressed between conditions. +**Visualization**: The package includes functions for visualizing results, such as MA plots and heatmaps. + +## Example + +One may follow the workflow template from below (data preprocessing and further analysis are needed, and they vary between different analyses): +``` +# Create DESeqDataSet object +dds <- DESeqDataSetFromMatrix(countData = countData, ## your raw count + colData = colData, ## your column metadata (i.e. sample/cell data) + design = ~ condition) ## specifies the experimental design (e.g. conditions, treatments, etc.) + +# Run the DESeq2 pipeline +dds <- DESeq(dds) +DEresults = results(dds) +DEresults <- DEresults[order(DEresults$padj),] + +# Extract results +res <- results(dds) + +## MA plot to check how well normalization works +plotMA(dds) +``` +One can perform QC through PCA plot: +``` +rld <- rlog(dds) +DESeq2::plotPCA(rld, ntop = 500, intgroup = 'group') + + ylim(-50, 50) + theme_bw() +``` +## Visually DE result with volcano plot +``` +dds <- DESeq(dds) +DEresults = results(dds) +library(EnhancedVolcano) +# DEseq object is S4 object - we need to convert it to a data frame (S3) +DEresults <- as.data.frame(DEresults) + +EnhancedVolcano(DEresults, + lab = row.names(DEresults), + x = 'log2FoldChange', + y = 'padj', + pCutoff = 5e-2, + FCcutoff = 1, + labSize = 2.5, + legendLabels=c('Not sig.',expression(paste('Log'[2],'FC')),'padj', expression(paste('padj & Log'[2],'FC'))), + ylab = "padj") +```