コード例 #1
0
def create_intake():
    req = request.get_json()
    
    m_id = req['medicine_id']
    p_date = req['planned_date_time']
    a_date = req['actual_date_time']
    
    i_status = 3
    if a_date is not None and len(a_date)>0:
        i_status = hp.get_intake_status(p_date, a_date)
    
    if i_status != 3:
        PredictionService.confirm_intake(m_id, dateparser.parse(a_date))
    
    cur_intake = Intake(med_id=m_id, 
                        actual_date=a_date, 
                        planned_date=p_date,
                        intake_status=i_status)
    
    cur_session = Session()
    prev_intake = cur_session.query(Intake).filter(Intake.med_id == m_id).filter(Intake.planned_date == p_date).first()
    
    if prev_intake is not None:
        prev_intake.actual_date = cur_intake.actual_date
        prev_intake.intake_status = cur_intake.intake_status
    else:
        cur_session.add(cur_intake)
    cur_session.commit()
    cur_session.close()
    
    return INTAKE_ADD_SUCCESS
コード例 #2
0
ファイル: test_api.py プロジェクト: boris-mtdv/perseuss
def test_add():
    app.testing = True

    prediction_service = PredictionService()

    response = app.test_client().post(
        '/classify',
        data=json.dumps({
            "jsonrpc": "2.0",
            "method": "classify",
            "params": {
                "Pclass": 1,
                "Sex": "female",
                "Age": 34,
                "SibSp": 1,
                "Parch": 0,
                "Embark": "S"
            },
            "id": "1"
        }),
        content_type='application/json',
    )

    data = json.loads(response.get_data(as_text=True))

    assert "id" in data
    assert "probability" in data
    assert response.status_code == 200
コード例 #3
0
ファイル: test_api.py プロジェクト: boris-mtdv/perseuss
def test_feature_processing3():
    passenger = {
        "Pclass": 1,
        "Sex": "female",
        "SibSp": 2,
        "Parch": 2,
        "Embark": "Q"
    }

    processed_passenger = PredictionService.process_features(passenger)

    assert processed_passenger["Age"] == None
    assert processed_passenger["sex"] == 0
    assert processed_passenger["deck"] == None
    assert processed_passenger["embarked"] == 2
コード例 #4
0
ファイル: test_api.py プロジェクト: boris-mtdv/perseuss
def test_feature_processing2():
    passenger = {
        "Pclass": 1,
        "Sex": "female",
        "Age": 15,
        "SibSp": 2,
        "Parch": 2,
        "Embark": "S",
        "Cabin": "B105"
    }

    processed_passenger = PredictionService.process_features(passenger)

    assert processed_passenger["sex"] == 0
    assert processed_passenger["deck"] == 2
    assert processed_passenger["embarked"] == 1
コード例 #5
0
from prediction_service import PredictionService

ps = PredictionService()
#print(imgs.getImageVector())
#ps.trainModel("./Dataset/extracted_images/")
ps.predict("./TestData/test2.jpg")
コード例 #6
0
def reset_config():
    global hp
    hp = Helpers(app)
    Q_service.start_service(hp)
    PredictionService.start_service(Session, hp)
    return CONFIG_RESET_SUCCESS
コード例 #7
0

# Create SQL engine, session-factory object and create all tables
# These are my own credentials for my local MySql Server, you need
# to use your own server credentials when running locally or use
# in memory sqlite - create_engine('sqlite:///:memory:', echo = True)
db_user = hp.get_config('db', 'user')
db_pass = hp.get_config('db', 'password')
db_name = hp.get_config('db', 'name')
db_port = str(hp.get_config('db', 'port'))
sql_engine = create_engine('mysql+pymysql://'+db_user+':'+db_pass+'@localhost:'+db_port+'/'+db_name, 
                           pool_recycle=3600, 
                           echo=True)
Session = sessionmaker(bind=sql_engine)
Base.metadata.create_all(sql_engine)
PredictionService.start_service(Session, hp)
Q_service.start_service(hp)

ACTION_WINDOW = hp.get_config('model', 'action_window')
API_KEY = hp.get_config('basic', 'api_key')
AUTHORIZED_USER = hp.get_config('basic', 'authorized_user')
SECURE_SERVER = hp.get_config('basic', 'security')

# Standard responses
ENTRY_NOT_FOUND = ('', 204)
DEVICE_ALREADY_REGISTERED = ('Device already registered with same push_id', 200)
DELETE_SUCCESS = ('Deletion complete', 200)
USER_ALREADY_EXISTS = ('Patient already exists with same patient Id', 500)
USER_ADD_SUCCESS = ('Patient Added Successfully', 201)
USER_ADD_FAILED = ('Failed to add patient', 400)
USER_DOES_NOT_EXIST = ('The specified patient does not exist', 400)
コード例 #8
0
import logging
# pylint: disable=import-error
from app_config import training_service_config, mlflow_models_mapping, service_config
from prediction_service import PredictionService

prediction_service = PredictionService(training_service_config,
                                       mlflow_models_mapping, service_config)

if __name__ == '__main__':
    logging_level = service_config['log_level']

    log = logging.getLogger('werkzeug')
    log.setLevel(logging_level)

    prediction_service.run_flask_server(port=service_config['port'],
                                        host='0.0.0.0')
コード例 #9
0
ファイル: app.py プロジェクト: boris-mtdv/perseuss
from flask import Flask, request, jsonify
from marshmallow import ValidationError
from passenger import PassengerSchema
from prediction_service import PredictionService

app = Flask(__name__)
prediction_service = PredictionService()


@app.route('/classify', methods=["POST"])
def classify():
    data = request.get_json()
    # initial vaalidation of request fields
    try:
        passenger = PassengerSchema().load(data["params"])
        passenger["id"] = data["id"]

    except ValidationError as err:
        return (err.messages)

    response_object = prediction_service.predict(passenger)

    return jsonify(response_object)


if __name__ == '__main__':

    app.run(host='0.0.0.0', debug=True)
コード例 #10
0
    def dispatch(med_id, u_id, start):

        Q_service.helper.logger.debug('Dispatch initiated for medicine id: %s',
                                      str(med_id))
        total_data = Q_service.med_data[med_id]
        times = Q_service.med_timestamps[med_id]
        touches = Q_service.med_touches[med_id]
        SLIDE_WINDOW = Q_service.SLIDE_WINDOW
        T_WINDOW = Q_service.T_WINDOW

        D, S, A = Q_service.med_data[med_id].shape

        dispatch_data = Q_service.helper.get_clean_data_array((D, S, A))
        disp_cap_data = []

        for d in range(D):
            for s in range(S):
                if (len(times[d, s]) == 0):  # no data for this sensor
                    continue
                s_time = times[d, s][0]
                #Q_service.helper.logger.debug("s_time, d,s,times[d,s] :%s,%s, %s, %s", s_time, d, s, times[d,s])
                del_idx, send_idx = get_index(times[d,
                                                    s], s_time + SLIDE_WINDOW,
                                              s_time + T_WINDOW)

                if send_idx == 0:
                    Q_service.helper.logger.debug(
                        'Not enough data to dispatch!')
                    return

                for a in range(A):

                    dispatch_data[d, s, a] = copy.deepcopy(
                        total_data[d, s, a][:send_idx - 1])
                    Q_service.med_data[med_id][
                        d, s, a] = Q_service.med_data[med_id][d, s,
                                                              a][del_idx:]
                    Q_service.helper.logger.debug(
                        "sensor data del_idx, send_idx : %s, %s", del_idx,
                        send_idx)

                Q_service.med_timestamps[med_id][
                    d, s] = Q_service.med_timestamps[med_id][d, s][del_idx:]

        #Q_service.helper.logger.debug('Calling predict for medicine id : %s ', str(dispatch_data))
        # Optimize this later
        touch_ts = [k[1] for k in touches
                    ]  # timestamps extracted from list of tuples

        del_idx, send_idx = get_index(touch_ts, touches[0][1] + SLIDE_WINDOW,
                                      touches[0][1] + T_WINDOW)
        if send_idx == 0:
            Q_service.helper.logger.debug(
                'Not enough capacitive data to dispatch!')
            return
        Q_service.helper.logger.debug("Cap data del_idx, send_idx : %s, %s",
                                      del_idx, send_idx)
        Q_service.med_touches[med_id] = Q_service.med_touches[med_id][del_idx:]
        disp_cap_data = Q_service.med_touches[med_id][:send_idx - 1]

        PredictionService.predict(med_id, u_id, dispatch_data, disp_cap_data,
                                  start)