Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
OpenFold
Commits
139ea9a6
Commit
139ea9a6
authored
Aug 03, 2023
by
Geoffrey Yu
Browse files
removed old data and script for permutation unittest. now working on the new permutation unittest
parent
e2193f77
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
0 additions
and
139 deletions
+0
-139
tests/test_data/label_1.pkl
tests/test_data/label_1.pkl
+0
-0
tests/test_data/label_2.pkl
tests/test_data/label_2.pkl
+0
-0
tests/test_permutation.py
tests/test_permutation.py
+0
-139
No files found.
tests/test_data/label_1.pkl
deleted
100644 → 0
View file @
e2193f77
File deleted
tests/test_data/label_2.pkl
deleted
100644 → 0
View file @
e2193f77
File deleted
tests/test_permutation.py
deleted
100644 → 0
View file @
e2193f77
# Copyright 2021 AlQuraishi Laboratory
# Dingquan Yu @ EMBL-Hamburg Kosinski group
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from
pathlib
import
Path
import
pickle
import
torch
import
torch.nn
as
nn
import
numpy
as
np
import
unittest
from
openfold.config
import
model_config
from
openfold.data
import
data_transforms
from
openfold.model.model
import
AlphaFold
from
openfold.utils.loss
import
AlphaFoldMultimerLoss
from
openfold.utils.tensor_utils
import
tensor_tree_map
from
tests.config
import
consts
import
logging
logger
=
logging
.
getLogger
(
__name__
)
import
os
from
tests.data_utils
import
(
random_template_feats
,
random_extra_msa_feats
,
random_affines_vector
)
from
openfold.utils.rigid_utils
import
(
Rigid
,
)
class
TestPermutation
(
unittest
.
TestCase
):
def
setUp
(
self
):
"""
Firstly setup model configs and model as in
test_model.py
In the test case, use PDB ID 1e4k as the label
"""
self
.
test_data_dir
=
os
.
path
.
join
(
os
.
getcwd
(),
"tests/test_data"
)
self
.
label_ids
=
[
'label_1'
,
'label_1'
,
'label_2'
,
'label_2'
,
'label_2'
]
self
.
asym_id
=
[
0
]
*
9
+
[
1
]
*
9
+
[
2
]
*
13
+
[
3
]
*
13
+
[
4
]
*
13
def
affine_vector_to_4x4
(
self
,
affine
):
r
=
Rigid
.
from_tensor_7
(
affine
)
return
r
.
to_tensor_4x4
()
def
test_dry_run
(
self
):
os
.
environ
[
"CUDA_VISIBLE_DEVICES"
]
=
"0"
os
.
environ
[
"CUDA_LAUNCH_BLOCKING"
]
=
"1"
n_seq
=
consts
.
n_seq
n_templ
=
consts
.
n_templ
n_res
=
len
(
self
.
asym_id
)
n_extra_seq
=
consts
.
n_extra
c
=
model_config
(
consts
.
model
,
train
=
True
)
c
.
loss
.
masked_msa
.
num_classes
=
22
# somehow need overwrite this part in multimer loss config
c
.
model
.
evoformer_stack
.
no_blocks
=
4
# no need to go overboard here
c
.
model
.
evoformer_stack
.
blocks_per_ckpt
=
None
# don't want to set up
# deepspeed for this test
model
=
AlphaFold
(
c
)
multimer_loss
=
AlphaFoldMultimerLoss
(
c
.
loss
)
example_label
=
[
pickle
.
load
(
open
(
os
.
path
.
join
(
self
.
test_data_dir
,
f
"
{
i
}
.pkl"
),
'rb'
))
for
i
in
self
.
label_ids
]
batch
=
{}
tf
=
torch
.
randint
(
c
.
model
.
input_embedder
.
tf_dim
-
1
,
size
=
(
n_res
,))
batch
[
"target_feat"
]
=
nn
.
functional
.
one_hot
(
tf
,
c
.
model
.
input_embedder
.
tf_dim
).
float
()
batch
[
"aatype"
]
=
torch
.
argmax
(
batch
[
"target_feat"
],
dim
=-
1
)
batch
[
"residue_index"
]
=
torch
.
arange
(
n_res
)
backbone_dict
=
{
"backbone_affine_tensor"
:
torch
.
tensor
(
random_affines_vector
((
n_res
,))),
"backbone_affine_mask"
:
torch
.
from_numpy
(
np
.
random
.
randint
(
0
,
2
,
(
n_res
,)).
astype
(
np
.
float32
)),
"use_clamped_fape"
:
torch
.
from_numpy
(
np
.
array
(
0.0
)),
}
batch
[
'backbone_rigid_tensor'
]
=
self
.
affine_vector_to_4x4
(
backbone_dict
[
'backbone_affine_tensor'
])
batch
[
'backbone_rigid_mask'
]
=
backbone_dict
[
'backbone_affine_mask'
]
true_msa_dict
=
{
"true_msa"
:
torch
.
tensor
(
np
.
random
.
randint
(
0
,
21
,
(
n_seq
,
n_res
))),
"bert_mask"
:
torch
.
tensor
(
np
.
random
.
randint
(
0
,
2
,
(
n_seq
,
n_res
)).
astype
(
np
.
float32
)
)
}
batch
.
update
(
true_msa_dict
)
batch
[
"msa_feat"
]
=
torch
.
rand
((
n_seq
,
n_res
,
c
.
model
.
input_embedder
.
msa_dim
))
t_feats
=
random_template_feats
(
n_templ
,
n_res
)
batch
.
update
({
k
:
torch
.
tensor
(
v
)
for
k
,
v
in
t_feats
.
items
()})
extra_feats
=
random_extra_msa_feats
(
n_extra_seq
,
n_res
)
batch
.
update
({
k
:
torch
.
tensor
(
v
)
for
k
,
v
in
extra_feats
.
items
()})
batch
[
"msa_mask"
]
=
torch
.
randint
(
low
=
0
,
high
=
2
,
size
=
(
n_seq
,
n_res
)
).
float
()
batch
[
"seq_mask"
]
=
torch
.
randint
(
low
=
0
,
high
=
2
,
size
=
(
n_res
,)).
float
()
batch
.
update
(
data_transforms
.
make_atom14_masks
(
batch
))
batch
[
"no_recycling_iters"
]
=
torch
.
tensor
(
2.
)
batch
[
"seq_length"
]
=
torch
.
from_numpy
(
np
.
array
([
n_res
]
*
n_res
))
if
consts
.
is_multimer
:
#
# Modify asym_id, entity_id and sym_id so that it encodes
# 2 chains
# #
asym_id
=
self
.
asym_id
batch
[
"asym_id"
]
=
torch
.
tensor
(
asym_id
,
dtype
=
torch
.
float64
)
# batch["entity_id"] = torch.randint(0, 1, size=(n_res,))
batch
[
'entity_id'
]
=
torch
.
tensor
([
0
]
*
18
+
[
1
]
*
39
,
dtype
=
torch
.
float64
)
batch
[
"sym_id"
]
=
torch
.
tensor
(
asym_id
,
dtype
=
torch
.
float64
)
# batch["num_sym"] = torch.tensor([1]*18+[2]*13,dtype=torch.int64) # currently there are just 2 chains
batch
[
"extra_deletion_matrix"
]
=
torch
.
randint
(
0
,
2
,
size
=
(
n_extra_seq
,
n_res
))
add_recycling_dims
=
lambda
t
:
(
t
.
unsqueeze
(
-
1
).
expand
(
*
t
.
shape
,
c
.
data
.
common
.
max_recycling_iters
)
)
add_batch_size_dimension
=
lambda
t
:
(
t
.
unsqueeze
(
0
)
)
batch
=
tensor_tree_map
(
add_recycling_dims
,
batch
)
batch
=
tensor_tree_map
(
add_batch_size_dimension
,
batch
)
with
torch
.
no_grad
():
out
=
model
(
batch
)
print
(
f
"finished foward on batch with batch_size dim"
)
multimer_loss
(
out
,(
batch
,
example_label
))
# print(f"permuated_labels is {type(permutated_labels)} and keys are:\n {permutated_labels.keys()}")
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment