Visualization¶
Visualize the best fitted pdb by powerfit with MolStar.
The notebook expects you have run the workflow.ipynb notebook first to generate some results.
This notebook must be executed to see the visualization.
In [1]:
Copied!
from pathlib import Path
from protein_detective.db import connect, load_fitted_models, load_powerfit_runs
from pathlib import Path
from protein_detective.db import connect, load_fitted_models, load_powerfit_runs
In [2]:
Copied!
import logging
logging.basicConfig(level=logging.INFO)
import logging
logging.basicConfig(level=logging.INFO)
In [3]:
Copied!
session_dir = Path("session1")
session_dir
session_dir = Path("session1")
session_dir
Out[3]:
PosixPath('session1')
In [4]:
Copied!
with connect(session_dir, read_only=True) as conn:
runs = load_powerfit_runs(conn)
runs
with connect(session_dir, read_only=True) as conn:
runs = load_powerfit_runs(conn)
runs
INFO:protein_detective.db:Database is in read-only mode, skipping initialization.
Out[4]:
[(1, PowerfitOptions(target=PosixPath('../../powerfit-tutorial/ribosome-KsgA.map'), resolution=13.0, angle=20.0, laplace=True, core_weighted=False, no_resampling=False, resampling_rate=2.0, no_trimming=False, trimming_cutoff=None, gpu=False, nproc=1), PosixPath('session1/powerfit/1/ribosome-KsgA.map'))]
Use density map from the first run
In [5]:
Copied!
powerfit_run_id, _options, density_map = runs[0]
powerfit_run_id, density_map
powerfit_run_id, _options, density_map = runs[0]
powerfit_run_id, density_map
Out[5]:
(1, PosixPath('session1/powerfit/1/ribosome-KsgA.map'))
The table of solutions of first run.
In [6]:
Copied!
with connect(session_dir, read_only=True) as conn:
fitted_models = load_fitted_models(conn)
fitted_models = fitted_models[fitted_models["powerfit_run_id"] == powerfit_run_id]
fitted_models
with connect(session_dir, read_only=True) as conn:
fitted_models = load_fitted_models(conn)
fitted_models = fitted_models[fitted_models["powerfit_run_id"] == powerfit_run_id]
fitted_models
INFO:protein_detective.db:Database is in read-only mode, skipping initialization.
Out[6]:
powerfit_run_id | structure | rank | fitted_model_file | unfitted_model_file | cc | fishz | relz | translation | rotation | density_filter_id | af_id | pdb_id | uniprot_acc | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | A8MT69_4ne3_B2A | 1 | session1/powerfit/1/A8MT69_4ne3_B2A/fit_1.pdb | session1/single_chain/A8MT69_4ne3_B2A.pdb | 0.429 | 0.459 | 10.376 | [276.3, 248.67, 153.5] | [0.0, 0.0, 1.0, 0.797, 0.604, 0.0, -0.604, 0.7... | <NA> | None | 4NE3 | A8MT69 |
1 | 1 | A8MT69_4ne3_B2A | 2 | session1/powerfit/1/A8MT69_4ne3_B2A/fit_2.pdb | session1/single_chain/A8MT69_4ne3_B2A.pdb | 0.426 | 0.455 | 10.289 | [227.18, 245.6, 214.9] | [0.0, 0.0, -1.0, 1.0, 0.0, 0.0, 0.0, -1.0, 0.0] | <NA> | None | 4NE3 | A8MT69 |
2 | 1 | A8MT69_4ne3_B2A | 3 | session1/powerfit/1/A8MT69_4ne3_B2A/fit_3.pdb | session1/single_chain/A8MT69_4ne3_B2A.pdb | 0.422 | 0.450 | 10.167 | [138.15, 153.5, 138.15] | [-1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, -1.0] | <NA> | None | 4NE3 | A8MT69 |
3 | 1 | A8MT69_4ne3_B2A | 4 | session1/powerfit/1/A8MT69_4ne3_B2A/fit_4.pdb | session1/single_chain/A8MT69_4ne3_B2A.pdb | 0.416 | 0.442 | 9.999 | [141.22, 168.85, 141.22] | [-0.548, -0.816, 0.184, -0.632, 0.548, 0.548, ... | <NA> | None | 4NE3 | A8MT69 |
4 | 1 | A8MT69_4ne3_B2A | 5 | session1/powerfit/1/A8MT69_4ne3_B2A/fit_5.pdb | session1/single_chain/A8MT69_4ne3_B2A.pdb | 0.411 | 0.437 | 9.883 | [227.18, 236.39, 230.25] | [0.816, -0.548, 0.184, 0.184, 0.548, 0.816, -0... | <NA> | None | 4NE3 | A8MT69 |
Show top 3 models with density map¶
In [7]:
Copied!
from protein_detective.visualization import show_fitted_models_and_density
from protein_detective.visualization import show_fitted_models_and_density
In [8]:
Copied!
show_fitted_models_and_density(
fitted_models.head(3),
density_map,
)
show_fitted_models_and_density(
fitted_models.head(3),
density_map,
)