Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	Commit 
							
							·
						
						8b82e6e
	
1
								Parent(s):
							
							0343ea2
								
clases refactor draft, I class
Browse files- app.py +3 -0
- lattice.py +30 -0
- lib/__pycache__/gematria.cpython-39.pyc +0 -0
- lib/__pycache__/torah.cpython-39.pyc +0 -0
- lib/events.py +122 -0
- lib/{grepher.py → grapher.py} +0 -0
- lib/latticegrid.py +47 -0
- lib/me.py +98 -0
- lib/memory.py +17 -13
- lib/pipes.py +70 -19
- lib/spell.py +91 -48
- lib/triggers.py +82 -0
    	
        app.py
    CHANGED
    
    | @@ -9,6 +9,9 @@ from lib.ziruph import encrypt,decrypt | |
| 9 | 
             
            from lib.entropy import *
         | 
| 10 | 
             
            from torahcodes.resources.func.torah import *
         | 
| 11 | 
             
            from lib.sonsofstars import *
         | 
|  | |
|  | |
|  | |
| 12 |  | 
| 13 | 
             
            ## UTILS
         | 
| 14 | 
             
            import math
         | 
|  | |
| 9 | 
             
            from lib.entropy import *
         | 
| 10 | 
             
            from torahcodes.resources.func.torah import *
         | 
| 11 | 
             
            from lib.sonsofstars import *
         | 
| 12 | 
            +
            #from lib.memory import *
         | 
| 13 | 
            +
            #from lib.pipes import *
         | 
| 14 | 
            +
             | 
| 15 |  | 
| 16 | 
             
            ## UTILS
         | 
| 17 | 
             
            import math
         | 
    	
        lattice.py
    ADDED
    
    | @@ -0,0 +1,30 @@ | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 1 | 
            +
            import matplotlib.pyplot as plt
         | 
| 2 | 
            +
            import numpy as np
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            def draw_hexagonal_grid(rows, cols, text):
         | 
| 5 | 
            +
                fig, ax = plt.subplots()
         | 
| 6 | 
            +
                ax.set_aspect('equal')
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                # Create a hexagonal lattice
         | 
| 9 | 
            +
                for i in range(rows):
         | 
| 10 | 
            +
                    for j in range(cols):
         | 
| 11 | 
            +
                        if i % 2 == 0:
         | 
| 12 | 
            +
                            y = i * np.sqrt(3) / 2
         | 
| 13 | 
            +
                            x = j * 3 / 2
         | 
| 14 | 
            +
                        else:
         | 
| 15 | 
            +
                            y = (i + 0.5) * np.sqrt(3) / 2
         | 
| 16 | 
            +
                            x = (j + 0.5) * 3 / 2
         | 
| 17 | 
            +
                        ax.add_patch(plt.RegularPolygon((x, y), numVertices=6, radius=0.5, orientation=np.pi/6, fill=None))
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                        # Add text inside each cell
         | 
| 20 | 
            +
                        ax.text(x, y, text[i * cols + j], ha='center', va='center')
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                ax.autoscale_view()
         | 
| 23 | 
            +
                ax.axis('off')
         | 
| 24 | 
            +
                plt.show()
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            # Example usage
         | 
| 27 | 
            +
            text = "HELLO"
         | 
| 28 | 
            +
            rows = 5
         | 
| 29 | 
            +
            cols = 5
         | 
| 30 | 
            +
            draw_hexagonal_grid(rows, cols, text)
         | 
    	
        lib/__pycache__/gematria.cpython-39.pyc
    DELETED
    
    | Binary file (7.07 kB) | 
|  | 
    	
        lib/__pycache__/torah.cpython-39.pyc
    DELETED
    
    | Binary file (8.29 kB) | 
|  | 
    	
        lib/events.py
    ADDED
    
    | @@ -0,0 +1,122 @@ | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 1 | 
            +
            import pandas as pd
         | 
| 2 | 
            +
            import matplotlib.pyplot as plt
         | 
| 3 | 
            +
            from sklearn.model_selection import train_test_split
         | 
| 4 | 
            +
            from sklearn.ensemble import RandomForestRegressor
         | 
| 5 | 
            +
            from sklearn.metrics import mean_squared_error
         | 
| 6 | 
            +
            from scipy.stats import pearsonr
         | 
| 7 | 
            +
            import numpy as np
         | 
| 8 | 
            +
            from scipy.fft import fft
         | 
| 9 | 
            +
             | 
| 10 | 
            +
             | 
| 11 | 
            +
            class EventManager:
         | 
| 12 | 
            +
                def __init__(self):
         | 
| 13 | 
            +
                    self.events = []
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def add_event(self, event_title, time_dataset, probability_fork, quantity, common_tag_event_dataset,
         | 
| 16 | 
            +
                              quantity_correlation_dataset, event_max_quantity, event_min_quantity, event_middle_quantity,
         | 
| 17 | 
            +
                              sentiment_direction):
         | 
| 18 | 
            +
                    event = {
         | 
| 19 | 
            +
                        "event_title": event_title,
         | 
| 20 | 
            +
                        "time_dataset": time_dataset,
         | 
| 21 | 
            +
                        "probability_fork": probability_fork,
         | 
| 22 | 
            +
                        "quantity": quantity,
         | 
| 23 | 
            +
                        "common_tag_event_dataset": common_tag_event_dataset,
         | 
| 24 | 
            +
                        "quantity_correlation_dataset": quantity_correlation_dataset,
         | 
| 25 | 
            +
                        "event_max_quantity": event_max_quantity,
         | 
| 26 | 
            +
                        "event_min_quantity": event_min_quantity,
         | 
| 27 | 
            +
                        "event_middle_quantity": event_middle_quantity,
         | 
| 28 | 
            +
                        "sentiment_direction": sentiment_direction
         | 
| 29 | 
            +
                    }
         | 
| 30 | 
            +
                    self.events.append(event)
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                def remove_event(self, event_title):
         | 
| 33 | 
            +
                    self.events = [event for event in self.events if event['event_title'] != event_title]
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                def get_events_by_tag(self, tag):
         | 
| 36 | 
            +
                    return [event for event in self.events if tag in event['common_tag_event_dataset']]
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                def get_events_by_sentiment(self, sentiment):
         | 
| 39 | 
            +
                    return [event for event in self.events if event['sentiment_direction'] == sentiment]
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                def get_events_by_quantity_range(self, min_quantity, max_quantity):
         | 
| 42 | 
            +
                    return [event for event in self.events if min_quantity <= event['quantity'] <= max_quantity]
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                def predict_time_series(self, event_title):
         | 
| 45 | 
            +
                    event = next((event for event in self.events if event['event_title'] == event_title), None)
         | 
| 46 | 
            +
                    if event:
         | 
| 47 | 
            +
                        time_series = event['time_dataset']
         | 
| 48 | 
            +
                        # Aquí puedes implementar tu modelo de predicción de series temporales
         | 
| 49 | 
            +
                        # Por ejemplo, utilizando un modelo de regresión como RandomForestRegressor de scikit-learn
         | 
| 50 | 
            +
                        X = np.arange(len(time_series)).reshape(-1, 1)
         | 
| 51 | 
            +
                        y = np.array(time_series)
         | 
| 52 | 
            +
                        X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
         | 
| 53 | 
            +
                        model = RandomForestRegressor()
         | 
| 54 | 
            +
                        model.fit(X_train, y_train)
         | 
| 55 | 
            +
                        predictions = model.predict(X_test)
         | 
| 56 | 
            +
                        return predictions
         | 
| 57 | 
            +
                    else:
         | 
| 58 | 
            +
                        return None
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                def plot_event_parameters_over_time(self, event_title):
         | 
| 61 | 
            +
                    event = next((event for event in self.events if event['event_title'] == event_title), None)
         | 
| 62 | 
            +
                    if event:
         | 
| 63 | 
            +
                        time_series = event['time_dataset']
         | 
| 64 | 
            +
                        plt.plot(time_series)
         | 
| 65 | 
            +
                        plt.xlabel('Tiempo')
         | 
| 66 | 
            +
                        plt.ylabel('Valor')
         | 
| 67 | 
            +
                        plt.title('Parámetros del Evento "{}" a lo largo del tiempo'.format(event_title))
         | 
| 68 | 
            +
                        plt.show()
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                def plot_prediction(self, event_title):
         | 
| 71 | 
            +
                    predictions = self.predict_time_series(event_title)
         | 
| 72 | 
            +
                    if predictions:
         | 
| 73 | 
            +
                        plt.plot(predictions, label='Predicción')
         | 
| 74 | 
            +
                        plt.xlabel('Tiempo')
         | 
| 75 | 
            +
                        plt.ylabel('Valor')
         | 
| 76 | 
            +
                        plt.title('Predicción del Evento "{}"'.format(event_title))
         | 
| 77 | 
            +
                        plt.legend()
         | 
| 78 | 
            +
                        plt.show()
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                def check_correlation(self, event_title1, event_title2):
         | 
| 81 | 
            +
                    event1 = next((event for event in self.events if event['event_title'] == event_title1), None)
         | 
| 82 | 
            +
                    event2 = next((event for event in self.events if event['event_title'] == event_title2), None)
         | 
| 83 | 
            +
                    if event1 and event2:
         | 
| 84 | 
            +
                        correlation, _ = pearsonr(event1['quantity_correlation_dataset'], event2['quantity_correlation_dataset'])
         | 
| 85 | 
            +
                        return correlation
         | 
| 86 | 
            +
                    else:
         | 
| 87 | 
            +
                        return None
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                def fourier_transform(self, event_title):
         | 
| 90 | 
            +
                    event = next((event for event in self.events if event['event_title'] == event_title), None)
         | 
| 91 | 
            +
                    if event:
         | 
| 92 | 
            +
                        time_series = event['time_dataset']
         | 
| 93 | 
            +
                        transformed_data = fft(time_series)
         | 
| 94 | 
            +
                        return transformed_data
         | 
| 95 | 
            +
                    else:
         | 
| 96 | 
            +
                        return None
         | 
| 97 | 
            +
             | 
| 98 | 
            +
             | 
| 99 | 
            +
            # Ejemplo de uso
         | 
| 100 | 
            +
            event_manager = EventManager()
         | 
| 101 | 
            +
             | 
| 102 | 
            +
            # Añadir eventos
         | 
| 103 | 
            +
            event_manager.add_event("Evento 1", [1, 2, 3, 4, 5], 0.8, 100, ["tag1", "tag2"], [0.1, 0.2, 0.3, 0.4, 0.5],
         | 
| 104 | 
            +
                                    150, 50, 100, "good when up")
         | 
| 105 | 
            +
            event_manager.add_event("Evento 2", [2, 4, 6, 8, 10], 0.6, 200, ["tag2", "tag3"], [0.2, 0.4, 0.6, 0.8, 1.0],
         | 
| 106 | 
            +
                                    250, 150, 200, "bad when down")
         | 
| 107 | 
            +
             | 
| 108 | 
            +
            # Realizar predicción de series temporales y plot
         | 
| 109 | 
            +
            event_manager.plot_event_parameters_over_time("Evento 1")
         | 
| 110 | 
            +
            event_manager.plot_prediction("Evento 1")
         | 
| 111 | 
            +
             | 
| 112 | 
            +
            # Comprobar correlación entre dos eventos
         | 
| 113 | 
            +
            correlation = event_manager.check_correlation("Evento 1", "Evento 2")
         | 
| 114 | 
            +
            if correlation:
         | 
| 115 | 
            +
                print("Correlación entre Evento 1 y Evento 2:", correlation)
         | 
| 116 | 
            +
            else:
         | 
| 117 | 
            +
                print("Alguno de los eventos no existe.")
         | 
| 118 | 
            +
             | 
| 119 | 
            +
            # Transformada de Fourier
         | 
| 120 | 
            +
            transformed_data = event_manager.fourier_transform("Evento 1")
         | 
| 121 | 
            +
            print("Transformada de Fourier del Evento 1:", transformed_data)
         | 
| 122 | 
            +
             | 
    	
        lib/{grepher.py → grapher.py}
    RENAMED
    
    | 
            File without changes
         | 
    	
        lib/latticegrid.py
    CHANGED
    
    | @@ -0,0 +1,47 @@ | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 1 | 
            +
            import numpy as np
         | 
| 2 | 
            +
            import matplotlib.pyplot as plt
         | 
| 3 | 
            +
            from matplotlib.patches import RegularPolygon
         | 
| 4 | 
            +
             | 
| 5 | 
            +
             | 
| 6 | 
            +
            ## set texto over lattice grid
         | 
| 7 | 
            +
            def hex_lattice(text, size=1, figsize=(8, 8)):
         | 
| 8 | 
            +
                fig, ax = plt.subplots(figsize=figsize)
         | 
| 9 | 
            +
                ax.set_aspect('equal')
         | 
| 10 | 
            +
                ax.axis('off')
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                # Define hexagonal lattice parameters
         | 
| 13 | 
            +
                radius = size * np.sqrt(3) / 2
         | 
| 14 | 
            +
                x_offset = size * 1.5
         | 
| 15 | 
            +
                y_offset = size * np.sqrt(3)
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                # Function to plot hexagon
         | 
| 18 | 
            +
                def hexagon(x, y, color='white'):
         | 
| 19 | 
            +
                    hexagon = RegularPolygon((x, y), numVertices=6, radius=radius, orientation=np.pi/2, facecolor=color, edgecolor='black')
         | 
| 20 | 
            +
                    ax.add_patch(hexagon)
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                # Generate lattice grid
         | 
| 23 | 
            +
                rows = len(text)
         | 
| 24 | 
            +
                cols = max(len(row) for row in text)
         | 
| 25 | 
            +
                for r in range(rows):
         | 
| 26 | 
            +
                    for c in range(cols):
         | 
| 27 | 
            +
                        x = c * x_offset
         | 
| 28 | 
            +
                        y = r * y_offset
         | 
| 29 | 
            +
                        if r % 2 == 1:
         | 
| 30 | 
            +
                            x += x_offset / 2
         | 
| 31 | 
            +
                        if r < len(text) and c < len(text[r]):
         | 
| 32 | 
            +
                            hexagon(x, y, color='lightblue')
         | 
| 33 | 
            +
                            ax.text(x, y, text[r][c], ha='center', va='center', fontsize=12)
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                plt.show()
         | 
| 36 | 
            +
             | 
| 37 | 
            +
             | 
| 38 | 
            +
            if __name__ == "__main__":
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                # Example usage:
         | 
| 41 | 
            +
                text_to_display = [
         | 
| 42 | 
            +
                    ['A', 'B', 'C', 'D'],
         | 
| 43 | 
            +
                    ['E', 'F', 'G'],
         | 
| 44 | 
            +
                    ['H', 'I', 'J', 'K', 'L']
         | 
| 45 | 
            +
                ]
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                hex_lattice(text_to_display, size=1, figsize=(10, 8))
         | 
    	
        lib/me.py
    ADDED
    
    | @@ -0,0 +1,98 @@ | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 1 | 
            +
            from lib.memory import *
         | 
| 2 | 
            +
            from lib.grapher import *
         | 
| 3 | 
            +
            from lib.pipes import *
         | 
| 4 | 
            +
            from lib.entropy import *
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            class I:
         | 
| 7 | 
            +
                def __init__(self, frases_yo, preferencias, propiedades_persona):
         | 
| 8 | 
            +
                    self.frases_yo = frases_yo
         | 
| 9 | 
            +
                    self.preferencias = preferencias
         | 
| 10 | 
            +
                    self.propiedades_persona = propiedades_persona
         | 
| 11 | 
            +
                    self.dopamina = 0.0
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    self.frases_yo = frases_yo
         | 
| 14 | 
            +
                    self.preferencias = preferencias
         | 
| 15 | 
            +
                    self.propiedades_persona = propiedades_persona
         | 
| 16 | 
            +
                    self.dopamina = 0.0
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                def obtener_paths_grafo(self, grafo_ngx):
         | 
| 19 | 
            +
                    # Función para obtener los paths de un grafo ngx
         | 
| 20 | 
            +
             | 
| 21 | 
            +
             | 
| 22 | 
            +
                    pass
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def crear_circuito_logico(self):
         | 
| 25 | 
            +
                    # Función para crear un circuito lógico con un algoritmo específico
         | 
| 26 | 
            +
                    pass
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                def tomar_decision_sentimiento(self, pipa_sentimiento):
         | 
| 29 | 
            +
                    # Función para tomar una decisión booleana con un análisis de sentimiento
         | 
| 30 | 
            +
                    pass
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                def hacer_predicciones_texto(self, texto):
         | 
| 33 | 
            +
                    # Función para hacer predicciones de texto futuro por similitud
         | 
| 34 | 
            +
                    pass
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                def agregar_preferencia(self, preferencia):
         | 
| 37 | 
            +
                    # Función para añadir una entrada al dataset de preferencias
         | 
| 38 | 
            +
                    self.preferencias.append(preferencia)
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                def agregar_frase_yo(self, frase):
         | 
| 41 | 
            +
                    # Función para añadir una frase al dataset de frases de yo
         | 
| 42 | 
            +
                    self.frases_yo.append(frase)
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                def eliminar_preferencia(self, preferencia):
         | 
| 45 | 
            +
                    # Función para eliminar una entrada del dataset de preferencias
         | 
| 46 | 
            +
                    if preferencia in self.preferencias:
         | 
| 47 | 
            +
                        self.preferencias.remove(preferencia)
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                def eliminar_frase_yo(self, frase):
         | 
| 50 | 
            +
                    # Función para eliminar una frase del dataset de frases de yo
         | 
| 51 | 
            +
                    if frase in self.frases_yo:
         | 
| 52 | 
            +
                        self.frases_yo.remove(frase)
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                def generar_pregunta(self, prompt):
         | 
| 55 | 
            +
                    # Función para generar preguntas sobre un prompt
         | 
| 56 | 
            +
                    pregunta = prompt + " ¿Qué opinas sobre esto?"
         | 
| 57 | 
            +
                    return pregunta
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                def responder_pregunta(self, pregunta):
         | 
| 60 | 
            +
                    # Función para responder preguntas
         | 
| 61 | 
            +
                    respuesta = "No estoy seguro de qué opinar sobre eso."
         | 
| 62 | 
            +
                    return respuesta
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                def discriminar_y_agregar(self, informacion, dataset):
         | 
| 65 | 
            +
                    # Función para discriminar y agregar información a los datasets
         | 
| 66 | 
            +
                    if "yo" in informacion.lower():
         | 
| 67 | 
            +
                        self.agregar_frase_yo(informacion)
         | 
| 68 | 
            +
                    elif "preferencia" in informacion.lower():
         | 
| 69 | 
            +
                        self.agregar_preferencia(informacion)
         | 
| 70 | 
            +
                    elif "propiedad" in informacion.lower():
         | 
| 71 | 
            +
                        # Aquí podrías agregar lógica para actualizar las propiedades de la persona
         | 
| 72 | 
            +
                        pass
         | 
| 73 | 
            +
                    else:
         | 
| 74 | 
            +
                        # Aquí podrías manejar otros tipos de información
         | 
| 75 | 
            +
                        pass
         | 
| 76 | 
            +
             | 
| 77 | 
            +
             | 
| 78 | 
            +
            if __name__ == "__main__":
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                # Ejemplo de uso:
         | 
| 81 | 
            +
                frases_yo = ["Yo soy inteligente", "Yo puedo lograr lo que me proponga"]
         | 
| 82 | 
            +
                preferencias = ["Cine", "Música", "Viajar"]
         | 
| 83 | 
            +
                propiedades_persona = {"carisma": 0.8, "destreza": 0.6, "habilidad": 0.9}
         | 
| 84 | 
            +
                yo = Yo(frases_yo, preferencias, propiedades_persona)
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                # Generar pregunta
         | 
| 87 | 
            +
                pregunta_generada = yo.generar_pregunta("Hoy es un día soleado.")
         | 
| 88 | 
            +
                print("Pregunta generada:", pregunta_generada)
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                # Responder pregunta
         | 
| 91 | 
            +
                respuesta = yo.responder_pregunta(pregunta_generada)
         | 
| 92 | 
            +
                print("Respuesta:", respuesta)
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                # Discriminar y agregar información
         | 
| 95 | 
            +
                informacion = "Me gusta ir al cine."
         | 
| 96 | 
            +
                yo.discriminar_y_agregar(informacion, yo.preferencias)
         | 
| 97 | 
            +
                print("Preferencias actualizadas:", yo.preferencias)
         | 
| 98 | 
            +
             | 
    	
        lib/memory.py
    CHANGED
    
    | @@ -41,22 +41,26 @@ class MemoriaRobotNLP: | |
| 41 |  | 
| 42 |  | 
| 43 | 
             
            # Ejemplo de uso
         | 
| 44 | 
            -
            memoria_robot = MemoriaRobotNLP(max_size=100)
         | 
| 45 |  | 
| 46 | 
            -
            memoria_robot.agregar_concepto("animales", [("perro", 0.8), ("gato", 0.7), ("pájaro", 0.5)])
         | 
| 47 | 
            -
            memoria_robot.agregar_concepto("colores", [("rojo", 0.9), ("verde", 0.6), ("azul", 0.7)])
         | 
| 48 |  | 
| 49 | 
            -
             | 
| 50 | 
            -
            print(memoria_robot.memoria)
         | 
| 51 |  | 
| 52 | 
            -
            memoria_robot | 
| 53 | 
            -
            memoria_robot.eliminar_string("colores", "verde")
         | 
| 54 | 
            -
            memoria_robot.eliminar_concepto("colores")
         | 
| 55 |  | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 |  | 
| 59 | 
            -
             | 
| 60 | 
            -
            print( | 
| 61 | 
            -
             | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 62 |  | 
|  | |
| 41 |  | 
| 42 |  | 
| 43 | 
             
            # Ejemplo de uso
         | 
|  | |
| 44 |  | 
|  | |
|  | |
| 45 |  | 
| 46 | 
            +
            if __name__ == "__main__":
         | 
|  | |
| 47 |  | 
| 48 | 
            +
                memoria_robot = MemoriaRobotNLP(max_size=100)
         | 
|  | |
|  | |
| 49 |  | 
| 50 | 
            +
                memoria_robot.agregar_concepto("animales", [("perro", 0.8), ("gato", 0.7), ("pájaro", 0.5)])
         | 
| 51 | 
            +
                memoria_robot.agregar_concepto("colores", [("rojo", 0.9), ("verde", 0.6), ("azul", 0.7)])
         | 
| 52 |  | 
| 53 | 
            +
                print("Memoria completa:")
         | 
| 54 | 
            +
                print(memoria_robot.memoria)
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                memoria_robot.agregar_string("animales", "pez", 0.6)
         | 
| 57 | 
            +
                memoria_robot.eliminar_string("colores", "verde")
         | 
| 58 | 
            +
                memoria_robot.eliminar_concepto("colores")
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                print("\nMemoria después de modificaciones:")
         | 
| 61 | 
            +
                print(memoria_robot.memoria)
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                conceptos_acotados = memoria_robot.obtener_conceptos_acotados(50)
         | 
| 64 | 
            +
                print("\nConceptos acotados a un tamaño máximo de memoria:")
         | 
| 65 | 
            +
                print(conceptos_acotados)
         | 
| 66 |  | 
    	
        lib/pipes.py
    CHANGED
    
    | @@ -3,11 +3,26 @@ from diffusers import DiffusionPipeline | |
| 3 | 
             
            from transformers import AutoModelForSeq2SeqLM
         | 
| 4 | 
             
            from samplings import top_p_sampling, temperature_sampling
         | 
| 5 | 
             
            import torch
         | 
|  | |
| 6 |  | 
| 7 | 
             
            class AIAssistant:
         | 
| 8 | 
             
                def __init__(self):
         | 
| 9 | 
             
                    pass
         | 
| 10 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 11 | 
             
                def entity_pos_tagger(self, example):
         | 
| 12 | 
             
                    tokenizer = AutoTokenizer.from_pretrained("Davlan/bert-base-multilingual-cased-ner-hrl")
         | 
| 13 | 
             
                    model = AutoModelForTokenClassification.from_pretrained("Davlan/bert-base-multilingual-cased-ner-hrl")
         | 
| @@ -15,6 +30,47 @@ class AIAssistant: | |
| 15 | 
             
                    ner_results = nlp(example)
         | 
| 16 | 
             
                    return ner_results
         | 
| 17 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 18 | 
             
                def text_to_image_generation(self, prompt, n_steps=40, high_noise_frac=0.8):
         | 
| 19 | 
             
                    base = DiffusionPipeline.from_pretrained(
         | 
| 20 | 
             
                        "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, variant="fp16", use_safetensors=True
         | 
| @@ -44,16 +100,8 @@ class AIAssistant: | |
| 44 | 
             
                    ).images[0]
         | 
| 45 | 
             
                    return image
         | 
| 46 |  | 
| 47 | 
            -
                def grammatical_pos_tagger(self, text):
         | 
| 48 | 
            -
                    nlp_pos = pipeline(
         | 
| 49 | 
            -
                        "ner",
         | 
| 50 | 
            -
                        model="mrm8488/bert-spanish-cased-finetuned-pos",
         | 
| 51 | 
            -
                        tokenizer=(
         | 
| 52 | 
            -
                            'mrm8488/bert-spanish-cased-finetuned-pos',
         | 
| 53 | 
            -
                            {"use_fast": False}
         | 
| 54 | 
            -
                    ))
         | 
| 55 | 
            -
                    return nlp_pos(text)
         | 
| 56 |  | 
|  | |
| 57 | 
             
                def text_to_music(self, text, max_length=1024, top_p=0.9, temperature=1.0):
         | 
| 58 | 
             
                    tokenizer = AutoTokenizer.from_pretrained('sander-wood/text-to-music')
         | 
| 59 | 
             
                    model = AutoModelForSeq2SeqLM.from_pretrained('sander-wood/text-to-music')
         | 
| @@ -86,17 +134,20 @@ class AIAssistant: | |
| 86 | 
             
                            return tune
         | 
| 87 | 
             
                            break
         | 
| 88 |  | 
| 89 | 
            -
            # Ejemplo de uso
         | 
| 90 | 
            -
            assistant = AIAssistant()
         | 
| 91 | 
            -
            ner_results = assistant.entity_pos_tagger("Nader Jokhadar had given Syria the lead with a well-struck header in the seventh minute.")
         | 
| 92 | 
            -
            print(ner_results)
         | 
| 93 |  | 
| 94 | 
            -
             | 
| 95 | 
            -
             | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 96 |  | 
| 97 | 
            -
            pos_tags = assistant.grammatical_pos_tagger('Mis amigos están pensando en viajar a Londres este verano')
         | 
| 98 | 
            -
            print(pos_tags)
         | 
| 99 |  | 
| 100 | 
            -
            tune = assistant.text_to_music("This is a traditional Irish dance music.")
         | 
| 101 | 
            -
            print(tune)
         | 
| 102 |  | 
|  | |
| 3 | 
             
            from transformers import AutoModelForSeq2SeqLM
         | 
| 4 | 
             
            from samplings import top_p_sampling, temperature_sampling
         | 
| 5 | 
             
            import torch
         | 
| 6 | 
            +
            from sentence_transformers import SentenceTransformer, util
         | 
| 7 |  | 
| 8 | 
             
            class AIAssistant:
         | 
| 9 | 
             
                def __init__(self):
         | 
| 10 | 
             
                    pass
         | 
| 11 |  | 
| 12 | 
            +
                ## gramatical classificator
         | 
| 13 | 
            +
                def grammatical_pos_tagger(self, text):
         | 
| 14 | 
            +
                    nlp_pos = pipeline(
         | 
| 15 | 
            +
                        "ner",
         | 
| 16 | 
            +
                        model="mrm8488/bert-spanish-cased-finetuned-pos",
         | 
| 17 | 
            +
                        tokenizer=(
         | 
| 18 | 
            +
                            'mrm8488/bert-spanish-cased-finetuned-pos',
         | 
| 19 | 
            +
                            {"use_fast": False}
         | 
| 20 | 
            +
                    ))
         | 
| 21 | 
            +
                    
         | 
| 22 | 
            +
                    return nlp_pos(text)
         | 
| 23 | 
            +
             | 
| 24 | 
            +
             | 
| 25 | 
            +
                ## entity classifier
         | 
| 26 | 
             
                def entity_pos_tagger(self, example):
         | 
| 27 | 
             
                    tokenizer = AutoTokenizer.from_pretrained("Davlan/bert-base-multilingual-cased-ner-hrl")
         | 
| 28 | 
             
                    model = AutoModelForTokenClassification.from_pretrained("Davlan/bert-base-multilingual-cased-ner-hrl")
         | 
|  | |
| 30 | 
             
                    ner_results = nlp(example)
         | 
| 31 | 
             
                    return ner_results
         | 
| 32 |  | 
| 33 | 
            +
             | 
| 34 | 
            +
                ## sentiment analysis
         | 
| 35 | 
            +
                def sentiment_tags(self,text):
         | 
| 36 | 
            +
                    distilled_student_sentiment_classifier = pipeline(
         | 
| 37 | 
            +
                        model="lxyuan/distilbert-base-multilingual-cased-sentiments-student", 
         | 
| 38 | 
            +
                        return_all_scores=True
         | 
| 39 | 
            +
                    )
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                    # english
         | 
| 42 | 
            +
                    return distilled_student_sentiment_classifier(text)
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                ## check similarity among sentences (group of tokens (words))
         | 
| 45 | 
            +
                def similarity_tag(self, sentenceA,sentenceB):
         | 
| 46 | 
            +
                    res=[]
         | 
| 47 | 
            +
                    model = SentenceTransformer('abbasgolestani/ag-nli-bert-mpnet-base-uncased-sentence-similarity-v1') nli-mpnet-base-v2
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                    # Two lists of sentences
         | 
| 50 | 
            +
                    #sentences1 = ['I am honored to be given the opportunity to help make our company better',
         | 
| 51 | 
            +
                    #            'I love my job and what I do here',
         | 
| 52 | 
            +
                    #            'I am excited about our company’s vision']
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                    #sentences2 = ['I am hopeful about the future of our company',
         | 
| 55 | 
            +
                    #            'My work is aligning with my passion',
         | 
| 56 | 
            +
                    #            'Definitely our company vision will be the next breakthrough to change the world and I’m so happy and proud to work here']
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                    sentences1 = sentenceA
         | 
| 59 | 
            +
                    sentences2 = sentencesB
         | 
| 60 | 
            +
                    #Compute embedding for both lists
         | 
| 61 | 
            +
                    embeddings1 = model.encode(sentences1, convert_to_tensor=True)
         | 
| 62 | 
            +
                    embeddings2 = model.encode(sentences2, convert_to_tensor=True)
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                    #Compute cosine-similarities
         | 
| 65 | 
            +
                    cosine_scores = util.cos_sim(embeddings1, embeddings2)
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                    #Output the pairs with their score
         | 
| 68 | 
            +
                    for i in range(len(sentences1)):
         | 
| 69 | 
            +
                        res.append({"A": format(sentences1[i], "B":sentences2[i], "score":cosine_scores[i][i]})
         | 
| 70 | 
            +
                        #print("{} \t\t {} \t\t Score: {:.4f}".format(sentences1[i], sentences2[i], cosine_scores[i][i]))
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                    return res
         | 
| 73 | 
            +
                ## text to stable difusor generated image
         | 
| 74 | 
             
                def text_to_image_generation(self, prompt, n_steps=40, high_noise_frac=0.8):
         | 
| 75 | 
             
                    base = DiffusionPipeline.from_pretrained(
         | 
| 76 | 
             
                        "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, variant="fp16", use_safetensors=True
         | 
|  | |
| 100 | 
             
                    ).images[0]
         | 
| 101 | 
             
                    return image
         | 
| 102 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 103 |  | 
| 104 | 
            +
                ## pass text prompt to music
         | 
| 105 | 
             
                def text_to_music(self, text, max_length=1024, top_p=0.9, temperature=1.0):
         | 
| 106 | 
             
                    tokenizer = AutoTokenizer.from_pretrained('sander-wood/text-to-music')
         | 
| 107 | 
             
                    model = AutoModelForSeq2SeqLM.from_pretrained('sander-wood/text-to-music')
         | 
|  | |
| 134 | 
             
                            return tune
         | 
| 135 | 
             
                            break
         | 
| 136 |  | 
|  | |
|  | |
|  | |
|  | |
| 137 |  | 
| 138 | 
            +
            if __name__ == "__main__":
         | 
| 139 | 
            +
             | 
| 140 | 
            +
                # Ejemplo de uso
         | 
| 141 | 
            +
                assistant = AIAssistant()
         | 
| 142 | 
            +
                ner_results = assistant.entity_pos_tagger("Nader Jokhadar had given Syria the lead with a well-struck header in the seventh minute.")
         | 
| 143 | 
            +
                print(ner_results)
         | 
| 144 | 
            +
             | 
| 145 | 
            +
                image = assistant.text_to_image_generation("A majestic lion jumping from a big stone at night")
         | 
| 146 | 
            +
                print(image)
         | 
| 147 |  | 
| 148 | 
            +
                pos_tags = assistant.grammatical_pos_tagger('Mis amigos están pensando en viajar a Londres este verano')
         | 
| 149 | 
            +
                print(pos_tags)
         | 
| 150 |  | 
| 151 | 
            +
                tune = assistant.text_to_music("This is a traditional Irish dance music.")
         | 
| 152 | 
            +
                print(tune)
         | 
| 153 |  | 
    	
        lib/spell.py
    CHANGED
    
    | @@ -1,22 +1,19 @@ | |
| 1 | 
            -
            import datetime
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            # Tabla de los nombres de los ángeles por estación zodiacal
         | 
| 4 | 
            -
            angels_by_zodiac_station = {
         | 
| 5 | 
            -
                "Aries": ["sha'aphon", "behemoth", "bekemesheb/bekemekesheb", "qotzien"],
         | 
| 6 | 
            -
                "Tauro": ["dierenavor", "heniethebol", "siemegedel", "morepheker"],
         | 
| 7 | 
            -
                "Geminis": ["sheneron", "phelehedien", "volereked", "akeneseb"],
         | 
| 8 | 
            -
                "Cancer": ["Qedoqoredi", "Qoheleren", "Phereshetial", "Memenial"],
         | 
| 9 | 
            -
                "Leo": ["Bephopher", "Lieshebeker", "Shehenen", "shehelekek"],
         | 
| 10 | 
            -
                "Virgo": ["Siemosial", "Sebodeh", "Siegel", "Teremothiteh"],
         | 
| 11 | 
            -
                "Libra": ["A'ariegol", "Mereton", "Qa'aberi", "Legoshmelek"],
         | 
| 12 | 
            -
                "Escorpio": ["Therepiethz", "Phetza'an", "Shemophethen", "Thokesed"],
         | 
| 13 | 
            -
                "Sagitario": ["Aketen", "Kephron", "Oliphiel", "Yosel"],
         | 
| 14 | 
            -
                "Capricornio": ["Ameni", "Bieker", "Depheri", "Menenial"],
         | 
| 15 | 
            -
                "Acuario": ["Meta'am", "Theberien", "Shethoqoeh", "Danial"],
         | 
| 16 | 
            -
                "Piscis": ["Sha'aphenen", "Aniesien", "Sethered", "Qohemehogov"]
         | 
| 17 | 
            -
            }
         | 
| 18 |  | 
| 19 | 
            -
             | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 20 | 
             
            angels_by_month_station = {
         | 
| 21 | 
             
                "Nisan": ["Asegesenek", "Mesokenek", "Deriegemon", "Shethenovesenov"],
         | 
| 22 | 
             
                "Ayer": ["Phemetor", "Qotenebial", "Ma'agol", "Goberethial"],
         | 
| @@ -32,9 +29,8 @@ angels_by_month_station = { | |
| 32 | 
             
                "Adar": ["Koneled", "Ba'aren", "Sebiebekera'a", "Qoromeqore"]
         | 
| 33 | 
             
            }
         | 
| 34 |  | 
| 35 | 
            -
            # Tabla de los nombres de los ángeles por día y estación
         | 
| 36 | 
             
            angels_by_day_station = {
         | 
| 37 | 
            -
                1: ["Phiegenochen", "Tenekien", " | 
| 38 | 
             
                2: ["Tga'sher", "Menechethor", "Qoleneheren", "Shegedon"],
         | 
| 39 | 
             
                3: ["Sheriyachetz", "Qohebereneden", "Pherezen", "Hegelomoth"],
         | 
| 40 | 
             
                4: ["Pheniov Lavor", "Miyeshor", "Degiem", "Betheroqa"],
         | 
| @@ -42,7 +38,6 @@ angels_by_day_station = { | |
| 42 | 
             
                6: ["Qola'azeran", "Deremthok", "Akethenor", "Arieh"]
         | 
| 43 | 
             
            }
         | 
| 44 |  | 
| 45 | 
            -
            # Tabla de los nombres de los ángeles por signo de luna
         | 
| 46 | 
             
            angels_by_moon_sign = {
         | 
| 47 | 
             
                "Leberenieth": ["shaitan", "therezien", "sheneremi", "Gabrial"],
         | 
| 48 | 
             
                "Seletheleb": ["Yieshieshieh", "Abererehon", "Sheheqonek", "Bal Menael"],
         | 
| @@ -50,7 +45,6 @@ angels_by_moon_sign = { | |
| 50 | 
             
                "Sheherieph": ["Biyom", "Bieth", "Rothep", "Danial"]
         | 
| 51 | 
             
            }
         | 
| 52 |  | 
| 53 | 
            -
            # Tabla de los nombres de los ángeles que ministran la luna por signo zodiacal
         | 
| 54 | 
             
            moon_ministers_by_zodiac = {
         | 
| 55 | 
             
                "Aries": ["Zerem", "Behemi", "Pheloneh", "Qonosh"],
         | 
| 56 | 
             
                "Tauro": ["Deketon", "Mezekerien", "Thederenael", "Amiena"],
         | 
| @@ -66,7 +60,6 @@ moon_ministers_by_zodiac = { | |
| 66 | 
             
                "Piscis": ["Sha'aphenen", "Aniesien", "Sethered", "Qohemehogov"]
         | 
| 67 | 
             
            }
         | 
| 68 |  | 
| 69 | 
            -
            # Tabla de los nombres de los ángeles por estación de la Tierra
         | 
| 70 | 
             
            angels_by_earth_station = {
         | 
| 71 | 
             
                1: ["Memegien", "Yibesheh", "Thebel", "Hezeh Dovem"],
         | 
| 72 | 
             
                2: ["Mechemed Lov", "Bel Ached", "Aseberon", "Qohelorek"],
         | 
| @@ -74,7 +67,6 @@ angels_by_earth_station = { | |
| 74 | 
             
                4: ["Yihelederek", "Mephenial", "Mephenial", ""]
         | 
| 75 | 
             
            }
         | 
| 76 |  | 
| 77 | 
            -
            # Tabla de los nombres de los ángeles por estación de los Malechims
         | 
| 78 | 
             
            angels_by_malechim_station = {
         | 
| 79 | 
             
                1: ["Akeberon", "Amereneh", "Mazeniem", "Meneshor"],
         | 
| 80 | 
             
                2: ["Qoherok", "Aberiek", "Siegor", "Pheniemor"],
         | 
| @@ -82,33 +74,84 @@ angels_by_malechim_station = { | |
| 82 | 
             
                4: ["Beriekoch", "Kephor", "Avor", ""]
         | 
| 83 | 
             
            }
         | 
| 84 |  | 
| 85 | 
            -
            # Obtener la fecha actual
         | 
| 86 | 
            -
            current_date = datetime.datetime.now()
         | 
| 87 |  | 
| 88 | 
            -
            # Obtener el mes actual
         | 
| 89 | 
            -
            current_month = current_date.month
         | 
| 90 |  | 
| 91 | 
            -
            # Obtener el día actual
         | 
| 92 | 
            -
            current_day = current_date.day
         | 
| 93 |  | 
| 94 | 
            -
             | 
| 95 | 
            -
             | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 96 |  | 
| 97 | 
            -
             | 
| 98 | 
            -
             | 
| 99 | 
            -
             | 
| 100 | 
            -
             | 
| 101 | 
            -
             | 
| 102 | 
            -
             | 
| 103 | 
            -
             | 
| 104 | 
            -
            angel_malechim_station = angels_by_malechim_station[list(angels_by_malechim_station.keys())[current_month - 1]][int(zodiac_sign[-1]) - 1]
         | 
| 105 |  | 
| 106 | 
            -
            #  | 
| 107 | 
            -
             | 
| 108 | 
            -
             | 
| 109 | 
            -
            print("Ángel correspondiente al signo zodiacal:", angel_zodiac)
         | 
| 110 | 
            -
            print("Ángel correspondiente al signo de la luna:", angel_moon_sign)
         | 
| 111 | 
            -
            print("Ángel que ministra el signo zodiacal:", angel_moon_minister)
         | 
| 112 | 
            -
            print("Ángel correspondiente a la estación de la Tierra:", angel_earth_station)
         | 
| 113 | 
            -
            print("Ángel correspondiente a la estación de los Malechims:", angel_malechim_station)
         | 
| 114 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 1 |  | 
| 2 | 
            +
             angels_by_zodiac_station = {
         | 
| 3 | 
            +
                    "Aries": ["sha'aphon", "behemoth", "bekemesheb/bekemekesheb", "qotzien"],
         | 
| 4 | 
            +
                    "Tauro": ["dierenavor", "heniethebol", "siemegedel", "morepheker"],
         | 
| 5 | 
            +
                    "Geminis": ["sheneron", "phelehedien", "volereked", "akeneseb"],
         | 
| 6 | 
            +
                    "Cancer": ["Qedoqoredi", "Qoheleren", "Phereshetial", "Memenial"],
         | 
| 7 | 
            +
                    "Leo": ["Bephopher", "Lieshebeker", "Shehenen", "shehelekek"],
         | 
| 8 | 
            +
                    "Virgo": ["Siemosial", "Sebodeh", "Siegel", "Teremothiteh"],
         | 
| 9 | 
            +
                    "Libra": ["A'ariegol", "Mereton", "Qa'aberi", "Legoshmelek"],
         | 
| 10 | 
            +
                    "Escorpio": ["Therepiethz", "Phetza'an", "Shemophethen", "Thokesed"],
         | 
| 11 | 
            +
                    "Sagitario": ["Aketen", "Kephron", "Oliphiel", "Yosel"],
         | 
| 12 | 
            +
                    "Capricornio": ["Ameni", "Bieker", "Depheri", "Menenial"],
         | 
| 13 | 
            +
                    "Acuario": ["Meta'am", "Theberien", "Shethoqoeh", "Danial"],
         | 
| 14 | 
            +
                    "Piscis": ["Sha'aphenen", "Aniesien", "Sethered", "Qohemehogov"]
         | 
| 15 | 
            +
                }
         | 
| 16 | 
            +
             | 
| 17 | 
             
            angels_by_month_station = {
         | 
| 18 | 
             
                "Nisan": ["Asegesenek", "Mesokenek", "Deriegemon", "Shethenovesenov"],
         | 
| 19 | 
             
                "Ayer": ["Phemetor", "Qotenebial", "Ma'agol", "Goberethial"],
         | 
|  | |
| 29 | 
             
                "Adar": ["Koneled", "Ba'aren", "Sebiebekera'a", "Qoromeqore"]
         | 
| 30 | 
             
            }
         | 
| 31 |  | 
|  | |
| 32 | 
             
            angels_by_day_station = {
         | 
| 33 | 
            +
                1: ["Phiegenochen", "Tenekien", "Kophethen", "Makeleched"],
         | 
| 34 | 
             
                2: ["Tga'sher", "Menechethor", "Qoleneheren", "Shegedon"],
         | 
| 35 | 
             
                3: ["Sheriyachetz", "Qohebereneden", "Pherezen", "Hegelomoth"],
         | 
| 36 | 
             
                4: ["Pheniov Lavor", "Miyeshor", "Degiem", "Betheroqa"],
         | 
|  | |
| 38 | 
             
                6: ["Qola'azeran", "Deremthok", "Akethenor", "Arieh"]
         | 
| 39 | 
             
            }
         | 
| 40 |  | 
|  | |
| 41 | 
             
            angels_by_moon_sign = {
         | 
| 42 | 
             
                "Leberenieth": ["shaitan", "therezien", "sheneremi", "Gabrial"],
         | 
| 43 | 
             
                "Seletheleb": ["Yieshieshieh", "Abererehon", "Sheheqonek", "Bal Menael"],
         | 
|  | |
| 45 | 
             
                "Sheherieph": ["Biyom", "Bieth", "Rothep", "Danial"]
         | 
| 46 | 
             
            }
         | 
| 47 |  | 
|  | |
| 48 | 
             
            moon_ministers_by_zodiac = {
         | 
| 49 | 
             
                "Aries": ["Zerem", "Behemi", "Pheloneh", "Qonosh"],
         | 
| 50 | 
             
                "Tauro": ["Deketon", "Mezekerien", "Thederenael", "Amiena"],
         | 
|  | |
| 60 | 
             
                "Piscis": ["Sha'aphenen", "Aniesien", "Sethered", "Qohemehogov"]
         | 
| 61 | 
             
            }
         | 
| 62 |  | 
|  | |
| 63 | 
             
            angels_by_earth_station = {
         | 
| 64 | 
             
                1: ["Memegien", "Yibesheh", "Thebel", "Hezeh Dovem"],
         | 
| 65 | 
             
                2: ["Mechemed Lov", "Bel Ached", "Aseberon", "Qohelorek"],
         | 
|  | |
| 67 | 
             
                4: ["Yihelederek", "Mephenial", "Mephenial", ""]
         | 
| 68 | 
             
            }
         | 
| 69 |  | 
|  | |
| 70 | 
             
            angels_by_malechim_station = {
         | 
| 71 | 
             
                1: ["Akeberon", "Amereneh", "Mazeniem", "Meneshor"],
         | 
| 72 | 
             
                2: ["Qoherok", "Aberiek", "Siegor", "Pheniemor"],
         | 
|  | |
| 74 | 
             
                4: ["Beriekoch", "Kephor", "Avor", ""]
         | 
| 75 | 
             
            }
         | 
| 76 |  | 
|  | |
|  | |
| 77 |  | 
|  | |
|  | |
| 78 |  | 
|  | |
|  | |
| 79 |  | 
| 80 | 
            +
            class AngelSearch:
         | 
| 81 | 
            +
                def __init__(self, angels_by_zodiac_station, angels_by_month_station, angels_by_day_station,
         | 
| 82 | 
            +
                             angels_by_moon_sign, moon_ministers_by_zodiac, angels_by_earth_station,
         | 
| 83 | 
            +
                             angels_by_malechim_station):
         | 
| 84 | 
            +
                    self.angels_by_zodiac_station = angels_by_zodiac_station
         | 
| 85 | 
            +
                    self.angels_by_month_station = angels_by_month_station
         | 
| 86 | 
            +
                    self.angels_by_day_station = angels_by_day_station
         | 
| 87 | 
            +
                    self.angels_by_moon_sign = angels_by_moon_sign
         | 
| 88 | 
            +
                    self.moon_ministers_by_zodiac = moon_ministers_by_zodiac
         | 
| 89 | 
            +
                    self.angels_by_earth_station = angels_by_earth_station
         | 
| 90 | 
            +
                    self.angels_by_malechim_station = angels_by_malechim_station
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                def search_patterns(self, pattern):
         | 
| 93 | 
            +
                    results = []
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                    # Buscar en la tabla de nombres de ángeles por estación zodiacal
         | 
| 96 | 
            +
                    for zodiac, angels in self.angels_by_zodiac_station.items():
         | 
| 97 | 
            +
                        for angel in angels:
         | 
| 98 | 
            +
                            if pattern in angel:
         | 
| 99 | 
            +
                                results.append((zodiac, angel))
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                    # Buscar en la tabla de nombres de ángeles por mes y estación
         | 
| 102 | 
            +
                    for month, angels in self.angels_by_month_station.items():
         | 
| 103 | 
            +
                        for angel in angels:
         | 
| 104 | 
            +
                            if pattern in angel:
         | 
| 105 | 
            +
                                results.append((month, angel))
         | 
| 106 | 
            +
             | 
| 107 | 
            +
                    # Buscar en la tabla de nombres de ángeles por día y estación
         | 
| 108 | 
            +
                    for day, angels in self.angels_by_day_station.items():
         | 
| 109 | 
            +
                        for angel in angels:
         | 
| 110 | 
            +
                            if pattern in angel:
         | 
| 111 | 
            +
                                results.append((day, angel))
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                    # Buscar en la tabla de nombres de ángeles por signo de luna
         | 
| 114 | 
            +
                    for sign, angels in self.angels_by_moon_sign.items():
         | 
| 115 | 
            +
                        for angel in angels:
         | 
| 116 | 
            +
                            if pattern in angel:
         | 
| 117 | 
            +
                                results.append((sign, angel))
         | 
| 118 | 
            +
             | 
| 119 | 
            +
                    # Buscar en la tabla de nombres de ángeles que ministran la luna por signo zodiacal
         | 
| 120 | 
            +
                    for zodiac, angels in self.moon_ministers_by_zodiac.items():
         | 
| 121 | 
            +
                        for angel in angels:
         | 
| 122 | 
            +
                            if pattern in angel:
         | 
| 123 | 
            +
                                results.append((zodiac, angel))
         | 
| 124 | 
            +
             | 
| 125 | 
            +
                    # Buscar en la tabla de nombres de ángeles por estación de la Tierra
         | 
| 126 | 
            +
                    for station, angels in self.angels_by_earth_station.items():
         | 
| 127 | 
            +
                        for angel in angels:
         | 
| 128 | 
            +
                            if pattern in angel:
         | 
| 129 | 
            +
                                results.append((station, angel))
         | 
| 130 | 
            +
             | 
| 131 | 
            +
                    # Buscar en la tabla de nombres de ángeles por estación de los Malechims
         | 
| 132 | 
            +
                    for station, angels in self.angels_by_malechim_station.items():
         | 
| 133 | 
            +
                        for angel in angels:
         | 
| 134 | 
            +
                            if pattern in angel:
         | 
| 135 | 
            +
                                results.append((station, angel))
         | 
| 136 | 
            +
             | 
| 137 | 
            +
                    return results
         | 
| 138 |  | 
| 139 | 
            +
            if __name__ == "__main__":
         | 
| 140 | 
            +
                # Tablas de nombres de ángeles
         | 
| 141 | 
            +
               
         | 
| 142 | 
            +
                # Crear una instancia de AngelSearch
         | 
| 143 | 
            +
                angel_search = AngelSearch(angels_by_zodiac_station, angels_by_month_station, angels_by_day_station,
         | 
| 144 | 
            +
                                           angels_by_moon_sign, moon_ministers_by_zodiac, angels_by_earth_station,
         | 
| 145 | 
            +
                                           angels_by_malechim_station)
         | 
|  | |
| 146 |  | 
| 147 | 
            +
                # Buscar ángeles que contienen el patrón "Qo"
         | 
| 148 | 
            +
                pattern = "Qo"
         | 
| 149 | 
            +
                results = angel_search.search_patterns(pattern)
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
| 150 |  | 
| 151 | 
            +
                # Imprimir resultados de la búsqueda
         | 
| 152 | 
            +
                print(f"Resultados de la búsqueda para el patrón '{pattern}':")
         | 
| 153 | 
            +
                if results:
         | 
| 154 | 
            +
                    for result in results:
         | 
| 155 | 
            +
                        print(result)
         | 
| 156 | 
            +
                else:
         | 
| 157 | 
            +
                    print("No se encontraron coincidencias para el patrón proporcionado.")
         | 
    	
        lib/triggers.py
    ADDED
    
    | @@ -0,0 +1,82 @@ | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 1 | 
            +
            import datetime
         | 
| 2 | 
            +
            import requests
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class Trigger:
         | 
| 5 | 
            +
                def __init__(self, trigger_tags, comparison_tags, time_definition, event_name, included=True):
         | 
| 6 | 
            +
                    self.trigger_tags = set(trigger_tags)
         | 
| 7 | 
            +
                    self.comparison_tags = set(comparison_tags)
         | 
| 8 | 
            +
                    self.time_definition = time_definition
         | 
| 9 | 
            +
                    self.event_name = event_name
         | 
| 10 | 
            +
                    self.included = included
         | 
| 11 | 
            +
                    self.threshold = 0
         | 
| 12 | 
            +
                    self.actions = []
         | 
| 13 | 
            +
                    self.sources = []
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def add_action(self, action):
         | 
| 16 | 
            +
                    self.actions.append(action)
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                def remove_action(self, action):
         | 
| 19 | 
            +
                    if action in self.actions:
         | 
| 20 | 
            +
                        self.actions.remove(action)
         | 
| 21 | 
            +
                    else:
         | 
| 22 | 
            +
                        print("Action not found")
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def add_source(self, source):
         | 
| 25 | 
            +
                    self.sources.append(source)
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                def remove_source(self, source):
         | 
| 28 | 
            +
                    if source in self.sources:
         | 
| 29 | 
            +
                        self.sources.remove(source)
         | 
| 30 | 
            +
                    else:
         | 
| 31 | 
            +
                        print("Source not found")
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                def check_trigger(self, current_tags, current_time):
         | 
| 34 | 
            +
                    if self.included:
         | 
| 35 | 
            +
                        if current_time in self.time_definition and self.trigger_tags.issubset(current_tags):
         | 
| 36 | 
            +
                            self.threshold += 1
         | 
| 37 | 
            +
                        else:
         | 
| 38 | 
            +
                            self.threshold = 0
         | 
| 39 | 
            +
                    else:
         | 
| 40 | 
            +
                        if current_time in self.time_definition and not self.trigger_tags.intersection(current_tags):
         | 
| 41 | 
            +
                            self.threshold += 1
         | 
| 42 | 
            +
                        else:
         | 
| 43 | 
            +
                            self.threshold = 0
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                    if self.threshold >= len(self.time_definition):
         | 
| 46 | 
            +
                        self.fire_actions()
         | 
| 47 | 
            +
                        self.make_requests()
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                def fire_actions(self):
         | 
| 50 | 
            +
                    for action in self.actions:
         | 
| 51 | 
            +
                        action(self.event_name)
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                def make_requests(self):
         | 
| 54 | 
            +
                    for source in self.sources:
         | 
| 55 | 
            +
                        try:
         | 
| 56 | 
            +
                            response = requests.get(source)
         | 
| 57 | 
            +
                            # Procesar la respuesta aquí si es necesario
         | 
| 58 | 
            +
                            print(f"Request made to {source}. Status code: {response.status_code}")
         | 
| 59 | 
            +
                        except requests.exceptions.RequestException as e:
         | 
| 60 | 
            +
                            print(f"Error making request to {source}: {e}")
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            # Ejemplo de uso:
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            def action_function(event_name):
         | 
| 65 | 
            +
                print(f"Trigger fired for event: {event_name}")
         | 
| 66 | 
            +
             | 
| 67 | 
            +
             | 
| 68 | 
            +
            if __name__ == "__main__":
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                # Definición de un trigger
         | 
| 71 | 
            +
                trigger = Trigger(["tag1", "tag2"], ["tag3", "tag4"], [datetime.time(10, 0), datetime.time(15, 0)], "Event1")
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                # Añadir una acción al trigger
         | 
| 74 | 
            +
                trigger.add_action(action_function)
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                # Añadir una fuente al trigger
         | 
| 77 | 
            +
                trigger.add_source("https://example.com/api/data")
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                # Simular la comprobación periódica del trigger (aquí se usaría en un bucle de tiempo real)
         | 
| 80 | 
            +
                current_tags = {"tag1", "tag2", "tag3"}
         | 
| 81 | 
            +
                current_time = datetime.datetime.now().time()
         | 
| 82 | 
            +
                trigger.check_trigger(current_tags, current_time)
         | 

