def Peak_Picking_function(acc,Fs,new_f,filtering,PSDfangfa,m,if_log,draw,percent,minpeakdist):
    engine.cd(r'/Data/SHZX_output/Matlab_Functions')
    [Frequency,PSD,Locs,Peaks] = engine.ANPSD_function_py(
        matlab.double(np.array(acc).tolist()),
        float(Fs),
        'filtering', matlab.double(filtering),
        'PSDfangfa', float(PSDfangfa),
        'm', float(m),
        'if_log', float(if_log),
        'draw', float(draw),
        'percent', float(percent),
        'minpeakdist', float(minpeakdist),
        'new_f', float(new_f),
        nargout=4)

    ANPSD = pd.DataFrame([]); Peak = pd.DataFrame([])
    ANPSD['Frequency'] = list(Frequency[0])
    ANPSD['ANPSD'] = list(PSD[0])
    try:
        Peak['f'] = list(Locs[0])
        Peak['ANPSD'] = list(Peaks[0])
    except:
        Peak['f'] = [Locs]
        Peak['ANPSD'] = [Peaks]
    
    return(Peak, ANPSD)
Exemple #2
0
def execute(lines):
    if type(engine)!=matlab.engine.matlabengine.MatlabEngine:
        print "I do not find a matlab engine"
        return
    oldworkingdir = engine.pwd()
    workingdir = vim.eval("expand('%:p:h')")
    fscript = workingdir+'/tmpscriptAZWKL.m'
    with open(fscript,'w') as script:
        for line in lines:
            script.write(line+'\n')
    result = StringIO.StringIO()
    engine.cd(workingdir,nargout=0)
    try:
        engine.tmpscriptAZWKL(nargout=0,stdout=result,stderr=result)
    except matlab.engine.MatlabExecutionError:
        pass
    engine.cd(oldworkingdir,nargout=0)
    remove(fscript)
    print result.getvalue()
def SSICOV_function(acc,Ts,Fs,new_f,filtering,if_log,draw,draw_matlab,Xrange,eps_freq):
    SSI = pd.DataFrame([])
    engine.cd(r'/Data/SHZX_output/Matlab_Functions')
    [fn,zeta,phi,plotdata] = engine.SSICOV_function_py(
        matlab.double(np.array(acc).tolist()),
        float(Fs),
        'Ts', Ts,               # 这个越长越精准,但速度会受影响
        'new_f', float(new_f),  # 降采样之后反而效果更好了,可能是因为所受的干扰信息少了
        'methodCOV', 1,         # 方法1精度更高
        'Nmin', float(1), 'Nmax', float(50),
        'filtering', matlab.double(filtering),
        'draw', draw,
        'draw_matlab', draw_matlab,
        'Xrange', matlab.double(Xrange),
        'if_log', if_log,
        'eps_freq', eps_freq,
        nargout=4)
    if draw:
        # stable pole : 频率、阵型、阻尼同时满足精度要求
        # stable freq.& MAC : 频率、阵型满足精度要求
        # stable freq.& damp.: 频率、阻尼满足精度要求
        # stable freq.: 频率满足精度要求
        all_pole = pd.DataFrame([[list(x)[0] for x in list(plotdata[0][0])],[list(x)[0] for x in list(plotdata[1][0])]]).T
        stable_pole = pd.DataFrame([[list(x)[0] for x in list(plotdata[0][1])],[list(x)[0] for x in list(plotdata[1][1])]]).T
        stable_freq_MAC = pd.DataFrame([[list(x)[0] for x in list(plotdata[0][2])],[list(x)[0] for x in list(plotdata[1][2])]]).T
        stable_freq_damp = pd.DataFrame([[list(x)[0] for x in list(plotdata[0][3])],[list(x)[0] for x in list(plotdata[1][3])]]).T
        stable_freq = pd.DataFrame([[list(x)[0] for x in list(plotdata[0][4])],[list(x)[0] for x in list(plotdata[1][4])]]).T
        all_pole['mark'] = 'all pole'; stable_pole['mark'] = 'stable pole'; stable_freq_MAC['mark'] = 'stable freq. & MAC'; stable_freq_damp['mark'] = 'stable freq. & damp.'; stable_freq['mark'] = 'stable freq.'
        SSI_data = pd.concat([all_pole,stable_pole,stable_freq_MAC,stable_freq_damp,stable_freq], ignore_index =True); SSI_data.columns = ['frequency', 'mode', 'mark']
        PP_data = pd.DataFrame([list(plotdata[2][0]), list(plotdata[3][0])]).T; PP_data.columns = ['frequency', 'mode']
        SSI_data = SSI_data[SSI_data['frequency']<=Xrange[1]].drop_duplicates()
        PP_data = PP_data[PP_data['frequency']<=Xrange[1]]
    else:
        SSI_data = ''; PP_data = ''
    try:
        SSI['fn'] = list(fn[0])
        SSI['zeta'] = list(zeta[0])
    except:
        SSI['fn'] = [fn]
        SSI['zeta'] = [zeta]
    return(SSI, SSI_data, PP_data)
Exemple #4
0
def get_efms(N, reversibility, verbose=True, efmtool_path=os.getcwd()):
    """
    Uses Matlab and EFMtool (https://csb.ethz.ch/tools/software/efmtool.html) to calculate the EFMs of a model.
    :param N: stoichiometry matrix
    :param reversibility: list of booleans indicating if reaction is reversible
    :param verbose:
    :param efmtool_path: Path to where EFM software is installed on machine
    :return: matrix with efms
    """
    import matlab.engine
    engine = matlab.engine.start_matlab()
    engine.cd(efmtool_path)
    result = engine.CalculateFluxModes(matlab.double([list(row) for row in N]), matlab.logical(reversibility))
    if verbose:
        print('Fetching calculated EFMs')
    size = result['efms'].size
    shape = size[1], size[0] # _data is in transposed form w.r.t. the result matrix
    efms = np.reshape(np.array(result['efms']._data), shape)
    if verbose:
        print('Finishing fetching calculated EFMs')
    return efms
Exemple #5
0
def execute(lines):
    if type(engine) != matlab.engine.matlabengine.MatlabEngine:
        print("I do not find a matlab engine")
        return
    oldworkingdir = engine.pwd()
    workingdir = vim.eval("expand('%:p:h')")
    fscript = workingdir + '/tmpscriptAZWKL.m'
    with open(fscript, 'w') as script:
        for line in lines:
            script.write(line + '\n')
    result = io.StringIO()
    engine.cd(workingdir, nargout=0)
    try:
        engine.tmpscriptAZWKL(nargout=0, stdout=result, stderr=result)
    except matlab.engine.MatlabExecutionError:
        pass
    engine.cd(oldworkingdir, nargout=0)
    remove(fscript)
    message = result.getvalue()
    maxOutputChars = int(vim.eval("g:matvim_max_outputchars"))
    if maxOutputChars > 0 and len(message) > maxOutputChars:
        message = message[0:maxOutputChars-1]+ \
            " ...\nWarning: Message is longer than g:matvim_max_outputchars"
    print(message)
def run_m(m_path):
    main_path = '\\'.join(m_path.split('\\')[:-1])
    name = m_path.split('\\')[-1].split('.')[0]
    engine.cd('E:\\【论文】\\【小论文】\\宁波南站\\脚本控制器\\操控Matlab')
    engine.Control_Matlab(main_path, name)
Exemple #7
0
import os
import matlab.engine

# TODO: Life would be easier if we used an existing MATLAB engine
# so we didn't have to restart MATLAB each time.
# https://www.mathworks.com/help/matlab/matlab_external/connect-python-to-running-matlab-session.html
engine = matlab.engine.start_matlab()
engine.cd(os.path.dirname(os.path.realpath(__file__)))
engine.triarea(nargout=0)
Exemple #8
0
        model.compile(optimizer=SGD(lr=learning_rate), loss=loss_func)

    # load pretrain model
    if model_pretrain != '':
        model.load_weights(model_pretrain, by_name=True)
    # neumf_pretrain = 'Pretrain/gene_NeuMF_8_[64]_0.050.h5'
    # model.load_weights(neumf_pretrain,by_name=True)

    # print("Load pretrained NeuMF (%s) models done. " %(neumf_pretrain))

    # Load pretrain model

    # Init performance
    engine = matlab.engine.start_matlab()
    cur_path = os.getcwd()
    engine.cd(cur_path, nargout=0)
    cdf_t, recall_t = -1, -1
    print('Init: cdf = %.6f, recall = %.6f' % (
        cdf_t,
        recall_t,
    ))

    best_cdf, best_recall, best_iter = cdf_t, recall_t, -1

    # Training model
    plot_model(model, to_file='%s.png' % training_model.lower())
    model.summary()
    for epoch in xrange(1, num_epochs + 1):
        t1 = time()
        # Generate training instances
        user_input, item_input, labels = get_train_instances(
Exemple #9
0
                               temp_data.iloc[:, 1].mean()).abs() < 3 *
                              temp_data.iloc[:, 1].std()]
        new_data = pd.concat([new_data, temp_data], ignore_index=True)
    data = new_data

# 是否取对数
if if_log:
    data.iloc[:, 1] = np.log(data.iloc[:, 1])

time_series = np.array(range(1, 1441))
time_stamp = np.array(data.iloc[:, 0])
RMS = np.array(data.iloc[:, 1])

if if_Matlab:
    # 高斯过程回归Matlab
    engine.cd('E:\\【论文】\\【小论文】\\宁波南站\\Matlab脚本\\GPR')
    engine.GaussianProcessRegression(
        matlab.double(time_stamp.tolist())[0],
        matlab.double(RMS.tolist())[0],
        matlab.double(time_series.tolist())[0])
else:
    # 高斯过程回归Python
    # 抽取子集
    data_sample = data.sample(3000)
    time_stamp_sample = np.array(data_sample.iloc[:, 0])
    RMS_sample = np.array(data_sample.iloc[:, 1])
    # 高斯回归
    from sklearn.gaussian_process import GaussianProcessRegressor
    from sklearn.gaussian_process.kernels import Matern
    gp_kernel = 1.0 * Matern(
        length_scale=1, length_scale_bounds=(1e-2, 1e2), nu=1.5)
Exemple #10
0
def render_diagram(app, node, docname):

    global engine

    uri = node['uri']

    # do not regenerate
    if os.path.exists(uri):
        pass

    ensuredir(os.path.dirname(uri))

    try:

        # reuse last engine to save loading time
        if engine == None:
            engine = matlab.engine.start_matlab()
        else:
            # clean up used engines
            engine.restoredefaultpath(nargout=0)
            engine.close('all', nargout=0)
            engine.bdclose('all', nargout=0)
            engine.clear('classes', nargout=0)

        # start engine from document directory
        engine.cd(os.path.dirname(app.env.doc2path(docname)))

        # then, support changing directory (relative to document)
        dir = node.get('dir')
        if dir:
            engine.cd(dir)

        # finally, add the MATLAB paths relative to the changed directory
        pathlist = node.get('addpath')
        if pathlist:
            for path in pathlist:
                engine.addpath(path)

        # preload script
        preload = node.get('preload')
        if preload:
            engine.eval(preload + ';', nargout=0)

        # load system
        system = node.get('system')
        if system:
            engine.load_system(system)

        # if subsystem specified, print from this layer
        subsystem = node.get('subsystem')
        if subsystem:
            system = "/".join([system, subsystem])

        # print from Simulink handle to .png
        engine.eval(
            "print( get_param( '{}', 'Handle' ), '-dpng', '{}' )".format(
                system, uri),
            nargout=0)

    except matlab.engine.MatlabExecutionError as err:
        raise SimulinkDiagramError('Unable to render Simulink diagram due ' +
                                   'to MATLAB execution error')
from waitress import serve
from flask import request
from flask import Flask

import time

import json

if __name__ == '__main__':

    app = Flask(__name__)

    # initialize MATLAB
    engine = matlab.engine.start_matlab()
    engine.cd('./matlab')
    engine.addpath('./utils')

    @app.route('/api/vrptw', methods=['POST'])
    def callVrptw():
        req_json = request.json

        if req_json is None or req_json == 'null':
            return 'Error parsing request! Should be in JSON format!'

        incidence_mat = req_json['incidenceMat']
        cost_mat = req_json['costMat']
        edge_time_vec = req_json['edgeTimeV']
        start_vec = req_json['startV']
        end_vec = req_json['endV']
        distr_vec = req_json['nodeDistributionV']
def render_diagram(app, node, docname):

    global engine

    uri = node['uri']

    # do not regenerate
    if os.path.exists( uri ):
        pass

    ensuredir( os.path.dirname( uri ) )

    try:

        # reuse last engine to save loading time
        if engine == None:
            engine = matlab.engine.start_matlab()
        else:
            # clean up used engines
            engine.restoredefaultpath(nargout=0)
            engine.close('all', nargout=0)
            engine.bdclose('all', nargout=0)
            engine.clear('classes', nargout=0)

        # start engine from document directory
        engine.cd( os.path.dirname( app.env.doc2path( docname ) ) )

        # then, support changing directory (relative to document)
        dir = node.get('dir')
        if dir:
            engine.cd( dir )

        # finally, add the MATLAB paths relative to the changed directory
        pathlist = node.get('addpath')
        if pathlist:
            for path in pathlist:
                engine.addpath( path )

        # preload script
        preload = node.get('preload')
        if preload:
            engine.eval( preload + ';', nargout=0)

        # load system
        system = node.get('system')
        if system:
            engine.load_system( system );

        # if subsystem specified, print from this layer
        subsystem = node.get('subsystem')
        if subsystem:
            system = "/".join( [ system, subsystem ] )

        # print from Simulink handle to .png
        engine.eval(
            "print( get_param( '{}', 'Handle' ), '-dpng', '{}' )".
                format( system, uri ),
            nargout=0
            )

    except matlab.engine.MatlabExecutionError as err:
        raise SimulinkDiagramError('Unable to render Simulink diagram due ' +
            'to MATLAB execution error'
        )