Spaces:
Sleeping
Sleeping
neuralworm
commited on
Commit
·
94105ed
1
Parent(s):
8ea2147
fix average calculation
Browse files
app.py
CHANGED
@@ -216,6 +216,8 @@ def gematria_search_interface(phrases: str, max_words: int, show_translation: bo
|
|
216 |
results = []
|
217 |
all_results = [] # Store results for each phrase
|
218 |
middle_words_results = [] # Store middle word results for all books
|
|
|
|
|
219 |
|
220 |
phrases = phrases.strip().splitlines()
|
221 |
if not phrases:
|
@@ -265,13 +267,25 @@ def gematria_search_interface(phrases: str, max_words: int, show_translation: bo
|
|
265 |
<a href='{link}' target='_blank' class='bible-link'>[See on Bible Gateway]</a>
|
266 |
</div>
|
267 |
""")
|
268 |
-
results.append("</div>")
|
269 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
270 |
all_results.append(results_by_book) # Store results by book without the phrase
|
271 |
|
272 |
-
# Calculate
|
|
|
|
|
|
|
|
|
|
|
273 |
if len(all_results) >= 2:
|
274 |
-
results.append("<h2>Middle Words:</h2>")
|
275 |
results.append("<div class='results-container'>")
|
276 |
|
277 |
common_books = set.intersection(*[set(results.keys()) for results in all_results])
|
@@ -356,27 +370,30 @@ def gematria_search_interface(phrases: str, max_words: int, show_translation: bo
|
|
356 |
"""
|
357 |
return style + "\n".join(results)
|
358 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
359 |
def find_nearest_positions(results_lists: List[List]) -> List[int]:
|
360 |
"""Finds the nearest word positions among multiple lists of results."""
|
361 |
nearest_positions = []
|
362 |
for i in range(len(results_lists)):
|
363 |
-
positions_i = [(int(pos.split('-')[0])
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
for
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
if distance < min_distance:
|
375 |
-
min_distance = distance
|
376 |
-
nearest_pos_start = pos_i_start # Take the start position from the first list
|
377 |
-
nearest_pos_end = pos_i_end # Take the end position from the first list
|
378 |
-
if nearest_pos_start is not None and nearest_pos_end is not None:
|
379 |
-
nearest_positions.extend([nearest_pos_start, nearest_pos_end])
|
380 |
return nearest_positions
|
381 |
|
382 |
|
|
|
216 |
results = []
|
217 |
all_results = [] # Store results for each phrase
|
218 |
middle_words_results = [] # Store middle word results for all books
|
219 |
+
all_names_average_position = 0 # Initialize variable for average position across all names and books
|
220 |
+
total_name_count = 0 # Initialize counter for the total number of names processed
|
221 |
|
222 |
phrases = phrases.strip().splitlines()
|
223 |
if not phrases:
|
|
|
267 |
<a href='{link}' target='_blank' class='bible-link'>[See on Bible Gateway]</a>
|
268 |
</div>
|
269 |
""")
|
|
|
270 |
|
271 |
+
# Calculate average position for the current name across all books
|
272 |
+
name_average_position = calculate_average_position_for_name(results_by_book)
|
273 |
+
if name_average_position is not None:
|
274 |
+
results.append(f"<p><b>Average Word Position for '{phrase}' across all books:</b> {name_average_position:.2f}</p>")
|
275 |
+
all_names_average_position += name_average_position
|
276 |
+
total_name_count += 1
|
277 |
+
|
278 |
+
results.append("</div>")
|
279 |
all_results.append(results_by_book) # Store results by book without the phrase
|
280 |
|
281 |
+
# Calculate the average word position across all names and all their books
|
282 |
+
if total_name_count > 0:
|
283 |
+
all_names_average_position /= total_name_count
|
284 |
+
results.append(f"<h2>Average Word Position Across All Names and Books: {all_names_average_position:.2f}</h2>")
|
285 |
+
|
286 |
+
# Calculate middle words for all input lines (common books)
|
287 |
if len(all_results) >= 2:
|
288 |
+
results.append("<h2>Middle Words (Common Books):</h2>")
|
289 |
results.append("<div class='results-container'>")
|
290 |
|
291 |
common_books = set.intersection(*[set(results.keys()) for results in all_results])
|
|
|
370 |
"""
|
371 |
return style + "\n".join(results)
|
372 |
|
373 |
+
def calculate_average_position_for_name(results_by_book: Dict[str, List[Tuple]]) -> float:
|
374 |
+
"""Calculates the average word position for a single name across all books."""
|
375 |
+
positions = []
|
376 |
+
for book, phrases in results_by_book.items():
|
377 |
+
for _, _, _, _, word_position in phrases:
|
378 |
+
start, end = map(int, word_position.split('-'))
|
379 |
+
positions.append((start + end) / 2)
|
380 |
+
return sum(positions) / len(positions) if positions else None
|
381 |
+
|
382 |
def find_nearest_positions(results_lists: List[List]) -> List[int]:
|
383 |
"""Finds the nearest word positions among multiple lists of results."""
|
384 |
nearest_positions = []
|
385 |
for i in range(len(results_lists)):
|
386 |
+
positions_i = [(int(pos.split('-')[0]) + int(pos.split('-')[1])) / 2
|
387 |
+
for _, _, _, _, pos in results_lists[i]] # Get average of start and end positions
|
388 |
+
logging.debug(f"Positions for phrase {i+1}: {positions_i}")
|
389 |
+
|
390 |
+
# Calculate the average position for the current phrase
|
391 |
+
average_position = sum(positions_i) / len(positions_i) if positions_i else None
|
392 |
+
logging.debug(f"Average position for phrase {i+1}: {average_position}")
|
393 |
+
|
394 |
+
if average_position is not None:
|
395 |
+
nearest_positions.append(average_position)
|
396 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
397 |
return nearest_positions
|
398 |
|
399 |
|