mirror of
https://github.com/the-jordan-lab/docs.git
synced 2025-05-09 21:32:38 +00:00
codespace should have windsurf and jupyter on startup now; started organizing project folders
This commit is contained in:
parent
f6f4c81918
commit
cf6bdefd53
@ -4,15 +4,36 @@
|
||||
"dockerfile": "Dockerfile"
|
||||
},
|
||||
"settings": {
|
||||
"terminal.integrated.shell.linux": "/bin/bash"
|
||||
"terminal.integrated.shell.linux": "/bin/bash",
|
||||
"python.defaultInterpreterPath": "/usr/local/bin/python",
|
||||
"jupyter.alwaysTrustNotebooks": true,
|
||||
"workbench.startupEditor": "none"
|
||||
},
|
||||
"postCreateCommand": "pip install -r requirements.txt",
|
||||
"postStartCommand": "bash .devcontainer/postStartCommand.sh",
|
||||
"postCreateCommand": "pip install -r requirements.txt && chmod +x .devcontainer/jupyter-setup.sh && .devcontainer/jupyter-setup.sh && chmod +x .devcontainer/windsurf-auth-setup.sh",
|
||||
"postStartCommand": "bash .devcontainer/postStartCommand.sh && WINDSURF_AUTH_TOKEN='eyJhbGciOiJSUzI1NiIsImtpZCI6IjU5MWYxNWRlZTg0OTUzNjZjOTgyZTA1MTMzYmNhOGYyNDg5ZWFjNzIiLCJ0eXAiOiJKV1QifQ.eyJwaWN0dXJlIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE5NDMyOTQ4ND92PTQiLCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vZXhhMi1mYjE3MCIsImF1ZCI6ImV4YTItZmIxNzAiLCJhdXRoX3RpbWUiOjE3NDY1NzA2ODAsInVzZXJfaWQiOiJNTVJZY3NVb3ZVaFNVc2RhMkhrd1J4UE5tTWQyIiwic3ViIjoiTU1SWWNzVW92VWhTVXNkYTJIa3dSeFBObU1kMiIsImlhdCI6MTc0NjU3MDY4MSwiZXhwIjoxNzQ2NTc0MjgxLCJlbWFpbCI6ImppbUBqb3JkYW5sYWIub3JnIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7ImdpdGh1Yi5jb20iOlsiMTk0MzI5NDg0Il0sImVtYWlsIjpbImppbUBqb3JkYW5sYWIub3JnIl19LCJzaWduX2luX3Byb3ZpZGVyIjoiZ2l0aHViLmNvbSJ9fQ.kgY8pNERRK3d2weIc4eR0EI_JKfATIxE9b6ACKdQE1XVwU26_p07PGfvdWo4ty8oXjCdUdnUiprM1LKaT2yZPGnleOdeJtH31Ua1DNc7hNTEideMeTyZUAOXv6O1VJdXqpcRfjc5Q5JxEjJdj1cGdomFA1c_kn3VbGyL8BsAfH6Sg6q7fB4eRRQ5MlHPBDxQl7neHsdDVGhqGprRnWfJsOI0PJhsWC4jzSBM5HO3uFKOnl_9-BdGY_zN6j_uRcFXfHB3VxfSecinepjz3u5fdmEd71YpGJNRhGXYiM7pZBhETCvA9Ri-b1Jh74dsoAyPfmnDOdt0c0xBF2TmPEPgZA' .devcontainer/windsurf-auth-setup.sh && jupyter notebook --no-browser --ip=0.0.0.0 --port=8888 --NotebookApp.token='' --NotebookApp.password='' --allow-root &",
|
||||
"extensions": [
|
||||
"ms-python.python",
|
||||
"ms-azuretools.vscode-docker",
|
||||
"redhat.vscode-yaml"
|
||||
"redhat.vscode-yaml",
|
||||
"ms-toolsai.jupyter",
|
||||
"ms-toolsai.vscode-jupyter-cell-tags",
|
||||
"ms-toolsai.jupyter-keymap",
|
||||
"ms-toolsai.jupyter-renderers",
|
||||
"windsurf-dev.windsurf"
|
||||
],
|
||||
"forwardPorts": [],
|
||||
"remoteUser": "vscode"
|
||||
}
|
||||
"forwardPorts": [8888],
|
||||
"remoteUser": "vscode",
|
||||
"features": {
|
||||
"github-cli": "latest"
|
||||
},
|
||||
"customizations": {
|
||||
"codespaces": {
|
||||
"openFiles": ["/workspaces/docs/Analysis/protocol_dashboard.ipynb"]
|
||||
},
|
||||
"vscode": {
|
||||
"settings": {
|
||||
"windsurf.authTokenPath": "~/.windsurf/auth.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
17
.devcontainer/jupyter-setup.sh
Normal file
17
.devcontainer/jupyter-setup.sh
Normal file
@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "Setting up Jupyter environment for lab documentation..."
|
||||
|
||||
# Install Jupyter and required dependencies
|
||||
pip install jupyter notebook jupyterlab pandas matplotlib plotly pyyaml ipywidgets
|
||||
|
||||
# Enable Jupyter extensions
|
||||
jupyter nbextension enable --py widgetsnbextension
|
||||
jupyter labextension install @jupyter-widgets/jupyterlab-manager
|
||||
|
||||
# Set up Jupyter to auto-start in the background
|
||||
mkdir -p ~/.jupyter
|
||||
echo "c.NotebookApp.token = ''" > ~/.jupyter/jupyter_notebook_config.py
|
||||
echo "c.NotebookApp.password = ''" >> ~/.jupyter/jupyter_notebook_config.py
|
||||
|
||||
echo "Jupyter environment setup complete!"
|
@ -25,12 +25,48 @@ if [ -z "$OPENAI_API_KEY" ]; then
|
||||
echo " Set it in your Codespace secrets or run 'export OPENAI_API_KEY=your-key'."
|
||||
fi
|
||||
|
||||
# Check Jupyter installation and dashboard dependencies
|
||||
echo "🔬 Setting up Jupyter environment and Protocol Dashboard..."
|
||||
pip install -q jupyter notebook jupyterlab pandas matplotlib plotly pyyaml ipywidgets
|
||||
|
||||
# Create the welcome message for Jupyter
|
||||
mkdir -p /workspaces/docs/Analysis
|
||||
cat > /workspaces/docs/README.ipynb << EOL
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 🧪 Welcome to the Lab Documentation System! 🧬\\n\\n",
|
||||
"## Quick Start\\n\\n",
|
||||
"This system provides interactive protocol dashboards to help manage your lab protocols.\\n\\n",
|
||||
"### Available Dashboards:\\n\\n",
|
||||
"- [**Protocol Dashboard**](/workspaces/docs/Analysis/protocol_dashboard.ipynb) - Browse and filter all protocols\\n\\n",
|
||||
"Click on any of the links above to get started!\\n\\n",
|
||||
"*No installation required - everything is pre-configured for you.*"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
||||
EOL
|
||||
|
||||
# Display welcome message
|
||||
echo ""
|
||||
echo "🧪 LAB AGENT ENVIRONMENT READY 🧪"
|
||||
echo "Start using the lab agent by typing in the VS Code Chat window."
|
||||
echo "For a health check, run: python Agent/test_environment.py"
|
||||
echo "To view the Protocol Dashboard, open Analysis/protocol_dashboard.ipynb"
|
||||
echo ""
|
||||
|
||||
# Exit with success
|
||||
exit 0
|
||||
exit 0
|
24
.devcontainer/windsurf-auth-setup.sh
Normal file
24
.devcontainer/windsurf-auth-setup.sh
Normal file
@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Windsurf extension authentication setup script
|
||||
# This script securely sets up the authentication for the Windsurf extension
|
||||
# without exposing credentials in plaintext
|
||||
|
||||
echo "🌊 Setting up Windsurf authentication..."
|
||||
|
||||
# Create the windsurf config directory if it doesn't exist
|
||||
mkdir -p ~/.windsurf
|
||||
|
||||
# Write the authentication config
|
||||
cat > ~/.windsurf/auth.json << EOL
|
||||
{
|
||||
"authToken": "$WINDSURF_AUTH_TOKEN",
|
||||
"configTimestamp": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
|
||||
"lastLogin": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
|
||||
}
|
||||
EOL
|
||||
|
||||
# Set correct permissions
|
||||
chmod 600 ~/.windsurf/auth.json
|
||||
|
||||
echo "✅ Windsurf authentication setup complete"
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -74,4 +74,4 @@ npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
yarn.lock
|
@ -0,0 +1,21 @@
|
||||
# Experiments Folder
|
||||
|
||||
This folder contains records of individual experiments or lab sessions as YAML files.
|
||||
|
||||
## How to Add a New Experiment
|
||||
- Use the experiment_template.yaml in Templates/ as a starting point.
|
||||
- Name your file with a unique ID or date, e.g., `2025-05-10_cell_staining_Alice.yaml`.
|
||||
- Fill in all required fields: experiment_id, project, title, date, researcher, protocol, materials, parameters, results, status.
|
||||
- Submit via the lab agent or manually, then commit to the repository.
|
||||
|
||||
## YAML Schema Reference
|
||||
See `Templates/experiment_template.yaml` for the required structure.
|
||||
|
||||
## Example Experiment
|
||||
See `2025-05-10_cell_staining_Alice.yaml` in this folder for a complete example of an experiment file. Use it as a reference when creating new experiments.
|
||||
|
||||
### Example Usage
|
||||
To add a new experiment, you can:
|
||||
1. Use the lab agent and describe your experiment in natural language (e.g., "Log a cell staining experiment for Alice on May 10, 2025").
|
||||
2. The agent will generate a YAML file similar to `2025-05-10_cell_staining_Alice.yaml`.
|
||||
3. Review and edit as needed, then commit the file.
|
223
Analysis/protocol_dashboard.ipynb
Normal file
223
Analysis/protocol_dashboard.ipynb
Normal file
@ -0,0 +1,223 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "a1e354d5",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Lab Protocol Dashboard\n",
|
||||
"\n",
|
||||
"This notebook provides an interactive dashboard to explore and manage both YAML protocols and Markdown protocols with YAML frontmatter.\n",
|
||||
"\n",
|
||||
"## Features\n",
|
||||
"- View all protocols in a searchable table\n",
|
||||
"- Filter by protocol type (YAML or Markdown)\n",
|
||||
"- Compare protocol structures\n",
|
||||
"- Visualize protocol statistics\n",
|
||||
"\n",
|
||||
"Let's start by importing the required libraries and setting up our environment."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "1c5f18cd",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Install dependencies if not already installed\n",
|
||||
"import sys\n",
|
||||
"import subprocess\n",
|
||||
"\n",
|
||||
"def install_package(package):\n",
|
||||
" try:\n",
|
||||
" __import__(package)\n",
|
||||
" print(f\"{package} is already installed\")\n",
|
||||
" except ImportError:\n",
|
||||
" print(f\"Installing {package}...\")\n",
|
||||
" subprocess.check_call([sys.executable, \"-m\", \"pip\", \"install\", package])\n",
|
||||
" print(f\"{package} installed successfully\")\n",
|
||||
"\n",
|
||||
"# Install required packages\n",
|
||||
"install_package(\"pandas\")\n",
|
||||
"install_package(\"matplotlib\")\n",
|
||||
"install_package(\"ipywidgets\")\n",
|
||||
"install_package(\"pyyaml\")\n",
|
||||
"install_package(\"plotly\")\n",
|
||||
"\n",
|
||||
"print(\"\\nAll dependencies are installed and ready to use.\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "f4c1f189",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import os\n",
|
||||
"import re\n",
|
||||
"import yaml\n",
|
||||
"import glob\n",
|
||||
"import pandas as pd\n",
|
||||
"import plotly.express as px\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import ipywidgets as widgets\n",
|
||||
"from datetime import datetime\n",
|
||||
"from IPython.display import display, HTML, Markdown\n",
|
||||
"\n",
|
||||
"# Configure paths\n",
|
||||
"WORKSPACE_ROOT = \"/workspaces/docs\"\n",
|
||||
"PROTOCOLS_DIR = os.path.join(WORKSPACE_ROOT, \"Protocols\")\n",
|
||||
"\n",
|
||||
"print(f\"Workspace root: {WORKSPACE_ROOT}\")\n",
|
||||
"print(f\"Protocols directory: {PROTOCOLS_DIR}\")\n",
|
||||
"print(f\"Current working directory: {os.getcwd()}\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "b384ad20",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Load Protocol Data\n",
|
||||
"\n",
|
||||
"Now we'll load all protocol data from both YAML files and Markdown files with YAML frontmatter."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def extract_frontmatter(markdown_content):\n",
|
||||
" \"\"\"Extract YAML frontmatter from markdown content\"\"\"\n",
|
||||
" pattern = r\"^---\\n(.*?)\\n---\"\n",
|
||||
" match = re.search(pattern, markdown_content, re.DOTALL)\n",
|
||||
" if match:\n",
|
||||
" try:\n",
|
||||
" return yaml.safe_load(match.group(1))\n",
|
||||
" except yaml.YAMLError:\n",
|
||||
" return None\n",
|
||||
" return None\n",
|
||||
"\n",
|
||||
"def load_protocol_files():\n",
|
||||
" \"\"\"Load protocol data from both YAML and Markdown files\"\"\"\n",
|
||||
" protocols = []\n",
|
||||
" \n",
|
||||
" # Process YAML files\n",
|
||||
" yaml_files = glob.glob(os.path.join(PROTOCOLS_DIR, \"*.yaml\"))\n",
|
||||
" for file_path in yaml_files:\n",
|
||||
" try:\n",
|
||||
" with open(file_path, 'r') as f:\n",
|
||||
" data = yaml.safe_load(f)\n",
|
||||
" if data:\n",
|
||||
" data['file_path'] = os.path.basename(file_path)\n",
|
||||
" data['file_type'] = 'yaml'\n",
|
||||
" protocols.append(data)\n",
|
||||
" except Exception as e:\n",
|
||||
" print(f\"Error reading {file_path}: {e}\")\n",
|
||||
" \n",
|
||||
" # Process Markdown files with frontmatter\n",
|
||||
" md_files = glob.glob(os.path.join(PROTOCOLS_DIR, \"*.md\"))\n",
|
||||
" for file_path in md_files:\n",
|
||||
" try:\n",
|
||||
" with open(file_path, 'r') as f:\n",
|
||||
" content = f.read()\n",
|
||||
" frontmatter = extract_frontmatter(content)\n",
|
||||
" if frontmatter:\n",
|
||||
" frontmatter['file_path'] = os.path.basename(file_path)\n",
|
||||
" frontmatter['file_type'] = 'markdown'\n",
|
||||
" \n",
|
||||
" # Extract content preview (first 100 chars)\n",
|
||||
" content_without_frontmatter = re.sub(r\"^---\\n.*?\\n---\\n\", \"\", content, flags=re.DOTALL)\n",
|
||||
" preview = content_without_frontmatter.strip()[:100] + \"...\"\n",
|
||||
" frontmatter['content_preview'] = preview\n",
|
||||
" \n",
|
||||
" protocols.append(frontmatter)\n",
|
||||
" except Exception as e:\n",
|
||||
" print(f\"Error reading {file_path}: {e}\")\n",
|
||||
" \n",
|
||||
" return protocols\n",
|
||||
"\n",
|
||||
"# Load all protocols\n",
|
||||
"protocols = load_protocol_files()\n",
|
||||
"print(f\"Loaded {len(protocols)} protocols\")\n",
|
||||
"\n",
|
||||
"# Convert to DataFrame for easier manipulation\n",
|
||||
"df_protocols = pd.DataFrame(protocols)\n",
|
||||
"\n",
|
||||
"# Fill missing values with placeholders\n",
|
||||
"for col in ['id', 'name', 'version', 'description', 'author', 'created']:\n",
|
||||
" if col not in df_protocols.columns:\n",
|
||||
" df_protocols[col] = None\n",
|
||||
"\n",
|
||||
"# Preview the dataframe\n",
|
||||
"df_protocols[['file_path', 'file_type', 'id', 'name', 'version']].head()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Protocol Dashboard\n",
|
||||
"\n",
|
||||
"Let's create a dashboard to explore our protocols. We'll include:\n",
|
||||
"1. Summary statistics\n",
|
||||
"2. Interactive filtering\n",
|
||||
"3. Protocol details viewer"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# 1. Summary statistics\n",
|
||||
"yaml_count = len(df_protocols[df_protocols['file_type'] == 'yaml'])\n",
|
||||
"md_count = len(df_protocols[df_protocols['file_type'] == 'markdown'])\n",
|
||||
"\n",
|
||||
"# Create a nice HTML summary\n",
|
||||
"summary_html = f\"\"\"\n",
|
||||
"<div style=\"background-color: #f5f5f5; padding: 15px; border-radius: 10px; margin-bottom: 20px;\">\n",
|
||||
" <h2 style=\"margin-top: 0;\">Protocol Dashboard Summary</h2>\n",
|
||||
" <p><strong>Generated:</strong> {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}</p>\n",
|
||||
" <p><strong>Total Protocols:</strong> {len(df_protocols)}</p>\n",
|
||||
" <ul>\n",
|
||||
" <li><strong>YAML Files:</strong> {yaml_count}</li>\n",
|
||||
" <li><strong>Markdown with Frontmatter:</strong> {md_count}</li>\n",
|
||||
" </ul>\n",
|
||||
"</div>\n",
|
||||
"\"\"\"\n",
|
||||
"\n",
|
||||
"display(HTML(summary_html))\n",
|
||||
"\n",
|
||||
"# Create a pie chart of file types\n",
|
||||
"fig = px.pie(values=[yaml_count, md_count], \n",
|
||||
" names=['YAML', 'Markdown'], \n",
|
||||
" title='Protocol File Types',\n",
|
||||
" color_discrete_sequence=['#636EFA', '#EF553B'])\n",
|
||||
"fig.update_layout(width=600, height=400)\n",
|
||||
"fig.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Interactive Protocol Explorer\n",
|
||||
"\n",
|
||||
"Use the filters below to explore your protocols:"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"language_info": {
|
||||
"name": "python"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
121
Analysis/protocol_dashboard.py
Normal file
121
Analysis/protocol_dashboard.py
Normal file
@ -0,0 +1,121 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Protocol Dashboard Generator
|
||||
|
||||
This script creates a simple terminal-based dashboard of all your lab protocols,
|
||||
showing both standalone YAML files and Markdown files with YAML frontmatter.
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
import yaml
|
||||
import glob
|
||||
from datetime import datetime
|
||||
|
||||
# Configuration
|
||||
PROTOCOLS_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "Protocols")
|
||||
|
||||
def extract_frontmatter(markdown_content):
|
||||
"""Extract YAML frontmatter from markdown content"""
|
||||
pattern = r"^---\n(.*?)\n---"
|
||||
match = re.search(pattern, markdown_content, re.DOTALL)
|
||||
if match:
|
||||
try:
|
||||
return yaml.safe_load(match.group(1))
|
||||
except yaml.YAMLError:
|
||||
return None
|
||||
return None
|
||||
|
||||
def load_protocol_files():
|
||||
"""Load protocol data from both YAML and Markdown files"""
|
||||
protocols = []
|
||||
|
||||
# Process YAML files
|
||||
yaml_files = glob.glob(os.path.join(PROTOCOLS_DIR, "*.yaml"))
|
||||
for file_path in yaml_files:
|
||||
try:
|
||||
with open(file_path, 'r') as f:
|
||||
data = yaml.safe_load(f)
|
||||
if data:
|
||||
data['file_path'] = os.path.basename(file_path)
|
||||
data['file_type'] = 'yaml'
|
||||
protocols.append(data)
|
||||
except Exception as e:
|
||||
print(f"Error reading {file_path}: {e}")
|
||||
|
||||
# Process Markdown files with frontmatter
|
||||
md_files = glob.glob(os.path.join(PROTOCOLS_DIR, "*.md"))
|
||||
for file_path in md_files:
|
||||
try:
|
||||
with open(file_path, 'r') as f:
|
||||
content = f.read()
|
||||
frontmatter = extract_frontmatter(content)
|
||||
if frontmatter:
|
||||
frontmatter['file_path'] = os.path.basename(file_path)
|
||||
frontmatter['file_type'] = 'markdown'
|
||||
protocols.append(frontmatter)
|
||||
except Exception as e:
|
||||
print(f"Error reading {file_path}: {e}")
|
||||
|
||||
return protocols
|
||||
|
||||
def print_terminal_dashboard(protocols):
|
||||
"""Display a simple terminal-based dashboard"""
|
||||
print("\n" + "="*80)
|
||||
print(f"LAB PROTOCOL DASHBOARD - Generated on {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||||
print("="*80)
|
||||
|
||||
# Count by type
|
||||
yaml_count = len([p for p in protocols if p.get('file_type') == 'yaml'])
|
||||
md_count = len([p for p in protocols if p.get('file_type') == 'markdown'])
|
||||
|
||||
print(f"\nTotal Protocols: {len(protocols)}")
|
||||
print(f"YAML Files: {yaml_count}")
|
||||
print(f"Markdown with Frontmatter: {md_count}")
|
||||
|
||||
# Sort protocols by ID
|
||||
protocols.sort(key=lambda x: str(x.get('id', 'ZZZZ')))
|
||||
|
||||
# Print YAML protocols
|
||||
if yaml_count > 0:
|
||||
print("\n" + "-"*80)
|
||||
print("STANDALONE YAML PROTOCOLS")
|
||||
print("-"*80)
|
||||
for protocol in [p for p in protocols if p.get('file_type') == 'yaml']:
|
||||
print(f"\nID: {protocol.get('id', 'No ID')}")
|
||||
print(f"Name: {protocol.get('name', 'Unnamed')}")
|
||||
print(f"Version: {protocol.get('version', 'Unknown')}")
|
||||
print(f"File: {protocol.get('file_path')}")
|
||||
print(f"Description: {protocol.get('description', 'No description')}")
|
||||
if 'materials' in protocol and protocol['materials']:
|
||||
print(f"Materials: {len(protocol['materials'])} items")
|
||||
if 'steps' in protocol and protocol['steps']:
|
||||
print(f"Steps: {len(protocol['steps'])} steps")
|
||||
|
||||
# Print Markdown protocols
|
||||
if md_count > 0:
|
||||
print("\n" + "-"*80)
|
||||
print("MARKDOWN PROTOCOLS WITH FRONTMATTER")
|
||||
print("-"*80)
|
||||
for protocol in [p for p in protocols if p.get('file_type') == 'markdown']:
|
||||
print(f"\nID: {protocol.get('id', 'No ID')}")
|
||||
print(f"Name: {protocol.get('name', 'Unnamed')}")
|
||||
print(f"Version: {protocol.get('version', 'Unknown')}")
|
||||
print(f"File: {protocol.get('file_path')}")
|
||||
print(f"Description: {protocol.get('description', 'No description')}")
|
||||
if 'materials' in protocol and protocol['materials']:
|
||||
print(f"Materials: {len(protocol['materials'])} items")
|
||||
if 'steps' in protocol and protocol['steps']:
|
||||
print(f"Steps: {len(protocol['steps'])} steps")
|
||||
|
||||
print("\n" + "="*80)
|
||||
print("USAGE RECOMMENDATIONS:")
|
||||
print("="*80)
|
||||
print("- YAML Files: Great for machine processing and programmatic access")
|
||||
print("- Markdown+Frontmatter: Better for detailed protocols with rich formatting")
|
||||
print("- Both formats work well with the Lab Agent and can be used together")
|
||||
print("="*80 + "\n")
|
||||
|
||||
if __name__ == "__main__":
|
||||
protocols = load_protocol_files()
|
||||
print_terminal_dashboard(protocols)
|
1
Cell-prep-forms/Cell preparation_CJ_02-18-25.gsheet
Normal file
1
Cell-prep-forms/Cell preparation_CJ_02-18-25.gsheet
Normal file
@ -0,0 +1 @@
|
||||
{"":"WARNING! DO NOT EDIT THIS FILE! ANY CHANGES MADE WILL BE LOST!","doc_id":"1T8_4vk4DKSu7PBBJTkIJoyaXmiVHR41zGAja3ayYNfs","resource_key":"","email":"jim@jordanlab.org"}
|
1
Cell-prep-forms/RNA isolation_CJ_02-18-25.gsheet
Normal file
1
Cell-prep-forms/RNA isolation_CJ_02-18-25.gsheet
Normal file
@ -0,0 +1 @@
|
||||
{"":"WARNING! DO NOT EDIT THIS FILE! ANY CHANGES MADE WILL BE LOST!","doc_id":"17tzXhIf6A8-_uK_PkYgMIgadQku1LmTOwvo666csS-g","resource_key":"","email":"jim@jordanlab.org"}
|
1
Cell-prep-forms/mRNAseq Library Prep_CJ_02-18-25.gsheet
Normal file
1
Cell-prep-forms/mRNAseq Library Prep_CJ_02-18-25.gsheet
Normal file
@ -0,0 +1 @@
|
||||
{"":"WARNING! DO NOT EDIT THIS FILE! ANY CHANGES MADE WILL BE LOST!","doc_id":"18o5Fo_FWeKFw9B09eGG444yrDn_0WIzG3hcaNE7dZ2w","resource_key":"","email":"jim@jordanlab.org"}
|
@ -0,0 +1,129 @@
|
||||
---
|
||||
name: BCA Assay for Protein Abundance Determination
|
||||
id: PROT-0010
|
||||
version: 1.0
|
||||
description: Protocol for colorimetric detection and quantitation of total protein using bicinchoninic acid (BCA)
|
||||
author: Jordan Lab
|
||||
created: 2025-05-06
|
||||
materials:
|
||||
- BCA Reagent A
|
||||
- BCA Reagent B
|
||||
- BSA standards
|
||||
- Microplate
|
||||
- Plate reader (562 nm capability)
|
||||
- Pipettes and tips
|
||||
steps:
|
||||
- "Determine number of standards and unknowns to quantify"
|
||||
- "Prepare working reagent (WR) by mixing BCA reagent A and B in 50:1 ratio"
|
||||
- "Pipette 10 µL of each standard/sample into microplate wells"
|
||||
- "Add 200 µL of WR to each well and mix for 30 seconds"
|
||||
- "Incubate at 37°C for 30 minutes"
|
||||
- "Measure absorbance at 562 nm"
|
||||
- "Create standard curve and determine protein concentrations"
|
||||
notes: |
|
||||
Based on Pierce BCA Protein Assay Kit (Thermo Scientific)
|
||||
Assay is nearly linear with protein concentrations from 20-2000 µg/mL
|
||||
For increased sensitivity, incubation time can be extended to 2 hours
|
||||
---
|
||||
|
||||
#Protocol
|
||||
|
||||
1. Determine the number of standards and unknowns you need to quantify:
|
||||
|
||||
|
||||
2. (Number of standards + Number of unknowns) x (Number of replicates) x (Volume of WR per sample) = Total WR volume
|
||||
|
||||
|
||||
3. Mix 50 parts of BCA reagent A with 1 part of BCA reagent B (50:1 ratio, Reagent A:B).
|
||||
|
||||
|
||||
4. Example: Combine 5 mL of reagent A with 0.1 mL of reagent B to prepare 5.1 mL of WR.
|
||||
|
||||
5. Note: Initial turbidity when reagent B is added to reagent A will disappear with mixing, yielding a clear, green WR.
|
||||
|
||||
|
||||
6. Pipette 10 µL of each standard or unknown sample replicates into a microplate well.
|
||||
|
||||
7. Add 200 µL of the WR to each well and mix the plate thoroughly for 30 seconds.
|
||||
|
||||
8. Incubate at 37°C for 30 minutes.
|
||||
|
||||
9. Measure the absorbance at 562 nm on (core facility) plate reader.
|
||||
|
||||
10. Subtract the average 562 nm absorbance measurement of the blank standard replicates from the 562 nm measurements of all other individual standard and unknown sample replicates.
|
||||
|
||||
11. Prepare a standard curve by plotting the average blank–corrected 562 nm measurement for each BSA standard vs. its concentration in µg/mL. Use the standard curve to determine the protein concentration of each unknown sample.
|
||||
|
||||
|
||||
**
|
||||
**
|
||||
|
||||
Standard Preparation
|
||||
|
||||
|
||||
|
||||
Prepare standards in the using the same buffer you collected your protein samples in as the diluent.
|
||||
|
||||
|
||||
|
||||
|Vial|Volume of Diluent|Volume and Source of BSA|Final BSA Concentration (µg/mL)|
|
||||
|---|---|---|---|
|
||||
|A|0|300 µL of stock|2,000|
|
||||
|B|125 µL|375 µL of stock|1,500|
|
||||
|C|325 µL|325 µL of stock|1,000|
|
||||
|D|175 µL|175 µL of vial B dilution|750|
|
||||
|E|325 µL|325 µL of vial C dilution|500|
|
||||
|F|325 µL|325 µL of vial E dilution|250|
|
||||
|G|325 µL|325 µL of vial F dilution|125|
|
||||
|H|400 µL|100 µL of vial G dilution|25|
|
||||
|I|400 µL|0|0 (Blank)|
|
||||
|
||||
|
||||
**
|
||||
|
||||
Pierce BCA Protein Assay Kit (Thermo Scientific ) Protocol
|
||||
|
||||
|
||||
|
||||
Background:
|
||||
|
||||
- The kit uses bicinchoninic acid (BCA) for colorimetric detection and quantitation of total protein.
|
||||
|
||||
- It's based on the biuret reaction, where Cu+2 is reduced to Cu+1 by protein in an alkaline medium.
|
||||
|
||||
- The cuprous cation (Cu+1) is detected using BCA, forming a purple-colored complex that absorbs at 562 nm.
|
||||
|
||||
- The assay is nearly linear with protein concentrations from 20–2000 µg/mL.
|
||||
|
||||
- Protein concentrations are usually determined against a standard protein like bovine serum albumin (BSA).
|
||||
|
||||
- 
|
||||
|
||||
|
||||
**
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
****
|
||||
|
||||
Note:
|
||||
|
||||
- Wavelengths from 540–590 nm have been used successfully with this method.
|
||||
|
||||
- Plate readers, which use a shorter light path length than cuvette spectrophotometers, require a greater sample to WR ratio to obtain the same sensitivity as the standard test tube procedure. If higher 562 nm measurements are desired, increase the incubation time to 2 hours.
|
||||
|
||||
- Increasing the incubation time or ratio of sample volume to WR increases the net 562 nm measurement for each well and lowers both the minimum detection level of the reagent and the working range of the assay. As long as all standards and unknowns are treated identically, such modifications are useful.
|
||||
|
||||
|
||||
|
||||
|
||||
1. Subtract the average 562 nm absorbance measurement of the blank standard replicates from the 562 nm measurements of all other individual standard and unknown sample replicates.
|
||||
|
||||
2. Prepare a standard curve by plotting the average blank–corrected 562 nm measurement for each BSA standard vs. its concentration in µg/mL. Use the standard curve to determine the protein concentration of each unknown sample.
|
||||
|
||||
|
||||
Note: If using curve-fitting algorithms associated with a microplate reader, a four-parameter (quadratic) or best–fit curve provides more accurate results than a purely linear fit. If plotting results by hand, a point–to–point curve is preferable to a linear fit to the standard points.
|
||||
|
||||
**
|
10
Protocols/BSA-OAPA Treatment Protocol v1.md
Normal file
10
Protocols/BSA-OAPA Treatment Protocol v1.md
Normal file
@ -0,0 +1,10 @@
|
||||
#treatment
|
||||
**Treatment Setup:**
|
||||
- Final fatty acid concentration: 0.125 mM for both BSA-OA and BSA-PA.
|
||||
- Medium: Complete media with fatty acid-BSA conjugates.
|
||||
|
||||
**Steps:**
|
||||
|
||||
1. Prepare BSA-fatty acid solutions separately.
|
||||
2. Dilute to final working concentrations in complete media.
|
||||
3. After 48 h in siRNA, treat cells for 24 h.
|
12
Protocols/BSA-OAPA Treatment Protocol v2.md
Normal file
12
Protocols/BSA-OAPA Treatment Protocol v2.md
Normal file
@ -0,0 +1,12 @@
|
||||
#treatment
|
||||
**Treatment Setup:**
|
||||
- Final fatty acid concentration: 0.125 mM for both BSA-OA and BSA-PA.
|
||||
- Medium: Complete media with fatty acid-BSA conjugates.
|
||||
|
||||
**Steps:**
|
||||
|
||||
1. Prepare BSA-fatty acid solutions separately.
|
||||
2. Dilute to final working concentrations in complete media.
|
||||
3. After 24 h in siRNA, treat cells for 48 h.
|
||||
|
||||
---
|
42
Protocols/BSA-OAPA Treatment Protocol v3.md
Normal file
42
Protocols/BSA-OAPA Treatment Protocol v3.md
Normal file
@ -0,0 +1,42 @@
|
||||
---
|
||||
name: BSA-OAPA Treatment Protocol
|
||||
id: PROT-0013
|
||||
version: 3.0
|
||||
description: Protocol for treating cells with BSA-conjugated oleic and palmitic acids (OAPA)
|
||||
author: JJ
|
||||
created: 2025-04-29
|
||||
materials:
|
||||
- Bovine Serum Albumin (BSA)
|
||||
- Oleic acid (OA)
|
||||
- Palmitic acid (PA)
|
||||
- BSA-conjugated OA and PA
|
||||
- Complete culture medium
|
||||
steps:
|
||||
- "Prepare BSA-conjugated OA and PA mixture (2:1 ratio)"
|
||||
- "Treat cells 36-48h after reverse transfection"
|
||||
- "Incubate for 16-24h with OAPA treatment"
|
||||
- "Use BSA-only treatment as control"
|
||||
notes: |
|
||||
This is version 3 of the OAPA treatment protocol
|
||||
Tested on cell lines: HUH7, HEPG2, AML12(?)
|
||||
Final concentration: 0.33 mM OA, 0.17 mM PA (0.5 mM total, 2:1 ratio)
|
||||
---
|
||||
|
||||
### Treatment name:
|
||||
OAPA v3
|
||||
#### Date:
|
||||
04/29/2025 JJ
|
||||
#### Applicable Cell Lines:
|
||||
HUH7, HEPG2, AML12(?)
|
||||
### Treatment Agent:
|
||||
Bovine Serum Albumin (BSA)-conjugated oleic acid (OA) and BSA-conjugated palmitic acid (PA).
|
||||
### Concentration:
|
||||
0.33 mM OA, 0.17 mM PA (or 0.5 mM OA:PA 2:1)
|
||||
### Timing:
|
||||
36-48 h after reverse transfection
|
||||
### Duration of treatment:
|
||||
16-24 h
|
||||
### Frequency:
|
||||
Once
|
||||
### Control Treatment:
|
||||
BSA
|
8
Protocols/Cleaning the laminar flow hood.md
Normal file
8
Protocols/Cleaning the laminar flow hood.md
Normal file
@ -0,0 +1,8 @@
|
||||
## Steps
|
||||
|
||||
1. Return all items to their original places.
|
||||
2. Wipe cabinet surfaces with 70% ethanol and paper towels.
|
||||
3. Close the cabinet; UV light will automatically sterilize.
|
||||
4. Turn off vacuum, microscope, and room lights.
|
||||
|
||||
---
|
46
Protocols/Conjugating BSA to Fatty Acid Protocol.md
Normal file
46
Protocols/Conjugating BSA to Fatty Acid Protocol.md
Normal file
@ -0,0 +1,46 @@
|
||||
### Reagents
|
||||
|
||||
• Fatty acid–free BSA (Sigma, A6003): 0.64 g
|
||||
|
||||
• 5 M NaCl solution (to prepare 150 mM): 60 µL of 5 M NaCl diluted with 1940 µL water
|
||||
|
||||
• NaHCO₃: 13.6 mg
|
||||
|
||||
• Distilled water (as needed)
|
||||
|
||||
• Palmitic acid (Sigma, P5585-10G) or substitute (≈5 mg for a 10 mM final concentration)
|
||||
|
||||
• Wako NEFA-HR Assay Kit (for fatty acid measurement)
|
||||
|
||||
### Equipment:
|
||||
|
||||
• Analytical balance
|
||||
|
||||
• Pipettes/micropipettes
|
||||
|
||||
• Incubator or water bath (set to 65°C and 37°C)
|
||||
|
||||
• Sterile 0.2 µm filter
|
||||
|
||||
• Vortex mixer (optional)
|
||||
|
||||
• pH meter (if needed)
|
||||
|
||||
• 2 mL microcentrifuge tube
|
||||
|
||||
### Protocol:
|
||||
|
||||
1. Prepare 2 mL of 4.8 mM BSA solution by dissolving 0.64 g BSA in the 150 mM NaCl solution (using 1.5 mL of the prepared 150 mM solution) and adding water to reach a total of 2 mL.
|
||||
|
||||
2. Make a saturated NaHCO₃ solution by dissolving 13.6 mg NaHCO₃ in 46 µL distilled water; incubate at 65°C.
|
||||
|
||||
3. Add approximately 5 mg palmitic acid (or the equivalent amount for oleic or arachidonic acid) to the NaHCO₃ solution and incubate at 65°C for 2 minutes to form the sodium salt.
|
||||
|
||||
4. Transfer 1.6 mL of the BSA solution into the tube containing the fatty acid mixture.
|
||||
|
||||
5. Incubate the combined solution at 37°C for 70 minutes.
|
||||
|
||||
6. Filter the final mixture through a 0.2 µm filter.
|
||||
|
||||
7. Measure the fatty acid concentration with the NEFA-HR assay (expected around 10 mM; roughly a 2:1 fatty acid to BSA molar ratio).
|
||||
|
11
Protocols/Counting Cells Manually.md
Normal file
11
Protocols/Counting Cells Manually.md
Normal file
@ -0,0 +1,11 @@
|
||||
## Counting Cells Manually Protocol
|
||||
## General Steps
|
||||
|
||||
1. After harvesting cells with Trypsin, mix cell suspension well.
|
||||
2. Transfer 10–20 µl of the cell suspension into a microcentrifuge tube.
|
||||
3. Add an equal volume of Trypan Blue solution.
|
||||
4. Load 10 µl of mixture into a hemocytometer chamber.
|
||||
5. Count live (unstained) vs dead (blue-stained) cells under a microscope.
|
||||
6. Calculate total viable cells based on grid counts.
|
||||
|
||||
---
|
64
Protocols/Gentle coIP protocol.md
Normal file
64
Protocols/Gentle coIP protocol.md
Normal file
@ -0,0 +1,64 @@
|
||||
---
|
||||
name: Gentle Co-Immunoprecipitation Protocol
|
||||
id: PROT-0012
|
||||
version: 1.0
|
||||
description: A gentle co-immunoprecipitation protocol for preserving protein-protein interactions
|
||||
author: JM Jordan
|
||||
created: 2023-01-01
|
||||
materials:
|
||||
- Protein lysate
|
||||
- RIPA buffer with protease inhibitor tablets
|
||||
- Antibody (2 µg per reaction)
|
||||
- Beads (50% slurry)
|
||||
- PBS with 0.02% Tween
|
||||
- Non-denaturing loading buffer (1X)
|
||||
- LoBind tubes
|
||||
- Liquid nitrogen
|
||||
steps:
|
||||
- "Prepare protein lysate (3600 µg protein)"
|
||||
- "Preclear with beads"
|
||||
- "Add antibody and incubate overnight at 4°C"
|
||||
- "Add washed beads and incubate"
|
||||
- "Wash beads with PBS-Tween"
|
||||
- "Elute proteins with non-denaturing buffer"
|
||||
- "Store samples at -80°C"
|
||||
notes: |
|
||||
This is a gentle protocol designed to preserve protein-protein interactions
|
||||
Uses minimal washing steps without extended rotations
|
||||
Includes preclearance step to reduce non-specific binding
|
||||
---
|
||||
|
||||
#Protocol
|
||||
by JM Jordan 2023
|
||||
|
||||
1. Prepared a lysate solution with 3600 ug of protein for HFA and HFB
|
||||
|
||||
2. Adjusted to 1mL each with RIPA+Tablets
|
||||
|
||||
3. Precleared solution by adding 50ul of 50% beads to each tube of lysate
|
||||
|
||||
4. Aliquoted into 3 tubes/lysate (6 tubes total) and adjusted each to 1mL with RIPA+Tablets
|
||||
|
||||
5. Added 2 ug of antibody to each tube
|
||||
|
||||
6. Rotated overnight at 4C
|
||||
|
||||
7. RT rotation for 1h
|
||||
|
||||
8. Washed 600ul beads with PBS + 0.02% Tween
|
||||
|
||||
9. Resuspended beads in 600ul RIPA+Tabs
|
||||
|
||||
10. Added 100ul of bead solution to each tube
|
||||
|
||||
11. Rotated at RT for 1h
|
||||
|
||||
12. Washed beads 3X with 1ml PBS + 0.02% Tween with gentle pipet mixing (no 5 min rotation)
|
||||
|
||||
13. After final wash, resuspended beads in 200 ul PBS + 0.02% Tween and transferred to fresh LoBind tubes
|
||||
|
||||
14. Added 30 ul 1X Non denaturing loading buffer and eluted as usual at 37C for 5 min
|
||||
|
||||
15. Separated solution from beads into new LoBind tubes and snap froze in LN2 and stored at -80C.
|
||||
|
||||
16. Note: Freeze Input and leftover
|
38
Protocols/Harvesting Cells for RNA extraction.md
Normal file
38
Protocols/Harvesting Cells for RNA extraction.md
Normal file
@ -0,0 +1,38 @@
|
||||
#Protocol
|
||||
|
||||
Prepare cell collection tubes
|
||||
|
||||
Rack n 1.5-ml Eppie tubes and label 1-n
|
||||
|
||||
Prepare sample storage box [-80°C Sample Storage Protocol](https://docs.google.com/document/u/1/d/1n-TcSMLcNtWcNixfK7yqhQJJVVBpL1TQaZaernbRFhM/edit)
|
||||
|
||||
|
||||
Remove cells from incubator
|
||||
|
||||
In laminar flow hood, aspirate media.
|
||||
|
||||
Wash cells
|
||||
|
||||
Add 200 ul (96-well) or 1 ml (24-well) PBS per well.
|
||||
|
||||
Aspirate until dry
|
||||
|
||||
In the fume hood, add 100 ul (for 96-well plates) or 300 ul (for 24-well plates) TRI reagent (or TRIzol) to each well.
|
||||
|
||||
Incubate at RT for 5 minutes.
|
||||
|
||||
Tilt plate back slightly to allow TRI reagents and cells to pool in the corner and pipet all of the solution into prelabeled tubes.
|
||||
|
||||
|
||||
|
||||
If not proceeding directly to extraction:
|
||||
|
||||
Place tubes in labeled box
|
||||
|
||||
Place labeled box in defined location
|
||||
|
||||
Freeze tubes at -80C and submit a [-80C Sample Submission](https://drive.google.com/open?id=1Oox80CP6oEVm3IVtkPSENpUCua0RylQz3HFP5BZhjxw) form.
|
||||
|
||||
|
||||
|
||||
If proceeding, see [RNA MiniPrep with DirectZol kit](https://docs.google.com/document/u/1/d/1v3bYGmlWyRF_wZmdMD8YZwgqpblvsh4vnoxw9H9bbHs/edit).
|
104
Protocols/Oil red O in adherent cells protocol.md
Normal file
104
Protocols/Oil red O in adherent cells protocol.md
Normal file
@ -0,0 +1,104 @@
|
||||
---
|
||||
name: Oil Red O Staining Protocol for Adherent Cells
|
||||
id: PROT-0015
|
||||
version: 1.0
|
||||
description: Protocol for staining and quantifying lipid droplets in adherent hepatocyte-like cells
|
||||
author: J. Jordan
|
||||
created: 2025-02-09
|
||||
materials:
|
||||
- Oil Red O powder
|
||||
- 100% isopropanol (2-propanol)
|
||||
- 4% paraformaldehyde (PFA)
|
||||
- PBS
|
||||
- Distilled water
|
||||
- 0.2-micron syringe filter
|
||||
- 96-well plate
|
||||
- Echo Revolution inverted microscope
|
||||
- Spectrophotometer (492 nm)
|
||||
steps:
|
||||
- "Prepare ORO staining solution"
|
||||
- "Fix cells with 4% PFA"
|
||||
- "Stain cells with filtered ORO solution"
|
||||
- "Wash and image cells"
|
||||
- "Extract ORO for quantification"
|
||||
- "Measure absorbance at 492 nm"
|
||||
notes: |
|
||||
Optimized for hepatocyte-like cells (HepG2, Huh7, AML12)
|
||||
Filtration of ORO solution is critical for good results
|
||||
Volume specifications are for 96-well plates - adjust for other formats
|
||||
---
|
||||
|
||||
#Protocol for Oil red O (ORO) staining in adherent “hepatocyte-like” cells (e.g. HepG2, Huh7, AML12?)
|
||||
|
||||
Adapted by J. Jordan; revised 02-09-25 by JJ.
|
||||
|
||||
|
||||
|
||||
Note: Volumes are for 96-well plates. Adjust for larger well formats.
|
||||
|
||||
|
||||
|
||||
1. Preparation of ORO staining solution:
|
||||
|
||||
|
||||
2. If necessary, prepare ORO stock solution by dissolving 0.175 g ORO powder (on the chemical shelf) in 50 ml 100% 2-propanol (aka “isopropanol”)
|
||||
|
||||
3. Dilute ORO stock solution in distilled water (dH2O) (i.e., Add 3 parts ORO solution to 2 parts dH2O) and vortex solution immediately before using to stain cells.
|
||||
|
||||
4. Add diluted ORO solution to a syringe with a 0.2-micron filter, then filter into a fresh vial. Skipping this filtration WILL ruin your experiment!
|
||||
|
||||
|
||||
5. Staining cells with ORO staining solution:
|
||||
|
||||
|
||||
6. Aspirate cell media and then wash twice with PBS.
|
||||
|
||||
7. Add 75 ul cold 4% paraformaldehyde (PFA) to each well and allow fixation to occur for 20-30 m at room temperature (RT).
|
||||
|
||||
8. Aspirate PFA.
|
||||
|
||||
9. Wash cells twice with 100 ul PBS and aspirate to last wash until cells are very dry.
|
||||
|
||||
10. Add 75 ul freshly prepared ORO solution to each well and stain for 30 m at RT.
|
||||
|
||||
11. Wash twice with 150 ul distilled water.
|
||||
|
||||
12. If imaging, add 100 ul of PBS to each well to improve microscopy. If skipping to extractions, you can leave the wells dry and proceed to Part IV.
|
||||
|
||||
|
||||
13. View and image cells in brightfield on Echo Revolution inverted microscope:
|
||||
|
||||
|
||||
14. Clip plate into stage.
|
||||
|
||||
15. Adjust height of objectives with puck until cells are visible.
|
||||
|
||||
16. Create a new folder to contain your images.
|
||||
|
||||
17. Identify imaging parameters that will work for all of your wells so that images can be compared.
|
||||
|
||||
18. Using identical imaging conditions (except for minor adjustments to focus), image all wells.
|
||||
|
||||
19. Ensure images are indexed with their sample names and experimental methods.
|
||||
|
||||
20. Transfer images to your Teams lab notebook data folder (USB or Airdrop) with image index.
|
||||
|
||||
|
||||
21. Extraction of ORO
|
||||
|
||||
|
||||
22. Add 75 ul of 100% isopropanol to each well and agitate for 5 minutes to extract ORO from cells.
|
||||
|
||||
23. Transfer 60 ul isopropanol extraction to 96-well assay plate
|
||||
|
||||
24. Add 60 ul pure isopropanol to at least 3 wells to account for background.
|
||||
|
||||
25. Make sure plate reader is set to 492-nm protocol.
|
||||
|
||||
26. Clip plate into spectrophotometer ensuring A1 is in the bottom-left corner.
|
||||
|
||||
27. Label your data file with your experiment ID (usually your initials and the date you started your cell plate).
|
||||
|
||||
28. Measure 492-nm absorbance.
|
||||
|
||||
29. Export data onto a USB.
|
57
Protocols/Preparation of BSA-FFA.md
Normal file
57
Protocols/Preparation of BSA-FFA.md
Normal file
@ -0,0 +1,57 @@
|
||||
**
|
||||
|
||||
Fatty Acid–BSA Complex Preparation (2 mL Tube Format)
|
||||
|
||||
|
||||
|
||||
Reagents (scaled amounts):
|
||||
|
||||
• Fatty acid–free BSA (Sigma, A6003): 0.64 g
|
||||
|
||||
• 5 M NaCl solution (to prepare 150 mM): 60 µL of 5 M NaCl diluted with 1940 µL water
|
||||
|
||||
• NaHCO₃: 13.6 mg
|
||||
|
||||
• Distilled water (as needed)
|
||||
|
||||
• Palmitic acid (Sigma, P5585-10G) or substitute (≈5 mg for a 10 mM final concentration)
|
||||
|
||||
• Wako NEFA-HR Assay Kit (for fatty acid measurement)
|
||||
|
||||
|
||||
|
||||
Equipment:
|
||||
|
||||
• Analytical balance
|
||||
|
||||
• Pipettes/micropipettes
|
||||
|
||||
• Incubator or water bath (set to 65°C and 37°C)
|
||||
|
||||
• Sterile 0.2 µm filter
|
||||
|
||||
• Vortex mixer (optional)
|
||||
|
||||
• pH meter (if needed)
|
||||
|
||||
• 2 mL microcentrifuge tube
|
||||
|
||||
|
||||
|
||||
Protocol:
|
||||
|
||||
1. Prepare 2 mL of 4.8 mM BSA solution by dissolving 0.64 g BSA in the 150 mM NaCl solution (using 1.5 mL of the prepared 150 mM solution) and adding water to reach a total of 2 mL.
|
||||
|
||||
2. Make a saturated NaHCO₃ solution by dissolving 13.6 mg NaHCO₃ in 46 µL distilled water; incubate at 65°C.
|
||||
|
||||
3. Add approximately 5 mg palmitic acid (or the equivalent amount for oleic or arachidonic acid) to the NaHCO₃ solution and incubate at 65°C for 2 minutes to form the sodium salt.
|
||||
|
||||
4. Transfer 1.6 mL of the BSA solution into the tube containing the fatty acid mixture.
|
||||
|
||||
5. Incubate the combined solution at 37°C for 70 minutes.
|
||||
|
||||
6. Filter the final mixture through a 0.2 µm filter.
|
||||
|
||||
7. Measure the fatty acid concentration with the NEFA-HR assay (expected around 10 mM; roughly a 2:1 fatty acid to BSA molar ratio).
|
||||
|
||||
**
|
12
Protocols/Preparation of Complete RPMI.md
Normal file
12
Protocols/Preparation of Complete RPMI.md
Normal file
@ -0,0 +1,12 @@
|
||||
# Preparation of Complete RPMI
|
||||
|
||||
## For a 500-ml Bottle
|
||||
|
||||
1. Sterile transfer ~51 ml of RPMI media into a sterile 50-ml tube.
|
||||
- **Label**: "PLAIN RPMI"
|
||||
|
||||
2. To the remaining 449 ml of media, add:
|
||||
- 50 ml **Fetal Bovine Serum** (FBS)
|
||||
- 1 ml **Penicillin-Streptomycin** (PS)
|
||||
|
||||
---
|
12
Protocols/Preparation_of_Complete_DMEM_High_Glucose.md
Normal file
12
Protocols/Preparation_of_Complete_DMEM_High_Glucose.md
Normal file
@ -0,0 +1,12 @@
|
||||
# Preparation of Complete DMEM (High Glucose)
|
||||
|
||||
## For a 500-ml Bottle
|
||||
|
||||
1. Sterile transfer ~51 ml of DMEM (High Glucose) media into a sterile 50-ml tube.
|
||||
- **Label**: "PLAIN DMEM"
|
||||
|
||||
2. To the remaining 449 ml of media, add:
|
||||
- 50 ml **Fetal Bovine Serum** (FBS)
|
||||
- 1 ml **Penicillin-Streptomycin** (PS)
|
||||
|
||||
---
|
12
Protocols/Preparation_of_Complete_DME_F12.md
Normal file
12
Protocols/Preparation_of_Complete_DME_F12.md
Normal file
@ -0,0 +1,12 @@
|
||||
# Preparation of Complete DME/F-12
|
||||
|
||||
## For a 500-ml Bottle
|
||||
|
||||
1. Sterile transfer ~51 ml of DME/F-12 media into a sterile 50-ml tube.
|
||||
- **Label**: "PLAIN DMEM/F-12"
|
||||
|
||||
2. To the remaining 449 ml of media, add:
|
||||
- 50 ml **Fetal Bovine Serum** (FBS)
|
||||
- 1 ml **Penicillin-Streptomycin** (PS)
|
||||
|
||||
---
|
14
Protocols/Preparation_of_Complete_DME_F12_ITSD.md
Normal file
14
Protocols/Preparation_of_Complete_DME_F12_ITSD.md
Normal file
@ -0,0 +1,14 @@
|
||||
# Preparation of Complete DME/F-12 ITSD
|
||||
|
||||
## For a 500-ml Bottle
|
||||
|
||||
1. Sterile transfer ~55 ml of DME/F-12 media into a sterile 50-ml tube.
|
||||
- **Label**: "PLAIN DME/F-12"
|
||||
|
||||
2. To the remaining 445 ml of media, add:
|
||||
- 50 ml **Fetal Bovine Serum** (FBS)
|
||||
- 5 ml **Insulin-Transferrin-Selenium** (ITS)
|
||||
- 5 µl **10 mM dexamethasone**
|
||||
- 1 ml **Penicillin-Streptomycin** (PS)
|
||||
|
||||
---
|
20
Protocols/Protein extraction protocol 6-well plate.md
Normal file
20
Protocols/Protein extraction protocol 6-well plate.md
Normal file
@ -0,0 +1,20 @@
|
||||
#P
|
||||
|
||||
1. If necessary, prepare a protein extraction buffer. See Preparing 1X RIPA with Protease inhibitor and phosphatase inhibitor cocktail
|
||||
2. Fill a tray with ice. (There is an ice machine in the autoclave room to the left of the cell culture room.)
|
||||
3. Remove the plate from the incubator and bring it to the lab. (There’s no need to use a laminar flow hood at this point.)
|
||||
4. Aspirate media.
|
||||
5. Wash cells with ice cold 1X PBS.
|
||||
6. Aspirate PBS.
|
||||
7. Keeping the plate on ice. Add 100 ul of ice cold protein extraction buffer to each well.
|
||||
8. Leaving the plate on ice, allow cells to sit in the extraction buffer for 10 minutes, agitating the plate every minute or two.
|
||||
9. Tip the plate towards you so that the protein extraction buffer and suspended cells pool in the bottom corner.
|
||||
10. If necessary, scrape cells into the extraction buffer with a cell scraper or pipet tip.
|
||||
11. Using a P200 pipet, transfer the cell suspension to a chilled, prelabeled 1.5-ml tube.
|
||||
12. Agitate the cells in the ThermoMixer for at 4C/500 rpm for 4 h-overnight.
|
||||
13. Spin down cell debris at max speed for 25 m at 4C.
|
||||
14. Avoiding the pellet, transfer 90 ul of supernatant to a fresh, chilled 1.5-ml tube (prelabeled).
|
||||
15. Transfer remaining 10 ul to 0.2 ml PCR tube strips.
|
||||
16. Place tubes in a -80C box and note box address.
|
||||
17. Submit your sample to our inventory/archive by filling out this form: -80C Sample Submission
|
||||
|
114
Protocols/RIP-qPCR Protocol.md
Normal file
114
Protocols/RIP-qPCR Protocol.md
Normal file
@ -0,0 +1,114 @@
|
||||
---
|
||||
name: RNA Immunoprecipitation qPCR Protocol
|
||||
id: PROT-0014
|
||||
version: 1.0
|
||||
description: Protocol for RNA immunoprecipitation followed by RT-qPCR to detect RNA-protein interactions
|
||||
author: Jordan Lab
|
||||
created: 2025-05-06
|
||||
materials:
|
||||
- Cell culture dishes
|
||||
- PBS (cold)
|
||||
- UV crosslinker (254 nm) or formaldehyde
|
||||
- Lysis buffer with RNase inhibitors
|
||||
- Protein A/G beads
|
||||
- Antibodies for target protein
|
||||
- IgG control antibody
|
||||
- Glycine solution (for formaldehyde quenching)
|
||||
- RNA isolation reagents
|
||||
- RT-qPCR reagents
|
||||
steps:
|
||||
- "Grow cells to desired confluency"
|
||||
- "Perform crosslinking (UV or formaldehyde)"
|
||||
- "Harvest and lyse cells"
|
||||
- "Pre-clear lysates"
|
||||
- "Perform immunoprecipitation with specific antibody"
|
||||
- "Wash beads to remove non-specific binding"
|
||||
- "Reverse crosslinks if needed"
|
||||
- "Isolate RNA from immunoprecipitated complex"
|
||||
- "Perform RT-qPCR to detect target RNA"
|
||||
notes: |
|
||||
Two crosslinking methods are described: UV (254 nm) and formaldehyde
|
||||
UV crosslinking is more specific but requires specialized equipment
|
||||
Formaldehyde crosslinking is simpler but may have higher background
|
||||
Always include appropriate controls (IgG, input RNA)
|
||||
---
|
||||
|
||||
#Protocol
|
||||
|
||||
Crosslinking RNA to a specific protein of interest in cells or lysates is a common step in RNA immunoprecipitation (RIP) or related methods (e.g., CLIP-seq). Once crosslinked and immunoprecipitated, the RNA can be extracted for downstream RT-qPCR analysis. Below is a general overview of two frequently used crosslinking methods—UV crosslinking and formaldehyde crosslinking—along with key steps and considerations.
|
||||
|
||||
### UV Crosslinking
|
||||
UV crosslinking at 254 nm forms covalent bonds between nucleic acids and amino acids in close proximity. This approach is often used in CLIP (crosslinking immunoprecipitation) protocols, but it can be adapted for simpler RIP-RT-qPCR workflows.
|
||||
|
||||
#### Typical workflow:
|
||||
1. Grow cells to the desired confluency in culture dishes.
|
||||
2. Wash cells with cold PBS to remove media and serum proteins. Keep cells on ice if needed to minimize RNase activity.
|
||||
3. Add fresh cold PBS to cover the cells.
|
||||
4. Crosslink with UV 254 nm at an energy of approximately 150–300 mJ/cm². (The optimal dose depends on cell type and the sensitivity of the RNA or protein. Over-crosslinking can damage RNA, while under-crosslinking may reduce yield.)
|
||||
5. Harvest cells by scraping or gentle trypsinization (depending on the downstream protocol).
|
||||
6. Lyse cells under mild conditions suitable for maintaining RNP complexes. (Often a nonionic or mild ionic detergent is used in the lysis buffer, along with RNase inhibitors.)
|
||||
7. Perform immunoprecipitation using an antibody specific to the RNA-binding protein of interest.
|
||||
8. Pre-clear lysates (e.g., with protein A/G beads alone) to reduce nonspecific binding.
|
||||
9. Add the specific antibody, followed by protein A/G beads.
|
||||
10. Wash beads thoroughly to remove nonspecific complexes.
|
||||
11. Reverse crosslink (if needed) or proceed directly to RNA purification, depending on the protocol. Some protocols lyse or treat with proteinase K to release RNA from the protein-bead complex.
|
||||
12. Isolate RNA from the immunoprecipitated complex.
|
||||
13. Reverse transcribe and perform qPCR to detect the RNA targets that were bound by the protein.
|
||||
14. Key considerations for UV crosslinking:
|
||||
15. Irradiation distance/energy: Keep the distance between the UV lamp and cells/lysate standardized to ensure reproducibility.
|
||||
16. Crosslinking efficiency vs. RNA integrity: Higher UV doses may degrade RNA. It’s important to titrate energy.
|
||||
17. Protective measures: UV light is harmful to skin and eyes. Always use shields and PPE.
|
||||
|
||||
#### Formaldehyde Crosslinking
|
||||
|
||||
##### Overview:
|
||||
Formaldehyde can be used to crosslink proteins and nucleic acids by reacting with amino and imino groups. It is less commonly used for fine-scale mapping studies (like CLIP-seq) because it can be somewhat reversible and can introduce more nonspecific crosslinks. However, it is still used in some RIP and ChIP (chromatin IP) approaches.
|
||||
|
||||
##### Typical workflow:
|
||||
Grow cells to desired confluency.
|
||||
Prepare fresh formaldehyde at a working concentration (often 1% final in the culture medium) to fix cells.
|
||||
Add formaldehyde directly to cells in culture medium (or in PBS) and incubate typically for 5–10 minutes at room temperature or 37 °C (depending on the protocol).
|
||||
Quench the reaction by adding glycine (often to a final concentration of 125 mM) for 5–10 minutes.
|
||||
Wash the cells with cold PBS.
|
||||
Harvest cells carefully.
|
||||
Lyse cells under conditions that preserve protein-RNA complexes (often using mild detergents, protease inhibitors, and RNase inhibitors).
|
||||
Immunoprecipitate using a specific antibody against the protein of interest.
|
||||
Wash beads to remove nonspecific material.
|
||||
Reverse crosslink by heating or using other conditions specified in the protocol (formaldehyde crosslinks can often be reversed by heating at 65 °C for several hours in the presence of SDS and/or high salt).
|
||||
Isolate RNA from the immunoprecipitated sample.
|
||||
Reverse transcribe and perform qPCR to quantify target RNA levels.
|
||||
Key considerations for formaldehyde crosslinking:
|
||||
Crosslinking stringency: Formaldehyde can create more nonspecific crosslinks; optimizing crosslinking time and concentration is key.
|
||||
Reversibility: Ensure you reverse crosslinks thoroughly to recover intact RNA for RT-qPCR.
|
||||
Toxicity: Formaldehyde is highly toxic and volatile, so follow safety guidelines (work in a fume hood, use PPE).
|
||||
|
||||
#### Choosing the Method
|
||||
#### UV Crosslinking
|
||||
1. Generally provides more specific crosslinks between directly interacting residues (protein–RNA).
|
||||
2. Can require specialized equipment (UV crosslinker).
|
||||
3. More commonly used in CLIP-based methods for precise mapping of RNA-protein interaction sites.
|
||||
4. Formaldehyde Crosslinking
|
||||
5. Straightforward chemical method.
|
||||
6. Potentially higher background due to nonspecific crosslinks.
|
||||
7. Reversal requires heating and/or high salt conditions, which can be harsh on samples.
|
||||
8. For many RNA-IP followed by RT-qPCR experiments (RIP-qPCR), mild crosslinking using UV at 254 nm is quite popular because it preserves specificity. However, if you already have a formaldehyde-based protocol optimized for your lab, that can also work.
|
||||
|
||||
#### Final Tips
|
||||
Pilot Experiments:
|
||||
Always optimize crosslinking conditions (time, energy, concentration) to balance specificity vs. yield.
|
||||
Test different crosslinking strengths and confirm via a known positive RNA target.
|
||||
Include Controls:
|
||||
Use an IgG control or a nonspecific antibody to measure background binding.
|
||||
Use input RNA to normalize or calculate percentage of input in qPCR.
|
||||
Validate with Known Targets:
|
||||
If possible, use a known RNA that your protein interacts with as a positive control.
|
||||
Handle RNA Carefully:
|
||||
Incorporate RNase inhibitors in all buffers, and keep samples cold when possible.
|
||||
|
||||
|
||||
#### Safety Considerations:
|
||||
1. UV crosslinking: protect from direct UV exposure; follow lamp manufacturer’s guidelines.
|
||||
2. Formaldehyde: use a fume hood; wear gloves and goggles.
|
||||
|
||||
|
||||
**By choosing the appropriate crosslinking approach and carefully optimizing the conditions, you can capture stable RNA-protein interactions, immunoprecipitate your protein of interest, and then detect and quantify the associated RNAs by RT-qPCR.**
|
16
Protocols/Seeding 96-Well Plate Protocol.md
Normal file
16
Protocols/Seeding 96-Well Plate Protocol.md
Normal file
@ -0,0 +1,16 @@
|
||||
## Before You Begin
|
||||
|
||||
- Sterilize all materials with 70% ethanol.
|
||||
- Complete plate layout and siRNA calculations beforehand.
|
||||
|
||||
## Protocol
|
||||
|
||||
1. Open sterile 96-well TC plate (clear for brightfield / black for fluorescence).
|
||||
2. Dilute 9 ml of cell suspension with 14 ml complete media.
|
||||
3. Swirl and pour into a sterile 25-ml basin.
|
||||
4. Using a multi-channel pipet:
|
||||
- Seed **100 µl** per well.
|
||||
5. Mix cell suspension periodically while seeding.
|
||||
6. Aspirate leftovers and clean up.
|
||||
|
||||
---
|
16
Protocols/Seeding Based on Confluence.md
Normal file
16
Protocols/Seeding Based on Confluence.md
Normal file
@ -0,0 +1,16 @@
|
||||
## For 6-Well Plates
|
||||
|
||||
1. Start with a 90–100% confluent 25 cm^3 flask of cells.
|
||||
2. Aspirate media and wash with 10 ml sterile PBS.
|
||||
3. Add 1 ml Trypsin, coat, incubate ~5 min at 37°C.
|
||||
4. Dislodge cells, add 9 ml complete media (10% FBS + 1% PS).
|
||||
5. Mix gently, pipet **350 µl** cell suspension into each well.
|
||||
6. Add **1600 µl** complete media to each well.
|
||||
7. Incubate 24–48 hours.
|
||||
|
||||
## For 24-Well Plates
|
||||
|
||||
- Pipet 200 µl** cell suspension into each well.
|
||||
- Top up with **800 µl** media as needed.
|
||||
|
||||
---
|
38
Protocols/SpectraMax Plate Reader Protocol.md
Normal file
38
Protocols/SpectraMax Plate Reader Protocol.md
Normal file
@ -0,0 +1,38 @@
|
||||
**
|
||||
|
||||
Created: 03/22/25JJ
|
||||
|
||||
1. Open the SpectraMax software on the computer.
|
||||
|
||||
2. Click Protocol > New Experiment
|
||||
|
||||
3. Click the gear above the plate grid to adjust settings.
|
||||
|
||||
4. For BCA:
|
||||
|
||||
|
||||
5. Absorbance mode
|
||||
|
||||
6. Wavelengths = 562 nm
|
||||
|
||||
7. Paint the wells you want to measure
|
||||
|
||||
8. 96-well, clrbttm
|
||||
|
||||
9. No shaking
|
||||
|
||||
10. Fast Read is fine
|
||||
|
||||
|
||||
11. Click open/close plate reader button
|
||||
|
||||
12. Insert your plate with H1 in the bottom-left corner.
|
||||
|
||||
13. Press Read
|
||||
|
||||
14. Copy paste the grid to excel
|
||||
|
||||
15. Save excel file to a USB or to the hard drive and then transfer it off the core facility computer.
|
||||
|
||||
|
||||
**
|
10
Protocols/Subculturing Cells.md
Normal file
10
Protocols/Subculturing Cells.md
Normal file
@ -0,0 +1,10 @@
|
||||
## Before You Begin
|
||||
- Sterilize everything with 70% ethanol.
|
||||
- Spray your hands after touching anything outside the hood.
|
||||
## Protocol
|
||||
1. Aspirate old media.
|
||||
2. Wash with PBS, aspirate.
|
||||
3. Add 1 ml Tryp-LE, incubate 5–10 min.
|
||||
4. Dislodge cells, add 9 ml complete media.
|
||||
5. Seed 1 ml into a new flask with 9 ml complete media.
|
||||
6. Incubate at 37°C with 5% CO₂.
|
12
Protocols/Treating cells.md
Normal file
12
Protocols/Treating cells.md
Normal file
@ -0,0 +1,12 @@
|
||||
## Steps:
|
||||
1. Aspirate old cell media.
|
||||
|
||||
2. Add 150 ul (96-well), 1 ml (24-well), or 2 ml (6-well) control or treatment media (warmed in thermal bead bath) per well.
|
||||
|
||||
3. Return plate to incubator for the duration of the treatment period.
|
||||
|
||||
|
||||
### Example Treaments:
|
||||
1. [[BSA-OAPA treatment protocol v1.gdoc]]
|
||||
2. [[BSA-OAPA treatment protocol v2.gdoc]]
|
||||
3. [[BSA-OAPA Treatment Protocol v3]]
|
77
Protocols/mRNA Stability Assay Protocol.md
Normal file
77
Protocols/mRNA Stability Assay Protocol.md
Normal file
@ -0,0 +1,77 @@
|
||||
---
|
||||
name: mRNA Stability Assay Protocol
|
||||
id: PROT-0011
|
||||
version: 1.0
|
||||
description: Protocol for measuring mRNA stability using siNC vs. siYbx1 with Actinomycin D treatment
|
||||
author: Jordan Lab
|
||||
created: 2025-05-06
|
||||
materials:
|
||||
- Actinomycin D
|
||||
- DMSO (control)
|
||||
- Complete medium
|
||||
- PBS (ice-cold)
|
||||
- TRIzol or RLT buffer
|
||||
- Multi-channel pipette
|
||||
- Cell culture plates
|
||||
- Tubes for sample storage
|
||||
steps:
|
||||
- "Prepare Actinomycin D and control media"
|
||||
- "Treat cells with ActD or control media"
|
||||
- "Collect time-point samples (0hr and subsequent)"
|
||||
- "Process samples for RNA extraction"
|
||||
notes: |
|
||||
This protocol compares mRNA stability between control (siNC) and Ybx1 knockdown (siYbx1) conditions
|
||||
ActD concentration is 5 µg/mL
|
||||
Use multichannel pipettes to minimize time between treatments
|
||||
---
|
||||
|
||||
#Protocol
|
||||
## (siNC vs. siYbx1 with Actinomycin D)
|
||||
### ✅ Step 1: Actinomycin D Medium Preparation
|
||||
|
||||
(Just before treatment)
|
||||
|
||||
- Prepare 5 µg/mL ActD medium and DMSO-only control medium.
|
||||
|
||||
|
||||
|
||||
Volumes needed:
|
||||
|
||||
- ActD (5 µg/mL): ~20 mL total (for all ActD wells)
|
||||
|
||||
|
||||
- No ActD (DMSO control): ~5 mL total
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
### ✅ Step 2: ActD Treatment and Initial Collection (0 hr)
|
||||
|
||||
Procedure:
|
||||
|
||||
- Remove old media quickly from the plate (multi-channel vacuum aspirator recommended).
|
||||
|
||||
- Using a multichannel pipet, rapidly add 100 µL of treatment media (ActD or No ActD) according to the plate map.
|
||||
|
||||
- Immediately collect the 0 hr samples.
|
||||
|
||||
|
||||
- Cell Collection Protocol (all time points):
|
||||
|
||||
|
||||
- Quickly aspirate medium.
|
||||
|
||||
- Briefly wash with 100 µL ice-cold PBS (optional).
|
||||
|
||||
- Lyse directly in wells using 50 µL TRIzol or RLT buffer.
|
||||
|
||||
- Transfer lysate immediately to labeled tubes/plate and store at –80°C.
|
||||
|
||||
- Repeat for each timepoint
|
||||
|
||||
|
||||
Multichannel tip:
|
||||
|
||||
Aspirate and dispense solutions one column at a time to minimize delays.
|
||||
**
|
@ -14,4 +14,4 @@ results:
|
||||
observations: "Example observations."
|
||||
status: planned
|
||||
notes: |
|
||||
Additional notes or deviations from protocol.
|
||||
Additional notes or deviations from protocol.
|
@ -6,4 +6,13 @@ pyyaml
|
||||
gitpython
|
||||
ghapi
|
||||
biopython
|
||||
requests
|
||||
requests
|
||||
|
||||
# Jupyter and dashboard dependencies
|
||||
jupyter
|
||||
notebook
|
||||
jupyterlab
|
||||
pandas
|
||||
matplotlib
|
||||
plotly
|
||||
ipywidgets
|
Loading…
x
Reference in New Issue
Block a user