Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
AlphaPulldown-ModelCIF-Conversion
Manage
Activity
Members
Labels
Plan
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Bienchen
AlphaPulldown-ModelCIF-Conversion
Commits
5509eae6
Commit
5509eae6
authored
1 year ago
by
Bienchen
Browse files
Options
Downloads
Patches
Plain Diff
Run a spell check
parent
1e7793ce
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
.spelling
+18
-0
18 additions, 0 deletions
.spelling
convert_to_modelcif.py
+17
-16
17 additions, 16 deletions
convert_to_modelcif.py
pyproject.toml
+16
-1
16 additions, 1 deletion
pyproject.toml
with
51 additions
and
17 deletions
.spelling
0 → 100644
+
18
−
0
View file @
5509eae6
Biopython
CIF
FastA
Jupyter
MSA
ModelCIF
PAE
PDB
PPI
coevolution
modeled
modeling
multimer
polypeptide
pre
repo
reproducibility
subdirectory
This diff is collapsed.
Click to expand it.
convert_to_modelcif.py
+
17
−
16
View file @
5509eae6
...
...
@@ -77,7 +77,7 @@ class _GlobalPTM(modelcif.qa_metric.Global, modelcif.qa_metric.PTM):
class
_GlobalIPTM
(
modelcif
.
qa_metric
.
Global
,
modelcif
.
qa_metric
.
IpTM
):
# python-modelcif reads the first line of class-doc has description of a
#
`
python-modelcif
`
reads the first line of class-doc has description of a
# score, so we need to allow long lines, here.
# pylint: disable=line-too-long
"""
Predicted protein-protein interface score, based on the TM-score score in [0,1].
"""
...
...
@@ -111,7 +111,7 @@ class _LocalPairwisePAE(modelcif.qa_metric.LocalPairwise, _PAE):
class
_Biopython2ModelCIF
(
modelcif
.
model
.
AbInitioModel
):
"""
Map Biopython PDB.Structure object to ihm.model
"""
"""
Map Biopython
`
PDB.Structure
()`
object to
`
ihm.model
()`.
"""
def
__init__
(
self
,
*
args
,
**
kwargs
):
"""
Initialise a model
"""
...
...
@@ -152,7 +152,7 @@ class _Biopython2ModelCIF(modelcif.model.AbInitioModel):
)
# local scores
# iterate polypetide chains
# iterate polype
p
tide chains
# local PLDDT
i
=
0
lpae
=
[]
...
...
@@ -239,7 +239,7 @@ def _get_step_output_method_type(method_type, protocol_steps):
"""
Get the output of a protocol step of a certain type.
"""
for
step
in
protocol_steps
:
if
step
.
method_type
==
method_type
:
# modelcif.data.DataGroup is some kind of list
#
`
modelcif.data.DataGroup
()`
is some kind of list
if
isinstance
(
step
.
output_data
,
list
):
return
step
.
output_data
return
modelcif
.
data
.
DataGroup
(
step
.
output_data
)
...
...
@@ -309,12 +309,16 @@ def _get_modelcif_protocol(
# add software w/o individual parameters
sw_grp
.
append
(
sw_dict
[
pss
])
# add software with individual parameters
# Commented out code does not need spelling check, so disable
# it in Pylint
# pylint: disable=wrong-spelling-in-comment
# sw_grp.append(
# modelcif.SoftwareWithParameters(
# sw_dict[pss],
# [modelcif.SoftwareParameter(<name>, <value>)],
# )
# )
# pylint: enable=wrong-spelling-in-comment
# ToDo: make sure AlphaPulldown is first in the SoftwareGroup() list,
# AlphaFold second; that influences citation order in the ModelCIF
# file.
...
...
@@ -334,7 +338,7 @@ def _get_modelcif_protocol(
def
_get_modelcif_ref_dbs
(
meta_json
):
"""
Get sequence
DB
s used for monomer features.
"""
"""
Get sequence
database
s used for monomer features.
"""
# vendor formatting for DB names/ URLs, extend on KeyError
db_info
=
{
"
uniref90
"
:
{
...
...
@@ -435,13 +439,13 @@ def _store_as_modelcif(
# pickle files quickly exceeds reasonable storage use
# - 'modeling' (run_multimer_jobs.py), are the four modes reflected by
# the JSON data/ does the JSON data look different for each mode?
# - are the scores only calculated by alpha-analysis.sif or do they
# - are the scores only calculated by
`
alpha-analysis.sif
`
or do they
# come out of run_multimer_jobs.py? Does this go into its own step?
# - what about including the tabular summary?
# - model selection: only if just a certain model is translated to
# ModelCIF, or mix it with scoring step?
#
# - cancer-PPI-domains has 'coevolutin MSA'
# - cancer-PPI-domains has 'coevoluti
o
n MSA'
# - then modelling
# - do we have an example with a split MSA & modelling step?
# - model selection like for Tara
...
...
@@ -457,7 +461,7 @@ def _store_as_modelcif(
)
)
# write modelcif.System to file
# write
`
modelcif.System
()`
to file
# NOTE: this will dump PAE on path provided in add_scores
# -> hence we cheat by changing path and back while being exception-safe...
oldpwd
=
os
.
getcwd
()
...
...
@@ -484,7 +488,7 @@ def _store_as_modelcif(
def
_compress_cif_file
(
cif_file
):
"""
Compress
cif
file and delete original.
"""
"""
Compress
CIF
file and delete original.
"""
with
open
(
cif_file
,
"
rb
"
)
as
f_in
:
with
gzip
.
open
(
cif_file
+
"
.gz
"
,
"
wb
"
)
as
f_out
:
shutil
.
copyfileobj
(
f_in
,
f_out
)
...
...
@@ -495,7 +499,7 @@ def _get_model_details(cmplx_name: str, data_json: dict) -> str:
"""
Get the model description.
"""
ap_versions
=
[]
af2_version
=
None
for
mnmr
in
data_json
[
"
__meta__
"
]:
# mnmr = monomer
for
mnmr
in
data_json
[
"
__meta__
"
]:
#
`
mnmr = monomer
`
if
(
data_json
[
"
__meta__
"
][
mnmr
][
"
software
"
][
"
AlphaPulldown
"
][
"
version
"
]
not
in
ap_versions
...
...
@@ -632,7 +636,7 @@ def _get_scores(cif_json: dict, scr_file: str) -> None:
def
_get_software_data
(
meta_json
:
dict
)
->
list
:
"""
Turn meta data about software into modelcif.Software objects.
"""
"""
Turn meta data about software into
`
modelcif.Software
()`
objects.
"""
cite_hhsuite
=
ihm
.
Citation
(
pmid
=
"
31521110
"
,
title
=
"
HH-suite3 for fast remote homology detection and deep
"
...
...
@@ -651,7 +655,7 @@ def _get_software_data(meta_json: dict) -> list:
],
doi
=
"
10.1186/s12859-019-3019-7
"
,
)
# {key from
json
: dict needed to produce s
w
entry plus internal key}
# {key from
JSON
: dict needed to produce s
oftware
entry plus internal key}
sw_data
=
{
"
AlphaFold
"
:
modelcif
.
Software
(
"
AlphaFold-Multimer
"
,
...
...
@@ -811,7 +815,7 @@ def _get_protocol_steps(modelcif_json):
# model selection step <- ask if there is automated selection, if only
# manual, skip this step here?
# ToDo: Example 1 in the GitHub repo has a 3rd step: "Evalu
t
aion and
# ToDo: Example 1 in the GitHub repo has a 3rd step: "Evalua
t
ion and
# visualisation"
return
protocol
...
...
@@ -980,6 +984,3 @@ if __name__ == "__main__":
# From former discussions:
# - including Jupyter notebooks would require adding the pickle files to the
# associated files (too much storage needed for that)
# LocalWords: ToDo AlphaPulldown PAEs dir struct coevolution MSA py modeling
# LocalWords: multimer sif Jupyter aa MSAs
This diff is collapsed.
Click to expand it.
pyproject.toml
+
16
−
1
View file @
5509eae6
...
...
@@ -21,4 +21,19 @@ max-line-length = 81
[tool.pylint.deprecated_builtins]
# We want to use proper logging, so we can control *ALL* output bei the Abseil
# logger, hence: deprecate 'print'
bad-functions
=
[
"map"
,
"filter"
,
"print"
]
\ No newline at end of file
bad-functions
=
[
"map"
,
"filter"
,
"print"
]
# Run the spell check every once in a while, having it enabled always, is too
# annoying.
#[tool.pylint.spelling]
#max-spelling-suggestions = 4
#
#spelling-dict = "en_GB"
#
#spelling-ignore-comment-directives = "fmt: on,fmt: off,noqa:,noqa,nosec,isort:skip,mypy:"
#
#spelling-ignore-words = ""
#
#spelling-private-dict-file = ".spelling"
#
#spelling-store-unknown-words = false
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment