In this project, we use a Jupyter Notebook to implement the vertex-weighting stage of the MCODE algorithm to help identify potential protein complexes in a yeast kinase–substrate interaction network. Our goal is to turn the interaction data into a graph and then compute weights for each protein based on how dense its local neighborhood is.
The dataset we use comes from:
Bandyopadhyay S. et al., A human MAP kinase interactome (2010) https://doi.org/10.1038/ncomms1139
In our graph:
- Each protein is a node
- Each interaction between proteins is an edge
- We build the graph using NetworkX
- We compute vertex weights using:
- k-core values
- local density
- We visualize the weighted graph to highlight potential protein complexes
mcode.ipynb– Our main notebook with all code, explanations, and plots.Bandyopadhyay2010.xls– The protein interaction dataset (this must be in the same folder as the notebook for it to load correctly).
To run everything, we need:
- Python 3.9+
- Jupyter Notebook or JupyterLab
- These Python packages:
numpypolars==1.34.0networkxmatplotlibseabornplotlyjupyter
If we want to use a requirements.txt, it should look exactly like this:
numpy
polars==1.34.0
networkx
matplotlib
seaborn
plotly
jupyterThis was a four-person project for CHEM 274B. The split below is taken from the team contribution document submitted with the assignment.
Jade Warren
- Base code for the MCODE notebook implementation and debugging
- Notes from papers for the slides
Carlos Lopez
- Algorithm literature search
- Notebook debugging
- 3D visualization
Manula Dombagahawatta
- Notebook debugging (primary)
- Original HIGH-PPI research
Brendan Dang
- Slide template and notes
- README
- Data and paper sources
Original repository: https://github.com/jadewithgreen/MCODE