A mobile-friendly, web-based platform for visualizing and annotating 3D protein structures using 3Dmol.js and NGL.js. Built with Django, this app supports protein annotation through intuitive gestures and interactive tools.
Quickly classify protein models with swipe gestures:
- 👉 Swipe right — Mark as Correct
- 👈 Swipe left — Mark as Wrong
- 👇 Swipe down — Mark as Unsure
Annotations are saved to a MySQL database and can be exported as CSV from the web interface.
Interactively annotate protein domains directly in the browser:
- 🎯 Drag across the domain bar to define regions
- 🏷️ Name domains using the text field below
- 🖱️ Adjust domain boundaries by dragging
💾 Export zip:
- CSV: One file per protein (see format below)
- FASTA: Each domain as a separate sequence entry
- PDB: Each domain as a separate PDB file
Example .csv format:
Domain Number,Start Residue,End Residue,Predicted Domain
1,1,181,XD2
2,182,294,XD3Refine previously annotated domains by uploading .pdb and .csv files together:
- ✅ Mark incorrect domain entries
- 📦 Upload
.ziparchives containing both.pdband.csvfiles - ☑️ Enable "Include architecture data?" during upload
📁 Each .csv must match its .pdb filename (e.g., protein_id.pdb and protein_id.csv).
- 📝 Create an account
- 📤 Upload a
.zipcontaining your.pdbfiles - ✏️ Add an annotation title and description
- ⚙️ Annotate proteins using swipe or domain modes
- 📥 Export your annotations as
.csvor.fasta
📌 Note: The filename of each
.pdbserves as itsprotein_id.
- 🧬 Interactive 3D protein viewer
- 📱 Mobile touch and desktop mouse support
- 📊 Overview dashboard for grouped annotations
- 🔐 User login and registration
- 👥 User to user interaction
- 💾 Annotation export (CSV/FASTA/PDB)
- Backend: Python, Django
- Database: MySQL
- Frontend: HTML, JavaScript, 3Dmol.js, NGL.js
- Deployment: Docker
- If you have any suggestions please let me know!
- More robust nginx deployment
- Expanding domain correction with the ability to easily modify borders, names, etc.
git clone https://github.com/victornemeth/ProteinTinder.git
cd ProteinTinder
docker compose up -d --build.env file should be created in root dir and look like this:
MYSQL_DATABASE=annotate_db
MYSQL_USER=annotate_user
MYSQL_PASSWORD=very_secure_password
MYSQL_ROOT_PASSWORD=another_very_secure_password
DJANGO_SECRET_KEY=another_another_very_secure_password
DJANGO_DEBUG=True # For local use debug mode is recommended.
Connect via localhost:8000