Skip to content

Commit 20dd7f6

Browse files
Merge pull request #143 from daisybio/development
v1.2.3: bug fix cross study prediction SMRF
2 parents 327a1ac + 1b61881 commit 20dd7f6

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

docs/conf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@
5656
# the built documents.
5757
#
5858
# The short X.Y version.
59-
version = "1.2.2"
59+
version = "1.2.3"
6060
# The full version, including alpha/beta/rc tags.
61-
release = "1.2.2"
61+
release = "1.2.3"
6262

6363
# The language for content autogenerated by Sphinx. Refer to documentation
6464
# for a list of supported languages.

drevalpy/models/SRMF/srmf.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ def train(
137137
)
138138
self.best_u = pd.DataFrame(best_u, index=drugs)
139139
self.best_v = pd.DataFrame(best_v, index=cell_lines)
140+
self.training_mean = np.nanmean(output._response) # Store training mean
140141

141142
def predict(
142143
self,
@@ -154,12 +155,21 @@ def predict(
154155
:param drug_input: not needed for prediction in SRMF
155156
:returns: predicted response matrix
156157
"""
157-
best_u = self.best_u.loc[drug_ids].values
158-
best_v = self.best_v.loc[cell_line_ids].values
158+
# Use training mean for missing drugs
159+
best_u = np.full((len(drug_ids), self.k), self.training_mean)
160+
for idx, drug in enumerate(drug_ids):
161+
if drug in self.best_u.index:
162+
best_u[idx, :] = self.best_u.loc[drug].values
163+
164+
# Use training mean for missing cell lines
165+
best_v = np.full((len(cell_line_ids), self.k), self.training_mean)
166+
for idx, cell in enumerate(cell_line_ids):
167+
if cell in self.best_v.index:
168+
best_v[idx, :] = self.best_v.loc[cell].values
169+
159170
# calculate the diagonal of the matrix product which is the prediction,
160171
# faster than np.dot(best_u, best_v.T).diagonal()
161172
diagonal_predictions = np.einsum("ij,ji->i", best_u, best_v.T)
162-
163173
return diagonal_predictions
164174

165175
def _cmf(self, w, int_mat, drug_mat, cell_mat) -> tuple[np.ndarray, np.ndarray]:

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "drevalpy"
3-
version = "1.2.2"
3+
version = "1.2.3"
44
description = "Drug response evaluation of cancer cell line drug response models in a fair setting"
55
authors = ["DrEvalPy development team"]
66
license = "GPL-3.0"

0 commit comments

Comments
 (0)