Spaces:
Runtime error
Runtime error
Updated diagram
Browse files- README.md +1 -1
- architecture_diagram.md +9 -9
- mermaid-diagram-2024-01-15-121058-1.png +0 -0
- mermaid-diagram-2024-01-15-121058.png +0 -0
- mermaid-diagram-2024-01-16-104433.png +0 -0
- src/logger.py +23 -19
README.md
CHANGED
@@ -12,4 +12,4 @@ license: cc-by-4.0
|
|
12 |
|
13 |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
14 |
|
15 |
-
![Alt text](mermaid-diagram-2024-01-
|
|
|
12 |
|
13 |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
14 |
|
15 |
+
![Alt text](mermaid-diagram-2024-01-16-104433.png)
|
architecture_diagram.md
CHANGED
@@ -4,22 +4,22 @@ config:
|
|
4 |
flowchart:
|
5 |
defaultRenderer: elk
|
6 |
---
|
7 |
-
flowchart
|
8 |
interface(Model \n Interface)
|
9 |
model(Chosen Model)
|
10 |
-
logger(Logger)
|
11 |
coordinator(Game \n Coordinator)
|
12 |
database("Game Database \n display_analytics()")
|
13 |
|
14 |
-
coordinator --model_vs_model(
|
15 |
-
coordinator --human_vs_model(model name) -->interface
|
16 |
|
17 |
interface --send_move(model_name, UCI_notation) \n returns response-->model
|
18 |
|
19 |
-
interface --create(
|
20 |
-
interface --
|
21 |
-
interface--
|
22 |
-
interface--
|
23 |
|
24 |
-
logger --
|
25 |
```
|
|
|
4 |
flowchart:
|
5 |
defaultRenderer: elk
|
6 |
---
|
7 |
+
flowchart LR
|
8 |
interface(Model \n Interface)
|
9 |
model(Chosen Model)
|
10 |
+
logger("Logger\nget_stockfish_results()")
|
11 |
coordinator(Game \n Coordinator)
|
12 |
database("Game Database \n display_analytics()")
|
13 |
|
14 |
+
coordinator --model_vs_model(model_1: str, model_2:str)-->interface
|
15 |
+
coordinator --human_vs_model(model name: str) -->interface
|
16 |
|
17 |
interface --send_move(model_name, UCI_notation) \n returns response-->model
|
18 |
|
19 |
+
interface --create(model_1: str, model_2: str) \n creates a few logger for each game--> logger
|
20 |
+
interface --add_legal_move(UCI_notation_of_game: str)-->logger
|
21 |
+
interface--add_cheat(cheater_name: str)-->logger
|
22 |
+
interface--add_checkmate(winner_name: str)-->logger
|
23 |
|
24 |
+
logger --return_formatted_game(game_in_UCI: str, cheat_log: [int])-->database
|
25 |
```
|
mermaid-diagram-2024-01-15-121058-1.png
DELETED
Binary file (48.2 kB)
|
|
mermaid-diagram-2024-01-15-121058.png
DELETED
Binary file (48.2 kB)
|
|
mermaid-diagram-2024-01-16-104433.png
ADDED
src/logger.py
CHANGED
@@ -1,17 +1,30 @@
|
|
1 |
import requests
|
|
|
2 |
|
3 |
class logger:
|
4 |
def __init__(self, model_1: str, model_2: str):
|
5 |
self.model_1 = model_1
|
6 |
self.model_2 = model_2
|
7 |
|
8 |
-
current_moves = "" #
|
9 |
-
cheat_attempts =
|
10 |
winner = ""
|
11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
#Internal Work
|
13 |
-
def get_stockfish_results(self, prev_state: str, current_state: str, depth: int = 5) -> float:
|
14 |
-
#returns the stockfish analysis of the last move
|
15 |
#Example URL: https://stockfish.online/api/stockfish.php?fen=r2q1rk1/ppp2ppp/3bbn2/3p4/8/1B1P4/PPP2PPP/RNB1QRK1 w - - 5 11&depth=5&mode=eval
|
16 |
current_FEN = "?fen=" + current_state
|
17 |
prev_FEN = "?fen=" + prev_state
|
@@ -19,26 +32,17 @@ class logger:
|
|
19 |
endpoint = "https://stockfish.online/api/stockfish.php"
|
20 |
current_extra = current_FEN + "&depth=" + str(depth) + "&mode=eval"
|
21 |
prev_extra = prev_FEN + "&depth=" + str(depth) + "&mode=eval"
|
22 |
-
current_response = requests.get(endpoint + current_extra)
|
23 |
-
prev_response = requests.get(endpoint + prev_extra)
|
24 |
|
25 |
-
|
|
|
|
|
26 |
|
27 |
-
|
28 |
def format_game(self):
|
29 |
pass
|
30 |
|
31 |
-
#Interface with the Model Interface
|
32 |
-
def add_legal_move(self, current_moves: str): #current_moves should be all moves so far, in FEN notation
|
33 |
-
#updates sequence of moves stored
|
34 |
-
pass
|
35 |
-
def add_cheat(self, cheater_name: str):
|
36 |
-
#adds cheats parallel to the sequence of moves
|
37 |
-
pass
|
38 |
-
def add_checkmate(self, winner_name: str):
|
39 |
-
#logs the winner and stops recording
|
40 |
-
pass
|
41 |
-
|
42 |
#Interface with game_database
|
43 |
def return_formatted_game(self, game_num: int):
|
44 |
pass
|
|
|
1 |
import requests
|
2 |
+
import re
|
3 |
|
4 |
class logger:
|
5 |
def __init__(self, model_1: str, model_2: str):
|
6 |
self.model_1 = model_1
|
7 |
self.model_2 = model_2
|
8 |
|
9 |
+
current_moves = "" #UCI notation
|
10 |
+
cheat_attempts = [0] #logs the number of cheat attempts for every move in order
|
11 |
winner = ""
|
12 |
|
13 |
+
#Interface with the Model Interface
|
14 |
+
def add_legal_move(self, current_moves: str): #current_moves should be all moves so far, in UCI notation
|
15 |
+
self.current_moves = current_moves
|
16 |
+
self.cheat_attempts.append(0)
|
17 |
+
|
18 |
+
def add_cheat(self, cheater_name: str):
|
19 |
+
self.cheat_attempts[-1] += 1
|
20 |
+
|
21 |
+
def add_checkmate(self, winner_name: str):
|
22 |
+
#logs the winner and stops recording
|
23 |
+
pass
|
24 |
+
|
25 |
#Internal Work
|
26 |
+
def get_stockfish_results(self, prev_state: str, current_state: str, depth: int = 5) -> float: #Should be refactored to only need one UCI current state
|
27 |
+
#returns the stockfish analysis of the last move as a positive float
|
28 |
#Example URL: https://stockfish.online/api/stockfish.php?fen=r2q1rk1/ppp2ppp/3bbn2/3p4/8/1B1P4/PPP2PPP/RNB1QRK1 w - - 5 11&depth=5&mode=eval
|
29 |
current_FEN = "?fen=" + current_state
|
30 |
prev_FEN = "?fen=" + prev_state
|
|
|
32 |
endpoint = "https://stockfish.online/api/stockfish.php"
|
33 |
current_extra = current_FEN + "&depth=" + str(depth) + "&mode=eval"
|
34 |
prev_extra = prev_FEN + "&depth=" + str(depth) + "&mode=eval"
|
35 |
+
current_response = str(requests.get(endpoint + current_extra))
|
36 |
+
prev_response = str(requests.get(endpoint + prev_extra))
|
37 |
|
38 |
+
current_score = float(re.findall(r"-?\d*\.*\d+", current_response)[0]) #Positive means white is winning and vice versa
|
39 |
+
prev_score = float(re.findall(r"-?\d*\.*\d+", prev_response)[0])
|
40 |
+
|
41 |
|
42 |
+
return abs(current_score) - abs(prev_score)
|
43 |
def format_game(self):
|
44 |
pass
|
45 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
#Interface with game_database
|
47 |
def return_formatted_game(self, game_num: int):
|
48 |
pass
|