reflexive 2.1.0__tar.gz → 2.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {reflexive-2.1.0 → reflexive-2.2.1}/.gitignore +3 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/PKG-INFO +1 -1
- {reflexive-2.1.0 → reflexive-2.2.1}/pyproject.toml +1 -1
- {reflexive-2.1.0 → reflexive-2.2.1}/src/reflexive/analysis_functions.py +67 -6
- {reflexive-2.1.0 → reflexive-2.2.1}/src/reflexive/res_analysis.py +8 -6
- reflexive-2.2.1/tests/test_reflexive-v2.ipynb +1867 -0
- reflexive-2.2.1/tests/test_reflexive.ipynb +2032 -0
- reflexive-2.1.0/tests/annotated_0.html +0 -119
- reflexive-2.1.0/tests/annotated_1.html +0 -174
- reflexive-2.1.0/tests/annotated_2.html +0 -169
- reflexive-2.1.0/tests/data/df-250207.pkl +0 -0
- reflexive-2.1.0/tests/data/df-250211.pkl +0 -0
- reflexive-2.1.0/tests/data/res_analysis_20250206.json +0 -1
- reflexive-2.1.0/tests/data/res_analysis_20250206.tar.gz +0 -0
- reflexive-2.1.0/tests/data/res_analysis_20250207.json +0 -1
- reflexive-2.1.0/tests/data/res_analysis_20250207.tar.gz +0 -0
- reflexive-2.1.0/tests/data/res_analysis_20250211.json +0 -1
- reflexive-2.1.0/tests/data/res_analysis_20250211.tar.gz +0 -0
- reflexive-2.1.0/tests/data/synth_ref-datascientist.html +0 -174
- reflexive-2.1.0/tests/data/synth_ref-footballer.html +0 -119
- reflexive-2.1.0/tests/data/synth_ref-surgeon.html +0 -169
- reflexive-2.1.0/tests/data/teach_ref-3.html +0 -144
- reflexive-2.1.0/tests/data/teach_ref-4.html +0 -124
- reflexive-2.1.0/tests/data/teach_ref-5.html +0 -194
- reflexive-2.1.0/tests/df-250207.pkl +0 -0
- reflexive-2.1.0/tests/test_reflexive-v2.ipynb +0 -1853
- reflexive-2.1.0/tests/test_reflexive.ipynb +0 -2272
- {reflexive-2.1.0 → reflexive-2.2.1}/=3.12 +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/LICENSE +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/README.md +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.1-py3-none-any.whl +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.1.tar.gz +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.2-py3-none-any.whl +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.2.tar.gz +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.3-py3-none-any.whl +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.3.tar.gz +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.4-py3-none-any.whl +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.4.tar.gz +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.5-py3-none-any.whl +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.5.tar.gz +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.6-py3-none-any.whl +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.6.tar.gz +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.7-py3-none-any.whl +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.7.tar.gz +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.8-py3-none-any.whl +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/dist_v1/reflexive-1.2.8.tar.gz +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/src/reflexive/__init__.py +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/src/reflexive/display_functions.py +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/src/reflexive/service.py +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/tests/__init__.py +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/tests/data_source/synth_ref-datascientist.txt +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/tests/data_source/synth_ref-footballer.txt +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/tests/data_source/synth_ref-surgeon.txt +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/tests/data_source/teach_ref-3.txt +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/tests/data_source/teach_ref-4.txt +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/tests/data_source/teach_ref-5.txt +0 -0
- {reflexive-2.1.0 → reflexive-2.2.1}/tests/test_reflexive_extras.py +0 -0
|
@@ -7,7 +7,10 @@ from functools import partial
|
|
|
7
7
|
import tarfile
|
|
8
8
|
import json
|
|
9
9
|
import os
|
|
10
|
-
|
|
10
|
+
from numpy import (
|
|
11
|
+
asarray,
|
|
12
|
+
dot
|
|
13
|
+
)
|
|
11
14
|
from numpy.linalg import norm
|
|
12
15
|
from itertools import chain
|
|
13
16
|
from graph_tool.all import (
|
|
@@ -15,6 +18,7 @@ from graph_tool.all import (
|
|
|
15
18
|
similarity,
|
|
16
19
|
adjacency)
|
|
17
20
|
|
|
21
|
+
|
|
18
22
|
### PIPELINE FUNCTIONS
|
|
19
23
|
|
|
20
24
|
# Clean text using supplied function and calculate text length
|
|
@@ -165,7 +169,7 @@ def _create_adj_matrix(weights:dict[tuple,float])->list[list[float]]:
|
|
|
165
169
|
matrix.append(row)
|
|
166
170
|
return matrix
|
|
167
171
|
|
|
168
|
-
###
|
|
172
|
+
### SIMILARITY ANALYSIS
|
|
169
173
|
|
|
170
174
|
def _jaccard_similarity(g1:Graph,g2:Graph)->float:
|
|
171
175
|
return similarity(g1, g2,
|
|
@@ -173,10 +177,67 @@ def _jaccard_similarity(g1:Graph,g2:Graph)->float:
|
|
|
173
177
|
#label1=g1.vp['v_labels'], label2=g2.vp['v_labels'],
|
|
174
178
|
norm=True, p=1.0, distance=False, asymmetric=False)
|
|
175
179
|
|
|
176
|
-
def _cosine_similarity(m1,m2)->float:
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
+
# def _cosine_similarity(m1,m2)->float:
|
|
181
|
+
# v1 = list(chain.from_iterable(m1))
|
|
182
|
+
# v2 = list(chain.from_iterable(m2))
|
|
183
|
+
# return np.dot(v1,v2)/(norm(v1)*norm(v2))
|
|
184
|
+
|
|
185
|
+
def _vectorise_adj(matrix):
|
|
186
|
+
return list(chain.from_iterable((matrix[i][j] for j in range(i,5)) for i in range(5)))
|
|
187
|
+
|
|
188
|
+
def zero_pos(am):
|
|
189
|
+
nm = []
|
|
190
|
+
for r,row in enumerate(am):
|
|
191
|
+
nr = []
|
|
192
|
+
for c,weight in enumerate(row):
|
|
193
|
+
if r < 3 or c < 3:
|
|
194
|
+
nr.append(weight)
|
|
195
|
+
else:
|
|
196
|
+
nr.append(0)
|
|
197
|
+
nm.append(nr)
|
|
198
|
+
return nm
|
|
199
|
+
|
|
200
|
+
def zero_mod(am):
|
|
201
|
+
nm = []
|
|
202
|
+
for r,row in enumerate(am):
|
|
203
|
+
nr = []
|
|
204
|
+
for c,weight in enumerate(row):
|
|
205
|
+
if r >= 3 or c >= 3:
|
|
206
|
+
nr.append(weight)
|
|
207
|
+
else:
|
|
208
|
+
nr.append(0)
|
|
209
|
+
nm.append(nr)
|
|
210
|
+
return nm
|
|
211
|
+
|
|
212
|
+
def _adj_vector(adj_matrix):
|
|
213
|
+
return _vectorise_adj(adj_matrix)
|
|
214
|
+
|
|
215
|
+
def _positional_vector(adj_matrix):
|
|
216
|
+
return _vectorise_adj(zero_pos(adj_matrix))
|
|
217
|
+
|
|
218
|
+
def _modal_vector(adj_matrix):
|
|
219
|
+
return _vectorise_adj(zero_mod(adj_matrix))
|
|
220
|
+
|
|
221
|
+
def _cosine(A,B):
|
|
222
|
+
return dot(A,B)/(norm(A)*norm(B))
|
|
223
|
+
|
|
224
|
+
def _am4idx(df,idx:int):
|
|
225
|
+
return df.res_adj_matrix[idx]
|
|
226
|
+
|
|
227
|
+
def _similarity(m1,m2,vector_func):
|
|
228
|
+
return float(_cosine(vector_func(m1),vector_func(m2)))
|
|
229
|
+
|
|
230
|
+
def _res_similarity(df,idx1,idx2,vector_func):
|
|
231
|
+
return _similarity(_am4idx(df,idx1),_am4idx(df,idx2),vector_func)
|
|
232
|
+
|
|
233
|
+
_interaction_similarity = partial(_res_similarity,vector_func=_adj_vector)
|
|
234
|
+
_positional_similarity = partial(_res_similarity,vector_func=_positional_vector)
|
|
235
|
+
_modal_similarity = partial(_res_similarity,vector_func=_modal_vector)
|
|
236
|
+
|
|
237
|
+
def _similarities(df,idx1,idx2):
|
|
238
|
+
return {"interaction": _interaction_similarity(df,idx1,idx2),
|
|
239
|
+
"positional": _positional_similarity(df,idx1,idx2),
|
|
240
|
+
"modal":_modal_similarity(df,idx1,idx2)}
|
|
180
241
|
|
|
181
242
|
|
|
182
243
|
|
|
@@ -23,7 +23,7 @@ from reflexive.analysis_functions import (
|
|
|
23
23
|
_add_semantic_weights,
|
|
24
24
|
_add_res_adj_matrix,
|
|
25
25
|
_jaccard_similarity,
|
|
26
|
-
|
|
26
|
+
_similarities,
|
|
27
27
|
_date_string,
|
|
28
28
|
_create_local_dir
|
|
29
29
|
)
|
|
@@ -131,8 +131,9 @@ class RES_analyser:
|
|
|
131
131
|
def get_jaccard_similarity(self,g1,g2):
|
|
132
132
|
return _jaccard_similarity(g1,g2)
|
|
133
133
|
|
|
134
|
-
def
|
|
135
|
-
return
|
|
134
|
+
def get_cosine_similarities(self,df,idx1,idx2):
|
|
135
|
+
return _similarities(df,idx1,idx2)
|
|
136
|
+
|
|
136
137
|
|
|
137
138
|
############################################################
|
|
138
139
|
# UTILITY METHODS
|
|
@@ -151,9 +152,10 @@ class RES_analyser:
|
|
|
151
152
|
file_names = []
|
|
152
153
|
texts = []
|
|
153
154
|
for file_name in sorted(os.listdir(file_path)):
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
155
|
+
if not file_name.startswith('.'):
|
|
156
|
+
file_names.append(file_name.split('.')[0])
|
|
157
|
+
with open(os.path.join(file_path,file_name),'r') as fp:
|
|
158
|
+
texts.append(fp.read())
|
|
157
159
|
return {"doc_name":file_names,"text":texts}
|
|
158
160
|
|
|
159
161
|
|