コード例 #1
0
 def _load_modules(self, conf: WhatTheFileConfiguration) -> None:
     module_index = 0
     for module_section_name in conf.get_modules_section_names():
         try:
             active = conf.get_property_boolean(module_section_name,
                                                "active")
         except:
             active = False
         if active:
             Log.info("Loading module: [" + module_section_name + "]")
             mod = self._import_module(conf, module_section_name,
                                       module_index)
             if mod is not None:
                 module_index += 1
                 self.__modules.append(mod)
                 Log.info("Module loaded successfully: [" +
                          str(mod.get_index()) + "] - " + mod.get_name())
             else:
                 Log.error("Error loading module: [" + module_section_name +
                           "]")
コード例 #2
0
import json
from azure.storage.blob import BlockBlobService
from azure.common import AzureMissingResourceHttpError

from src.utils.log import Log
from enum import Enum
from os import getenv

log = Log()


class BlobsContainers(Enum):
    cycles = 'cycles'
    models = 'models'
    timeline = 'timeline'
    paths = 'paths'


class ModelType(Enum):

    def __str__(self):
        return str(self.value)

    user = '******'
    product = 'product'
    cnpj = 'cnpj'


class BlobManager:
    account_name = getenv("BLOBS_NAME")
    account_key = getenv("BLOBS_KEY")
コード例 #3
0
    Adicione este script como um WebJob Triggered no Azure App Service "siga-api" com a seguinte expressão CRON:
        0 0 0 * * 6

"""

import os
import sys

sys.path.append(os.getenv("APP_ROOT"))
sys.path.append(os.getenv("APP_SITEPACKAGES"))

from networkx import nx
from src.utils.storage.blobs import BlobManager, BlobsContainers
from src.utils.log import Log

log = Log()


def simple_cycles(G, threshold, limit=6):

    """

    :param G:  O grafo contendo todas as transições geradas a partir do modelo
    :param limit: Um valor máximo de caminho. Geralmente caminhos com valores maior que 10 tem uma probabilidade muito
    pequena e raramente são escolhidos
    :param threshold: Um valor mínimo de probabilidade para caminhos. Este parâmetro evita que caminhos muito longos,
    ou seja, com baixa probabilidade continuem a ser buscados, reduzindo assim o tempo de execução do algoritmo
    :return: Um dicionário com todas os ciclos de telas e suas respectivas probabilidades

    """
コード例 #4
0
            if user is None and cnpj is None:
                total_product[1] += 1
                d["AG"]["product"] += count_frames(doc)

    d["AC"]["user"] = (d["AC"]["user"] / 1.0 * total_user[0])
    d["AC"]["cnpj"] = (d["AC"]["cnpj"] / 1.0 * total_cnpj[0])
    d["AC"]["product"] = (d["AC"]["product"] / 1.0 * total_product[0])

    d["AG"]["user"] = (d["AG"]["user"] / 1.0 * total_user[1])
    d["AG"]["cnpj"] = (d["AG"]["cnpj"] / 1.0 * total_cnpj[1])
    d["AG"]["product"] = (d["AG"]["product"] / 1.0 * total_product[1])

    return d


log = Log()
if __name__ == '__main__':

    log.info("Started")
    initial_prefix = 'AC/'
    models, marker = BlobManager.list_all_blobs(container_name=BlobsContainers.models.value, num_results=1000,
                                                prefix=initial_prefix)
    documents = []
    frames_AC = 0
    frames_AG = 0

    begin = time.time()
    while True:
        next_marker = marker
        for index, blob_name in enumerate(models):
            try:
コード例 #5
0
import json
import zlib

from datetime import datetime
from multiprocessing import Process

sys.path.append(os.getenv("APP_ROOT"))
sys.path.append(os.getenv("APP_SITEPACKAGES"))

from src.utils.log import Log
from src.utils import blobs_service as service
from src.utils.storage.blobs import BlobManager
from src.tasks.task1.train_model import train_model
from src.webjob.check_database_size import write_on_file

log = Log()


def delete_documents(blobs):
    """
    Remove todos os blobs contidos na lista

    :param blobs: lista com os nomes dos blobs que serão removidos
    :return:
    """

    log.info("Deleting documents...")

    for blob in blobs:
        try:
            service.delete_entity(blob, 'timeline')
コード例 #6
0
Como usar
    Adicione este script como um WebJob Triggered no Azure App Service "siga-api" com a seguinte expressão CRON:
        0 0 2 * * *
"""

import os
import sys

sys.path.append(os.getenv("APP_ROOT"))
sys.path.append(os.getenv("APP_SITEPACKAGES"))

from src.utils.storage.blobs import BlobManager
from src.utils.log import Log

log = Log()


def write_on_file(filename, lines, mode='w'):
    with open(filename, mode) as content_file:
        content_file.writelines(lines)


def historic_database_size(str_sizes):
    """
    Mantem o historico do tamanho da base de dados em bytes e em quantidade de blobs dos ultimos 30 dias.

    :param str_sizes:
    :return:
    """
    number_of_days = 31
コード例 #7
0
import datetime

from src.ml.models.markov import markov_chain
from copy import deepcopy as copy
from src.utils import blobs_service as service
from src.utils.log import Log
from operator import itemgetter

log_app = Log()


def train_model(user_sessions_data):
    """
    Utiliza cada sequência de telas de uma seção de um usuário  por vez para treinar os modelos

    :param user_sessions_data: Dados contendo as sequências de telas das seções dos usuários
    :return:
    """

    for user_data in user_sessions_data:
        data = get_activate_data(user_data)
        if data:
            train_product(data)


def train_product(product_data):
    """
    Treina o modelo do produto a partir do modelo atualizado do usuário

    :param product_data: sequências de telas de uma seção de um usuários
    :return: