Skip to content

Commit 67cb241

Browse files
Fix bug in change point; update document
1 parent dd0669d commit 67cb241

2 files changed

Lines changed: 6 additions & 6 deletions

File tree

docs/changepoint_detector.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ The inputs to the algorithm are:
6363

6464
The algorithm proceeds as follows.
6565

66-
1. Calculate the evaluation sum for minimal partitions for each $n \in S$, where $n$ is the first index in the second partition.
67-
1. $y^{\prime}_n = y_n - y_{f_S}$
66+
1. For $n \in [f_S, l_S]$, calculate the signal for the partition, $A_{S_{n,1}} + A_{S_{n,2}}$.
67+
1. $y^{\prime}_n = y_n - y_{f_S-1}$
6868
2. $z^{\prime}_n = z_n - y_N + y_{l_S}$
69-
3. $v_n = \frac{y_{n-1}^{\prime}y^{\prime}_{n-1}}{n} + \frac{z_n^{\prime}z_n^{\prime} }{(|S|-n)}$
70-
2. $n^{\star} = argmax_n v_n$
69+
3. $s_n = \frac{y_{n-1}^{\prime}y^{\prime}_{n-1}}{n} + \frac{z_n^{\prime}z_n^{\prime} }{(N-n)}$
70+
2. Find the change point: $n^{\star} = argmax_n s_n$

src/piecewise_system_discovery.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ def _computeChangePointSignalDifference(self, timecourse_df: pd.DataFrame,
8787
diff_arr = norm_jacobian_arr[1:] - norm_jacobian_arr[:-1]
8888
raw_signal_arr = np.linalg.norm(
8989
diff_arr.reshape(diff_arr.shape[0], -1), axis=1) / (num_species ** 2)
90-
return raw_signal_arr
90+
return np.sqrt(raw_signal_arr)
9191
#split_time_arr = timecourse_df.index.to_numpy(dtype=float)[1:]
9292
#return self._gaussianSmooth(split_time_arr, raw_signal_arr, self.fit_kernel_bandwidth)
9393

@@ -108,7 +108,7 @@ def _computeChangePointSignalMedian(self, timecourse_df: pd.DataFrame,
108108
for j in norm_jacobian_arr])/(num_species ** 2)
109109
#split_time_arr = timecourse_df.index.to_numpy(dtype=float)
110110
#return self._gaussianSmooth(split_time_arr, raw_signal_arr, self.fit_kernel_bandwidth)
111-
return raw_signal_arr
111+
return np.sqrt(raw_signal_arr[1:])
112112

113113

114114
def _detectChangePoints(self, signal_arr: np.ndarray, num_point: int) -> List[int]:

0 commit comments

Comments
 (0)