From 295d3d8c987c3994e1a925ab0a9674cdbeaff80c Mon Sep 17 00:00:00 2001 From: arokem Date: Wed, 19 Feb 2014 21:22:44 -0800 Subject: [PATCH 001/308] NF: Starting to work on tools to convert m files into notebooks. --- pymatbridge/publish.py | 97 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 pymatbridge/publish.py diff --git a/pymatbridge/publish.py b/pymatbridge/publish.py new file mode 100644 index 0000000..57f4e00 --- /dev/null +++ b/pymatbridge/publish.py @@ -0,0 +1,97 @@ +import IPython.nbformat.current as nbformat + + +def format_line(line): + """ + Format a line of Matlab into either a markdown line or a code line. + + Parameters + ---------- + line : str + The line of code to be formatted. Formatting occurs according to the + following rules: + + - If the line starts with three '%' signs, it will be converted to h1 + and we will assume that it starts a new cell. Suggested use: title. + - If the line starts with (at least) two %% signs, a new cell will be + started and this line will be converted to h2. Suggested use: + section title. + - Additional '#' signs can be used to produce entire lines with other + heading styles. Suggested use: knock yerself out. + - If the line doesn't start with a '%' sign, it is assumed to be legit + matlab code. We will continue to + """ + if line.startswith('%%%'): + md = True + new_cell = True + # Strip off the % signs: + source = '#' + line.split('%%%')[1] + elif line.startswith('%%'): + md = True + new_cell = True + if line.endswith('%%'): + # This is a special case that simply means break up the code here: + source = None + else: + source = '##' + line.split('%%')[1] + elif line.startswith('%'): + md = True + new_cell = False + source = line.split('%')[1] + else: + md = False + new_cell = False + source = line + + return new_cell, md, source + +def convert_m_file(mfile, outfile=None): + """ + Convert a Matlab m-file into a Matlab notebook in ipynb format + + Parameters + ---------- + mfile : string + Full path to a matlab m file to convert + + outfile : string (optional) + Full path to the output ipynb file + + """ + # We should only be able to read this file: + f = file(mfile, 'r') + cells = [] + for l in f.readlines(): + new_cell, md, source = format_line(l) + source = l + while not new_cell: + + if md: + source.join(md) + else: + source.join(l) + + while md is not None and new_cell is False: + source.join(md) + new_cell, md = format_line(l) + + cells.append(nbformat.new_text_cell('markdown', source=source)) + + md=False + else: + while l[0] != '%': + source += l + cells.append(nbformat.new_code_cell(input=source, + language=u'matlab')) + + f.close() + + notebook = nbformat.new_notebook( + metadata=nbformat.new_metadata(name=fname.split), + worksheets=cells) + + if outfile is None + outfile = fname.split('.m')[0] + '.ipynb' + nbfile = file(outfile, 'w') + nbformat.write(notebook, nbfile, format='ipynb') + nbfile.close() From c5b67fcfc560a2a9fecde683cc83500e4b01ec3e Mon Sep 17 00:00:00 2001 From: arokem Date: Thu, 20 Feb 2014 11:26:05 -0800 Subject: [PATCH 002/308] RF + TST: More work on matlab => notebook. Including some basic tests. --- pymatbridge/publish.py | 105 ++++++++++++++++-------------- pymatbridge/tests/test_publish.py | 39 +++++++++++ 2 files changed, 94 insertions(+), 50 deletions(-) create mode 100644 pymatbridge/tests/test_publish.py diff --git a/pymatbridge/publish.py b/pymatbridge/publish.py index 57f4e00..6c55165 100644 --- a/pymatbridge/publish.py +++ b/pymatbridge/publish.py @@ -1,5 +1,5 @@ import IPython.nbformat.current as nbformat - +import numpy as np def format_line(line): """ @@ -11,33 +11,27 @@ def format_line(line): The line of code to be formatted. Formatting occurs according to the following rules: - - If the line starts with three '%' signs, it will be converted to h1 - and we will assume that it starts a new cell. Suggested use: title. - If the line starts with (at least) two %% signs, a new cell will be - started and this line will be converted to h2. Suggested use: - section title. - - Additional '#' signs can be used to produce entire lines with other - heading styles. Suggested use: knock yerself out. + started. + - If the line doesn't start with a '%' sign, it is assumed to be legit - matlab code. We will continue to + matlab code. We will continue to add to the same cell until reaching + the next comment line """ - if line.startswith('%%%'): - md = True - new_cell = True - # Strip off the % signs: - source = '#' + line.split('%%%')[1] - elif line.startswith('%%'): + if line.startswith('%%'): md = True new_cell = True - if line.endswith('%%'): - # This is a special case that simply means break up the code here: - source = None - else: - source = '##' + line.split('%%')[1] + source = line.split('%%')[1] + elif line.startswith('%'): md = True new_cell = False source = line.split('%')[1] + + elif line == '\n': + md = False + new_cell = True + source = "" else: md = False new_cell = False @@ -45,52 +39,63 @@ def format_line(line): return new_cell, md, source -def convert_m_file(mfile, outfile=None): +def mfile_to_lines(mfile): """ - Convert a Matlab m-file into a Matlab notebook in ipynb format + Read the lines from an mfile Parameters ---------- mfile : string - Full path to a matlab m file to convert - - outfile : string (optional) - Full path to the output ipynb file - + Full path to an m file """ # We should only be able to read this file: f = file(mfile, 'r') - cells = [] - for l in f.readlines(): - new_cell, md, source = format_line(l) - source = l - while not new_cell: + lines = f.readlines() + f.close() + return lines - if md: - source.join(md) - else: - source.join(l) +def lines_to_notebook(lines, name=None): + """ - while md is not None and new_cell is False: - source.join(md) - new_cell, md = format_line(l) + """ + source = [] + md = np.empty(len(lines), dtype=object) + new_cell = np.empty(len(lines), dtype=object) + for idx, l in enumerate(lines): + new_cell[idx], md[idx], this_source = format_line(l) + source.append(this_source) + # This defines the breaking points between cells: + new_cell_idx = np.hstack([np.where(new_cell)[0], -1]) + + # Listify the sources: + cell_source = [source[new_cell_idx[i]:new_cell_idx[i+1]] + for i in range(len(new_cell_idx)-1)][0] + cells = [] + for cell_idx, cell_s in enumerate(cell_source): + if md[cell_idx]: + cells.append(nbformat.new_text_cell('markdown', cell_s)) + else: + cells.append(nbformat.new_code_cell(cell_s, language='matlab')) - cells.append(nbformat.new_text_cell('markdown', source=source)) + ws = nbformat.new_worksheet(cells=cells) + notebook = nbformat.new_notebook(metadata=nbformat.new_metadata(), + worksheets=[ws]) + return notebook - md=False - else: - while l[0] != '%': - source += l - cells.append(nbformat.new_code_cell(input=source, - language=u'matlab')) +def convert_mfile(mfile, outfile=None): + """ + Convert a Matlab m-file into a Matlab notebook in ipynb format - f.close() + Parameters + ---------- + mfile : string + Full path to a matlab m file to convert - notebook = nbformat.new_notebook( - metadata=nbformat.new_metadata(name=fname.split), - worksheets=cells) + outfile : string (optional) + Full path to the output ipynb file - if outfile is None + """ + if outfile is None: outfile = fname.split('.m')[0] + '.ipynb' nbfile = file(outfile, 'w') nbformat.write(notebook, nbfile, format='ipynb') diff --git a/pymatbridge/tests/test_publish.py b/pymatbridge/tests/test_publish.py new file mode 100644 index 0000000..aaebe8f --- /dev/null +++ b/pymatbridge/tests/test_publish.py @@ -0,0 +1,39 @@ +import numpy.testing as npt +import pymatbridge.publish as publish + +def test_format_line(): + """ + Test that lines get formatted properly + + """ + npt.assert_equal(publish.format_line('%% This begins a new cell'), + (True, True, ' This begins a new cell')) + + npt.assert_equal(publish.format_line('% This should be just markdown'), + (False, True, ' This should be just markdown')) + + npt.assert_equal(publish.format_line('This is just code'), + (False, False, 'This is just code')) + + # Special case: empty lines are interpreted as a signal to start a new + # cell: + npt.assert_equal(publish.format_line('\n'), + (True, False, '')) + + +def test_lines_to_notebook(): + """ + Test that conversion of some lines gives you a proper notebook + """ + + lines = ["%% This is a first line\n", + "\n", + "% This should be in another cell\n", + "a = 1; % This is code\n", + "b = 2; % This is also code\n", + "c = 3; % code in another cell\n"] + + nb = publish.lines_to_notebook(lines) + + npt.assert_equal(nb['worksheets'][0]['cells'][0]['source'], + ' This is a first line\n') From 1c5835f6ce9e17dd90c4a4ecdea7d3b0be599cbc Mon Sep 17 00:00:00 2001 From: arokem Date: Fri, 21 Feb 2014 15:24:27 -0800 Subject: [PATCH 003/308] RF: Some more futzing around with the 'publish' library. --- pymatbridge/publish.py | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/pymatbridge/publish.py b/pymatbridge/publish.py index 6c55165..831b972 100644 --- a/pymatbridge/publish.py +++ b/pymatbridge/publish.py @@ -21,17 +21,14 @@ def format_line(line): if line.startswith('%%'): md = True new_cell = True - source = line.split('%%')[1] + source = line.split('%%')[1] + '\n' # line-breaks in md require a line + # gap! elif line.startswith('%'): md = True new_cell = False - source = line.split('%')[1] + source = line.split('%')[1] + '\n' - elif line == '\n': - md = False - new_cell = True - source = "" else: md = False new_cell = False @@ -56,6 +53,18 @@ def mfile_to_lines(mfile): def lines_to_notebook(lines, name=None): """ + Convert the lines of an m file into an IPython notebook + + Parameters + ---------- + lines : list + A list of strings. Each element is a line in the m file + + Returns + ------- + notebook : an IPython NotebookNode class instance, containing the + information required to create a file + """ source = [] @@ -63,13 +72,21 @@ def lines_to_notebook(lines, name=None): new_cell = np.empty(len(lines), dtype=object) for idx, l in enumerate(lines): new_cell[idx], md[idx], this_source = format_line(l) + # Transitions between markdown and code and vice-versa merit a new + # cell, even if no newline, or "%%" is found. Make sure not to do this + # check for the very first line! + if idx>1 and not new_cell[idx]: + if md[idx] != md[idx-1]: + new_cell[idx] = True + source.append(this_source) # This defines the breaking points between cells: new_cell_idx = np.hstack([np.where(new_cell)[0], -1]) # Listify the sources: cell_source = [source[new_cell_idx[i]:new_cell_idx[i+1]] - for i in range(len(new_cell_idx)-1)][0] + for i in range(len(new_cell_idx)-1)] + cells = [] for cell_idx, cell_s in enumerate(cell_source): if md[cell_idx]: @@ -95,8 +112,14 @@ def convert_mfile(mfile, outfile=None): Full path to the output ipynb file """ + f = file(mfile, 'r') + lines = f.readlines() + f.close() + nb =lines_to_notebook(lines) if outfile is None: - outfile = fname.split('.m')[0] + '.ipynb' + outfile = mfile.split('.m')[0] + '.ipynb' nbfile = file(outfile, 'w') - nbformat.write(notebook, nbfile, format='ipynb') + nbformat.write(nb, nbfile, format='ipynb') nbfile.close() + + From b4c5f60bf7e77812a1a810d950561e3354def442 Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 23 Feb 2014 15:16:05 -0800 Subject: [PATCH 004/308] RF: Some installation cleanup. --- .gitignore | 2 -- bin/publish-notebook | 17 +++++++++++++++++ pymatbridge/publish.py | 4 ++-- pymatbridge/version.py | 2 ++ setup.py | 13 +++---------- 5 files changed, 24 insertions(+), 14 deletions(-) create mode 100755 bin/publish-notebook diff --git a/.gitignore b/.gitignore index bb42edb..2508cf6 100644 --- a/.gitignore +++ b/.gitignore @@ -22,8 +22,6 @@ ADME.markdown *~ build -# a log directory made for testing. -pymatbridge/matlab/www/log/ # a nonce file to push this package to our local system. dpush.sh diff --git a/bin/publish-notebook b/bin/publish-notebook new file mode 100755 index 0000000..14e57c5 --- /dev/null +++ b/bin/publish-notebook @@ -0,0 +1,17 @@ +#!/usr/bin/env python +import argparse as arg +import pymatbridge.publish as publish + +parser = arg.ArgumentParser(description='Publish a matlab file (.m) as an interactive notebook (.ipynb)') + +parser.add_argument('mfile', action='store', metavar='File', + help='Matlab m-file (.m)') + +parser.add_argument('--outfile', action='store', metavar='File', + help='Output notebook (.ipynb). Default: same name and location as the input file ', default=None) + +params = parser.parse_args() + + +if __name__ == "__main__": + publish.convert_mfile(params.mfile, params.outfile) diff --git a/pymatbridge/publish.py b/pymatbridge/publish.py index 831b972..e9e62f2 100644 --- a/pymatbridge/publish.py +++ b/pymatbridge/publish.py @@ -99,6 +99,7 @@ def lines_to_notebook(lines, name=None): worksheets=[ws]) return notebook + def convert_mfile(mfile, outfile=None): """ Convert a Matlab m-file into a Matlab notebook in ipynb format @@ -115,11 +116,10 @@ def convert_mfile(mfile, outfile=None): f = file(mfile, 'r') lines = f.readlines() f.close() - nb =lines_to_notebook(lines) + nb = lines_to_notebook(lines) if outfile is None: outfile = mfile.split('.m')[0] + '.ipynb' nbfile = file(outfile, 'w') nbformat.write(nb, nbfile, format='ipynb') nbfile.close() - diff --git a/pymatbridge/version.py b/pymatbridge/version.py index bd511ce..420bd94 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -96,3 +96,5 @@ "tests/*.py", "examples/*.ipynb"]} REQUIRES = [] + +BIN='bin/' diff --git a/setup.py b/setup.py index bc27f56..fbb18c9 100755 --- a/setup.py +++ b/setup.py @@ -52,20 +52,13 @@ platforms=PLATFORMS, version=VERSION, packages=PACKAGES, + package_dir=PACKAGE_DIR, package_data=PACKAGE_DATA, + #data_files=DATA_FILES, requires=REQUIRES, + scripts=[BIN + x for x in os.listdir(BIN)] ) -# For some commands, use setuptools. Note that we do NOT list install here! -# If you want a setuptools-enhanced install, just run 'setupegg.py install' -needs_setuptools = set(('develop', )) -if len(needs_setuptools.intersection(sys.argv)) > 0: - import setuptools - -# Only add setuptools-specific flags if the user called for setuptools, but -# otherwise leave it alone -if 'setuptools' in sys.modules: - opts['zip_safe'] = False # Now call the actual setup function if __name__ == '__main__': From dfd4942b7fa918dac08e7fabd319d3dd7f327821 Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 23 Feb 2014 15:40:53 -0800 Subject: [PATCH 005/308] Added a matlab function to publish an m file into a matlab notebook in ipynb This still doesn't quite work, because matlab path-setting is weird. --- .../matlab/util}/publish-notebook | 0 pymatbridge/matlab/util/publish_notebook.m | 23 +++++++++++++++++++ pymatbridge/version.py | 2 +- setup.py | 2 +- 4 files changed, 25 insertions(+), 2 deletions(-) rename {bin => pymatbridge/matlab/util}/publish-notebook (100%) create mode 100644 pymatbridge/matlab/util/publish_notebook.m diff --git a/bin/publish-notebook b/pymatbridge/matlab/util/publish-notebook similarity index 100% rename from bin/publish-notebook rename to pymatbridge/matlab/util/publish-notebook diff --git a/pymatbridge/matlab/util/publish_notebook.m b/pymatbridge/matlab/util/publish_notebook.m new file mode 100644 index 0000000..5525531 --- /dev/null +++ b/pymatbridge/matlab/util/publish_notebook.m @@ -0,0 +1,23 @@ +function publish_notebook(mfile, varargin) +% function publish_notebook(mfile, [outputfile]) +% +% Publish a Matlab m file as an interactive notebook in .ipynb format +% +% Parameters +% ---------- +% mfile : str +% Full path to the input m file. +% outputfile + +if length(varargin) + outputfile = varargin{1}; +else + outputfile = ''; +end + +% Matlab system path-setting is broken, so we place the +% publish-notebook executable right here, so we can easily find it +binpath = fileparts(which(mfilename)); +cmd_str = sprintf('%s/publish-notebook %s %s', binpath, mfile, outputfile); + +[status,result] = unix(cmd_str) \ No newline at end of file diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 420bd94..b45297f 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -97,4 +97,4 @@ REQUIRES = [] -BIN='bin/' +BIN=['pymatbridge/matlab/util/publish-notebook'] diff --git a/setup.py b/setup.py index fbb18c9..511f04f 100755 --- a/setup.py +++ b/setup.py @@ -56,7 +56,7 @@ package_data=PACKAGE_DATA, #data_files=DATA_FILES, requires=REQUIRES, - scripts=[BIN + x for x in os.listdir(BIN)] + scripts=BIN ) From 71dc6774142d1c023fa38ad0434be6cfd8ce278f Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 11 Mar 2014 16:42:05 -0700 Subject: [PATCH 006/308] TST: Added testing of the publish module. --- pymatbridge/tests/test_publish.m | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 pymatbridge/tests/test_publish.m diff --git a/pymatbridge/tests/test_publish.m b/pymatbridge/tests/test_publish.m new file mode 100644 index 0000000..2590b0c --- /dev/null +++ b/pymatbridge/tests/test_publish.m @@ -0,0 +1,14 @@ +%% Experimenting with conversion from matlab to ipynb +% This is a second comment line within the header block +% Next, I will put in an empty line (new cell?) and then some code + +% This is some code: +t = linspace(1, 6*pi, 100); +a = sin(t); +plot(a) +grid on + +%% A new cell +b = cos(t); +plot(b); +b(1:10) % What happens if you print to the command line? \ No newline at end of file From 2247bba0e068c1d799a0004db024864b4b169e4a Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Wed, 26 Mar 2014 14:42:43 -0700 Subject: [PATCH 007/308] Add --silent option for text output in magic Sometimes MATLAB functions print quite a bit of text to stdout. This flag prevents this from being rendered in the Notebook. In this example, the output from forgetting semicolons will not be displayed: ``` %%matlab --silent -o x a = [1, 2, 3] x = a * 3 ``` --- pymatbridge/matlab_magic.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index c019ad7..d459c7b 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -145,6 +145,11 @@ def set_matlab_var(self, name, value): help='Names of variables to be pushed from matlab to shell.user_ns after executing cell body and applying self.Matlab.get_variable(). Multiple names can be passed separated only by commas with no whitespace.' ) + @argument( + '-s', '--silent', action='store_true', + help='Do not display text output of MATLAB command' + ) + @argument( 'code', nargs='*', @@ -219,7 +224,7 @@ def matlab(self, line, cell=None, local_ns=None): data_dir = result_dict['content']['datadir'] display_data = [] - if text_output: + if text_output and not args.silent: display_data.append(('MatlabMagic.matlab', {'text/plain':text_output})) From 4ab93757901b7fb680689f4796372868b35b880e Mon Sep 17 00:00:00 2001 From: arokem Date: Thu, 27 Mar 2014 14:29:42 -0700 Subject: [PATCH 008/308] Increase the default wait time for the magic to start. --- pymatbridge/matlab_magic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index c019ad7..9f8d8e4 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -67,7 +67,7 @@ class MatlabMagics(Magics): """ def __init__(self, shell, matlab='matlab', - maxtime=10, + maxtime=60, pyconverter=np.asarray, cache_display_data=False): """ From c79508e6ab31a2db20f9c33cadb1c530277012ba Mon Sep 17 00:00:00 2001 From: arokem Date: Thu, 27 Mar 2014 14:30:21 -0700 Subject: [PATCH 009/308] TST: Break down the tests a bit, so that we know where F/E are coming from. --- pymatbridge/tests/test_magic.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/pymatbridge/tests/test_magic.py b/pymatbridge/tests/test_magic.py index c8a8eaa..450b108 100644 --- a/pymatbridge/tests/test_magic.py +++ b/pymatbridge/tests/test_magic.py @@ -27,6 +27,7 @@ def test_cell_magic_number(self): npt.assert_almost_equal(self.ip.user_ns['b'], self.ip.user_ns['a']*2, decimal=7) + def test_cell_magic_number_complex(self): # A complex number self.ip.run_cell("x = 3.34+4.56j") self.ip.run_cell_magic('matlab', '-i x -o y', 'y = x*(11.35 - 23.098j)') @@ -35,14 +36,6 @@ def test_cell_magic_number(self): self.ip.user_ns['res'], decimal=7) - # A complex matrix: - self.ip.run_cell("x = [3.34+4.56j, 3.34+4.56j];") - self.ip.run_cell_magic('matlab', '-i x -o y', 'y = x*(11.35 - 23.098j)') - self.ip.run_cell("res = x*(11.35 - 23.098j)") - npt.assert_almost_equal(self.ip.user_ns['y'], - self.ip.user_ns['res'], decimal=7) - - def test_cell_magic_array(self): # Random array multiplication self.ip.run_cell("val1 = np.random.random_sample((3,3))") @@ -53,6 +46,14 @@ def test_cell_magic_array(self): npt.assert_almost_equal(self.ip.user_ns['resmat'], self.ip.user_ns['respy'], decimal=7) + def test_cell_magic_array_complex(self): + self.ip.run_cell("val1 = np.random.random((3,3)) + np.random.random((3,3))*1j") + self.ip.run_cell("val2 = np.random.random((3,3)) + np.random.random((3,3))*1j") + self.ip.run_cell("respy = np.dot(val1, val2)") + self.ip.run_cell_magic('matlab', '-i val1,val2 -o resmat', + 'resmat = val1 * val2') + npt.assert_almost_equal(self.ip.user_ns['resmat'], + self.ip.user_ns['respy'], decimal=7) def test_line_magic(self): # Some operation in Matlab From 64f2ccbefd5851ed655836a03c9e1f5981a54fc4 Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Wed, 26 Mar 2014 22:23:00 -0700 Subject: [PATCH 010/308] Windows support Pymatbridge can be successfully used on Windows. messenger.c now can be compiled into a mex with visual studio --- messenger/src/messenger.c | 26 +++++++++++++------------- pymatbridge/pymatbridge.py | 5 ++++- setup.py | 24 ++++++++++++++---------- 3 files changed, 31 insertions(+), 24 deletions(-) diff --git a/messenger/src/messenger.c b/messenger/src/messenger.c index b9cca29..beb9a03 100644 --- a/messenger/src/messenger.c +++ b/messenger/src/messenger.c @@ -6,15 +6,15 @@ /* Set a 200MB receiver buffer size */ #define BUFLEN 200000000 -void *ctx, *socket; +void *ctx, *socket_ptr; static int initialized = 0; /* Initialize a ZMQ server */ int initialize(char *socket_addr) { - + int rc; ctx = zmq_ctx_new(); - socket = zmq_socket(ctx, ZMQ_REP); - int rc = zmq_bind(socket, socket_addr); + socket_ptr = zmq_socket(ctx, ZMQ_REP); + rc = zmq_bind(socket_ptr, socket_addr); if (!rc) { initialized = 1; @@ -33,7 +33,7 @@ int listen(char *buffer, int buflen) { mexErrMsgTxt("Error: ZMQ session not initialized"); } - return zmq_recv(socket, buffer, buflen, 0); + return zmq_recv(socket_ptr, buffer, buflen, 0); } /* Sending out a message */ @@ -42,17 +42,16 @@ int respond(char *msg_out, int len) { mexErrMsgTxt("Error: ZMQ session not initialized"); } - int bytesent = zmq_send(socket, msg_out, len, 0); + return zmq_send(socket_ptr, msg_out, len, 0); - return bytesent; } /* Cleaning up after session finished */ void cleanup (void) { /* Send a confirmation message to the client */ - zmq_send(socket, "exit", 4, 0); + zmq_send(socket_ptr, "exit", 4, 0); - zmq_close(socket); + zmq_close(socket_ptr); mexPrintf("Socket closed\n"); zmq_term(ctx); mexPrintf("Context terminated\n"); @@ -62,14 +61,13 @@ void cleanup (void) { /* Gateway function with Matlab */ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { - + char *cmd; /* If no input argument, print out the usage */ if (nrhs == 0) { mexErrMsgTxt("Usage: messenger('init|listen|respond', extra1, extra2, ...)"); } /* Get the input command */ - char *cmd; if(!(cmd = mxArrayToString(prhs[0]))) { mexErrMsgTxt("Cannot read the command"); } @@ -123,6 +121,8 @@ void mexFunction(int nlhs, mxArray *plhs[], /* Send a message out */ } else if (strcmp(cmd, "respond") == 0) { + size_t msglen; + char *msg_out; mxLogical *p; /* Check if the input format is valid */ @@ -130,8 +130,8 @@ void mexFunction(int nlhs, mxArray *plhs[], mexErrMsgTxt("Please provide the message to send"); } - size_t msglen = mxGetNumberOfElements(prhs[1]); - char *msg_out = mxArrayToString(prhs[1]); + msglen = mxGetNumberOfElements(prhs[1]); + msg_out = mxArrayToString(prhs[1]); plhs[0] = mxCreateLogicalMatrix(1, 1); p = mxGetLogicals(plhs[0]); diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 5a135db..e3003f8 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -57,7 +57,7 @@ class Matlab(object): A class for communicating with a matlab session """ - def __init__(self, matlab='matlab', socket_addr='ipc:///tmp/pymatbridge', + def __init__(self, matlab='matlab', socket_addr=None, id='python-matlab-bridge', log=False, maxtime=60, platform=None, startup_options=None): """ @@ -104,6 +104,9 @@ def __init__(self, matlab='matlab', socket_addr='ipc:///tmp/pymatbridge', else: self.platform = platform + if self.socket_addr is None: # use the default + self.socket_addr = "tcp://127.0.0.1:55555" if self.platform == "win32" else "ipc:///tmp/pymatbridge" + if startup_options: self.startup_options = startup_options elif self.platform == 'Windows': diff --git a/setup.py b/setup.py index bc27f56..d435232 100755 --- a/setup.py +++ b/setup.py @@ -13,27 +13,31 @@ from distutils.core import setup # Find the messenger binary file and copy it to /matlab folder. -bin_location = "" + +def copy_bin(bin_path): + if os.path.exists(bin_path): + shutil.copy(bin_path, "./pymatbridge/matlab") + return True + else: + return False + if sys.platform == "darwin": - if not os.path.exists("./messenger/mexmaci64/messenger.mexmaci64"): + if not copy_bin("./messenger/mexmaci64/messenger.mexmaci64"): raise ValueError("messenger.mexmaci64 is not built yet. Please build it yourself.") - bin_location = "./messenger/mexmaci64/messenger.mexmaci64" elif sys.platform == "linux2": - if not os.path.exists("./messenger/mexa64/messenger.mexa64"): + if not copy_bin("./messenger/mexa64/messenger.mexa64"): raise ValueError("messenger.mexa64 is not built yet. Please build it yourself.") - bin_location = "./messenger/mexa64/messenger.mexa64" elif sys.platform == "win32": - if not os.path.exists("./messenger/mexw32/messenger.mexw32"): - raise ValueError("messenger.mexw32 is not built yet. Please build it yourself.") - bin_location = "./messenger/mexw32/messenger.mexw32" + t1 = copy_bin("./messenger/mexw64/messenger.mexw64") + t2 = copy_bin("./messenger/mexw32/messenger.mexw32") + if not (t1 or t2): + raise ValueError("Neither messenger.mexw32 or mex264 is built yet. Please build the appropriate one yourself") else: raise ValueError("Known platform") -shutil.copy(bin_location, "./pymatbridge/matlab") - # Get version and release info, which is all stored in pymatbridge/version.py ver_file = os.path.join('pymatbridge', 'version.py') execfile(ver_file) From ca59b30b136ae40dabfd7382c3b45a7245da003c Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Fri, 28 Mar 2014 14:13:18 -0700 Subject: [PATCH 011/308] add windows binary MATLAB messenger (mexw64) --- messenger/mexw64/messenger.mexw64 | Bin 0 -> 8704 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 messenger/mexw64/messenger.mexw64 diff --git a/messenger/mexw64/messenger.mexw64 b/messenger/mexw64/messenger.mexw64 new file mode 100644 index 0000000000000000000000000000000000000000..9952c40598f0859d3e5eada21dacfbc7d5972e5f GIT binary patch literal 8704 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 LUZ1v4Tm=3HqKR~- literal 0 HcmV?d00001 From a7afee936c3aa6241f0847dfa7535aa28228a2b1 Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Fri, 28 Mar 2014 14:41:07 -0700 Subject: [PATCH 012/308] Add windows installation instructions to README.md --- README.md | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 47dee20..2c504cd 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,6 @@ extension, which provides a simple interface for weaving python and Matlab code together (requires ipython > 0.13). -***AT PRESENT THIS DOES NOT WORK ON WINDOWS*** - ## Installation Pymatbridge communicates with Matlab using zeromq. So before installing @@ -25,11 +23,11 @@ build and install zmq. After zmq is installed, make sure you can find the locati libzmq is installed. The library extension name and default location on different systems are listed below. -| Platform | library name | Default locations | -| ------------- | ------------- | -------------------------- | -| MacOS | libzmq.dylib | /usr/lib or /usr/local/lib | -| Linux | libzmq.so.3 | /usr/lib or /usr/local/lib | -| Windows | libzmq.dll | TBD | +| Platform | library name | Default locations | +| ------------- | ------------- | --------------------------------- | +| MacOS | libzmq.dylib | /usr/lib or /usr/local/lib | +| Linux | libzmq.so.3 | /usr/lib or /usr/local/lib | +| Windows | libzmq.dll | C:\Program Files\ZeroMQ 3.2.4\bin | If you specified a prefix when installing zmq, the library file should be located at the same prefix location. @@ -43,9 +41,7 @@ On Linux, add the following line to your .bash_profile: export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH: -On Windows, - - TBD +On Windows, add the install location of libzmq.dll to the PATH environmental variable. ### Install pyzmq After step 1 is finished, please grab the latest version of @@ -131,9 +127,7 @@ sessions by adding code to the `~/startup.m` file. The Matlab magic allows you to use pymatbridge in the context of the IPython notebook format. - import pymatbridge as pymat - ip = get_ipython() - pymat.load_ipython_extension(ip) + %load_ext pymatbridge These lines will automatically start the matlab session for you. Then, you can simply decorate a line/cell with the '%matlab' or '%%matlab' decorator and From cbe2410fd135b178287669d95dd96888d5d218ef Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Fri, 28 Mar 2014 14:48:50 -0700 Subject: [PATCH 013/308] Update README.md Explain how to edit environment variable on windows. --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2c504cd..2e1a852 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,9 @@ On Linux, add the following line to your .bash_profile: export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH: -On Windows, add the install location of libzmq.dll to the PATH environmental variable. +On Windows, add the install location of libzmq.dll to the PATH environment variable. +On Windows 7+, typing "environment variables" into the start menu will bring up the +apporpriate Control Panel links. ### Install pyzmq After step 1 is finished, please grab the latest version of From c5002cdd964574510591dcf1b061cfe7e9c62bab Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Fri, 28 Mar 2014 15:13:08 -0700 Subject: [PATCH 014/308] prevent windows from being spawned on windows Command line options were checking for sys.platform being "Windows", not "win32" --- pymatbridge/pymatbridge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index e3003f8..909df21 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -109,7 +109,7 @@ def __init__(self, matlab='matlab', socket_addr=None, if startup_options: self.startup_options = startup_options - elif self.platform == 'Windows': + elif self.platform == 'win32': self.startup_options = ' -automation -noFigureWindows' else: self.startup_options = ' -nodesktop -nodisplay' From e9672eae98751854feb4b849f18caa48c49c45e4 Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Fri, 28 Mar 2014 16:24:09 -0700 Subject: [PATCH 015/308] unload_ext behaves correctly Set _loaded to False on unload so the module can be reloaded later. --- pymatbridge/matlab_magic.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index 0d61599..384bc13 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -264,4 +264,5 @@ def unload_ipython_extension(ip): if _loaded: magic = ip.magics_manager.registry.pop('MatlabMagics') magic.Matlab.stop() + _loaded = False From 8b82f49886a3ee8baea7f043fc9096f5433ba4a0 Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Fri, 28 Mar 2014 16:25:51 -0700 Subject: [PATCH 016/308] ignore files from python setup.py develop --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index bb42edb..817d16f 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,6 @@ rebuildTags.sh # binary file in matlab folder /pymatbridge/matlab/messenger.* + +# caused py setup.py develop +pymatbridge.egg-info From e5a5d9ab0c2980796dcdde243537bcc0fd9f1f5b Mon Sep 17 00:00:00 2001 From: haoxingz Date: Tue, 1 Apr 2014 09:10:01 -0700 Subject: [PATCH 017/308] Make the package installable --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 511f04f..8b68ae5 100755 --- a/setup.py +++ b/setup.py @@ -52,7 +52,7 @@ platforms=PLATFORMS, version=VERSION, packages=PACKAGES, - package_dir=PACKAGE_DIR, + #package_dir=PACKAGE_DIR, package_data=PACKAGE_DATA, #data_files=DATA_FILES, requires=REQUIRES, From a58d7672955f358607065aeeb8d34fb715fa7ff5 Mon Sep 17 00:00:00 2001 From: haoxingz Date: Tue, 1 Apr 2014 09:16:44 -0700 Subject: [PATCH 018/308] Modified __init__.py so that publish is now importable --- pymatbridge/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/__init__.py b/pymatbridge/__init__.py index 3ad8122..c417dd0 100644 --- a/pymatbridge/__init__.py +++ b/pymatbridge/__init__.py @@ -1,5 +1,5 @@ from pymatbridge import * - +from publish import * try: from matlab_magic import * except ImportError: From 2e07fee2a4e587055c5ac65f159097d55147e774 Mon Sep 17 00:00:00 2001 From: haoxingz Date: Tue, 1 Apr 2014 10:31:31 -0700 Subject: [PATCH 019/308] Added publish-notebook to installation --- pymatbridge/version.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index b45297f..083df42 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -88,6 +88,7 @@ PACKAGES = ['pymatbridge'] PACKAGE_DATA = {"pymatbridge": ["matlab/matlabserver.m", "matlab/messenger.*", "matlab/usrprog/*", "matlab/util/*.m", + "matlab/util/publish-notebook", "matlab/util/json_v0.2.2/LICENSE", "matlab/util/json_v0.2.2/README.md", "matlab/util/json_v0.2.2/test/*", From 9f58e3d5ae52648e0b8cf6db545d3cf669e69ad8 Mon Sep 17 00:00:00 2001 From: haoxingz Date: Wed, 2 Apr 2014 10:36:22 -0700 Subject: [PATCH 020/308] Set PYTHONPATH before calling publish-notebook in matlab --- pymatbridge/matlab/util/publish_notebook.m | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pymatbridge/matlab/util/publish_notebook.m b/pymatbridge/matlab/util/publish_notebook.m index 5525531..a627f3e 100644 --- a/pymatbridge/matlab/util/publish_notebook.m +++ b/pymatbridge/matlab/util/publish_notebook.m @@ -8,9 +8,10 @@ function publish_notebook(mfile, varargin) % mfile : str % Full path to the input m file. % outputfile +% Full path to the output .ipynb file if length(varargin) - outputfile = varargin{1}; + outputfile = sprintf('--outfile %s', varargin{1}); else outputfile = ''; end @@ -18,6 +19,8 @@ function publish_notebook(mfile, varargin) % Matlab system path-setting is broken, so we place the % publish-notebook executable right here, so we can easily find it binpath = fileparts(which(mfilename)); +pkgpath = fileparts(fileparts(fileparts(binpath))); cmd_str = sprintf('%s/publish-notebook %s %s', binpath, mfile, outputfile); -[status,result] = unix(cmd_str) \ No newline at end of file +setenv('PYTHONPATH', pkgpath); +[status,result] = system(cmd_str) From 1fb21a93c3478f7cc92f760a56da3bb0909c4cef Mon Sep 17 00:00:00 2001 From: haoxingz Date: Wed, 2 Apr 2014 10:37:57 -0700 Subject: [PATCH 021/308] Cleanup --- setup.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/setup.py b/setup.py index 8b68ae5..7b92faa 100755 --- a/setup.py +++ b/setup.py @@ -52,9 +52,7 @@ platforms=PLATFORMS, version=VERSION, packages=PACKAGES, - #package_dir=PACKAGE_DIR, package_data=PACKAGE_DATA, - #data_files=DATA_FILES, requires=REQUIRES, scripts=BIN ) From 95e14f2602eaaa9c0ed5c48dbcae61b4902b97a2 Mon Sep 17 00:00:00 2001 From: arokem Date: Wed, 2 Apr 2014 11:48:27 -0700 Subject: [PATCH 022/308] TST: Updating the tests to reflect RF of the publish code. --- pymatbridge/tests/test_publish.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/pymatbridge/tests/test_publish.py b/pymatbridge/tests/test_publish.py index aaebe8f..797c0c5 100644 --- a/pymatbridge/tests/test_publish.py +++ b/pymatbridge/tests/test_publish.py @@ -7,19 +7,14 @@ def test_format_line(): """ npt.assert_equal(publish.format_line('%% This begins a new cell'), - (True, True, ' This begins a new cell')) + (True, True, ' This begins a new cell\n')) npt.assert_equal(publish.format_line('% This should be just markdown'), - (False, True, ' This should be just markdown')) + (False, True, ' This should be just markdown\n')) npt.assert_equal(publish.format_line('This is just code'), (False, False, 'This is just code')) - # Special case: empty lines are interpreted as a signal to start a new - # cell: - npt.assert_equal(publish.format_line('\n'), - (True, False, '')) - def test_lines_to_notebook(): """ @@ -35,5 +30,5 @@ def test_lines_to_notebook(): nb = publish.lines_to_notebook(lines) - npt.assert_equal(nb['worksheets'][0]['cells'][0]['source'], - ' This is a first line\n') + npt.assert_equal(nb['worksheets'][0]['cells'][0]['source'][0], + ' This is a first line\n\n') From 8ad3e024d544c79329eb8411d173763c6a3f4b49 Mon Sep 17 00:00:00 2001 From: arokem Date: Wed, 2 Apr 2014 15:44:37 -0700 Subject: [PATCH 023/308] RF: Point to the right bin directory for notebook conversion. --- pymatbridge/matlab/util/publish_notebook.m | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/pymatbridge/matlab/util/publish_notebook.m b/pymatbridge/matlab/util/publish_notebook.m index a627f3e..85657cb 100644 --- a/pymatbridge/matlab/util/publish_notebook.m +++ b/pymatbridge/matlab/util/publish_notebook.m @@ -18,9 +18,21 @@ function publish_notebook(mfile, varargin) % Matlab system path-setting is broken, so we place the % publish-notebook executable right here, so we can easily find it -binpath = fileparts(which(mfilename)); -pkgpath = fileparts(fileparts(fileparts(binpath))); -cmd_str = sprintf('%s/publish-notebook %s %s', binpath, mfile, outputfile); +libpath = fileparts(which(mfilename)); +prefix = strsplit(libpath, 'lib'); +binpath = strcat(prefix(1), 'bin'); +cmd_str = sprintf('publish-notebook %s %s', mfile, outputfile); + +setenv('PATH', sprintf('%s:%s', binpath{1}, getenv('PATH'))); +[status, result] = system(cmd_str); + +if status == 0 + disp('Conversion completed'); +else + disp(sprintf('There was a problem converting the file %s:', mfile)); + disp(result) +end + + + -setenv('PYTHONPATH', pkgpath); -[status,result] = system(cmd_str) From 7d187c386b1a66edd0770132e40d3ebd0532707f Mon Sep 17 00:00:00 2001 From: arokem Date: Wed, 2 Apr 2014 15:45:11 -0700 Subject: [PATCH 024/308] RF Installation of the publish script --- pymatbridge/version.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 083df42..eb7400d 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -88,7 +88,6 @@ PACKAGES = ['pymatbridge'] PACKAGE_DATA = {"pymatbridge": ["matlab/matlabserver.m", "matlab/messenger.*", "matlab/usrprog/*", "matlab/util/*.m", - "matlab/util/publish-notebook", "matlab/util/json_v0.2.2/LICENSE", "matlab/util/json_v0.2.2/README.md", "matlab/util/json_v0.2.2/test/*", @@ -97,5 +96,4 @@ "tests/*.py", "examples/*.ipynb"]} REQUIRES = [] - -BIN=['pymatbridge/matlab/util/publish-notebook'] +BIN=['scripts/publish-notebook'] From 122c57ff51de95a6aa9b0fc69b153d157cfc5afb Mon Sep 17 00:00:00 2001 From: arokem Date: Wed, 2 Apr 2014 15:47:00 -0700 Subject: [PATCH 025/308] BF: Make sure that the cell is correctly identified as markdown/code. --- pymatbridge/publish.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pymatbridge/publish.py b/pymatbridge/publish.py index e9e62f2..bcfb2a9 100644 --- a/pymatbridge/publish.py +++ b/pymatbridge/publish.py @@ -28,14 +28,16 @@ def format_line(line): md = True new_cell = False source = line.split('%')[1] + '\n' - + else: md = False new_cell = False source = line + return new_cell, md, source + def mfile_to_lines(mfile): """ Read the lines from an mfile @@ -86,10 +88,10 @@ def lines_to_notebook(lines, name=None): # Listify the sources: cell_source = [source[new_cell_idx[i]:new_cell_idx[i+1]] for i in range(len(new_cell_idx)-1)] - + cell_md = [md[new_cell_idx[i]] for i in range(len(new_cell_idx)-1)] cells = [] for cell_idx, cell_s in enumerate(cell_source): - if md[cell_idx]: + if cell_md[cell_idx]: cells.append(nbformat.new_text_cell('markdown', cell_s)) else: cells.append(nbformat.new_code_cell(cell_s, language='matlab')) From 0552ac7ffeaa7396ec9adcb6dd4bd1089beb8ac3 Mon Sep 17 00:00:00 2001 From: arokem Date: Wed, 2 Apr 2014 15:47:32 -0700 Subject: [PATCH 026/308] Moved the publish executable to another directory (scripts). --- {pymatbridge/matlab/util => scripts}/publish-notebook | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {pymatbridge/matlab/util => scripts}/publish-notebook (100%) diff --git a/pymatbridge/matlab/util/publish-notebook b/scripts/publish-notebook similarity index 100% rename from pymatbridge/matlab/util/publish-notebook rename to scripts/publish-notebook From 57f0c9cc41e8f480a340851196abad8abe1a14a7 Mon Sep 17 00:00:00 2001 From: haoxingz Date: Wed, 2 Apr 2014 16:07:02 -0700 Subject: [PATCH 027/308] Prepended each notebook with import information --- pymatbridge/publish.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pymatbridge/publish.py b/pymatbridge/publish.py index bcfb2a9..1acc593 100644 --- a/pymatbridge/publish.py +++ b/pymatbridge/publish.py @@ -28,13 +28,13 @@ def format_line(line): md = True new_cell = False source = line.split('%')[1] + '\n' - + else: md = False new_cell = False source = line - + return new_cell, md, source @@ -90,6 +90,12 @@ def lines_to_notebook(lines, name=None): for i in range(len(new_cell_idx)-1)] cell_md = [md[new_cell_idx[i]] for i in range(len(new_cell_idx)-1)] cells = [] + + # Append the notebook with loading matlab magic extension + notebook_head = "import pymatbridge as pymat\n" + "ip = get_ipython()\n" \ + + "pymat.load_ipython_extension(ip)" + cells.append(nbformat.new_code_cell(notebook_head, language='python')) + for cell_idx, cell_s in enumerate(cell_source): if cell_md[cell_idx]: cells.append(nbformat.new_text_cell('markdown', cell_s)) From ccbe7c0e8cabd291b5ba833868a7b11bdc40c445 Mon Sep 17 00:00:00 2001 From: haoxingz Date: Wed, 2 Apr 2014 16:11:40 -0700 Subject: [PATCH 028/308] Prepend each code cell with '%%matlab' --- pymatbridge/publish.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pymatbridge/publish.py b/pymatbridge/publish.py index 1acc593..5843795 100644 --- a/pymatbridge/publish.py +++ b/pymatbridge/publish.py @@ -100,6 +100,7 @@ def lines_to_notebook(lines, name=None): if cell_md[cell_idx]: cells.append(nbformat.new_text_cell('markdown', cell_s)) else: + cell_s.insert(0, '%%matlab\n') cells.append(nbformat.new_code_cell(cell_s, language='matlab')) ws = nbformat.new_worksheet(cells=cells) From 5bcd78c5191d5b74d09e7a87021eb4fcaed9b929 Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 4 Apr 2014 14:14:54 +0200 Subject: [PATCH 029/308] Fix publish.py IPython import Error and make Python3 ready Fix Error when importing pymatbridge and IPython is not installed. Change setup.py and __init__.py to make pymatbridge Python3 ready. --- pymatbridge/__init__.py | 11 ++++++++--- setup.py | 3 +-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/pymatbridge/__init__.py b/pymatbridge/__init__.py index c417dd0..6d1824c 100644 --- a/pymatbridge/__init__.py +++ b/pymatbridge/__init__.py @@ -1,6 +1,11 @@ -from pymatbridge import * -from publish import * +from .pymatbridge import * + try: - from matlab_magic import * + from .publish import * +except ImportError: + pass + +try: + from .matlab_magic import * except ImportError: pass diff --git a/setup.py b/setup.py index 967847a..9b39160 100755 --- a/setup.py +++ b/setup.py @@ -40,8 +40,7 @@ def copy_bin(bin_path): # Get version and release info, which is all stored in pymatbridge/version.py ver_file = os.path.join('pymatbridge', 'version.py') -execfile(ver_file) - +exec(open(ver_file).read()) opts = dict(name=NAME, maintainer=MAINTAINER, maintainer_email=MAINTAINER_EMAIL, From 68c34dc46a98a647b91d0e93dca7dac2e3a27e54 Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 4 Apr 2014 14:20:25 +0200 Subject: [PATCH 030/308] Revert "Fix publish.py IPython import Error and make Python3 ready" This reverts commit 5bcd78c5191d5b74d09e7a87021eb4fcaed9b929. --- pymatbridge/__init__.py | 11 +++-------- setup.py | 3 ++- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/pymatbridge/__init__.py b/pymatbridge/__init__.py index 6d1824c..c417dd0 100644 --- a/pymatbridge/__init__.py +++ b/pymatbridge/__init__.py @@ -1,11 +1,6 @@ -from .pymatbridge import * - +from pymatbridge import * +from publish import * try: - from .publish import * -except ImportError: - pass - -try: - from .matlab_magic import * + from matlab_magic import * except ImportError: pass diff --git a/setup.py b/setup.py index 9b39160..967847a 100755 --- a/setup.py +++ b/setup.py @@ -40,7 +40,8 @@ def copy_bin(bin_path): # Get version and release info, which is all stored in pymatbridge/version.py ver_file = os.path.join('pymatbridge', 'version.py') -exec(open(ver_file).read()) +execfile(ver_file) + opts = dict(name=NAME, maintainer=MAINTAINER, maintainer_email=MAINTAINER_EMAIL, From e60bd731b9a4a68240690599b886f2cd4ab1f2a1 Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 4 Apr 2014 14:22:51 +0200 Subject: [PATCH 031/308] Fix #60: publish.py fails if IPython not installed This fix just surrounds the import statement in __init__.py with try except. This prevents publish.py from being imported of IPython is not present. --- pymatbridge/__init__.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pymatbridge/__init__.py b/pymatbridge/__init__.py index c417dd0..d9549ac 100644 --- a/pymatbridge/__init__.py +++ b/pymatbridge/__init__.py @@ -1,5 +1,10 @@ from pymatbridge import * -from publish import * + +try: + from publish import * +except ImportError: + pass + try: from matlab_magic import * except ImportError: From 0a0fdac122379c2b0343c95a834f263616249235 Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 4 Apr 2014 14:25:24 +0200 Subject: [PATCH 032/308] Python3 compatibility This commit fixes two compatibility issues. In setup.py execfile was changed to support Python3 and in __init__.py the imports are now relativ to support the changes made to the import system in Python3. --- pymatbridge/__init__.py | 6 +++--- setup.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pymatbridge/__init__.py b/pymatbridge/__init__.py index d9549ac..7d076cd 100644 --- a/pymatbridge/__init__.py +++ b/pymatbridge/__init__.py @@ -1,11 +1,11 @@ -from pymatbridge import * +from .pymatbridge import * try: - from publish import * + from .publish import * except ImportError: pass try: - from matlab_magic import * + from .matlab_magic import * except ImportError: pass diff --git a/setup.py b/setup.py index 967847a..e1fb31f 100755 --- a/setup.py +++ b/setup.py @@ -40,7 +40,7 @@ def copy_bin(bin_path): # Get version and release info, which is all stored in pymatbridge/version.py ver_file = os.path.join('pymatbridge', 'version.py') -execfile(ver_file) +exec(open(ver_file).read()) opts = dict(name=NAME, maintainer=MAINTAINER, From 54b15078379109470da2ea3d492113d168651771 Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 4 Apr 2014 14:43:21 +0200 Subject: [PATCH 033/308] Fix readme One space was missing on line 86 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2e1a852..ae6a54c 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ and create the connection between your Python interperter and this session: which will return True once connected. - results = mlab.run_code('a=1;') + results = mlab.run_code('a=1;') Should now run that line of code and return a `results` dict into your Python namespace. The `results` dict contains the following fields: From 3ca5a39bbdcb2dd3144d5da29760807a7c53eedd Mon Sep 17 00:00:00 2001 From: arokem Date: Fri, 4 Apr 2014 15:13:18 -0700 Subject: [PATCH 034/308] BF: Run matlab in a pipe (I think). As per: https://github.com/arokem/python-matlab-bridge/issues/41 --- pymatbridge/pymatbridge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 909df21..9e9a347 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -47,7 +47,7 @@ def _run_matlab_server(matlab_bin, matlab_socket_addr, matlab_log, matlab_id, ma if matlab_log: command += ' -logfile ./pymatbridge/logs/matlablog_%s.txt > ./pymatbridge/logs/bashlog_%s.txt' % (matlab_id, matlab_id) - subprocess.Popen(command, shell = True) + subprocess.Popen(command, shell = True, stdin=subprocess.PIPE) return True From 4c5e3734433f8159cccd794211a4d356117b6404 Mon Sep 17 00:00:00 2001 From: arokem Date: Sat, 5 Apr 2014 06:12:22 -0700 Subject: [PATCH 035/308] TST: The test now accomodates the automatic prepending of the magic. --- pymatbridge/tests/test_publish.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/tests/test_publish.py b/pymatbridge/tests/test_publish.py index 797c0c5..9f907c7 100644 --- a/pymatbridge/tests/test_publish.py +++ b/pymatbridge/tests/test_publish.py @@ -30,5 +30,5 @@ def test_lines_to_notebook(): nb = publish.lines_to_notebook(lines) - npt.assert_equal(nb['worksheets'][0]['cells'][0]['source'][0], + npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], ' This is a first line\n\n') From 25733c88cb63ef043e9228c43f8d6dea409d42d3 Mon Sep 17 00:00:00 2001 From: Aron Ahmadia Date: Mon, 14 Apr 2014 22:59:19 -0400 Subject: [PATCH 036/308] Add Cygwin to list of detected platforms --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index e1fb31f..ac70a40 100755 --- a/setup.py +++ b/setup.py @@ -29,14 +29,14 @@ def copy_bin(bin_path): if not copy_bin("./messenger/mexa64/messenger.mexa64"): raise ValueError("messenger.mexa64 is not built yet. Please build it yourself.") -elif sys.platform == "win32": +elif sys.platform in ["win32", "cygwin"]: t1 = copy_bin("./messenger/mexw64/messenger.mexw64") t2 = copy_bin("./messenger/mexw32/messenger.mexw32") if not (t1 or t2): raise ValueError("Neither messenger.mexw32 or mex264 is built yet. Please build the appropriate one yourself") else: - raise ValueError("Known platform") + raise ValueError("Unknown platform") # Get version and release info, which is all stored in pymatbridge/version.py ver_file = os.path.join('pymatbridge', 'version.py') From 0ae390088dfed75638045451497ab438add35d8e Mon Sep 17 00:00:00 2001 From: arokem Date: Sat, 26 Apr 2014 17:44:23 -0700 Subject: [PATCH 037/308] Updated examples --- pymatbridge/examples/matlab_magic.ipynb | 58 +++++++++++++++++++++---- pymatbridge/examples/pymatbridge.ipynb | 12 ++++- 2 files changed, 61 insertions(+), 9 deletions(-) diff --git a/pymatbridge/examples/matlab_magic.ipynb b/pymatbridge/examples/matlab_magic.ipynb index 002e76c..706a97a 100644 --- a/pymatbridge/examples/matlab_magic.ipynb +++ b/pymatbridge/examples/matlab_magic.ipynb @@ -1,7 +1,7 @@ { "metadata": { "name": "", - "signature": "sha256:b7fe332441992a55b1e28dc444bd81f86bbf15a75134d851ec37ce17d19c57e5" + "signature": "sha256:706da63ffdb88862fa10675cd2dd5f3d7e62b9bfb6592877723f4c54f68c2def" }, "nbformat": 3, "nbformat_minor": 0, @@ -38,6 +38,48 @@ "." ] }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "." + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "." + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "." + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "." + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "." + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "." + ] + }, { "output_type": "stream", "stream": "stdout", @@ -74,7 +116,7 @@ "cell_type": "code", "collapsed": false, "input": [ - "%matlab b = 10*cos(a)+30; plot(b); grid on" + "%matlab b = 10*cos(t)+30; plot(b); grid on" ], "language": "python", "metadata": {}, @@ -82,10 +124,10 @@ { "metadata": {}, "output_type": "display_data", - "png": "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\nm0QLgAAAAABJRU5ErkJggg==\n" + "png": "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\nQmCC\n" } ], - "prompt_number": 4 + "prompt_number": 5 }, { "cell_type": "code", @@ -96,19 +138,19 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 8 + "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "%%matlab -i a -o b\n", - "b = a +3;" + "b = a + 3;" ], "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 10 + "prompt_number": 11 }, { "cell_type": "code", @@ -127,7 +169,7 @@ ] } ], - "prompt_number": 11 + "prompt_number": 12 }, { "cell_type": "code", diff --git a/pymatbridge/examples/pymatbridge.ipynb b/pymatbridge/examples/pymatbridge.ipynb index b582827..8d29af9 100644 --- a/pymatbridge/examples/pymatbridge.ipynb +++ b/pymatbridge/examples/pymatbridge.ipynb @@ -1,6 +1,7 @@ { "metadata": { - "name": "pymatbridge" + "name": "", + "signature": "sha256:489c10c337d135069286c01962ed71096fc0a1b8eb43d058effa40be641a8d50" }, "nbformat": 3, "nbformat_minor": 0, @@ -20,6 +21,7 @@ "metadata": {}, "outputs": [ { + "metadata": {}, "output_type": "pyout", "prompt_number": 1, "text": [ @@ -77,6 +79,7 @@ ] }, { + "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ @@ -97,6 +100,7 @@ "metadata": {}, "outputs": [ { + "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ @@ -120,6 +124,7 @@ "metadata": {}, "outputs": [ { + "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ @@ -155,6 +160,7 @@ "metadata": {}, "outputs": [ { + "metadata": {}, "output_type": "display_data", "text": [ "\n", @@ -165,6 +171,7 @@ ] }, { + "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAGwCAIAAADOgk3lAAAACXBIWXMAAAsSAAALEgHS3X78AAAA\nIXRFWHRTb2Z0d2FyZQBBcnRpZmV4IEdob3N0c2NyaXB0IDguNTRTRzzSAAANX0lEQVR4nO3c0XLi\nSBJA0aqJ/v9f1j7QyzAYMAipKjPrnIeJ7vZEKI2FrlPG9G3bGgBk88/sAQBgDwEDICUBAyAlAQMg\nJQEDICUBAyAlAQMgJQEDICUBAyAlAQMgJQEDICUBAyAlAQMgJQEDICUBAyAlAQMgJQEDICUBAyAl\nAQMgJQEDICUBAyAlAQMgJQEDICUBAyAlAQMgJQEDICUBAyAlAQMgpWoB67333mdPAcDpSgWs975t\n27ZtGgZQXqmAAbCOP7MHONhl99q27favAHzoeh2Nq07ALvcPf/45whfhdp7Fx4gwgzGizRBkjAgz\nBBmj99Zab23+o/GaW4gA/Kv3Njug76qzgd2+dmP69y8AGSWqV6sUsKZbAF/IVa/W2vybraeKcDcZ\nIL67eqW4ePoZGMDq0u1eFwIGsLSk9WoCBrCyvPVqAgawrNT1agIGsKbs9WoCBrCgAvVqAgawmhr1\nagIGsJQy9WoCBrCOSvVqAgawiGL1agIGsIJ69WoCBkBSAgZQXMn1qwkYQG1V69UEDKCwwvVqAgZQ\nVe16NQEDKKl8vZqAAdSzQr2agAEUs0i9moABVLJOvZqAAZSxVL2agAHUsFq9moABFLBgvZqAAWS3\nZr2agAGktmy9moAB5LVyvZqAASS1eL2agAFkpF5NwADSUa8LAQPIRL2uBAwgDfW6JWAAOajXHQED\nICUBA0jA+vWTgAFEp14PCRhAaOr1jIABxKVeLwgYQFDq9ZqAAUSkXr8SMIBw1OsdAgYQi3q9ScAA\nAlGv9wkYQBTq9REBAwhBvT4lYADzqdcOAgYwmXrtI2AAM6nXbgIGMI16fUPAAOZQry8JGMAE6vW9\nP7MHOEzv/favm1MDiEq9DlEnYLfFuosZQBzqdZSCtxB779YvgPLqbGDPuLUIxBF2/cp446pawH6u\nX4oFBBG2Xu3HpTJFzwreQgQIKHK9kioVMD/9AmJSrzOUCph6AQGp10lKBQwgGvU6j4ABnEW9TiVg\nAKdQr7MJGMDx1GsAAQM4mHqNIWAAR1KvYQQM4DDqNZKAARxDvQYTMIADqNd4AgbwLfWaQsAAvqJe\nswgYwH7qNZGAAeykXnMJGMAe6jWdgAGQkoABfMz6FYGAAXxGvYIQMIAPqFccAgbwLvUKRcAA3qJe\n0QgYwO/UKyABA/iFesUkYACvqFdYAgbwlHpFJmAAj6lXcAIG8IB6xSdgAPfUKwUBA/gP9cpCwAD+\npV6JCBjAX+qVi4ABtKZeCQkYgHqlJGDA6tQrKQEDlqZeeQkYACkJGLAu61dqAgYsSr2yEzBgRepV\ngIABy1GvGgQMWIt6lSFgwELUqxIBA1ahXsUIGLAE9apHwID61KskAQOKU6+qBAyoTL0KEzCgLPWq\nTcCAmtSrPAEDClKvFQgYUI16LeLP7AGO1Hu//GFz8sKq1GsddTawS722bdu27VoyYCnqtZRSG1i7\nydjsQYDR1Gs1pQJ27Vbv/fbPD/8foBL1+lLGG1elAvaQYkF56vW9u0tlip7V+RkYAEups4HdvnbD\n1gXrsH4tq07Amm7BetRrZW4hAlmp1+IEDEhJvRAwIB/1ogkYkI56cSFgQCbqxZWAAWmoF7cEDMhB\nvbgjYEAC6sVPAgZEp148JGBAaOrFMwIGxKVevCBgQFDqxWsCBkSkXvxKwIBw1It3CBgQi3rxJgED\nAlEv3idgQBTqxUcEDICUBAwIwfrFpwQMmE+92EHAgMnUi30EDJhJvdhNwIBp1ItvCBgwh3rxJQED\nJlAvvidgwGjqxSEEDBhKvTiKgAHjqBcHEjBgEPXiWAIGjKBeHE7AgNOpF2cQMOBc6sVJBAw4kXpx\nHgEDzqJenErAgFOoF2cTMOB46sUAAgYcTL0YQ8AASEnAgCNZvxhGwIDDqBcjCRhwDPViMAEDDqBe\njCdgwLfUiykEDPiKejGLgAH7qRcTCRiwk3oxl4ABe6gX0wkY8DH1IgIBAz6jXgQhYMAH1Is4BAx4\nl3oRyp/ZAxyp93798+Z5BodSL6IpFbCmW3AO9SKgarcQe++3exjwPfUippobWO/9uord9cyKBh9R\nr0Vk/Na/VMAexkmxYDf1WsfdpTJFz+rcQkzxcEMi6kVwdTawbduuDbN1AZRXJ2BNt+A41i/iq3ML\nETiKepGCgAH/oV5kIWDAv9SLRAQM+Eu9yEXAgNbUi4QEDFAvUhIwWJ16kZSAwdLUi7wEDNalXqQm\nYLAo9SI7AYMVqRcFCBgsR72oQcBgLepFGQIGC1EvKhEwWIV6UYyAwRLUi3oEDOpTL0oSMChOvahK\nwKAy9aIwAQMgJQGDsqxf1CZgUJN6UZ6AQUHqxQoEDKpRLxYhYFCKerEOAYM61IulCBgUoV6sRsCg\nAvViQQIG6akXaxIwyE29WJaAQWLqxcoEDLJSLxYnYJCSeoGAQT7qBU3AIB31ggsBg0zUC64EDNJQ\nL7glYJCDesEdAYME1At+EjAAUhIwiM76BQ8JGISmXvCMgEFc6gUvCBgEpV7wmoBBROoFvxIwCEe9\n4B0CBrGoF7xJwCAQ9YL3CRhEoV7wEQGDENQLPiVgMJ96wQ4FA9Z7nz0CfEC9YJ9qAVMvclEv2K1U\nwHrvm4sBeagXfOPP7AFOd7eTKRxBqBehZLx9VWdleRgqOxkBXU5VJyaRpbh41tnAro91isedNUkX\nHKhOwCAy6YLDFQyY9YtQpAtOUjBgEIR0wakEDI4nXTCAgMGRpAuGETA4hnTBYAIG35IumELAYD/p\ngokEDHbyXlAwl4DBxyxeEIGAwQekC+IQMHiLdEE0Aga/kC6IScDgKemCyAQMHpAuiE/A4D+kC7IQ\nMPhLuiAXAQPpgpQEjNV5Qw1ISsBYl8ULUhMwViRdUICAsRbpgjIEjFVIFxQjYNQnXVCSgFGZdEFh\nAkZN0gXlCRjVSBcsQsCoQ7pgKQJGEd5QA1YjYKRn8YI1CRiJSResTMBISboAASMZ6QIuBIw0pAu4\nJWAkIF3ATwJGaNIFPCNgBCVdwGsCRjjSBbxDwIjFG2oAbxIworB4AR8RMOaTLmAHAWMm6QJ2EzDm\nkC7gSwLGaNIFHELAGEe6gAMJGCNIF3A4AeNc0gWcRMA4i3QBpxIwTuENNYCzCRgHs3gBYwgYh5Eu\nYCQB4wDSBYwnYHxFuoBZSgWsX66mrW0uqOeTLmCuUgFr/09X713DziNdQASlAvYwWte17MX/w5uk\nC6q6u1SmUCpg7dHXQLEOIV1Q292lMkXPqgXsegtx9iB1SBcQ0z+zBziMaJ3h8oYa6gUEVGcD27bN\nqxAPZPECgqsTsKZbB5EuIIVSAeNL0gUkImC0Jl1AQgK2OukCkhKwdUkXkJqArUi6gAIEbC3SBZQh\nYKuQLqAYAVvC5Q01ACoRsOIsXkBVAlaWdAG1CVhB0gWsQMBKkS5gHQJWhHQBqxGw9KQLWJOAJSZd\nwMoELCXpAhCwZKQL4ELAMvGGGgBXApaDxQvgjoBFJ10ADwlYXNIF8IKARSRdAL8SsFikC+BNAhaF\ndAF8RMDmky6AHQRsJukC2E3A5pAugC8J2ATeUAPgewI2lMUL4CgCNoh0ARxLwE4nXQBnELATSRfA\neQTsFNIFcDYBO5h0AYwhYIeRLoCRBOwA0gUwnoB9RboAZhGw/byhBsBEAraHxQtgOgH7jHQBBCFg\n75IugFAE7HfSBRCQgL0iXQBhCdhj0gUQnIDdky6AFATsX9IFkIiAtSZdAAkJmDfUAEhp6YBZvADy\n+mf2AHP0/nfxGlOvfknlbBHGiDBDM0awGVqMMSLM0MKMkUKpDez6hd+ed8nWBVBDqYC1/6er9/6z\nYdIFUEmpgD1bvKQLoJ4Hm0p2t+tX7721rTX3lAE+E78OpQJ2+RlYpc8IgGeqvQpRvQAWUWcDu3vt\naZnPC4CH6gQMgKVUu4UIwCJKvYz+oYe/Ezbr0O/8qvXZM7zzoQFjjH8oHo7RJr32Z8qn//rQI0f6\n9VhjTs4ID8Xrw816YdrE8/MjlQM28R1ZXhz6xa9aD5vh14+ePcbt03Lwpernv48c49as47449MiR\nXr7nwLhn7s8xxp+czw438eR8NlI0lW8hbts266F/duiR87z49EeelK/HGHmBCPU8nDjMs0MPPjmf\nfWjwyflijMH1CiXgSA9V3sDCCv5NzRi33/DOfTQm/vpgqPvbr/995AyDPdtEH35o5Bht9sk5/qCf\nErChIvyq9WWG638jXEFmubtxNPincW3qhWnutfL1DMNOzgjPx2djTDw5L663EAcf9yMCNtr0Z0uc\n1Wdx7iK++MfVbt8FGeMi0ZVBwEa4nBC33122Sa8smn5eXma4Phpt6r27WWNMPBN+Hnr8yfnwWONP\nzhdjjH9B5s+vyMTnyPSn5/vmX9EAYIfKr0IEoDABAyAlAQMgJQEDICUBAyAlAQMgJQEDICUBAyAl\nAQMgJQEDICUBAyAlAQMgJQEDICUBAyAlAQMgJQEDICUBAyAlAQMgJQEDICUBAyAlAQMgJQEDICUB\nAyAlAQMgJQEDICUBAyAlAQMgJQEDICUBAyAlAQMgJQEDICUBAyAlAQMgJQEDIKX/AdPoO2KJYTfg\nAAAAAElFTkSuQmCC\n" } @@ -181,6 +188,7 @@ "metadata": {}, "outputs": [ { + "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ @@ -207,6 +215,7 @@ ] }, { + "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ @@ -226,6 +235,7 @@ "metadata": {}, "outputs": [ { + "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ From 36939ae09a66a0ad02cf6bb0864c4e321e4231d8 Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 13 May 2014 17:14:04 -0700 Subject: [PATCH 038/308] Import the version. --- pymatbridge/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pymatbridge/__init__.py b/pymatbridge/__init__.py index 7d076cd..45d2145 100644 --- a/pymatbridge/__init__.py +++ b/pymatbridge/__init__.py @@ -1,4 +1,5 @@ from .pymatbridge import * +from .version import __version__ try: from .publish import * From a6fd3cc3adf5ef2b5e3d9b83a8050d783c76d48f Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 27 May 2014 17:45:59 -0700 Subject: [PATCH 039/308] Two changes for a release: 1. Increment the version to be 0.3 2. In the setup, copy all versions of the messenger. --- pymatbridge/version.py | 2 +- setup.py | 23 +++++++---------------- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index eb7400d..4e1d3d3 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -4,7 +4,7 @@ _version_major = 0 _version_minor = 3 _version_micro = '' # use '' for first of series, number for 1 and above -_version_extra = 'dev' +_version_extra = ''#'dev' #_version_extra = '' # Uncomment this for full releases # Construct full version string from these. diff --git a/setup.py b/setup.py index ac70a40..4c55b21 100755 --- a/setup.py +++ b/setup.py @@ -21,23 +21,14 @@ def copy_bin(bin_path): else: return False -if sys.platform == "darwin": - if not copy_bin("./messenger/mexmaci64/messenger.mexmaci64"): - raise ValueError("messenger.mexmaci64 is not built yet. Please build it yourself.") - -elif sys.platform == "linux2": - if not copy_bin("./messenger/mexa64/messenger.mexa64"): - raise ValueError("messenger.mexa64 is not built yet. Please build it yourself.") - -elif sys.platform in ["win32", "cygwin"]: - t1 = copy_bin("./messenger/mexw64/messenger.mexw64") - t2 = copy_bin("./messenger/mexw32/messenger.mexw32") - if not (t1 or t2): - raise ValueError("Neither messenger.mexw32 or mex264 is built yet. Please build the appropriate one yourself") - +if sys.platform == "win32": + raise ValueError("pymatbridge does not work on win32") else: - raise ValueError("Unknown platform") - + for copy_this in ["./messenger/mexmaci64/messenger.mexmaci64", + "./messenger/mexa64/messenger.mexa64", + "./messenger/mexw64/messenger.mexw64"]: + copy_bin(copy_this) + # Get version and release info, which is all stored in pymatbridge/version.py ver_file = os.path.join('pymatbridge', 'version.py') exec(open(ver_file).read()) From 2e11049f725a0c5fd11b38baf279b8ac01a55e56 Mon Sep 17 00:00:00 2001 From: arokem Date: Wed, 28 May 2014 09:23:42 -0700 Subject: [PATCH 040/308] Incremented version towards development of 0.4 --- pymatbridge/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 4e1d3d3..16199f2 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -2,9 +2,9 @@ # Format expected by setup.py and doc/source/conf.py: string of form "X.Y.Z" _version_major = 0 -_version_minor = 3 +_version_minor = 4 _version_micro = '' # use '' for first of series, number for 1 and above -_version_extra = ''#'dev' +_version_extra = 'dev' #_version_extra = '' # Uncomment this for full releases # Construct full version string from these. From fafcb39f354c890b8dba04b5db0e31ea7a188c99 Mon Sep 17 00:00:00 2001 From: arokem Date: Fri, 20 Jun 2014 16:36:30 -0700 Subject: [PATCH 041/308] Working towards a better build experience. --- messenger/{mexmaci64 => }/make.py | 18 ++++++++- messenger/mexa64/make.py | 61 ------------------------------- messenger/mexmaci64/local.cfg | 2 +- 3 files changed, 17 insertions(+), 64 deletions(-) rename messenger/{mexmaci64 => }/make.py (77%) delete mode 100755 messenger/mexa64/make.py diff --git a/messenger/mexmaci64/make.py b/messenger/make.py similarity index 77% rename from messenger/mexmaci64/make.py rename to messenger/make.py index 8b82177..3ea8c71 100755 --- a/messenger/mexmaci64/make.py +++ b/messenger/make.py @@ -4,13 +4,25 @@ import sys import fnmatch import subprocess +import shutil # Check the system platform first platform = sys.platform print "This is a " + platform + " system" +if platform.startswith('linux'): + messenger_dir = 'mexa64' +elif platform.startswith('darwin'): + messenger_dir = 'mexmaci64' +if platform.startswith('win32'): + windowsversion = sys.getwindowsversion() + if windowsversion == 'foo': + messenger_dir = 'mexw32' + elif windowsversion == 'bar': + messenger_dir = 'mexw64' + # Open the configure file and start parsing -config = open('local.cfg', 'r') +config = open(os.path.join(messenger_dir, 'local.cfg'), 'r') for line in config: path = line.split('=') @@ -56,6 +68,8 @@ mex = "\\mex.bat" else: mex = "/mex" -make_cmd = '"' + matlab_bin + mex + '"' + " -O -I" + header_path + " -L" + lib_path + " -lzmq ../src/messenger.c" +make_cmd = '"' + matlab_bin + mex + '"' + " -O -I" + header_path + " -L" + lib_path + " -lzmq ./src/messenger.c" os.system(make_cmd) +shutil.move('messenger.%s'%extension, messenger_dir) + diff --git a/messenger/mexa64/make.py b/messenger/mexa64/make.py deleted file mode 100755 index d76b675..0000000 --- a/messenger/mexa64/make.py +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/python - -import os -import sys -import fnmatch -import subprocess - -# Check the system platform first -platform = sys.platform -print "This is a " + platform + " system" - -# Open the configure file and start parsing -config = open('local.cfg', 'r') - -for line in config: - path = line.split('=') - - if path[0] == "MATLAB_BIN": - print "Searching for Matlab bin folder in local.cfg ..." - matlab_bin = path[1].rstrip('\r\n') - if matlab_bin == "": - raise ValueError("Could not find Matlab bin folder. Please add it to local.cfg") - print "Matlab found in " + matlab_bin - - elif path[0] == "HEADER_PATH": - print "Searching for zmq.h in local.cfg ..." - header_path = path[1].rstrip('\r\n') - if header_path == "": - raise ValueError("Could not find zmq.h. Please add its path to local.cfg") - print "zmq.h found in " + header_path - - elif path[0] == "LIB_PATH": - print "Searching for zmq library in local.cfg ..." - lib_path = path[1].rstrip('\r\n') - if lib_path == "": - raise ValueError("Could not find zmq library. Please add its path to local.cfg") - - print "zmq library found in " + lib_path - -config.close() - -# Get the extension -if platform == 'win32': - extcmd = '"' + matlab_bin + "\\mexext.bat" + '"' - check_extension = subprocess.Popen(extcmd, stdout = subprocess.PIPE) - extension = check_extension.stdout.readline().rstrip('\r\n') -else: - extcmd = matlab_bin + "/mexext" - check_extension = subprocess.Popen(extcmd, stdout = subprocess.PIPE) - extension = check_extension.stdout.readline().rstrip('\r\n') - -print "Building messenger." + extension + " ..." - -# Build the mex file -if platform == 'win32': - mex = "\\mex.bat" -else: - mex = "/mex" -make_cmd = '"' + matlab_bin + mex + '"' + " -v -I" + header_path + " -L" + lib_path + " -lzmq ../src/messenger.c" -os.system(make_cmd) - diff --git a/messenger/mexmaci64/local.cfg b/messenger/mexmaci64/local.cfg index d8d9ff6..b83ed1d 100644 --- a/messenger/mexmaci64/local.cfg +++ b/messenger/mexmaci64/local.cfg @@ -1,3 +1,3 @@ -MATLAB_BIN=/Applications/MATLAB_R2012a.app/bin +MATLAB_BIN=/Applications/MATLAB_R2012b.app/bin HEADER_PATH=/usr/include LIB_PATH=/usr/local/lib From af6e3655e730e9ef1e7bc92d80792ad7baa76476 Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 22 Jun 2014 12:16:39 -0700 Subject: [PATCH 042/308] Use maxint to differentiate 32 bit from 64 bit Windows. --- messenger/make.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/messenger/make.py b/messenger/make.py index 3ea8c71..cc35a94 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -15,12 +15,13 @@ elif platform.startswith('darwin'): messenger_dir = 'mexmaci64' if platform.startswith('win32'): - windowsversion = sys.getwindowsversion() - if windowsversion == 'foo': - messenger_dir = 'mexw32' - elif windowsversion == 'bar': + # We further need to differniate 32 from 64 bit: + maxint = sys.maxint() + if maxint == 9223372036854775807: messenger_dir = 'mexw64' - + elif maxint == 2147483647: + messenger_dir = 'mexw32' + # Open the configure file and start parsing config = open(os.path.join(messenger_dir, 'local.cfg'), 'r') From 324951f2f1022d5af1e5df870d6189dc54fa05ee Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Wed, 30 Jul 2014 12:43:16 -0400 Subject: [PATCH 043/308] Remove numpy use from pymatbridge.py. --- pymatbridge/pymatbridge.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 9e9a347..8e6c95c 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -9,7 +9,6 @@ This is a modified version using ZMQ, Haoxing Zhang Jan.2014 """ -import numpy as np import os, time import zmq import subprocess @@ -171,7 +170,7 @@ def is_connected(self): else: return False except zmq.ZMQError: - np.disp(".", linefeed=False) + sys.stdout.write('.') time.sleep(1) if (time.time() - start_time > self.maxtime) : print "Matlab session timed out after %d seconds" % (self.maxtime) From 63ee4e23268a580843e7679db1e3bab69967950a Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Tue, 29 Jul 2014 19:13:26 -0400 Subject: [PATCH 044/308] Rename json functions away from +pkg syntax. --- pymatbridge/matlab/matlabserver.m | 4 ++-- .../util/json_v0.2.2/{+json => json}/java/README | 0 .../util/json_v0.2.2/{+json => json}/java/json.jar | Bin .../json_v0.2.2/{+json/dump.m => json/json_dump.m} | 6 +++--- .../json_v0.2.2/{+json/load.m => json/json_load.m} | 6 +++--- .../json_v0.2.2/{+json/read.m => json/json_read.m} | 4 ++-- .../{+json/startup.m => json/json_startup.m} | 4 ++-- .../{+json/write.m => json/json_write.m} | 4 ++-- pymatbridge/matlab/util/pymat_eval.m | 4 ++-- pymatbridge/matlab/util/pymat_feval.m | 4 ++-- pymatbridge/matlab/util/pymat_get_variable.m | 4 ++-- 11 files changed, 20 insertions(+), 20 deletions(-) rename pymatbridge/matlab/util/json_v0.2.2/{+json => json}/java/README (100%) rename pymatbridge/matlab/util/json_v0.2.2/{+json => json}/java/json.jar (100%) rename pymatbridge/matlab/util/json_v0.2.2/{+json/dump.m => json/json_dump.m} (97%) rename pymatbridge/matlab/util/json_v0.2.2/{+json/load.m => json/json_load.m} (98%) rename pymatbridge/matlab/util/json_v0.2.2/{+json/read.m => json/json_read.m} (88%) rename pymatbridge/matlab/util/json_v0.2.2/{+json/startup.m => json/json_startup.m} (97%) rename pymatbridge/matlab/util/json_v0.2.2/{+json/write.m => json/json_write.m} (87%) diff --git a/pymatbridge/matlab/matlabserver.m b/pymatbridge/matlab/matlabserver.m index 55b223b..9e20c1e 100644 --- a/pymatbridge/matlab/matlabserver.m +++ b/pymatbridge/matlab/matlabserver.m @@ -3,12 +3,12 @@ function matlabserver(socket_address) % over the socket. I then enters the listen-respond mode until it gets an % "exit" command -json.startup +json_startup messenger('init', socket_address); while(1) msg_in = messenger('listen'); - req = json.load(msg_in); + req = json_load(msg_in); switch(req.cmd) case {'connect'} diff --git a/pymatbridge/matlab/util/json_v0.2.2/+json/java/README b/pymatbridge/matlab/util/json_v0.2.2/json/java/README similarity index 100% rename from pymatbridge/matlab/util/json_v0.2.2/+json/java/README rename to pymatbridge/matlab/util/json_v0.2.2/json/java/README diff --git a/pymatbridge/matlab/util/json_v0.2.2/+json/java/json.jar b/pymatbridge/matlab/util/json_v0.2.2/json/java/json.jar similarity index 100% rename from pymatbridge/matlab/util/json_v0.2.2/+json/java/json.jar rename to pymatbridge/matlab/util/json_v0.2.2/json/java/json.jar diff --git a/pymatbridge/matlab/util/json_v0.2.2/+json/dump.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m similarity index 97% rename from pymatbridge/matlab/util/json_v0.2.2/+json/dump.m rename to pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m index 00690a0..b5d3970 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/+json/dump.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m @@ -1,4 +1,4 @@ -function str = dump(value, varargin) +function str = json_dump(value, varargin) %DUMP Encode matlab value into a JSON string. % % SYNOPSIS @@ -64,7 +64,7 @@ % % See also json.load json.write - json.startup('WarnOnAddpath', true); + json_startup('WarnOnAddpath', true); options = get_options_(varargin{:}); obj = dump_data_(value, options); if isempty(options.indent) @@ -149,4 +149,4 @@ else error('json:typeError', 'Unsupported data type: %s', class(value)); end -end \ No newline at end of file +end diff --git a/pymatbridge/matlab/util/json_v0.2.2/+json/load.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m similarity index 98% rename from pymatbridge/matlab/util/json_v0.2.2/+json/load.m rename to pymatbridge/matlab/util/json_v0.2.2/json/json_load.m index 3829a79..3ce7b42 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/+json/load.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m @@ -1,4 +1,4 @@ -function value = load(str, varargin) +function value = json_load(str, varargin) %LOAD Load matlab value from a JSON string. % % SYNOPSIS @@ -57,7 +57,7 @@ % % See also json.dump json.read - json.startup('WarnOnAddpath', true); + json_startup('WarnOnAddpath', true); options = get_options_(varargin{:}); singleton = false; @@ -196,4 +196,4 @@ fields = fieldnames(value); vec = [vec, uint8([fields{:}])]; end -end \ No newline at end of file +end diff --git a/pymatbridge/matlab/util/json_v0.2.2/+json/read.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_read.m similarity index 88% rename from pymatbridge/matlab/util/json_v0.2.2/+json/read.m rename to pymatbridge/matlab/util/json_v0.2.2/json/json_read.m index 411bc6e..213fa47 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/+json/read.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_read.m @@ -1,4 +1,4 @@ -function value = read(filename, varargin) +function value = json_read(filename, varargin) %READ Load a matlab value from a JSON file. % % SYNOPSIS @@ -19,7 +19,7 @@ fid = 0; try fid = fopen(filename, 'r'); - value = json.load(fscanf(fid, '%c', inf)); + value = json_load(fscanf(fid, '%c', inf)); fclose(fid); catch e if fid ~= 0, fclose(fid); end diff --git a/pymatbridge/matlab/util/json_v0.2.2/+json/startup.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_startup.m similarity index 97% rename from pymatbridge/matlab/util/json_v0.2.2/+json/startup.m rename to pymatbridge/matlab/util/json_v0.2.2/json/json_startup.m index f88edac..77c0853 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/+json/startup.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_startup.m @@ -1,4 +1,4 @@ -function startup(varargin) +function json_startup(varargin) %STARTUP Initialize runtime environment. % % SYNOPSIS @@ -42,4 +42,4 @@ function startup(varargin) ]); end end -end \ No newline at end of file +end diff --git a/pymatbridge/matlab/util/json_v0.2.2/+json/write.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_write.m similarity index 87% rename from pymatbridge/matlab/util/json_v0.2.2/+json/write.m rename to pymatbridge/matlab/util/json_v0.2.2/json/json_write.m index 707dd08..8d8862c 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/+json/write.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_write.m @@ -1,4 +1,4 @@ -function write(value, filename, varargin) +function json_write(value, filename, varargin) %WRITE Write a matlab value into a JSON file. % % SYNOPSIS @@ -19,7 +19,7 @@ function write(value, filename, varargin) fid = 0; try fid = fopen(filename, 'w'); - fprintf(fid, '%s', json.dump(value, varargin{:})); + fprintf(fid, '%s', json_dump(value, varargin{:})); fclose(fid); catch e if fid ~= 0, fclose(fid); end diff --git a/pymatbridge/matlab/util/pymat_eval.m b/pymatbridge/matlab/util/pymat_eval.m index b071cb8..510d753 100644 --- a/pymatbridge/matlab/util/pymat_eval.m +++ b/pymatbridge/matlab/util/pymat_eval.m @@ -26,7 +26,7 @@ if ~code_check response.message = 'No code provided as POST parameter'; - json_response = json.dump(response); + json_response = json_dump(response); return; end @@ -71,6 +71,6 @@ response.content.code = code; -json_response = json.dump(response); +json_response = json_dump(response); end %function diff --git a/pymatbridge/matlab/util/pymat_feval.m b/pymatbridge/matlab/util/pymat_feval.m index 2fd3a48..137abcb 100644 --- a/pymatbridge/matlab/util/pymat_feval.m +++ b/pymatbridge/matlab/util/pymat_feval.m @@ -20,7 +20,7 @@ if ~func_path_check response.message = 'No function given as func_path POST parameter'; - json_response = json.dump(response); + json_response = json_dump(response); return end @@ -35,7 +35,7 @@ response.success = 'true'; response.message = 'Successfully completed request'; - json_response = json.dump(response); + json_response = json_dump(response); return diff --git a/pymatbridge/matlab/util/pymat_get_variable.m b/pymatbridge/matlab/util/pymat_get_variable.m index c37fa90..391a133 100644 --- a/pymatbridge/matlab/util/pymat_get_variable.m +++ b/pymatbridge/matlab/util/pymat_get_variable.m @@ -17,7 +17,7 @@ if ~varname_check response.message = 'No variable name provided as input argument'; - json_response = json.dump(response); + json_response = json_dump(response); return end @@ -26,7 +26,7 @@ response.var = evalin('base', varname); -json_response = json.dump(response); +json_response = json_dump(response); return end From 30d2d501b22fb744d78c0ad4f95c6d690925e262 Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Tue, 29 Jul 2014 19:24:05 -0400 Subject: [PATCH 045/308] Use Octave-compatible syntax for calling Java. --- .../matlab/util/json_v0.2.2/json/json_dump.m | 15 ++++++++------- .../matlab/util/json_v0.2.2/json/json_load.m | 9 +++++---- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m index b5d3970..e582047 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m @@ -95,11 +95,12 @@ function obj = dump_data_(value, options) %DUMP_DATA_ if ischar(value) && (isvector(value) || isempty(value)) - obj = java.lang.String(value); + obj = javaObject('java.lang.String', value); elseif isempty(value) && isnumeric(value) - obj = org.json.JSONObject.NULL; + json_object = javaObject('org.json.JSONObject'); + obj = json_object.NULL; elseif ~isscalar(value) - obj = org.json.JSONArray(); + obj = javaObject('org.json.JSONArray'); if ndims(value) > 2 split_value = num2cell(value, 1:ndims(value)-1); @@ -124,13 +125,13 @@ end end elseif iscell(value) - obj = org.json.JSONArray(); + obj = javaObject('org.json.JSONArray'); for i = 1:numel(value) obj.put(dump_data_(value{i}, options)); end elseif isnumeric(value) if isreal(value) - obj = java.lang.Double(value); + obj = javaObject('java.lang.Double', value); % Encode complex number as a struct else complex_struct = struct; @@ -139,9 +140,9 @@ obj = dump_data_(complex_struct, options); end elseif islogical(value) - obj = java.lang.Boolean(value); + obj = javaObject('java.lang.Boolean', value); elseif isstruct(value) - obj = org.json.JSONObject(); + obj = javaObject('org.json.JSONObject'); keys = fieldnames(value); for i = 1:length(keys) obj.put(keys{i},dump_data_(value.(keys{i}), options)); diff --git a/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m index 3ce7b42..39dcf6d 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m @@ -66,11 +66,11 @@ error('json:invalidString','Invalid JSON string'); end if str(1)=='{' - node = org.json.JSONObject(java.lang.String(str)); + node = javaObject('org.json.JSONObject', javaObject('java.lang.String', str)); else singleton = str(1) ~= '[' && str(end) ~= ']'; if singleton, str = ['[',str,']']; end - node = org.json.JSONArray(java.lang.String(str)); + node = javaObject('org.json.JSONArray', javaObject('java.lang.String', str)); end value = parse_data_(node, options); if singleton, value = value{:}; end @@ -119,7 +119,7 @@ warning('json:fieldNameConflict', ... 'Field %s renamed to %s', field, safe_field); end - value.(safe_field) = parse_data_(node.get(java.lang.String(key)), ... + value.(safe_field) = parse_data_(node.get(javaObject('java.lang.String', key)), ... options); end % Check if the struct just decoded represents a complex number @@ -127,7 +127,8 @@ complex_value = complex(value.real, value.imag); value = complex_value; end - elseif isa(node, 'org.json.JSONObject$Null') + % In MATLAB, nested classes end up with a $ in the name, in Octave it's a . + elseif isa(node, 'org.json.JSONObject$Null') || isa(node, 'org.json.JSONObject.Null') value = []; else error('json:typeError', 'Unknown data type: %s', class(node)); From a2f398290b1030e87754a9daeb5da130d54c0ea9 Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Mon, 28 Jul 2014 16:20:45 -0400 Subject: [PATCH 046/308] Add support for invoking Octave instead of Matlab. * Extract most of the Matlab class into a base Session class * Matlab and Octave are subclasses that tweak the command line invocation * Eliminate some code duplication along the way --- pymatbridge/matlab_magic.py | 5 +- pymatbridge/pymatbridge.py | 264 ++++++++++++++++++++---------------- 2 files changed, 150 insertions(+), 119 deletions(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index 384bc13..b7d7f92 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -114,7 +114,7 @@ def eval(self, line): """ Parse and evaluate a single line of matlab """ - run_dict = self.Matlab.run_code(line, maxtime=self.Matlab.maxtime) + run_dict = self.Matlab.run_code(line) if run_dict['success'] == 'false': raise MatlabInterperterError(line, run_dict['content']['stdout']) @@ -127,8 +127,7 @@ def set_matlab_var(self, name, value): Set up a variable in Matlab workspace """ run_dict = self.Matlab.run_func("pymat_set_variable.m", - {'name':name, 'value':value}, - maxtime=self.Matlab.maxtime) + {'name':name, 'value':value}) if run_dict['success'] == 'false': raise MatlabInterperterError(line, run_dict['content']['stdout']) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 8e6c95c..3225490 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -12,9 +12,7 @@ import os, time import zmq import subprocess -import platform import sys - import json # JSON encoder extension to handle complex numbers @@ -31,97 +29,61 @@ def as_complex(dct): return complex(dct['real'], dct['imag']) return dct - MATLAB_FOLDER = '%s/matlab' % os.path.realpath(os.path.dirname(__file__)) -# Start a Matlab server and bind it to a ZMQ socket(TCP/IPC) -def _run_matlab_server(matlab_bin, matlab_socket_addr, matlab_log, matlab_id, matlab_startup_options): - command = matlab_bin - command += ' %s ' % matlab_startup_options - command += ' -r "' - command += "addpath(genpath(" - command += "'%s'" % MATLAB_FOLDER - command += ')), matlabserver(\'%s\'),exit"' % matlab_socket_addr - - if matlab_log: - command += ' -logfile ./pymatbridge/logs/matlablog_%s.txt > ./pymatbridge/logs/bashlog_%s.txt' % (matlab_id, matlab_id) - - subprocess.Popen(command, shell = True, stdin=subprocess.PIPE) - return True - - -class Matlab(object): +class Session(object): """ - A class for communicating with a matlab session + A class for communicating with a MATLAB session. It provides the behavior + common across different MATLAB implementations. You shouldn't instantiate + this directly; rather, use the Matlab or Octave subclasses. """ - def __init__(self, matlab='matlab', socket_addr=None, + def __init__(self, executable, socket_addr=None, id='python-matlab-bridge', log=False, maxtime=60, platform=None, startup_options=None): - """ - Initialize this thing. - - Parameters - ---------- - - matlab : str - A string that woul start matlab at the terminal. Per default, this - is set to 'matlab', so that you can alias in your bash setup - - socket_addr : str - A string that represents a valid ZMQ socket address, such as - "ipc:///tmp/pymatbridge", "tcp://127.0.0.1:55555", etc. - - id : str - An identifier for this instance of the pymatbridge - - log : bool - Whether to save a log file in some known location. - - maxtime : float - The maximal time to wait for a response from matlab (optional, - Default is 10 sec) - - platform : string - The OS of the machine on which this is running. Per default this - will be taken from sys.platform. - """ - # Setup internal state variables self.started = False self.running = False - self.matlab = matlab + self.executable = executable self.socket_addr = socket_addr - self.id = id self.log = log self.maxtime = maxtime + self.platform = platform if platform is not None else sys.platform + self.startup_options = startup_options - if platform is None: - self.platform = sys.platform - else: - self.platform = platform - - if self.socket_addr is None: # use the default + if socket_addr is None: self.socket_addr = "tcp://127.0.0.1:55555" if self.platform == "win32" else "ipc:///tmp/pymatbridge" - if startup_options: - self.startup_options = startup_options - elif self.platform == 'win32': - self.startup_options = ' -automation -noFigureWindows' - else: - self.startup_options = ' -nodesktop -nodisplay' + if self.log: + startup_options += ' > ./pymatbridge/logs/bashlog_%s.txt' % self.id self.context = None self.socket = None + def _preamble_code(self): + return ["addpath(genpath('%s'))" % MATLAB_FOLDER] + + def _execute_flag(self): + raise NotImplemented + + def _run_server(self): + code = self._preamble_code() + code.extend([ + "matlabserver('%s')" % self.socket_addr, + 'exit' + ]) + command = '%s %s %s "%s"' % (self.executable, self.startup_options, + self._execute_flag(), ','.join(code)) + subprocess.Popen(command, shell=True, stdin=subprocess.PIPE) + # Start server/client session and make the connection def start(self): # Start the MATLAB server in a new process print "Starting MATLAB on ZMQ socket %s" % (self.socket_addr) print "Send 'exit' command to kill the server" - _run_matlab_server(self.matlab, self.socket_addr, self.log, self.id, self.startup_options) + self._run_server() # Start the client self.context = zmq.Context() @@ -131,22 +93,23 @@ def start(self): self.started = True # Test if connection is established - if (self.is_connected()): + if self.is_connected(): print "MATLAB started and connected!" return True else: print "MATLAB failed to start" return False - - # Stop the Matlab server - def stop(self): - req = json.dumps(dict(cmd="exit"), cls=ComplexEncoder) + def _response(self, **kwargs): + req = json.dumps(kwargs, cls=ComplexEncoder) self.socket.send(req) resp = self.socket.recv_string() + return resp + # Stop the Matlab server + def stop(self): # Matlab should respond with "exit" if successful - if resp == "exit": + if self._response(cmd='exit') == "exit": print "MATLAB closed" self.started = False @@ -162,69 +125,138 @@ def is_connected(self): self.socket.send(req) start_time = time.time() - while(True): + while True: try: resp = self.socket.recv_string(flags=zmq.NOBLOCK) - if resp == "connected": - return True - else: - return False + return resp == "connected" except zmq.ZMQError: sys.stdout.write('.') time.sleep(1) - if (time.time() - start_time > self.maxtime) : - print "Matlab session timed out after %d seconds" % (self.maxtime) + if time.time() - start_time > self.maxtime: + print "Matlab session timed out after %d seconds" % self.maxtime return False - def is_function_processor_working(self): result = self.run_func('%s/test_functions/test_sum.m' % MATLAB_FOLDER, {'echo': 'Matlab: Function processor is working!'}) - if result['success'] == 'true': - return True - else: - return False - + return result['success'] == 'true' - # Run a function in Matlab and return the result - def run_func(self, func_path, func_args=None, maxtime=None): + def _json_response(self, **kwargs): if self.running: time.sleep(0.05) + return json.loads(self._response(**kwargs), object_hook=as_complex) - req = dict(cmd="run_function") - req['func_path'] = func_path - req['func_args'] = func_args + # Run a function in Matlab and return the result + def run_func(self, func_path, func_args=None): + return self._json_response(cmd='run_function', + func_path=func_path, + func_args=func_args) - req = json.dumps(req, cls=ComplexEncoder) - self.socket.send(req) - resp = self.socket.recv_string() - resp = json.loads(resp, object_hook=as_complex) + # Run some code in Matlab command line provide by a string + def run_code(self, code): + return self._json_response(cmd='run_code', code=code) - return resp + def get_variable(self, varname): + return self._json_response(cmd='get_var', varname=varname)['var'] - # Run some code in Matlab command line provide by a string - def run_code(self, code, maxtime=None): - if self.running: - time.sleep(0.05) - req = dict(cmd="run_code") - req['code'] = code - req = json.dumps(req, cls=ComplexEncoder) - self.socket.send(req) - resp = self.socket.recv_string() - resp = json.loads(resp, object_hook=as_complex) +class Matlab(Session): + def __init__(self, executable='matlab', socket_addr=None, + id='python-matlab-bridge', log=False, maxtime=60, + platform=None, startup_options=None): + """ + Initialize this thing. - return resp + Parameters + ---------- - def get_variable(self, varname, maxtime=None): - if self.running: - time.sleep(0.05) + executable : str + A string that would start Matlab at the terminal. Per default, this + is set to 'matlab', so that you can alias in your bash setup - req = dict(cmd="get_var") - req['varname'] = varname - req = json.dumps(req, cls=ComplexEncoder) - self.socket.send(req) - resp = self.socket.recv_string() - resp = json.loads(resp, object_hook=as_complex) + socket_addr : str + A string that represents a valid ZMQ socket address, such as + "ipc:///tmp/pymatbridge", "tcp://127.0.0.1:55555", etc. + + id : str + An identifier for this instance of the pymatbridge. + + log : bool + Whether to save a log file in some known location. - return resp['var'] + maxtime : float + The maximal time to wait for a response from matlab (optional, + Default is 10 sec) + + platform : string + The OS of the machine on which this is running. Per default this + will be taken from sys.platform. + startup_options : string + Command line options to pass to MATLAB. Optional; sensible defaults + are used if this is not provided. + """ + if platform is None: + platform = sys.platform + if startup_options is None: + if platform == 'win32': + startup_options = ' -automation -noFigureWindows' + else: + startup_options = ' -nodesktop -nodisplay' + if log: + startup_options += ' -logfile ./pymatbridge/logs/matlablog_%s.txt' % id + super(Matlab, self).__init__(executable, socket_addr, id, log, maxtime, + platform, startup_options) + + def _execute_flag(self): + return '-r' + + +class Octave(Session): + def __init__(self, executable='octave', socket_addr=None, + id='python-matlab-bridge', log=False, maxtime=60, + platform=None, startup_options=None): + """ + Initialize this thing. + + Parameters + ---------- + + executable : str + A string that would start Octave at the terminal. Per default, this + is set to 'octave', so that you can alias in your bash setup + + socket_addr : str + A string that represents a valid ZMQ socket address, such as + "ipc:///tmp/pymatbridge", "tcp://127.0.0.1:55555", etc. + + id : str + An identifier for this instance of the pymatbridge. + + log : bool + Whether to save a log file in some known location. + + maxtime : float + The maximal time to wait for a response from matlab (optional, + Default is 10 sec) + + platform : string + The OS of the machine on which this is running. Per default this + will be taken from sys.platform. + + startup_options : string + Command line options to pass to Octave. Optional; sensible defaults + are used if this is not provided. + """ + if startup_options is None: + startup_options = '--silent --no-gui' + super(Octave, self).__init__(executable, socket_addr, id, log, maxtime, + platform, startup_options) + + def _preamble_code(self): + code = super(Octave, self)._preamble_code() + if self.log: + code.append("diary('./pymatbridge/logs/octavelog_%s.txt')" % self.id) + return code + + def _execute_flag(self): + return '--eval' From f94bb75f13c0c3daeee326e1d551ecdc22e0b362 Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Sun, 3 Aug 2014 16:14:36 -0400 Subject: [PATCH 047/308] s/Session/_Session/, and restore its docstring --- pymatbridge/pymatbridge.py | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 3225490..35bbfc2 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -32,7 +32,7 @@ def as_complex(dct): MATLAB_FOLDER = '%s/matlab' % os.path.realpath(os.path.dirname(__file__)) -class Session(object): +class _Session(object): """ A class for communicating with a MATLAB session. It provides the behavior common across different MATLAB implementations. You shouldn't instantiate @@ -42,7 +42,37 @@ class Session(object): def __init__(self, executable, socket_addr=None, id='python-matlab-bridge', log=False, maxtime=60, platform=None, startup_options=None): + """ + Initialize this thing. + + Parameters + ---------- + + executable : str + A string that would start the session at the terminal. + + socket_addr : str + A string that represents a valid ZMQ socket address, such as + "ipc:///tmp/pymatbridge", "tcp://127.0.0.1:55555", etc. + + id : str + An identifier for this instance of the pymatbridge. + log : bool + Whether to save a log file in some known location. + + maxtime : float + The maximal time to wait for a response from the session (optional, + Default is 10 sec) + + platform : string + The OS of the machine on which this is running. Per default this + will be taken from sys.platform. + + startup_options : string + Command line options to include in the executable's invocation. + Optional; sensible defaults are used if this is not provided. + """ self.started = False self.running = False self.executable = executable @@ -159,7 +189,7 @@ def get_variable(self, varname): return self._json_response(cmd='get_var', varname=varname)['var'] -class Matlab(Session): +class Matlab(_Session): def __init__(self, executable='matlab', socket_addr=None, id='python-matlab-bridge', log=False, maxtime=60, platform=None, startup_options=None): @@ -211,7 +241,7 @@ def _execute_flag(self): return '-r' -class Octave(Session): +class Octave(_Session): def __init__(self, executable='octave', socket_addr=None, id='python-matlab-bridge', log=False, maxtime=60, platform=None, startup_options=None): @@ -236,7 +266,7 @@ def __init__(self, executable='octave', socket_addr=None, Whether to save a log file in some known location. maxtime : float - The maximal time to wait for a response from matlab (optional, + The maximal time to wait for a response from octave (optional, Default is 10 sec) platform : string From d3e706be3328e4f565b309e6974065c9c27ffd5e Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Sun, 3 Aug 2014 16:24:00 -0400 Subject: [PATCH 048/308] Use appropriate program name in output. --- pymatbridge/pymatbridge.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 35bbfc2..8cd7fb4 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -92,6 +92,9 @@ def __init__(self, executable, socket_addr=None, self.context = None self.socket = None + def _program_name(self): + raise NotImplemented + def _preamble_code(self): return ["addpath(genpath('%s'))" % MATLAB_FOLDER] @@ -111,7 +114,7 @@ def _run_server(self): # Start server/client session and make the connection def start(self): # Start the MATLAB server in a new process - print "Starting MATLAB on ZMQ socket %s" % (self.socket_addr) + print "Starting %s on ZMQ socket %s" % (self._program_name(), self.socket_addr) print "Send 'exit' command to kill the server" self._run_server() @@ -124,10 +127,10 @@ def start(self): # Test if connection is established if self.is_connected(): - print "MATLAB started and connected!" + print "%s started and connected!" % self._program_name() return True else: - print "MATLAB failed to start" + print "%s failed to start" % self._program_name() return False def _response(self, **kwargs): @@ -140,7 +143,7 @@ def _response(self, **kwargs): def stop(self): # Matlab should respond with "exit" if successful if self._response(cmd='exit') == "exit": - print "MATLAB closed" + print "%s closed" % self._program_name() self.started = False return True @@ -163,11 +166,12 @@ def is_connected(self): sys.stdout.write('.') time.sleep(1) if time.time() - start_time > self.maxtime: - print "Matlab session timed out after %d seconds" % self.maxtime + print "%s session timed out after %d seconds" % (self._program_name(), self.maxtime) return False def is_function_processor_working(self): - result = self.run_func('%s/test_functions/test_sum.m' % MATLAB_FOLDER, {'echo': 'Matlab: Function processor is working!'}) + result = self.run_func('%s/test_functions/test_sum.m' % MATLAB_FOLDER, + {'echo': '%s: Function processor is working!' % self._program_name()}) return result['success'] == 'true' def _json_response(self, **kwargs): @@ -237,6 +241,9 @@ def __init__(self, executable='matlab', socket_addr=None, super(Matlab, self).__init__(executable, socket_addr, id, log, maxtime, platform, startup_options) + def _program_name(self): + return 'MATLAB' + def _execute_flag(self): return '-r' @@ -282,6 +289,9 @@ def __init__(self, executable='octave', socket_addr=None, super(Octave, self).__init__(executable, socket_addr, id, log, maxtime, platform, startup_options) + def _program_name(self): + return 'Octave' + def _preamble_code(self): code = super(Octave, self)._preamble_code() if self.log: From 8705694f6e117b70b3c04166fb83c2d25928e9c6 Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Sun, 3 Aug 2014 16:52:02 -0400 Subject: [PATCH 049/308] Make test suite runnable with Octave. --- pymatbridge/tests/test_run_code.py | 31 +++++++++++++++++++++--------- pymatbridge/tests/test_utils.py | 7 ++++++- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/pymatbridge/tests/test_run_code.py b/pymatbridge/tests/test_run_code.py index 45b2ae8..2693ce1 100644 --- a/pymatbridge/tests/test_run_code.py +++ b/pymatbridge/tests/test_run_code.py @@ -23,7 +23,10 @@ def test_disp(self): npt.assert_equal(result1, "Hello world\n") npt.assert_equal(result2, " \n") - npt.assert_equal(result3, "") + if tu.on_octave(): + npt.assert_equal(result3, '\n') + else: + npt.assert_equal(result3, "") # Make some assignments and run basic operations def test_basic_operation(self): @@ -34,13 +37,20 @@ def test_basic_operation(self): result_product = self.mlab.run_code("a * b")['content']['stdout'] result_division = self.mlab.run_code("c = a / b")['content']['stdout'] - - npt.assert_equal(result_assignment_a, unicode("\na =\n\n 21.2345\n\n")) - npt.assert_equal(result_assignment_b, unicode("\nb =\n\n 347.7450\n\n")) - npt.assert_equal(result_sum, unicode("\nans =\n\n 368.9795\n\n")) - npt.assert_equal(result_diff, unicode("\nans =\n\n -326.5105\n\n")) - npt.assert_equal(result_product, unicode("\nans =\n\n 7.3842e+03\n\n")) - npt.assert_equal(result_division, unicode("\nc =\n\n 0.0611\n\n")) + if tu.on_octave(): + npt.assert_equal(result_assignment_a, unicode("a = 21.235\n")) + npt.assert_equal(result_assignment_b, unicode("b = 347.75\n")) + npt.assert_equal(result_sum, unicode("ans = 368.98\n")) + npt.assert_equal(result_diff, unicode("ans = -326.51\n")) + npt.assert_equal(result_product, unicode("ans = 7384.2\n")) + npt.assert_equal(result_division, unicode("c = 0.061063\n")) + else: + npt.assert_equal(result_assignment_a, unicode("\na =\n\n 21.2345\n\n")) + npt.assert_equal(result_assignment_b, unicode("\nb =\n\n 347.7450\n\n")) + npt.assert_equal(result_sum, unicode("\nans =\n\n 368.9795\n\n")) + npt.assert_equal(result_diff, unicode("\nans =\n\n -326.5105\n\n")) + npt.assert_equal(result_product, unicode("\nans =\n\n 7.3842e+03\n\n")) + npt.assert_equal(result_division, unicode("\nc =\n\n 0.0611\n\n")) # Put in some undefined code def test_undefined_code(self): @@ -48,4 +58,7 @@ def test_undefined_code(self): message = self.mlab.run_code("this_is_nonsense")['content']['stdout'] npt.assert_equal(success, "false") - npt.assert_equal(message, "Undefined function or variable 'this_is_nonsense'.") + if tu.on_octave(): + npt.assert_equal(message, "'this_is_nonsense' undefined near line 1 column 1") + else: + npt.assert_equal(message, "Undefined function or variable 'this_is_nonsense'.") diff --git a/pymatbridge/tests/test_utils.py b/pymatbridge/tests/test_utils.py index 0d8131e..ade76f3 100644 --- a/pymatbridge/tests/test_utils.py +++ b/pymatbridge/tests/test_utils.py @@ -1,8 +1,13 @@ +import os + import pymatbridge as pymat import numpy.testing as npt +def on_octave(): + return bool(os.environ.get('USE_OCTAVE', False)) + def connect_to_matlab(): - mlab = pymat.Matlab() + mlab = pymat.Octave() if on_octave() else pymat.Matlab() mlab.start() npt.assert_(mlab.is_connected(), msg = "connect_to_matlab(): Connection failed") From d36718853ee8816527712568a49bd2aa293fa3db Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Sun, 3 Aug 2014 16:53:31 -0400 Subject: [PATCH 050/308] Fix messenger compile errors on gcc / clang. --- messenger/src/messenger.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/messenger/src/messenger.c b/messenger/src/messenger.c index beb9a03..f14cb3c 100644 --- a/messenger/src/messenger.c +++ b/messenger/src/messenger.c @@ -90,10 +90,10 @@ void mexFunction(int nlhs, mxArray *plhs[], if (!initialized) { if (!initialize(socket_addr)) { - p[0] = true; + p[0] = 1; mexPrintf("Socket created at: %s\n", socket_addr); } else { - p[0] = false; + p[0] = 0; mexErrMsgTxt("Socket creation failed."); } } else { @@ -137,9 +137,9 @@ void mexFunction(int nlhs, mxArray *plhs[], p = mxGetLogicals(plhs[0]); if (msglen == respond(msg_out, msglen)) { - p[0] = true; + p[0] = 1; } else { - p[0] = false; + p[0] = 0; mexErrMsgTxt("Failed to send message due to ZMQ error"); } From 5115a0502d78b35bdd9b888143ece367a305785f Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Tue, 5 Aug 2014 13:28:24 -0400 Subject: [PATCH 051/308] Mention Octave support in README. --- README.md | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index ae6a54c..75728d1 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ This should make the python-matlab-bridge import-able. ## Usage -To use the pymatbridge you need to connect your python interperter to a Matlab +To use the pymatbridge you need to connect your python interpreter to a Matlab session. This is done in the following manner: from pymatbridge import Matlab @@ -72,12 +72,12 @@ This creates a matlab session class instance, into which you will be able to inject code and variables, and query for results. By default, when you use `start`, this will open whatever gets called when you type `matlab` in your Terminal, but you can also specify the location of your Matlab -application when initialzing your matlab session class: +application when initializing your matlab session class: - mlab = Matlab(matlab='/Applications/MATLAB_R2011a.app/bin/matlab') + mlab = Matlab(executable='/Applications/MATLAB_R2011a.app/bin/matlab') You can then start the Matlab server, which will kick off your matlab session, -and create the connection between your Python interperter and this session: +and create the connection between your Python interpreter and this session: mlab.start() @@ -99,7 +99,7 @@ the `get_variable` method: mlab.get_variable('a') -You can run any MATLAB functions contained within a .m file of the +You can run any MATLAB functions contained within a .m file of the same name. For example, to call the function jk in jk.m: %% MATLAB @@ -123,6 +123,37 @@ You can shut down the MATLAB server by calling: Tip: you can execute MATLAB code at the beginning of each of your matlab sessions by adding code to the `~/startup.m` file. +### Octave support & caveats + +A `pymatbridge.Octave` class is provided with exactly the same interface +as `pymatbridge.Matlab`: + + from pymatbridge import Octave + octave = Octave() + +Rather than looking for `matlab` at the shell, this will look for `octave`. +As with `pymatbridge.Matlab`, you can override this by specifying the +`executable` keyword argument. + +There are a few caveats to note about Octave support: + +* `pymatbridge.Matlab` invokes MATLAB with command line options that suppress +the display of figures -- these are instead saved to image files, accessible +via `results['content']['figures']` in the results dict. No such mechanism +seems to be available for Octave, so when drawing figures you'll likely see +them briefly pop up and disappear. (If you know of a way around this, feel +free to send a pull request). +* The zmq messenger used to communicate with the Octave session is written in C +and needs to be compiled. For MATLAB various prebuilt binaries are provided +and added to MATLAB's runtime path, but as of this writing the same isn't +true for Octave. You'll need to compile the messenger (in +`messenger/src/messenger.c`) using an incantation like +`mkoctfile --mex -lzmq messenger.c` and place the resulting `messenger.mex` +file somewhere in Octave's runtime path. + +Finally, rather than `~/startup.m`, Octave looks for an `~/.octaverc` file for +commands to execute before every session. (This is a good place to manipulate +the runtime path, for example). ### Matlab magic: From 7c0cd3bd67e54a73d3bd6292613b1827307d5786 Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Tue, 5 Aug 2014 13:59:37 -0400 Subject: [PATCH 052/308] Fix json paths in version.py. --- pymatbridge/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 16199f2..90ba94d 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -91,8 +91,8 @@ "matlab/util/json_v0.2.2/LICENSE", "matlab/util/json_v0.2.2/README.md", "matlab/util/json_v0.2.2/test/*", - "matlab/util/json_v0.2.2/+json/*.m", - "matlab/util/json_v0.2.2/+json/java/*", + "matlab/util/json_v0.2.2/json/*.m", + "matlab/util/json_v0.2.2/json/java/*", "tests/*.py", "examples/*.ipynb"]} REQUIRES = [] From 45cbed0a2ea8581440d6e94de483cd40a8161e1c Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Mon, 11 Aug 2014 11:45:55 -0400 Subject: [PATCH 053/308] Make codebase python3 compatible. --- pymatbridge/compat.py | 10 ++++++++++ pymatbridge/matlab_magic.py | 6 +++--- pymatbridge/pymatbridge.py | 16 ++++++++-------- pymatbridge/tests/test_json.py | 1 + pymatbridge/tests/test_run_code.py | 25 +++++++++++++------------ 5 files changed, 35 insertions(+), 23 deletions(-) create mode 100644 pymatbridge/compat.py diff --git a/pymatbridge/compat.py b/pymatbridge/compat.py new file mode 100644 index 0000000..bca21fc --- /dev/null +++ b/pymatbridge/compat.py @@ -0,0 +1,10 @@ +import sys + +PY3 = sys.version_info[0] == 3 + +if PY3: + text_type = str + unichr = chr +else: + text_type = unicode + unichr = unichr diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index b7d7f92..4bc2eae 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -17,7 +17,6 @@ from glob import glob from shutil import rmtree from getopt import getopt -from urllib2 import URLError import numpy as np try: @@ -37,6 +36,7 @@ from IPython.utils.py3compat import str_to_unicode, unicode_to_str, PY3 import pymatbridge as pymat +from .compat import text_type class MatlabInterperterError(RuntimeError): @@ -56,7 +56,7 @@ def __unicode__(self): __str__ = __unicode__ else: def __str__(self): - return unicode_to_str(unicode(self), 'utf-8') + return unicode_to_str(text_type(self), 'utf-8') @@ -210,7 +210,7 @@ def matlab(self, line, cell=None, local_ns=None): else: e_s = "There was an error running the code:\n %s"%code result_dict = self.eval(code) - except URLError: + except: e_s += "\n-----------------------" e_s += "\nAre you sure Matlab is started?" raise RuntimeError(e_s) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 8cd7fb4..1c5a1fb 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -114,8 +114,8 @@ def _run_server(self): # Start server/client session and make the connection def start(self): # Start the MATLAB server in a new process - print "Starting %s on ZMQ socket %s" % (self._program_name(), self.socket_addr) - print "Send 'exit' command to kill the server" + print("Starting %s on ZMQ socket %s" % (self._program_name(), self.socket_addr)) + print("Send 'exit' command to kill the server") self._run_server() # Start the client @@ -127,15 +127,15 @@ def start(self): # Test if connection is established if self.is_connected(): - print "%s started and connected!" % self._program_name() + print("%s started and connected!" % self._program_name()) return True else: - print "%s failed to start" % self._program_name() + print("%s failed to start" % self._program_name()) return False def _response(self, **kwargs): req = json.dumps(kwargs, cls=ComplexEncoder) - self.socket.send(req) + self.socket.send_string(req) resp = self.socket.recv_string() return resp @@ -143,7 +143,7 @@ def _response(self, **kwargs): def stop(self): # Matlab should respond with "exit" if successful if self._response(cmd='exit') == "exit": - print "%s closed" % self._program_name() + print("%s closed" % self._program_name()) self.started = False return True @@ -155,7 +155,7 @@ def is_connected(self): return False req = json.dumps(dict(cmd="connect"), cls=ComplexEncoder) - self.socket.send(req) + self.socket.send_string(req) start_time = time.time() while True: @@ -166,7 +166,7 @@ def is_connected(self): sys.stdout.write('.') time.sleep(1) if time.time() - start_time > self.maxtime: - print "%s session timed out after %d seconds" % (self._program_name(), self.maxtime) + print("%s session timed out after %d seconds" % (self._program_name(), self.maxtime)) return False def is_function_processor_working(self): diff --git a/pymatbridge/tests/test_json.py b/pymatbridge/tests/test_json.py index 86973b8..4028aff 100644 --- a/pymatbridge/tests/test_json.py +++ b/pymatbridge/tests/test_json.py @@ -1,4 +1,5 @@ import pymatbridge as pymat +from pymatbridge.compat import unichr import numpy.testing as npt import test_utils as tu diff --git a/pymatbridge/tests/test_run_code.py b/pymatbridge/tests/test_run_code.py index 2693ce1..6f929bb 100644 --- a/pymatbridge/tests/test_run_code.py +++ b/pymatbridge/tests/test_run_code.py @@ -1,4 +1,5 @@ import pymatbridge as pymat +from pymatbridge.compat import text_type import numpy.testing as npt import test_utils as tu @@ -38,19 +39,19 @@ def test_basic_operation(self): result_division = self.mlab.run_code("c = a / b")['content']['stdout'] if tu.on_octave(): - npt.assert_equal(result_assignment_a, unicode("a = 21.235\n")) - npt.assert_equal(result_assignment_b, unicode("b = 347.75\n")) - npt.assert_equal(result_sum, unicode("ans = 368.98\n")) - npt.assert_equal(result_diff, unicode("ans = -326.51\n")) - npt.assert_equal(result_product, unicode("ans = 7384.2\n")) - npt.assert_equal(result_division, unicode("c = 0.061063\n")) + npt.assert_equal(result_assignment_a, text_type("a = 21.235\n")) + npt.assert_equal(result_assignment_b, text_type("b = 347.75\n")) + npt.assert_equal(result_sum, text_type("ans = 368.98\n")) + npt.assert_equal(result_diff, text_type("ans = -326.51\n")) + npt.assert_equal(result_product, text_type("ans = 7384.2\n")) + npt.assert_equal(result_division, text_type("c = 0.061063\n")) else: - npt.assert_equal(result_assignment_a, unicode("\na =\n\n 21.2345\n\n")) - npt.assert_equal(result_assignment_b, unicode("\nb =\n\n 347.7450\n\n")) - npt.assert_equal(result_sum, unicode("\nans =\n\n 368.9795\n\n")) - npt.assert_equal(result_diff, unicode("\nans =\n\n -326.5105\n\n")) - npt.assert_equal(result_product, unicode("\nans =\n\n 7.3842e+03\n\n")) - npt.assert_equal(result_division, unicode("\nc =\n\n 0.0611\n\n")) + npt.assert_equal(result_assignment_a, text_type("\na =\n\n 21.2345\n\n")) + npt.assert_equal(result_assignment_b, text_type("\nb =\n\n 347.7450\n\n")) + npt.assert_equal(result_sum, text_type("\nans =\n\n 368.9795\n\n")) + npt.assert_equal(result_diff, text_type("\nans =\n\n -326.5105\n\n")) + npt.assert_equal(result_product, text_type("\nans =\n\n 7.3842e+03\n\n")) + npt.assert_equal(result_division, text_type("\nc =\n\n 0.0611\n\n")) # Put in some undefined code def test_undefined_code(self): From fb3c0c17eb58ea1b5d69a6bbdc872154b291507e Mon Sep 17 00:00:00 2001 From: arokem Date: Mon, 18 Aug 2014 14:23:31 -0700 Subject: [PATCH 054/308] RF: The format expected by publish_display_data is a list of dicts. --- pymatbridge/matlab_magic.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index b7d7f92..841c30f 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -210,6 +210,7 @@ def matlab(self, line, cell=None, local_ns=None): else: e_s = "There was an error running the code:\n %s"%code result_dict = self.eval(code) + except URLError: e_s += "\n-----------------------" e_s += "\nAre you sure Matlab is started?" @@ -224,19 +225,17 @@ def matlab(self, line, cell=None, local_ns=None): display_data = [] if text_output and not args.silent: - display_data.append(('MatlabMagic.matlab', - {'text/plain':text_output})) + display_data.append({'text/plain':text_output}) for imgf in imgfiles: if len(imgf): # Store the path to the directory so that you can delete it # later on: image = open(imgf, 'rb').read() - display_data.append(('MatlabMagic.matlab', - {'image/png': image})) + display_data.append({'image/png': image}) - for tag, disp_d in display_data: - publish_display_data(tag, disp_d) + for disp_d in display_data: + publish_display_data(disp_d) # Delete the temporary data files created by matlab: if len(data_dir): From 10fd2ddb77438993ab564dbb3acb24d273949e19 Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Mon, 11 Aug 2014 11:45:55 -0400 Subject: [PATCH 055/308] Make codebase python3 compatible. --- pymatbridge/compat.py | 10 ++++++++++ pymatbridge/matlab_magic.py | 7 +++---- pymatbridge/pymatbridge.py | 16 ++++++++-------- pymatbridge/tests/test_json.py | 1 + pymatbridge/tests/test_run_code.py | 25 +++++++++++++------------ 5 files changed, 35 insertions(+), 24 deletions(-) create mode 100644 pymatbridge/compat.py diff --git a/pymatbridge/compat.py b/pymatbridge/compat.py new file mode 100644 index 0000000..bca21fc --- /dev/null +++ b/pymatbridge/compat.py @@ -0,0 +1,10 @@ +import sys + +PY3 = sys.version_info[0] == 3 + +if PY3: + text_type = str + unichr = chr +else: + text_type = unicode + unichr = unichr diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index 841c30f..4a88515 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -17,7 +17,6 @@ from glob import glob from shutil import rmtree from getopt import getopt -from urllib2 import URLError import numpy as np try: @@ -37,6 +36,7 @@ from IPython.utils.py3compat import str_to_unicode, unicode_to_str, PY3 import pymatbridge as pymat +from .compat import text_type class MatlabInterperterError(RuntimeError): @@ -56,7 +56,7 @@ def __unicode__(self): __str__ = __unicode__ else: def __str__(self): - return unicode_to_str(unicode(self), 'utf-8') + return unicode_to_str(text_type(self), 'utf-8') @@ -210,8 +210,7 @@ def matlab(self, line, cell=None, local_ns=None): else: e_s = "There was an error running the code:\n %s"%code result_dict = self.eval(code) - - except URLError: + except: e_s += "\n-----------------------" e_s += "\nAre you sure Matlab is started?" raise RuntimeError(e_s) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 8cd7fb4..1c5a1fb 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -114,8 +114,8 @@ def _run_server(self): # Start server/client session and make the connection def start(self): # Start the MATLAB server in a new process - print "Starting %s on ZMQ socket %s" % (self._program_name(), self.socket_addr) - print "Send 'exit' command to kill the server" + print("Starting %s on ZMQ socket %s" % (self._program_name(), self.socket_addr)) + print("Send 'exit' command to kill the server") self._run_server() # Start the client @@ -127,15 +127,15 @@ def start(self): # Test if connection is established if self.is_connected(): - print "%s started and connected!" % self._program_name() + print("%s started and connected!" % self._program_name()) return True else: - print "%s failed to start" % self._program_name() + print("%s failed to start" % self._program_name()) return False def _response(self, **kwargs): req = json.dumps(kwargs, cls=ComplexEncoder) - self.socket.send(req) + self.socket.send_string(req) resp = self.socket.recv_string() return resp @@ -143,7 +143,7 @@ def _response(self, **kwargs): def stop(self): # Matlab should respond with "exit" if successful if self._response(cmd='exit') == "exit": - print "%s closed" % self._program_name() + print("%s closed" % self._program_name()) self.started = False return True @@ -155,7 +155,7 @@ def is_connected(self): return False req = json.dumps(dict(cmd="connect"), cls=ComplexEncoder) - self.socket.send(req) + self.socket.send_string(req) start_time = time.time() while True: @@ -166,7 +166,7 @@ def is_connected(self): sys.stdout.write('.') time.sleep(1) if time.time() - start_time > self.maxtime: - print "%s session timed out after %d seconds" % (self._program_name(), self.maxtime) + print("%s session timed out after %d seconds" % (self._program_name(), self.maxtime)) return False def is_function_processor_working(self): diff --git a/pymatbridge/tests/test_json.py b/pymatbridge/tests/test_json.py index 86973b8..4028aff 100644 --- a/pymatbridge/tests/test_json.py +++ b/pymatbridge/tests/test_json.py @@ -1,4 +1,5 @@ import pymatbridge as pymat +from pymatbridge.compat import unichr import numpy.testing as npt import test_utils as tu diff --git a/pymatbridge/tests/test_run_code.py b/pymatbridge/tests/test_run_code.py index 2693ce1..6f929bb 100644 --- a/pymatbridge/tests/test_run_code.py +++ b/pymatbridge/tests/test_run_code.py @@ -1,4 +1,5 @@ import pymatbridge as pymat +from pymatbridge.compat import text_type import numpy.testing as npt import test_utils as tu @@ -38,19 +39,19 @@ def test_basic_operation(self): result_division = self.mlab.run_code("c = a / b")['content']['stdout'] if tu.on_octave(): - npt.assert_equal(result_assignment_a, unicode("a = 21.235\n")) - npt.assert_equal(result_assignment_b, unicode("b = 347.75\n")) - npt.assert_equal(result_sum, unicode("ans = 368.98\n")) - npt.assert_equal(result_diff, unicode("ans = -326.51\n")) - npt.assert_equal(result_product, unicode("ans = 7384.2\n")) - npt.assert_equal(result_division, unicode("c = 0.061063\n")) + npt.assert_equal(result_assignment_a, text_type("a = 21.235\n")) + npt.assert_equal(result_assignment_b, text_type("b = 347.75\n")) + npt.assert_equal(result_sum, text_type("ans = 368.98\n")) + npt.assert_equal(result_diff, text_type("ans = -326.51\n")) + npt.assert_equal(result_product, text_type("ans = 7384.2\n")) + npt.assert_equal(result_division, text_type("c = 0.061063\n")) else: - npt.assert_equal(result_assignment_a, unicode("\na =\n\n 21.2345\n\n")) - npt.assert_equal(result_assignment_b, unicode("\nb =\n\n 347.7450\n\n")) - npt.assert_equal(result_sum, unicode("\nans =\n\n 368.9795\n\n")) - npt.assert_equal(result_diff, unicode("\nans =\n\n -326.5105\n\n")) - npt.assert_equal(result_product, unicode("\nans =\n\n 7.3842e+03\n\n")) - npt.assert_equal(result_division, unicode("\nc =\n\n 0.0611\n\n")) + npt.assert_equal(result_assignment_a, text_type("\na =\n\n 21.2345\n\n")) + npt.assert_equal(result_assignment_b, text_type("\nb =\n\n 347.7450\n\n")) + npt.assert_equal(result_sum, text_type("\nans =\n\n 368.9795\n\n")) + npt.assert_equal(result_diff, text_type("\nans =\n\n -326.5105\n\n")) + npt.assert_equal(result_product, text_type("\nans =\n\n 7.3842e+03\n\n")) + npt.assert_equal(result_division, text_type("\nc =\n\n 0.0611\n\n")) # Put in some undefined code def test_undefined_code(self): From dbcbe25263eeaa060469d37ae5d4911a48bb8c3f Mon Sep 17 00:00:00 2001 From: arokem Date: Mon, 18 Aug 2014 17:33:04 -0700 Subject: [PATCH 056/308] Account for changes in behavior across versions of IPython. --- pymatbridge/matlab_magic.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index 4a88515..f05ff48 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -27,6 +27,10 @@ no_io_str = "Must have scipy.io to perform i/o" no_io_str += "operations with the Matlab session" +import IPython + +ipython_version = int(IPython.__version__[0]) + from IPython.core.displaypub import publish_display_data from IPython.core.magic import (Magics, magics_class, cell_magic, line_magic, line_cell_magic, needs_local_scope) @@ -224,14 +228,22 @@ def matlab(self, line, cell=None, local_ns=None): display_data = [] if text_output and not args.silent: - display_data.append({'text/plain':text_output}) + if ipython_version < 3: + display_data.append(('MatlabMagic.matlab', + {'text/plain':text_output})) + else: + display_data.append({'text/plain':text_output}) for imgf in imgfiles: if len(imgf): # Store the path to the directory so that you can delete it # later on: image = open(imgf, 'rb').read() - display_data.append({'image/png': image}) + if ipython_version < 3: + display_data.append(('MatlabMagic.matlab', + {'image/png':image})) + else: + display_data.append({'image/png': image}) for disp_d in display_data: publish_display_data(disp_d) From 74e9d3bc7c8276a00e8600ace4b4e91befe80cc8 Mon Sep 17 00:00:00 2001 From: arokem Date: Mon, 18 Aug 2014 17:38:15 -0700 Subject: [PATCH 057/308] BF: isrow only exists in later versions of matlab. So - we ship our own. --- pymatbridge/matlab/util/isrow.m | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 pymatbridge/matlab/util/isrow.m diff --git a/pymatbridge/matlab/util/isrow.m b/pymatbridge/matlab/util/isrow.m new file mode 100644 index 0000000..767adef --- /dev/null +++ b/pymatbridge/matlab/util/isrow.m @@ -0,0 +1,14 @@ +function Y = isrow(X) +% +% ISROW True for row vectors. +% +% Y = ISROW(X) returns logical 1 if X is a row vector, 0 otherwise. +% ISROW returns 1 for scalars also. +% +% + +if ndims(X)==2 & size(X,1)==1 & size(X,2)>=1 + Y = logical(1); +else + Y = logical(0); +end \ No newline at end of file From a7f11737407af099f050336b24a7702d738969a8 Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 19 Aug 2014 10:32:39 -0700 Subject: [PATCH 058/308] BF: For IPython versions <3 --- pymatbridge/matlab_magic.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index f05ff48..5d1d703 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -246,7 +246,10 @@ def matlab(self, line, cell=None, local_ns=None): display_data.append({'image/png': image}) for disp_d in display_data: - publish_display_data(disp_d) + if ipython_version < 3: + publish_display_data(disp_d[0], disp_d[1]) + else: + publish_display_data(disp_d) # Delete the temporary data files created by matlab: if len(data_dir): From e20c1c226f1bae203f1761608bbab0b7ca9277dd Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Tue, 19 Aug 2014 13:09:47 -0400 Subject: [PATCH 059/308] Fix warning in is_function_processor_working. The path to test_sum.m was wrong. It still works because run_func works by adding the directory to the path and then calling the function; the addpath fails with a warning, but test_sum.m is on the path anyway because it's under matlab/. --- pymatbridge/pymatbridge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 1c5a1fb..8b52d56 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -170,7 +170,7 @@ def is_connected(self): return False def is_function_processor_working(self): - result = self.run_func('%s/test_functions/test_sum.m' % MATLAB_FOLDER, + result = self.run_func('%s/usrprog/test_sum.m' % MATLAB_FOLDER, {'echo': '%s: Function processor is working!' % self._program_name()}) return result['success'] == 'true' From 40d62f8c98a44e594cadf78d15e93a2c8377acd5 Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Tue, 19 Aug 2014 13:26:47 -0400 Subject: [PATCH 060/308] Rename matlab functions to match filename. This fixes some warnings on Octave. (Also update the docs for pymat_eval, which were still describing web_eval). --- pymatbridge/matlab/usrprog/demo_func.m | 3 +-- pymatbridge/matlab/usrprog/precision_divide.m | 2 +- pymatbridge/matlab/usrprog/precision_multiply.m | 2 +- pymatbridge/matlab/usrprog/precision_pass.m | 2 +- pymatbridge/matlab/usrprog/precision_sqrt.m | 2 +- pymatbridge/matlab/usrprog/precision_sum.m | 2 +- pymatbridge/matlab/util/pymat_eval.m | 13 ++++++------- pymatbridge/matlab/util/pymat_feval.m | 2 +- 8 files changed, 13 insertions(+), 15 deletions(-) diff --git a/pymatbridge/matlab/usrprog/demo_func.m b/pymatbridge/matlab/usrprog/demo_func.m index f0b6239..394841b 100644 --- a/pymatbridge/matlab/usrprog/demo_func.m +++ b/pymatbridge/matlab/usrprog/demo_func.m @@ -1,5 +1,4 @@ -function res = test(args) -% demonstration function; formerly known as 'test.m' +function res = demo_func(args) res = args.a + 1; figure diff --git a/pymatbridge/matlab/usrprog/precision_divide.m b/pymatbridge/matlab/usrprog/precision_divide.m index 6948cc9..0e16d5c 100644 --- a/pymatbridge/matlab/usrprog/precision_divide.m +++ b/pymatbridge/matlab/usrprog/precision_divide.m @@ -1,4 +1,4 @@ -function res = test_precision_divide(args) +function res = precision_divide(args) % This function devides val1 by val2 and returns the result res = args.val1 / args.val2; diff --git a/pymatbridge/matlab/usrprog/precision_multiply.m b/pymatbridge/matlab/usrprog/precision_multiply.m index 11557f5..1c12f23 100644 --- a/pymatbridge/matlab/usrprog/precision_multiply.m +++ b/pymatbridge/matlab/usrprog/precision_multiply.m @@ -1,4 +1,4 @@ -function res = test_precision_multiply(args) +function res = precision_multiply(args) % This function returns the product of two arguments val1 and val2 res = args.val1 * args.val2; diff --git a/pymatbridge/matlab/usrprog/precision_pass.m b/pymatbridge/matlab/usrprog/precision_pass.m index afc57bd..1225c1c 100644 --- a/pymatbridge/matlab/usrprog/precision_pass.m +++ b/pymatbridge/matlab/usrprog/precision_pass.m @@ -1,4 +1,4 @@ -function res = test_precision_pass(args) +function res = precision_pass(args) % This function takes an argument val and simply return it res = args.val; diff --git a/pymatbridge/matlab/usrprog/precision_sqrt.m b/pymatbridge/matlab/usrprog/precision_sqrt.m index c6a4e35..ef87cf0 100644 --- a/pymatbridge/matlab/usrprog/precision_sqrt.m +++ b/pymatbridge/matlab/usrprog/precision_sqrt.m @@ -1,4 +1,4 @@ -function res = test_precision_sqrt(args) +function res = precision_sqrt(args) % This function returns the square root of the value res = sqrt(args.val); diff --git a/pymatbridge/matlab/usrprog/precision_sum.m b/pymatbridge/matlab/usrprog/precision_sum.m index ce0528c..6d6bd45 100644 --- a/pymatbridge/matlab/usrprog/precision_sum.m +++ b/pymatbridge/matlab/usrprog/precision_sum.m @@ -1,4 +1,4 @@ -function res = test_precision_sum(args) +function res = precision_sum(args) % This function returns the sum of two arguments val1 and val2 res = args.val1 + args.val2; diff --git a/pymatbridge/matlab/util/pymat_eval.m b/pymatbridge/matlab/util/pymat_eval.m index 510d753..64d081b 100644 --- a/pymatbridge/matlab/util/pymat_eval.m +++ b/pymatbridge/matlab/util/pymat_eval.m @@ -1,14 +1,13 @@ -function json_response = web_eval(req); -%WEB_EVAL: Returns a json object of the result of calling the function +function json_response = pymat_eval(req); +% PYMAT_EVAL: Returns a json object of the result of calling the function % -% json_response = WEB_EVAL(headers); -% json_response = WEB_EVAL(headers, config); +% json_response = pymat_eval(req); % -% This allows you to run any matlab code. To be used with webserver.m. -% HTTP POST to /web_eval.m with the following parameters: +% This allows you to run any matlab code. req should be a struct with the +% following fields: % code: a string which contains the code to be run in the matlab session % -% Should return a json object containing the result +% Should return a json object containing the result. % % Based on Max Jaderberg's web_feval diff --git a/pymatbridge/matlab/util/pymat_feval.m b/pymatbridge/matlab/util/pymat_feval.m index 137abcb..9a74e13 100644 --- a/pymatbridge/matlab/util/pymat_feval.m +++ b/pymatbridge/matlab/util/pymat_feval.m @@ -1,6 +1,6 @@ % Max Jaderberg 2011 -function json_response = matlab_feval(req) +function json_response = pymat_feval(req) response.success = 'false'; field_names = fieldnames(req); From 2f00a3c224fc0c71f47c958979f03a5bbb7b859d Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Tue, 19 Aug 2014 13:39:11 -0400 Subject: [PATCH 061/308] Simplify matlabserver. There's no need for this indirection since we know which function we're calling. --- pymatbridge/matlab/matlabserver.m | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/pymatbridge/matlab/matlabserver.m b/pymatbridge/matlab/matlabserver.m index 9e20c1e..8fa7507 100644 --- a/pymatbridge/matlab/matlabserver.m +++ b/pymatbridge/matlab/matlabserver.m @@ -20,18 +20,15 @@ function matlabserver(socket_address) break; case {'run_function'} - fhandle = str2func('pymat_feval'); - resp = feval(fhandle, req); + resp = pymat_feval(req); messenger('respond', resp); case {'run_code'} - fhandle = str2func('pymat_eval'); - resp = feval(fhandle, req); + resp = pymat_eval(req); messenger('respond', resp); case {'get_var'} - fhandle = str2func('pymat_get_variable'); - resp = feval(fhandle, req); + resp = pymat_get_variable(req); messenger('respond', resp); otherwise From f7b18ea161010364434f4ebac3e53a5bf737c6bc Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Thu, 28 Aug 2014 14:08:23 -0700 Subject: [PATCH 062/308] _Session.set_variable for ndarray and spmatrix This function will correctly serialize numpy arrays as json due to customizations to the JSON encoder. Additionally, this function will handle scipy sparse matrices as well. The matlab magic now calls this function. This commit *DOES NOT* add any new dependencies to numpy and scipy, and the code should function as normal without them. --- pymatbridge/matlab_magic.py | 11 ++++----- pymatbridge/pymatbridge.py | 45 +++++++++++++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 11 deletions(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index 5d1d703..7d94e89 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -130,8 +130,7 @@ def set_matlab_var(self, name, value): """ Set up a variable in Matlab workspace """ - run_dict = self.Matlab.run_func("pymat_set_variable.m", - {'name':name, 'value':value}) + run_dict = self.Matlab.set_variable(name, value) if run_dict['success'] == 'false': raise MatlabInterperterError(line, run_dict['content']['stdout']) @@ -194,11 +193,9 @@ def matlab(self, line, cell=None, local_ns=None): val = local_ns[input] except KeyError: val = self.shell.user_ns[input] - - # To make an array JSON serializable - if (isinstance(val, np.ndarray)): - val = val.tolist() - + # The _Session.set_variable function which this calls + # should correctly detect numpy arrays and serialize them + # as json correctly. self.set_matlab_var(input, val) else: diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 8b52d56..e04a055 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -14,12 +14,31 @@ import subprocess import sys import json +from random import randint -# JSON encoder extension to handle complex numbers -class ComplexEncoder(json.JSONEncoder): +try: + from numpy import ndarray, generic +except ImportError: + class ndarray: + pass + generic = ndarray + +try: + from scipy.sparse import spmatrix +except ImportError: + class spmatrix: + pass + + +# JSON encoder extension to handle complex numbers and numpy arrays +class PymatEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, complex): return {'real':obj.real, 'imag':obj.imag} + if isinstance(obj, ndarray): + return obj.tolist() + if isinstance(obj, generic): + return obj.item() # Handle the default case return json.JSONEncoder.default(self, obj) @@ -134,7 +153,7 @@ def start(self): return False def _response(self, **kwargs): - req = json.dumps(kwargs, cls=ComplexEncoder) + req = json.dumps(kwargs, cls=PymatEncoder) self.socket.send_string(req) resp = self.socket.recv_string() return resp @@ -154,7 +173,7 @@ def is_connected(self): time.sleep(2) return False - req = json.dumps(dict(cmd="connect"), cls=ComplexEncoder) + req = json.dumps(dict(cmd="connect"), cls=PymatEncoder) self.socket.send_string(req) start_time = time.time() @@ -192,6 +211,24 @@ def run_code(self, code): def get_variable(self, varname): return self._json_response(cmd='get_var', varname=varname)['var'] + def set_variable(self, varname, value): + if isinstance(value, spmatrix): + return self._set_sparse_variable(varname, value) + return self.run_func('pymat_set_variable.m', + {'name': varname, 'value': value}) + + def _set_sparse_variable(self, varname, value): + value = value.todok() + prefix = 'pymatbridge_temp_sparse_%d_' % randint(0, 1000000) + self.set_variable(prefix + 'keys', value.keys()) + # correct for 1-indexing in MATLAB + self.run_code('{0}keys = {0}keys + 1;'.format(prefix)) + self.set_variable(prefix + 'values', value.values()) + cmd = "{1} = sparse({0}keys(:, 1), {0}keys(:, 2), {0}values');" + result = self.run_code(cmd.format(prefix, varname)) + self.run_code('clear {0}keys {0}values'.format(prefix)) + return result + class Matlab(_Session): def __init__(self, executable='matlab', socket_addr=None, From ce4c3c0fafc9ccf5f7d11b328daf93cdc4d8fefe Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Fri, 29 Aug 2014 14:52:55 -0700 Subject: [PATCH 063/308] use uuid4 instead of randint for uniqueness This is needed when generating temporary variables for transferring a sparse matrix. --- pymatbridge/pymatbridge.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index e04a055..5121441 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -14,7 +14,7 @@ import subprocess import sys import json -from random import randint +from uuid import uuid4 try: from numpy import ndarray, generic @@ -219,7 +219,7 @@ def set_variable(self, varname, value): def _set_sparse_variable(self, varname, value): value = value.todok() - prefix = 'pymatbridge_temp_sparse_%d_' % randint(0, 1000000) + prefix = 'pymatbridge_temp_sparse_%s_' % uuid4().hex self.set_variable(prefix + 'keys', value.keys()) # correct for 1-indexing in MATLAB self.run_code('{0}keys = {0}keys + 1;'.format(prefix)) From 59cfbed523d905937f3a126742a6a61b8117c7ac Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 10 Sep 2014 20:39:46 -0500 Subject: [PATCH 064/308] Python3 fixes --- README.md | 2 +- messenger/make.py | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 75728d1..ae5c2f3 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ same name. For example, to call the function jk in jk.m: you would call: res = mlab.run_func('path/to/jk.m', {'arg1': 3, 'arg2': 5}) - print res['result'] + print(es['result']) This would print `8`. diff --git a/messenger/make.py b/messenger/make.py index cc35a94..fa686be 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -1,5 +1,5 @@ #!/usr/bin/python - +from __future__ import print_function import os import sys import fnmatch @@ -8,7 +8,7 @@ # Check the system platform first platform = sys.platform -print "This is a " + platform + " system" +print("This is a " + platform + " system") if platform.startswith('linux'): messenger_dir = 'mexa64' @@ -25,30 +25,30 @@ # Open the configure file and start parsing config = open(os.path.join(messenger_dir, 'local.cfg'), 'r') -for line in config: +for line in config.decode('utf-8'): path = line.split('=') if path[0] == "MATLAB_BIN": - print "Searching for Matlab bin folder in local.cfg ..." + print("Searching for Matlab bin folder in local.cfg ...") matlab_bin = path[1].rstrip('\r\n') if matlab_bin == "": raise ValueError("Could not find Matlab bin folder. Please add it to local.cfg") - print "Matlab found in " + matlab_bin + print("Matlab found in " + matlab_bin) elif path[0] == "HEADER_PATH": - print "Searching for zmq.h in local.cfg ..." + print("Searching for zmq.h in local.cfg ...") header_path = path[1].rstrip('\r\n') if header_path == "": raise ValueError("Could not find zmq.h. Please add its path to local.cfg") - print "zmq.h found in " + header_path + print("zmq.h found in " + header_path) elif path[0] == "LIB_PATH": - print "Searching for zmq library in local.cfg ..." + print("Searching for zmq library in local.cfg ...") lib_path = path[1].rstrip('\r\n') if lib_path == "": raise ValueError("Could not find zmq library. Please add its path to local.cfg") - print "zmq library found in " + lib_path + print("zmq library found in " + lib_path) config.close() @@ -62,7 +62,7 @@ check_extension = subprocess.Popen(extcmd, stdout = subprocess.PIPE) extension = check_extension.stdout.readline().rstrip('\r\n') -print "Building messenger." + extension + " ..." +print("Building messenger." + extension + " ...") # Build the mex file if platform == 'win32': From fd0b714cb54963d8606987f38f70514c9b88eb25 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 10 Sep 2014 20:52:51 -0500 Subject: [PATCH 065/308] Decode opened files --- pymatbridge/examples/pymatbridge.ipynb | 4 ++-- pymatbridge/matlab_magic.py | 2 +- setup.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pymatbridge/examples/pymatbridge.ipynb b/pymatbridge/examples/pymatbridge.ipynb index 8d29af9..17747cb 100644 --- a/pymatbridge/examples/pymatbridge.ipynb +++ b/pymatbridge/examples/pymatbridge.ipynb @@ -149,7 +149,7 @@ " display_data.append(('MatlabMagic.matlab',\n", " {'text/plain':text_output}))\n", "for imgf in imgfiles:\n", - " image = open(imgf[0], 'rb').read() \n", + " image = open(imgf[0], 'rb').read().decode('utf-8') \n", " display_data.append(('MatlabMagic.matlab', {'image/png': image}))\n", "\n", "for tag, disp_d in display_data:\n", @@ -257,4 +257,4 @@ "metadata": {} } ] -} \ No newline at end of file +} diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index 7d94e89..a57210c 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -235,7 +235,7 @@ def matlab(self, line, cell=None, local_ns=None): if len(imgf): # Store the path to the directory so that you can delete it # later on: - image = open(imgf, 'rb').read() + image = open(imgf, 'rb').read().decode('utf-8') if ipython_version < 3: display_data.append(('MatlabMagic.matlab', {'image/png':image})) diff --git a/setup.py b/setup.py index 4c55b21..b27a974 100755 --- a/setup.py +++ b/setup.py @@ -31,7 +31,7 @@ def copy_bin(bin_path): # Get version and release info, which is all stored in pymatbridge/version.py ver_file = os.path.join('pymatbridge', 'version.py') -exec(open(ver_file).read()) +exec(open(ver_file).read().decode('utf-8')) opts = dict(name=NAME, maintainer=MAINTAINER, From 4491c3703619ece92e5519f73cee358c4a66330f Mon Sep 17 00:00:00 2001 From: arokem Date: Thu, 25 Sep 2014 11:19:13 -0700 Subject: [PATCH 066/308] BF: No need for these calls to `decode`. In my hands, these caused crashes on installation and testing on both python 2 and python 3. --- pymatbridge/matlab_magic.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index a57210c..7d94e89 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -235,7 +235,7 @@ def matlab(self, line, cell=None, local_ns=None): if len(imgf): # Store the path to the directory so that you can delete it # later on: - image = open(imgf, 'rb').read().decode('utf-8') + image = open(imgf, 'rb').read() if ipython_version < 3: display_data.append(('MatlabMagic.matlab', {'image/png':image})) diff --git a/setup.py b/setup.py index b27a974..4c55b21 100755 --- a/setup.py +++ b/setup.py @@ -31,7 +31,7 @@ def copy_bin(bin_path): # Get version and release info, which is all stored in pymatbridge/version.py ver_file = os.path.join('pymatbridge', 'version.py') -exec(open(ver_file).read().decode('utf-8')) +exec(open(ver_file).read()) opts = dict(name=NAME, maintainer=MAINTAINER, From 989f8992cf5b87a5f919c8db15b77995271151aa Mon Sep 17 00:00:00 2001 From: "Dougal J. Sutherland" Date: Mon, 29 Sep 2014 19:10:02 -0400 Subject: [PATCH 067/308] add install_name_tool/patchelf instructions to the readme --- README.md | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ae5c2f3..c85ac69 100644 --- a/README.md +++ b/README.md @@ -32,18 +32,41 @@ are listed below. If you specified a prefix when installing zmq, the library file should be located at the same prefix location. -After the library file is located, you need to add it to dynamic loader path on your -machine. On MacOS, you can do this by adding the following line to your .bash_profile: +The pymatbridge MEX extension needs to be able to locate the zmq library. If it's in a +standard location, you may not need to do anything; if not, there are two ways to +accomplish this: + +#### Using the dynamic loader path + +One option is to set an environment variable which will point the loader to the right +directory. + +On MacOS, you can do this by adding the following line to your .bash_profile (or similar +file for your shell): export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH: -On Linux, add the following line to your .bash_profile: +On Linux, add the following line to your .bash_profile (or similar file for your shell): export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH: On Windows, add the install location of libzmq.dll to the PATH environment variable. On Windows 7+, typing "environment variables" into the start menu will bring up the apporpriate Control Panel links. + +#### Pointing the binary at the right place + +Another option is to modify the MEX binary to point to the right location. This is +preferable in that it doesn't change loader behavior for other libraries than just +the pymatbridge messenger. + +On MacOS, you can do this from the root of the pymatbridge code with: + + install_name_tool -change /usr/local/lib/libzmq.3.dylib /libzmq.3.dylib messenger/maci64/messenger.mexmaci64 + +On Linux, you can add it to the RPATH: + + patchelf --set-rpath messenger/mexa64/messenger.mexa64 ### Install pyzmq After step 1 is finished, please grab the latest version of From 7bedc7566a75aa7a025d6e28d6880b479c0f84b5 Mon Sep 17 00:00:00 2001 From: Stephen Bischoff Date: Thu, 9 Oct 2014 16:04:24 -0400 Subject: [PATCH 068/308] Update README.md Typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c85ac69..0e782ed 100644 --- a/README.md +++ b/README.md @@ -135,7 +135,7 @@ same name. For example, to call the function jk in jk.m: you would call: res = mlab.run_func('path/to/jk.m', {'arg1': 3, 'arg2': 5}) - print(es['result']) + print(res['result']) This would print `8`. From b47e5da875fb782df14088262bacb71514c9fe8f Mon Sep 17 00:00:00 2001 From: dukebody Date: Mon, 27 Oct 2014 18:00:23 +0100 Subject: [PATCH 069/308] Make get_variable return None if the var doesn't exist in the Matlab workspace. --- pymatbridge/matlab/util/pymat_get_variable.m | 12 +++++++++++- pymatbridge/pymatbridge.py | 8 ++++++-- pymatbridge/tests/test_get_variable.py | 14 ++++++++++---- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/pymatbridge/matlab/util/pymat_get_variable.m b/pymatbridge/matlab/util/pymat_get_variable.m index 391a133..8e6a29e 100644 --- a/pymatbridge/matlab/util/pymat_get_variable.m +++ b/pymatbridge/matlab/util/pymat_get_variable.m @@ -24,7 +24,17 @@ varname = req.varname; -response.var = evalin('base', varname); + +% if the var doesn't exist in the workspace, inform adequately +expr = strcat('exist(''', varname, ''',''var'')'); +var_exists = evalin('base', expr); +if ~var_exists; + response.exists = false; + response.var = ''; +else + response.exists = true; + response.var = evalin('base', varname); +end json_response = json_dump(response); diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 5121441..ae5b5b2 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -208,8 +208,12 @@ def run_func(self, func_path, func_args=None): def run_code(self, code): return self._json_response(cmd='run_code', code=code) - def get_variable(self, varname): - return self._json_response(cmd='get_var', varname=varname)['var'] + def get_variable(self, varname, default=None): + response = self._json_response(cmd='get_var', varname=varname) + if response['exists']: + return response['var'] + else: + return default def set_variable(self, varname, value): if isinstance(value, spmatrix): diff --git a/pymatbridge/tests/test_get_variable.py b/pymatbridge/tests/test_get_variable.py index 30cc28b..b344b0e 100644 --- a/pymatbridge/tests/test_get_variable.py +++ b/pymatbridge/tests/test_get_variable.py @@ -35,8 +35,14 @@ def test_get_array(self): # Try to get a non-existent variable - # This one will always fail now since the matlab function cannot handle this situation -# def test_nonexistent_var(self): -# self.mlab.run_code("clear") + def test_nonexistent_var(self): + self.mlab.run_code("clear") -# npt.assert_equal(self.mlab.get_variable('a'), unicode("456345.3453")) + npt.assert_equal(self.mlab.get_variable('a'), None) + + + # Try to get a non-existent variable with default + def test_nonexistent_var_default(self): + self.mlab.run_code("clear") + + npt.assert_equal(self.mlab.get_variable('a', 'some_val'), 'some_val') From 5b2989970dac2f0590b04af3bc09306bed2cf769 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 31 Oct 2014 13:39:26 -0500 Subject: [PATCH 070/308] Turn off warnings in the preamble while loading the matlab folder --- pymatbridge/pymatbridge.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index ae5b5b2..d6006b0 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -115,7 +115,9 @@ def _program_name(self): raise NotImplemented def _preamble_code(self): - return ["addpath(genpath('%s'))" % MATLAB_FOLDER] + return ["warning('off','all')", + "addpath(genpath('%s'))" % MATLAB_FOLDER, + "warning('on', 'all')"] def _execute_flag(self): raise NotImplemented From e24e957d63b2c6d56ae42101207b5417ac61d0fd Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 31 Oct 2014 13:45:05 -0500 Subject: [PATCH 071/308] Add descriptive comment --- pymatbridge/pymatbridge.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index d6006b0..c0667c0 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -115,6 +115,9 @@ def _program_name(self): raise NotImplemented def _preamble_code(self): + # suppress warnings while loading the path, in the case of + # overshadowing a built-in function on a newer version of + # Matlab (e.g. isrow) return ["warning('off','all')", "addpath(genpath('%s'))" % MATLAB_FOLDER, "warning('on', 'all')"] From e34c10dad07a118ad13ae0079d06ede7864053ff Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 16 Jan 2015 16:56:17 -0600 Subject: [PATCH 072/308] Implement efficient handling of large array passing to Matlab --- pymatbridge/matlab/util/json_v0.2.2/json/json_load.m | 5 +++++ pymatbridge/pymatbridge.py | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m index 39dcf6d..22f37f3 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m @@ -127,6 +127,11 @@ complex_value = complex(value.real, value.imag); value = complex_value; end + % Check if the struct just decoded represents a numpy array + if isfield(value,'ndarray') && isfield(value, 'shape') + arr = typecast(unicode2native(value.data, 'latin-1'), 'double') + value = reshape(arr, value.shape); + end % In MATLAB, nested classes end up with a $ in the name, in Octave it's a . elseif isa(node, 'org.json.JSONObject$Null') || isa(node, 'org.json.JSONObject.Null') value = []; diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index c0667c0..0111d0c 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -36,7 +36,11 @@ def default(self, obj): if isinstance(obj, complex): return {'real':obj.real, 'imag':obj.imag} if isinstance(obj, ndarray): - return obj.tolist() + if obj.size > 100: + return {'ndarray': True, 'shape': list(obj.shape), + 'data': obj.astype(float).tobytes().encode('latin-1')} + else: + return obj.tolist() if isinstance(obj, generic): return obj.item() # Handle the default case From 0af4ccd7c32359024143eed2ad91f5616853d69f Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 16 Jan 2015 21:00:38 -0600 Subject: [PATCH 073/308] Use base64 encoding for large arrays --- .../matlab/util/json_v0.2.2/json/json_load.m | 94 ++++++++++++++++++- pymatbridge/pymatbridge.py | 10 +- 2 files changed, 98 insertions(+), 6 deletions(-) diff --git a/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m index 22f37f3..8efb850 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m @@ -129,8 +129,9 @@ end % Check if the struct just decoded represents a numpy array if isfield(value,'ndarray') && isfield(value, 'shape') - arr = typecast(unicode2native(value.data, 'latin-1'), 'double') - value = reshape(arr, value.shape); + disp(value.shape) + arr = typecast(base64decode(value.data), 'double'); + value = arr; %reshape(arr, value.shape); end % In MATLAB, nested classes end up with a $ in the name, in Octave it's a . elseif isa(node, 'org.json.JSONObject$Null') || isa(node, 'org.json.JSONObject.Null') @@ -203,3 +204,92 @@ vec = [vec, uint8([fields{:}])]; end end + + + +function y = base64decode(x) +%BASE64DECODE Perform base64 decoding on a string. +% +% BASE64DECODE(STR) decodes the given base64 string STR. +% +% Any character not part of the 65-character base64 subset set is silently +% ignored. +% +% This function is used to decode strings from the Base64 encoding specified +% in RFC 2045 - MIME (Multipurpose Internet Mail Extensions). The Base64 +% encoding is designed to represent arbitrary sequences of octets in a form +% that need not be humanly readable. A 65-character subset ([A-Za-z0-9+/=]) +% of US-ASCII is used, enabling 6 bits to be represented per printable +% character. +% +% See also BASE64ENCODE. + +% Author: Peter J. Acklam +% Time-stamp: 2004-09-20 08:20:50 +0200 +% E-mail: pjacklam@online.no +% URL: http://home.online.no/~pjacklam + +% Modified by Guillaume Flandin, May 2008 + +% check number of input arguments +%-------------------------------------------------------------------------- + +error(nargchk(1, 1, nargin)); + +% Perform the following mapping +%-------------------------------------------------------------------------- +% A-Z -> 0 - 25 a-z -> 26 - 51 0-9 -> 52 - 61 +% + -> 62 / -> 63 = -> 64 +% anything else -> NaN + +base64chars = NaN(1,256); +base64chars('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=') = 0:64; +x = base64chars(x); + +% Remove/ignore any characters not in the base64 characters list or '=' +%-------------------------------------------------------------------------- + +x = x(~isnan(x)); + +% Replace any incoming padding ('=' -> 64) with a zero pad +%-------------------------------------------------------------------------- + +if x(end-1) == 64, p = 2; x(end-1:end) = 0; +elseif x(end) == 64, p = 1; x(end) = 0; +else p = 0; +end + +% Allocate decoded data array +%-------------------------------------------------------------------------- + +n = length(x) / 4; % number of groups +x = reshape(uint8(x), 4, n); % input data +y = zeros(3, n, 'uint8'); % decoded data + +% Rearrange every 4 bytes into 3 bytes +%-------------------------------------------------------------------------- +% 00aaaaaa 00bbbbbb 00cccccc 00dddddd +% +% to form +% +% aaaaaabb bbbbcccc ccdddddd + +y(1,:) = bitshift(x(1,:), 2); % 6 highest bits of y(1,:) +y(1,:) = bitor(y(1,:), bitshift(x(2,:), -4)); % 2 lowest bits of y(1,:) + +y(2,:) = bitshift(x(2,:), 4); % 4 highest bits of y(2,:) +y(2,:) = bitor(y(2,:), bitshift(x(3,:), -2)); % 4 lowest bits of y(2,:) + +y(3,:) = bitshift(x(3,:), 6); % 2 highest bits of y(3,:) +y(3,:) = bitor(y(3,:), x(4,:)); % 6 lowest bits of y(3,:) + +% Remove any zero pad that was added to make this a multiple of 24 bits +%-------------------------------------------------------------------------- + +if p, y(end-p+1:end) = []; end + +% Reshape to a row vector +%-------------------------------------------------------------------------- + +y = reshape(y, 1, []); +end diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 0111d0c..9440c44 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -9,7 +9,9 @@ This is a modified version using ZMQ, Haoxing Zhang Jan.2014 """ -import os, time +import os +import time +import codecs import zmq import subprocess import sys @@ -17,7 +19,7 @@ from uuid import uuid4 try: - from numpy import ndarray, generic + from numpy import ndarray, generic, float64 except ImportError: class ndarray: pass @@ -37,8 +39,8 @@ def default(self, obj): return {'real':obj.real, 'imag':obj.imag} if isinstance(obj, ndarray): if obj.size > 100: - return {'ndarray': True, 'shape': list(obj.shape), - 'data': obj.astype(float).tobytes().encode('latin-1')} + return {'ndarray': True, 'shape': obj.shape, + 'data': codecs.encode(obj.astype(float64).tobytes(), 'base64').decode('utf-8')} else: return obj.tolist() if isinstance(obj, generic): From 516b5d8394fb3aa29547d994fd1efef3dcf94d7a Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 16 Jan 2015 23:23:11 -0600 Subject: [PATCH 074/308] Finish implementing efficient arrays --- .../matlab/util/json_v0.2.2/json/json_dump.m | 172 +++++++++++++++++- .../matlab/util/json_v0.2.2/json/json_load.m | 131 +++++++------ pymatbridge/pymatbridge.py | 19 +- 3 files changed, 248 insertions(+), 74 deletions(-) diff --git a/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m index e582047..a200b4c 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m @@ -63,7 +63,6 @@ % mapped to the same json string '[1,2]'. % % See also json.load json.write - json_startup('WarnOnAddpath', true); options = get_options_(varargin{:}); obj = dump_data_(value, options); @@ -102,7 +101,14 @@ elseif ~isscalar(value) obj = javaObject('org.json.JSONArray'); - if ndims(value) > 2 + if strcmp(class(value), 'double') + % encode double arrays as a struct + double_struct = struct; + double_struct.ndarray = 1; + double_struct.data = base64encode(typecast(value(:), 'uint8')); + double_struct.shape = base64encode(typecast(size(value), 'uint8')); + obj = dump_data_(double_struct, options); + elseif ndims(value) > 2 split_value = num2cell(value, 1:ndims(value)-1); for i = 1:numel(split_value) obj.put(dump_data_(split_value{i}, options)); @@ -151,3 +157,165 @@ error('json:typeError', 'Unsupported data type: %s', class(value)); end end + + +function y = base64encode(x, eol) +%BASE64ENCODE Perform base64 encoding on a string. +% +% BASE64ENCODE(STR, EOL) encode the given string STR. EOL is the line ending +% sequence to use; it is optional and defaults to '\n' (ASCII decimal 10). +% The returned encoded string is broken into lines of no more than 76 +% characters each, and each line will end with EOL unless it is empty. Let +% EOL be empty if you do not want the encoded string broken into lines. +% +% STR and EOL don't have to be strings (i.e., char arrays). The only +% requirement is that they are vectors containing values in the range 0-255. +% +% This function may be used to encode strings into the Base64 encoding +% specified in RFC 2045 - MIME (Multipurpose Internet Mail Extensions). The +% Base64 encoding is designed to represent arbitrary sequences of octets in a +% form that need not be humanly readable. A 65-character subset +% ([A-Za-z0-9+/=]) of US-ASCII is used, enabling 6 bits to be represented per +% printable character. +% +% Examples +% -------- +% +% If you want to encode a large file, you should encode it in chunks that are +% a multiple of 57 bytes. This ensures that the base64 lines line up and +% that you do not end up with padding in the middle. 57 bytes of data fills +% one complete base64 line (76 == 57*4/3): +% +% If ifid and ofid are two file identifiers opened for reading and writing, +% respectively, then you can base64 encode the data with +% +% while ~feof(ifid) +% fwrite(ofid, base64encode(fread(ifid, 60*57))); +% end +% +% or, if you have enough memory, +% +% fwrite(ofid, base64encode(fread(ifid))); +% +% See also BASE64DECODE. + +% Author: Peter J. Acklam +% Time-stamp: 2004-02-03 21:36:56 +0100 +% E-mail: pjacklam@online.no +% URL: http://home.online.no/~pjacklam + + % check number of input arguments + error(nargchk(1, 2, nargin)); + + % make sure we have the EOL value + if nargin < 2 + eol = ''; %sprintf('\n'); + else + if sum(size(eol) > 1) > 1 + error('EOL must be a vector.'); + end + if any(eol(:) > 255) + error('EOL can not contain values larger than 255.'); + end + end + + if sum(size(x) > 1) > 1 + error('STR must be a vector.'); + end + + x = uint8(x); + eol = uint8(eol); + + ndbytes = length(x); % number of decoded bytes + nchunks = ceil(ndbytes / 3); % number of chunks/groups + nebytes = 4 * nchunks; % number of encoded bytes + + % add padding if necessary, to make the length of x a multiple of 3 + if rem(ndbytes, 3) + x(end+1 : 3*nchunks) = 0; + end + + x = reshape(x, [3, nchunks]); % reshape the data + y = repmat(uint8(0), 4, nchunks); % for the encoded data + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Split up every 3 bytes into 4 pieces + % + % aaaaaabb bbbbcccc ccdddddd + % + % to form + % + % 00aaaaaa 00bbbbbb 00cccccc 00dddddd + % + y(1,:) = bitshift(x(1,:), -2); % 6 highest bits of x(1,:) + + y(2,:) = bitshift(bitand(x(1,:), 3), 4); % 2 lowest bits of x(1,:) + y(2,:) = bitor(y(2,:), bitshift(x(2,:), -4)); % 4 highest bits of x(2,:) + + y(3,:) = bitshift(bitand(x(2,:), 15), 2); % 4 lowest bits of x(2,:) + y(3,:) = bitor(y(3,:), bitshift(x(3,:), -6)); % 2 highest bits of x(3,:) + + y(4,:) = bitand(x(3,:), 63); % 6 lowest bits of x(3,:) + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Now perform the following mapping + % + % 0 - 25 -> A-Z + % 26 - 51 -> a-z + % 52 - 61 -> 0-9 + % 62 -> + + % 63 -> / + % + % We could use a mapping vector like + % + % ['A':'Z', 'a':'z', '0':'9', '+/'] + % + % but that would require an index vector of class double. + % + z = repmat(uint8(0), size(y)); + i = y <= 25; z(i) = 'A' + double(y(i)); + i = 26 <= y & y <= 51; z(i) = 'a' - 26 + double(y(i)); + i = 52 <= y & y <= 61; z(i) = '0' - 52 + double(y(i)); + i = y == 62; z(i) = '+'; + i = y == 63; z(i) = '/'; + y = z; + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Add padding if necessary. + % + npbytes = 3 * nchunks - ndbytes; % number of padding bytes + if npbytes + y(end-npbytes+1 : end) = '='; % '=' is used for padding + end + + if isempty(eol) + + % reshape to a row vector + y = reshape(y, [1, nebytes]); + + else + + nlines = ceil(nebytes / 76); % number of lines + neolbytes = length(eol); % number of bytes in eol string + + % pad data so it becomes a multiple of 76 elements + y(nebytes + 1 : 76 * nlines) = 0; + y = reshape(y, 76, nlines); + + % insert eol strings + eol = eol(:); + y(end + 1 : end + neolbytes, :) = eol(:, ones(1, nlines)); + + % remove padding, but keep the last eol string + m = nebytes + neolbytes * (nlines - 1); + n = (76+neolbytes)*nlines - neolbytes; + y(m+1 : n) = ''; + + % extract and reshape to row vector + y = reshape(y, 1, m+neolbytes); + + end + + % output is a character array + y = char(y); +end diff --git a/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m index 8efb850..428e666 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m @@ -129,9 +129,8 @@ end % Check if the struct just decoded represents a numpy array if isfield(value,'ndarray') && isfield(value, 'shape') - disp(value.shape) arr = typecast(base64decode(value.data), 'double'); - value = arr; %reshape(arr, value.shape); + value = reshape(arr, value.shape); end % In MATLAB, nested classes end up with a $ in the name, in Octave it's a . elseif isa(node, 'org.json.JSONObject$Null') || isa(node, 'org.json.JSONObject.Null') @@ -208,88 +207,88 @@ function y = base64decode(x) -%BASE64DECODE Perform base64 decoding on a string. -% -% BASE64DECODE(STR) decodes the given base64 string STR. -% -% Any character not part of the 65-character base64 subset set is silently -% ignored. -% -% This function is used to decode strings from the Base64 encoding specified -% in RFC 2045 - MIME (Multipurpose Internet Mail Extensions). The Base64 -% encoding is designed to represent arbitrary sequences of octets in a form -% that need not be humanly readable. A 65-character subset ([A-Za-z0-9+/=]) -% of US-ASCII is used, enabling 6 bits to be represented per printable -% character. -% -% See also BASE64ENCODE. + %BASE64DECODE Perform base64 decoding on a string. + % + % BASE64DECODE(STR) decodes the given base64 string STR. + % + % Any character not part of the 65-character base64 subset set is silently + % ignored. + % + % This function is used to decode strings from the Base64 encoding specified + % in RFC 2045 - MIME (Multipurpose Internet Mail Extensions). The Base64 + % encoding is designed to represent arbitrary sequences of octets in a form + % that need not be humanly readable. A 65-character subset ([A-Za-z0-9+/=]) + % of US-ASCII is used, enabling 6 bits to be represented per printable + % character. + % + % See also BASE64ENCODE. -% Author: Peter J. Acklam -% Time-stamp: 2004-09-20 08:20:50 +0200 -% E-mail: pjacklam@online.no -% URL: http://home.online.no/~pjacklam + % Author: Peter J. Acklam + % Time-stamp: 2004-09-20 08:20:50 +0200 + % E-mail: pjacklam@online.no + % URL: http://home.online.no/~pjacklam -% Modified by Guillaume Flandin, May 2008 + % Modified by Guillaume Flandin, May 2008 -% check number of input arguments -%-------------------------------------------------------------------------- + % check number of input arguments + %-------------------------------------------------------------------------- -error(nargchk(1, 1, nargin)); + error(nargchk(1, 1, nargin)); -% Perform the following mapping -%-------------------------------------------------------------------------- -% A-Z -> 0 - 25 a-z -> 26 - 51 0-9 -> 52 - 61 -% + -> 62 / -> 63 = -> 64 -% anything else -> NaN + % Perform the following mapping + %-------------------------------------------------------------------------- + % A-Z -> 0 - 25 a-z -> 26 - 51 0-9 -> 52 - 61 + % + -> 62 / -> 63 = -> 64 + % anything else -> NaN -base64chars = NaN(1,256); -base64chars('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=') = 0:64; -x = base64chars(x); + base64chars = NaN(1,256); + base64chars('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=') = 0:64; + x = base64chars(x); -% Remove/ignore any characters not in the base64 characters list or '=' -%-------------------------------------------------------------------------- + % Remove/ignore any characters not in the base64 characters list or '=' + %-------------------------------------------------------------------------- -x = x(~isnan(x)); + x = x(~isnan(x)); -% Replace any incoming padding ('=' -> 64) with a zero pad -%-------------------------------------------------------------------------- + % Replace any incoming padding ('=' -> 64) with a zero pad + %-------------------------------------------------------------------------- -if x(end-1) == 64, p = 2; x(end-1:end) = 0; -elseif x(end) == 64, p = 1; x(end) = 0; -else p = 0; -end + if x(end-1) == 64, p = 2; x(end-1:end) = 0; + elseif x(end) == 64, p = 1; x(end) = 0; + else p = 0; + end -% Allocate decoded data array -%-------------------------------------------------------------------------- + % Allocate decoded data array + %-------------------------------------------------------------------------- -n = length(x) / 4; % number of groups -x = reshape(uint8(x), 4, n); % input data -y = zeros(3, n, 'uint8'); % decoded data + n = length(x) / 4; % number of groups + x = reshape(uint8(x), 4, n); % input data + y = zeros(3, n, 'uint8'); % decoded data -% Rearrange every 4 bytes into 3 bytes -%-------------------------------------------------------------------------- -% 00aaaaaa 00bbbbbb 00cccccc 00dddddd -% -% to form -% -% aaaaaabb bbbbcccc ccdddddd + % Rearrange every 4 bytes into 3 bytes + %-------------------------------------------------------------------------- + % 00aaaaaa 00bbbbbb 00cccccc 00dddddd + % + % to form + % + % aaaaaabb bbbbcccc ccdddddd -y(1,:) = bitshift(x(1,:), 2); % 6 highest bits of y(1,:) -y(1,:) = bitor(y(1,:), bitshift(x(2,:), -4)); % 2 lowest bits of y(1,:) + y(1,:) = bitshift(x(1,:), 2); % 6 highest bits of y(1,:) + y(1,:) = bitor(y(1,:), bitshift(x(2,:), -4)); % 2 lowest bits of y(1,:) -y(2,:) = bitshift(x(2,:), 4); % 4 highest bits of y(2,:) -y(2,:) = bitor(y(2,:), bitshift(x(3,:), -2)); % 4 lowest bits of y(2,:) + y(2,:) = bitshift(x(2,:), 4); % 4 highest bits of y(2,:) + y(2,:) = bitor(y(2,:), bitshift(x(3,:), -2)); % 4 lowest bits of y(2,:) -y(3,:) = bitshift(x(3,:), 6); % 2 highest bits of y(3,:) -y(3,:) = bitor(y(3,:), x(4,:)); % 6 lowest bits of y(3,:) + y(3,:) = bitshift(x(3,:), 6); % 2 highest bits of y(3,:) + y(3,:) = bitor(y(3,:), x(4,:)); % 6 lowest bits of y(3,:) -% Remove any zero pad that was added to make this a multiple of 24 bits -%-------------------------------------------------------------------------- + % Remove any zero pad that was added to make this a multiple of 24 bits + %-------------------------------------------------------------------------- -if p, y(end-p+1:end) = []; end + if p, y(end-p+1:end) = []; end -% Reshape to a row vector -%-------------------------------------------------------------------------- + % Reshape to a row vector + %-------------------------------------------------------------------------- -y = reshape(y, 1, []); + y = reshape(y, 1, []); end diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 9440c44..4d00e85 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -19,7 +19,7 @@ from uuid import uuid4 try: - from numpy import ndarray, generic, float64 + from numpy import ndarray, generic, float64, array, frombuffer except ImportError: class ndarray: pass @@ -38,11 +38,12 @@ def default(self, obj): if isinstance(obj, complex): return {'real':obj.real, 'imag':obj.imag} if isinstance(obj, ndarray): - if obj.size > 100: - return {'ndarray': True, 'shape': obj.shape, - 'data': codecs.encode(obj.astype(float64).tobytes(), 'base64').decode('utf-8')} - else: - return obj.tolist() + shape = obj.shape + if len(shape) == 1: + shape = (obj.shape[0], 1) + data = codecs.encode(obj.astype(float64).tobytes(), 'base64') + return {'ndarray': True, 'shape': shape, + 'data': data.decode('utf-8')} if isinstance(obj, generic): return obj.item() # Handle the default case @@ -52,6 +53,12 @@ def default(self, obj): def as_complex(dct): if 'real' in dct and 'imag' in dct: return complex(dct['real'], dct['imag']) + if 'ndarray' in dct and 'data' in dct: + data = dct['data'].encode('utf-8') + shape = dct['shape'].encode('utf-8') + value = frombuffer(codecs.decode(data, 'base64'), float64) + shape = frombuffer(codecs.decode(shape, 'base64'), float64) + return value.reshape(shape) return dct MATLAB_FOLDER = '%s/matlab' % os.path.realpath(os.path.dirname(__file__)) From ebb1c2b8290738cbbf3897885812b4664d5c0c9f Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 16 Jan 2015 23:25:36 -0600 Subject: [PATCH 075/308] Add guard for cells --- pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m index a200b4c..77ba01d 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m @@ -101,7 +101,7 @@ elseif ~isscalar(value) obj = javaObject('org.json.JSONArray'); - if strcmp(class(value), 'double') + if strcmp(class(value), 'double') && ~iscell(value) % encode double arrays as a struct double_struct = struct; double_struct.ndarray = 1; From db15e5b3f47884d080897c8ed311ec8d04708178 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 17 Jan 2015 09:33:07 -0600 Subject: [PATCH 076/308] Add handling of Fortran order --- pymatbridge/pymatbridge.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 4d00e85..0a6c0fa 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -19,7 +19,7 @@ from uuid import uuid4 try: - from numpy import ndarray, generic, float64, array, frombuffer + from numpy import ndarray, generic, float64, frombuffer, asfortranarray except ImportError: class ndarray: pass @@ -34,21 +34,29 @@ class spmatrix: # JSON encoder extension to handle complex numbers and numpy arrays class PymatEncoder(json.JSONEncoder): + def default(self, obj): if isinstance(obj, complex): - return {'real':obj.real, 'imag':obj.imag} - if isinstance(obj, ndarray): + return {'real': obj.real, 'imag': obj.imag} + if isinstance(obj, ndarray) and not obj.dtype.kind == 'c': shape = obj.shape if len(shape) == 1: shape = (obj.shape[0], 1) - data = codecs.encode(obj.astype(float64).tobytes(), 'base64') - return {'ndarray': True, 'shape': shape, - 'data': data.decode('utf-8')} + if obj.flags.c_contiguous: + obj = obj.T + elif not obj.flags.f_contiguous: + obj = asfortranarray(obj) + data = obj.astype(float64).tobytes() + data = codecs.encode(data, 'base64').decode('utf-8') + return {'ndarray': True, 'shape': shape, 'data': data} + elif isinstance(obj, ndarray): + return obj.tolist() if isinstance(obj, generic): return obj.item() # Handle the default case return json.JSONEncoder.default(self, obj) + # JSON decoder for complex numbers def as_complex(dct): if 'real' in dct and 'imag' in dct: @@ -58,7 +66,7 @@ def as_complex(dct): shape = dct['shape'].encode('utf-8') value = frombuffer(codecs.decode(data, 'base64'), float64) shape = frombuffer(codecs.decode(shape, 'base64'), float64) - return value.reshape(shape) + return value.reshape(shape, order='F') return dct MATLAB_FOLDER = '%s/matlab' % os.path.realpath(os.path.dirname(__file__)) From 77103402608131e13270e1a102fd2d453d4daa4b Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 17 Jan 2015 09:33:36 -0600 Subject: [PATCH 077/308] Handle all arrays on the matlab end --- pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m index 77ba01d..672f3a7 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m @@ -101,10 +101,11 @@ elseif ~isscalar(value) obj = javaObject('org.json.JSONArray'); - if strcmp(class(value), 'double') && ~iscell(value) - % encode double arrays as a struct + if isnumeric(value) && isreal(value) + % encode arrays as a struct double_struct = struct; double_struct.ndarray = 1; + value = double(value); double_struct.data = base64encode(typecast(value(:), 'uint8')); double_struct.shape = base64encode(typecast(size(value), 'uint8')); obj = dump_data_(double_struct, options); From 350519f673b79f8676f9224c7809a36acf3dd366 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 17 Jan 2015 09:34:12 -0600 Subject: [PATCH 078/308] No need to convert to list --- pymatbridge/tests/test_array.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/tests/test_array.py b/pymatbridge/tests/test_array.py index 4d271e3..8e95080 100644 --- a/pymatbridge/tests/test_array.py +++ b/pymatbridge/tests/test_array.py @@ -19,7 +19,7 @@ def teardown_class(cls): # Pass a 1000*1000 array to Matlab def test_array_size(self): - array = np.random.random_sample((50,50)).tolist() + array = np.random.random_sample((50,50)) res = self.mlab.run_func("array_size.m",{'val':array})['result'] npt.assert_almost_equal(res, array, decimal=8, err_msg = "test_array_size: error") From 7a78e3248c8f94a5c9adef59511d9193b73ac587 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 17 Jan 2015 09:34:23 -0600 Subject: [PATCH 079/308] Update test to reflect floating point --- pymatbridge/tests/test_get_variable.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymatbridge/tests/test_get_variable.py b/pymatbridge/tests/test_get_variable.py index b344b0e..be38ea0 100644 --- a/pymatbridge/tests/test_get_variable.py +++ b/pymatbridge/tests/test_get_variable.py @@ -30,8 +30,8 @@ def test_get_array(self): self.mlab.run_code("a = [1 2 3 4]") self.mlab.run_code("b = [1 2; 3 4]") - npt.assert_equal(self.mlab.get_variable('a'), [1,2,3,4]) - npt.assert_equal(self.mlab.get_variable('b'), [[1,2],[3,4]]) + npt.assert_equal(self.mlab.get_variable('a'), [[1.,2.,3.,4.]]) + npt.assert_equal(self.mlab.get_variable('b'), [[1.,2.],[3.,4.]]) # Try to get a non-existent variable From 0bd1ece974b8c6699403e58c135e42b24b644f0d Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 17 Jan 2015 09:34:44 -0600 Subject: [PATCH 080/308] Update tests for floating point and explicit shape --- pymatbridge/tests/test_magic.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymatbridge/tests/test_magic.py b/pymatbridge/tests/test_magic.py index 450b108..3616825 100644 --- a/pymatbridge/tests/test_magic.py +++ b/pymatbridge/tests/test_magic.py @@ -62,7 +62,7 @@ def test_line_magic(self): # Get the result back to Python self.ip.run_cell_magic('matlab', '-o actual', 'actual = res') - self.ip.run_cell("expected = np.array([2, 4, 6])") + self.ip.run_cell("expected = np.array([[2., 4., 6.]])") npt.assert_almost_equal(self.ip.user_ns['actual'], self.ip.user_ns['expected'], decimal=7) @@ -82,7 +82,7 @@ def test_matrix(self): # Matlab struct type should be converted to a Python dict def test_struct(self): self.ip.run_cell('num = 2.567') - self.ip.run_cell('num_array = np.array([1.2,3.4,5.6])') + self.ip.run_cell('num_array = np.array([1.2,3.4,5.6]).reshape(3,1)') self.ip.run_cell('str = "Hello World"') self.ip.run_cell_magic('matlab', '-i num,num_array,str -o obj', 'obj.num = num;obj.num_array = num_array;obj.str = str;') From 7324db80dec5c2da87ac2be38d48e04fc447c432 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 17 Jan 2015 10:48:13 -0600 Subject: [PATCH 081/308] Add support for complex arrays --- .../matlab/util/json_v0.2.2/json/json_dump.m | 9 ++- .../matlab/util/json_v0.2.2/json/json_load.m | 18 +++--- pymatbridge/pymatbridge.py | 61 +++++++++++++------ 3 files changed, 59 insertions(+), 29 deletions(-) diff --git a/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m index 672f3a7..ed8ef62 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m @@ -101,12 +101,17 @@ elseif ~isscalar(value) obj = javaObject('org.json.JSONArray'); - if isnumeric(value) && isreal(value) + if isnumeric(value) % encode arrays as a struct double_struct = struct; double_struct.ndarray = 1; value = double(value); - double_struct.data = base64encode(typecast(value(:), 'uint8')); + if isreal(value) + double_struct.data = base64encode(typecast(value(:), 'uint8')); + else + double_struct.real = base64encode(typecast(real(value(:)), 'uint8')); + double_struct.imag = base64encode(typecast(imag(value(:)), 'uint8')); + end double_struct.shape = base64encode(typecast(size(value), 'uint8')); obj = dump_data_(double_struct, options); elseif ndims(value) > 2 diff --git a/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m index 428e666..ed2660f 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_load.m @@ -122,15 +122,19 @@ value.(safe_field) = parse_data_(node.get(javaObject('java.lang.String', key)), ... options); end - % Check if the struct just decoded represents a complex number - if isfield(value,'real') && isfield(value, 'imag') - complex_value = complex(value.real, value.imag); - value = complex_value; - end - % Check if the struct just decoded represents a numpy array + % Check if the struct just decoded represents an array or complex number if isfield(value,'ndarray') && isfield(value, 'shape') - arr = typecast(base64decode(value.data), 'double'); + if isfield(value, 'data') + arr = typecast(base64decode(value.data), 'double'); + else + r = typecast(base64decode(value.real), 'double'); + im = typecast(base64decode(value.imag), 'double'); + arr = complex(r, im); + end value = reshape(arr, value.shape); + elseif isfield(value,'real') && isfield(value, 'imag') + complex_value = complex(value.real, value.imag); + value = complex_value; end % In MATLAB, nested classes end up with a $ in the name, in Octave it's a . elseif isa(node, 'org.json.JSONObject$Null') || isa(node, 'org.json.JSONObject.Null') diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 0a6c0fa..322b20e 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -32,41 +32,62 @@ class spmatrix: pass +def encode_ndarray(obj): + """Write a numpy array and its shape to base64 buffers""" + shape = obj.shape + if len(shape) == 1: + shape = (obj.shape[0], 1) + if obj.flags.c_contiguous: + obj = obj.T + elif not obj.flags.f_contiguous: + obj = asfortranarray(obj) + data = obj.astype(float64).tobytes() + data = codecs.encode(data, 'base64').decode('utf-8') + return data, shape + + # JSON encoder extension to handle complex numbers and numpy arrays class PymatEncoder(json.JSONEncoder): def default(self, obj): - if isinstance(obj, complex): - return {'real': obj.real, 'imag': obj.imag} - if isinstance(obj, ndarray) and not obj.dtype.kind == 'c': - shape = obj.shape - if len(shape) == 1: - shape = (obj.shape[0], 1) - if obj.flags.c_contiguous: - obj = obj.T - elif not obj.flags.f_contiguous: - obj = asfortranarray(obj) - data = obj.astype(float64).tobytes() - data = codecs.encode(data, 'base64').decode('utf-8') + if isinstance(obj, ndarray) and obj.dtype.kind in 'uif': + data, shape = encode_ndarray(obj) return {'ndarray': True, 'shape': shape, 'data': data} + elif isinstance(obj, ndarray) and obj.dtype.kind == 'c': + real, shape = encode_ndarray(obj.real.copy()) + imag, _ = encode_ndarray(obj.imag.copy()) + return {'ndarray': True, 'shape': shape, + 'real': real, 'imag': imag} elif isinstance(obj, ndarray): return obj.tolist() - if isinstance(obj, generic): + elif isinstance(obj, complex): + return {'real': obj.real, 'imag': obj.imag} + elif isinstance(obj, generic): return obj.item() # Handle the default case return json.JSONEncoder.default(self, obj) -# JSON decoder for complex numbers +def decode_arr(data): + """Extract a numpy array from a base64 buffer""" + data = data.encode('utf-8') + return frombuffer(codecs.decode(data, 'base64'), float64) + + +# JSON decoder for arrays and complex numbers def as_complex(dct): - if 'real' in dct and 'imag' in dct: - return complex(dct['real'], dct['imag']) if 'ndarray' in dct and 'data' in dct: - data = dct['data'].encode('utf-8') - shape = dct['shape'].encode('utf-8') - value = frombuffer(codecs.decode(data, 'base64'), float64) - shape = frombuffer(codecs.decode(shape, 'base64'), float64) + value = decode_arr(dct['data']) + shape = decode_arr(dct['shape']) return value.reshape(shape, order='F') + elif 'ndarray' in dct and 'imag' in dct: + real = decode_arr(dct['real']) + imag = decode_arr(dct['imag']) + shape = decode_arr(dct['shape']) + data = real + 1j * imag + return data.reshape(shape, order='F') + elif 'real' in dct and 'imag' in dct: + return complex(dct['real'], dct['imag']) return dct MATLAB_FOLDER = '%s/matlab' % os.path.realpath(os.path.dirname(__file__)) From e0c83a9c9a255468741a5557e3373db255c420e1 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 19 Jan 2015 19:17:49 -0600 Subject: [PATCH 082/308] Rename as_complex->decode_pymat and update struct test --- pymatbridge/pymatbridge.py | 4 ++-- pymatbridge/tests/test_magic.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 322b20e..b592030 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -75,7 +75,7 @@ def decode_arr(data): # JSON decoder for arrays and complex numbers -def as_complex(dct): +def decode_pymat(dct): if 'ndarray' in dct and 'data' in dct: value = decode_arr(dct['data']) shape = decode_arr(dct['shape']) @@ -243,7 +243,7 @@ def is_function_processor_working(self): def _json_response(self, **kwargs): if self.running: time.sleep(0.05) - return json.loads(self._response(**kwargs), object_hook=as_complex) + return json.loads(self._response(**kwargs), object_hook=decode_pymat) # Run a function in Matlab and return the result def run_func(self, func_path, func_args=None): diff --git a/pymatbridge/tests/test_magic.py b/pymatbridge/tests/test_magic.py index 3616825..57e3677 100644 --- a/pymatbridge/tests/test_magic.py +++ b/pymatbridge/tests/test_magic.py @@ -82,11 +82,11 @@ def test_matrix(self): # Matlab struct type should be converted to a Python dict def test_struct(self): self.ip.run_cell('num = 2.567') - self.ip.run_cell('num_array = np.array([1.2,3.4,5.6]).reshape(3,1)') + self.ip.run_cell('num_array = np.array([1.2,3.4,5.6])') self.ip.run_cell('str = "Hello World"') self.ip.run_cell_magic('matlab', '-i num,num_array,str -o obj', 'obj.num = num;obj.num_array = num_array;obj.str = str;') npt.assert_equal(isinstance(self.ip.user_ns['obj'], dict), True) npt.assert_equal(self.ip.user_ns['obj']['num'], self.ip.user_ns['num']) - npt.assert_equal(self.ip.user_ns['obj']['num_array'], self.ip.user_ns['num_array']) + npt.assert_equal(self.ip.user_ns['obj']['num_array'].squeeze(), self.ip.user_ns['num_array']) npt.assert_equal(self.ip.user_ns['obj']['str'], self.ip.user_ns['str']) From 2e295d2af09846ec1b7427bf35abe5026ceba6a3 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 19 Jan 2015 19:48:40 -0600 Subject: [PATCH 083/308] Use row vector order when passing arrays --- pymatbridge/pymatbridge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index b592030..4aad82e 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -36,7 +36,7 @@ def encode_ndarray(obj): """Write a numpy array and its shape to base64 buffers""" shape = obj.shape if len(shape) == 1: - shape = (obj.shape[0], 1) + shape = (1, obj.shape[0]) if obj.flags.c_contiguous: obj = obj.T elif not obj.flags.f_contiguous: From aaa317a3e1c3e517ba33a1c4333a92bad86ec0a1 Mon Sep 17 00:00:00 2001 From: Danny Hermes Date: Thu, 22 Jan 2015 12:23:06 -0800 Subject: [PATCH 084/308] Giving THANKS markdown extension for GitHub rendering. --- THANKS | 8 -------- THANKS.md | 10 ++++++++++ 2 files changed, 10 insertions(+), 8 deletions(-) delete mode 100644 THANKS create mode 100644 THANKS.md diff --git a/THANKS b/THANKS deleted file mode 100644 index b30b67c..0000000 --- a/THANKS +++ /dev/null @@ -1,8 +0,0 @@ -## Contributors: - -Max Jaderberg -Ariel Rokem -Steven Pav -Jens Nielsen - -We rely on an adaptation of [webserver code written by Dirk Jan Kroon](http://www.mathworks.com/matlabcentral/fileexchange/29027-web-server). diff --git a/THANKS.md b/THANKS.md new file mode 100644 index 0000000..f01ba04 --- /dev/null +++ b/THANKS.md @@ -0,0 +1,10 @@ +## Contributors: + +Max Jaderberg +Ariel Rokem +Steven Pav +Jens Nielsen + +We rely on an adaptation of [webserver code][1] written by Dirk Jan Kroon. + +[1]: http://www.mathworks.com/matlabcentral/fileexchange/29027-web-server From e7aa57a34fa3b7d61633720c2665d0e43897ecbd Mon Sep 17 00:00:00 2001 From: arokem Date: Thu, 22 Jan 2015 20:21:15 -0800 Subject: [PATCH 085/308] Removed THANKS file. The contents of this file don't make sense anymore for the following reasons: 1. We don't actually use the webserver code from Dirk Jan Kroon at all. 2. The list of contributors can be found in the gh repo. --- THANKS.md | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 THANKS.md diff --git a/THANKS.md b/THANKS.md deleted file mode 100644 index f01ba04..0000000 --- a/THANKS.md +++ /dev/null @@ -1,10 +0,0 @@ -## Contributors: - -Max Jaderberg -Ariel Rokem -Steven Pav -Jens Nielsen - -We rely on an adaptation of [webserver code][1] written by Dirk Jan Kroon. - -[1]: http://www.mathworks.com/matlabcentral/fileexchange/29027-web-server From 421d1acc62eab43b470686e3b7dd004bbed9df37 Mon Sep 17 00:00:00 2001 From: arokem Date: Thu, 22 Jan 2015 20:24:41 -0800 Subject: [PATCH 086/308] Updated README to provide a link to @jaderberg's original repo. --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0e782ed..5c669c7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,10 @@ # Python-MATLAB(R) Bridge and ipython matlab_magic A python interface to call out to [Matlab(R)](http://mathworks.com). Original -implementation by [Max Jaderberg](http://www.maxjaderberg.com/). +implementation by [Max Jaderberg](http://www.maxjaderberg.com/). His original +repo of the project can be found [here]( +https://github.com/jaderberg/python-matlab-bridge), but please note that the +development of the two repositories has significantly diverged. This implementation also includes an [IPython](http://ipython.org) `matlab_magic` extension, which provides a simple interface for weaving python and From d6772d16e7c16c7bc72d866093f9d39704909df9 Mon Sep 17 00:00:00 2001 From: Danny Hermes Date: Fri, 23 Jan 2015 10:11:10 -0800 Subject: [PATCH 087/308] Updating README to point to PyPI and adding Travis config. Travis config will deploy to PyPI on a new tag. --- .travis.yml | 13 +++++++++++++ README.md | 17 +++++++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..3464c9a --- /dev/null +++ b/.travis.yml @@ -0,0 +1,13 @@ +language: python +sudo: false + +deploy: + provider: pypi + user: foo + password: + secure: bar + on: + tags: true + repo: arokem/python-matlab-bridge + # until this is fixed: https://github.com/travis-ci/travis-ci/issues/1675 + all_branches: true diff --git a/README.md b/README.md index 5c669c7..3f84b3e 100644 --- a/README.md +++ b/README.md @@ -13,12 +13,21 @@ Matlab code together (requires ipython > 0.13). ## Installation -Pymatbridge communicates with Matlab using zeromq. So before installing +`pymatbridge` can be installed from [PyPI][1]: + +``` +$ pip install pymatbridge # sudo may be needed +``` + +`pymatbridge` communicates with Matlab using zeromq. So before installing pymatbridge you must have [zmq](http://zeromq.org/intro:get-the-software) library and [pyzmq](http://zeromq.org/bindings:python) installed on your machine. If you intend to use the Matlab magic extension, you'll also need -[IPython](http://ipython.org/install.html). To make pymatbridge work properly, -please follow the following steps. +[IPython](http://ipython.org/install.html). Note that IPython notebooks +also depend on `pyzmq` so if you have IPython notebooks installed, you likely +have `pyzmq` already. + +To make pymatbridge work properly, please follow the following steps. ### Install zmq library Please refer to the [official guide](http://zeromq.org/intro:get-the-software) on how to @@ -207,4 +216,4 @@ Python communicates with Matlab via an ad-hoc zmq messenger. This is inherently insecure, as the Matlab instance may be directed to perform arbitrary system calls. There is no sandboxing of any kind. Use this code at your own risk. - +[1]: https://pypi.python.org/pypi/pymatbridge From d8b3a82c45d6d02d53bb52873159e55b45513357 Mon Sep 17 00:00:00 2001 From: John Kirkham Date: Fri, 23 Jan 2015 16:40:02 -0500 Subject: [PATCH 088/308] messenger/make.py: Changed if to elif in platform check for win32. If it's win32, it won't be one of the others. Closes #110. --- messenger/make.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/messenger/make.py b/messenger/make.py index fa686be..f0b8e77 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -14,7 +14,7 @@ messenger_dir = 'mexa64' elif platform.startswith('darwin'): messenger_dir = 'mexmaci64' -if platform.startswith('win32'): +elif platform.startswith('win32'): # We further need to differniate 32 from 64 bit: maxint = sys.maxint() if maxint == 9223372036854775807: From 3c7a8253f8d46a4d8362b50a0de762489bdab30c Mon Sep 17 00:00:00 2001 From: John Kirkham Date: Fri, 23 Jan 2015 16:15:31 -0500 Subject: [PATCH 089/308] messenger/make.py: Corrected to decode str as opposed to trying to decode a file, which is not allowed. Closes #108. --- messenger/make.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/messenger/make.py b/messenger/make.py index f0b8e77..f42d9d1 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -25,7 +25,8 @@ # Open the configure file and start parsing config = open(os.path.join(messenger_dir, 'local.cfg'), 'r') -for line in config.decode('utf-8'): +for line in config: + line = line.decode('utf-8') path = line.split('=') if path[0] == "MATLAB_BIN": From 287d2fbfe62f982c38e1dd951bbd55bf56941b42 Mon Sep 17 00:00:00 2001 From: John Kirkham Date: Fri, 23 Jan 2015 16:34:25 -0500 Subject: [PATCH 090/308] messenger/make.py: In order to be able to move and replace an existing file, the full path to the file must be specified. Closes #109. --- messenger/make.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/messenger/make.py b/messenger/make.py index f42d9d1..5f90727 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -73,5 +73,8 @@ make_cmd = '"' + matlab_bin + mex + '"' + " -O -I" + header_path + " -L" + lib_path + " -lzmq ./src/messenger.c" os.system(make_cmd) -shutil.move('messenger.%s'%extension, messenger_dir) +messenger_exe = 'messenger.%s'%extension +messenger_loc = os.path.join(messenger_dir, messenger_exe) + +shutil.move(messenger_exe, messenger_loc) From c365c5374b6a7d2840348e8d1c91037cea641311 Mon Sep 17 00:00:00 2001 From: John Kirkham Date: Fri, 23 Jan 2015 18:08:31 -0500 Subject: [PATCH 091/308] messenger/make.py: Use with block instead of explicitly opening and closing the file. This is better for error handling should it be required. Closes #107. --- messenger/make.py | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/messenger/make.py b/messenger/make.py index 5f90727..c4a4456 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -23,35 +23,34 @@ messenger_dir = 'mexw32' # Open the configure file and start parsing -config = open(os.path.join(messenger_dir, 'local.cfg'), 'r') +with open(os.path.join(messenger_dir, 'local.cfg'), 'r') as config: + for line in config: + line = line.decode('utf-8') + path = line.split('=') -for line in config: - line = line.decode('utf-8') - path = line.split('=') + if path[0] == "MATLAB_BIN": + print("Searching for Matlab bin folder in local.cfg ...") + matlab_bin = path[1].rstrip('\r\n') + if matlab_bin == "": + raise ValueError("Could not find Matlab bin folder. Please add it to local.cfg") + print("Matlab found in " + matlab_bin) - if path[0] == "MATLAB_BIN": - print("Searching for Matlab bin folder in local.cfg ...") - matlab_bin = path[1].rstrip('\r\n') - if matlab_bin == "": - raise ValueError("Could not find Matlab bin folder. Please add it to local.cfg") - print("Matlab found in " + matlab_bin) + elif path[0] == "HEADER_PATH": + print("Searching for zmq.h in local.cfg ...") + header_path = path[1].rstrip('\r\n') + if header_path == "": + raise ValueError("Could not find zmq.h. Please add its path to local.cfg") + print("zmq.h found in " + header_path) - elif path[0] == "HEADER_PATH": - print("Searching for zmq.h in local.cfg ...") - header_path = path[1].rstrip('\r\n') - if header_path == "": - raise ValueError("Could not find zmq.h. Please add its path to local.cfg") - print("zmq.h found in " + header_path) + elif path[0] == "LIB_PATH": + print("Searching for zmq library in local.cfg ...") + lib_path = path[1].rstrip('\r\n') + if lib_path == "": + raise ValueError("Could not find zmq library. Please add its path to local.cfg") - elif path[0] == "LIB_PATH": - print("Searching for zmq library in local.cfg ...") - lib_path = path[1].rstrip('\r\n') - if lib_path == "": - raise ValueError("Could not find zmq library. Please add its path to local.cfg") + print("zmq library found in " + lib_path) - print("zmq library found in " + lib_path) -config.close() # Get the extension if platform == 'win32': From c15d4719bbf12b7d079605ee0589e62e45e870be Mon Sep 17 00:00:00 2001 From: arokem Date: Fri, 23 Jan 2015 17:40:28 -0800 Subject: [PATCH 092/308] Make this run on both python2 and python3 --- messenger/make.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/messenger/make.py b/messenger/make.py index c4a4456..5ada5d8 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -25,7 +25,13 @@ # Open the configure file and start parsing with open(os.path.join(messenger_dir, 'local.cfg'), 'r') as config: for line in config: - line = line.decode('utf-8') + try: + line = line.decode('utf-8') + + # python3 + except: + pass + path = line.split('=') if path[0] == "MATLAB_BIN": @@ -55,13 +61,13 @@ # Get the extension if platform == 'win32': extcmd = '"' + matlab_bin + "\\mexext.bat" + '"' - check_extension = subprocess.Popen(extcmd, stdout = subprocess.PIPE) - extension = check_extension.stdout.readline().rstrip('\r\n') else: extcmd = matlab_bin + "/mexext" - check_extension = subprocess.Popen(extcmd, stdout = subprocess.PIPE) - extension = check_extension.stdout.readline().rstrip('\r\n') +check_extension = subprocess.Popen(extcmd, stdout = subprocess.PIPE) +extension = check_extension.stdout.read() +extension = extension.decode('utf-8').rstrip('\r\n') + print("Building messenger." + extension + " ...") # Build the mex file @@ -70,6 +76,7 @@ else: mex = "/mex" make_cmd = '"' + matlab_bin + mex + '"' + " -O -I" + header_path + " -L" + lib_path + " -lzmq ./src/messenger.c" +print(make_cmd) os.system(make_cmd) messenger_exe = 'messenger.%s'%extension From d48892eeb61a56a6d9831acf072f8da9c301b8be Mon Sep 17 00:00:00 2001 From: arokem Date: Sat, 24 Jan 2015 13:26:56 -0800 Subject: [PATCH 093/308] Added pypi credentials. --- .travis.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3464c9a..378be66 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,10 @@ language: python sudo: false - deploy: provider: pypi - user: foo + user: arokem password: - secure: bar + secure: AB7BnrkNOTQWXUNiaShedbIEBay+5JbulAxUHY4vEMdiI68bPLYOrIDxuT/lIfWrrgXUuicbJcWUxt6zpdUEQrEfYB6pNhrosZv4+R5HZu1FHY7EfOfsyHxb2wnezKuIEVXdevAmIg5rYNeTPcdl/CFm4xQGfdc4a3eyT5cJT58= on: tags: true repo: arokem/python-matlab-bridge From 0423916772e04809b3b7cc40a96e470b092d2064 Mon Sep 17 00:00:00 2001 From: arokem Date: Sat, 24 Jan 2015 14:54:57 -0800 Subject: [PATCH 094/308] Will this make travis happy(er)? --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 378be66..9d099c3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,3 +10,5 @@ deploy: repo: arokem/python-matlab-bridge # until this is fixed: https://github.com/travis-ci/travis-ci/issues/1675 all_branches: true +script: + - true From fe9968a02833195fcaf58bca73319232f4fd76cd Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 25 Jan 2015 12:08:48 -0800 Subject: [PATCH 095/308] Help installation along by stating the requirements. I think that pyzmq is the only hard requirement. Having numpy and ipython in addition is probably useful, but not necessary. --- pymatbridge/version.py | 2 +- requirements.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 requirements.txt diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 90ba94d..91ba014 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -95,5 +95,5 @@ "matlab/util/json_v0.2.2/json/java/*", "tests/*.py", "examples/*.ipynb"]} -REQUIRES = [] +REQUIRES = ['pyzmq'] BIN=['scripts/publish-notebook'] diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..02ec117 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +pyzmq From e70d42b3394a1d4d8c2491bbbc2362acdc3c669b Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 25 Jan 2015 14:38:32 -0800 Subject: [PATCH 096/308] BF: Setting of the response 'exists' field seems otherwise compromised. --- pymatbridge/matlab/util/pymat_get_variable.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/matlab/util/pymat_get_variable.m b/pymatbridge/matlab/util/pymat_get_variable.m index 8e6a29e..9de9cf1 100644 --- a/pymatbridge/matlab/util/pymat_get_variable.m +++ b/pymatbridge/matlab/util/pymat_get_variable.m @@ -28,7 +28,7 @@ % if the var doesn't exist in the workspace, inform adequately expr = strcat('exist(''', varname, ''',''var'')'); var_exists = evalin('base', expr); -if ~var_exists; +if ~var_exists response.exists = false; response.var = ''; else From 2cb2f65ee6c3843746aafbbc2660174e0e9d4eaf Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 25 Jan 2015 14:39:29 -0800 Subject: [PATCH 097/308] DOC: Edited module-level docstring for pymatbdrige. --- pymatbridge/pymatbridge.py | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 4aad82e..1888d87 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -2,11 +2,36 @@ pymatbridge =========== -This is a module for communicating and running +This is a module for communicating and running Matlab from within python + +Example +------- + +>>> import pymatbridge +>>> m = pymatbridge.Matlab() +>>> m.start() +Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge +Send 'exit' command to kill the server +.MATLAB started and connected! +True +>>> + < M A T L A B (R) > + Copyright 1984-2014 The MathWorks, Inc. + R2014b (8.4.0.150421) 64-bit (maci64) + September 15, 2014 + + +To get started, type one of these: helpwin, helpdesk, or demo. +For product information, visit www.mathworks.com. + +Socket created at: ipc:///tmp/pymatbridge + +>>> +>>> m.run_code('a=1;') +{'content': {'stdout': '', 'datadir': '/private/tmp/MatlabData/', 'code': 'a=1;', 'figures': []}, 'success': 'true'} +>>> m.get_variable('a') +1 -Part of Python-MATLAB-bridge, Max Jaderberg 2012 - -This is a modified version using ZMQ, Haoxing Zhang Jan.2014 """ import os From 35124157534b3d74d630cd3d0b874af8b26f046b Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 25 Jan 2015 14:41:59 -0800 Subject: [PATCH 098/308] Added the optional dependencies that make this actually useful. --- pymatbridge/version.py | 2 ++ setup.py | 1 + 2 files changed, 3 insertions(+) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 91ba014..814367b 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -96,4 +96,6 @@ "tests/*.py", "examples/*.ipynb"]} REQUIRES = ['pyzmq'] +EXTRAS_REQUIRE = ['numpy', 'scipy', 'ipython'] + BIN=['scripts/publish-notebook'] diff --git a/setup.py b/setup.py index 4c55b21..30fc215 100755 --- a/setup.py +++ b/setup.py @@ -49,6 +49,7 @@ def copy_bin(bin_path): packages=PACKAGES, package_data=PACKAGE_DATA, requires=REQUIRES, + extras_require=EXTRAS_REQUIRE, scripts=BIN ) From 3d41f8746ec01636bdded8967694ec9a8a4ad19a Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 25 Jan 2015 20:16:09 -0800 Subject: [PATCH 099/308] Update example notebooks. --- pymatbridge/examples/matlab_magic.ipynb | 70 ++++--------------------- pymatbridge/examples/pymatbridge.ipynb | 58 +++++++++----------- 2 files changed, 35 insertions(+), 93 deletions(-) diff --git a/pymatbridge/examples/matlab_magic.ipynb b/pymatbridge/examples/matlab_magic.ipynb index 706a97a..5811dfd 100644 --- a/pymatbridge/examples/matlab_magic.ipynb +++ b/pymatbridge/examples/matlab_magic.ipynb @@ -1,7 +1,7 @@ { "metadata": { "name": "", - "signature": "sha256:706da63ffdb88862fa10675cd2dd5f3d7e62b9bfb6592877723f4c54f68c2def" + "signature": "sha256:5aa9c9684bd70f7297765b71dc4918d9c1cb5a9085521dc57999ecbefba00f4b" }, "nbformat": 3, "nbformat_minor": 0, @@ -35,56 +35,14 @@ "text": [ "Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge\n", "Send 'exit' command to kill the server\n", - "." + ".MATLAB started and connected!" ] }, { "output_type": "stream", "stream": "stdout", "text": [ - "." - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "." - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "." - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "." - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "." - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "." - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "MATLAB started and connected!\n" + "\n" ] } ], @@ -107,7 +65,7 @@ { "metadata": {}, "output_type": "display_data", - "png": "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\nUWAAgJD+B77HMO0L8V3/AAAAAElFTkSuQmCC\n" + "png": "iVBORw0KGgoAAAANSUhEUgAABLAAAAOECAIAAAA+D1+tAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\nB3RJTUUH3wEaBAsw71zbqgAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyNS1KYW4tMjAxNSAyMDoxMTo0N1V4hAgAACAA\nSURBVHic7N1/fFTVnT/+VyaXZEImZBKGOJCBJBIgSISgUYOgRGUrttjalVW6qy22WuvaPpRqt+3a\nrtu1LvXhumrVda32UfqRfkstVregYosWNGgosQwYcIAgCQnJEEIyIZNkApPJ948zMwbI79w7995z\nX88/+sAkM3NyO++8533POe+T1NfXByIiIiIiIrIem94DICIiIiIiIn2wICQiIiIiIrIoFoRERERE\nREQWxYKQiIiIiIjIolgQEhERERERWRQLQiIiIiIiIotiQUhERERERGRRLAiJiIiIiIgsigUhERER\nERGRRbEgJCIiIiIisigWhERERERERBbFgpCIiIiIiMiiWBASERERERFZFAtCIiIiIiIii2JBSERE\nREREZFEsCImIiIiIiCyKBSEREREREZFFsSAkIiIiIiKyKBaEREREREREFsWCkIiIiIiIyKJYEBIR\nEREREVkUC0IiIiIiIiKLYkFIRERERERkUSwIiYiIiIiILIoFIRERERERkUWxICQiIiIiIrIoFoRE\nREREREQWxYKQiIiIiIjIolgQEhERERERWRQLQiIiIiIiIotiQUhERERERGRRLAiJiIiIiIgsigUh\nERERERGRRbEgJCIiIiIisigWhERERERERBbFgpCIiIiIiMiiWBASERERERFZFAtCIiIiIiIii2JB\nSEREREREZFEsCImIiIiIiCyKBSEREREREZFFsSAkIiIiIiKyKBaEREREREREFsWCkIiIiIiIyKJY\nEBIREREREVkUC0IiIiIiIiKLYkFIRERERERkUSwIiYiIiIiILIoFIRERERERkUWxICQiIiIiIrIo\nFoREREREREQWxYKQiIiIiIjIolgQEhERERERWRQLQiIiIiIiIotiQUhERERERGRRLAiJiIiIiIgs\nigUhERERERGRRbEgNIe2traf//znn3zyid4DISIiIiIiebAgNIfNmzc/99xzLAiJiIiIiEhFit4D\n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\nffbcuXPOI0888cTzzz+vYpPUlZ6evnDhwsjIyEa/ViQM1LZt25555pmamhrnkdDQ0DfffDMpKcl5\nRMKwvPPOOx999FHDIzfccMPHH3/csFSWMCwNzZs3b+XKlYMGDWpUEEoYljlz5hw8eLDRwS5dujTc\n91XCsJSXl0+cODE/P995xGAwzJ8//4477nAekSoshYWFzzzzzOW+GhYW9t1334k/SxUW4R//+Md7\n771ns9mcR/r167do0SKj0eg8IltY6urq/v73v3/wwQd2u10c8fb2njZt2tNPP+38jFQxudydG5oR\nB6kC5Qo+s2fPVrsN1FqlpaUPP/zw+fPn//CHP7z00ku333778ePHN2zYEBAQcNNNN6ndOnerra39\n9ttv58yZc+HChZSUlIa/ViQM1L59+yZPnuzl5TVr1qw//elPt99+e21t7b59+7755pv777+/Xbt2\nkDIsn3322TvvvNOtW7fXX3/92Wef7devX2lpaW5ublFR0bBhw8RnJAxLQ5s3b37zzTcBRERE3H//\n/c7jcoblzTffjI2NnTx5clIDQ4cO7du3r/iAhGGpq6ubMGHCoUOHHnrooXffffe5556LiIjYunVr\nVlbWQw895O/vDynD0q5du4GXCAoKOnz48K233pqamgopw/Ldd9/NnDnTaDQ+9dRTL730Unx8/OnT\np/ft25efn3/fffeJz0gYlrVr186dO7dLly7z5s177rnnoqKiSkpKNm7c2KdPn+7du0OmmFzhzg3N\niIM8gXKhOvJ8c+bMiY2Nfffdd51HTp48OWDAgJtuuslqtarYMDez2+33339///79Y+utWbOm4Qck\nDNSCBQtiY2NXr17d8OCoUaNiY2MXLlwo/iphWCZOnNirV6/S0lLnkV9++SU2NvaGG26w2WziiIRh\ncSotLR04cOD9998fGxs7fvz4hl+SMCynTp2KjY195513rvAZCcOyadOm2NjYp556quHBGTNmxMbG\nbty4UfxVwrBcymq1/u53vxs2bFh1dbU4ImFYpk+fHhsb+9lnnzmPmEymPn369OrVq7KyUhyRMCy3\n3nprbGzsjh07nEfMZvOgQYMGDhxot9vr5IjJVe/c6poRBxkC5WpcVKYt2LlzJ4AHH3zQeSQsLGzI\nkCEWi+Xbb79Vr10qCA8PHzJkSEpKSlRUFIBG8xMkDNSPP/4I4Lbbbmt4cOTIkQB+/vln8VfZwlJb\n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\nyw1NlzAszSFbWM6fP3/o0KFjx44FBwfHxMRERkY2+THZwnLixIn8/PzKyspu3brdeOONTX5Gtphc\nzlXjwEBdMxaEREREREREkuKiMkRERERERJJiQUhERERERCQpFoRERERERESSYkFIREREREQkKRaE\nREREREREkmJBc40H4AAAApRJREFUSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCSp/weFYda0Q7bc\nFgAAAABJRU5ErkJggg==\n" } ], "prompt_number": 3 @@ -124,10 +82,10 @@ { "metadata": {}, "output_type": "display_data", - "png": "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\nQmCC\n" + "png": "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\n3bt333fffeoNb7/99s9//vPCwsK777775Zdfvv/++2tqanbt2vW9731Pb8uPd/78fBF5s4HKaUhZ\n6vK+cGG+7oZMgmotgYlUlYxRee68HCEqkdKSMTDBDKE2mzdvTktL+81vfuN2u0XE4/EsXrz4yiuv\nfPvttwcHBzMyMn73u9+JyO23337DDTeIyMKFC88777xVq1Zt2bLl2LFjM2eaqHbTefPz/u8bw4sE\ngJSkLu/kqpm2siL/R5sITKSsZIzK8zw5D24hKpHKkjEwwQyhHoODg16vd8GCBSobVE455RSPxzM4\nONjX1ycira2tIrJ48eLoG4qLi2fNmpWebrp/NVVXxtfdz0Z5pKTG9pCvu1+SbQ2Mai2BiZSUpFF5\nSpFDiEqkriQNTJgutbCISCTy9NNPP/7446NfbGlpaW5uPuecc7Kzs0VkyZIlIvLMM89E3/CnP/3p\n0KFDZ599tqmmB0WkLM/uzs0UkTcaOnS3BYg/dWGXFzqSa4t8dE8/gYnUk6RRWZxjIyqRwpI0MMGS\nUT1mzJhRXV2t/ru+vr6hoaGuru7FF190OBy33nqrev073/mO1+vduHHjRx999PnPf762tvb999/P\ny8v79re/ra/hJ7R87syNe/372jhvFylIXdjJWEF75cKCp9oPEZhIPUQlYELJG5gWR0Ko30svvRSt\nNXrllVcuX75c/XdBQcGdd975jW98o6GhoaGhQb24dOnSRYsWjfNpTU1NIuL1etesWRPzDdXV1Vdd\ndVXcWj/ivNLMjXvl7fqjfn9e3D98+trb24PBYH9/v+6GmAvdEtPx3fJ2/VERKcsZ8vv9+to1FWU5\nQyJxCEwulZjolpiM6Zaki8pot8QrKlMDQRRT8nbL9ANzw4YNu3btivlHXq9XRm50EV8khPpde+21\nS5Ys2blz57vvvrtx48a9e/e+8MILTqdz7dq1999/v8vluvrqqy+++OKPPvro5ZdffuONN6655pqX\nXnopKysr5qd1dHSISGtrq9qCeLxwOHzRRRfF/aeYmzMkIjsOBo92ddszzHVSoogEg8Genh4RyczM\n1N0WE6FbYhrTLX2DQzsOBkVkSWFaIBDQ3LhJWlKYJvEITC6VmOiWmAzolmSMymi3LCl0iImHS4MR\nRDElabfEJTA/+OCDTZs2jfMGdaOL+CIh1G/evHnz5s277LLLhoaGbr/99tdff33Lli2XXnrpY489\n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\nPmPGjGHDktvjMCxFRUX5+fklJSVhYWGpqam3335753M4DIuD2Wx+9913o6Oj582b1+El3sJy/Phx\nvV7f4aBSqbzjjjvaH+EtLETU2tq6a9euU6dOtbS0sN8tnX9qfsJiNBqPHDlytVcVCkX7FcL5CYtD\naWlpbm5uWVmZSqVKSUm58847vby8OpzDYViKioqOHz9eUVExYMCAESNGBAcHdziBn5hc45sbXUcc\n+AmUK6AglIi8vLxFixY1NjY6jjz11FMvvviigE0SVk5OzkcffRQTE9Ph1wqHgTpw4MDChQubm5sd\nR8LCwlasWJGVleU4wmFYVq1a9fe//739kQEDBnz22WftS2UOw9Le22+/vXHjxmHDhnUoCDkMyxtv\nvHH69OkOB6Oiotrv+8phWPR6/Zw5c4qKihxHAgMD33333fbb6nIVlpKSkoULF17t1fDw8J9++on9\nmauwMJ9++ukHH3xgtVodRwYOHPjxxx+r1WrHEd7CYrfb//a3v/31r3+12WzsiEwme+6555599lnH\nOVzF5Grf3Og64sBVoFzBe9myZUK3AW5VTU3N448/fvny5RdeeOG111678847Kyoqtm/frlQqhwwZ\nInTr3K21tfXgwYNvvPFGS0vL+PHj2/9a4TBQJ0+enDdvnpeX19KlS//rv/7rzjvvbG1tPXny5L59\n+x566CF/f3/iMixfffXVqlWr4uLi3nrrrUWLFg0cOLCmpqagoKC0tHTixInsHA7D0t4PP/ywYsUK\nIoqOjn7ooYccx/kMy4oVK5KTk+fNm5fVzqhRo9LS0tgJHIbFbrfPnj37zJkzjz322Pvvv//8889H\nR0fv3bs3Nzf3scce8/PzIy7D4u/vP7STkJCQ8+fPjx49esKECcRlWH766aclS5ao1eoFCxa89tpr\n6enptbW1J0+eLCoqYjtsEZdh2bJly/Lly6Oiot5+++3nn38+Nja2qqpq165d/fv3Z2tG8BOTa3xz\no+uIAz+BciE7iN8bb7yRnJz8/vvvO45cvHjxtttuGzJkiMViEbBhbmaz2R566KHBgwcnt9m8eXP7\nEzgM1OrVq5OTkzdt2tT+4IMPPpicnPzRRx+xv3IYljlz5vTr16+mpsZx5Ny5c8nJyQMGDLBarewI\nh2FxqKmpGTp06EMPPZScnPzEE0+0f4nDsFy6dCk5OXnVqlXXOIfDsOzevTs5OXnBggXtD7700kvJ\n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\nfDCTJk167bXXVCqV4whvYbFarW+++eaGDRvYqFoiSktL++CDD2JjYx3ncBWTq31zo+uIA1eBcgUU\nhJJSU1OTn5+fnJzMpnDA1SBQXeItLLW1tSUlJRcvXoyKiurTp0/77yXt8RaW68RbWEwmU2FhocFg\niI+Pj4+P9/X17fI03sJCRFqt9vTp04GBgSkpKVcbms5hWK4Hb2G5fPnymTNnysvLVSpVYmJiTExM\nl6fxFpbq6uqioqL6+vq4uLhBgwZ1eQ5vMbmabuOAQN00FIQAAAAAAACcwqIyAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwKn/D3B3qxRxcYwMAAAAAElFTkSuQmCC\n" } ], - "prompt_number": 5 + "prompt_number": 4 }, { "cell_type": "code", @@ -138,7 +96,7 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 6 + "prompt_number": 5 }, { "cell_type": "code", @@ -150,7 +108,7 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 11 + "prompt_number": 6 }, { "cell_type": "code", @@ -165,19 +123,11 @@ "output_type": "stream", "stream": "stdout", "text": [ - "[4, 5, 6]\n" + "[[ 4. 5. 6.]]\n" ] } ], - "prompt_number": 12 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [], - "language": "python", - "metadata": {}, - "outputs": [] + "prompt_number": 7 } ], "metadata": {} diff --git a/pymatbridge/examples/pymatbridge.ipynb b/pymatbridge/examples/pymatbridge.ipynb index 17747cb..aec8eae 100644 --- a/pymatbridge/examples/pymatbridge.ipynb +++ b/pymatbridge/examples/pymatbridge.ipynb @@ -1,7 +1,7 @@ { "metadata": { "name": "", - "signature": "sha256:489c10c337d135069286c01962ed71096fc0a1b8eb43d058effa40be641a8d50" + "signature": "sha256:cbcb36c1e24c2b87a7bdb2b209343824ea74cfc475a42e5e6823045439ee8be9" }, "nbformat": 3, "nbformat_minor": 0, @@ -14,21 +14,11 @@ "input": [ "import os\n", "import numpy as np\n", - "import pymatbridge as pymat\n", - "reload(pymat)" + "import pymatbridge as pymat" ], "language": "python", "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 1, - "text": [ - "" - ] - } - ], + "outputs": [], "prompt_number": 1 }, { @@ -45,30 +35,30 @@ "output_type": "stream", "stream": "stdout", "text": [ - "woot\n", - "Starting MATLAB on http://localhost:51435\n", - " visit http://localhost:51435/exit.m to shut down same\n" + "Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge\n", + "Send 'exit' command to kill the server\n", + ".." ] }, { "output_type": "stream", "stream": "stdout", "text": [ - "." + ".." ] }, { "output_type": "stream", "stream": "stdout", "text": [ - "." + ".." ] }, { "output_type": "stream", "stream": "stdout", "text": [ - "." + ".." ] }, { @@ -117,8 +107,7 @@ "res_dict = matlab.run_code('a=[1,3,7]')\n", "res_dict = matlab.run_code('plot(a)')\n", "res_dict = matlab.run_code('b=a+1')\n", - "exec('this=np.array(%s)'%matlab.get_variable('b')) \n", - "this" + "matlab.get_variable('b')" ], "language": "python", "metadata": {}, @@ -128,7 +117,7 @@ "output_type": "pyout", "prompt_number": 4, "text": [ - "array([2, 4, 8])" + "array([[ 2., 4., 8.]])" ] } ], @@ -149,7 +138,11 @@ " display_data.append(('MatlabMagic.matlab',\n", " {'text/plain':text_output}))\n", "for imgf in imgfiles:\n", - " image = open(imgf[0], 'rb').read().decode('utf-8') \n", + " try: # python 2\n", + " image = open(imgf[0], 'rb').read().decode('utf-8') \n", + " except: # python 3\n", + " image = open(imgf[0], 'rb').read()\n", + " \n", " display_data.append(('MatlabMagic.matlab', {'image/png': image}))\n", "\n", "for tag, disp_d in display_data:\n", @@ -173,7 +166,7 @@ { "metadata": {}, "output_type": "display_data", - "png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAGwCAIAAADOgk3lAAAACXBIWXMAAAsSAAALEgHS3X78AAAA\nIXRFWHRTb2Z0d2FyZQBBcnRpZmV4IEdob3N0c2NyaXB0IDguNTRTRzzSAAANX0lEQVR4nO3c0XLi\nSBJA0aqJ/v9f1j7QyzAYMAipKjPrnIeJ7vZEKI2FrlPG9G3bGgBk88/sAQBgDwEDICUBAyAlAQMg\nJQEDICUBAyAlAQMgJQEDICUBAyAlAQMgJQEDICUBAyAlAQMgJQEDICUBAyAlAQMgJQEDICUBAyAl\nAQMgJQEDICUBAyAlAQMgJQEDICUBAyAlAQMgJQEDICUBAyAlAQMgpWoB67333mdPAcDpSgWs975t\n27ZtGgZQXqmAAbCOP7MHONhl99q27favAHzoeh2Nq07ALvcPf/45whfhdp7Fx4gwgzGizRBkjAgz\nBBmj99Zab23+o/GaW4gA/Kv3Njug76qzgd2+dmP69y8AGSWqV6sUsKZbAF/IVa/W2vybraeKcDcZ\nIL67eqW4ePoZGMDq0u1eFwIGsLSk9WoCBrCyvPVqAgawrNT1agIGsKbs9WoCBrCgAvVqAgawmhr1\nagIGsJQy9WoCBrCOSvVqAgawiGL1agIGsIJ69WoCBkBSAgZQXMn1qwkYQG1V69UEDKCwwvVqAgZQ\nVe16NQEDKKl8vZqAAdSzQr2agAEUs0i9moABVLJOvZqAAZSxVL2agAHUsFq9moABFLBgvZqAAWS3\nZr2agAGktmy9moAB5LVyvZqAASS1eL2agAFkpF5NwADSUa8LAQPIRL2uBAwgDfW6JWAAOajXHQED\nICUBA0jA+vWTgAFEp14PCRhAaOr1jIABxKVeLwgYQFDq9ZqAAUSkXr8SMIBw1OsdAgYQi3q9ScAA\nAlGv9wkYQBTq9REBAwhBvT4lYADzqdcOAgYwmXrtI2AAM6nXbgIGMI16fUPAAOZQry8JGMAE6vW9\nP7MHOEzv/favm1MDiEq9DlEnYLfFuosZQBzqdZSCtxB779YvgPLqbGDPuLUIxBF2/cp446pawH6u\nX4oFBBG2Xu3HpTJFzwreQgQIKHK9kioVMD/9AmJSrzOUCph6AQGp10lKBQwgGvU6j4ABnEW9TiVg\nAKdQr7MJGMDx1GsAAQM4mHqNIWAAR1KvYQQM4DDqNZKAARxDvQYTMIADqNd4AgbwLfWaQsAAvqJe\n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\nAAAAAElFTkSuQmCC\n" + "png": "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\nL1269Pe//10IMXr0aFmnUw6CEMp39OjR//iP/wgKCtq3b58QorW19dChQ1qtdsWKFVfe+Y477nji\niSecPqMMOh0LJFcey0MPPbRu3bq1a9fW19ffc889Npvt448/Pnz48JQpU8aPHy/vtE7T6Vi0Wu2i\nRYuWLVv23HPP/e53v7v55pvLysp27txZVlY2ZswYZb+BR80XkGt87Gq75Dp2LIrn2LEo/nrrwLGo\n+XorhAgLC5sxY0ZOTs7s2bPnzJkTHBy8f//+vLy8hoaGhIQERb7/XBYEIVSntLS0paWlpaWly2fl\njp8/AZK+ffvm5OSkpqbm5ubm5uZKNz7yyCMq+aT4q/nd737n6en57rvvXv6yZtq0aS+++KL0Rial\nUvMFxLHHrvgTU/wDdIxjx6L4661jx6La663kxRdf9PHxWbdu3WuvvSbd4uXl9cgjjyxcuFDewZTE\no729Xe4ZAMAN1NbWHjlyxNfXNyYmRqnvfOuuixcv/vjjj8ePHw8ICIiKigoJCZF7IgBKwPX2Siq/\n3tbX1xuNxlOnTg0dOjQiIkK1P2rpJQQhAAAAAKiU56/fBQAAAACgRAQhAAAAAKgUQQgAAAAAKkUQ\nAgAAAIBKEYQAAAAAoFIEIQAAAACoFEEIAAAAACpFEAIAAACAShGEAAAAAKBSBCEAAAAAqBRBCAAA\nAAAqRRACAAAAgEoRhAAAAACgUgQhAAAAAKgUQQgAAAAAKkUQAgAAAIBKEYQAAAAAoFIEIQAAAACo\nFEEIAAAAACpFEAIAAACAShGEAAAAAKBSBCEAAAAAqBRBCAAAAAAqRRACAAAAgEoRhAAAAACgUgQh\nAAAAAKgUQQgAAAAAKkUQAgAAAIBKEYQAAAAAoFIEIQAAAACoFEEIAAAAACpFEAIAAACAShGEAAAA\nAKBSBCEAAAAAqBRBCAAAAAAqRRACAAAAgEoRhAAAAACgUgQhAAAAAKgUQQgAAAAAKkUQAgAAAIBK\nEYQAAAAAoFIEIQAAAACoFEEIAAAAACpFEAIAAACAShGEAAAAAKBSBCEAAAAAqBRBCAAAAAAqRRAC\nAAAAgEoRhAAAAACgUgQhAAAAAKgUQQgAAAAAKkUQAgAAAIBKEYQAAAAAoFIEIQAAAACoFEEIAAAA\nACpFEAIAAACAShGEAAAAAKBSBCEAAAAAqBRBCAAAAAAqRRACAAAAgEoRhAAAAACgUgQhAAAAAKgU\nQQgAAAAAKkUQAgAAAIBKEYQAAAAAoFIEIQAAAACoFEEIAAAAACpFEAIAAACAShGEAAAAAKBSBCEA\nAAAAqBRBCAAAAAAqRRACAAAAgEoRhAAAAACgUgQhAAAAAKjU/wfuiyhTo/m1TwAAAABJRU5ErkJg\ngg==\n" } ], "prompt_number": 5 @@ -187,6 +180,13 @@ "language": "python", "metadata": {}, "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "." + ] + }, { "metadata": {}, "output_type": "pyout", @@ -244,17 +244,9 @@ } ], "prompt_number": 8 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [], - "language": "python", - "metadata": {}, - "outputs": [] } ], "metadata": {} } ] -} +} \ No newline at end of file From 979ad2a63c8c85aa26a5195b9b04904ac763ac62 Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 25 Jan 2015 20:24:40 -0800 Subject: [PATCH 100/308] Tools for stats from github. Thanks IPython team! --- tools/gh_api.py | 292 ++++++++++++++++++++++++++++++++++++++++++ tools/github_stats.py | 224 ++++++++++++++++++++++++++++++++ 2 files changed, 516 insertions(+) create mode 100644 tools/gh_api.py create mode 100755 tools/github_stats.py diff --git a/tools/gh_api.py b/tools/gh_api.py new file mode 100644 index 0000000..8c62098 --- /dev/null +++ b/tools/gh_api.py @@ -0,0 +1,292 @@ +"""Functions for Github API requests.""" +from __future__ import print_function + +try: + input = raw_input +except NameError: + pass + +import os +import re +import sys + +import requests +import getpass +import json + +try: + import requests_cache +except ImportError: + print("no cache", file=sys.stderr) +else: + requests_cache.install_cache("gh_api", expire_after=3600) + +# Keyring stores passwords by a 'username', but we're not storing a username and +# password +fake_username = 'ipython_tools' + +class Obj(dict): + """Dictionary with attribute access to names.""" + def __getattr__(self, name): + try: + return self[name] + except KeyError: + raise AttributeError(name) + + def __setattr__(self, name, val): + self[name] = val + +token = None +def get_auth_token(): + global token + + if token is not None: + return token + + import keyring + token = keyring.get_password('github', fake_username) + if token is not None: + return token + + print("Please enter your github username and password. These are not " + "stored, only used to get an oAuth token. You can revoke this at " + "any time on Github.") + user = input("Username: ") + pw = getpass.getpass("Password: ") + + auth_request = { + "scopes": [ + "public_repo", + "gist" + ], + "note": "IPython tools", + "note_url": "https://github.com/ipython/ipython/tree/master/tools", + } + response = requests.post('https://api.github.com/authorizations', + auth=(user, pw), data=json.dumps(auth_request)) + response.raise_for_status() + token = json.loads(response.text)['token'] + keyring.set_password('github', fake_username, token) + return token + +def make_auth_header(): + return {'Authorization': 'token ' + get_auth_token()} + +def post_issue_comment(project, num, body): + url = 'https://api.github.com/repos/{project}/issues/{num}/comments'.format(project=project, num=num) + payload = json.dumps({'body': body}) + requests.post(url, data=payload, headers=make_auth_header()) + +def post_gist(content, description='', filename='file', auth=False): + """Post some text to a Gist, and return the URL.""" + post_data = json.dumps({ + "description": description, + "public": True, + "files": { + filename: { + "content": content + } + } + }).encode('utf-8') + + headers = make_auth_header() if auth else {} + response = requests.post("https://api.github.com/gists", data=post_data, headers=headers) + response.raise_for_status() + response_data = json.loads(response.text) + return response_data['html_url'] + +def get_pull_request(project, num, auth=False): + """get pull request info by number + """ + url = "https://api.github.com/repos/{project}/pulls/{num}".format(project=project, num=num) + if auth: + header = make_auth_header() + else: + header = None + response = requests.get(url, headers=header) + response.raise_for_status() + return json.loads(response.text, object_hook=Obj) + +def get_pull_request_files(project, num, auth=False): + """get list of files in a pull request""" + url = "https://api.github.com/repos/{project}/pulls/{num}/files".format(project=project, num=num) + if auth: + header = make_auth_header() + else: + header = None + return get_paged_request(url, headers=header) + +element_pat = re.compile(r'<(.+?)>') +rel_pat = re.compile(r'rel=[\'"](\w+)[\'"]') + +def get_paged_request(url, headers=None, **params): + """get a full list, handling APIv3's paging""" + results = [] + params.setdefault("per_page", 100) + while True: + if '?' in url: + params = None + print("fetching %s" % url, file=sys.stderr) + else: + print("fetching %s with %s" % (url, params), file=sys.stderr) + response = requests.get(url, headers=headers, params=params) + response.raise_for_status() + results.extend(response.json()) + if 'next' in response.links: + url = response.links['next']['url'] + else: + break + return results + +def get_pulls_list(project, auth=False, **params): + """get pull request list""" + params.setdefault("state", "closed") + url = "https://api.github.com/repos/{project}/pulls".format(project=project) + if auth: + headers = make_auth_header() + else: + headers = None + pages = get_paged_request(url, headers=headers, **params) + return pages + +def get_issues_list(project, auth=False, **params): + """get issues list""" + params.setdefault("state", "closed") + url = "https://api.github.com/repos/{project}/issues".format(project=project) + if auth: + headers = make_auth_header() + else: + headers = None + pages = get_paged_request(url, headers=headers, **params) + return pages + +def get_milestones(project, auth=False, **params): + url = "https://api.github.com/repos/{project}/milestones".format(project=project) + if auth: + headers = make_auth_header() + else: + headers = None + milestones = get_paged_request(url, headers=headers, **params) + return milestones + +def get_milestone_id(project, milestone, auth=False, **params): + milestones = get_milestones(project, auth=auth, **params) + for mstone in milestones: + if mstone['title'] == milestone: + return mstone['number'] + else: + raise ValueError("milestone %s not found" % milestone) + +def is_pull_request(issue): + """Return True if the given issue is a pull request.""" + return bool(issue.get('pull_request', {}).get('html_url', None)) + +def get_authors(pr): + print("getting authors for #%i" % pr['number'], file=sys.stderr) + h = make_auth_header() + r = requests.get(pr['commits_url'], headers=h) + r.raise_for_status() + commits = r.json() + authors = [] + for commit in commits: + author = commit['commit']['author'] + authors.append("%s <%s>" % (author['name'], author['email'])) + return authors + +# encode_multipart_formdata is from urllib3.filepost +# The only change is to iter_fields, to enforce S3's required key ordering + +def iter_fields(fields): + fields = fields.copy() + for key in ('key', 'acl', 'Filename', 'success_action_status', 'AWSAccessKeyId', + 'Policy', 'Signature', 'Content-Type', 'file'): + yield (key, fields.pop(key)) + for (k,v) in fields.items(): + yield k,v + +def encode_multipart_formdata(fields, boundary=None): + """ + Encode a dictionary of ``fields`` using the multipart/form-data mime format. + + :param fields: + Dictionary of fields or list of (key, value) field tuples. The key is + treated as the field name, and the value as the body of the form-data + bytes. If the value is a tuple of two elements, then the first element + is treated as the filename of the form-data section. + + Field names and filenames must be unicode. + + :param boundary: + If not specified, then a random boundary will be generated using + :func:`mimetools.choose_boundary`. + """ + # copy requests imports in here: + from io import BytesIO + from requests.packages.urllib3.filepost import ( + choose_boundary, six, writer, b, get_content_type + ) + body = BytesIO() + if boundary is None: + boundary = choose_boundary() + + for fieldname, value in iter_fields(fields): + body.write(b('--%s\r\n' % (boundary))) + + if isinstance(value, tuple): + filename, data = value + writer(body).write('Content-Disposition: form-data; name="%s"; ' + 'filename="%s"\r\n' % (fieldname, filename)) + body.write(b('Content-Type: %s\r\n\r\n' % + (get_content_type(filename)))) + else: + data = value + writer(body).write('Content-Disposition: form-data; name="%s"\r\n' + % (fieldname)) + body.write(b'Content-Type: text/plain\r\n\r\n') + + if isinstance(data, int): + data = str(data) # Backwards compatibility + if isinstance(data, six.text_type): + writer(body).write(data) + else: + body.write(data) + + body.write(b'\r\n') + + body.write(b('--%s--\r\n' % (boundary))) + + content_type = b('multipart/form-data; boundary=%s' % boundary) + + return body.getvalue(), content_type + + +def post_download(project, filename, name=None, description=""): + """Upload a file to the GitHub downloads area""" + if name is None: + name = os.path.basename(filename) + with open(filename, 'rb') as f: + filedata = f.read() + + url = "https://api.github.com/repos/{project}/downloads".format(project=project) + + payload = json.dumps(dict(name=name, size=len(filedata), + description=description)) + response = requests.post(url, data=payload, headers=make_auth_header()) + response.raise_for_status() + reply = json.loads(response.content) + s3_url = reply['s3_url'] + + fields = dict( + key=reply['path'], + acl=reply['acl'], + success_action_status=201, + Filename=reply['name'], + AWSAccessKeyId=reply['accesskeyid'], + Policy=reply['policy'], + Signature=reply['signature'], + file=(reply['name'], filedata), + ) + fields['Content-Type'] = reply['mime_type'] + data, content_type = encode_multipart_formdata(fields) + s3r = requests.post(s3_url, data=data, headers={'Content-Type': content_type}) + return s3r diff --git a/tools/github_stats.py b/tools/github_stats.py new file mode 100755 index 0000000..ba6e367 --- /dev/null +++ b/tools/github_stats.py @@ -0,0 +1,224 @@ +#!/usr/bin/env python +"""Simple tools to query github.com and gather stats about issues. + +Thanks to the IPython team for developing this! + + python github_stats.py --milestone 2.0 --since-tag rel-1.0.0 +""" +#----------------------------------------------------------------------------- +# Imports +#----------------------------------------------------------------------------- + +from __future__ import print_function + +import codecs +import sys + +from argparse import ArgumentParser +from datetime import datetime, timedelta +from subprocess import check_output + +from gh_api import ( + get_paged_request, make_auth_header, get_pull_request, is_pull_request, + get_milestone_id, get_issues_list, get_authors, +) +#----------------------------------------------------------------------------- +# Globals +#----------------------------------------------------------------------------- + +ISO8601 = "%Y-%m-%dT%H:%M:%SZ" +PER_PAGE = 100 + +#----------------------------------------------------------------------------- +# Functions +#----------------------------------------------------------------------------- + +def round_hour(dt): + return dt.replace(minute=0,second=0,microsecond=0) + +def _parse_datetime(s): + """Parse dates in the format returned by the Github API.""" + if s: + return datetime.strptime(s, ISO8601) + else: + return datetime.fromtimestamp(0) + +def issues2dict(issues): + """Convert a list of issues to a dict, keyed by issue number.""" + idict = {} + for i in issues: + idict[i['number']] = i + return idict + +def split_pulls(all_issues, project="arokem/python-matlab-bridge"): + """split a list of closed issues into non-PR Issues and Pull Requests""" + pulls = [] + issues = [] + for i in all_issues: + if is_pull_request(i): + pull = get_pull_request(project, i['number'], auth=True) + pulls.append(pull) + else: + issues.append(i) + return issues, pulls + + +def issues_closed_since(period=timedelta(days=365), project="arokem/python-matlab-bridge", pulls=False): + """Get all issues closed since a particular point in time. period + can either be a datetime object, or a timedelta object. In the + latter case, it is used as a time before the present. + """ + + which = 'pulls' if pulls else 'issues' + + if isinstance(period, timedelta): + since = round_hour(datetime.utcnow() - period) + else: + since = period + url = "https://api.github.com/repos/%s/%s?state=closed&sort=updated&since=%s&per_page=%i" % (project, which, since.strftime(ISO8601), PER_PAGE) + allclosed = get_paged_request(url, headers=make_auth_header()) + + filtered = [ i for i in allclosed if _parse_datetime(i['closed_at']) > since ] + if pulls: + filtered = [ i for i in filtered if _parse_datetime(i['merged_at']) > since ] + # filter out PRs not against master (backports) + filtered = [ i for i in filtered if i['base']['ref'] == 'master' ] + else: + filtered = [ i for i in filtered if not is_pull_request(i) ] + + return filtered + + +def sorted_by_field(issues, field='closed_at', reverse=False): + """Return a list of issues sorted by closing date date.""" + return sorted(issues, key = lambda i:i[field], reverse=reverse) + + +def report(issues, show_urls=False): + """Summary report about a list of issues, printing number and title. + """ + # titles may have unicode in them, so we must encode everything below + if show_urls: + for i in issues: + role = 'ghpull' if 'merged_at' in i else 'ghissue' + print(u'* :%s:`%d`: %s' % (role, i['number'], + i['title'].replace(u'`', u'``'))) + else: + for i in issues: + print(u'* %d: %s' % (i['number'], i['title'].replace(u'`', u'``'))) + +#----------------------------------------------------------------------------- +# Main script +#----------------------------------------------------------------------------- + +if __name__ == "__main__": + # deal with unicode + sys.stdout = codecs.getwriter('utf8')(sys.stdout) + + # Whether to add reST urls for all issues in printout. + show_urls = True + + parser = ArgumentParser() + parser.add_argument('--since-tag', type=str, + help="The git tag to use for the starting point (typically the last major release)." + ) + parser.add_argument('--milestone', type=str, + help="The GitHub milestone to use for filtering issues [optional]." + ) + parser.add_argument('--days', type=int, + help="The number of days of data to summarize (use this or --since-tag)." + ) + parser.add_argument('--project', type=str, default="arokem/python-matlab-bridge", + help="The project to summarize." + ) + + opts = parser.parse_args() + tag = opts.since_tag + + # set `since` from days or git tag + if opts.days: + since = datetime.utcnow() - timedelta(days=opts.days) + else: + if not tag: + tag = check_output(['git', 'describe', '--abbrev=0']).strip() + cmd = ['git', 'log', '-1', '--format=%ai', tag] + tagday, tz = check_output(cmd).strip().rsplit(' ', 1) + since = datetime.strptime(tagday, "%Y-%m-%d %H:%M:%S") + h = int(tz[1:3]) + m = int(tz[3:]) + td = timedelta(hours=h, minutes=m) + if tz[0] == '-': + since += td + else: + since -= td + + since = round_hour(since) + + milestone = opts.milestone + project = opts.project + + print("fetching GitHub stats since %s (tag: %s, milestone: %s)" % (since, tag, milestone), file=sys.stderr) + if milestone: + milestone_id = get_milestone_id(project=project, milestone=milestone, + auth=True) + issues_and_pulls = get_issues_list(project=project, + milestone=milestone_id, + state='closed', + auth=True, + ) + issues, pulls = split_pulls(issues_and_pulls) + else: + issues = issues_closed_since(since, project=project, pulls=False) + pulls = issues_closed_since(since, project=project, pulls=True) + + # For regular reports, it's nice to show them in reverse chronological order + issues = sorted_by_field(issues, reverse=True) + pulls = sorted_by_field(pulls, reverse=True) + + n_issues, n_pulls = map(len, (issues, pulls)) + n_total = n_issues + n_pulls + + # Print summary report we can directly include into release notes. + + print() + since_day = since.strftime("%Y/%m/%d") + today = datetime.today().strftime("%Y/%m/%d") + print("GitHub stats for %s - %s (tag: %s)" % (since_day, today, tag)) + print() + print("These lists are automatically generated, and may be incomplete or contain duplicates.") + print() + + ncommits = 0 + all_authors = [] + if tag: + # print git info, in addition to GitHub info: + since_tag = tag+'..' + cmd = ['git', 'log', '--oneline', since_tag] + ncommits += len(check_output(cmd).splitlines()) + + author_cmd = ['git', 'log', '--use-mailmap', "--format=* %aN", since_tag] + all_authors.extend(check_output(author_cmd).decode('utf-8', 'replace').splitlines()) + + pr_authors = [] + for pr in pulls: + pr_authors.extend(get_authors(pr)) + ncommits = len(pr_authors) + ncommits - len(pulls) + author_cmd = ['git', 'check-mailmap'] + pr_authors + with_email = check_output(author_cmd).decode('utf-8', 'replace').splitlines() + all_authors.extend([ u'* ' + a.split(' <')[0] for a in with_email ]) + unique_authors = sorted(set(all_authors), key=lambda s: s.lower()) + + print("The following %i authors contributed %i commits." % (len(unique_authors), ncommits)) + print() + print('\n'.join(unique_authors)) + + print() + print("We closed %d issues and merged %d pull requests;\n" + "this is the full list (generated with the script \n" + ":file:`tools/github_stats.py`):" % (n_pulls, n_issues)) + print() + print('Pull Requests (%d):\n' % n_pulls) + report(pulls, show_urls) + print() + print('Issues (%d):\n' % n_issues) + report(issues, show_urls) From 64f3c36e884692fab789bdbe7f6cc18a95a8d52c Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 25 Jan 2015 20:25:30 -0800 Subject: [PATCH 101/308] Switching off the dev flag for the release. --- pymatbridge/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 814367b..483c189 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -4,7 +4,7 @@ _version_major = 0 _version_minor = 4 _version_micro = '' # use '' for first of series, number for 1 and above -_version_extra = 'dev' +_version_extra = #'dev' #_version_extra = '' # Uncomment this for full releases # Construct full version string from these. From b87998e5704783aa7ed5e3aa2cc3df7ed08ab5d6 Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 25 Jan 2015 20:26:32 -0800 Subject: [PATCH 102/308] Starting to work up to 0.5 --- pymatbridge/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 483c189..7859783 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -2,9 +2,9 @@ # Format expected by setup.py and doc/source/conf.py: string of form "X.Y.Z" _version_major = 0 -_version_minor = 4 +_version_minor = 5 _version_micro = '' # use '' for first of series, number for 1 and above -_version_extra = #'dev' +_version_extra = 'dev' #_version_extra = '' # Uncomment this for full releases # Construct full version string from these. From e389ef7adcb190aafc05b46055d51eaaf3872abc Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 25 Jan 2015 20:31:31 -0800 Subject: [PATCH 103/308] Fumbled that release. Oops. Here's another one: 0.4.1. --- pymatbridge/version.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 7859783..7c022ff 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -2,10 +2,10 @@ # Format expected by setup.py and doc/source/conf.py: string of form "X.Y.Z" _version_major = 0 -_version_minor = 5 -_version_micro = '' # use '' for first of series, number for 1 and above -_version_extra = 'dev' -#_version_extra = '' # Uncomment this for full releases +_version_minor = 4 +_version_micro = 1#'' # use '' for first of series, number for 1 and above + #_version_extra = 'dev' +_version_extra = '' # Uncomment this for full releases # Construct full version string from these. _ver = [_version_major, _version_minor] From f399cdd231affead35eaff49d5d9e4168ad8206d Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 25 Jan 2015 20:44:18 -0800 Subject: [PATCH 104/308] And now, let's go one with this 0.5 business. --- pymatbridge/version.py | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 7c022ff..f9516d0 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -2,10 +2,10 @@ # Format expected by setup.py and doc/source/conf.py: string of form "X.Y.Z" _version_major = 0 -_version_minor = 4 -_version_micro = 1#'' # use '' for first of series, number for 1 and above - #_version_extra = 'dev' -_version_extra = '' # Uncomment this for full releases +_version_minor = 5 +_version_micro = 0#'' # use '' for first of series, number for 1 and above +_version_extra = 'dev' +#_version_extra = '' # Uncomment this for full releases # Construct full version string from these. _ver = [_version_major, _version_minor] @@ -31,11 +31,8 @@ Pymatbridge =========== -This package provides a set of python and matlab functions with the goal of -providing an easy, seamless way to call Matlab functions within Python (not so -much the other way, because why would anyone want to do something like that?). +A python interface to call out to Matlab(R). -TODO: more documentation will be here at some point. License information =================== @@ -58,15 +55,7 @@ software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ From 561949c5667e250213789e596575fa61cd3df1cd Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 25 Jan 2015 21:05:16 -0800 Subject: [PATCH 105/308] BF: making this install through pip/easy_install The extras_require mechanism is more complicated than that... --- pymatbridge/version.py | 8 ++++---- setup.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index f9516d0..1ad6304 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -2,9 +2,9 @@ # Format expected by setup.py and doc/source/conf.py: string of form "X.Y.Z" _version_major = 0 -_version_minor = 5 -_version_micro = 0#'' # use '' for first of series, number for 1 and above -_version_extra = 'dev' +_version_minor = 4 +_version_micro = 2#'' # use '' for first of series, number for 1 and above +#_version_extra = dev' #_version_extra = '' # Uncomment this for full releases # Construct full version string from these. @@ -85,6 +85,6 @@ "tests/*.py", "examples/*.ipynb"]} REQUIRES = ['pyzmq'] -EXTRAS_REQUIRE = ['numpy', 'scipy', 'ipython'] +#EXTRAS_REQUIRE = ['numpy', 'scipy', 'ipython'] BIN=['scripts/publish-notebook'] diff --git a/setup.py b/setup.py index 30fc215..b077fe7 100755 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ def copy_bin(bin_path): packages=PACKAGES, package_data=PACKAGE_DATA, requires=REQUIRES, - extras_require=EXTRAS_REQUIRE, + #extras_require=EXTRAS_REQUIRE, scripts=BIN ) From 304cefa1fa8bf0c08c3606bdedeeef918209c263 Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 25 Jan 2015 21:07:12 -0800 Subject: [PATCH 106/308] And one more potential snafu. --- pymatbridge/version.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 1ad6304..7678773 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -3,9 +3,9 @@ # Format expected by setup.py and doc/source/conf.py: string of form "X.Y.Z" _version_major = 0 _version_minor = 4 -_version_micro = 2#'' # use '' for first of series, number for 1 and above -#_version_extra = dev' -#_version_extra = '' # Uncomment this for full releases +_version_micro = 3#'' # use '' for first of series, number for 1 and above + #_version_extra = dev' +_version_extra = '' # Uncomment this for full releases # Construct full version string from these. _ver = [_version_major, _version_minor] From d7a07739ac65da751fb335dc9fcbaa4a351cb082 Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 25 Jan 2015 21:09:19 -0800 Subject: [PATCH 107/308] Moving ahead? --- pymatbridge/version.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 7678773..85b1d2b 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -2,10 +2,10 @@ # Format expected by setup.py and doc/source/conf.py: string of form "X.Y.Z" _version_major = 0 -_version_minor = 4 -_version_micro = 3#'' # use '' for first of series, number for 1 and above - #_version_extra = dev' -_version_extra = '' # Uncomment this for full releases +_version_minor = 5 +_version_micro = 0 #'' # use '' for first of series, number for 1 and above +_version_extra = dev +#_version_extra = '' # Uncomment this for full releases # Construct full version string from these. _ver = [_version_major, _version_minor] From d35d5531a807826336f79f5d3b86948f3bd07b59 Mon Sep 17 00:00:00 2001 From: Ariel Rokem Date: Mon, 26 Jan 2015 10:01:45 -0800 Subject: [PATCH 108/308] Update README.md I think that installation with pip bypasses all the zmq stuff. I kept the information around, but lower down --- README.md | 154 +++++++++++++++++++++++++++++------------------------- 1 file changed, 84 insertions(+), 70 deletions(-) diff --git a/README.md b/README.md index 3f84b3e..00bfbf1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Python-MATLAB(R) Bridge and ipython matlab_magic +# Python-MATLAB(R) Bridge and IPython `matlab` magic A python interface to call out to [Matlab(R)](http://mathworks.com). Original implementation by [Max Jaderberg](http://www.maxjaderberg.com/). His original @@ -22,79 +22,17 @@ $ pip install pymatbridge # sudo may be needed `pymatbridge` communicates with Matlab using zeromq. So before installing pymatbridge you must have [zmq](http://zeromq.org/intro:get-the-software) library and [pyzmq](http://zeromq.org/bindings:python) installed on your -machine. If you intend to use the Matlab magic extension, you'll also need +machine. These can be installed using + +``` +$ pip install pyzmq +``` + +If you intend to use the Matlab magic extension, you'll also need [IPython](http://ipython.org/install.html). Note that IPython notebooks also depend on `pyzmq` so if you have IPython notebooks installed, you likely have `pyzmq` already. -To make pymatbridge work properly, please follow the following steps. - -### Install zmq library -Please refer to the [official guide](http://zeromq.org/intro:get-the-software) on how to -build and install zmq. After zmq is installed, make sure you can find the location where -libzmq is installed. The library extension name and default location on different systems -are listed below. - -| Platform | library name | Default locations | -| ------------- | ------------- | --------------------------------- | -| MacOS | libzmq.dylib | /usr/lib or /usr/local/lib | -| Linux | libzmq.so.3 | /usr/lib or /usr/local/lib | -| Windows | libzmq.dll | C:\Program Files\ZeroMQ 3.2.4\bin | - -If you specified a prefix when installing zmq, the library file should be located at the -same prefix location. - -The pymatbridge MEX extension needs to be able to locate the zmq library. If it's in a -standard location, you may not need to do anything; if not, there are two ways to -accomplish this: - -#### Using the dynamic loader path - -One option is to set an environment variable which will point the loader to the right -directory. - -On MacOS, you can do this by adding the following line to your .bash_profile (or similar -file for your shell): - - export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH: - -On Linux, add the following line to your .bash_profile (or similar file for your shell): - - export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH: - -On Windows, add the install location of libzmq.dll to the PATH environment variable. -On Windows 7+, typing "environment variables" into the start menu will bring up the -apporpriate Control Panel links. - -#### Pointing the binary at the right place - -Another option is to modify the MEX binary to point to the right location. This is -preferable in that it doesn't change loader behavior for other libraries than just -the pymatbridge messenger. - -On MacOS, you can do this from the root of the pymatbridge code with: - - install_name_tool -change /usr/local/lib/libzmq.3.dylib /libzmq.3.dylib messenger/maci64/messenger.mexmaci64 - -On Linux, you can add it to the RPATH: - - patchelf --set-rpath messenger/mexa64/messenger.mexa64 - -### Install pyzmq -After step 1 is finished, please grab the latest version of -[pyzmq](http://zeromq.org/bindings:python) and follow the instructions on the official -page. Note that pymatbridge is developed with pyzmq 14.0.0 and older versions might not -be supported. If you have an old version of pyzmq, please update it. - -### Install pymatbridge -After the steps above are done, you can install pymatbridge. Download the zip file of the -latest release. Unzip it somewhere on your machine and then issue: - - python setup.py install - -This should make the python-matlab-bridge import-able. - - ## Usage To use the pymatbridge you need to connect your python interpreter to a Matlab @@ -209,6 +147,82 @@ write matlab code: plot(cos(a),'r') More examples are provided in the `examples` directory + +## Building the pymatbridge messenger from source + +The installation of `pymatbridge` includes a binary of a mex function to communicate between +Python and Matlab using the [0MQ](http://zeromq.org/) messaging library. This should work +without any need for compilation on most computers. However, in some cases, you might want +to build the pymatbridge messenger from source. To do so, you will need to follow the + +### Install zmq library +Please refer to the [official guide](http://zeromq.org/intro:get-the-software) on how to +build and install zmq. After zmq is installed, make sure you can find the location where +libzmq is installed. The library extension name and default location on different systems +are listed below. + +| Platform | library name | Default locations | +| ------------- | ------------- | --------------------------------- | +| MacOS | libzmq.dylib | /usr/lib or /usr/local/lib | +| Linux | libzmq.so.3 | /usr/lib or /usr/local/lib | +| Windows | libzmq.dll | C:\Program Files\ZeroMQ 3.2.4\bin | + +If you specified a prefix when installing zmq, the library file should be located at the +same prefix location. + +The pymatbridge MEX extension needs to be able to locate the zmq library. If it's in a +standard location, you may not need to do anything; if not, there are two ways to +accomplish this: + +#### Using the dynamic loader path + +One option is to set an environment variable which will point the loader to the right +directory. + +On MacOS, you can do this by adding the following line to your .bash_profile (or similar +file for your shell): + + export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH: + +On Linux, add the following line to your .bash_profile (or similar file for your shell): + + export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH: + +On Windows, add the install location of libzmq.dll to the PATH environment variable. +On Windows 7+, typing "environment variables" into the start menu will bring up the +apporpriate Control Panel links. + +#### Pointing the binary at the right place + +Another option is to modify the MEX binary to point to the right location. This is +preferable in that it doesn't change loader behavior for other libraries than just +the pymatbridge messenger. + +On MacOS, you can do this from the root of the pymatbridge code with: + + install_name_tool -change /usr/local/lib/libzmq.3.dylib /libzmq.3.dylib messenger/maci64/messenger.mexmaci64 + +On Linux, you can add it to the RPATH: + + patchelf --set-rpath messenger/mexa64/messenger.mexa64 + +### Install pyzmq +After step 1 is finished, please grab the latest version of +[pyzmq](http://zeromq.org/bindings:python) and follow the instructions on the official +page. Note that pymatbridge is developed with pyzmq 14.0.0 and older versions might not +be supported. If you have an old version of pyzmq, please update it. + +### Install pymatbridge +After the steps above are done, you can install pymatbridge. Download the zip file of the +latest release. Unzip it somewhere on your machine and then issue: + + cd messenger + python make.py + cd .. + python setup.py install + +This should make the python-matlab-bridge import-able. + ### Warnings From 2ebd3f16146937723519eda69baa1b00eb1b9448 Mon Sep 17 00:00:00 2001 From: John Kirkham Date: Mon, 26 Jan 2015 13:43:21 -0500 Subject: [PATCH 109/308] pymatbridge/pymatbridge.py: Older versions of NumPy don't supply the tobytes method. However, it is stated in the NumPy release notes for 1.9.0 ( http://docs.scipy.org/doc/numpy/release.html ) ( https://github.com/numpy/numpy/blob/master/doc/release/1.9.0-notes.rst ) that this behaves the same as tostring. So, this workaround tries to use tostring if tobytes fails. --- pymatbridge/pymatbridge.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 1888d87..6231c3e 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -66,7 +66,12 @@ def encode_ndarray(obj): obj = obj.T elif not obj.flags.f_contiguous: obj = asfortranarray(obj) - data = obj.astype(float64).tobytes() + + try: + data = obj.astype(float64).tobytes() + except AttributeError: + data = obj.astype(float64).tostring() + data = codecs.encode(data, 'base64').decode('utf-8') return data, shape From d7ecda327618e0920cd4b5adc0fe2a169f9d724a Mon Sep 17 00:00:00 2001 From: arokem Date: Mon, 26 Jan 2015 15:11:06 -0800 Subject: [PATCH 110/308] BF: Typo in `version` --- pymatbridge/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 85b1d2b..0b9ef31 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -4,7 +4,7 @@ _version_major = 0 _version_minor = 5 _version_micro = 0 #'' # use '' for first of series, number for 1 and above -_version_extra = dev +_version_extra = 'dev' #_version_extra = '' # Uncomment this for full releases # Construct full version string from these. From 08cd8553cf8bebfaebf3368e0115d0870843100e Mon Sep 17 00:00:00 2001 From: John Kirkham Date: Wed, 28 Jan 2015 12:11:04 -0500 Subject: [PATCH 111/308] pymatbridge/matlab_magic.py: If there is a MatlabInterperterError, make sure it gets raised instead of generic RuntimeError so the user gets some feedback. Fixes arokem#117. --- pymatbridge/matlab_magic.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index 7d94e89..88b4654 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -211,6 +211,8 @@ def matlab(self, line, cell=None, local_ns=None): else: e_s = "There was an error running the code:\n %s"%code result_dict = self.eval(code) + except MatlabInterperterError: + raise except: e_s += "\n-----------------------" e_s += "\nAre you sure Matlab is started?" From 944cf22b1c121fb43b307769d0b82e8f866ed4ef Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Wed, 28 Jan 2015 12:48:25 -0500 Subject: [PATCH 112/308] Simplify logic in matlab_magic.py. --- pymatbridge/matlab_magic.py | 46 +++++++++---------------------------- 1 file changed, 11 insertions(+), 35 deletions(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index 88b4654..6d52813 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -161,31 +161,14 @@ def set_matlab_var(self, name, value): @needs_local_scope @line_cell_magic def matlab(self, line, cell=None, local_ns=None): - """ - - Execute code in matlab + "Execute code in matlab." - """ args = parse_argstring(self.matlab, line) - - # arguments 'code' in line are prepended to - # the cell lines - - if cell is None: - code = '' - return_output = True - line_mode = True - else: - code = cell - return_output = False - line_mode = False - - code = ' '.join(args.code) + code + code = line if cell is None else ' '.join(args.code) + cell if local_ns is None: local_ns = {} - if args.input: if has_io: for input in ','.join(args.input).split(','): @@ -201,26 +184,19 @@ def matlab(self, line, cell=None, local_ns=None): else: raise RuntimeError(no_io_str) - text_output = '' - #imgfiles = [] - try: - if line_mode: - e_s = "There was an error running the code:\n %s"%line - result_dict = self.eval(line) - else: - e_s = "There was an error running the code:\n %s"%code - result_dict = self.eval(code) + result_dict = self.eval(code) except MatlabInterperterError: raise except: - e_s += "\n-----------------------" - e_s += "\nAre you sure Matlab is started?" - raise RuntimeError(e_s) - - - - text_output += result_dict['content']['stdout'] + raise RuntimeError('\n'.join([ + "There was an error running the code:", + code, + "-----------------------", + "Are you sure Matlab is started?", + ])) + + text_output = result_dict['content']['stdout'] # Figures get saved by matlab in reverse order... imgfiles = result_dict['content']['figures'][::-1] data_dir = result_dict['content']['datadir'] From 0393eeca797c46b74ed5193c5e8c20064eef7b15 Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Thu, 29 Jan 2015 21:27:01 -0500 Subject: [PATCH 113/308] Remove unused field. --- pymatbridge/pymatbridge.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 6231c3e..22e8403 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -165,7 +165,6 @@ def __init__(self, executable, socket_addr=None, Optional; sensible defaults are used if this is not provided. """ self.started = False - self.running = False self.executable = executable self.socket_addr = socket_addr self.id = id @@ -271,8 +270,6 @@ def is_function_processor_working(self): return result['success'] == 'true' def _json_response(self, **kwargs): - if self.running: - time.sleep(0.05) return json.loads(self._response(**kwargs), object_hook=decode_pymat) # Run a function in Matlab and return the result From f9bf7276ba22870583d3cfc630b9bc5029d6939c Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Thu, 29 Jan 2015 21:48:00 -0500 Subject: [PATCH 114/308] Use a conditional expression here. --- pymatbridge/pymatbridge.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 22e8403..1db7390 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -284,10 +284,7 @@ def run_code(self, code): def get_variable(self, varname, default=None): response = self._json_response(cmd='get_var', varname=varname) - if response['exists']: - return response['var'] - else: - return default + return response['var'] if response['exists'] else default def set_variable(self, varname, value): if isinstance(value, spmatrix): From e727f2428da4c97fa817ed03113b70b5643a24f8 Mon Sep 17 00:00:00 2001 From: The Gitter Badger Date: Fri, 30 Jan 2015 17:24:00 +0000 Subject: [PATCH 115/308] Added Gitter badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 00bfbf1..d37703f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Python-MATLAB(R) Bridge and IPython `matlab` magic +[![Join the chat at https://gitter.im/arokem/python-matlab-bridge](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/arokem/python-matlab-bridge?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + A python interface to call out to [Matlab(R)](http://mathworks.com). Original implementation by [Max Jaderberg](http://www.maxjaderberg.com/). His original repo of the project can be found [here]( From 068f8be6f868dcd117635da44f8687f4635e7303 Mon Sep 17 00:00:00 2001 From: arokem Date: Fri, 30 Jan 2015 15:21:50 -0800 Subject: [PATCH 116/308] DOC: Clarify dependencies a bit. --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d37703f..284ec27 100644 --- a/README.md +++ b/README.md @@ -31,9 +31,14 @@ $ pip install pyzmq ``` If you intend to use the Matlab magic extension, you'll also need -[IPython](http://ipython.org/install.html). Note that IPython notebooks -also depend on `pyzmq` so if you have IPython notebooks installed, you likely -have `pyzmq` already. +[IPython](http://ipython.org/install.html), as well as +[Scipy](http://scipy.org/) and [Numpy](http://www.numpy.org/). These can be +installed from PyPI, or using distributions such as +[Anaconda](https://store.continuum.io/cshop/anaconda/) or [Enthought +Canopy](https://store.enthought.com/downloads/) + +Note thatIPython notebooks also depend on `pyzmq` so if you have IPython notebooks +installed, you likely have `pyzmq` already. ## Usage From dc194e20056c319bcc5064b11d77d807f6117bed Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 31 Jan 2015 16:42:50 -0600 Subject: [PATCH 117/308] Pipe stdout to subprocess.PIPE --- pymatbridge/pymatbridge.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 1db7390..e411ab5 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -204,7 +204,8 @@ def _run_server(self): ]) command = '%s %s %s "%s"' % (self.executable, self.startup_options, self._execute_flag(), ','.join(code)) - subprocess.Popen(command, shell=True, stdin=subprocess.PIPE) + subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, + stdout=subprocess.PIPE) # Start server/client session and make the connection def start(self): From 5f586766b659432e231f180e9d949b48dc626ebc Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 1 Feb 2015 07:36:40 -0800 Subject: [PATCH 118/308] BF: Install on Windows 64 systems, but not on 32 bit Windows. At least until someone helps us build the messenger for that system. --- setup.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b077fe7..7f9f30b 100755 --- a/setup.py +++ b/setup.py @@ -22,7 +22,11 @@ def copy_bin(bin_path): return False if sys.platform == "win32": - raise ValueError("pymatbridge does not work on win32") + # We have a win64 messenger, so we need to figure out if this is 32 or 64 + # bit Windows: + maxint = sys.maxint() + elif maxint == 2147483647: + raise ValueError("pymatbridge does not work on win32") else: for copy_this in ["./messenger/mexmaci64/messenger.mexmaci64", "./messenger/mexa64/messenger.mexa64", From 8b5934817b561a79c9c2f270315513b7931a1117 Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 1 Feb 2015 11:05:58 -0800 Subject: [PATCH 119/308] RF: This should work better for the same purpose. --- setup.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/setup.py b/setup.py index 7f9f30b..36a14ac 100755 --- a/setup.py +++ b/setup.py @@ -24,14 +24,13 @@ def copy_bin(bin_path): if sys.platform == "win32": # We have a win64 messenger, so we need to figure out if this is 32 or 64 # bit Windows: - maxint = sys.maxint() - elif maxint == 2147483647: + if not platform.machine().endswith('64'): raise ValueError("pymatbridge does not work on win32") -else: - for copy_this in ["./messenger/mexmaci64/messenger.mexmaci64", - "./messenger/mexa64/messenger.mexa64", - "./messenger/mexw64/messenger.mexw64"]: - copy_bin(copy_this) + +for copy_this in ["./messenger/mexmaci64/messenger.mexmaci64", + "./messenger/mexa64/messenger.mexa64", + "./messenger/mexw64/messenger.mexw64"]: + copy_bin(copy_this) # Get version and release info, which is all stored in pymatbridge/version.py ver_file = os.path.join('pymatbridge', 'version.py') From 8a2be41908219a2a2f0591bc1e713cbbc14e9856 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 1 Feb 2015 14:59:49 -0600 Subject: [PATCH 120/308] Suppress Octave window display --- pymatbridge/pymatbridge.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index e411ab5..a58606e 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -409,6 +409,7 @@ def _preamble_code(self): code = super(Octave, self)._preamble_code() if self.log: code.append("diary('./pymatbridge/logs/octavelog_%s.txt')" % self.id) + code.append("set(0, 'defaultfigurevisible', 'off');") return code def _execute_flag(self): From a06257773cced57a0b5bc4e1a66da1ca8b35c466 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 1 Feb 2015 15:01:06 -0600 Subject: [PATCH 121/308] Remove the caveat in the README --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index 284ec27..3aa3c6f 100644 --- a/README.md +++ b/README.md @@ -117,12 +117,6 @@ As with `pymatbridge.Matlab`, you can override this by specifying the There are a few caveats to note about Octave support: -* `pymatbridge.Matlab` invokes MATLAB with command line options that suppress -the display of figures -- these are instead saved to image files, accessible -via `results['content']['figures']` in the results dict. No such mechanism -seems to be available for Octave, so when drawing figures you'll likely see -them briefly pop up and disappear. (If you know of a way around this, feel -free to send a pull request). * The zmq messenger used to communicate with the Octave session is written in C and needs to be compiled. For MATLAB various prebuilt binaries are provided and added to MATLAB's runtime path, but as of this writing the same isn't From ffed850ab071bea2139dc73a2f8e862dafd302da Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Sun, 1 Feb 2015 16:54:44 -0500 Subject: [PATCH 122/308] Don't turn on all warnings; just restore defaults. --- pymatbridge/pymatbridge.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index a58606e..ea3c014 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -189,9 +189,10 @@ def _preamble_code(self): # suppress warnings while loading the path, in the case of # overshadowing a built-in function on a newer version of # Matlab (e.g. isrow) - return ["warning('off','all')", + return ["old_warning_state = warning('off','all')", "addpath(genpath('%s'))" % MATLAB_FOLDER, - "warning('on', 'all')"] + "warning(old_warning_state)", + "clear old_warning_state"] def _execute_flag(self): raise NotImplemented From 28be084b9cbe4ad0869eb62eb0a424d959f68445 Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 1 Feb 2015 15:33:40 -0800 Subject: [PATCH 123/308] BF: import the platform module. --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 36a14ac..43dd4b7 100755 --- a/setup.py +++ b/setup.py @@ -1,6 +1,7 @@ #!/usr/bin/env python """Setup file for python-matlab-bridge""" +import platform import os import sys import shutil From c237bbc53b4fbfec3e20c99ee27709ad10012f5d Mon Sep 17 00:00:00 2001 From: arokem Date: Sat, 7 Feb 2015 08:36:27 -0800 Subject: [PATCH 124/308] DOC: This is no longer emitted into the python session. --- pymatbridge/pymatbridge.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index ea3c014..3c6883e 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -14,19 +14,6 @@ Send 'exit' command to kill the server .MATLAB started and connected! True ->>> - < M A T L A B (R) > - Copyright 1984-2014 The MathWorks, Inc. - R2014b (8.4.0.150421) 64-bit (maci64) - September 15, 2014 - - -To get started, type one of these: helpwin, helpdesk, or demo. -For product information, visit www.mathworks.com. - -Socket created at: ipc:///tmp/pymatbridge - ->>> >>> m.run_code('a=1;') {'content': {'stdout': '', 'datadir': '/private/tmp/MatlabData/', 'code': 'a=1;', 'figures': []}, 'success': 'true'} >>> m.get_variable('a') From f883718005da694203665370349a90c3f75ccfb5 Mon Sep 17 00:00:00 2001 From: arokem Date: Sat, 7 Feb 2015 10:19:26 -0800 Subject: [PATCH 125/308] BF: Transpose arrays that were entered as fortran-ordered --- pymatbridge/pymatbridge.py | 3 ++- pymatbridge/tests/test_array.py | 8 ++++++++ pymatbridge/tests/test_utils.py | 4 +++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 3c6883e..bc49826 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -53,7 +53,8 @@ def encode_ndarray(obj): obj = obj.T elif not obj.flags.f_contiguous: obj = asfortranarray(obj) - + else: + obj = obj.T try: data = obj.astype(float64).tobytes() except AttributeError: diff --git a/pymatbridge/tests/test_array.py b/pymatbridge/tests/test_array.py index 8e95080..af5fc1f 100644 --- a/pymatbridge/tests/test_array.py +++ b/pymatbridge/tests/test_array.py @@ -24,3 +24,11 @@ def test_array_size(self): npt.assert_almost_equal(res, array, decimal=8, err_msg = "test_array_size: error") + def test_array_content(self): + test_array = np.random.random_integers(2, 20, (5, 10)) + self.mlab.set_variable('test', test_array) + npt.assert_equal(self.mlab.get_variable('test'), test_array) + test_array = np.asfortranarray(test_array) + self.mlab.set_variable('test', test_array) + npt.assert_equal(self.mlab.get_variable('test'), test_array) + diff --git a/pymatbridge/tests/test_utils.py b/pymatbridge/tests/test_utils.py index ade76f3..3f960fe 100644 --- a/pymatbridge/tests/test_utils.py +++ b/pymatbridge/tests/test_utils.py @@ -1,5 +1,4 @@ import os - import pymatbridge as pymat import numpy.testing as npt @@ -18,3 +17,6 @@ def stop_matlab(mlab): mlab.stop() npt.assert_(not mlab.is_connected(), msg = "stop_matlab(): Disconnection failed") + + + From ca1e2a415610e376b06bba6d2217274f9bd62c05 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 11 Feb 2015 08:53:44 -0600 Subject: [PATCH 126/308] Add ability to set height and width in magic --- pymatbridge/matlab_magic.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index 6d52813..c06ca87 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -102,6 +102,7 @@ def __init__(self, shell, self.Matlab = pymat.Matlab(matlab, maxtime=maxtime) self.Matlab.start() + self._initialized = False self.pyconverter = pyconverter def __del__(self): @@ -152,6 +153,11 @@ def set_matlab_var(self, name, value): help='Do not display text output of MATLAB command' ) + @argument( + '-S', '--size', action='store', default='512,384', + help='Pixel size of plots, "width,height.' + ) + @argument( 'code', nargs='*', @@ -169,6 +175,15 @@ def matlab(self, line, cell=None, local_ns=None): if local_ns is None: local_ns = {} + if not self._initialized: + self._initialized = True + self.eval("set(0, 'defaultfigurepaperunits', 'inches');") + self.eval("set(0, 'defaultfigureunits', 'inches');") + + width, height = args.size.split(',') + size = "set(0, 'defaultfigurepaperposition', [0 0 %s %s])\n;" + code = size % (int(width) / 150., int(height) / 150.) + code + if args.input: if has_io: for input in ','.join(args.input).split(','): From cba4d1d1d65af5dabe6ebf6986a965e84f766bea Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 13 Feb 2015 10:12:33 -0600 Subject: [PATCH 127/308] Move the plot size handling to the Session Conflicts: pymatbridge/pymatbridge.py --- pymatbridge/matlab_magic.py | 8 +------- pymatbridge/pymatbridge.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index c06ca87..f351252 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -175,14 +175,8 @@ def matlab(self, line, cell=None, local_ns=None): if local_ns is None: local_ns = {} - if not self._initialized: - self._initialized = True - self.eval("set(0, 'defaultfigurepaperunits', 'inches');") - self.eval("set(0, 'defaultfigureunits', 'inches');") - width, height = args.size.split(',') - size = "set(0, 'defaultfigurepaperposition', [0 0 %s %s])\n;" - code = size % (int(width) / 150., int(height) / 150.) + code + self.Matlab.set_default_plot_size(width, height) if args.input: if has_io: diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index bc49826..e915d55 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -169,6 +169,7 @@ def __init__(self, executable, socket_addr=None, self.context = None self.socket = None + self._initialized = False def _program_name(self): raise NotImplemented @@ -259,17 +260,25 @@ def is_function_processor_working(self): {'echo': '%s: Function processor is working!' % self._program_name()}) return result['success'] == 'true' + def _initialize(self): + self._initialized = True + self.set_default_plot_size() + def _json_response(self, **kwargs): return json.loads(self._response(**kwargs), object_hook=decode_pymat) # Run a function in Matlab and return the result def run_func(self, func_path, func_args=None): + if not self._initialized: + self._initialize() return self._json_response(cmd='run_function', func_path=func_path, func_args=func_args) # Run some code in Matlab command line provide by a string def run_code(self, code): + if not self._initialized: + self._initialize() return self._json_response(cmd='run_code', code=code) def get_variable(self, varname, default=None): @@ -282,6 +291,13 @@ def set_variable(self, varname, value): return self.run_func('pymat_set_variable.m', {'name': varname, 'value': value}) + def set_default_plot_size(self, width=512, height=384): + code = "set(0, 'defaultfigurepaperunits', 'inches');\n" + code += "set(0, 'defaultfigureunits', 'inches');\n" + size = "set(0, 'defaultfigurepaperposition', [0 0 %s %s])\n;" + code += size % (int(width) / 150., int(height) / 150.) + self.run_code(code) + def _set_sparse_variable(self, varname, value): value = value.todok() prefix = 'pymatbridge_temp_sparse_%s_' % uuid4().hex From 9ed6105e85b06a18afd6ada04ff5b98ca85bd135 Mon Sep 17 00:00:00 2001 From: Ariel Rokem Date: Fri, 13 Feb 2015 08:39:38 -0800 Subject: [PATCH 128/308] Update matlab_magic.py DOC: Moved Thanks to Max to README --- pymatbridge/matlab_magic.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index 6d52813..4ce9b54 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -5,11 +5,6 @@ Magic command interface for interactive work with Matlab(R) via the pymatbridge - -Note -==== -Thanks to Max Jaderberg for his work on pymatbridge. - """ import sys, os From a8e6872abf35977541cde5ac761daf06a875e7e3 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 13 Feb 2015 14:06:02 -0600 Subject: [PATCH 129/308] Clean up initialization behavior --- pymatbridge/matlab_magic.py | 1 - pymatbridge/pymatbridge.py | 11 ++--------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index f351252..5ee9d20 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -102,7 +102,6 @@ def __init__(self, shell, self.Matlab = pymat.Matlab(matlab, maxtime=maxtime) self.Matlab.start() - self._initialized = False self.pyconverter = pyconverter def __del__(self): diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index e915d55..4fcee0e 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -169,7 +169,6 @@ def __init__(self, executable, socket_addr=None, self.context = None self.socket = None - self._initialized = False def _program_name(self): raise NotImplemented @@ -219,6 +218,8 @@ def start(self): print("%s failed to start" % self._program_name()) return False + self.set_default_plot_size() + def _response(self, **kwargs): req = json.dumps(kwargs, cls=PymatEncoder) self.socket.send_string(req) @@ -260,25 +261,17 @@ def is_function_processor_working(self): {'echo': '%s: Function processor is working!' % self._program_name()}) return result['success'] == 'true' - def _initialize(self): - self._initialized = True - self.set_default_plot_size() - def _json_response(self, **kwargs): return json.loads(self._response(**kwargs), object_hook=decode_pymat) # Run a function in Matlab and return the result def run_func(self, func_path, func_args=None): - if not self._initialized: - self._initialize() return self._json_response(cmd='run_function', func_path=func_path, func_args=func_args) # Run some code in Matlab command line provide by a string def run_code(self, code): - if not self._initialized: - self._initialize() return self._json_response(cmd='run_code', code=code) def get_variable(self, varname, default=None): From aba51508ca437b8094dfe0f8258a40a4488af4d4 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 13 Feb 2015 14:06:16 -0600 Subject: [PATCH 130/308] Rerun the example notebooks --- pymatbridge/examples/matlab_magic.ipynb | 17 +++++++++--- pymatbridge/examples/pymatbridge.ipynb | 37 ++++++++----------------- 2 files changed, 25 insertions(+), 29 deletions(-) diff --git a/pymatbridge/examples/matlab_magic.ipynb b/pymatbridge/examples/matlab_magic.ipynb index 5811dfd..b2a7172 100644 --- a/pymatbridge/examples/matlab_magic.ipynb +++ b/pymatbridge/examples/matlab_magic.ipynb @@ -1,7 +1,7 @@ { "metadata": { "name": "", - "signature": "sha256:5aa9c9684bd70f7297765b71dc4918d9c1cb5a9085521dc57999ecbefba00f4b" + "signature": "sha256:48e8fc74a7e448f6413aa94b84b2099f57ab69f6390c266abbd5d1ff0c4a0b14" }, "nbformat": 3, "nbformat_minor": 0, @@ -52,7 +52,7 @@ "cell_type": "code", "collapsed": false, "input": [ - "%%matlab\n", + "%%matlab --size 400,350\n", "t = linspace(0,6*pi,100);\n", "plot(sin(t))\n", "grid on\n", @@ -65,7 +65,7 @@ { "metadata": {}, "output_type": "display_data", - "png": "iVBORw0KGgoAAAANSUhEUgAABLAAAAOECAIAAAA+D1+tAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\nB3RJTUUH3wEaBAsw71zbqgAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyNS1KYW4tMjAxNSAyMDoxMTo0N1V4hAgAACAA\nSURBVHic7N1/fFTVnT/+VyaXZEImZBKGOJCBJBIgSISgUYOgRGUrttjalVW6qy22WuvaPpRqt+3a\nrtu1LvXhumrVda32UfqRfkstVregYosWNGgosQwYcIAgCQnJEEIyIZNkApPJ948zMwbI79w7995z\nX88/+sAkM3NyO++8533POe+T1NfXByIiIiIiIrIem94DICIiIiIiIn2wICQiIiIiIrIoFoRERERE\nREQWxYKQiIiIiIjIolgQEhERERERWRQLQiIiIiIiIotiQUhERERERGRRLAiJiIiIiIgsigUhERER\nERGRRbEgJCIiIiIisigWhERERERERBbFgpCIiIiIiMiiWBASERERERFZFAtCIiIiIiIii2JBSERE\nREREZFEsCImIiIiIiCyKBSEREREREZFFsSAkIiIiIiKyKBaEREREREREFsWCkIiIiIiIyKJYEBIR\nEREREVkUC0IiIiIiIiKLYkFIRERERERkUSwIiYiIiIiILIoFIRERERERkUWxICQiIiIiIrIoFoRE\nREREREQWxYKQiIiIiIjIolgQEhERERERWRQLQiIiIiIiIotiQUhERERERGRRLAiJiIiIiIgsigUh\nERERERGRRbEgJCIiIiIisigWhERERERERBbFgpCIiIiIiMiiWBASERERERFZFAtCIiIiIiIii2JB\nSEREREREZFEsCImIiIiIiCyKBSEREREREZFFsSAkIiIiIiKyKBaEREREREREFsWCkIiIiIiIyKJY\nEBIREREREVkUC0IiIiIiIiKLYkFIRERERERkUSwIiYiIiIiILIoFIRERERERkUWxICQiIiIiIrIo\nFoREREREREQWxYKQiIiIiIjIolgQEhERERERWRQLQiIiIiIiIotiQUhERERERGRRLAiJiIiIiIgs\nigUhERERERGRRbEgNIe2traf//znn3zyid4DISIiIiIiebAgNIfNmzc/99xzLAiJiIiIiEhFit4D\n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\nffbcuXPOI0888cTzzz+vYpPUlZ6evnDhwsjIyEa/ViQM1LZt25555pmamhrnkdDQ0DfffDMpKcl5\nRMKwvPPOOx999FHDIzfccMPHH3/csFSWMCwNzZs3b+XKlYMGDWpUEEoYljlz5hw8eLDRwS5dujTc\n91XCsJSXl0+cODE/P995xGAwzJ8//4477nAekSoshYWFzzzzzOW+GhYW9t1334k/SxUW4R//+Md7\n771ns9mcR/r167do0SKj0eg8IltY6urq/v73v3/wwQd2u10c8fb2njZt2tNPP+38jFQxudydG5oR\nB6kC5Qo+s2fPVrsN1FqlpaUPP/zw+fPn//CHP7z00ku333778ePHN2zYEBAQcNNNN6ndOnerra39\n9ttv58yZc+HChZSUlIa/ViQM1L59+yZPnuzl5TVr1qw//elPt99+e21t7b59+7755pv777+/Xbt2\nkDIsn3322TvvvNOtW7fXX3/92Wef7devX2lpaW5ublFR0bBhw8RnJAxLQ5s3b37zzTcBRERE3H//\n/c7jcoblzTffjI2NnTx5clIDQ4cO7du3r/iAhGGpq6ubMGHCoUOHHnrooXffffe5556LiIjYunVr\nVlbWQw895O/vDynD0q5du4GXCAoKOnz48K233pqamgopw/Ldd9/NnDnTaDQ+9dRTL730Unx8/OnT\np/ft25efn3/fffeJz0gYlrVr186dO7dLly7z5s177rnnoqKiSkpKNm7c2KdPn+7du0OmmFzhzg3N\niIM8gXKhOvJ8c+bMiY2Nfffdd51HTp48OWDAgJtuuslqtarYMDez2+33339///79Y+utWbOm4Qck\nDNSCBQtiY2NXr17d8OCoUaNiY2MXLlwo/iphWCZOnNirV6/S0lLnkV9++SU2NvaGG26w2WziiIRh\ncSotLR04cOD9998fGxs7fvz4hl+SMCynTp2KjY195513rvAZCcOyadOm2NjYp556quHBGTNmxMbG\nbty4UfxVwrBcymq1/u53vxs2bFh1dbU4ImFYpk+fHhsb+9lnnzmPmEymPn369OrVq7KyUhyRMCy3\n3nprbGzsjh07nEfMZvOgQYMGDhxot9vr5IjJVe/c6poRBxkC5WpcVKYt2LlzJ4AHH3zQeSQsLGzI\nkCEWi+Xbb79Vr10qCA8PHzJkSEpKSlRUFIBG8xMkDNSPP/4I4Lbbbmt4cOTIkQB+/vln8VfZwlJb\n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\nyw1NlzAszSFbWM6fP3/o0KFjx44FBwfHxMRERkY2+THZwnLixIn8/PzKyspu3brdeOONTX5Gtphc\nzlXjwEBdMxaEREREREREkuKiMkRERERERJJiQUhERERERCQpFoRERERERESSYkFIREREREQkKRaE\nREREREREkmJBc40H4AAAApRJREFUSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCQpFoRERERERESS\nYkFIREREREQkKRaEREREREREkmJBSEREREREJCkWhERERERERJJiQUhERERERCSp/weFYda0Q7bc\nFgAAAABJRU5ErkJggg==\n" + "png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAFeCAIAAAAkP95fAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\nB3RJTUUH3wINFAUaPCyJdAAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAxMy1GZWItMjAxNSAxNDowNToyNopOReQAACAA\nSURBVHic7b1tVBznle/7p2mgoRvohpbUCGSQwYhIWEIYR4qisywcW1Esa9nnHM84dyX3zCRzZ2Xu\ndWbGsmwrJ3fiWM5o5WQy59pZuWvZGo8nJx7PmfjcWDd+Pbal2PIdyZESJCECMjIoAoNQgxCvDXRD\n09wPu7rUQL/Uy67qKrp+H7LiUnd18a9du55nP/vZO2thYQEWFhYWZsCW7guwsLCwkIrlsCwsLEyD\n5bAsLCxMg+WwLCwsTIPlsCwsLEyD5bAsLCxMg+WwLCwsTIPlsCwsLEyD5bAsLCxMg+WwLCwsTIPl\nsCwsLEyD5bAsLCxMg+WwLCwsTIPlsCwsLEyD5bAsLCxMg+WwLCwsTIPlsCwsLEyDXZ+fiUQiv//9\n769fvw7gnnvu0edHLSwsVhiaO6xXXnnl9ddfv3jxYjgcpiOXLl3S+kctLCxWJJpPCc+dO9fW1rZm\nzZo9e/Zo/VsWFhYrmyytm1BcunTp1ltvzcnJAbBhwwZYIywLCwulaD4lJCdlYWFhoR5rldDCwsI0\nWA7LwsLCNFgOy8LCwjTolIelgObm5qGhodzc3Nvz8w90dv7TnXfaNm5Uec4JFPw267Zq+NctXLcj\nwnKdBsQ7NtZ87txHDQ1DJSUqTzUGZ0tWDYtivb29o6OjHo+nsrJS5VVpQU1//50XL564445rpaVq\nzjOBghZbzbqF6xULN/Ixy3V5xqGvr290dBSA89q173322f+9adPPz5zR7dc1XyWMRdYq4aZNmyh1\n65/7+z8/PT2flfVfvd7/5nbPZ2Up+/W5/NL+Hfvn8ksB2OamXf4LJZffzw34lZ3NsPzZ6Oi3b9wo\niETUK7aQZevbcSDouRUrWrHPT0//5cjI56enAagULVYxAHmTA/k3PnX3fLTyRBPN7EJ+/pbpad1+\n17gOa+vWrdPT03a7/Y7i4u90dGycmADQt2bNy1/5yrDbLfenJ1DwS9sXJlAQe7Bi4cZDCx/LPZVh\n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\n" } ], "prompt_number": 3 @@ -82,7 +82,7 @@ { "metadata": {}, "output_type": "display_data", - "png": "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\n3bt333fffeoNb7/99s9//vPCwsK777775Zdfvv/++2tqanbt2vW9731Pb8uPd/78fBF5s4HKaUhZ\n6vK+cGG+7oZMgmotgYlUlYxRee68HCEqkdKSMTDBDKE2mzdvTktL+81vfuN2u0XE4/EsXrz4yiuv\nfPvttwcHBzMyMn73u9+JyO23337DDTeIyMKFC88777xVq1Zt2bLl2LFjM2eaqHbTefPz/u8bw4sE\ngJSkLu/kqpm2siL/R5sITKSsZIzK8zw5D24hKpHKkjEwwQyhHoODg16vd8GCBSobVE455RSPxzM4\nONjX1ycira2tIrJ48eLoG4qLi2fNmpWebrp/NVVXxtfdz0Z5pKTG9pCvu1+SbQ2Mai2BiZSUpFF5\nSpFDiEqkriQNTJgutbCISCTy9NNPP/7446NfbGlpaW5uPuecc7Kzs0VkyZIlIvLMM89E3/CnP/3p\n0KFDZ599tqmmB0WkLM/uzs0UkTcaOnS3BYg/dWGXFzqSa4t8dE8/gYnUk6RRWZxjIyqRwpI0MMGS\nUT1mzJhRXV2t/ru+vr6hoaGuru7FF190OBy33nqrev073/mO1+vduHHjRx999PnPf762tvb999/P\ny8v79re/ra/hJ7R87syNe/372jhvFylIXdjJWEF75cKCp9oPEZhIPUQlYELJG5gWR0Ko30svvRSt\nNXrllVcuX75c/XdBQcGdd975jW98o6GhoaGhQb24dOnSRYsWjfNpTU1NIuL1etesWRPzDdXV1Vdd\ndVXcWj/ivNLMjXvl7fqjfn9e3D98+trb24PBYH9/v+6GmAvdEtPx3fJ2/VERKcsZ8vv9+to1FWU5\nQyJxCEwulZjolpiM6Zaki8pot8QrKlMDQRRT8nbL9ANzw4YNu3btivlHXq9XRm50EV8khPpde+21\nS5Ys2blz57vvvrtx48a9e/e+8MILTqdz7dq1999/v8vluvrqqy+++OKPPvro5ZdffuONN6655pqX\nXnopKysr5qd1dHSISGtrq9qCeLxwOHzRRRfF/aeYmzMkIjsOBo92ddszzHVSoogEg8Genh4RyczM\n1N0WE6FbYhrTLX2DQzsOBkVkSWFaIBDQ3LhJWlKYJvEITC6VmOiWmAzolmSMymi3LCl0iImHS4MR\nRDElabfEJTA/+OCDTZs2jfMGdaOL+CIh1G/evHnz5s277LLLhoaGbr/99tdff33Lli2XXnrpY489\n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\nPmPGjGHDktvjMCxFRUX5+fklJSVhYWGpqam3335753M4DIuD2Wx+9913o6Oj582b1+El3sJy/Phx\nvV7f4aBSqbzjjjvaH+EtLETU2tq6a9euU6dOtbS0sN8tnX9qfsJiNBqPHDlytVcVCkX7FcL5CYtD\naWlpbm5uWVmZSqVKSUm58847vby8OpzDYViKioqOHz9eUVExYMCAESNGBAcHdziBn5hc45sbXUcc\n+AmUK6AglIi8vLxFixY1NjY6jjz11FMvvviigE0SVk5OzkcffRQTE9Ph1wqHgTpw4MDChQubm5sd\nR8LCwlasWJGVleU4wmFYVq1a9fe//739kQEDBnz22WftS2UOw9Le22+/vXHjxmHDhnUoCDkMyxtv\nvHH69OkOB6Oiotrv+8phWPR6/Zw5c4qKihxHAgMD33333fbb6nIVlpKSkoULF17t1fDw8J9++on9\nmauwMJ9++ukHH3xgtVodRwYOHPjxxx+r1WrHEd7CYrfb//a3v/31r3+12WzsiEwme+6555599lnH\nOVzF5Grf3Og64sBVoFzBe9myZUK3AW5VTU3N448/fvny5RdeeOG111678847Kyoqtm/frlQqhwwZ\nInTr3K21tfXgwYNvvPFGS0vL+PHj2/9a4TBQJ0+enDdvnpeX19KlS//rv/7rzjvvbG1tPXny5L59\n+x566CF/f3/iMixfffXVqlWr4uLi3nrrrUWLFg0cOLCmpqagoKC0tHTixInsHA7D0t4PP/ywYsUK\nIoqOjn7ooYccx/kMy4oVK5KTk+fNm5fVzqhRo9LS0tgJHIbFbrfPnj37zJkzjz322Pvvv//8889H\nR0fv3bs3Nzf3scce8/PzIy7D4u/vP7STkJCQ8+fPjx49esKECcRlWH766aclS5ao1eoFCxa89tpr\n6enptbW1J0+eLCoqYjtsEZdh2bJly/Lly6Oiot5+++3nn38+Nja2qqpq165d/fv3Z2tG8BOTa3xz\no+uIAz+BciE7iN8bb7yRnJz8/vvvO45cvHjxtttuGzJkiMViEbBhbmaz2R566KHBgwcnt9m8eXP7\nEzgM1OrVq5OTkzdt2tT+4IMPPpicnPzRRx+xv3IYljlz5vTr16+mpsZx5Ny5c8nJyQMGDLBarewI\nh2FxqKmpGTp06EMPPZScnPzEE0+0f4nDsFy6dCk5OXnVqlXXOIfDsOzevTs5OXnBggXtD7700kvJ\n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\nfDCTJk167bXXVCqV4whvYbFarW+++eaGDRvYqFoiSktL++CDD2JjYx3ncBWTq31zo+uIA1eBcgUU\nhJJSU1OTn5+fnJzMpnDA1SBQXeItLLW1tSUlJRcvXoyKiurTp0/77yXt8RaW68RbWEwmU2FhocFg\niI+Pj4+P9/X17fI03sJCRFqt9vTp04GBgSkpKVcbms5hWK4Hb2G5fPnymTNnysvLVSpVYmJiTExM\nl6fxFpbq6uqioqL6+vq4uLhBgwZ1eQ5vMbmabuOAQN00FIQAAAAAAACcwqIyAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwCkUhAAAAAAAAJxCQQgAAAAAAMApFIQAAAAAAACcQkEIAAAAAADAKRSEAAAAAAAAnEJBCAAA\nAAAAwKn/D3B3qxRxcYwMAAAAAElFTkSuQmCC\n" + "png": "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\nSUVORK5CYII=\n" } ], "prompt_number": 4 @@ -128,6 +128,15 @@ } ], "prompt_number": 7 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 7 } ], "metadata": {} diff --git a/pymatbridge/examples/pymatbridge.ipynb b/pymatbridge/examples/pymatbridge.ipynb index aec8eae..d32a2a9 100644 --- a/pymatbridge/examples/pymatbridge.ipynb +++ b/pymatbridge/examples/pymatbridge.ipynb @@ -1,7 +1,7 @@ { "metadata": { "name": "", - "signature": "sha256:cbcb36c1e24c2b87a7bdb2b209343824ea74cfc475a42e5e6823045439ee8be9" + "signature": "sha256:97d58e18d73db04b81f296e9b6a194146fc1715e389c5f41eb5d98b818def865" }, "nbformat": 3, "nbformat_minor": 0, @@ -37,35 +37,14 @@ "text": [ "Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge\n", "Send 'exit' command to kill the server\n", - ".." + ".MATLAB started and connected!" ] }, { "output_type": "stream", "stream": "stdout", "text": [ - ".." - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - ".." - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - ".." - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "MATLAB started and connected!\n" + "\n" ] }, { @@ -166,7 +145,7 @@ { "metadata": {}, "output_type": "display_data", - "png": "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\nL1269Pe//10IMXr0aFmnUw6CEMp39OjR//iP/wgKCtq3b58QorW19dChQ1qtdsWKFVfe+Y477nji\niSecPqMMOh0LJFcey0MPPbRu3bq1a9fW19ffc889Npvt448/Pnz48JQpU8aPHy/vtE7T6Vi0Wu2i\nRYuWLVv23HPP/e53v7v55pvLysp27txZVlY2ZswYZb+BR80XkGt87Gq75Dp2LIrn2LEo/nrrwLGo\n+XorhAgLC5sxY0ZOTs7s2bPnzJkTHBy8f//+vLy8hoaGhIQERb7/XBYEIVSntLS0paWlpaWly2fl\njp8/AZK+ffvm5OSkpqbm5ubm5uZKNz7yyCMq+aT4q/nd737n6en57rvvXv6yZtq0aS+++KL0Rial\nUvMFxLHHrvgTU/wDdIxjx6L4661jx6La663kxRdf9PHxWbdu3WuvvSbd4uXl9cgjjyxcuFDewZTE\no729Xe4ZAMAN1NbWHjlyxNfXNyYmRqnvfOuuixcv/vjjj8ePHw8ICIiKigoJCZF7IgBKwPX2Siq/\n3tbX1xuNxlOnTg0dOjQiIkK1P2rpJQQhAAAAAKiU56/fBQAAAACgRAQhAAAAAKgUQQgAAAAAKkUQ\nAgAAAIBKEYQAAAAAoFIEIQAAAACoFEEIAAAAACpFEAIAAACAShGEAAAAAKBSBCEAAAAAqBRBCAAA\nAAAqRRACAAAAgEoRhAAAAACgUgQhAAAAAKgUQQgAAAAAKkUQAgAAAIBKEYQAAAAAoFIEIQAAAACo\nFEEIAAAAACpFEAIAAACAShGEAAAAAKBSBCEAAAAAqBRBCAAAAAAqRRACAAAAgEoRhAAAAACgUgQh\nAAAAAKgUQQgAAAAAKkUQAgAAAIBKEYQAAAAAoFIEIQAAAACoFEEIAAAAACpFEAIAAACAShGEAAAA\nAKBSBCEAAAAAqBRBCAAAAAAqRRACAAAAgEoRhAAAAACgUgQhAAAAAKgUQQgAAAAAKkUQAgAAAIBK\nEYQAAAAAoFIEIQAAAACoFEEIAAAAACpFEAIAAACAShGEAAAAAKBSBCEAAAAAqBRBCAAAAAAqRRAC\nAAAAgEoRhAAAAACgUgQhAAAAAKgUQQgAAAAAKkUQAgAAAIBKEYQAAAAAoFIEIQAAAACoFEEIAAAA\nACpFEAIAAACAShGEAAAAAKBSBCEAAAAAqBRBCAAAAAAqRRACAAAAgEoRhAAAAACgUgQhAAAAAKgU\nQQgAAAAAKkUQAgAAAIBKEYQAAAAAoFIEIQAAAACoFEEIAAAAACpFEAIAAACAShGEAAAAAKBSBCEA\nAAAAqBRBCAAAAAAqRRACAAAAgEoRhAAAAACgUgQhAAAAAKjU/wfuiyhTo/m1TwAAAABJRU5ErkJg\ngg==\n" + "png": "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\n" } ], "prompt_number": 5 @@ -244,6 +223,14 @@ } ], "prompt_number": 8 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] } ], "metadata": {} From a51a2b8cd2039f7208a59001b75d7f513a7b3239 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 13 Feb 2015 15:36:52 -0600 Subject: [PATCH 131/308] Fix location of default plot command setting --- pymatbridge/pymatbridge.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 4fcee0e..5e1be42 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -213,13 +213,12 @@ def start(self): # Test if connection is established if self.is_connected(): print("%s started and connected!" % self._program_name()) + self.set_default_plot_size() return True else: print("%s failed to start" % self._program_name()) return False - self.set_default_plot_size() - def _response(self, **kwargs): req = json.dumps(kwargs, cls=PymatEncoder) self.socket.send_string(req) From 9f11db3a4ad27d84a11784363c44f79a7522a058 Mon Sep 17 00:00:00 2001 From: arokem Date: Fri, 13 Feb 2015 17:06:01 -0800 Subject: [PATCH 132/308] RF: Check for nargout. --- pymatbridge/matlab/util/pymat_feval.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pymatbridge/matlab/util/pymat_feval.m b/pymatbridge/matlab/util/pymat_feval.m index 9a74e13..89ca07f 100644 --- a/pymatbridge/matlab/util/pymat_feval.m +++ b/pymatbridge/matlab/util/pymat_feval.m @@ -30,8 +30,9 @@ else arguments = ''; end - - response.result = run_dot_m(func_path, arguments); + + [resp{1:nargout}] = run_dot_m(func_path, arguments); + response.result = resp; response.success = 'true'; response.message = 'Successfully completed request'; From e354dfe3a9f49e514f5a66e148ca860e88ab7e5b Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 14 Feb 2015 09:58:32 -0600 Subject: [PATCH 133/308] Update handling of nargout --- pymatbridge/matlab/util/pymat_feval.m | 10 +++++++--- pymatbridge/matlab/util/run_dot_m.m | 27 ++++++++++++--------------- pymatbridge/pymatbridge.py | 5 +++-- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/pymatbridge/matlab/util/pymat_feval.m b/pymatbridge/matlab/util/pymat_feval.m index 89ca07f..0a86282 100644 --- a/pymatbridge/matlab/util/pymat_feval.m +++ b/pymatbridge/matlab/util/pymat_feval.m @@ -30,9 +30,13 @@ else arguments = ''; end - - [resp{1:nargout}] = run_dot_m(func_path, arguments); - response.result = resp; + + [resp{1:req.nargout}] = run_dot_m(func_path, arguments, req.nargout); + if req.nargout == 1 + response.result = resp{1}; + else + response.result = resp; + end response.success = 'true'; response.message = 'Successfully completed request'; diff --git a/pymatbridge/matlab/util/run_dot_m.m b/pymatbridge/matlab/util/run_dot_m.m index 7f78970..013f6a5 100644 --- a/pymatbridge/matlab/util/run_dot_m.m +++ b/pymatbridge/matlab/util/run_dot_m.m @@ -1,28 +1,25 @@ % Max Jaderberg 2011 -function result = run_dot_m( file_to_run, arguments ) +function varargout = run_dot_m( file_to_run, arguments, nout ) %RUN_DOT_M Runs the given .m file with the argument struct given % For exmaple run_dot_m('/path/to/function.m', args); % args is a struct containing the arguments. function.m must take only % one parameter, the argument structure - [dir, func_name, ext] = fileparts(file_to_run); + [dname, func_name, ext] = fileparts(file_to_run); - if ~size(ext) - result = 'Error: Need to give path to .m file'; - return + if size(ext) + if ~strcmp(ext, '.m') + varargout = 'Error: Need to give path to .m file'; + return + end end - if ~strcmp(ext, '.m') - result = 'Error: Need to give path to .m file'; - return + % Add function path to current path + if size(dname) + addpath(dname); end -% Add function path to current path - addpath(dir); - if isstruct(arguments) - result = feval(func_name, arguments); - else - result = feval(func_name); - end + [varargout{1:nout}] = feval(func_name, arguments); + end diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 5e1be42..b6310bc 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -264,10 +264,11 @@ def _json_response(self, **kwargs): return json.loads(self._response(**kwargs), object_hook=decode_pymat) # Run a function in Matlab and return the result - def run_func(self, func_path, func_args=None): + def run_func(self, func_path, func_args=None, nargout=1): return self._json_response(cmd='run_function', func_path=func_path, - func_args=func_args) + func_args=func_args, + nargout=nargout) # Run some code in Matlab command line provide by a string def run_code(self, code): From 7aa4836d37f68f655dd2f58c6777d38d3401003a Mon Sep 17 00:00:00 2001 From: arokem Date: Sat, 14 Feb 2015 10:33:59 -0800 Subject: [PATCH 134/308] TST: Test nargout. --- pymatbridge/tests/test_run_code.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pymatbridge/tests/test_run_code.py b/pymatbridge/tests/test_run_code.py index 6f929bb..7a86dcc 100644 --- a/pymatbridge/tests/test_run_code.py +++ b/pymatbridge/tests/test_run_code.py @@ -1,5 +1,6 @@ import pymatbridge as pymat from pymatbridge.compat import text_type +import numpy as np import numpy.testing as npt import test_utils as tu @@ -63,3 +64,16 @@ def test_undefined_code(self): npt.assert_equal(message, "'this_is_nonsense' undefined near line 1 column 1") else: npt.assert_equal(message, "Undefined function or variable 'this_is_nonsense'.") + + + def test_nargout(self): + res = self.mlab.run_func('svd', np.array([[1,2],[1,3]]), nargout=3) + U, S, V = res['result'] + npt.assert_almost_equal(U, np.array([[-0.57604844, -0.81741556], + [-0.81741556, 0.57604844]])) + + npt.assert_almost_equal(S, np.array([[ 3.86432845, 0.], + [ 0., 0.25877718]])) + + npt.assert_almost_equal(V, np.array([[-0.36059668, -0.93272184], + [-0.93272184, 0.36059668]])) From 4f223537eee46c065db9ea56cb122aa222103091 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 14 Feb 2015 16:50:36 -0600 Subject: [PATCH 135/308] Add more tests for nargout and tests for tuple args --- pymatbridge/tests/test_run_code.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/pymatbridge/tests/test_run_code.py b/pymatbridge/tests/test_run_code.py index 7a86dcc..2b7714f 100644 --- a/pymatbridge/tests/test_run_code.py +++ b/pymatbridge/tests/test_run_code.py @@ -71,9 +71,26 @@ def test_nargout(self): U, S, V = res['result'] npt.assert_almost_equal(U, np.array([[-0.57604844, -0.81741556], [-0.81741556, 0.57604844]])) - + npt.assert_almost_equal(S, np.array([[ 3.86432845, 0.], [ 0., 0.25877718]])) npt.assert_almost_equal(V, np.array([[-0.36059668, -0.93272184], [-0.93272184, 0.36059668]])) + + res = self.mlab.run_func('svd', np.array([[1,2],[1,3]]), nargout=1) + s = res['result'] + npt.assert_almost_equal(s, [[ 3.86432845], [ 0.25877718]]) + + res = self.mlab.run_func('close', 'all', nargout=0) + assert res['result'] == [] + + def test_tuple_args(self): + res = self.mlab.run_func('ones', (1, 2)) + npt.assert_almost_equal(res['result'], [[1, 1]]) + + res = self.mlab.run_func('chol', + (np.array([[2, 2], [1, 1]]), 'lower')) + npt.assert_almost_equal(res['result'], + [[1.41421356, 0.], + [0.70710678, 0.70710678]]) From 06c01aefcb1cd0449fc350aa9edc5a52bb248ccb Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 14 Feb 2015 16:50:55 -0600 Subject: [PATCH 136/308] Add handling of cell arguments and update documentation --- pymatbridge/matlab/util/run_dot_m.m | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/pymatbridge/matlab/util/run_dot_m.m b/pymatbridge/matlab/util/run_dot_m.m index 013f6a5..e60aeac 100644 --- a/pymatbridge/matlab/util/run_dot_m.m +++ b/pymatbridge/matlab/util/run_dot_m.m @@ -1,12 +1,13 @@ % Max Jaderberg 2011 -function varargout = run_dot_m( file_to_run, arguments, nout ) -%RUN_DOT_M Runs the given .m file with the argument struct given -% For exmaple run_dot_m('/path/to/function.m', args); -% args is a struct containing the arguments. function.m must take only -% one parameter, the argument structure +function varargout = run_dot_m( func_to_run, arguments, nout ) +%RUN_DOT_M Runs the given function or .m file with the arguments given +% and the nout selected +% For exmaple run_dot_m('/path/to/function.m', args, 1); +% arguments can be a scalar, as cell, or struct containing the arguments. +% If it is a struct, func_to_run must take only one parameter, the argument structure - [dname, func_name, ext] = fileparts(file_to_run); + [dname, func_name, ext] = fileparts(func_to_run); if size(ext) if ~strcmp(ext, '.m') @@ -20,6 +21,10 @@ addpath(dname); end - [varargout{1:nout}] = feval(func_name, arguments); + if iscell(arguments) + [varargout{1:nout}] = feval(func_name, arguments{:}); + else + [varargout{1:nout}] = feval(func_name, arguments); + end end From 4c22e3e54380939c6a0b58890f9a479493ddeb9c Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 14 Feb 2015 16:51:23 -0600 Subject: [PATCH 137/308] Update documentation --- pymatbridge/pymatbridge.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index b6310bc..543bc26 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -263,15 +263,35 @@ def is_function_processor_working(self): def _json_response(self, **kwargs): return json.loads(self._response(**kwargs), object_hook=decode_pymat) - # Run a function in Matlab and return the result def run_func(self, func_path, func_args=None, nargout=1): + """Run a function in Matlab and return the result. + + Parameters + ---------- + func_path: str + Name of function to run or a path to an m-file. + func_args: object + Function args to send to the function. + nargout: int + Desired number of return arguments. + + Returns + ------- + Result dictionary with keys: 'message', 'result', and 'success' + """ return self._json_response(cmd='run_function', func_path=func_path, func_args=func_args, nargout=nargout) - # Run some code in Matlab command line provide by a string def run_code(self, code): + """Run some code in Matlab command line provide by a string + + Parameters + ---------- + code : str + Code to send for evaluation. + """ return self._json_response(cmd='run_code', code=code) def get_variable(self, varname, default=None): From 2f49e130ec36ff8e9af94c92f8b3dfcaa14733e8 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 14 Feb 2015 21:31:58 -0600 Subject: [PATCH 138/308] Use raw doubles to avoid truncating in Octave --- pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m index ed8ef62..8f83aac 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m @@ -143,7 +143,7 @@ end elseif isnumeric(value) if isreal(value) - obj = javaObject('java.lang.Double', value); + obj = value; % Encode complex number as a struct else complex_struct = struct; From c618a33ce2034f48c2a9b26c35185e6aefe25bf0 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 14 Feb 2015 21:32:27 -0600 Subject: [PATCH 139/308] Indicate success in pymat_get_variable --- pymatbridge/matlab/util/pymat_get_variable.m | 1 + 1 file changed, 1 insertion(+) diff --git a/pymatbridge/matlab/util/pymat_get_variable.m b/pymatbridge/matlab/util/pymat_get_variable.m index 9de9cf1..1b22952 100644 --- a/pymatbridge/matlab/util/pymat_get_variable.m +++ b/pymatbridge/matlab/util/pymat_get_variable.m @@ -34,6 +34,7 @@ else response.exists = true; response.var = evalin('base', varname); + response.success = 'true'; end json_response = json_dump(response); From 1d14fe985d84e3bc26e5b89329dc6d13cb2f9d5b Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 14 Feb 2015 21:42:31 -0600 Subject: [PATCH 140/308] Update travis script to run test suite Update travis script to run test suite Update travis script to actually do testing Install zmq Install pyzmq Remove doctesting Remove unsupported --no-gui option in Octave Attempt to spoof javaclasspath Attempt to spoof javaclasspath Use newer Octave Try an explicit java install --- .travis.yml | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9d099c3..a3475f2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,4 @@ language: python -sudo: false deploy: provider: pypi user: arokem @@ -10,5 +9,37 @@ deploy: repo: arokem/python-matlab-bridge # until this is fixed: https://github.com/travis-ci/travis-ci/issues/1675 all_branches: true +env: + - CONDA="python=2.7 numpy=1.7" + - CONDA="python=3.3 numpy" + - CONDA="python=3.4 numpy" +before_install: + - sudo apt-add-repository -y ppa:octave/stable; + - sudo apt-get update -qq; + - sudo apt-get install -qq octave liboctave-dev default-jdk; + - wget http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh; + - bash miniconda.sh -b -p $HOME/miniconda + - export PATH="$HOME/miniconda/bin:$PATH" + - hash -r + - conda config --set always_yes yes + - conda update conda + - conda info -a + - travis_retry conda create -n test $CONDA IPython pip nose pyzmq + - source activate test + - travis_retry pip install coveralls + +install: + - export PYTHONWARNINGS=all + - export USE_OCTAVE=True + - python setup.py install + script: - - true + # run coverage on py2.7, regular on others + - if [[ $CONDA == python=2.7* ]]; then + nosetests --exe -v --with-cov --cover-package pymatbridge; + else + nosetests --exe -v pymatbridge; + fi + +after_success: + - coveralls From 7ff7474d13e0b46aba8c1189dac480279f51e18c Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 14 Feb 2015 22:31:35 -0600 Subject: [PATCH 141/308] Add support for Octave magic --- pymatbridge/matlab_magic.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index d1e4251..170aaa9 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -95,7 +95,10 @@ def __init__(self, shell, super(MatlabMagics, self).__init__(shell) self.cache_display_data = cache_display_data - self.Matlab = pymat.Matlab(matlab, maxtime=maxtime) + if 'octave' in matlab: + self.Matlab = pymat.Octave(matlab, maxtime=maxtime) + else: + self.Matlab = pymat.Matlab(matlab, maxtime=maxtime) self.Matlab.start() self.pyconverter = pyconverter From 7c45e122b0404a87d0ad6b1e658e1d1da9c787ae Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 14 Feb 2015 22:31:51 -0600 Subject: [PATCH 142/308] Use gnuplot so figures are created properly Use gnuplot so figures are created properly Add support for octave magic in test --- pymatbridge/pymatbridge.py | 1 + pymatbridge/tests/test_magic.py | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 543bc26..a53b885 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -428,6 +428,7 @@ def _preamble_code(self): if self.log: code.append("diary('./pymatbridge/logs/octavelog_%s.txt')" % self.id) code.append("set(0, 'defaultfigurevisible', 'off');") + code.append("graphics_toolkit('gnuplot')") return code def _execute_flag(self): diff --git a/pymatbridge/tests/test_magic.py b/pymatbridge/tests/test_magic.py index 57e3677..2a50a9e 100644 --- a/pymatbridge/tests/test_magic.py +++ b/pymatbridge/tests/test_magic.py @@ -1,3 +1,5 @@ +import os + import pymatbridge as pymat import IPython @@ -11,7 +13,11 @@ def setup_class(cls): cls.ip = IPython.InteractiveShell() cls.ip.run_cell('import random') cls.ip.run_cell('import numpy as np') - pymat.load_ipython_extension(cls.ip) + if 'USE_OCTAVE' in os.environ: + matlab = 'octave' + else: + matlab = 'matlab' + pymat.load_ipython_extension(cls.ip, matlab=matlab) # Unload the magic, shut down Matlab @classmethod From 6a6599bcba8f33d662dbecd0b567129591d6dc0e Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 15 Feb 2015 05:40:10 -0600 Subject: [PATCH 143/308] Add octave mex file and Makefile --- messenger/octave/Makefile | 7 +++++++ messenger/octave/messenger.mex | Bin 0 -> 21121 bytes 2 files changed, 7 insertions(+) create mode 100644 messenger/octave/Makefile create mode 100755 messenger/octave/messenger.mex diff --git a/messenger/octave/Makefile b/messenger/octave/Makefile new file mode 100644 index 0000000..d7ade23 --- /dev/null +++ b/messenger/octave/Makefile @@ -0,0 +1,7 @@ + + +all: + sudo apt-get install libzmq3-dev liboctave-dev + cd ../src; mkoctfile --mex -lzmq messenger.c + mv ../src/messenger.mex . + cp messenger.mex ../pymatbridge/matlab diff --git a/messenger/octave/messenger.mex b/messenger/octave/messenger.mex new file mode 100755 index 0000000000000000000000000000000000000000..8a22d09d351d79c24f08d66e0d4b8c0a04a7e2c2 GIT binary patch literal 21121 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 VH)-jN6X}Ug4?Z{ literal 0 HcmV?d00001 From bbfb2355c332dcf3096b4678f228b78a727a746f Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 15 Feb 2015 05:40:47 -0600 Subject: [PATCH 144/308] Add the octave messenger to setup.py --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 43dd4b7..acd6769 100755 --- a/setup.py +++ b/setup.py @@ -30,7 +30,8 @@ def copy_bin(bin_path): for copy_this in ["./messenger/mexmaci64/messenger.mexmaci64", "./messenger/mexa64/messenger.mexa64", - "./messenger/mexw64/messenger.mexw64"]: + "./messenger/mexw64/messenger.mexw64", + "./messenger/octave/messenger.mex"]: copy_bin(copy_this) # Get version and release info, which is all stored in pymatbridge/version.py From 2fabe1c906e74442a1465a170dfd649d448f895e Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 15 Feb 2015 05:45:15 -0600 Subject: [PATCH 145/308] Cleanup Avoid short-circuit operator for Octave compatibility Install scipy Add base64 handling Clean up and use get_ipython Clean up, do no require scipy, and do not close matlab twice Do not require scipy Prevent file resource warnings Avoid deprecationwarning --- pymatbridge/matlab/util/isrow.m | 4 +-- pymatbridge/matlab_magic.py | 56 +++++++++++---------------------- pymatbridge/pymatbridge.py | 10 +++--- pymatbridge/tests/test_magic.py | 8 ++--- 4 files changed, 29 insertions(+), 49 deletions(-) diff --git a/pymatbridge/matlab/util/isrow.m b/pymatbridge/matlab/util/isrow.m index 767adef..12848f7 100644 --- a/pymatbridge/matlab/util/isrow.m +++ b/pymatbridge/matlab/util/isrow.m @@ -7,8 +7,8 @@ % % -if ndims(X)==2 & size(X,1)==1 & size(X,2)>=1 +if ndims(X)==2 && size(X,1)==1 && size(X,2)>=1 Y = logical(1); else Y = logical(0); -end \ No newline at end of file +end diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index 170aaa9..ca8c326 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -7,36 +7,23 @@ """ -import sys, os -import tempfile -from glob import glob from shutil import rmtree -from getopt import getopt import numpy as np -try: - import scipy.io as sio - has_io = True -except ImportError: - has_io = False - no_io_str = "Must have scipy.io to perform i/o" - no_io_str += "operations with the Matlab session" - import IPython -ipython_version = int(IPython.__version__[0]) - from IPython.core.displaypub import publish_display_data -from IPython.core.magic import (Magics, magics_class, cell_magic, line_magic, +from IPython.core.magic import (Magics, magics_class, line_cell_magic, needs_local_scope) -from IPython.testing.skipdoctest import skip_doctest from IPython.core.magic_arguments import (argument, magic_arguments, parse_argstring) -from IPython.utils.py3compat import str_to_unicode, unicode_to_str, PY3 +from IPython.utils.py3compat import unicode_to_str, PY3 import pymatbridge as pymat from .compat import text_type +ipython_version = int(IPython.__version__[0]) + class MatlabInterperterError(RuntimeError): """ @@ -95,7 +82,7 @@ def __init__(self, shell, super(MatlabMagics, self).__init__(shell) self.cache_display_data = cache_display_data - if 'octave' in matlab: + if 'octave' in matlab.lower(): self.Matlab = pymat.Octave(matlab, maxtime=maxtime) else: self.Matlab = pymat.Matlab(matlab, maxtime=maxtime) @@ -176,19 +163,15 @@ def matlab(self, line, cell=None, local_ns=None): self.Matlab.set_default_plot_size(width, height) if args.input: - if has_io: - for input in ','.join(args.input).split(','): - try: - val = local_ns[input] - except KeyError: - val = self.shell.user_ns[input] - # The _Session.set_variable function which this calls - # should correctly detect numpy arrays and serialize them - # as json correctly. - self.set_matlab_var(input, val) - - else: - raise RuntimeError(no_io_str) + for input in ','.join(args.input).split(','): + try: + val = local_ns[input] + except KeyError: + val = self.shell.user_ns[input] + # The _Session.set_variable function which this calls + # should correctly detect numpy arrays and serialize them + # as json correctly. + self.set_matlab_var(input, val) try: result_dict = self.eval(code) @@ -219,7 +202,8 @@ def matlab(self, line, cell=None, local_ns=None): if len(imgf): # Store the path to the directory so that you can delete it # later on: - image = open(imgf, 'rb').read() + with open(imgf, 'rb') as fid: + image = fid.read() if ipython_version < 3: display_data.append(('MatlabMagic.matlab', {'image/png':image})) @@ -237,11 +221,8 @@ def matlab(self, line, cell=None, local_ns=None): rmtree(data_dir) if args.output: - if has_io: - for output in ','.join(args.output).split(','): - self.shell.push({output:self.Matlab.get_variable(output)}) - else: - raise RuntimeError(no_io_str) + for output in ','.join(args.output).split(','): + self.shell.push({output:self.Matlab.get_variable(output)}) _loaded = False @@ -256,6 +237,5 @@ def unload_ipython_extension(ip): global _loaded if _loaded: magic = ip.magics_manager.registry.pop('MatlabMagics') - magic.Matlab.stop() _loaded = False diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index a53b885..2e12f47 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -23,7 +23,7 @@ import os import time -import codecs +import base64 import zmq import subprocess import sys @@ -60,7 +60,7 @@ def encode_ndarray(obj): except AttributeError: data = obj.astype(float64).tostring() - data = codecs.encode(data, 'base64').decode('utf-8') + data = base64.b64encode(data).decode('utf-8') return data, shape @@ -89,19 +89,19 @@ def default(self, obj): def decode_arr(data): """Extract a numpy array from a base64 buffer""" data = data.encode('utf-8') - return frombuffer(codecs.decode(data, 'base64'), float64) + return frombuffer(base64.b64decode(data), float64) # JSON decoder for arrays and complex numbers def decode_pymat(dct): if 'ndarray' in dct and 'data' in dct: value = decode_arr(dct['data']) - shape = decode_arr(dct['shape']) + shape = decode_arr(dct['shape']).astype(int) return value.reshape(shape, order='F') elif 'ndarray' in dct and 'imag' in dct: real = decode_arr(dct['real']) imag = decode_arr(dct['imag']) - shape = decode_arr(dct['shape']) + shape = decode_arr(dct['shape']).astype(int) data = real + 1j * imag return data.reshape(shape, order='F') elif 'real' in dct and 'imag' in dct: diff --git a/pymatbridge/tests/test_magic.py b/pymatbridge/tests/test_magic.py index 2a50a9e..3b5d7f8 100644 --- a/pymatbridge/tests/test_magic.py +++ b/pymatbridge/tests/test_magic.py @@ -1,16 +1,17 @@ import os import pymatbridge as pymat -import IPython +from IPython.testing.globalipapp import get_ipython import numpy.testing as npt + class TestMagic: # Create an IPython shell and load Matlab magic @classmethod def setup_class(cls): - cls.ip = IPython.InteractiveShell() + cls.ip = get_ipython() cls.ip.run_cell('import random') cls.ip.run_cell('import numpy as np') if 'USE_OCTAVE' in os.environ: @@ -19,12 +20,11 @@ def setup_class(cls): matlab = 'matlab' pymat.load_ipython_extension(cls.ip, matlab=matlab) - # Unload the magic, shut down Matlab + # Unload the magic @classmethod def teardown_class(cls): pymat.unload_ipython_extension(cls.ip) - # Test single operation on different data structures def test_cell_magic_number(self): # A double precision real number From ef4ec9565a972a950ec9ee32e223ec15c465d9df Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 15 Feb 2015 07:27:09 -0600 Subject: [PATCH 146/308] More cleanup Update installation instructions Move to a platform-indepented octave makefile Do not test on Py3.4 due to bug in importlib causing hangup Try python 3.4 again without warnings Fix travis syntax error Add debug output in travis Do not install scipy in travis Remove py3.4 build to to hanging Remove redundant conda info --- .travis.yml | 2 -- README.md | 29 +++++++++++++++-------------- messenger/octave/Makefile | 7 ------- messenger/octave/make.py | 7 +++++++ 4 files changed, 22 insertions(+), 23 deletions(-) delete mode 100644 messenger/octave/Makefile create mode 100644 messenger/octave/make.py diff --git a/.travis.yml b/.travis.yml index a3475f2..2b5a690 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,6 @@ deploy: env: - CONDA="python=2.7 numpy=1.7" - CONDA="python=3.3 numpy" - - CONDA="python=3.4 numpy" before_install: - sudo apt-add-repository -y ppa:octave/stable; - sudo apt-get update -qq; @@ -29,7 +28,6 @@ before_install: - travis_retry pip install coveralls install: - - export PYTHONWARNINGS=all - export USE_OCTAVE=True - python setup.py install diff --git a/README.md b/README.md index 3aa3c6f..0e9a283 100644 --- a/README.md +++ b/README.md @@ -115,17 +115,7 @@ Rather than looking for `matlab` at the shell, this will look for `octave`. As with `pymatbridge.Matlab`, you can override this by specifying the `executable` keyword argument. -There are a few caveats to note about Octave support: - -* The zmq messenger used to communicate with the Octave session is written in C -and needs to be compiled. For MATLAB various prebuilt binaries are provided -and added to MATLAB's runtime path, but as of this writing the same isn't -true for Octave. You'll need to compile the messenger (in -`messenger/src/messenger.c`) using an incantation like -`mkoctfile --mex -lzmq messenger.c` and place the resulting `messenger.mex` -file somewhere in Octave's runtime path. - -Finally, rather than `~/startup.m`, Octave looks for an `~/.octaverc` file for +Rather than `~/startup.m`, Octave looks for an `~/.octaverc` file for commands to execute before every session. (This is a good place to manipulate the runtime path, for example). @@ -154,11 +144,11 @@ More examples are provided in the `examples` directory The installation of `pymatbridge` includes a binary of a mex function to communicate between Python and Matlab using the [0MQ](http://zeromq.org/) messaging library. This should work without any need for compilation on most computers. However, in some cases, you might want -to build the pymatbridge messenger from source. To do so, you will need to follow the +to build the pymatbridge messenger from source. To do so, you will need to follow the instructions below: ### Install zmq library Please refer to the [official guide](http://zeromq.org/intro:get-the-software) on how to -build and install zmq. After zmq is installed, make sure you can find the location where +build and install zmq. On Ubuntu, it is as simple as `sudo apt-get install libzmq3-dev`. After zmq is installed, make sure you can find the location where libzmq is installed. The library extension name and default location on different systems are listed below. @@ -215,12 +205,23 @@ be supported. If you have an old version of pyzmq, please update it. ### Install pymatbridge After the steps above are done, you can install pymatbridge. Download the zip file of the -latest release. Unzip it somewhere on your machine and then issue: +latest release. Unzip it somewhere on your machine. + +For Matlab: cd messenger python make.py cd .. python setup.py install + + +For Octave: + + cd messenger/octave + # edit make.py if not using Ubuntu-derivative + python make.py + cd .. + python setup.py This should make the python-matlab-bridge import-able. diff --git a/messenger/octave/Makefile b/messenger/octave/Makefile deleted file mode 100644 index d7ade23..0000000 --- a/messenger/octave/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - - -all: - sudo apt-get install libzmq3-dev liboctave-dev - cd ../src; mkoctfile --mex -lzmq messenger.c - mv ../src/messenger.mex . - cp messenger.mex ../pymatbridge/matlab diff --git a/messenger/octave/make.py b/messenger/octave/make.py new file mode 100644 index 0000000..3ee5160 --- /dev/null +++ b/messenger/octave/make.py @@ -0,0 +1,7 @@ + +import os + +os.system('sudo apt-get install libzmq3-dev liboctave-dev') +os.system('cd ../src; mkoctfile --mex -lzmq messenger.c') +os.system('mv ../src/messenger.mex .') +os.system('cp messenger.mex ../pymatbridge/matlab') From 5ab3161cc539e666901e2bde030106de67aaf8ad Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Sun, 15 Feb 2015 11:12:07 -0500 Subject: [PATCH 147/308] Add Travis CI badge to README. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0e9a283..74a121d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # Python-MATLAB(R) Bridge and IPython `matlab` magic +[![Build Status](https://travis-ci.org/arokem/python-matlab-bridge.svg?branch=master)](https://travis-ci.org/arokem/python-matlab-bridge) [![Join the chat at https://gitter.im/arokem/python-matlab-bridge](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/arokem/python-matlab-bridge?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) A python interface to call out to [Matlab(R)](http://mathworks.com). Original From d1e1988cc7eb0e4af480d81de3782f75cae12a93 Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Sun, 15 Feb 2015 11:23:58 -0500 Subject: [PATCH 148/308] Add Coveralls badge to README. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 74a121d..dd7a6c6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Python-MATLAB(R) Bridge and IPython `matlab` magic [![Build Status](https://travis-ci.org/arokem/python-matlab-bridge.svg?branch=master)](https://travis-ci.org/arokem/python-matlab-bridge) +[![Coverage Status](https://coveralls.io/repos/arokem/python-matlab-bridge/badge.svg?branch=master)](https://coveralls.io/r/arokem/python-matlab-bridge?branch=master) [![Join the chat at https://gitter.im/arokem/python-matlab-bridge](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/arokem/python-matlab-bridge?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) A python interface to call out to [Matlab(R)](http://mathworks.com). Original From a2ff7e03da07f75b4ce8e67e9e2ef065f45e3338 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 15 Feb 2015 22:01:18 -0600 Subject: [PATCH 149/308] Add an octave build script --- messenger/make_octave.py | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 messenger/make_octave.py diff --git a/messenger/make_octave.py b/messenger/make_octave.py new file mode 100644 index 0000000..859878d --- /dev/null +++ b/messenger/make_octave.py @@ -0,0 +1,43 @@ +#!/usr/bin/python +from __future__ import print_function +import os +import sys +import shutil +import subprocess + +# Check the system platform first +platform = sys.platform +print("This is a " + platform + " system") + +if platform.startswith('linux'): + messenger_dir = 'mexa64' +elif platform.startswith('darwin'): + messenger_dir = 'mexmaci64' +elif platform.startswith('win32'): + # We further need to differniate 32 from 64 bit: + maxint = sys.maxsize + if maxint == 9223372036854775807: + messenger_dir = 'mexw64' + elif maxint == 2147483647: + messenger_dir = 'mexw32' + +with open(os.path.join(messenger_dir, 'local_octave.cfg')) as fid: + lines = fid.readlines() + +cfg = {} +for line in lines: + name, path = line.split('=') + cfg[name.lower()] = path + +print("Building messenger.oct...") + +paths = "-L%(octave_lib)s -I%(octave_inc)s -L%(zmq_lib)s -I%(zmq_inc)s" % cfg +make_cmd = "mkoctfile %s -lzmq ./src/messenger.c" % paths +print(make_cmd) +subprocess.check_output(make_cmd.split()) + +messenger_exe = 'messenger.oct' +messenger_loc = os.path.join(messenger_dir, messenger_exe) + +shutil.move(messenger_exe, messenger_loc) +os.remove('messenger.o') From 95701d554cbdbb7d79bd8f79e56350246ec5f6ab Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 15 Feb 2015 22:01:50 -0600 Subject: [PATCH 150/308] Add an octave config for win64 --- messenger/mexw64/local_octave.cfg | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 messenger/mexw64/local_octave.cfg diff --git a/messenger/mexw64/local_octave.cfg b/messenger/mexw64/local_octave.cfg new file mode 100644 index 0000000..d2aed82 --- /dev/null +++ b/messenger/mexw64/local_octave.cfg @@ -0,0 +1,4 @@ +OCTAVE_INC="C:\Octave\Octave-3.8.2\include\octave-3.8.2\octave" +OCTAVE_LIB="C:\Octave\Octave-3.8.2\lib\octave\3.8.2" +ZMQ_INC="C:\zeromq-4.0.5\include" +ZMQ_LIB="C:\zeromq-4.0.5\src\.libs" From 627d27b733abe39038d2907e7c99af53b799742d Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 15 Feb 2015 22:02:37 -0600 Subject: [PATCH 151/308] Rename function to avoid conflict --- messenger/src/messenger.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/messenger/src/messenger.c b/messenger/src/messenger.c index f14cb3c..8056bb1 100644 --- a/messenger/src/messenger.c +++ b/messenger/src/messenger.c @@ -28,7 +28,7 @@ int initialize(char *socket_addr) { * Now the receiver buffer is pre-allocated * In the future we can possibly use multi-part messaging */ -int listen(char *buffer, int buflen) { +int listen_zmq(char *buffer, int buflen) { if (!initialized) { mexErrMsgTxt("Error: ZMQ session not initialized"); } @@ -106,7 +106,7 @@ void mexFunction(int nlhs, mxArray *plhs[], } else if (strcmp(cmd, "listen") == 0) { char *recv_buffer = mxCalloc(BUFLEN, sizeof(char)); - int byte_recvd = listen(recv_buffer, BUFLEN); + int byte_recvd = listen_zmq(recv_buffer, BUFLEN); /* Check if the received data is complete and correct */ if ((byte_recvd > -1) && (byte_recvd <= BUFLEN)) { From 7dfdc1a532940ebfa17acfb74eaf666f1717f669 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 15 Feb 2015 22:02:55 -0600 Subject: [PATCH 152/308] Replace name of octave binary file --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index acd6769..42e61a4 100755 --- a/setup.py +++ b/setup.py @@ -31,9 +31,9 @@ def copy_bin(bin_path): for copy_this in ["./messenger/mexmaci64/messenger.mexmaci64", "./messenger/mexa64/messenger.mexa64", "./messenger/mexw64/messenger.mexw64", - "./messenger/octave/messenger.mex"]: + "./messenger/mexw64/messenger.oct"]: copy_bin(copy_this) - + # Get version and release info, which is all stored in pymatbridge/version.py ver_file = os.path.join('pymatbridge', 'version.py') exec(open(ver_file).read()) From e4d66a92890524b0c6808dd8d83f2b543aa8fadc Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 15 Feb 2015 22:03:09 -0600 Subject: [PATCH 153/308] Add win64 octave binary --- messenger/mexw64/messenger.oct | Bin 0 -> 97480 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 messenger/mexw64/messenger.oct diff --git a/messenger/mexw64/messenger.oct b/messenger/mexw64/messenger.oct new file mode 100644 index 0000000000000000000000000000000000000000..c61cf3a23e8dc8c04a053677e68eb4b4f385cebf GIT binary patch literal 97480 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 Date: Sun, 15 Feb 2015 22:03:58 -0600 Subject: [PATCH 154/308] Remove old octave dir --- messenger/octave/make.py | 7 ------- messenger/octave/messenger.mex | Bin 21121 -> 0 bytes 2 files changed, 7 deletions(-) delete mode 100644 messenger/octave/make.py delete mode 100755 messenger/octave/messenger.mex diff --git a/messenger/octave/make.py b/messenger/octave/make.py deleted file mode 100644 index 3ee5160..0000000 --- a/messenger/octave/make.py +++ /dev/null @@ -1,7 +0,0 @@ - -import os - -os.system('sudo apt-get install libzmq3-dev liboctave-dev') -os.system('cd ../src; mkoctfile --mex -lzmq messenger.c') -os.system('mv ../src/messenger.mex .') -os.system('cp messenger.mex ../pymatbridge/matlab') diff --git a/messenger/octave/messenger.mex b/messenger/octave/messenger.mex deleted file mode 100755 index 8a22d09d351d79c24f08d66e0d4b8c0a04a7e2c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21121 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 VH)-jN6X}Ug4?Z{ From ce17ee0c9f9d6346f412aad06af3dfa2559c3d62 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 15 Feb 2015 22:21:14 -0600 Subject: [PATCH 155/308] Update readme install instructions --- README.md | 54 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index dd7a6c6..0675f8c 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ development of the two repositories has significantly diverged. This implementation also includes an [IPython](http://ipython.org) `matlab_magic` extension, which provides a simple interface for weaving python and -Matlab code together (requires ipython > 0.13). +Matlab code together (requires ipython > 0.13). ## Installation @@ -37,7 +37,7 @@ If you intend to use the Matlab magic extension, you'll also need [Scipy](http://scipy.org/) and [Numpy](http://www.numpy.org/). These can be installed from PyPI, or using distributions such as [Anaconda](https://store.continuum.io/cshop/anaconda/) or [Enthought -Canopy](https://store.enthought.com/downloads/) +Canopy](https://store.enthought.com/downloads/) Note thatIPython notebooks also depend on `pyzmq` so if you have IPython notebooks installed, you likely have `pyzmq` already. @@ -54,10 +54,10 @@ This creates a matlab session class instance, into which you will be able to inject code and variables, and query for results. By default, when you use `start`, this will open whatever gets called when you type `matlab` in your Terminal, but you can also specify the location of your Matlab -application when initializing your matlab session class: +application when initializing your matlab session class: mlab = Matlab(executable='/Applications/MATLAB_R2011a.app/bin/matlab') - + You can then start the Matlab server, which will kick off your matlab session, and create the connection between your Python interpreter and this session: @@ -80,7 +80,7 @@ In this case, the variable `a` is available on the Python side, by using the `get_variable` method: mlab.get_variable('a') - + You can run any MATLAB functions contained within a .m file of the same name. For example, to call the function jk in jk.m: @@ -121,7 +121,11 @@ Rather than `~/startup.m`, Octave looks for an `~/.octaverc` file for commands to execute before every session. (This is a good place to manipulate the runtime path, for example). -### Matlab magic: +Requires Version 3.8 or higher. Notice: it does not work with the MXE build on Windows +due to a Java error. + + +### Matlab magic: The Matlab magic allows you to use pymatbridge in the context of the IPython notebook format. @@ -132,7 +136,7 @@ These lines will automatically start the matlab session for you. Then, you can simply decorate a line/cell with the '%matlab' or '%%matlab' decorator and write matlab code: - %%matlab + %%matlab a = linspace(0.01,6*pi,100); plot(sin(a)) grid on @@ -143,14 +147,21 @@ More examples are provided in the `examples` directory ## Building the pymatbridge messenger from source -The installation of `pymatbridge` includes a binary of a mex function to communicate between -Python and Matlab using the [0MQ](http://zeromq.org/) messaging library. This should work +The installation of `pymatbridge` includes a binary of a mex function to communicate between +Python and Matlab using the [0MQ](http://zeromq.org/) messaging library. This should work without any need for compilation on most computers. However, in some cases, you might want to build the pymatbridge messenger from source. To do so, you will need to follow the instructions below: ### Install zmq library Please refer to the [official guide](http://zeromq.org/intro:get-the-software) on how to -build and install zmq. On Ubuntu, it is as simple as `sudo apt-get install libzmq3-dev`. After zmq is installed, make sure you can find the location where +build and install zmq. On Ubuntu, it is as simple as `sudo apt-get install libzmq3-dev`. +On Windows, suggest using the following method: +- Install MSYS2 +- Run `$ pacman -S make` +- From the zmq source directory, run: `$ sh configure --prefix=$(pwd) --build=x86_64-w64-mingw32` +- Run `$ make`. + +After zmq is installed, make sure you can find the location where libzmq is installed. The library extension name and default location on different systems are listed below. @@ -198,21 +209,22 @@ On MacOS, you can do this from the root of the pymatbridge code with: On Linux, you can add it to the RPATH: patchelf --set-rpath messenger/mexa64/messenger.mexa64 - + ### Install pyzmq -After step 1 is finished, please grab the latest version of -[pyzmq](http://zeromq.org/bindings:python) and follow the instructions on the official -page. Note that pymatbridge is developed with pyzmq 14.0.0 and older versions might not -be supported. If you have an old version of pyzmq, please update it. +After step 1 is finished, please grab the latest version of +[pyzmq](http://zeromq.org/bindings:python) and follow the instructions on the official +page. Note that pymatbridge is developed with pyzmq 14.0.0 and older versions might not +be supported. If you have an old version of pyzmq, please update it. ### Install pymatbridge -After the steps above are done, you can install pymatbridge. Download the zip file of the +After the steps above are done, you can install pymatbridge. Download the zip file of the latest release. Unzip it somewhere on your machine. For Matlab: cd messenger - python make.py + # edit local.cfg in the directory for your platform + python make.py cd .. python setup.py install @@ -220,14 +232,14 @@ For Matlab: For Octave: cd messenger/octave - # edit make.py if not using Ubuntu-derivative - python make.py + # edit local_octave.cfg in the directory for your platform + python make_octave.py cd .. python setup.py - + This should make the python-matlab-bridge import-able. - + ### Warnings Python communicates with Matlab via an ad-hoc zmq messenger. This is inherently From 07615987a8d8a0080d285a415eebc792b087d3ad Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 15 Feb 2015 22:21:27 -0600 Subject: [PATCH 156/308] Remove messenger binary --- messenger/mexw64/messenger.oct | Bin 97480 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 messenger/mexw64/messenger.oct diff --git a/messenger/mexw64/messenger.oct b/messenger/mexw64/messenger.oct deleted file mode 100644 index c61cf3a23e8dc8c04a053677e68eb4b4f385cebf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97480 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 Date: Mon, 16 Feb 2015 07:20:03 -0600 Subject: [PATCH 157/308] Add a linux config --- messenger/mexa64/local_octave.cfg | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 messenger/mexa64/local_octave.cfg diff --git a/messenger/mexa64/local_octave.cfg b/messenger/mexa64/local_octave.cfg new file mode 100644 index 0000000..1d3f3d3 --- /dev/null +++ b/messenger/mexa64/local_octave.cfg @@ -0,0 +1,4 @@ +OCTAVE_INC=/usr/include +OCTAVE_LIB=/usr/lib/x86_64-linux-gnu/ +ZMQ_INC=/usr/include +ZMQ_LIB=/usr/lib/x86_64-linux-gnu/ From 2a902c6ae873f74a26b4bc41e998f68d7c379c05 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 07:20:13 -0600 Subject: [PATCH 158/308] Add the linux octave binary --- messenger/mexa64/messenger.oct | Bin 0 -> 21133 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 messenger/mexa64/messenger.oct diff --git a/messenger/mexa64/messenger.oct b/messenger/mexa64/messenger.oct new file mode 100755 index 0000000000000000000000000000000000000000..2114d622b245ca93c04ea26fe35ccfcbe571c473 GIT binary patch literal 21133 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 Uh<>q_3_+I|5Uh$S Date: Mon, 16 Feb 2015 07:21:06 -0600 Subject: [PATCH 159/308] Stub out the mac octave config --- messenger/mexmaci64/local_octave.cfg | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 messenger/mexmaci64/local_octave.cfg diff --git a/messenger/mexmaci64/local_octave.cfg b/messenger/mexmaci64/local_octave.cfg new file mode 100644 index 0000000..1d3f3d3 --- /dev/null +++ b/messenger/mexmaci64/local_octave.cfg @@ -0,0 +1,4 @@ +OCTAVE_INC=/usr/include +OCTAVE_LIB=/usr/lib/x86_64-linux-gnu/ +ZMQ_INC=/usr/include +ZMQ_LIB=/usr/lib/x86_64-linux-gnu/ From d68c8f675cf06361ba71e8c39854ef0c6df3e2e1 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 07:41:15 -0600 Subject: [PATCH 160/308] Commit linux64 messenger --- messenger/mexa64/messenger.mex | Bin 0 -> 21133 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 messenger/mexa64/messenger.mex diff --git a/messenger/mexa64/messenger.mex b/messenger/mexa64/messenger.mex new file mode 100755 index 0000000000000000000000000000000000000000..2114d622b245ca93c04ea26fe35ccfcbe571c473 GIT binary patch literal 21133 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 Uh<>q_3_+I|5Uh$S Date: Mon, 16 Feb 2015 07:41:31 -0600 Subject: [PATCH 161/308] Remove .oct file --- messenger/mexa64/messenger.oct | Bin 21133 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 messenger/mexa64/messenger.oct diff --git a/messenger/mexa64/messenger.oct b/messenger/mexa64/messenger.oct deleted file mode 100755 index 2114d622b245ca93c04ea26fe35ccfcbe571c473..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21133 zcmeHPdwf*Yoj-Rb2{QzekN^fjxM&b;&4eH#D&ZA~6Urly1RubTlbM@`&LhrDVo z%jD~}S1Bs@LYR_3K1%SZm@ZNDrUbaZ&86rEbkBN(lHMGxH%IGnzfTW^dyg_BiqO;N zsOD$)HCm2)lBL%2S}IKNyAvdu(=SqF!9DA(haScG*R~2RxIz0Xl$YZ=e(p6Y$2Ji* z-1uCywq0Cy@cem8`@-%Yx}IsDdUx0UaNXVCB^Sh>j1T2;3_iOT4pxgnv)Qvk7&jGF zNZwS?XW%n#^w}S!x^61{($lX!_~>tLxvp{L^KZU*)g{yBf95L>i;_7@9@+i-GS}~V zOWyd8|0&yf@gw&_<g0H9Ic zsqMmNf|w)@nkJ!wkJCQDmBK5I>+{b#$ra)oh_eFnhqb&Wi(4dpqS&8B|B9B+rk8+D z_RaCi!kzm3a!mUj)NwA>4(Pb7%(HI43OdDqK>OwR>Da0iW5rYD+JNpJlyt9Hnq^-E z0$tH~ERakE6RAKz1bSjUDG}&ICj!lFYXV^_VRiK+Q&ysFO=Bb;v)Y0k5liv%a{{4( zAQ=codai-ss{X(RZJ{v|OeU?QARj%7eNFVLKqxg3h*?()^n&nYJana%5~>UIrV^6c z(Gv@c2t^VLKuScdft88Gnq*hoKuQWEtWdv5SjpZv1f?AdKqz7bV|~4n5Q@Z;7AdwQ zdSaFGdtzGU2Y4hGZ_hu;{&=q1WL5wOC+ zR1ovhkxZ&-0SN<9jjvBU-v{(Mt=88eruS<4zO41Z_|X}rG)UJ7I@fYL=AiSngm^DH z=+5iy%MLo7&$$gd=+0B_aR+@Y3!^{bpr7KPSL^u6wtXoEY&z(4P2o1jL3hSK*Fkq) z7Z*C{&iI!)=$upX;djt=ilyro2VEaxl75MUt`B)hzuZADlN9yU?Vvjk;a&%wuhpb6 z;GpYU1Zil{L3dt%ZgSA|t&x=9<`XnZz_iuaCHZ{7J%TibqU|KT0@F?MQ{hA0nKlbVNw}KEi1#M~?pqgjshHPE$DY zGI0Oy;{71_cQ@RQuHApu3IEV*{%t49u6AuXf&@P`Q6>28Eu$|}{vdyqlE18^`=VIngJTCw*QjKbLxYi+||p(O;APU_(9hMBi-xwuS)Ma5?l^YMg&( zLnY|LUqeX4-3W8b)5RVTjCYQ7QuCG1*p83|=Dnf25^AY45!@*{xKrB^{|1m@YxLNb zk&9uVe8wQjk9-PnT76Hef9S*E|E7WOoOGhf6pzzP`iGwJ54nc-DDt;J_7Ah|Tj7n?$)+RaGsHod9o=+fPy5h&WRjNS&f-mwfb2L#lfsG_j!T2ZmurKe z=j(sq-?`Ag?J3WuEh7mqJ2UmCruFBOex1@c^XlJ)z&bIWou>)n?>_e`45j`DkIDh< zym0si@croTqkeb8CB!{EyjoI=Kc-~uTsZvJM;HaT&5}FfBbyodUe?w;^ltmm^BClh zFvyA>&y{cYBMW4CkZkQZT)uq<4i^}i3nP!vk$~BL=brK%g8;XE?85BsZg>_V!vX31 zTF-Ek()14 zL-=&4JiSsFNNEM8Y}1xyo8jvyayJr!F6Ig7FwjTn090XZ_d*He7l};Ap^o-0fE?`$ z6z#Xj`%Xmb*8oBp-UT=vEe0@r1#xx24}3T}I`lh4*gW*q@JyP$&@un{Z$kF zT~s3@r7*FE20^1hu0lM+D_~{hUTCE0Pf(l~7>SS6fUl0fh9Ly!Nb~la$qXf6cf&Z0 zNs7ORK+0#VklA78QRqqLi;}sW-0RGXCx2TyybR>W36d-S$nZ?eL<8aFH{J-zPg82Q zAf}Nnd3Y&(8WauUSz@e}j6t$%2fhhb)I5AZ;~82};~Bmfp8PujjXW*6h!ZC2$wa9% zv6S%Ffe)Vz(UD(DDPrLG0C2>P# z#^Nb6ea9Du5L$aO*kxT{Mj>Oxx~#;U*(7qEy1%_t ze@zdJ$GXg5qN|VYwk|N$?V=eBhoPM$8EWfd7IV6TNi!J1yNHW|9 z>A1{=MQI@)Ew~*`T4rw|-ro}jyW6tGA&Ok+{G{y?&6deAX$|zGM60}EHs$SYc&uoQ z<92c&WzwxJZo?5OXu%lG1C3rf4aK9;Ae>RwGniRvWYh8%IBW)y=vm3Jwnrk<9Cykz z`1Jj`eHY#y!ysd+p3WZRh+PU}s{2Cv-AWhfH~%m?+J^q44@O6?L%$kp>kjn0&_9L# zS@dtBr*$|E3vwc0YQ{AigfUQIOdU7Ivj_AV(C9bv9@sO1i?WKQvg%dkrB{0f#gbDm z{KPpmr-LeGR-hk%zjZ`dR#vgiKomSW#+b` zi^}G@ZXa7_f&$OW%RK8!U0(#gjB$Ty$cZ+WZUX9O?y6G16J1m4+U%6}J8xlCKqtRX zX5eH7PG;a_22N(+WCl)V;A93)X5jxY1N=OjpI@_Ux}~R<(g5Rw8lVSq)Odf7pSAKn z$P~r4_jzfLk(#~@7pE#z@N;y!Z>Prm_x>~*C!F^^`5E}22I#j8wHExyr^e5=@6++| zjdrzS%Y9G@nx^cunz&8N^Y0vfCVh(5Gj%{rpQ{0m^SGAdXYT9|KR;yrctG+0s`0*g zc2Mu@0hH)OPS*XIx?iCCCf#q;eW&jGb$_Gozoh$nbpNpKpVs{gx_@2w@9Tb_o}Y^v z8!s^Dw0HEyQhnxp-$LKK+WPbRBwBx#B8amw2sMvtHje8_|4D(QUke{aa^N20R45vQ zKn?-Or|7yIOxI88ceC3whL)Av@T{ZGHKqg(+(ly^l*E$tl32VEl0`+u*jj=@@mr+b zNpjnI2t1d-?F7QwH-Hp-N<6m`YLr|817ki3_{F04rXd{9R=`E?ci>xi=m04C@bd(E z_7nXhf-5{Y4oBS@J=G9lZ_@IgWd;7=M7PQ649c)vr)Jfjvm2fa6w)A=&C!`{aT zSzz=-;3+ZoUBYf3^L-eqF4{+f^n8v~?<7!o8py$2G+dA8OoH#}0J%bxc+LQ=#B&F* zQkqW+dmKGKBr46Oq~6HXDo}R;8Belfhv2mMTr8JiV6-q`xx{ln_+_qh2wt}Y3|AEh zC6{&pET;#O#&`mG(XInb&A8(NSgRPtmoc8EoZ5s$NEl@#-iJ@+2l@z^hWV?i(C6^k zKxRQ}qS0o|7n5db@^X+ta?zu`@+D+-2HDBp&^GQkOm6?^A^~!H8$K1~_)_wJ08|y! zHn+g$ZPHb{*L{qHs7?N~X2+CE_d7=WL}R`89iz=-)_BY_CmI`!xrpMEH266bMfSG6 zaYqx5?24aLm~$wKjSxL0V#T!lcYs#i>4;)F#3vdVQ9Q2MU-DE`*SHYfK zsS%QuBWPneQQb(PEzYiWFz&b;C&-GYDLIQNdlNBP6*HwQap(xBh!J-QabE&dVMz1< zxToQYJ0TPe3u7rIHi0Yelx7_R&)`N5M8L{#k~p8RJl6WkR1=s z6BBxcvGxi0_!^L^tF%#CB#*(M9Na?MxuaHjjb?uUcGayM08Z(zD_NtS7I3|&yi@be z0(jU2%kOA!H#(uzLqmzqvl{Dh)=-TOF`lkV0dqgZ4dJD4S=yv)8;V4@%DYVcRo zf}{p7!4K$MIOPvn^7q*C*QVtq7)2_?v_X7b49%(E0bpE5GPG|qRW9zor`)*^73J>J zl)Fz+K4$1WZHo5;9?o$)cXKp*F;Y@FUn4S+O&Tc&rw&drSUZs$G>;NFDWDNL+Eo(i zR4KlQCfm?XzI%K z9JB)Yu?nqt9PQ7jd9IqF`E=U*AH~Pif~lm$q=Q-@3IlrHMdeaG8*=o!bmWw_xrj(k z^$D#err+;ipZ1>)WHZaY#LMEe6At#Z%>FL3r(4=6ou(#j)rh^ix>*iq|NEd^;<*{A zDe*ik;Y0WyuL$1+dB!VrY>uTodENJ$CVE`>w}CijKV6{Aw+Q?v0%uZ*kKx@70k8X@ z7Cn7FP$nMG#53-KxaU!ltl0#8&n5EuNf&`xM4UzLM9l_b{hhpkQt*mJ7dLU{A$)mT z=@dRo5^4@%Iz3@2OQ%#ND{a+6R2$quZabt9oe7oDJs{3<2+>8*bEy=f<5dcY*F4TIjPVuVVId`10rE;?egcrO|GcM6MEq$d7=B(J4W(JE6xlZZI$OC)|fSy%ZG#sp(lSyidKY--sA zqjF3Ieqy*L3wPNCr5BbqSK<0!BT7pbgO8&_gHSFm2Ni39I+7YwWw^^qOG(K9>KSia zSO_t%MvI%P2p!Azaq=^a<|@({H&ZlM)qy$wOaQpkI1|y9`-~-1R4B8jG*?l4ORK-U zdu_;lciQoEhu&_Z}- z8eKAF5q`PO1VM+jWQq$CIAqwTBAnq9&U}$ljU9Y3rErnV-K=7n<1=ku>1=qQh-N!U zEItRm#97%K&>q5KatSJ)HH;6-#^c)nMc`xj>XNw0tLsZ9>QLNP*A)uY4J=#`STMgf z(i7_&sO^gN)!_$JT~90&=?hy*QX{#N9X%+dlg9GOqjoOXZ`GcIA7u4)3csU`>f{_ z&y|-R@~rh-y8UPGxRGVV{eeCAuhRg0){JqOIF7{NpD=u;0 zd;Qz)nVyt;VQO%vC+hF_yPLl5UbM=+a+UkSl;6Gn=<9=vH$712p6Xe2se8P~=f36! z_e0m;;I8$&>c0GK_cTw+gEx`RD2RCh*#UCDU@TikR<8i+^2fp}+U5;d2BK(am{ ziOuT*P0g!UW>;aV63PI$NhDqtCMLV%3EJUD#U=_q1JcMmX@rU}WqqacDCE+pb50K# zLKuM#Y>JCOG?=*3N+eNSx-LLF)zW-4*+l_mlzZk>R%RAwqD-~RlwTB80411LVrrcQ zn;lzI7F>k-!y*vsO9VpkNMAH2dL!NN-WyNaJJ`_yZCV792$aIGD@FTa$)2tl?QC}k z6LKeA7qxQDsq~qrEHrs2>TRq5(-V9A-UIOmGG?s(LyOZG(iEhk@GT9ppS#`Zz zQ{C|x!c0Yi9km^ao^Y3yUSycbP(Q6P1SNVCm|wMCGm@K5A7@G>lX4ZHV`IU5tZPT{ zG3uMKDC06-S(q$GrRtWY0>oqFOlBPk=<8K8Lnjrx#uzI;jx!+1$mK5QjuJ>0{{W3(vARC$k4e|jo2LOLL~N0E25+)StqjtA z4mCrxG59$}!D*dB)rj4(dAcj321N#k6a}P>46;o_tY^?^zAeZ69&O`(+g3Y+M{QCo zga2le+8F$?CgqQw%^yfBGD!D*)DS&`Y!lHl=ro@j{am_)qfvb!HLM8+spgHEii@!? zYbpd8Aw;6(rxp60p9Qgw)4D^LC!1%yxz|95<3MO8RX0=LB=?_SZ56Kzgn;w8RX0=UB+HbJ7JI$rUV(| zoWUZ4oG>NG7(F+l20;cnVM>s(bo%H?c}B}k-v&6K% z4SN~moEc&RgPb!%v@*yEQ@V`(ChdelPM8v8>=SlYS{dYoDM7}fX+Z`#VM>s(FQf$- zq6OTy<3C-Vv|}Je8eWTD)IC;ADEBY?phf9 zl})mbtaJn$IReABowK%iwWgD|U@tExR(FX7dwJ!g6S}}oD36Ndco^vV>bU&*5{n|A>56;)7 zYdM~h7A@CZK)yoLS&p`esAc=%b+5RNZ(nk26gTj~mrNy8-^~yzu`M5-gZMi7dLrT4 zp0JP@3e>xWFT6DdP1WOPn=fHSf<)9%ZzLsrvTEB$Mc%?E|ElRr#O1#ReO7m%6Tif) zKsRpkZA@td9rEyagK*gw~maL;ul5RpwE zC5#F`Ahu0Jt_$J*xR%V0pZ(Lep;MphOt|N|6w;^Iv*V}yP)ykCk&WwcxaayB&6d6x zrv74locb?&6_^POxFVRvvfuZxNb7NzH5{=$OMh;qlH|UP9ccsXpY44P zKp8%~J}Rc0lEv?V$d=E>Z-+GPBC$T#QB_ZuX6*H%u=M(2{2l-lBI}#lzxh|{|1)%H z?Xf=B74dsI_UZ9+-Z*|<2j9-}&;O4;Is*(eI=-Ea^|^lpOlSPUG?lpS_9@K%WI;sZ;eIkKam=hOdg ztx|Y6i6Dz4$DJEL7$$E5*``->VIar1NV&|1aw&inP(} zY}x*uylmKw=#J)5aN}&t*LSCm8t+ydFr*Rf1`?t4Czol?QqolN<0_WOe}>Ei`oCo<_}cD-ySz1*&o&7@ZdK5u8z zC*XZarjsOLx2P0+o^>+a0{f9>KKY4)&x@JzlXBj_LVUM;n~+md!ES-A**wiHcr|7+ z-2&UGd79g<8qQ?81y>hm)2C$;H0Bnk<~g&()r}Wrc?UOo%h|^&VejDUy<^;>*pZo`Ns8>l%FK-*YnP&%R+fL zCgsPAK`a$#dr8uB^FuQE{JtUO^Q<>GHt=s#zK)VUHTn-K(X-d#6iLrr=Y`&TM5TlI z-rutTbbafl9O~~Cpqm*Kg|rr+cS$?B=ZC1I=NjrSU}uMv&wYQ=ZcWcFzog#@`QpE; zfPMNef4*_OSisIJ1?X=SpwkU?zIe(D(5Doj*MOeyeNl5jr}si-uao)GPVRf8=~sad z-}aU-y8^@B&M#E#px&OPiyKH-&v3s^?c Uh<>q_3_+I|5Uh$S Date: Mon, 16 Feb 2015 07:41:50 -0600 Subject: [PATCH 162/308] Clean up install and configs --- messenger/get_messenger_dir.py | 27 ++++++++++++++++++++++++++ messenger/make.py | 19 ++---------------- messenger/make_octave.py | 26 ++++++------------------- messenger/mexa64/local_octave.cfg | 4 ++-- messenger/mexmaci64/local_octave.cfg | 4 ++-- setup.py | 29 +++++++++------------------- 6 files changed, 48 insertions(+), 61 deletions(-) create mode 100644 messenger/get_messenger_dir.py diff --git a/messenger/get_messenger_dir.py b/messenger/get_messenger_dir.py new file mode 100644 index 0000000..4294f61 --- /dev/null +++ b/messenger/get_messenger_dir.py @@ -0,0 +1,27 @@ +import sys +import platform + + +def get_messenger_dir(): + # Check the system platform first + splatform = sys.platform + print("This is a " + splatform + " system") + + if splatform.startswith('linux'): + messenger_dir = 'mexa64' + elif splatform.startswith('darwin'): + messenger_dir = 'mexmaci64' + elif splatform.startswith('win32'): + if splatform == "win32": + # We have a win64 messenger, so we need to figure out if this is 32 or 64 + # bit Windows: + if not platform.machine().endswith('64'): + raise ValueError("pymatbridge does not work on win32") + + # We further need to differniate 32 from 64 bit: + maxint = sys.maxint() + if maxint == 9223372036854775807: + messenger_dir = 'mexw64' + elif maxint == 2147483647: + messenger_dir = 'mexw32' + return messenger_dir diff --git a/messenger/make.py b/messenger/make.py index 5ada5d8..9962a3c 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -1,26 +1,11 @@ #!/usr/bin/python from __future__ import print_function import os -import sys -import fnmatch +from get_messenger_dir import get_messenger_dir import subprocess import shutil -# Check the system platform first -platform = sys.platform -print("This is a " + platform + " system") - -if platform.startswith('linux'): - messenger_dir = 'mexa64' -elif platform.startswith('darwin'): - messenger_dir = 'mexmaci64' -elif platform.startswith('win32'): - # We further need to differniate 32 from 64 bit: - maxint = sys.maxint() - if maxint == 9223372036854775807: - messenger_dir = 'mexw64' - elif maxint == 2147483647: - messenger_dir = 'mexw32' +messenger_dir = get_messenger_dir() # Open the configure file and start parsing with open(os.path.join(messenger_dir, 'local.cfg'), 'r') as config: diff --git a/messenger/make_octave.py b/messenger/make_octave.py index 859878d..107ff85 100644 --- a/messenger/make_octave.py +++ b/messenger/make_octave.py @@ -1,25 +1,11 @@ #!/usr/bin/python from __future__ import print_function import os -import sys +from get_messenger_dir import get_messenger_dir import shutil import subprocess -# Check the system platform first -platform = sys.platform -print("This is a " + platform + " system") - -if platform.startswith('linux'): - messenger_dir = 'mexa64' -elif platform.startswith('darwin'): - messenger_dir = 'mexmaci64' -elif platform.startswith('win32'): - # We further need to differniate 32 from 64 bit: - maxint = sys.maxsize - if maxint == 9223372036854775807: - messenger_dir = 'mexw64' - elif maxint == 2147483647: - messenger_dir = 'mexw32' +messenger_dir = get_messenger_dir() with open(os.path.join(messenger_dir, 'local_octave.cfg')) as fid: lines = fid.readlines() @@ -27,16 +13,16 @@ cfg = {} for line in lines: name, path = line.split('=') - cfg[name.lower()] = path + cfg[name.lower()] = path.strip() or '.' -print("Building messenger.oct...") +print("Building messenger.mex...") paths = "-L%(octave_lib)s -I%(octave_inc)s -L%(zmq_lib)s -I%(zmq_inc)s" % cfg -make_cmd = "mkoctfile %s -lzmq ./src/messenger.c" % paths +make_cmd = "mkoctfile --mex %s -lzmq ./src/messenger.c" % paths print(make_cmd) subprocess.check_output(make_cmd.split()) -messenger_exe = 'messenger.oct' +messenger_exe = 'messenger.mex' messenger_loc = os.path.join(messenger_dir, messenger_exe) shutil.move(messenger_exe, messenger_loc) diff --git a/messenger/mexa64/local_octave.cfg b/messenger/mexa64/local_octave.cfg index 1d3f3d3..76505f5 100644 --- a/messenger/mexa64/local_octave.cfg +++ b/messenger/mexa64/local_octave.cfg @@ -1,4 +1,4 @@ OCTAVE_INC=/usr/include OCTAVE_LIB=/usr/lib/x86_64-linux-gnu/ -ZMQ_INC=/usr/include -ZMQ_LIB=/usr/lib/x86_64-linux-gnu/ +ZMQ_INC= +ZMQ_LIB= diff --git a/messenger/mexmaci64/local_octave.cfg b/messenger/mexmaci64/local_octave.cfg index 1d3f3d3..76505f5 100644 --- a/messenger/mexmaci64/local_octave.cfg +++ b/messenger/mexmaci64/local_octave.cfg @@ -1,4 +1,4 @@ OCTAVE_INC=/usr/include OCTAVE_LIB=/usr/lib/x86_64-linux-gnu/ -ZMQ_INC=/usr/include -ZMQ_LIB=/usr/lib/x86_64-linux-gnu/ +ZMQ_INC= +ZMQ_LIB= diff --git a/setup.py b/setup.py index 42e61a4..4978b92 100755 --- a/setup.py +++ b/setup.py @@ -1,38 +1,27 @@ #!/usr/bin/env python """Setup file for python-matlab-bridge""" -import platform import os import sys import shutil +import glob +from distutils.core import setup + # BEFORE importing distutils, remove MANIFEST. distutils doesn't properly # update it when the contents of directories change. if os.path.exists('MANIFEST'): os.remove('MANIFEST') -from distutils.core import setup - -# Find the messenger binary file and copy it to /matlab folder. -def copy_bin(bin_path): - if os.path.exists(bin_path): - shutil.copy(bin_path, "./pymatbridge/matlab") - return True - else: - return False +# Find the messenger binary file(s) and copy it to /matlab folder. +sys.path.insert(0, 'messenger') +from get_messenger_dir import get_messenger_dir +messenger_dir = get_messenger_dir() -if sys.platform == "win32": - # We have a win64 messenger, so we need to figure out if this is 32 or 64 - # bit Windows: - if not platform.machine().endswith('64'): - raise ValueError("pymatbridge does not work on win32") +for f in glob.glob("./messenger/%s/messenger.*" % messenger_dir): + shutil.copy(f, "./pymatbridge/matlab") -for copy_this in ["./messenger/mexmaci64/messenger.mexmaci64", - "./messenger/mexa64/messenger.mexa64", - "./messenger/mexw64/messenger.mexw64", - "./messenger/mexw64/messenger.oct"]: - copy_bin(copy_this) # Get version and release info, which is all stored in pymatbridge/version.py ver_file = os.path.join('pymatbridge', 'version.py') From 072fe8d832cbced4701e34bca12602844e14decf Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 08:07:15 -0600 Subject: [PATCH 163/308] Update the Readme --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0675f8c..bff998c 100644 --- a/README.md +++ b/README.md @@ -121,8 +121,7 @@ Rather than `~/startup.m`, Octave looks for an `~/.octaverc` file for commands to execute before every session. (This is a good place to manipulate the runtime path, for example). -Requires Version 3.8 or higher. Notice: it does not work with the MXE build on Windows -due to a Java error. +Requires Version 3.8 or higher. Notice: it does not work with the MXE build on Windows due to incomplete Java support. The Cygwin version has not been tested. ### Matlab magic: @@ -156,7 +155,7 @@ to build the pymatbridge messenger from source. To do so, you will need to follo Please refer to the [official guide](http://zeromq.org/intro:get-the-software) on how to build and install zmq. On Ubuntu, it is as simple as `sudo apt-get install libzmq3-dev`. On Windows, suggest using the following method: -- Install MSYS2 +- Install [MSYS2](http://sourceforge.net/projects/msys2/) - Run `$ pacman -S make` - From the zmq source directory, run: `$ sh configure --prefix=$(pwd) --build=x86_64-w64-mingw32` - Run `$ make`. @@ -223,7 +222,7 @@ latest release. Unzip it somewhere on your machine. For Matlab: cd messenger - # edit local.cfg in the directory for your platform + # edit local.cfg in the directory for your platform python make.py cd .. python setup.py install @@ -232,7 +231,7 @@ For Matlab: For Octave: cd messenger/octave - # edit local_octave.cfg in the directory for your platform + # edit local_octave.cfg in the directory for your platform python make_octave.py cd .. python setup.py From c96cd2ab8c5a9b6bdba63ab6d0587fd799f33742 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 10:30:01 -0600 Subject: [PATCH 164/308] Update readme with Windows woes. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bff998c..3e9bb5d 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,8 @@ Rather than `~/startup.m`, Octave looks for an `~/.octaverc` file for commands to execute before every session. (This is a good place to manipulate the runtime path, for example). -Requires Version 3.8 or higher. Notice: it does not work with the MXE build on Windows due to incomplete Java support. The Cygwin version has not been tested. +Requires Version 3.8 or higher. Notice: Neither the MXE 3.8.1 nor the Cygwin 3.8.2 version is compatible on Windows. No Windows support will be available +until a working version of Octave 3.8+ with Java support is released. ### Matlab magic: From 04a41579cde85b20acba1d18315f9712bab4d35c Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 10:30:21 -0600 Subject: [PATCH 165/308] Make messenger a package --- messenger/get_messenger_dir.py | 3 +-- messenger/make.py | 2 +- messenger/make_octave.py | 2 +- setup.py | 7 ++++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/messenger/get_messenger_dir.py b/messenger/get_messenger_dir.py index 4294f61..50f482a 100644 --- a/messenger/get_messenger_dir.py +++ b/messenger/get_messenger_dir.py @@ -5,7 +5,6 @@ def get_messenger_dir(): # Check the system platform first splatform = sys.platform - print("This is a " + splatform + " system") if splatform.startswith('linux'): messenger_dir = 'mexa64' @@ -19,7 +18,7 @@ def get_messenger_dir(): raise ValueError("pymatbridge does not work on win32") # We further need to differniate 32 from 64 bit: - maxint = sys.maxint() + maxint = sys.maxsize if maxint == 9223372036854775807: messenger_dir = 'mexw64' elif maxint == 2147483647: diff --git a/messenger/make.py b/messenger/make.py index 9962a3c..7a17a3a 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -1,7 +1,7 @@ #!/usr/bin/python from __future__ import print_function import os -from get_messenger_dir import get_messenger_dir +from .get_messenger_dir import get_messenger_dir import subprocess import shutil diff --git a/messenger/make_octave.py b/messenger/make_octave.py index 107ff85..03d668c 100644 --- a/messenger/make_octave.py +++ b/messenger/make_octave.py @@ -1,7 +1,7 @@ #!/usr/bin/python from __future__ import print_function import os -from get_messenger_dir import get_messenger_dir +from .get_messenger_dir import get_messenger_dir import shutil import subprocess diff --git a/setup.py b/setup.py index 4978b92..ca6e07e 100755 --- a/setup.py +++ b/setup.py @@ -5,7 +5,6 @@ import sys import shutil import glob -from distutils.core import setup # BEFORE importing distutils, remove MANIFEST. distutils doesn't properly @@ -14,9 +13,11 @@ os.remove('MANIFEST') +from distutils.core import setup + + # Find the messenger binary file(s) and copy it to /matlab folder. -sys.path.insert(0, 'messenger') -from get_messenger_dir import get_messenger_dir +from messenger.get_messenger_dir import get_messenger_dir messenger_dir = get_messenger_dir() for f in glob.glob("./messenger/%s/messenger.*" % messenger_dir): From 08138ae4fa2db087030c7b85a04fde0c272924b1 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 10:31:01 -0600 Subject: [PATCH 166/308] Can not use relative imports in package --- messenger/make.py | 2 +- messenger/make_octave.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/messenger/make.py b/messenger/make.py index 7a17a3a..9962a3c 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -1,7 +1,7 @@ #!/usr/bin/python from __future__ import print_function import os -from .get_messenger_dir import get_messenger_dir +from get_messenger_dir import get_messenger_dir import subprocess import shutil diff --git a/messenger/make_octave.py b/messenger/make_octave.py index 03d668c..107ff85 100644 --- a/messenger/make_octave.py +++ b/messenger/make_octave.py @@ -1,7 +1,7 @@ #!/usr/bin/python from __future__ import print_function import os -from .get_messenger_dir import get_messenger_dir +from get_messenger_dir import get_messenger_dir import shutil import subprocess From ca8a877d48c12b5b554cf9ce7e42c31fa4e1796d Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 10:31:12 -0600 Subject: [PATCH 167/308] Add package __init__ --- messenger/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 messenger/__init__.py diff --git a/messenger/__init__.py b/messenger/__init__.py new file mode 100644 index 0000000..e69de29 From efbad3aaf1549405e1ad3347bc91a00169da43f9 Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Mon, 16 Feb 2015 11:42:45 -0500 Subject: [PATCH 168/308] Add Octave messenger binary for Mac. --- messenger/mexmaci64/messenger.mex | Bin 0 -> 9664 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 messenger/mexmaci64/messenger.mex diff --git a/messenger/mexmaci64/messenger.mex b/messenger/mexmaci64/messenger.mex new file mode 100755 index 0000000000000000000000000000000000000000..718c8a2f72f995ecb47651b72f4328568eac668c GIT binary patch literal 9664 zcmeHNU2Igx6&~XdTte7|lr&MHxuzjNLCa5qL{P1m;7uL}#)>^S~5ykpU%>WqD57(+sLwym1;Jy>yGJ$!k&xZV`iuP^D!Ry;4uH zBC5qZyg)VW(;DO(D%u#U#+&w!cvhd2$vXw;)#Cj{c$^2W0n6I4ednX`w(a4bH6UaP9Wx{+&Tx|=ah%my%Y_(R z&jv%C3r(oQwIIddH^X30vk+wn=o8!fU`QVZ?-imI?YDvMKxP6fGy4k98p>~!u6|Jn zK+Q^@hlKs~f1$Pen{zg%UwQR~j%#aneHY!Sq0OH!1oD?c9yJrU?`CA$(pPml%@ylP z#lpHwE@5ZZWzs#&hqC))55$rOK|+gm^ncopv)Nc{mrHndzq9WC*yh*R!j zHddfur|>vG|2ZD;tH9_N=VuzH46Z@@rACrivnIAdcRzdlzrm84so#09=sDTg!_^+& z2h=F?1|^EBIq?mvqDull7cLoF)-z!W*cC5dhq;sgqs(b?-1o5$xi(2wEGaN??& z=)MwM#*PDUbnn^7J+txNrw2$CJPt5;7d9c@E6}LM`_T>X4Dy3GFuJ!G{#Qh63mu?==eN0zh~2ZDRaZy!m&23<>izG-V3Tf;vq(#(4(DXM#?+ z=EvU{8hC?iIdWn-6v0p@@~tIcq}B_nFAR9z#JVbt6a3zc;SAA%E+~a=zDU6~3ZNh+ znv^|#{Uuwz4qp5E3kf%KZl0Cnkv5!n%*}E#etb+V1PJ~Kv)3V{^pyXO|8{Vh%y2h+ zoD)vU2daG(JS+!Jp?S=I*MA!}Bf-zGd(FfJ$Vbcv-`8ttI6jIg2`3>2KVS=y2>O9F z(JK3pG2f5Q0|r`;1E0Sl_z5s4_*spZ+|5C>f>t2_p(t#E{NA%8Q!9=_VQR%OSw17n z6S5qU<#%NHoGhQ0KZjFLJ=+4H2nPwE*`uaY`U z>P=E*Qhz4plKO~LlGJ>JZ{l%Mt4MW#iWdsG!WQH4_FYENDHhW?*Kl*5k#^Hw+Rmg8 zIZ5G^)1K(eC7y6RBaz7!o#cG6Er)L$WzWFZj%?bsJ<7U^cCWL=$O6W3d!53nl|*?m zlg1~#`((i>=5uaxFhG%ZC zVHbK!S;zIZ7)9ldolF9^IK#T8DRdmj@Y1khyrMY2G9HRK=#-t#ILVlJ%ymNWKD%hx z8G3Zk=y4pkIw&!rh9!182`Am}6pWryDupTsI+e*Ch#Bp03;{8`Ldi|AZ}Eui!|-w# zrnE9_87*ohOVG^8d2l!-LdQ#VWE{Kb82Li3Kb?dQV#5ear{%_1h${hZmOPY&)0W71^8Vq1QD=QF(c8i8`v?01+ zUegG{Z<4O?ct!eD*G>BW)Wy19s_Xl7ymFTabltD(L0uoywd%cI z)+11lKs^HW2-G7`k3c;F^$64>P>(=80`&;gBT$dP|1tuLnxp%83AUsaFJ4LcsBZP( zof(hdyY`C_u|K+~)xwjQ6q3J7^YYe-0wWZ7Wy^IAP_#;maHY~ue!b@9%?S9-Aun%? zsL`q=yt^WAE^f85P8m00?Zw_M{BQuW4khcrtGbt>U=Ic5t%ZVpuq)T8UfUtwC&k^7#baV_>Zg@Wa(*nNm z9!1vI@zknZ5b-*RiC0HVxZ)RIMyAa^*rF2mA`_4H)NjK3rhHli-Kcd|fv(oM4Lad- zBAP@a4Hx2Sc$A9`i9auh(Bd=X)H`MbbohS03^KO!u8V0kGWmUY9AespOny+?KdkvN z-To+fw4K!beGNR+!|@8IhR@gVLpA(x4gYct&+Fc5{NL5^7ZuOA$~2A=`uJ1n!y29! z#MSL{6jRY(P{ZF@!}Fa${VDvlimCL^_X_^5fv+sQBjgJQU-&+U%n&lHm@fH#&sD(d zxrNA_H-?n&&Pc8QEsi1ZiVrYCvrdHYD40GwC8bVHMe6fXGV-L9lsqF9rA|jl%X4wo I35^N(7Yt8=kN^Mx literal 0 HcmV?d00001 From a3238ecb5dd06793dd8fc1aabb35f599758aac47 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 10:47:38 -0600 Subject: [PATCH 169/308] Use a log --- pymatbridge/tests/test_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/tests/test_utils.py b/pymatbridge/tests/test_utils.py index 3f960fe..ecb7add 100644 --- a/pymatbridge/tests/test_utils.py +++ b/pymatbridge/tests/test_utils.py @@ -6,7 +6,7 @@ def on_octave(): return bool(os.environ.get('USE_OCTAVE', False)) def connect_to_matlab(): - mlab = pymat.Octave() if on_octave() else pymat.Matlab() + mlab = pymat.Octave() if on_octave() else pymat.Matlab(log=True) mlab.start() npt.assert_(mlab.is_connected(), msg = "connect_to_matlab(): Connection failed") From 5eb33cd8ab278be2f8b4e879ef39dfa5ade3c3d7 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 10:47:53 -0600 Subject: [PATCH 170/308] Rename test_array and add more variations --- pymatbridge/tests/test_set_variable.py | 49 ++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 pymatbridge/tests/test_set_variable.py diff --git a/pymatbridge/tests/test_set_variable.py b/pymatbridge/tests/test_set_variable.py new file mode 100644 index 0000000..fb44624 --- /dev/null +++ b/pymatbridge/tests/test_set_variable.py @@ -0,0 +1,49 @@ +import pymatbridge as pymat +import random as rd +import numpy as np +import numpy.testing as npt +import test_utils as tu + +class TestArray: + + # Start a Matlab session before any tests + @classmethod + def setup_class(cls): + cls.mlab = tu.connect_to_matlab() + + # Tear down the Matlab session after all the tests are done + @classmethod + def teardown_class(cls): + tu.stop_matlab(cls.mlab) + + + # Pass a 1000*1000 array to Matlab + def test_array_size(self): + array = np.random.random_sample((50,50)) + res = self.mlab.run_func("array_size.m",{'val':array})['result'] + npt.assert_almost_equal(res, array, decimal=8, err_msg = "test_array_size: error") + + + def test_array_content(self): + test_array = np.random.random_integers(2, 20, (5, 10)) + self.mlab.set_variable('test', test_array) + npt.assert_equal(self.mlab.get_variable('test'), test_array) + test_array = np.asfortranarray(test_array) + self.mlab.set_variable('test', test_array) + npt.assert_equal(self.mlab.get_variable('test'), test_array) + # force non-contiguous + test_array = test_array[::-1] + self.mlab.set_variable('test', test_array) + npt.assert_equal(self.mlab.get_variable('test'), test_array) + + def test_object_array(self): + test_array = np.array(['hello', 1]) + self.mlab.set_variable('test', test_array) + npt.assert_equal(self.mlab.get_variable('test'), test_array) + + def test_others(self): + self.mlab.set_variable('test', np.float(1.5)) + npt.assert_equal(self.mlab.get_variable('test'), 1.5) + self.mlab.set_variable('test', 'hello') + npt.assert_equal(self.mlab.get_variable('test'), 'hello') + From f601a09844caeab869fb87b65da15a50960e8596 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 10:48:07 -0600 Subject: [PATCH 171/308] Remove old test_array --- pymatbridge/tests/test_array.py | 34 --------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 pymatbridge/tests/test_array.py diff --git a/pymatbridge/tests/test_array.py b/pymatbridge/tests/test_array.py deleted file mode 100644 index af5fc1f..0000000 --- a/pymatbridge/tests/test_array.py +++ /dev/null @@ -1,34 +0,0 @@ -import pymatbridge as pymat -import random as rd -import numpy as np -import numpy.testing as npt -import test_utils as tu - -class TestArray: - - # Start a Matlab session before any tests - @classmethod - def setup_class(cls): - cls.mlab = tu.connect_to_matlab() - - # Tear down the Matlab session after all the tests are done - @classmethod - def teardown_class(cls): - tu.stop_matlab(cls.mlab) - - - # Pass a 1000*1000 array to Matlab - def test_array_size(self): - array = np.random.random_sample((50,50)) - res = self.mlab.run_func("array_size.m",{'val':array})['result'] - npt.assert_almost_equal(res, array, decimal=8, err_msg = "test_array_size: error") - - - def test_array_content(self): - test_array = np.random.random_integers(2, 20, (5, 10)) - self.mlab.set_variable('test', test_array) - npt.assert_equal(self.mlab.get_variable('test'), test_array) - test_array = np.asfortranarray(test_array) - self.mlab.set_variable('test', test_array) - npt.assert_equal(self.mlab.get_variable('test'), test_array) - From 851db79ab80940377b6983165a387594b3b9cdc3 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 10:48:15 -0600 Subject: [PATCH 172/308] Assume numpy availability and add pragma: no covers --- pymatbridge/pymatbridge.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 2e12f47..d20dd40 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -30,12 +30,7 @@ import json from uuid import uuid4 -try: - from numpy import ndarray, generic, float64, frombuffer, asfortranarray -except ImportError: - class ndarray: - pass - generic = ndarray +from numpy import ndarray, generic, float64, frombuffer, asfortranarray try: from scipy.sparse import spmatrix @@ -170,7 +165,7 @@ def __init__(self, executable, socket_addr=None, self.context = None self.socket = None - def _program_name(self): + def _program_name(self): # pramga: no cover raise NotImplemented def _preamble_code(self): @@ -182,7 +177,7 @@ def _preamble_code(self): "warning(old_warning_state)", "clear old_warning_state"] - def _execute_flag(self): + def _execute_flag(self): # pragma: no cover raise NotImplemented def _run_server(self): From f816158eee8f332ebafb6213a06109767d7ffd3e Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 10:55:30 -0600 Subject: [PATCH 173/308] Clean up handling of stop --- pymatbridge/matlab_magic.py | 31 +++++-------------------------- pymatbridge/pymatbridge.py | 5 +++++ 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index ca8c326..ddd864c 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -22,8 +22,6 @@ import pymatbridge as pymat from .compat import text_type -ipython_version = int(IPython.__version__[0]) - class MatlabInterperterError(RuntimeError): """ @@ -89,16 +87,6 @@ def __init__(self, shell, self.Matlab.start() self.pyconverter = pyconverter - def __del__(self): - """shut down the Matlab server when the object dies. - - 2FIX: this seems to not be called when ipython terminates. bleah. - """ - try: - self.Matlab.stop() - except: - raise - def eval(self, line): """ Parse and evaluate a single line of matlab @@ -192,11 +180,8 @@ def matlab(self, line, cell=None, local_ns=None): display_data = [] if text_output and not args.silent: - if ipython_version < 3: - display_data.append(('MatlabMagic.matlab', - {'text/plain':text_output})) - else: - display_data.append({'text/plain':text_output}) + display_data.append(('MatlabMagic.matlab', + {'text/plain': text_output})) for imgf in imgfiles: if len(imgf): @@ -204,17 +189,11 @@ def matlab(self, line, cell=None, local_ns=None): # later on: with open(imgf, 'rb') as fid: image = fid.read() - if ipython_version < 3: - display_data.append(('MatlabMagic.matlab', - {'image/png':image})) - else: - display_data.append({'image/png': image}) + display_data.append(('MatlabMagic.matlab', + {'image/png': image})) for disp_d in display_data: - if ipython_version < 3: - publish_display_data(disp_d[0], disp_d[1]) - else: - publish_display_data(disp_d) + publish_display_data(source=disp_d[0], data=disp_d[1]) # Delete the temporary data files created by matlab: if len(data_dir): diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index d20dd40..5ea85f5 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -21,6 +21,7 @@ """ +import atexit import os import time import base64 @@ -164,6 +165,7 @@ def __init__(self, executable, socket_addr=None, self.context = None self.socket = None + atexit.register(self.stop) def _program_name(self): # pramga: no cover raise NotImplemented @@ -222,6 +224,9 @@ def _response(self, **kwargs): # Stop the Matlab server def stop(self): + if not self.started: + return True + # Matlab should respond with "exit" if successful if self._response(cmd='exit') == "exit": print("%s closed" % self._program_name()) From 5f6d43850ae239b868f66389ef566c2489da2854 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:05:55 -0600 Subject: [PATCH 174/308] Add error handling to pymat_feval --- pymatbridge/matlab/util/pymat_feval.m | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pymatbridge/matlab/util/pymat_feval.m b/pymatbridge/matlab/util/pymat_feval.m index 0a86282..3c1963b 100644 --- a/pymatbridge/matlab/util/pymat_feval.m +++ b/pymatbridge/matlab/util/pymat_feval.m @@ -31,7 +31,14 @@ arguments = ''; end - [resp{1:req.nargout}] = run_dot_m(func_path, arguments, req.nargout); + try + [resp{1:req.nargout}] = run_dot_m(func_path, arguments, req.nargout); + catch + response.message = lasterr; + json_response = json_dump(response); + return + end + if req.nargout == 1 response.result = resp{1}; else From 32290fafdcf2d121cbeb8b543a6e32d1f8a8da06 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:08:20 -0600 Subject: [PATCH 175/308] Add error handling to pymat_eval --- pymatbridge/matlab/util/pymat_eval.m | 9 ++++++++- pymatbridge/tests/test_magic.py | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pymatbridge/matlab/util/pymat_eval.m b/pymatbridge/matlab/util/pymat_eval.m index 64d081b..69a6d45 100644 --- a/pymatbridge/matlab/util/pymat_eval.m +++ b/pymatbridge/matlab/util/pymat_eval.m @@ -35,7 +35,14 @@ % tempname is less likely to get bonked by another process. diary_file = [tempname() '_diary.txt']; diary(diary_file); - evalin('base', code); + try + evalin('base', code); + catch + diary('off'); + response.message = lasterr; + json_response = json_dump(response); + return; + end diary('off'); datadir = fullfile(tempdir(),'MatlabData'); diff --git a/pymatbridge/tests/test_magic.py b/pymatbridge/tests/test_magic.py index 3b5d7f8..3a8085b 100644 --- a/pymatbridge/tests/test_magic.py +++ b/pymatbridge/tests/test_magic.py @@ -96,3 +96,6 @@ def test_struct(self): npt.assert_equal(self.ip.user_ns['obj']['num'], self.ip.user_ns['num']) npt.assert_equal(self.ip.user_ns['obj']['num_array'].squeeze(), self.ip.user_ns['num_array']) npt.assert_equal(self.ip.user_ns['obj']['str'], self.ip.user_ns['str']) + + def test_failed_attempt(self): + From eb36ab1965250809cac9973b253b7508df09aab8 Mon Sep 17 00:00:00 2001 From: arokem Date: Mon, 16 Feb 2015 09:09:11 -0800 Subject: [PATCH 176/308] BF: Still need the `splatform` variable in `make.py`. --- messenger/get_messenger_dir.py | 6 +++--- messenger/make.py | 6 +++--- messenger/make_octave.py | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/messenger/get_messenger_dir.py b/messenger/get_messenger_dir.py index 50f482a..1a77024 100644 --- a/messenger/get_messenger_dir.py +++ b/messenger/get_messenger_dir.py @@ -12,8 +12,8 @@ def get_messenger_dir(): messenger_dir = 'mexmaci64' elif splatform.startswith('win32'): if splatform == "win32": - # We have a win64 messenger, so we need to figure out if this is 32 or 64 - # bit Windows: + # We have a win64 messenger, so we need to figure out if this is 32 + # or 64 bit Windows: if not platform.machine().endswith('64'): raise ValueError("pymatbridge does not work on win32") @@ -23,4 +23,4 @@ def get_messenger_dir(): messenger_dir = 'mexw64' elif maxint == 2147483647: messenger_dir = 'mexw32' - return messenger_dir + return messenger_dir, splatform diff --git a/messenger/make.py b/messenger/make.py index 9962a3c..4f053dd 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -5,7 +5,7 @@ import subprocess import shutil -messenger_dir = get_messenger_dir() +messenger_dir, splatform = get_messenger_dir() # Open the configure file and start parsing with open(os.path.join(messenger_dir, 'local.cfg'), 'r') as config: @@ -44,7 +44,7 @@ # Get the extension -if platform == 'win32': +if splatform == 'win32': extcmd = '"' + matlab_bin + "\\mexext.bat" + '"' else: extcmd = matlab_bin + "/mexext" @@ -56,7 +56,7 @@ print("Building messenger." + extension + " ...") # Build the mex file -if platform == 'win32': +if splatform == 'win32': mex = "\\mex.bat" else: mex = "/mex" diff --git a/messenger/make_octave.py b/messenger/make_octave.py index 107ff85..36ae996 100644 --- a/messenger/make_octave.py +++ b/messenger/make_octave.py @@ -5,7 +5,7 @@ import shutil import subprocess -messenger_dir = get_messenger_dir() +messenger_dir, splatform = get_messenger_dir() with open(os.path.join(messenger_dir, 'local_octave.cfg')) as fid: lines = fid.readlines() From 3ba965a9e6b09be21f003e3e8ae25df13f90a9ce Mon Sep 17 00:00:00 2001 From: arokem Date: Mon, 16 Feb 2015 09:20:08 -0800 Subject: [PATCH 177/308] BF: Accomodate setup.py to the change in outputs. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index ca6e07e..d9d7aa5 100755 --- a/setup.py +++ b/setup.py @@ -18,7 +18,7 @@ # Find the messenger binary file(s) and copy it to /matlab folder. from messenger.get_messenger_dir import get_messenger_dir -messenger_dir = get_messenger_dir() +messenger_dir, splatform = get_messenger_dir() for f in glob.glob("./messenger/%s/messenger.*" % messenger_dir): shutil.copy(f, "./pymatbridge/matlab") From 06a89b7af7bd0425f6042a7ee30247c4c7273bda Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:29:43 -0600 Subject: [PATCH 178/308] Revert eval function --- pymatbridge/matlab/util/pymat_eval.m | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/pymatbridge/matlab/util/pymat_eval.m b/pymatbridge/matlab/util/pymat_eval.m index 69a6d45..64d081b 100644 --- a/pymatbridge/matlab/util/pymat_eval.m +++ b/pymatbridge/matlab/util/pymat_eval.m @@ -35,14 +35,7 @@ % tempname is less likely to get bonked by another process. diary_file = [tempname() '_diary.txt']; diary(diary_file); - try - evalin('base', code); - catch - diary('off'); - response.message = lasterr; - json_response = json_dump(response); - return; - end + evalin('base', code); diary('off'); datadir = fullfile(tempdir(),'MatlabData'); From e1a02ea9540cfbe6c1665df5a079a82fef16e2e9 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:30:30 -0600 Subject: [PATCH 179/308] Add an explicit failure magic test --- pymatbridge/tests/test_magic.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pymatbridge/tests/test_magic.py b/pymatbridge/tests/test_magic.py index 3a8085b..f9ecb00 100644 --- a/pymatbridge/tests/test_magic.py +++ b/pymatbridge/tests/test_magic.py @@ -1,6 +1,7 @@ import os import pymatbridge as pymat +from pymatbridge.matlab_magic import MatlabInterperterError from IPython.testing.globalipapp import get_ipython import numpy.testing as npt @@ -97,5 +98,6 @@ def test_struct(self): npt.assert_equal(self.ip.user_ns['obj']['num_array'].squeeze(), self.ip.user_ns['num_array']) npt.assert_equal(self.ip.user_ns['obj']['str'], self.ip.user_ns['str']) - def test_failed_attempt(self): - + def test_faulty(self): + npt.assert_raises(MatlabInterperterError, + lambda: self.ip.run_line_magic('matlab', '1 = 2')) From a4b2d0bde342f7a32276be22483fb3ccb1708e82 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:40:23 -0600 Subject: [PATCH 180/308] Use octave-compatible error handling --- pymatbridge/matlab/util/pymat_feval.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymatbridge/matlab/util/pymat_feval.m b/pymatbridge/matlab/util/pymat_feval.m index 3c1963b..8aef44b 100644 --- a/pymatbridge/matlab/util/pymat_feval.m +++ b/pymatbridge/matlab/util/pymat_feval.m @@ -33,8 +33,8 @@ try [resp{1:req.nargout}] = run_dot_m(func_path, arguments, req.nargout); - catch - response.message = lasterr; + catch ME + response.message = ME.message; json_response = json_dump(response); return end From 0df52c38b53c479dce2545f4df6439c18df603ec Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:44:38 -0600 Subject: [PATCH 181/308] Fix typo --- pymatbridge/pymatbridge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 5ea85f5..2c2d790 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -167,7 +167,7 @@ def __init__(self, executable, socket_addr=None, self.socket = None atexit.register(self.stop) - def _program_name(self): # pramga: no cover + def _program_name(self): # pragma: no cover raise NotImplemented def _preamble_code(self): From 295d4779d3f36481fb0e100ef432f7efe7ef7785 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:51:48 -0600 Subject: [PATCH 182/308] Fix handling of non-contiguous arrays --- pymatbridge/pymatbridge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 2c2d790..7659a12 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -48,7 +48,7 @@ def encode_ndarray(obj): if obj.flags.c_contiguous: obj = obj.T elif not obj.flags.f_contiguous: - obj = asfortranarray(obj) + obj = asfortranarray(obj.T) else: obj = obj.T try: From 4be8b397eda01008a73c09d11862c60d4e2518e2 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 11:58:43 -0600 Subject: [PATCH 183/308] Try an explicit matlab close in unload extension --- pymatbridge/matlab_magic.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index ddd864c..c793a47 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -216,5 +216,6 @@ def unload_ipython_extension(ip): global _loaded if _loaded: magic = ip.magics_manager.registry.pop('MatlabMagics') + magic.Matlab.close() _loaded = False From e3c00b6cbe4fbd267d7606f1534c361e1562159d Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 12:47:52 -0600 Subject: [PATCH 184/308] Fix unload_ipython_extension --- pymatbridge/matlab_magic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index c793a47..f8b441e 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -216,6 +216,6 @@ def unload_ipython_extension(ip): global _loaded if _loaded: magic = ip.magics_manager.registry.pop('MatlabMagics') - magic.Matlab.close() + magic.Matlab.stop() _loaded = False From 733ee7e04417428649a886a0b015fd5c5a7147ff Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 13:02:26 -0600 Subject: [PATCH 185/308] Update publish coverage and fix handling of files --- pymatbridge/publish.py | 17 ++++++----------- pymatbridge/tests/test_publish.py | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/pymatbridge/publish.py b/pymatbridge/publish.py index 5843795..35d596e 100644 --- a/pymatbridge/publish.py +++ b/pymatbridge/publish.py @@ -48,10 +48,9 @@ def mfile_to_lines(mfile): Full path to an m file """ # We should only be able to read this file: - f = file(mfile, 'r') - lines = f.readlines() - f.close() - return lines + with open(mfile) as fid: + return fid.readlines() + def lines_to_notebook(lines, name=None): """ @@ -122,13 +121,9 @@ def convert_mfile(mfile, outfile=None): Full path to the output ipynb file """ - f = file(mfile, 'r') - lines = f.readlines() - f.close() + lines = mfile_to_lines(mfile) nb = lines_to_notebook(lines) if outfile is None: outfile = mfile.split('.m')[0] + '.ipynb' - nbfile = file(outfile, 'w') - nbformat.write(nb, nbfile, format='ipynb') - nbfile.close() - + with open(outfile, 'w') as fid: + nbformat.write(nb, fid, format='ipynb') diff --git a/pymatbridge/tests/test_publish.py b/pymatbridge/tests/test_publish.py index 9f907c7..3b574be 100644 --- a/pymatbridge/tests/test_publish.py +++ b/pymatbridge/tests/test_publish.py @@ -1,5 +1,8 @@ import numpy.testing as npt import pymatbridge.publish as publish +import json +import os + def test_format_line(): """ @@ -32,3 +35,21 @@ def test_lines_to_notebook(): npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], ' This is a first line\n\n') + + +def test_convert_mfile(): + publish.convert_mfile('test_publish.m') + with open('test_publish.ipynb') as fid: + nb = json.load(fid) + npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], + ' Experimenting with conversion from matlab to ipynb\n\n') + os.remove('test_publish.ipynb') + + +def test_mfile_to_lines(): + lines = publish.mfile_to_lines('test_publish.m') + + nb = publish.lines_to_notebook(lines) + + npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], + ' Experimenting with conversion from matlab to ipynb\n\n') From 57dfdc877d7b962238d3dc8166cd8e893bc707a7 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 13:08:19 -0600 Subject: [PATCH 186/308] Use the absolute path the the m-file --- pymatbridge/tests/test_publish.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pymatbridge/tests/test_publish.py b/pymatbridge/tests/test_publish.py index 3b574be..c4c6b6f 100644 --- a/pymatbridge/tests/test_publish.py +++ b/pymatbridge/tests/test_publish.py @@ -4,6 +4,9 @@ import os +MFILE = os.path.join(os.path.dirname(__file__), 'test_publish.m') + + def test_format_line(): """ Test that lines get formatted properly @@ -38,18 +41,20 @@ def test_lines_to_notebook(): def test_convert_mfile(): - publish.convert_mfile('test_publish.m') + publish.convert_mfile(MFILE) with open('test_publish.ipynb') as fid: nb = json.load(fid) npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], ' Experimenting with conversion from matlab to ipynb\n\n') - os.remove('test_publish.ipynb') + os.remove(MFILE.replace('.m', '.ipynb') def test_mfile_to_lines(): - lines = publish.mfile_to_lines('test_publish.m') + lines = publish.mfile_to_lines(MFILE) nb = publish.lines_to_notebook(lines) npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], ' Experimenting with conversion from matlab to ipynb\n\n') + + os.remove(MFILE.replace('.m', '.ipynb')) From c8a067d084a95f25e3e187239ad7db1752d12802 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 13:12:01 -0600 Subject: [PATCH 187/308] Fix syntax error --- pymatbridge/tests/test_publish.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/tests/test_publish.py b/pymatbridge/tests/test_publish.py index c4c6b6f..56881c2 100644 --- a/pymatbridge/tests/test_publish.py +++ b/pymatbridge/tests/test_publish.py @@ -46,7 +46,7 @@ def test_convert_mfile(): nb = json.load(fid) npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], ' Experimenting with conversion from matlab to ipynb\n\n') - os.remove(MFILE.replace('.m', '.ipynb') + os.remove(MFILE.replace('.m', '.ipynb')) def test_mfile_to_lines(): From 808d72fd6acb464726673f961818f64482be8a5c Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 13:13:15 -0600 Subject: [PATCH 188/308] Fix publish tests --- pymatbridge/tests/test_publish.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pymatbridge/tests/test_publish.py b/pymatbridge/tests/test_publish.py index 56881c2..5c73e0f 100644 --- a/pymatbridge/tests/test_publish.py +++ b/pymatbridge/tests/test_publish.py @@ -42,11 +42,12 @@ def test_lines_to_notebook(): def test_convert_mfile(): publish.convert_mfile(MFILE) - with open('test_publish.ipynb') as fid: + nb_file = MFILE.replace('.m', '.ipynb') + with open(nb_file) as fid: nb = json.load(fid) npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], ' Experimenting with conversion from matlab to ipynb\n\n') - os.remove(MFILE.replace('.m', '.ipynb')) + os.remove(nb_file) def test_mfile_to_lines(): @@ -56,5 +57,3 @@ def test_mfile_to_lines(): npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], ' Experimenting with conversion from matlab to ipynb\n\n') - - os.remove(MFILE.replace('.m', '.ipynb')) From e509f6c8c2c2c694cf28ba5df99fb862350903a5 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 13:21:16 -0600 Subject: [PATCH 189/308] Try a python 3.4 build --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 2b5a690..362025d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,7 @@ deploy: env: - CONDA="python=2.7 numpy=1.7" - CONDA="python=3.3 numpy" + - CONDA="python=3.4 numpy" before_install: - sudo apt-add-repository -y ppa:octave/stable; - sudo apt-get update -qq; From ba96b0e5aa74a74ee6506d07412550e761dc16a9 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 16:35:46 -0600 Subject: [PATCH 190/308] Streamline the build process --- messenger/make.py | 157 ++++++++++++++++----------- messenger/make_octave.py | 29 ----- messenger/mexa64/local.cfg | 7 +- messenger/mexa64/local_octave.cfg | 4 - messenger/mexmaci64/local.cfg | 6 +- messenger/mexmaci64/local_octave.cfg | 4 - messenger/mexw64/local.cfg | 6 +- messenger/mexw64/local_octave.cfg | 4 - 8 files changed, 105 insertions(+), 112 deletions(-) delete mode 100644 messenger/make_octave.py delete mode 100644 messenger/mexa64/local_octave.cfg delete mode 100644 messenger/mexmaci64/local_octave.cfg delete mode 100644 messenger/mexw64/local_octave.cfg diff --git a/messenger/make.py b/messenger/make.py index 4f053dd..623e9bd 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -1,71 +1,98 @@ #!/usr/bin/python from __future__ import print_function import os -from get_messenger_dir import get_messenger_dir -import subprocess +import platform +import sys import shutil +import subprocess + + +def get_messenger_dir(): + # Check the system platform first + splatform = sys.platform + + if splatform.startswith('linux'): + messenger_dir = 'mexa64' + elif splatform.startswith('darwin'): + messenger_dir = 'mexmaci64' + elif splatform.startswith('win32'): + if splatform == "win32": + # We have a win64 messenger, so we need to figure out if this is 32 + # or 64 bit Windows: + if not platform.machine().endswith('64'): + raise ValueError("pymatbridge does not work on win32") + + # We further need to differniate 32 from 64 bit: + maxint = sys.maxsize + if maxint == 9223372036854775807: + messenger_dir = 'mexw64' + elif maxint == 2147483647: + messenger_dir = 'mexw32' + return messenger_dir + + +def get_config(): + messenger_dir = get_messenger_dir() + with open(os.path.join(messenger_dir, 'local.cfg')) as fid: + lines = fid.readlines() + + cfg = {} + for line in lines: + name, path = line.split('=') + cfg[name.lower()] = path.strip() or '.' + return cfg + + +def do_build(make_cmd, messenger_exe): + print('Building %s...' % messenger_exe) + print(make_cmd) + messenger_dir = get_messenger_dir() + subprocess.check_output(make_cmd.split()) + + messenger_loc = os.path.join(messenger_dir, messenger_exe) + + shutil.move(messenger_exe, messenger_loc) + os.remove('messenger.o') + + +def build_octave(): + paths = "-L%(octave_lib)s -I%(octave_inc)s -L%(zmq_lib)s -I%(zmq_inc)s" + paths = paths % get_config() + make_cmd = "mkoctfile --mex %s -lzmq ./src/messenger.c" % paths + do_build(make_cmd, 'messenger.mex') + + +def build_matlab(): + cfg = get_config() + matlab_bin = cfg['matlab_bin'] + # Get the extension + if sys.platform == 'win32': + extcmd = '"%s\\mexext.bat"' % matlab_bin + else: + extcmd = matlab_bin + "/mexext" + + check_extension = subprocess.Popen(extcmd, stdout=subprocess.PIPE) + extension = check_extension.stdout.read() + extension = extension.decode('utf-8').rstrip('\r\n') + + # Build the mex file + if sys.platform == 'win32': + mex = matlab_bin + "\\mex.bat" + else: + mex = matlab_bin + "/mex" + paths = "-L%(zmq_lib)s -I%(zmq_inc)s" % cfg + make_cmd = '"%s" -O %s -lzmq ./src/messenger.c' % (mex, paths) + do_build(make_cmd, 'messenger.%s' % extension) -messenger_dir, splatform = get_messenger_dir() - -# Open the configure file and start parsing -with open(os.path.join(messenger_dir, 'local.cfg'), 'r') as config: - for line in config: - try: - line = line.decode('utf-8') - - # python3 - except: - pass - - path = line.split('=') - - if path[0] == "MATLAB_BIN": - print("Searching for Matlab bin folder in local.cfg ...") - matlab_bin = path[1].rstrip('\r\n') - if matlab_bin == "": - raise ValueError("Could not find Matlab bin folder. Please add it to local.cfg") - print("Matlab found in " + matlab_bin) - - elif path[0] == "HEADER_PATH": - print("Searching for zmq.h in local.cfg ...") - header_path = path[1].rstrip('\r\n') - if header_path == "": - raise ValueError("Could not find zmq.h. Please add its path to local.cfg") - print("zmq.h found in " + header_path) - - elif path[0] == "LIB_PATH": - print("Searching for zmq library in local.cfg ...") - lib_path = path[1].rstrip('\r\n') - if lib_path == "": - raise ValueError("Could not find zmq library. Please add its path to local.cfg") - - print("zmq library found in " + lib_path) - - - -# Get the extension -if splatform == 'win32': - extcmd = '"' + matlab_bin + "\\mexext.bat" + '"' -else: - extcmd = matlab_bin + "/mexext" - -check_extension = subprocess.Popen(extcmd, stdout = subprocess.PIPE) -extension = check_extension.stdout.read() -extension = extension.decode('utf-8').rstrip('\r\n') - -print("Building messenger." + extension + " ...") - -# Build the mex file -if splatform == 'win32': - mex = "\\mex.bat" -else: - mex = "/mex" -make_cmd = '"' + matlab_bin + mex + '"' + " -O -I" + header_path + " -L" + lib_path + " -lzmq ./src/messenger.c" -print(make_cmd) -os.system(make_cmd) - -messenger_exe = 'messenger.%s'%extension -messenger_loc = os.path.join(messenger_dir, messenger_exe) - -shutil.move(messenger_exe, messenger_loc) +if __name__ == '__main__': + usage = 'Please specify a valid make target (Matlab or Octave)' + if len(sys.argv) < 1: + print(usage) + sys.exit() + if sys.argv[1].lower() == 'matlab': + build_matlab() + elif sys.argv[1].lower() == 'octave': + build_octave() + else: + print(usage) diff --git a/messenger/make_octave.py b/messenger/make_octave.py deleted file mode 100644 index 36ae996..0000000 --- a/messenger/make_octave.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/python -from __future__ import print_function -import os -from get_messenger_dir import get_messenger_dir -import shutil -import subprocess - -messenger_dir, splatform = get_messenger_dir() - -with open(os.path.join(messenger_dir, 'local_octave.cfg')) as fid: - lines = fid.readlines() - -cfg = {} -for line in lines: - name, path = line.split('=') - cfg[name.lower()] = path.strip() or '.' - -print("Building messenger.mex...") - -paths = "-L%(octave_lib)s -I%(octave_inc)s -L%(zmq_lib)s -I%(zmq_inc)s" % cfg -make_cmd = "mkoctfile --mex %s -lzmq ./src/messenger.c" % paths -print(make_cmd) -subprocess.check_output(make_cmd.split()) - -messenger_exe = 'messenger.mex' -messenger_loc = os.path.join(messenger_dir, messenger_exe) - -shutil.move(messenger_exe, messenger_loc) -os.remove('messenger.o') diff --git a/messenger/mexa64/local.cfg b/messenger/mexa64/local.cfg index bc419a2..ee0347e 100644 --- a/messenger/mexa64/local.cfg +++ b/messenger/mexa64/local.cfg @@ -1,3 +1,6 @@ MATLAB_BIN=/white/local/matlab/r2012b/bin -HEADER_PATH=/home/haoxingz/zmq/include -LIB_PATH=/home/haoxingz/zmq/lib +OCTAVE_INC=/usr/include +OCTAVE_LIB=/usr/lib/x86_64-linux-gnu/ +ZMQ_INC= +ZMQ_LIB= + diff --git a/messenger/mexa64/local_octave.cfg b/messenger/mexa64/local_octave.cfg deleted file mode 100644 index 76505f5..0000000 --- a/messenger/mexa64/local_octave.cfg +++ /dev/null @@ -1,4 +0,0 @@ -OCTAVE_INC=/usr/include -OCTAVE_LIB=/usr/lib/x86_64-linux-gnu/ -ZMQ_INC= -ZMQ_LIB= diff --git a/messenger/mexmaci64/local.cfg b/messenger/mexmaci64/local.cfg index b83ed1d..1de2d8b 100644 --- a/messenger/mexmaci64/local.cfg +++ b/messenger/mexmaci64/local.cfg @@ -1,3 +1,5 @@ MATLAB_BIN=/Applications/MATLAB_R2012b.app/bin -HEADER_PATH=/usr/include -LIB_PATH=/usr/local/lib +ZMQ_INC=/usr/include +ZMQ_LIB=/usr/lib/x86_64-linux-gnu/ +OCTAVE_INC= +OCTAVE_LIB= diff --git a/messenger/mexmaci64/local_octave.cfg b/messenger/mexmaci64/local_octave.cfg deleted file mode 100644 index 76505f5..0000000 --- a/messenger/mexmaci64/local_octave.cfg +++ /dev/null @@ -1,4 +0,0 @@ -OCTAVE_INC=/usr/include -OCTAVE_LIB=/usr/lib/x86_64-linux-gnu/ -ZMQ_INC= -ZMQ_LIB= diff --git a/messenger/mexw64/local.cfg b/messenger/mexw64/local.cfg index d8d9ff6..b6b5a9c 100644 --- a/messenger/mexw64/local.cfg +++ b/messenger/mexw64/local.cfg @@ -1,3 +1,5 @@ MATLAB_BIN=/Applications/MATLAB_R2012a.app/bin -HEADER_PATH=/usr/include -LIB_PATH=/usr/local/lib +OCTAVE_INC="C:\Octave\Octave-3.8.2\include\octave-3.8.2\octave" +OCTAVE_LIB="C:\Octave\Octave-3.8.2\lib\octave\3.8.2" +ZMQ_INC="C:\zeromq-4.0.5\include" +ZMQ_LIB="C:\zeromq-4.0.5\src\.libs" diff --git a/messenger/mexw64/local_octave.cfg b/messenger/mexw64/local_octave.cfg deleted file mode 100644 index d2aed82..0000000 --- a/messenger/mexw64/local_octave.cfg +++ /dev/null @@ -1,4 +0,0 @@ -OCTAVE_INC="C:\Octave\Octave-3.8.2\include\octave-3.8.2\octave" -OCTAVE_LIB="C:\Octave\Octave-3.8.2\lib\octave\3.8.2" -ZMQ_INC="C:\zeromq-4.0.5\include" -ZMQ_LIB="C:\zeromq-4.0.5\src\.libs" From 7f3f230b12af3aa3d7da857bd4fbb1ced090a3fa Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 16:37:55 -0600 Subject: [PATCH 191/308] Handle empty lines --- messenger/make.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/messenger/make.py b/messenger/make.py index 623e9bd..1546f12 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -38,6 +38,8 @@ def get_config(): cfg = {} for line in lines: + if '=' not in line: + continue name, path = line.split('=') cfg[name.lower()] = path.strip() or '.' return cfg From dc3a585e0f2a2507a0f5ab752b584971ff1bc483 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 16:38:40 -0600 Subject: [PATCH 192/308] Update setup --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index d9d7aa5..ae9622a 100755 --- a/setup.py +++ b/setup.py @@ -17,8 +17,8 @@ # Find the messenger binary file(s) and copy it to /matlab folder. -from messenger.get_messenger_dir import get_messenger_dir -messenger_dir, splatform = get_messenger_dir() +from messenger.make import get_messenger_dir +messenger_dir = get_messenger_dir() for f in glob.glob("./messenger/%s/messenger.*" % messenger_dir): shutil.copy(f, "./pymatbridge/matlab") From 50a637550e48cbe3b82d1b8f500557baf9ac8d6b Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 16:42:13 -0600 Subject: [PATCH 193/308] Simplifiy make logic --- messenger/make.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/messenger/make.py b/messenger/make.py index 1546f12..94a150f 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -91,8 +91,7 @@ def build_matlab(): usage = 'Please specify a valid make target (Matlab or Octave)' if len(sys.argv) < 1: print(usage) - sys.exit() - if sys.argv[1].lower() == 'matlab': + elif sys.argv[1].lower() == 'matlab': build_matlab() elif sys.argv[1].lower() == 'octave': build_octave() From f69e93c5f595cd59a2e59c3f0ae94a6060459f91 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 18:58:22 -0600 Subject: [PATCH 194/308] Add handling of dynamic methods --- pymatbridge/pymatbridge.py | 131 ++++++++++++++++++++++++++++++++++++- 1 file changed, 128 insertions(+), 3 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 7659a12..028aee7 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -29,6 +29,8 @@ import subprocess import sys import json +import types +import weakref from uuid import uuid4 from numpy import ndarray, generic, float64, frombuffer, asfortranarray @@ -263,25 +265,31 @@ def is_function_processor_working(self): def _json_response(self, **kwargs): return json.loads(self._response(**kwargs), object_hook=decode_pymat) - def run_func(self, func_path, func_args=None, nargout=1): + def run_func(self, func_path, *args, nargout=1, **kwargs): """Run a function in Matlab and return the result. Parameters ---------- func_path: str Name of function to run or a path to an m-file. - func_args: object + args: object Function args to send to the function. nargout: int Desired number of return arguments. + kwargs: + Keyword arguments are passed to Matlab in the form [key, val] so + that matlab.plot(x, y, '--', LineWidth=2) would be translated into + plot(x, y, '--', 'LineWidth', 2) Returns ------- Result dictionary with keys: 'message', 'result', and 'success' """ + args += tuple(item for pair in zip(kwargs.keys(), kwargs.values()) + for item in pair) return self._json_response(cmd='run_function', func_path=func_path, - func_args=func_args, + func_args=args, nargout=nargout) def run_code(self, code): @@ -323,6 +331,64 @@ def _set_sparse_variable(self, varname, value): self.run_code('clear {0}keys {0}values'.format(prefix)) return result + def __getattr__(self, name): + """If an attribute is not found, try to create a bound method""" + return self._bind_method(name) + + def _bind_method(self, name, unconditionally=False): + """Generate a Matlab function and bind it to the instance + + This is where the magic happens. When an unknown attribute of the + Matlab class is requested, it is assumed to be a call to a + Matlab function, and is generated and bound to the instance. + + This works because getattr() falls back to __getattr__ only if no + attributes of the requested name can be found through normal + routes (__getattribute__, __dict__, class tree). + + bind_method first checks whether the requested name is a callable + Matlab function before generating a binding. + + Parameters + ---------- + name : str + The name of the Matlab function to call + e.g. 'sqrt', 'sum', 'svd', etc + unconditionally : bool, optional + Bind the method without performing + checks. Used to bootstrap methods that are required and + know to exist + + Returns + ------- + Method + A reference to a newly bound Method instance if the + requested name is determined to be a callable function + + Raises + ------ + AttributeError: if the requested name is not a callable + Matlab function + + """ + # TODO: This does not work if the function is a mex function inside a folder of the same name + exists = self.run_func('exist', name)['result'] + if not unconditionally and not exists: + raise AttributeError("'Matlab' object has no attribute '%s'" % name) + + # create a new method instance + method_instance = Method(weakref.ref(self), name) + method_instance.__name__ = name + + # bind to the Matlab instance with a weakref (to avoid circular references) + if sys.version.startswith('3'): + method = types.MethodType(method_instance, weakref.ref(self)) + else: + method = types.MethodType(method_instance, weakref.ref(self), + _Session) + setattr(self, name, method) + return getattr(self, name) + class Matlab(_Session): def __init__(self, executable='matlab', socket_addr=None, @@ -433,3 +499,62 @@ def _preamble_code(self): def _execute_flag(self): return '--eval' + + +# ---------------------------------------------------------------------------- +# MATLAB METHOD +# ---------------------------------------------------------------------------- +class Method(object): + + def __init__(self, parent, name): + """An object representing a Matlab function + + Methods are dynamically bound to instances of Matlab objects and + represent a callable function in the Matlab subprocess. + + Args: + parent: A reference to the parent (Matlab instance) to which the + Method is being bound + name: The name of the Matlab function this represents + + """ + self.name = name + self._parent = parent + self.doc = None + + def __call__(self, unused_parent_weakref, *args, nargout=1, **kwargs): + """Call a function with the supplied arguments in the Matlab subprocess + + Passes parameters to `run_func`. + + """ + resp = self.parent.run_func(self.name, *args, **kwargs) + # return the result + return resp.get('result', None) + + @property + def parent(self): + """Get the actual parent from the stored weakref + + The parent (Matlab instance) is stored as a weak reference + to eliminate circular references from dynamically binding Methods + to Matlab. + + """ + parent = self._parent() + if parent is None: + raise AttributeError('Stale reference to attribute of non-existent Matlab object') + return parent + + @property + def __doc__(self): + """Fetch the docstring from Matlab + + Get the documentation for a Matlab function by calling Matlab's builtin + help() then returning it as the Python docstring. The result is cached + so Matlab is only ever polled on the first request + + """ + if self.doc is None: + self.doc = self.parent.help(self.name) + return self.doc From 823c131f56ef2c576537ea349e489b992cb6eb3e Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 18:58:33 -0600 Subject: [PATCH 195/308] Create new test_functions module and consolidate run_func tests --- pymatbridge/tests/test_functions.py | 59 +++++++++++++++++++++++++++++ pymatbridge/tests/test_run_code.py | 30 --------------- 2 files changed, 59 insertions(+), 30 deletions(-) create mode 100644 pymatbridge/tests/test_functions.py diff --git a/pymatbridge/tests/test_functions.py b/pymatbridge/tests/test_functions.py new file mode 100644 index 0000000..2dfdc1f --- /dev/null +++ b/pymatbridge/tests/test_functions.py @@ -0,0 +1,59 @@ +import pymatbridge as pymat +import random as rd +import numpy as np +import numpy.testing as npt +import test_utils as tu + + +class TestPrecision: + + # Start a Matlab session before running any tests + @classmethod + def setup_class(cls): + cls.mlab = tu.connect_to_matlab() + + # Tear down the Matlab session after running all the tests + @classmethod + def teardown_class(cls): + tu.stop_matlab(cls.mlab) + + def test_nargout(self): + res = self.mlab.run_func('svd', np.array([[1,2],[1,3]]), nargout=3) + U, S, V = res['result'] + npt.assert_almost_equal(U, np.array([[-0.57604844, -0.81741556], + [-0.81741556, 0.57604844]])) + + npt.assert_almost_equal(S, np.array([[ 3.86432845, 0.], + [ 0., 0.25877718]])) + + npt.assert_almost_equal(V, np.array([[-0.36059668, -0.93272184], + [-0.93272184, 0.36059668]])) + + res = self.mlab.run_func('svd', np.array([[1,2],[1,3]]), nargout=1) + s = res['result'] + npt.assert_almost_equal(s, [[ 3.86432845], [ 0.25877718]]) + + res = self.mlab.run_func('close', 'all', nargout=0) + assert res['result'] == [] + + def test_tuple_args(self): + res = self.mlab.run_func('ones', (1, 2)) + npt.assert_almost_equal(res['result'], [[1, 1]]) + + res = self.mlab.run_func('chol', + np.array([[2, 2], [1, 1]]), 'lower') + npt.assert_almost_equal(res['result'], + [[1.41421356, 0.], + [0.70710678, 0.70710678]]) + + def test_create_func(self): + test = self.mlab.ones(3) + npt.assert_array_equal(test, np.ones((3, 3))) + doc = self.mlab.zeros.__doc__ + assert 'zeros' in doc + + def test_pass_kwargs(self): + resp = self.mlab.run_func('plot', [1, 2, 3], Linewidth=3) + assert resp['success'] == 'true' + resp = self.mlab.plot([1, 2, 3], Linewidth=3) + assert resp is not None diff --git a/pymatbridge/tests/test_run_code.py b/pymatbridge/tests/test_run_code.py index 2b7714f..abd903e 100644 --- a/pymatbridge/tests/test_run_code.py +++ b/pymatbridge/tests/test_run_code.py @@ -64,33 +64,3 @@ def test_undefined_code(self): npt.assert_equal(message, "'this_is_nonsense' undefined near line 1 column 1") else: npt.assert_equal(message, "Undefined function or variable 'this_is_nonsense'.") - - - def test_nargout(self): - res = self.mlab.run_func('svd', np.array([[1,2],[1,3]]), nargout=3) - U, S, V = res['result'] - npt.assert_almost_equal(U, np.array([[-0.57604844, -0.81741556], - [-0.81741556, 0.57604844]])) - - npt.assert_almost_equal(S, np.array([[ 3.86432845, 0.], - [ 0., 0.25877718]])) - - npt.assert_almost_equal(V, np.array([[-0.36059668, -0.93272184], - [-0.93272184, 0.36059668]])) - - res = self.mlab.run_func('svd', np.array([[1,2],[1,3]]), nargout=1) - s = res['result'] - npt.assert_almost_equal(s, [[ 3.86432845], [ 0.25877718]]) - - res = self.mlab.run_func('close', 'all', nargout=0) - assert res['result'] == [] - - def test_tuple_args(self): - res = self.mlab.run_func('ones', (1, 2)) - npt.assert_almost_equal(res['result'], [[1, 1]]) - - res = self.mlab.run_func('chol', - (np.array([[2, 2], [1, 1]]), 'lower')) - npt.assert_almost_equal(res['result'], - [[1.41421356, 0.], - [0.70710678, 0.70710678]]) From 8eab630f2716cad2a85e8e70f356cd3b043c1244 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 18:59:14 -0600 Subject: [PATCH 196/308] Add error handling for dumping json data --- pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m index 8f83aac..c085226 100644 --- a/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m +++ b/pymatbridge/matlab/util/json_v0.2.2/json/json_dump.m @@ -157,7 +157,11 @@ obj = javaObject('org.json.JSONObject'); keys = fieldnames(value); for i = 1:length(keys) - obj.put(keys{i},dump_data_(value.(keys{i}), options)); + try + obj.put(keys{i},dump_data_(value.(keys{i}), options)); + catch ME + obj.put(keys{i}, dump_data_(ME.message, options)) + end end else error('json:typeError', 'Unsupported data type: %s', class(value)); From 135cc470cf25f47d789f84a46b4748c5515e8720 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 19:05:45 -0600 Subject: [PATCH 197/308] Fix handling of nargout for python 2 --- pymatbridge/pymatbridge.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 028aee7..33de8ee 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -265,7 +265,7 @@ def is_function_processor_working(self): def _json_response(self, **kwargs): return json.loads(self._response(**kwargs), object_hook=decode_pymat) - def run_func(self, func_path, *args, nargout=1, **kwargs): + def run_func(self, func_path, *args, **kwargs): """Run a function in Matlab and return the result. Parameters @@ -285,6 +285,7 @@ def run_func(self, func_path, *args, nargout=1, **kwargs): ------- Result dictionary with keys: 'message', 'result', and 'success' """ + nargout = kwargs.pop('nargout', 1) args += tuple(item for pair in zip(kwargs.keys(), kwargs.values()) for item in pair) return self._json_response(cmd='run_function', @@ -522,7 +523,7 @@ def __init__(self, parent, name): self._parent = parent self.doc = None - def __call__(self, unused_parent_weakref, *args, nargout=1, **kwargs): + def __call__(self, unused_parent_weakref, *args, **kwargs): """Call a function with the supplied arguments in the Matlab subprocess Passes parameters to `run_func`. From 7fabbaca05e39b8cf2ba8ce245662aeb1545ee1d Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 19:11:53 -0600 Subject: [PATCH 198/308] Add error handling for dynamic methods --- pymatbridge/pymatbridge.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 33de8ee..b612f7b 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -530,6 +530,8 @@ def __call__(self, unused_parent_weakref, *args, **kwargs): """ resp = self.parent.run_func(self.name, *args, **kwargs) + if not resp['success'] == 'true': + raise ValueError(resp['message']) # return the result return resp.get('result', None) From aad256a2df0c87b432cc9b1e5dc22d81dd040730 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 19:15:19 -0600 Subject: [PATCH 199/308] Fix make file interface --- messenger/make.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/messenger/make.py b/messenger/make.py index 94a150f..4b69beb 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -89,7 +89,7 @@ def build_matlab(): if __name__ == '__main__': usage = 'Please specify a valid make target (Matlab or Octave)' - if len(sys.argv) < 1: + if len(sys.argv) < 2: print(usage) elif sys.argv[1].lower() == 'matlab': build_matlab() From 6cb5bf8ddac8f7b237e6ef15a89ff95e5743eba4 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 19:15:28 -0600 Subject: [PATCH 200/308] Remove unused get_messenger_dir --- messenger/get_messenger_dir.py | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 messenger/get_messenger_dir.py diff --git a/messenger/get_messenger_dir.py b/messenger/get_messenger_dir.py deleted file mode 100644 index 1a77024..0000000 --- a/messenger/get_messenger_dir.py +++ /dev/null @@ -1,26 +0,0 @@ -import sys -import platform - - -def get_messenger_dir(): - # Check the system platform first - splatform = sys.platform - - if splatform.startswith('linux'): - messenger_dir = 'mexa64' - elif splatform.startswith('darwin'): - messenger_dir = 'mexmaci64' - elif splatform.startswith('win32'): - if splatform == "win32": - # We have a win64 messenger, so we need to figure out if this is 32 - # or 64 bit Windows: - if not platform.machine().endswith('64'): - raise ValueError("pymatbridge does not work on win32") - - # We further need to differniate 32 from 64 bit: - maxint = sys.maxsize - if maxint == 9223372036854775807: - messenger_dir = 'mexw64' - elif maxint == 2147483647: - messenger_dir = 'mexw32' - return messenger_dir, splatform From fb35bbf5f98d3da23d6ef91e320ecd26191a8449 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 19:23:08 -0600 Subject: [PATCH 201/308] Fix handling of matlab make command --- messenger/make.py | 8 ++++++-- messenger/mexa64/local.cfg | 2 +- messenger/mexa64/messenger.mexa64 | Bin 12956 -> 13090 bytes 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/messenger/make.py b/messenger/make.py index 4b69beb..a9b8cf0 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -54,7 +54,11 @@ def do_build(make_cmd, messenger_exe): messenger_loc = os.path.join(messenger_dir, messenger_exe) shutil.move(messenger_exe, messenger_loc) - os.remove('messenger.o') + + try: + os.remove('messenger.o') + except OSError: + os.remove('src/messenger.o') def build_octave(): @@ -83,7 +87,7 @@ def build_matlab(): else: mex = matlab_bin + "/mex" paths = "-L%(zmq_lib)s -I%(zmq_inc)s" % cfg - make_cmd = '"%s" -O %s -lzmq ./src/messenger.c' % (mex, paths) + make_cmd = '%s -O %s -lzmq ./src/messenger.c' % (mex, paths) do_build(make_cmd, 'messenger.%s' % extension) diff --git a/messenger/mexa64/local.cfg b/messenger/mexa64/local.cfg index ee0347e..54ff2f8 100644 --- a/messenger/mexa64/local.cfg +++ b/messenger/mexa64/local.cfg @@ -1,4 +1,4 @@ -MATLAB_BIN=/white/local/matlab/r2012b/bin +MATLAB_BIN=/home/silvester/matlab2014b/bin/ OCTAVE_INC=/usr/include OCTAVE_LIB=/usr/lib/x86_64-linux-gnu/ ZMQ_INC= diff --git a/messenger/mexa64/messenger.mexa64 b/messenger/mexa64/messenger.mexa64 index eaf2c7ebdf218596b1c253950ed53ad0fc8be199..80abad4d21b2844053b8b3f58e9c74ed1611a782 100755 GIT binary patch literal 13090 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

T;|c29-OM{UQb4sP3OkzsM7-T@O`Ej zpDg(PQH)O!d|xQWr#kz7F@A*LeY_Yi&F3SzA3HqnyT$r7PJU=Hex%@ivKXHsc>gQL zYn^<`V!Tf9epQSg<-C6s<1+>CGsXDP*f%scBA~r{0P)X8MMlejS6ur za2lWGNl$ExS6A=g_C3soOD!rq9br%wX59b2wR$NC4LITOWoCNHG zbUl*P`(nu+Bc?~JWGby2nL&X!-hr5j428hi=bp0&p35jv-f+}@lh*NeoEj4LyLTiL zj}O7b#p(3QUZm_NvauSNJx2+0xw(70RFQ%+!*(1AdCqU=}I6#msi!f3)5}5&^ zFYQ=yQLsZ_(bl%QwM*{`UewX5tBeO7*}m|CbZEz8B%Rdzkz#?wXyi3Rh*x|&joKB6 zK#w9$x`b}Z!vOu_%a;c`+gpU}jw_A1C?VOKm|Z5PnsSFJG1^X`uAJ!XWK91zvb&p` y-Ra6s+BC%>(_3U(bxFcBr(vtCYSNbJEHZw3N|1T&N!@m*b$ipp-MQp4Rs3IlGJjA2 literal 12956 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 Y&NZ2^(!Hr;{nDxn^T?~K?TOL<1sTkL82|tP From a58823136d9ca17db70b880c71fa2426f64dd7b7 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 19:26:24 -0600 Subject: [PATCH 202/308] Use shlex to split the command --- messenger/make.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/messenger/make.py b/messenger/make.py index a9b8cf0..ed3decc 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -3,6 +3,7 @@ import os import platform import sys +import shlex import shutil import subprocess @@ -49,7 +50,7 @@ def do_build(make_cmd, messenger_exe): print('Building %s...' % messenger_exe) print(make_cmd) messenger_dir = get_messenger_dir() - subprocess.check_output(make_cmd.split()) + subprocess.check_output(shlex.split(make_cmd)) messenger_loc = os.path.join(messenger_dir, messenger_exe) @@ -60,7 +61,7 @@ def do_build(make_cmd, messenger_exe): except OSError: os.remove('src/messenger.o') - + def build_octave(): paths = "-L%(octave_lib)s -I%(octave_inc)s -L%(zmq_lib)s -I%(zmq_inc)s" paths = paths % get_config() From 7ff2db8735282aa74d2970f62f29ea105c549973 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 19:33:25 -0600 Subject: [PATCH 203/308] Fix handling of object file --- messenger/make.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/messenger/make.py b/messenger/make.py index ed3decc..d257f78 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -56,12 +56,10 @@ def do_build(make_cmd, messenger_exe): shutil.move(messenger_exe, messenger_loc) - try: + if os.path.exists('messenger.o'): os.remove('messenger.o') - except OSError: - os.remove('src/messenger.o') - + def build_octave(): paths = "-L%(octave_lib)s -I%(octave_inc)s -L%(zmq_lib)s -I%(zmq_inc)s" paths = paths % get_config() From 2dd1f618932a004bd8c5a681a6072224b7c843a4 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 19:50:25 -0600 Subject: [PATCH 204/308] Clean up test_function --- pymatbridge/tests/test_functions.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pymatbridge/tests/test_functions.py b/pymatbridge/tests/test_functions.py index 2dfdc1f..4a52b60 100644 --- a/pymatbridge/tests/test_functions.py +++ b/pymatbridge/tests/test_functions.py @@ -1,11 +1,9 @@ -import pymatbridge as pymat -import random as rd import numpy as np import numpy.testing as npt import test_utils as tu -class TestPrecision: +class TestFunctions(object): # Start a Matlab session before running any tests @classmethod From b974f9206a49f79e4253aa0f7b054a6ab9efeec8 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 16 Feb 2015 20:53:41 -0600 Subject: [PATCH 205/308] Rename to MatlabFunction, fix docstring, and better check for exist --- pymatbridge/pymatbridge.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index b612f7b..fec7fe3 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -362,8 +362,8 @@ def _bind_method(self, name, unconditionally=False): Returns ------- - Method - A reference to a newly bound Method instance if the + MatlabFunction + A reference to a newly bound MatlabFunction instance if the requested name is determined to be a callable function Raises @@ -373,12 +373,12 @@ def _bind_method(self, name, unconditionally=False): """ # TODO: This does not work if the function is a mex function inside a folder of the same name - exists = self.run_func('exist', name)['result'] + exists = self.run_func('exist', name)['result'] in [2, 3, 5] if not unconditionally and not exists: raise AttributeError("'Matlab' object has no attribute '%s'" % name) # create a new method instance - method_instance = Method(weakref.ref(self), name) + method_instance = MatlabFunction(weakref.ref(self), name) method_instance.__name__ = name # bind to the Matlab instance with a weakref (to avoid circular references) @@ -502,10 +502,7 @@ def _execute_flag(self): return '--eval' -# ---------------------------------------------------------------------------- -# MATLAB METHOD -# ---------------------------------------------------------------------------- -class Method(object): +class MatlabFunction(object): def __init__(self, parent, name): """An object representing a Matlab function @@ -513,11 +510,13 @@ def __init__(self, parent, name): Methods are dynamically bound to instances of Matlab objects and represent a callable function in the Matlab subprocess. - Args: - parent: A reference to the parent (Matlab instance) to which the - Method is being bound - name: The name of the Matlab function this represents - + Parameters + ---------- + parent: Matlab instance + A reference to the parent (Matlab instance) to which the + MatlabFunction is being bound + name: str + The name of the Matlab function this represents """ self.name = name self._parent = parent From 93b9d834b561ba88c69990d5b7c8795a0edf8ec3 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 17 Feb 2015 14:22:15 -0600 Subject: [PATCH 206/308] Return the full structure in the dynamic functions --- pymatbridge/pymatbridge.py | 8 ++------ pymatbridge/tests/test_functions.py | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index fec7fe3..2155be6 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -528,11 +528,7 @@ def __call__(self, unused_parent_weakref, *args, **kwargs): Passes parameters to `run_func`. """ - resp = self.parent.run_func(self.name, *args, **kwargs) - if not resp['success'] == 'true': - raise ValueError(resp['message']) - # return the result - return resp.get('result', None) + return self.parent.run_func(self.name, *args, **kwargs) @property def parent(self): @@ -558,5 +554,5 @@ def __doc__(self): """ if self.doc is None: - self.doc = self.parent.help(self.name) + self.doc = self.parent.help(self.name)['result'] return self.doc diff --git a/pymatbridge/tests/test_functions.py b/pymatbridge/tests/test_functions.py index 4a52b60..4fed51c 100644 --- a/pymatbridge/tests/test_functions.py +++ b/pymatbridge/tests/test_functions.py @@ -46,7 +46,7 @@ def test_tuple_args(self): def test_create_func(self): test = self.mlab.ones(3) - npt.assert_array_equal(test, np.ones((3, 3))) + npt.assert_array_equal(test['result'], np.ones((3, 3))) doc = self.mlab.zeros.__doc__ assert 'zeros' in doc @@ -54,4 +54,4 @@ def test_pass_kwargs(self): resp = self.mlab.run_func('plot', [1, 2, 3], Linewidth=3) assert resp['success'] == 'true' resp = self.mlab.plot([1, 2, 3], Linewidth=3) - assert resp is not None + assert resp['result'] is not None From a176ba95714e7006d970eea4d589cd0a61429a12 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 17 Feb 2015 14:27:10 -0600 Subject: [PATCH 207/308] Update parameter name and docstring --- pymatbridge/pymatbridge.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 2155be6..c69120e 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -265,16 +265,16 @@ def is_function_processor_working(self): def _json_response(self, **kwargs): return json.loads(self._response(**kwargs), object_hook=decode_pymat) - def run_func(self, func_path, *args, **kwargs): + def run_func(self, func_path, *func_args, **kwargs): """Run a function in Matlab and return the result. Parameters ---------- func_path: str Name of function to run or a path to an m-file. - args: object + func_args: object, optional Function args to send to the function. - nargout: int + nargout: int, optional Desired number of return arguments. kwargs: Keyword arguments are passed to Matlab in the form [key, val] so @@ -286,11 +286,11 @@ def run_func(self, func_path, *args, **kwargs): Result dictionary with keys: 'message', 'result', and 'success' """ nargout = kwargs.pop('nargout', 1) - args += tuple(item for pair in zip(kwargs.keys(), kwargs.values()) - for item in pair) + func_args += tuple(item for pair in zip(kwargs.keys(), kwargs.values()) + for item in pair) return self._json_response(cmd='run_function', func_path=func_path, - func_args=args, + func_args=func_args, nargout=nargout) def run_code(self, code): From e4f8d0817ed2fe1029c973a994b6394cbc80c35c Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 17 Feb 2015 19:10:22 -0600 Subject: [PATCH 208/308] Streamline eval functions --- pymatbridge/matlab/matlabserver.m | 6 +-- pymatbridge/matlab/util/pymat_eval.m | 32 ++++++---------- pymatbridge/matlab/util/pymat_feval.m | 54 --------------------------- pymatbridge/pymatbridge.py | 9 +++-- pymatbridge/tests/test_functions.py | 2 + 5 files changed, 21 insertions(+), 82 deletions(-) delete mode 100644 pymatbridge/matlab/util/pymat_feval.m diff --git a/pymatbridge/matlab/matlabserver.m b/pymatbridge/matlab/matlabserver.m index 8fa7507..ca1d60b 100644 --- a/pymatbridge/matlab/matlabserver.m +++ b/pymatbridge/matlab/matlabserver.m @@ -19,11 +19,7 @@ function matlabserver(socket_address) clear mex; break; - case {'run_function'} - resp = pymat_feval(req); - messenger('respond', resp); - - case {'run_code'} + case {'run'} resp = pymat_eval(req); messenger('respond', resp); diff --git a/pymatbridge/matlab/util/pymat_eval.m b/pymatbridge/matlab/util/pymat_eval.m index 64d081b..8ccf280 100644 --- a/pymatbridge/matlab/util/pymat_eval.m +++ b/pymatbridge/matlab/util/pymat_eval.m @@ -12,30 +12,24 @@ % Based on Max Jaderberg's web_feval response.success = 'false'; -field_names = fieldnames(req); - response.content = ''; -code_check = false; -if size(field_names) - if isfield(req, 'code') - code_check = true; - end -end - -if ~code_check - response.message = 'No code provided as POST parameter'; - json_response = json_dump(response); - return; -end - -code = req.code; - try % tempname is less likely to get bonked by another process. diary_file = [tempname() '_diary.txt']; diary(diary_file); - evalin('base', code); + if strcmp(req.type, 'eval') + evalin('base', req.code); + response.content.code = code; + elseif strcmp(req.type, 'feval') + [resp{1:req.nargout}] = run_dot_m(req.func_path, req.func_args, ... + req.nargout); + if req.nargout == 1 + response.result = resp{1}; + else + response.result = resp; + end + end diary('off'); datadir = fullfile(tempdir(),'MatlabData'); @@ -68,8 +62,6 @@ response.content.stdout = ME.message; end -response.content.code = code; - json_response = json_dump(response); end %function diff --git a/pymatbridge/matlab/util/pymat_feval.m b/pymatbridge/matlab/util/pymat_feval.m deleted file mode 100644 index 8aef44b..0000000 --- a/pymatbridge/matlab/util/pymat_feval.m +++ /dev/null @@ -1,54 +0,0 @@ -% Max Jaderberg 2011 - -function json_response = pymat_feval(req) - - response.success = 'false'; - field_names = fieldnames(req); - - response.result = ''; - - func_path_check = false; - arguments_check = false; - if size(field_names) - if isfield(req, 'func_path') - func_path_check = true; - end - if isfield(req, 'func_args') - arguments_check = true; - end - end - - if ~func_path_check - response.message = 'No function given as func_path POST parameter'; - json_response = json_dump(response); - return - end - - func_path = req.func_path; - if arguments_check - arguments = req.func_args; - else - arguments = ''; - end - - try - [resp{1:req.nargout}] = run_dot_m(func_path, arguments, req.nargout); - catch ME - response.message = ME.message; - json_response = json_dump(response); - return - end - - if req.nargout == 1 - response.result = resp{1}; - else - response.result = resp; - end - response.success = 'true'; - response.message = 'Successfully completed request'; - - json_response = json_dump(response); - - return - -end diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index c69120e..5432df3 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -288,10 +288,13 @@ def run_func(self, func_path, *func_args, **kwargs): nargout = kwargs.pop('nargout', 1) func_args += tuple(item for pair in zip(kwargs.keys(), kwargs.values()) for item in pair) - return self._json_response(cmd='run_function', + if not func_args: + func_args = '' + return self._json_response(cmd='run', func_path=func_path, func_args=func_args, - nargout=nargout) + nargout=nargout, + type='feval') def run_code(self, code): """Run some code in Matlab command line provide by a string @@ -301,7 +304,7 @@ def run_code(self, code): code : str Code to send for evaluation. """ - return self._json_response(cmd='run_code', code=code) + return self._json_response(cmd='run', code=code, type='eval') def get_variable(self, varname, default=None): response = self._json_response(cmd='get_var', varname=varname) diff --git a/pymatbridge/tests/test_functions.py b/pymatbridge/tests/test_functions.py index 4fed51c..6942e1b 100644 --- a/pymatbridge/tests/test_functions.py +++ b/pymatbridge/tests/test_functions.py @@ -53,5 +53,7 @@ def test_create_func(self): def test_pass_kwargs(self): resp = self.mlab.run_func('plot', [1, 2, 3], Linewidth=3) assert resp['success'] == 'true' + assert len(resp['content']['figures']) resp = self.mlab.plot([1, 2, 3], Linewidth=3) assert resp['result'] is not None + assert len(resp['content']['figures']) From 5ddd221dbe378a871c1fd60d7d6cd66ac317ba68 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 17 Feb 2015 19:12:28 -0600 Subject: [PATCH 209/308] Simplify func_args handling --- pymatbridge/pymatbridge.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 5432df3..1f29574 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -288,11 +288,9 @@ def run_func(self, func_path, *func_args, **kwargs): nargout = kwargs.pop('nargout', 1) func_args += tuple(item for pair in zip(kwargs.keys(), kwargs.values()) for item in pair) - if not func_args: - func_args = '' return self._json_response(cmd='run', func_path=func_path, - func_args=func_args, + func_args=func_args or '', nargout=nargout, type='feval') From b4138b029a129313cdc6f976b3bb2dd813c8870d Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 17 Feb 2015 19:14:27 -0600 Subject: [PATCH 210/308] Clean up eval function --- pymatbridge/matlab/util/pymat_eval.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pymatbridge/matlab/util/pymat_eval.m b/pymatbridge/matlab/util/pymat_eval.m index 8ccf280..9c01518 100644 --- a/pymatbridge/matlab/util/pymat_eval.m +++ b/pymatbridge/matlab/util/pymat_eval.m @@ -19,9 +19,10 @@ diary_file = [tempname() '_diary.txt']; diary(diary_file); if strcmp(req.type, 'eval') + response.content.code = req.code; evalin('base', req.code); - response.content.code = code; elseif strcmp(req.type, 'feval') + response.result = ''; [resp{1:req.nargout}] = run_dot_m(req.func_path, req.func_args, ... req.nargout); if req.nargout == 1 From bc26f327d090acff4818b44178b7f0e4dfd77176 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 17 Feb 2015 19:26:30 -0600 Subject: [PATCH 211/308] Simplify command names --- pymatbridge/matlab/matlabserver.m | 2 +- pymatbridge/matlab/util/pymat_eval.m | 4 ++-- pymatbridge/pymatbridge.py | 7 +++---- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/pymatbridge/matlab/matlabserver.m b/pymatbridge/matlab/matlabserver.m index ca1d60b..17c05ea 100644 --- a/pymatbridge/matlab/matlabserver.m +++ b/pymatbridge/matlab/matlabserver.m @@ -19,7 +19,7 @@ function matlabserver(socket_address) clear mex; break; - case {'run'} + case {'eval, feval'} resp = pymat_eval(req); messenger('respond', resp); diff --git a/pymatbridge/matlab/util/pymat_eval.m b/pymatbridge/matlab/util/pymat_eval.m index 9c01518..6c18be4 100644 --- a/pymatbridge/matlab/util/pymat_eval.m +++ b/pymatbridge/matlab/util/pymat_eval.m @@ -18,10 +18,10 @@ % tempname is less likely to get bonked by another process. diary_file = [tempname() '_diary.txt']; diary(diary_file); - if strcmp(req.type, 'eval') + if strcmp(req.cmd, 'eval') response.content.code = req.code; evalin('base', req.code); - elseif strcmp(req.type, 'feval') + elseif strcmp(req.cmd, 'feval') response.result = ''; [resp{1:req.nargout}] = run_dot_m(req.func_path, req.func_args, ... req.nargout); diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 1f29574..c0a5763 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -288,11 +288,10 @@ def run_func(self, func_path, *func_args, **kwargs): nargout = kwargs.pop('nargout', 1) func_args += tuple(item for pair in zip(kwargs.keys(), kwargs.values()) for item in pair) - return self._json_response(cmd='run', + return self._json_response(cmd='feval', func_path=func_path, func_args=func_args or '', - nargout=nargout, - type='feval') + nargout=nargout) def run_code(self, code): """Run some code in Matlab command line provide by a string @@ -302,7 +301,7 @@ def run_code(self, code): code : str Code to send for evaluation. """ - return self._json_response(cmd='run', code=code, type='eval') + return self._json_response(cmd='eval', code=code) def get_variable(self, varname, default=None): response = self._json_response(cmd='get_var', varname=varname) From 53ae6187abba918f3cc3df545855b9aafe1e600e Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 17 Feb 2015 19:43:26 -0600 Subject: [PATCH 212/308] Fix matlabserver error --- pymatbridge/matlab/matlabserver.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/matlab/matlabserver.m b/pymatbridge/matlab/matlabserver.m index 17c05ea..04906b6 100644 --- a/pymatbridge/matlab/matlabserver.m +++ b/pymatbridge/matlab/matlabserver.m @@ -19,7 +19,7 @@ function matlabserver(socket_address) clear mex; break; - case {'eval, feval'} + case {'eval', 'feval'} resp = pymat_eval(req); messenger('respond', resp); From 8b31f8e2f326fcb9baa3df3f94a75d9d84712680 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 17 Feb 2015 21:36:15 -0600 Subject: [PATCH 213/308] Streamlime get_variable --- pymatbridge/matlab/matlabserver.m | 4 -- pymatbridge/matlab/util/pymat_get_variable.m | 43 -------------------- pymatbridge/pymatbridge.py | 6 ++- 3 files changed, 4 insertions(+), 49 deletions(-) delete mode 100644 pymatbridge/matlab/util/pymat_get_variable.m diff --git a/pymatbridge/matlab/matlabserver.m b/pymatbridge/matlab/matlabserver.m index 04906b6..de5cd21 100644 --- a/pymatbridge/matlab/matlabserver.m +++ b/pymatbridge/matlab/matlabserver.m @@ -23,10 +23,6 @@ function matlabserver(socket_address) resp = pymat_eval(req); messenger('respond', resp); - case {'get_var'} - resp = pymat_get_variable(req); - messenger('respond', resp); - otherwise messenger('respond', 'i dont know what you want'); end diff --git a/pymatbridge/matlab/util/pymat_get_variable.m b/pymatbridge/matlab/util/pymat_get_variable.m deleted file mode 100644 index 1b22952..0000000 --- a/pymatbridge/matlab/util/pymat_get_variable.m +++ /dev/null @@ -1,43 +0,0 @@ -function json_response = pymat_get_variable(req) -% Reach into the current namespace get a variable in json format that can -% be returned as part of a response - -response.success = 'false'; - -field_names = fieldnames(req); - -response.content = ''; - -varname_check = false; -if size(field_names) - if isfield(req, 'varname') - varname_check = true; - end -end - -if ~varname_check - response.message = 'No variable name provided as input argument'; - json_response = json_dump(response); - return -end - - -varname = req.varname; - - -% if the var doesn't exist in the workspace, inform adequately -expr = strcat('exist(''', varname, ''',''var'')'); -var_exists = evalin('base', expr); -if ~var_exists - response.exists = false; - response.var = ''; -else - response.exists = true; - response.var = evalin('base', varname); - response.success = 'true'; -end - -json_response = json_dump(response); - -return -end diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index c0a5763..d9bb936 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -304,8 +304,10 @@ def run_code(self, code): return self._json_response(cmd='eval', code=code) def get_variable(self, varname, default=None): - response = self._json_response(cmd='get_var', varname=varname) - return response['var'] if response['exists'] else default + response = self._json_response(cmd='feval', func_path='evalin', + func_args=('base', varname), + nargout=1) + return response['result'] if response['success'] == 'true' else default def set_variable(self, varname, value): if isinstance(value, spmatrix): From abae6b8ddfa1f09e43aaa7562662a53117ccbf83 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 17 Feb 2015 21:45:05 -0600 Subject: [PATCH 214/308] Unify handling of set_variable --- pymatbridge/matlab/util/pymat_set_variable.m | 7 ------- pymatbridge/pymatbridge.py | 9 +++------ 2 files changed, 3 insertions(+), 13 deletions(-) delete mode 100644 pymatbridge/matlab/util/pymat_set_variable.m diff --git a/pymatbridge/matlab/util/pymat_set_variable.m b/pymatbridge/matlab/util/pymat_set_variable.m deleted file mode 100644 index e3936f4..0000000 --- a/pymatbridge/matlab/util/pymat_set_variable.m +++ /dev/null @@ -1,7 +0,0 @@ -function res = pymat_set_variable(args) -% Setup a variable in Matlab workspace - - assignin('base', args.name, args.value); - res = 1; - -end %function diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index d9bb936..d28786c 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -304,16 +304,13 @@ def run_code(self, code): return self._json_response(cmd='eval', code=code) def get_variable(self, varname, default=None): - response = self._json_response(cmd='feval', func_path='evalin', - func_args=('base', varname), - nargout=1) - return response['result'] if response['success'] == 'true' else default + resp = self.run_func('evalin', 'base', varname) + return resp['result'] if resp['success'] == 'true' else default def set_variable(self, varname, value): if isinstance(value, spmatrix): return self._set_sparse_variable(varname, value) - return self.run_func('pymat_set_variable.m', - {'name': varname, 'value': value}) + return self.run_func('assignin', 'base', varname, value, nargout=0) def set_default_plot_size(self, width=512, height=384): code = "set(0, 'defaultfigurepaperunits', 'inches');\n" From 8fd9f8f042eded46892a28c2ef8172e6fcafac61 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 17 Feb 2015 21:58:33 -0600 Subject: [PATCH 215/308] Use booleans for success attribute --- pymatbridge/matlab/util/pymat_eval.m | 8 +++----- pymatbridge/matlab_magic.py | 4 ++-- pymatbridge/pymatbridge.py | 6 +++--- pymatbridge/tests/test_functions.py | 2 +- pymatbridge/tests/test_run_code.py | 2 +- 5 files changed, 10 insertions(+), 12 deletions(-) diff --git a/pymatbridge/matlab/util/pymat_eval.m b/pymatbridge/matlab/util/pymat_eval.m index 6c18be4..681a2ff 100644 --- a/pymatbridge/matlab/util/pymat_eval.m +++ b/pymatbridge/matlab/util/pymat_eval.m @@ -11,7 +11,7 @@ % % Based on Max Jaderberg's web_feval -response.success = 'false'; +response.success = true; response.content = ''; try @@ -40,8 +40,6 @@ end fig_files = make_figs(datadir); - - response.success = 'true'; response.content.figures = fig_files; % this will not work on Windows: @@ -53,13 +51,13 @@ fclose(FID); response.content.stdout = stdout; else - response.success = 'false'; + response.success = false; response.content.stdout = sprintf('could not open %s for read',diary_file); end delete(diary_file) catch ME diary('off'); - response.success = 'false'; + response.success = false; response.content.stdout = ME.message; end diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index f8b441e..17debc8 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -93,7 +93,7 @@ def eval(self, line): """ run_dict = self.Matlab.run_code(line) - if run_dict['success'] == 'false': + if not run_dict['success']: raise MatlabInterperterError(line, run_dict['content']['stdout']) # This is the matlab stdout: @@ -105,7 +105,7 @@ def set_matlab_var(self, name, value): """ run_dict = self.Matlab.set_variable(name, value) - if run_dict['success'] == 'false': + if not run_dict['success']: raise MatlabInterperterError(line, run_dict['content']['stdout']) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index d28786c..94e9eb3 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -15,7 +15,7 @@ .MATLAB started and connected! True >>> m.run_code('a=1;') -{'content': {'stdout': '', 'datadir': '/private/tmp/MatlabData/', 'code': 'a=1;', 'figures': []}, 'success': 'true'} +{'content': {'stdout': '', 'datadir': '/private/tmp/MatlabData/', 'code': 'a=1;', 'figures': []}, 'success': True} >>> m.get_variable('a') 1 @@ -260,7 +260,7 @@ def is_connected(self): def is_function_processor_working(self): result = self.run_func('%s/usrprog/test_sum.m' % MATLAB_FOLDER, {'echo': '%s: Function processor is working!' % self._program_name()}) - return result['success'] == 'true' + return result['success'] def _json_response(self, **kwargs): return json.loads(self._response(**kwargs), object_hook=decode_pymat) @@ -305,7 +305,7 @@ def run_code(self, code): def get_variable(self, varname, default=None): resp = self.run_func('evalin', 'base', varname) - return resp['result'] if resp['success'] == 'true' else default + return resp['result'] if resp['success'] else default def set_variable(self, varname, value): if isinstance(value, spmatrix): diff --git a/pymatbridge/tests/test_functions.py b/pymatbridge/tests/test_functions.py index 6942e1b..e0367fc 100644 --- a/pymatbridge/tests/test_functions.py +++ b/pymatbridge/tests/test_functions.py @@ -52,7 +52,7 @@ def test_create_func(self): def test_pass_kwargs(self): resp = self.mlab.run_func('plot', [1, 2, 3], Linewidth=3) - assert resp['success'] == 'true' + assert resp['success'] assert len(resp['content']['figures']) resp = self.mlab.plot([1, 2, 3], Linewidth=3) assert resp['result'] is not None diff --git a/pymatbridge/tests/test_run_code.py b/pymatbridge/tests/test_run_code.py index abd903e..816f3b2 100644 --- a/pymatbridge/tests/test_run_code.py +++ b/pymatbridge/tests/test_run_code.py @@ -59,7 +59,7 @@ def test_undefined_code(self): success = self.mlab.run_code("this_is_nonsense")['success'] message = self.mlab.run_code("this_is_nonsense")['content']['stdout'] - npt.assert_equal(success, "false") + assert not success if tu.on_octave(): npt.assert_equal(message, "'this_is_nonsense' undefined near line 1 column 1") else: From 376f6205ffc368ca24930f03967775068502cccb Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 17 Feb 2015 22:31:10 -0600 Subject: [PATCH 216/308] Add windows Octave mex file --- messenger/mexw64/messenger.mex | Bin 0 -> 97480 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 messenger/mexw64/messenger.mex diff --git a/messenger/mexw64/messenger.mex b/messenger/mexw64/messenger.mex new file mode 100644 index 0000000000000000000000000000000000000000..59fb4e06814eb16737fa9b854202402adea502a7 GIT binary patch literal 97480 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 O>-w63uNnByX5btCVAN#* literal 8704 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 LUZ1v4Tm=3HqKR~- From 1116c28bcb1f8aa32e9413b391df5a60483720cf Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Tue, 10 Mar 2015 11:53:32 -0700 Subject: [PATCH 244/308] Add build instructions for messenger.mexw64 This fixes #69 and documents what was done in #161 --- messenger/mexw64/README.md | 41 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 messenger/mexw64/README.md diff --git a/messenger/mexw64/README.md b/messenger/mexw64/README.md new file mode 100644 index 0000000..47100e8 --- /dev/null +++ b/messenger/mexw64/README.md @@ -0,0 +1,41 @@ +Dynamically linked building instructions +---------------------------------------- + +1) Install zeromq from the website: http://zeromq.org/distro:microsoft-windows + +2) Rename one of the lib/libzmq-*.lib files to libzmq.lib in the ZeroMQ + installation directory + +3) Add the ZeroMQ bin directory to your path. + +4) Edit the messenger/mexw64/local.cfg file in messenger to point to the + zeromq install directory (you will need to update both ZMQ_INC and ZMQ_LIB). + Also ensure the MATLAB directory is correct. + +5) Run ```make.py matlab``` in the messenger directory. This should build + messenger.mexw64 + +Statically linked building instructions +--------------------------------------- + +A statically linked library has the advantage of not requiring libzmq.dll to +be found in the path. For this reason, including it in the installer results +in a simpler and more robust installation process. While building a statically +linked mex is simple in practice, but because zeromq (as of 3/10/15) does not +provide a .lib for static linking with the windows installer, you will need to +compile this yourself. These directions are from zeromq 4.0.5. + +1) Download and unzip the zeromq zip file (listed as Windows sources) from + http://zeromq.org/intro:get-the-software + +2) In the builds/msvc directory open the msvc.sln file in Visual Studio. + +3) Create a new Platform for x64. In the Librarian section of properties, set + the target section to /Machine:X64 + +4) Build libzmq with the "StaticRelease" for x64. + +5) Edit the messenger/mexw64/local.cfg file to point to where you built ZeroMQ + and your MATLAB bin directory. + +6) Build messenger.mexw64 with ```make matlab --static``` From fb4f9812c35350d006f956f1461cc15ed4e425e9 Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Wed, 11 Mar 2015 14:14:46 -0700 Subject: [PATCH 245/308] messenger.mexw64 built with matlab 2013a The previous mex built with MATLAB 2014b did not work in other versions of MATLAB. This version appears to work in 2014b, 2013a, and 2012b --- messenger/mexw64/messenger.mexw64 | Bin 269312 -> 269312 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/messenger/mexw64/messenger.mexw64 b/messenger/mexw64/messenger.mexw64 index d0767a60e1c5273b202af0839c5c146d2525e78f..f1ec6fa4d34629e9ce1a3bc4efe7a8569131b5bf 100644 GIT binary patch delta 89066 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 KtP*!&jsFLDYHPOu delta 89120 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 MZvID=r1Pr(4?d|4n*aa+ From 9e59dd1de4e5d5dde8b4c7769699f4f2b199bb57 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 11 Mar 2015 22:53:42 -0500 Subject: [PATCH 246/308] Fix matlabserver shutdown behavior --- pymatbridge/matlab/matlabserver.m | 3 ++- pymatbridge/pymatbridge.py | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pymatbridge/matlab/matlabserver.m b/pymatbridge/matlab/matlabserver.m index 3337b1e..e70bc71 100644 --- a/pymatbridge/matlab/matlabserver.m +++ b/pymatbridge/matlab/matlabserver.m @@ -6,6 +6,8 @@ function matlabserver(socket_address) json_startup messenger('init', socket_address); +c=onCleanup(@()exit); + while(1) msg_in = messenger('listen'); req = json_load(msg_in); @@ -16,7 +18,6 @@ function matlabserver(socket_address) case {'exit'} messenger('exit'); - clear mex; break; case {'eval'} diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 31855fa..a0923ff 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -187,8 +187,7 @@ def _execute_flag(self): # pragma: no cover def _run_server(self): code = self._preamble_code() code.extend([ - "matlabserver('%s')" % self.socket_addr, - 'exit' + "matlabserver('%s')" % self.socket_addr ]) command = '%s %s %s "%s"' % (self.executable, self.startup_options, self._execute_flag(), ','.join(code)) From e89fbc353e25f66fd9df6f4002f416fc5c8a8106 Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Fri, 10 Apr 2015 11:59:40 -0700 Subject: [PATCH 247/308] autodetect MATLAB in messenger make script The script fixes bugs so that the script will run on Windows, Linux, and Mac OS X. It can also now automatically detects MATLAB on these platforms if it is not specified. The mexw32 folder was removed as it was unused (contained paramters from Mac) --- messenger/make.py | 74 ++++++++++++++++++++++++++++++++--- messenger/mexa64/local.cfg | 2 +- messenger/mexmaci64/local.cfg | 6 +-- messenger/mexw32/local.cfg | 3 -- messenger/mexw64/local.cfg | 2 +- 5 files changed, 73 insertions(+), 14 deletions(-) delete mode 100644 messenger/mexw32/local.cfg diff --git a/messenger/make.py b/messenger/make.py index 7048aab..26d6a53 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -7,6 +7,15 @@ import shutil import subprocess +use_shell = True if sys.platform.startswith("win32") else False + + +def esc(path): + if ' ' in path: + return '"' + path + '"' + else: + return path + def get_messenger_dir(): # Check the system platform first @@ -50,7 +59,7 @@ def do_build(make_cmd, messenger_exe): print('Building %s...' % messenger_exe) print(make_cmd) messenger_dir = get_messenger_dir() - subprocess.check_output(shlex.split(make_cmd), shell=True) + subprocess.check_output(shlex.split(make_cmd), shell=use_shell) messenger_loc = os.path.join(messenger_dir, messenger_exe) @@ -67,9 +76,55 @@ def build_octave(): do_build(make_cmd, 'messenger.mex') +def which_matlab(): + try: + matlab_path = subprocess.check_output(['which', 'matlab']).strip() + return os.path.dirname(os.path.realpath(matlab_path)) + except (OSError, subprocess.CalledProcessError): + def ensure_path(path, extension=''): + return os.path.isdir(path) and \ + os.path.isfile(os.path.join(path, "matlab" + extension)) + + # need to guess the location of MATLAB + if sys.platform.startswith("darwin"): + MATLABs = [os.path.join("/Applications", i, "bin") + for i in os.listdir("/Applications") + if i.startswith("MATLAB_R")] + # only want ones with MATLAB executables + # sort so we can get the latest + MATLABs = list(sorted(filter(ensure_path, MATLABs))) + return MATLABs[-1] if len(MATLABs) > 0 else None + elif sys.platform.startswith("win32"): + MATLAB_loc = "C:\\Program Files\\MATLAB" + print(MATLAB_loc) + if not os.path.isdir(MATLAB_loc): + return None + MATLABs = [os.path.join(MATLAB_loc, i, "bin") + for i in os.listdir(MATLAB_loc)] + print(MATLABs) + print(i) + # only want ones with MATLAB executables + # sort so we can get the latest + MATLABs = list(sorted(filter(lambda x: ensure_path(x, ".exe"), + MATLABs))) + print(MATLABs) + return MATLABs[-1] if len(MATLABs) > 0 else None + elif sys.platform.startswith("linux"): + MATLAB_loc = "/usr/local/MATLAB/" + if not os.path.isdir(MATLAB_loc): + return None + MATLABs = [os.path.join(MATLAB_loc, i, "bin") + for i in os.listdir(MATLAB_loc) + if i.startswith("R")] + # only want ones with MATLAB executables + # sort so we can get the latest + MATLABs = list(sorted(filter(ensure_path, MATLABs))) + return MATLABs[-1] if len(MATLABs) > 0 else None + + def build_matlab(static=False): """build the messenger mex for MATLAB - + static : bool Determines if the zmq library has been statically linked. If so, it will append the command line option -DZMQ_STATIC @@ -78,14 +133,19 @@ def build_matlab(static=False): cfg = get_config() # To deal with spaces, remove quotes now, and add # to the full commands themselves. - matlab_bin = cfg['matlab_bin'].strip('"') + if 'matlab_bin' in cfg and cfg['matlab_bin'] != '.': + matlab_bin = cfg['matlab_bin'].strip('"') + else: # attempt to autodetect MATLAB filepath + matlab_bin = which_matlab() + if matlab_bin is None: + raise ValueError("specify 'matlab_bin' in cfg file") # Get the extension - extcmd = '"' + os.path.join(matlab_bin, "mexext") + '"' - extension = subprocess.check_output(extcmd, shell=True) + extcmd = esc(os.path.join(matlab_bin, "mexext")) + extension = subprocess.check_output(extcmd, shell=use_shell) extension = extension.decode('utf-8').rstrip('\r\n') # Build the mex file - mex = '"' + os.path.join(matlab_bin, "mex") + '"' + mex = esc(os.path.join(matlab_bin, "mex")) paths = "-L%(zmq_lib)s -I%(zmq_inc)s" % cfg make_cmd = '%s -O %s -lzmq ./src/messenger.c' % (mex, paths) if static: @@ -107,6 +167,8 @@ def build_matlab(static=False): if args.target == "matlab": build_matlab(static=args.static) elif args.target == "octave": + if args.static: + raise ValueError("static building not yet supported for octave") build_octave() else: raise ValueError() diff --git a/messenger/mexa64/local.cfg b/messenger/mexa64/local.cfg index 54ff2f8..a9a742c 100644 --- a/messenger/mexa64/local.cfg +++ b/messenger/mexa64/local.cfg @@ -1,4 +1,4 @@ -MATLAB_BIN=/home/silvester/matlab2014b/bin/ +MATLAB_BIN= OCTAVE_INC=/usr/include OCTAVE_LIB=/usr/lib/x86_64-linux-gnu/ ZMQ_INC= diff --git a/messenger/mexmaci64/local.cfg b/messenger/mexmaci64/local.cfg index 1de2d8b..138795a 100644 --- a/messenger/mexmaci64/local.cfg +++ b/messenger/mexmaci64/local.cfg @@ -1,5 +1,5 @@ -MATLAB_BIN=/Applications/MATLAB_R2012b.app/bin -ZMQ_INC=/usr/include -ZMQ_LIB=/usr/lib/x86_64-linux-gnu/ +MATLAB_BIN= +ZMQ_INC= +ZMQ_LIB= OCTAVE_INC= OCTAVE_LIB= diff --git a/messenger/mexw32/local.cfg b/messenger/mexw32/local.cfg deleted file mode 100644 index d8d9ff6..0000000 --- a/messenger/mexw32/local.cfg +++ /dev/null @@ -1,3 +0,0 @@ -MATLAB_BIN=/Applications/MATLAB_R2012a.app/bin -HEADER_PATH=/usr/include -LIB_PATH=/usr/local/lib diff --git a/messenger/mexw64/local.cfg b/messenger/mexw64/local.cfg index daf8ab6..ab61682 100644 --- a/messenger/mexw64/local.cfg +++ b/messenger/mexw64/local.cfg @@ -1,4 +1,4 @@ -MATLAB_BIN="C:\Program Files\MATLAB\2014b\bin" +MATLAB_BIN="C:\Program Files\MATLAB\2013a\bin" OCTAVE_INC="C:\Octave\Octave-3.8.2\include\octave-3.8.2\octave" OCTAVE_LIB="C:\Octave\Octave-3.8.2\lib\octave\3.8.2" ZMQ_INC="C:\zeromq-4.0.5\include" From c7809c78348574392145ea547cf6d9baf3017bc5 Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Fri, 3 Apr 2015 19:08:08 -0700 Subject: [PATCH 248/308] messenger should use zmq synchronously with poll By using the asynchronous API while listening constantly, excessive CPU usage occurs. Instead, this commit uses the synchronous version of zmq_recv, and uses zmq_poll with a timeout of 20ms to ensure the graphics are updated. This fixes #175. --- messenger/src/messenger.c | 43 ++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/messenger/src/messenger.c b/messenger/src/messenger.c index 4be1b71..102999e 100644 --- a/messenger/src/messenger.c +++ b/messenger/src/messenger.c @@ -7,6 +7,7 @@ /* Set a 200MB receiver buffer size */ #define BUFLEN 200000000 +/* The variable cannot be named socket on windows */ void *ctx, *socket_ptr; static int initialized = 0; @@ -26,28 +27,18 @@ int initialize(char *socket_addr) { } } -/* Listen over an existing socket - * Now the receiver buffer is pre-allocated - * In the future we can possibly use multi-part messaging - */ -int listen_zmq(char *buffer, int buflen) { +/* Check if the ZMQ server is intialized and print an error if not */ +int checkInitialized(void) { if (!initialized) { mexErrMsgTxt("Error: ZMQ session not initialized"); + return 0; } - - return zmq_recv(socket_ptr, buffer, buflen, ZMQ_NOBLOCK); -} - -/* Sending out a message */ -int respond(char *msg_out, int len) { - if (!initialized) { - mexErrMsgTxt("Error: ZMQ session not initialized"); + else { + return 1; } - - return zmq_send(socket_ptr, msg_out, len, 0); - } + /* Cleaning up after session finished */ void cleanup (void) { /* Send a confirmation message to the client */ @@ -106,14 +97,18 @@ void mexFunction(int nlhs, mxArray *plhs[], /* Listen over an existing socket */ } else if (strcmp(cmd, "listen") == 0) { + int byte_recvd; char *recv_buffer = mxCalloc(BUFLEN, sizeof(char)); + zmq_pollitem_t polls[] = {{socket_ptr, 0, ZMQ_POLLIN, 0}}; + + if (!checkInitialized()) return; + + /* allow MATLAB to draw its graphics every 20ms */ + while (zmq_poll(polls, 1, 20000) == 0) { + mexEvalString("drawnow"); + } - int byte_recvd = listen_zmq(recv_buffer, BUFLEN); - - while (byte_recvd == -1 && errno == EAGAIN) { - mexCallMATLAB(0, NULL, 0, NULL, "drawnow"); - byte_recvd = listen_zmq(recv_buffer, BUFLEN); - } + byte_recvd = zmq_recv(socket_ptr, recv_buffer, BUFLEN, 0); /* Check if the received data is complete and correct */ if ((byte_recvd > -1) && (byte_recvd <= BUFLEN)) { @@ -138,13 +133,15 @@ void mexFunction(int nlhs, mxArray *plhs[], mexErrMsgTxt("Please provide the message to send"); } + if (!checkInitialized()) return; + msglen = mxGetNumberOfElements(prhs[1]); msg_out = mxArrayToString(prhs[1]); plhs[0] = mxCreateLogicalMatrix(1, 1); p = mxGetLogicals(plhs[0]); - if (msglen == respond(msg_out, msglen)) { + if (msglen == zmq_send(socket_ptr, msg_out, msglen, 0)) { p[0] = 1; } else { p[0] = 0; From 5c246dc16ba2eb3920d594afdc11d7ab54c3384c Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Fri, 3 Apr 2015 19:21:20 -0700 Subject: [PATCH 249/308] Add updated compiled MATLAB messenger mex These have been statically linked to libzmq 4.0.5, so libzmq does not actually need to be installed at the system level. They incorporate the changes made to messenger.c to reduce CPU load. --- messenger/mexa64/messenger.mexa64 | Bin 13361 -> 709945 bytes messenger/mexa64/messenger.mexa64.zmq4 | Bin 13361 -> 0 bytes messenger/mexmaci64/messenger.mexmaci64 | Bin 9792 -> 824392 bytes messenger/mexw64/messenger.mexw64 | Bin 269312 -> 271360 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100755 messenger/mexa64/messenger.mexa64.zmq4 diff --git a/messenger/mexa64/messenger.mexa64 b/messenger/mexa64/messenger.mexa64 index 9ff2538e4fb0af9af43e8bea75a0788a908430e5..f585eabac2628c54bc37074abb85864b703d0913 100755 GIT binary patch literal 709945 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

Dt#m*n~Y3kAdyB4#u13Q(+r6gyTb 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≻Q=jiga~CMy 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 UcNAF-cZihHqSf`#b{V<;-zs55A^-pY diff --git a/messenger/mexa64/messenger.mexa64.zmq4 b/messenger/mexa64/messenger.mexa64.zmq4 deleted file mode 100755 index a01118c88df9f2d84794889b995f1221ba80ef68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13361 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 QcZihHqSf`#b{V<;Ki`H#D*ylh diff --git a/messenger/mexmaci64/messenger.mexmaci64 b/messenger/mexmaci64/messenger.mexmaci64 index 3cc7b8da8bc4461123e832ea6b73474352cac894..a48edc05e13be969463694ff5b99506a239ac28c 100755 GIT binary patch literal 824392 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Ν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%0D#6867yzUiK>| z8E0?Cwq^M^i_sp9X!Cm!q@|&;<{(2T3g;BEV8D0gLK5EF)a0BT%ujz7ldjIjLLmmf z;k1zvaWxO1a@AH~bAA{;`9D7aeGXlvg#^EG5MBF3`AoO?@Ed_Qka)W8kzZzaC7bi! zE9D;EE-92&KFy}3` zlC3?LXX9dL(4$tbZgM*dgE%>`{Bh@;-tlK^G))fGK7#~GgG9>N+7mjR#!0Nt6w0O` z46G_rIJPlPV(&j>68ozp#PjK+SbW$K40VhC&-SQ%`ZCP?_>b)*wuRs?F&x+j_s1kS zzWhER+vQZC6*i=s$R#6`WcE7QaN7nC4)SMs-ITbK7!K z_en1q?0wQp2790MlEL05zht2Qer3V=+^^iC`F5gktjAwO{T$aXFB!&_*DmCHg6k9{ zh~O|!Jd6WfRnZX=MfgR9FiOis1L={{D4a`!EtEb8hjvQ1g`y*rH{lnQ7=@P&B%#ZO zGx5=a-VZ3w9BQP@mM$}!+RPxNh9=sN$8R_~Fd^g^vkO0$T?4Lk*`QJQn#ZGsvCE0^ zQDlB&6uuoD5k5mLKKzDLC-ao98=Yb2;3ym-TQOTV31)*w;YAvSg9^@3$S;h-eE=GT z{Ky}Nq_MHbXB>qjoWJsQCmDq{^a-{PyZ631uEgxZcvAJkse*>Agd&d|BM6{g4Z}`o z_`L7gAyiCmx55O5h~I`B$^YQ*evInd+ssuE7^s<)taOKz^IyWC6S0#VRJoVUUx{O| zQv_q14m;@(q$U*Nf*7JL*g1vkU>NF_K04hV9@CG zN@l;$QJ`4f)QhnZU-_F)!+Xvw)AJY@N2O=wkaPxN+ozzxNL*cSUV_QE)EKT16-4Tr zG2D#VEE;%C_R9%^p}WM^@1h}8TR(*Y4h0En_oBVK4$Kzhnu$u*ZDQ*I@~x<0bP_qi z%By@1<&Xbm4ioDH$^1qwtM$p#ru@RoFN`o!h76HFcn)SufbF*2z}a!g@W^a~Fqlv6 zL|N?xq}+*A_bMIRS1z}kA$uB%UukR!#O?F+NkiY)X zv8O}4MgftH8ogi-8?3V)h*LhZ8|8A1L8(HpV<{_Wus@ka^QF`1RFh?EE}F$RUVPCI zlT>L)k%tYSj*;>fwaFjB?OBigzY?In&FsIS|aD@(=G$ zq?Cbh0`n{><9Rrr=(UGcnf4# zz5D^}5q$h!&4Hs51h5Tc=0F%Azv0P6nWWz)f9%3AN#a@0{474Irz1?I!C(5H{P|BoYaMfvRdX5#PpaLB zh^7<3Zq%3n#-*@K0FPvh3E*)Y!lDwWXPlWJrM)1CXT>(3s!k#l_tWzSv7goun`XT1FbREQ1-H+T9h=pa zgOK#|Kf{zd7=s1HEJPB^lD2r(3Q0dpB-hq)8pky0{+CI%6djNE<5AMIPAspV6^{+o zFJTLghV4XpL8&41lemgT=$6!a7$1F9WCB*}vtwC~S-^JMahJhvgMJ06DJ1MC%8~ax zi;E(=AW+Kz@}5T``;f4}cbr<}jn$T+U@MoQ?uX3FJA?_8sv{(gI~L_S8&M z*z35Cj+*Y6Q<+w=>yrd&)mU|$6@`bq^2;WO;f@6$|N6t?(wsRIri*Bf+K>IfL{XCQ z>7OtxPs&bs0cZ>YwW%F8uPO16dLz=?U*&J{^8aFV`TUHBtMSL-5gV4@Q@qx0nXg;M z+w;H;UNYWd2_69(SvG8CK zTOa%F7GR;}ph81U&rt18Rc`(k<^BRnhUG$;fj8F?TsfppwD3Y5H@{)w7e`` zVt^)*)?9#~MN^uDq+wvZOvMA*p3*WcE{Q*v&tIx$8%7(Eodjx8F(XP-Ew_oxnn>E>W& zJ7Bequ27!}q9XB4b`0BlZT5q$*{EQywo^ekr4J}$*myWPP`T3<+4LV;Zc;*GKF)>3@;y54?W_7kQlT@GPNzX0j&ukyE;+BBs<1Bs#?Ho+rK>HI#$ zl>W9TKsSv{dkYmy@Z1N*KJq&VgfgqJpsrE|kjb%_(q}mb;>CccLSc~3kYhMeS(|1! zU%>*p{T3Z>!SRHt&~j)_=}%F)`CF9x8`ueAN>`>Z>zaT7gc^()G^g}&I}1QW!k7T| z#>NCN6B`r2GwN=fYmf2!d^Kx(;sjk0n9PR1mdf&C@nK$ zKLHFcr*E*g`<&zX^)Q{FhK@Z=)qwpZo9I+e)=;@|f$MV`0vOfC1aJm2CV+L(2;8!KE(7>dx7 z$5K=dljk8uD<`&m-TH!8@&nu@=CAK;)z91q{^~+G*^|Ti9{8jSO}5Ak)N)6*$eyTs zZWbv9o=DI=_ea<=&tTf znn7NGAlUOvTX`N!fqK9u3D2urQjN-U;N3A#r9=5&-H)1e9u7P*Yg&}%wC3m?2%YwR z{SnNR?%zsPK2~6wm5EE}ihre;05&)$=AR2!`lmzmPqu$GS}e^ZF(eieV__>dG5=tG zumFXzfnERi$0y1!zx=D^HQ3OBvnTFe@62_KlJ5DcYV|L#J#oUhSwYiGYxZx7R>y>K6D1YHBRR5fyxZJmkOOi?e`12?pXhy3~GyJ@4K}Bk0GP2{r|?+ z{(ph{|Bd^5Z(Oa%d@0CZ%WMyJkF-q9O+Dm`hr|w|sZ}XsP zDZPh$v)t`NK7%$LWND5%Fb^p%rUho3+TLQe|92po4l$3X9I4}Rq)s+R>a|~N9jQ3f zNuM(YK`%9N|Uxv0Hl?BnDn)9nk@743*#JM(zFlgF)wMIGfiN^@v`m;M&H@6}# z6Fqf}g!h829ccdjh?yTeqoqeI73OR03vWSaT2@_Y*hAae!RD|Z&Hn)FIC|&k%ESIS zNV0v{{}O0>*h|kSCvmnGXUw)aU{|ZYxbAqrh)%hP@LCJ=hiv~Dgnp(gU+Y2S^2?!0 z_BMQA%X=Aql?Ey+-#^6H5KZyLrlFe6jFvs=*LWb!&O9ivZZp7^35ZIerq}-Llkk$x zw1Zs?bnXY?i+jub^b1=rnVF;fy-+fZ-0b_>nxScErNzoRbOn`^+7d(ieAcD%K$Gv( z6>}I--@W0QzoT^?E%H++<3j$WkNoU}M^G?EG037t{dpUg*T)SLOe-}=7NVk3s1_#M z0osMncraH`XxXhC8AY1RAlzpYsCM5mo4KwXTW+% zgQDPj5n- zo$UF6LaL!y6|Bwtx+{^Zsb1}?*xfJ|P{meWOvV_jO<(XpmK&OQp;>bf_h+nxxw5Sb zc@vXgh#=Zfp||B%oJSqVAf*cnkjUphLXL{KK})F5-%3t?>qOpU3%qx$5bBl_5}?0SAlDQ z;r=Osb=v^8OnggSe(k+K5r_NDAdBJt9{AE6_nCd@qAKyq$E?SB`A2x9$SL5& zjO+ZA@heBn6ydVy$e2~~_d44x^+IA3FigNk?c$^VD?dF@H-r*e$j+%klg$>Id_L=4ZyB6&QJ?-8p<7HrEY zTW-CwQ9dAk{V(a@%OtY)?1uBU~$3cj8(0~9?_ z3T9tyy(TqlJV-b}3}2Zxa~sOaL?N)cyO6faWYLx=;bINIskxGn)o~ny$O+$Vvb*eO z5Ln<(KuJ|&NiAndGus)$<+Cue#-Z>)QLRt1GBwSbhS;bb1(L>)F@dBpVoabi)yb{^ z13PvUNX#g=UU2x0+fN_}jir%^K21Ngl7iHQ1*P%0xV7Jm{e6Geo(s|9D_BLIxnp9cY&va5xq;nEzB0|tUzYQGl@$ z?E~Nz?zM*jT{_WFfzmVzHqSG^j~%gggGE+@LM*RSggSk1I*OS2Rc9ev5aw0&teHP3 z25Xofq%9Njgz}rpUj@ENoI9|?d*H1wzu4k;<2SJTs~qNJhDD%t|J%(STQUEy zyncL-Y|60Ux3Bk=WBu$x!4`2+Uyt%6wfm}6b#}{@*^`o}3{qQ9KCR%;R3C#F{5StQ zTy`rBl0!kjM8T#Q<--69A5`3V`J_>02^rwrg6Mw3&$*DFhxU+?@p6j<7OJu`!G z7jx2ky|dAK{rt_$2%}(%W7U^48#TaFU`<@E{*Ml$K(acau&F*hT~%a2i4;nM+wtpG z0wvTCXHWE%j``m}CzNCcr`06m*?)e|a<_6Ot8@7qI>1`*A%NpOfWVR z#2QL+nl)RqVX3Itv0Ae670rEXKcv&V#Rn2v*3vYS>+B|F;uPu(hr%n-u;$w>v99zK zWFUVHGK&5%9&?0#$M0x#XoW27L>8b&nl){m`AJ3FcbKVp8%(i-*jOZ{r+CEjvyPs| zWJaS8l9|Le=L~{mh*mJm71_sR#gxRtTd^f(;XPITOGIP9f{>zq8l$S?26AT63m7E7 z5(zIe8r@pqZ0Ayy5|nYIZc0PzgkBYLssutG%MXKV2AL705ZaNSrzZQg{jFs2S`G;( znh=`p8@tbwZaXc`#EnH3<19LGI&q#dyWTqnoA=EOTMH8=XE)u<%rffh5hzHpzMuHt z{L^V2?e=pD`^wAY-`Vw7l7C-=A$fB7ch+UQ{QC^MZMyc-5Ai^PjzE3)K@h;ZogfYG z&ezfp&}W8`>C)h**grDZ8KSaa{kznI=hCG5#|Qy+iukoOeSYbe(Ay9=slJOPzC!4p z+3PSK*$dfL=r;tH;%z9SUwVGRu0$ty$)tQ2;7l9b9(K@FRjuE)wACQCQZ&mW2cZ0p9N$GuVoSINOV0 z(U3+UFlPb+cxPx#0N0zw2=MB#FbPO1D766V8ob>H-W;p)4e-pLPPC|mUCKvYAgODq zz*`gLQC8OwQj1X%CDixI@A3gmP6JrNhX7%duyiWJB9CXAVV}aRY1aig^`(|kY)EA% zfUAtPbSq$_204P6z#j|UqK%obVd4iIR*XM#aKVX;zyUW zwP$_-LuRcmC<>nD-KH+!gnwc=KP+3@yHa=rjP$Rxq2IJ`X8CC^zNbo>8Q{ z;CmC?wWYYl(cuB)cZ&Q&Or8kxiV$}PUqo1P4+QFydw3v+hj&qMvD_Kn0V4tEph2j7 z<0p~PXym^2ekb-v-gm@P%%4vqaKVsYx?VK<=VuPbaIO3T`?u2jl_K0q>ra#3w{JQ* zJ&uQu-;V#QSMcXGsqTPzLgU{B=o;sh&t5FUVjqY1lJ!tbaW;nTn&;5yi|D+d5$=-H zCzlU?>$LKk+ses;qA!Wh`MlYk3(kqphvCv0L~{@Y@!r`eTf!SW_v&~&pUOXv8MORz z=6^01yT%Js8~?g;Y))e#SdkOw3i|`^Yh>~lUBDd$vcr|PFCugY_SBoy!Kk#PCA(18 z!Y-9;4;}RRsH^8M7WPVmjJH^f#emcXC=SRC?vV!C1|=|mJ%!80hp;S>&%$e6o|>_@ zO1C1d@ct8ZK%1!)V&~m6MsRYk?}x#F4Y`K_22kbDqOzIo7O1g@!(Uixi~{%+&*yv+ znW4Qvy=~mQrL#2nVwN4uZP5sJzbgkl;+JeQaL<_1kgp=$4^*d&<)*tmiNEKa5scYq2x^rwWPg!Sd)>PRoCevY52%t4s+TF zj&s@*ib;Z6>{LPHdtzbnkRvu4>Z!{Wxn3Zcx_)YNqH#Au`Egb4SIU0gk>3ZkhPs{B zjuqkzV&xPKS9ilbxx87Api9*-tt~2h*^FWZ>w}^7?t%iU5RkW)w`zD2jo|hvxV|%} zc>Fy9b2T!Jt_z8IT7EVawPJM3lZWt{C12rmxUdp_(uEg z7{^!~&wuwm>N(Dt*n6?}#ThtQ#Xgl$#$Y9$N(~@5u0nnxf3y3fa~NC$r!w2X@=d9~ zq6e_+YUl;qpJ{l9VLo*@f_a(e{tUje`lG zD6%a%WAoJp-$xo*5Z}(6A1;Tq>p2&~E@^F(B7{R?O=r+>WSnAe;P4AHcRIh2Lg2O9f|3o7&1?e+y9EQ1fSH)87}lKXMtl~v-c z!UID*FmpQ7$oM9Hu2eNWT?p@Fx8T!Nqeoo5lU@k6c9rqQqxvFOoq}T7Q4PW?;q)kM zvtHbl27Pf6>lidu&n#rr-0$QRe4bWIKw%l#Em%rhXs`uIA~^0ZuZIlZP->>m~nf<%nvaO$pX1n z$WYMpoR6@agx=P}G%yn}6ZnTHa=}bQEF3#J!ac zq=~|aNZQi{l>OM~-md&FSQl7YH5wXn-h8)GY)av7$|4ei7b6yxu3Z5PfHRXgui-s9 zC)=s&ECBx@p7&*81LA!S#2`E;FDNv!t89oEG{*Ubie7u;O|?j8!XPL@taxUtkf9>O ziP<^nP(=*Bf`dJ?T9}wgt)An~_OxeR7noXeh0XOkj5p@Q2Q2(vG^^`dMLCsAEPxzo7Cm-eFPSy4gg+`}%0 zfvl_-6I+;$od{=pHSR15H6OCt^x`Z_A7oX)bME|OT*yQPW&T0UOy=KQsd z*9$sNIbhMC+-tc6*ygFaS_W(v9i}8*6j>jzcaYHvHTgF8cqhrJ9NYA)cdVS@ zO&WzlX{Z#LabAj&^H<1$bAP)-6gm}P03|?dMXyJPYt6xM;K?V~_@8tZ4l_lWb z$IbH{d)&4t3+6PBf-e5tftN^%{9;>%x!y72{AWZtFdH-v_uEBa-{GE@+$8zpjFLW= zBSZXS6<>}$JO9qp=_GkGCO7n}F2cNEcw zfsX=TR3n9o_V_IhK_Jh4GI1`Vyhsi>>yO7Wa{zss@Pxo)hVq6|uL&&dRyUj=M3BU= zummsA<&%XT%Xhbx|GZ}LQ5B?}fZM_(ura$+OE31UGiT~Q*TSnJTv;mprOWy6JiyMLP%sk0gCbI$v_jqE|-7!dp$`K`Z#*N>pTNWv@g zTjTxP9T~6p{07J@8?SwL<9LsU!O>3V3J2tU4Afd|~yC1gSv~IDp&hzJ*O>N7NJ%)Nj@HqGW{>6%owiJ4MB^T+m@=Od!d^@z;RcjjSJ$q7+pi(Bmiq zRw0V!EYlHsqU=Y|Dn&&qXeR;dUIo^vC_XZy4UG+(fB<&l#smsYz@u%9yod!Ce_1EX zA8%$?5axrQ=3%^1(sUedvI6(f7skFfURK6xSxHInS7~sw^WG!3z)L;Vy&QMtxF%q+ zFKUZg_FN+nm6)}?1_(FQu_D5aW_Um1^(tIan?5Rq$&@pTnnIMG4V=|GR5d&f;cw}y zp@yeTTv&MQ7gVAh$~z&^npDpsZB#8J+xeMDk8q_yZNhXd z4L(MG#FOfSKyUulaL|K*oNgHv1anmb$iFK|VKZ?yYlxKgaWf9(Jc!AE^L#sujH_Bh zkasqNaCGQc>lncBM1yhpRm#r7FCtH{)L=uX@W!yu1qXm-c@NMV@z<(Tz2 z$R+|Pr4*8WIC1kYM@^@ltmZ9lia=n@Q3L`j3vV6ii0RaR1g+C4si2(%a0XGJYQLgX z7mNvDsudRa?!K}pZZ0~_!y#C{a&)v7l?aNu!4U+|T*d^#btJ@Yx} zN1tIbSd(_sFRQ8Rz{YbJC5m97f~4L@3|D}1tOi3TPP)ga)E3f3N)_am8Cx*~YT-4Q&?Mj1S-DOOgW6|JfqllrhuU$r40!UlBus>(4acgHJc z`BldpWK^Iw;*fI0dmv%Ks)W5{Rbu{hWLRx8|8*D_!P#(Fd9lLotfsuc5Qnmq?H1|! zE)lB>gCMLO_X;%n?I#SDsN~3(+on)0J8+Lf34_ftJMI){^x01s+FXv$zA4%CH=Ys06xu;7v*cBldG3rMHEFlXcX=95>tQz4#EmJy1ceoc>@fXy(vPnt z;|cpkzN=HR37C33ZNwc?ICMz#l;Wq(N3kn%F}#g}ZCz2W4><8*0Xsr@y8N;+fpAe% zA92W0hZKhC(m}@UCk&PV#`L1Zu z)87I>u^G|#kll(>6#!4f1O)sH4ikkp{Mms02$t`P=30wN1VtTn1Odng7!zne9J{Eqh!l$& z2n;!j02XUw0&Qpg)}oRM$B%O`>!P|jZtrAB{ode*r{sx4u{V@^FI(xgoEB&6870E| zkCsESc+WT;`;a-!LWQ$+2tI<~;WSUSdU!P#mv3^|@kjG9I)YnrDYZBgdE0!~4Y3Y& z-c!6|j52uPaA<=-7;;#YIDZk~>;SN=jFu_#R-@>=6Ryub#arn}94!09HxSzHjkEA! zyB7#-FaZH{S7Sc@w>_|n)zSLS4$FPn5d_eOm?_*`6J%!XVwGUcWOa4&cnje>HE>SZ zgTR4PN2&>nhMj__PO!{Wn^BPZtRe&%NFTn#X&oF%1>re6=a+UfW5`Oen-L9+0@gy< z&6u8?ka7BWH#5nv$X)YZGiV@>dRJt?2eZ#k<>*j8dWgFjSPPB28Ga_!FQfF827kGi zh`Sl$N%g1rZSH2K>6RVFFLpCT@+%H%H=~-{EUAOIn_*1;i|6dtAYnJdAT7HYqRc_1 z5x+|B3g_(g@WSNKMF1f+0q#@y6{S(_%DY@UKUEunAhP8p4s9z!*)9_jhVCavtFQ(; z(tdjdj3wCmm=Nx>v5qdk&;D<-zILnFbya4;uO3zft*)=D>uV53!`9uioEBCbhK-F7 zz;*|~>iUYg57Toe0r=X+%x7I)Upb5KR+apBT3>rUbEmJbkGk&Xy1qs}wx;|4-0SNo zb_V|e@+W^djq&@RQT}B0et-3TfAxM}`;OK7{nh(@ochXU^7a6%-tTLt2`jhWetO^e zA9cUK;m_{$`~A`2R|P-K{#e?5Lmt6Z##Z=a$Z=y-xotWK2l!2-{){y zz266iLKpl0L+|(B{qZ~fet*xOXk}`>ybqFRtM~huhoian)%$&4)_RU02@e>+1!7@N->X|Et{Zzo1+>mQxj1Rvnep zdw54)ACtIyeO#a>jD`*CWraGDpU?w@Aj4lBX$giWC&2Q1;{hY6PSXd^Ruru^>2Lyg zZezz8IU0kRF*)irIix@5?3W7|OS-^Q7FlSXp*x-)ko%rx0|GU1fU^2dVU6_w+p_8a zLT)utS)3vvt~IMx&$0veXB(8o*+BqCp+gSTN7LxEA6@nz5Rx=D0U0{bgWqj*{0q`Q77~XowvA$PW08m?78<&H?w)8FtUzP(DT_?3Z`_X0p z0U=3k7|76p5&FQ?pg?_qAU=-FMui1{7aDv~J0`aPK$?0hDX;p>E_9w_kiiN zjz}HP4v?kN;M4ge2yc>|ze&Zms;!`&02)W=7?f_HD-jFN?4WAc5qbcQZ|Q^?XYsvk zU>jsNl5C2KaKL?sx>4n2Qy3AbN%|C0g?1dXgO#Oz7E|lP~R=T zATWG1e=gG0!z6?sRUyst^c;Y8m{GK7eQ?gPIX@uRn!5h{p;1dzh?8X#ZiEE|4(3Ar zK0LKG(ZtWh(*V%7>$%bi?@|o#gj0J!1CMjcq$^~wRT>o8MQsu5&70aN5R^uQrz6Ia zGf-j3o+>OpS@FviOpr>>AgG5xXgIPt&sLOm4~Vdfl>qycgkQ()1Ge!L{{ z@NNdrQ5kniCbdF89uqZtr1cSEcoHgLC7wxrTtTdR0tV%-cyG~j?|H*qV0(wsX2vT=|yeP_DT-(0YhRwa0FtZ?Yl%av^^2Gy#l)J zcPna8Xj>aMg$X-O3)ChBZprU4v8?U;;DvXi41hO;0QrN5)%HxGt?id24*fHX1ZBVk z(0dLL+Fl;1Jzy0~!GhY!+OV+t5J7y~d^Atr6WZP{EZtxYwsk%VuNCx*wc7WP>WGut z3&A`O>lX?iY-mKo(?PFSawNa%-6*q^!u79*zOlJ-@+QC@M7^LJ8jreL-#5Y>BR6^~ zRz^i6jn*eRNEN;{3Kpm*_I~8*=n%N1v2q zP+}BS6V2Ms3to70%Fy@U3gcU11(eORW#+IT60=pbVpj|5yx}p6DT8m05+_E_b zP%Il@l>u1s4U9Rm7nm??4?o^K;T@jtEi13Os5by?RCG(X_w?E#&Sy2!U z6-;=kMkdln9SdMr%F<^(QDnhpeNYP@OpMe=86>HVsGi!lAGLA$*{WwyES`E70^t%MGsoGD9tDby`tQgYXxzX`AD7nTa zfuIxZQ2yeCT%aG|ET*#Ut#iJd__6ISRqJwMadv+vY@RfzT<3p(V0zfNWeG>TMb4=NF(k8py$>K zQJ~X5q=j1PQII-a;NK@uFU!$bT(wLL^9M;|r_CVoU4O9n;Ki_ma~1;4Kgz??u0f{? z)qxL@f|MtXFxXR3r1?qbdl$W+4om5W{R@xge$?p$F)Ilf?^2k0CjmOGfFCmk3lT-e zMJ?{|to$ZsJgCrc7WJT1IS&e>PMY(z-Z)g1f12#^u4(Hca~78E>WqqM6)T0B%2_)K z1iL0HDtv*}Scf#Ism`$D4Z3NlzSbK$n9*gx%3vgr z=p4x+wkDQ!#u^Bu9N>H>hbp>}~WdV1g> z`a^dF3T-3D2^!M^**E~$Y@-6% zPJvok;J^qYqz9NWu%5b=@PYLJ+frkxvE;x;`)#nFu=D`2t;qwo9QoBwFvUde{QdP& zQ`>+f&L6681VEv>1*+=_a5Mx!1Y-vja(@VUfH_3GU5?PlkjVk&7x9eMcGD3nB!IYl zS;vp)Ah12XKf-U4*VayO6nhjnqYE-847&qjL-ip5jzR`WYW>8ZAeR^ zWE_r&H^GqLUNH#7w}`qJFiYzSboFeU(X zS;h?Rj!i(f`dZd)cLNUv93nY{K|!F_=>aWFTCS1rGP*%&@RvygipJH^>JHZs1{Me$ z^EqhA_pE@BoRa%U3tE-P8O&Lz9;tBw)C(2X585<|~4wt)aUrr>96BfycKE>6t~4Lu+B zAlQ~%Ge8Wz$&SRfrPm09T6+f>vY)W@8e-d$4Xhu!L&<@?l|k45p?7)>0fNZSTAh&A zgdGXCC09*5B*FIdH68G$&L6}TNUj+H2J#zR#(<5|5p)H(7!5H_a?P0C1;86MCNRY& zVskp=RRfHW3T#i$Itv-uZ5M&$s(xbv$yIxe5p1m-=E{HwyX;7?J$(#FTr;LZTyhr1 z?p5O|*Hv^nfB!YYlB?#34PBGlk7Yv0Szsu_3<30(*pC=0ff3->jgb4Rik4i{g#?GH z>y`R7^g+s<#FDEz8AxoV?8V*>y(O010OO;`XAEGO$Rh4nFDDzG($+s@AI=|!lNogB`whp_8o z;w8Z3ByeC%j>b}BSc2>~VLxH%0b<*e2Vg4I7)olpkz-D*1c@$uFkMY6P5{BNrXh%Z zz5N7Gd{Zaz?aL&FE$9hg6%}?sAUQB&jKH@q6LbLUO6~^MMFt9UaBSYbIHYWCV5S`x z1$3tBh@u)`Fc}l@O#=e+!eMJ=(!EdDQ*h+n#rBkyKC7(vpqi_5DvU0_(3Zk{+l01U zPtrL53e-9Xu=N*^8fE0T3mD=#WUYtTP`%6`VC)GNU66<{n7Su6RPP5sBD)v_I|YKYZmhOfSOD1Q-Vby5fZPH&qnx}j ztQ*gPD!poMPXX+;j0vFl+)!bM0^oTe*s%)S&YF)|we{Md1%Nbbi_Qe&A^9VcKL|0zv*J6h812t-`O+7aM#d${ z>heVa&A9AgoS^0qI<-t;*p8zDLEGUi`SU&+4nfV!mkkJ!WM?T>gGheK?}%~96j-!^ zY2DSHICvn8g!?vvDVY-Vj?o@zyC%WFDy!{QB&!gF8eL&W^PAt&%DBYxH$x9EqA1%m zFBc<3j#siVzio=%Ml&NWO13mqGZ((9ycMJ04RoR2AL2HsQCPG_A`GL3rr$q_Uty4hZ1J zm!VPvT(#;H8vth5133dH2Rh*nA_B>QE@K2+r=aPE_rD5>%c>Ks<*$ z&`)frzLz0kUxq;f+Y@GHrLo3-KO_3V5&Rdo%*cN1&Ig)GlSSr(A3@- zW)RF{4rweK6BYn=uDk^vmsPtHz*=rhAl$4?Rmr1Z`*3}vf4pQ{ zQ7;@1hUR8ObD*=L88lec=8OsG28Dq|9jerkrD7r?f~0bV&jc`08WSjPP?TI?ETZlm zWH&&Vh!+2uWWz*6#1oMMdLrs)oc7x(%yxF15wJQg+@4MU;j)QnCqg9Ig$$QAh~!^+ zqb4Gzz@ils(UQd5Z~UgjX$=$6kf?>Lz@WZ58>M4lZ9(0of>^6OZqK$N&9)8y7%Fh8 zdI^3-6Wa(yFhFICjbVUpKy0eY*Sl&AsJ@~LdW3?lq#s>8fYw*Pw80`P)U;}ZKQ%7{ zgyvmPJNy!IgPuf0)=_v<5w+44O&Tss%gRI0wJwftXwqDyUIM}(MZ`_o!|-m>K1C(p z7DhSEzlGj9DyF|BKmEY6Hr#~ZN%llWN*hG-U)-ZMBuVDKG`MTU)X?u33H^>>s=5;( zw4pqLIdEKeC>ZTa*?MMD@23kG>+(37551vz{YmZvcq(L=T(srlEic*f>swy>lA9!R zFbuCGdlv%~XRS@-B4BiinNaO9CV=}=Vz>eaU^x&>F4)K@SSEl{7&G7?F57|e&Y3bnq6-HZj9`2Ig*dsjn;yXS8#*t8bv3TAy<@l;9YuCfoIPW>8O6M? z2iKsNj{~15PeCs%>F&XGPtd9e^A={(VkmG4C=GTiNH79K;|RFI!5qkG5QcD5>gNQ1 zG#Uxga4!rpXv+*1urjc+L56<&2|(b-m;nv6d-6Uf-`ScA8OMd^CWelRY)_$-GCc>D zVbnPjd>v-Lfpi5f*9Sqh!}iN6$L8=UyIZ(kRyGVa?-?k)AGIp%tTjW=T0f2|b51vJ z9~i1$fWW1}$kJBK9$Nbw_#O;D({sOqjKLf(#5y|WA4fgG!EhFBw9yzJEl#Lnx7se- zK6P!{8VOYbcV0Y+1J`ckzV}~Yj9C>15fNrG)0~Y2gyC>NN3CV9UNPQEgERqw+_HUa z;Pu6Ja23fQo| zqpcrz7yWpE6@915OTP$dhJL&%FI{l^x=`Z?WFMScxRNFUy$b3X`^L}{!+~uYBybNWQymZfcY$4~$ z$+Om5PI{^R^~$kTdFeL2GwKCFWP4R!8dGAomY@J6zSDz&vMMj_1%nqEIAIH{%1fu) zhuLE|kwU0Q^J(umCL;W;%1d*9(dnuY_@5>({pgGDbb0ABF5)`3Dlfe%FU`Rsc zSLLNC!#4}@RtP`}tjbHLtMbz3?qL`BUqN2_wXa*oxZHrvYrDMk6Q3i-HrxdO*4Yy2 z>^o0hdM6T$*PpBM(p<5BZt~I(f7P-Muoq0Ac6sS<_NoK?yUI&nh%}pnIP?a~OTQ9c ztMbwuivOeKr8j(uBO^*>bK1f<5xA4&rSA;+%NNWcTPw?7LcG790=Vs>`>DsOm(rrlg4^G3P63UF^ktWBub9Au68uIpp%bd&t5DaTs*D3772n#-BP_lIJatS z3hoo!q2PHLK%U>7L8A_yGHGrWR+7>fR6T>0ld1f!TQEOFw7N^FpGp+I*3Tf7LoSgY z%|Mq79TN!KQ{X=CN4!Qbj_RPZFIRRl^{m0i1`x6rhKnavUN3~N zx8v`5Xr-dOeiM*?OC-bNE~|&4(l;u63-2WO<|4%(MadJ2BJ9W|x)C)>j3SNF;6qG@ z2qGf{wH^t>vj)5YmwR=NVBcgXT=bdMo! zpHoAhwDxfYXnQY%@zf)Mc0X{-{H!3`F}9Vei}Vk}XMy>HLQ?`LkP*hQwkQXKVytzj z+cX5iFirK)hR@5>7k2VpE8=af+~j8Ols167Z_7a+WA?%%uotLj=c%z=M+wl+4sWXrYI+%nyyc7(g zi|jx+ss$4H;x(5lE)HG1lhJ@B#PvO|@cC#aJm}zyxS(Qgk)BJieFQG}!#LlA zaQ8!(R6^moU3gp<6KYlQhU(D#0VRSS)yfjoc^ea`99fSBM-}$jQ2?4Kj0wPK7BQH; zlw-icOc4Oz-mkZ}LM7qBVgSgy=UQc-O;Su%o@&x3Lv+hApMtQ;XbN=%X~TJ@qf1@y zVltJ(?7=U&X?RCD`9?XeKNthKrWdUvrH91#0hMFj?C>8~uJ?nk_x9H#es~j} zO!0kB+Si5Ye^H6yGr`oW>DL`6wr}W0Zsx>&Z5{^}4BV;)ZeEqxtVYjT`2}Y#yo??TPQNc4>aC)nd*2^l zXHn&y7J^ZU39HcnB2lWA6*VB$YN;g1l?ygf)IwZEtD+XgwV-Gfqq#H}@6(4zgA$D^ zb)$kt1r18-EgDEm%?*eUSXZKgMnsul!7Pg74-VOd3m1Wwj0*J98o$+3by zH}34rCYb@WRy9rxd)Fbl{!T9XkHf)oI`K`lR00^tH#>`4J}!biOVP@(w1Z3~>t1GF-U%IZp4EQ%wwHgJD^*IO_#w zTajy6oFR>8W(Hv2NpqQe)?X~Uf0m$uStpyW!n@Bjck$ zo`ib_Za0k^ifE=^l2n;r4f*@I!A}^Xl5R0}BO{pCXBJ_`H#$uzvyxn4*+YeSaC{}h z_m)!amUP&8ndh9V({?l0?^FEd!f#hF9Tbk$bim#wdHMO9_wV|}U94YVRFgGH?Cy3l zydEx?A!J{#N;(EGQPk=4%n6J*b!coLsv;S`#EtzVUbTsg{tSC59RFIL`Wv0AVlGwB zoP-~+ewOAbfF-+A*{W(**o5C9EmJJ$kZH zA3g_QgGu#|U~;!~lHKtR-GF5u3}Y}8{Bacs(>8Qs`sl^%0!lo;H@&|tY@k1lW^CW);18{uH7-Dk|r?`J*046z8Dll?aD zesvh{`+i?@9r*1;HUae~m{GZ7^=%5PQop=>7z-5JVT_1I@Fay0C3_ZN!^_QOEgK;? zIeG-RSCe2UOD!`{&AP2avye7~UcpRX%5Vb>Y2Ff)!#%6JE-a}Ho^ zXSA8n-~}i5b320Y8ufWKgvmZ(K@1Tp!lp9Ci`HeqT+Yl4wUJN#2-iLX}0t?QSvx5IlDoFryVrYvwc4BF8+OfQRe(V zWH#*5+ECt0LV0CMs11capBdoa3zpdZpF(t#4Rze<9zKk;(9Ib8v>$#v{H5|CO`ggB zqxIGRQ6APd!6wE&t+(C>L?C6l-r6_{`VRsg6RS{;h__TWj$tizEN z7q`48z>SW7c=v>LKrhCsdbU66xRi|FJ@^6)xZ+YGAAeZ)*%s6r=CD0^DxEPVK1YIk zG}evtXC6%QohS?zB`HCr)kV1ADG+I>O=WcjaG>S=ilndG~V9wJ9 z`C*Jj^Qso-c$tT{GGXfhWZR5vksBvSOis&La=Ig+i$md;|A>YMK}?nXl#M%A+xR2D z=$b8_gPx4Ga}IR9#1>bux$UBEm|lQA79(`noL)2GUZHM>9h~?x1%0ARqR;6wH>S}- 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

FlF@P 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
E#P%lRoW?72w*$`Emlwo3KB#mDAhoz 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 literal 9792 zcmeHNU2GKB6}}5L7%E0J9q5$ z7*~1e+g>sEobTLo&OP_s9}jo-<9q*jFja`aWFbTeo;i3brwGvt%JLOFm6L?f^_IF< zTBK-fRX!F9h2c{aw^rv^2iB2;OJ-@#JuENSdzHAK!K5 zZ=NzD<{Fu(aGe}Rf^~ges3nxA<*kniD5sr%y}8zPE1_rhB->I6z0*!l=+AS<^_CwO z=krT>-RpY7_+S3Ym7^2NhB)6JycD4nX)_` zfBuG)KSiWketiCZI1gdzx1s)}7wgv5dwW)sro!8wLgAp=032t&uSG)aUrrO~@mweY z_0|HQ(11_C;Nn78&b7w&N*K-uJ^hrs9%g`V!o$Koyng6&E`<}664)<&NZVH-V?PxO zKW|)hYxNsPgTJoXemk}V>h92{O&0>sGad$I;r3mPhqms%;OSH>mUU&)%Mz)Gkyw_9 zxAEDV+*P%*D!KjM@R91k;^{-9i0i&xkVQUqIi?H~0ejhMm{Jc>Nyq8c^eK zM-W-Eq^erkP(Od%fxs`Y)yC>K@5$I^vT99UH{xrs z>%Q7+5Qih5{3ZaChU}efp`AN&6=*73AjaDNY}9@;?bo>W$6fpCOP=v996_B&)%u){Y(z=Kj_Ih4vYG}7n~#=WzU6s|0LV!&^aibuX+Z2ID5@` z6R>y4-h@C;DbedvRCZ_(F+*I0(~z1SO8f>g262LEfOwM<*Wm==aG;(0A^6b2`;%-Y z{X<4H6I%6sua`J~q}pgmm)Lk4vfptY&a!gO0oG@ya2b3c+4Dz=7vhXOG*ouzBN5WJl;K>a?sTO7WNqKnUAft^EFXqgHd zXSdt(nQZZ*%KZpZm9jSUJtF5{iSxx=p8<{nE;pk`hI4g9rxiNG7588^TybC44`j`k zv*C(KvM!SK6j|dP8uIC~E|v8xS(nRtj;tS*^;}ucll5b=eq7e`Wv$725o)f>Cw8IJ zQ1ftw0Xon@VeSS}*TFwGxhv!rlDkZ9CAo{_){#3)j&D4<_sGS_og~L(0)il z;{TvD+e|0pmSI!2Ib*b&HChsGOsm~YS3XTI`x0^dJ-7Cy%}i&?iaxzmgI(IFR&>Qu zt*WYOu~=(Z>^E&1QO)i!HNJ-$R#ec1XpAE=t6ekF?OjRJvTL-A8;%i;!f$4bwXeww z9G(%SX27^2Gks({6m!rqBc3p$Rbr!Mdd@qHjAkSl(H^bMG_CxkR0(%jBAPb3tyH&o z*^HR+-DX;A>x#udQs85WRCkruhyalo%}#e&5yl|a%f2)_h2cso&5&86R z04#yMFN;7=d7!*>YRLdKCMbidpOcEdr|4NlFDiOj(JPAHQ1rH<_Y^Hs|IeMJ=sZOi zDY{hAXB7=9xPt5EJc4-49`@WAYH0|q*&4SyHnzQHMr_*d54i2P+iT3Ux8R2k5FS>-28@z;K;b6* zEWnOY@^)ZuP{)^eUON#Fx;WD*HS|b_v^zm5eoPQac2en-f}WL{)BxjKj|(qeu8H!= zVsJKFuFq->23v)=ceNCk#^QNAxMv?J-c1m%n^<_Y#3C=2Kxrcj73M>mcTy~~@DL9v z{FuV>V-}K78GWZ~O4D56?yL`SCM%`MA=>sNJ%{hiiS9 z*Us)gSHH!Fclz*aK5V;qB%k~i&)+%lJ2!tr!1?62cHT*HuK9BiP7N0oen}A zyGQ8mm9_f|ll*-%vKztVZ^H>UKO07OJ(1k*WYj(%caA}zPB3y4oLwVL>eK?xKd)Rk s?xgaL2~zib7(Kfs=bqXwtIlf)&-3~`m)+T!Q|8Q>bIzQZU9B2SweEXr z;bg7L=G)lV7M&jh$O%sf*qWMD{PWf6(wj~mJ|ts^PUmu;o?Gd34{-UDca{QzuA@}x zU#w17*mR=SI=d+jS=43Sch$82-BL`a^ol9KSvx>6HA!j5><`xKXal|F!-= zs&#^=+ccNl-1rKcmXf0bKWDQ?n(M{qSBsY1Wq!0;M>d_;w7nf-HBzTb(HATFD+HZ? z8mJ5@{!zwTc&-?F_(#R-k16_divGIMZ83MTdn5Hf%AKo!7#Ffwr^_#NoNosS5J;>s zc?9nC&*2cn^1|xJrQeHpEvQkAWySXF9@j%L zZ1va0noN6jMLL~vI(4hb9Yt@WLO4pq5v3si{2`q#z98OTNf~xe(ce%CQvB2NFHWy( zl7~H#bR{|$(9Jz=D&1a9r_1z8fKZ%rPnd9xbL?{5B-bmIbPvWFcO3^)E#s07Y{Anin%_A#a#6_i`hkqFTiKWMV;&R^7xX$iklC3~cF~sCO zlXNKthc!>BB<~g%B|Sx7QWEd)n}R_#$#+X7^#WsZ)=d8>ll=EX@NiLo5;!Nu>u(k; z-;sqr=`R*6&-Nktz1IJkVo0`IlB$n;m5L5bi_6&?20Ysz-`?+-e-P4+%ii0Zw8b%h zHA*Ama;MwrQuW#E@yszV0*@kY>5KDEWH_a?ia#A5O@>mEoG2Meuo7_M*QTH3W*d=;Fzb z@h7ukT+SQ8mY2YyHHz1-A=$*4isK8!-HT%Dj1=me{!&8zMPSqr&WGH}5gsOlhY8{9 zDhSai3t|>Rjx!yO*ThZKqF+HhUqxIr9ZSkBa*K=p+c7`)y~(8LI0FLAqBy#7(D{%z8}j}ET$2)*rJEg|nkMudXFkAehsWn)b8K@50_ z?p;i`tm>qiuZ2#0Egoj02|as&XZfb-Hj4gcS=$tSQA(4-Bz;km{&>>MJ4%z2%7s$J z>ZDRsT3yl8U_~jT3ylClvjpvq=0qFCFaTAUvlA7AVM#kkZm*p$Ceqxaq?^z)2op8y z2bb53(`tm`84QK%$}4)HB1LW+DziYLSHL~m!3yW$^=y<$?)N)kss=txOV*=J z#4X(B748K&onyjvRGF6Sz>Vzs0;N$NkCwU)*EMal>8-LmURIQyN8FEL{MM7;_Anm}1pS z=RzVTxvO}Pjr+1`ar&cWQ%!Q)-?M03p&>G<%yFX&%wU0)Np6I;IZ@O$Bh@6ox-aQs zA_7o|MVs&N6fopn!%cEcw1jGHgBO9VKPE1kYC*GBh=eD(X6Ru< zS`?B4v=|Sw`$72?o-29-`8FluwDH`JK#_BVd|=#w{sW7-!QNNeewS~z_sZ%Er&FBs zZ(Z=0X{Q)$%w=~=d5Bi;{hx9@OL??b-{?Q(KudX&R!{vG_@`^-=H_yiO^)^;($Zk5 zR&HS_Z_vsuE#;kBIm%Kl(#owYKGi>16z zE2mk?MOwM*f6Cn~&ChOO)Je0-dGw8p$3?d1-L>$Uq9xLYqhES{cRYV zVMUI+^Q1QZI-P#uoa+sE8%LA0?+%Y~@@aVd7crY@`~W)#bKBx5FquO>)64{)4lhwBiQ8?%Y$_ zbAyN04XU;JhNR28m04Xeq^27`;v?!VXgu>KFjjkdaN946VbO8H<%R1Kb!L&qbFo%h zJCS#hU0px%-wV=Yfpdb)ESlt|H@PA=RD4>MKY0s6gu+)K90U~Qg&~y-&9#CPNoxHu zhCX@Me#(E4n@RaMc&Y5^J_?AE^k%ZE;i4USslf6;{cxHI$e5ng}-$jC(XEmhJm$)T+yT} z8nodX+&W4BUgl5S8nwQA*&_GO>BgUqFkKSjA~1LY&yx%b{VCjugF90UJzpA6AAxIo zWy*{+$v3X>RCkZ=JsS$arn;JB30zP_J3tZv^w`)1@JLri993g;{6absM z@dMo=T5(Eh74L6H*#1Jth=;WrwuKtDHMnScx~d%8h0DZBy$2V|u?-X0P8*9~nM_Ig z(xM{UlAd$NnU-P+8Ss?6}^VIfZU2a z|BRJx-*r4TF8i8@=J^XnMdVXc(UJpmj?*v~Buq2&;30T;r}6LutSPXxDCfc2%tIjY z5Lkr=cj7^xI!(zf@+BttFmDg`E1&J%u;!W5;Nm=Sacv9V?(N<)V;eF0tW1h{K}&Wa ziToENf^HC6+&*he%@l*p6S9K_c|2y6rUh+Ks}#)i4Sf=a{0}A)1{>Pyr++!)Tln6=F`4u>$4JO z`tWm5AzIc|M@GRNTqyd4Fr`&OU?$eEu*`KutG4I3(I?E~@i{A9f+3Y593(O#r*Z{Z zkeSK6nQte_*N@Nk^<(e&dSADYHfJbFQPvnn&`!~xH}-I)9!XDf&WMMEWKf3~6Ndjy2=28hA~tFC;NAowx8rB{$bLr zll))*rc&xj9@Mah^zsDH!lm|cex>13){Bp9WB?-mqEVz&eK!vY2$$v_r`1XJ?Y>regI9!*h)I84G@tf;H!9fDDG~)FGcD zzAkW}^y&zI9~i|N@s>doq+_4&+8pG^Fy1E{C$MqcsYwWH$J^p>?Oh)>v0~EE9eh%7 z11YVDuLy4DeA!#D(!+mRl3}sn<08KmoGhiRUlth7`-aq&Y!CAZA?fT4KOYh<4J+bS zO{cgVi!7IJEZ`;*GjqcE!loY5*+Ra#sh{*sAwSjB*Qxp;njnUBv-F1YH%+@rfrWfW zR~J4!G+6p#8($V$UkW?OcZY_B?e+jONrt(E57TpRiXq`REcJRy=$&*UMssJ~ahhBM zQ|`D)PCvw5!uqlhJ~1ppIxX$Lb{a8=WoI9{(X|VZLZ`d zo!i6LMYeLXZbo|FvvxeCYmuwv#>k{#D?(`S{#zt$9M<3hbh{5$LHA0ayStYUY~gPA zVmIpaYv-%si&?P4y&GagU1=P@;(J>3Ri9mFw!FkpOX{*$=-U&6GvD#pjR&?I;I#P& zsYW+oI88#?!ar&0&%WUMS~lVFQGKL|b@|$;P^n#AelE%{B(}Sf``DMVwEF7iC}t@j zVHXOll!6X+_&HI?+MhyJ{v;~c#r_LRo;Mv+9I4P0{axdD9@Nku4&JX-8@FS%Etw;-^u|3XmL(a}>hNz{1+uyPTB{aHyQd}-EC*7#aM;ER{xl7b z3r|mW4v*H>BYH?|QN}vm*yRzm&qY4PX|lb7q(hiVcK$)q@qw+}__)@#vKtyGh7Peb zNr_cR@908a(7K;pToH-LbJwo2)@~Bp!mVSH*dg9ICY=r9+hanc^Va;Am>~8gw`--!_8?j;(U9PY`YVK;c9cnB$w^rGujSiUHC6; zizIIwzM);3G-bOOs_L<_)M7jLjh$}y4Uz~Z`GakIL#(I!dI&E?f0S}-r;HqhGDXo} zH3r%9E3pAAoxh81&hNHtE&aQVdq?^6@VG{HUt)@wewMZ0OH}W72Ue|84+m!GH$Pcd^EiZU>dRkn}@!zAv$HaA|cCG{TPm3OelP z{|Nf!R~A9v`ieJEzGDsfFG?@zY%Xt+w4Md?Ye}csX#Pc~Ko-W&bn0ezbO&*gwUGxT zw~*A&`QYU4^@oaQe{T@eBo4!hFeJjHL?52wk)n@tGWM&+FDIv0zrGROhN)=D?{1PC zEkg;iDBCV%@yVnrvY3%WxN?sud~aN+T~D+z$)@%EXs-iU_>wMbSq~nXHdX3v z%{QgJaCW@(A30xL137!LHT-nf-+65J9I5|mUfjK5y_&13|27|N!3AkVVy^mF3v>VQ zYCWQzPfbT%ZpGXvUL~o%wJ|nJQd`*d+D!e`t>kA@L!|Ik{7H&$*M}=bhhtG?>G1EP zEjZ5uTh$J~5*=XHGK@uC{iEG4$!#*?I8U|46LSXONhORO2(gx@Tzh zqE7|JI$!b2J%5ngr|#1Ca$r*3GQP66SE$Qr0XthWAGJ*K?G+$g($UQk&Ing0Ty)2( z!Q{c96s_R*d(V~P9`SK~TCr+;Q=jJ2g;IXI&tfUIl#lP*S$byV2m3CNh8uaOep98# zoFDGj-Y1(225zhuU79nrN|#1Y<_-F%IuAJhpFT9;)CWgfz$yj@U%;B=jZ1fJ?SEJD z^tnro^&JD@7%=R;!h|I(J%Oj(?>jeMILJx*c`?5@sJ+j`#e((;p)2y_K~-q?9nT{M ze!a5G<4+$OH>_Fv`duFWmJw-O8%EgAl4*?^FJ2SdMe9iYBzl z$X*;~v_AJ(z!wfrb-i>`FbXG@2tK>pA<7Ojt}W)zhR=8YeLgs&C;-Y*nCW4XPtE80 z57yV6gy+XP)FbaFT%JjGozL5im?Axz$G;yDBMqC!{~FOEIC>s&6_c@?`sdIS7pTi0 z3+Y0^f!I_$DFO=jc|7O2XHsxJ@d!udxI4LCZs`XZQ%ol^hUNY%Wnk%jZ7u{7(}12<){~pL{PCDB zJ}d`&G7IO_%q0VT(sUOrOrDM9?Gku> z68oHgIkr*Fe`Wz%u>rKHAHO!XUg*nKA|>@|tp&-|b(N7^*Ggt2f3D;HANtmuS&n3G zKc4nsz0g|S1(FHm#RVs++bSdJqLs`@MsMS5J`AY&b|yISB~GgK<2%QD`aU;;ZTzCx1xr9Oh=U+!0GbQijZ z;aODP=u@rH=X)zP`bulmof?Tz7$_Qf_i0(dQrUQ*@horAP;0RROGJxw%37esZyy6k z6mk5dH*w=xD58YYZh-fA)u)}wovEe$Fh-q#_uQm+UDqV z)A9Qrzo+;$o}<$Z#c$;t{_%u1wceBNBb$t^ZDXhD{K$mB!RJ4~#@DyUF-RqIuj4Pm zD+IGPIb;zFs^M<%BD$MvR>dJ&$viAGw2~2UNSQvv#i+X{7Q>62z_f8nbDliWOUfV1 zM^9`k{VX|3dZ|T@~DqkqwZ6)$FS;w9Y3b1z_6I2exw*gDfbX%B%CH= zA-On8JP(}72Tg9mX7B}*eWXjH`8Sj6J3PfH9?@fyymbb@Ik|p#EZ8$YnKeV8wb>^6 zI8T$V%|}|v+_NG*51HaB8T<2&QyQ~TeA1M9O+cS|v`OocBO+#ak0@N=E6}4s*_IxC z@-gqK_mnnGE;2baKIXw0^%`yr6#Sj19r+a} zg&Y0JKN~>iMbRiYv5)zL47uT`@|LHJ1O9i*+tc}$4BwUrwvgMZ50{HO?Ys`Hv-+4( z#+u~MP(i6?{X#7PiKW%}uFEn<)+&H+#2J+o$Mz*g$KE_MGpR;vJQC#}`RtE8_`S@A zHU5F$5|1W}M@^PriO?d;5Bpvf7hpedNxoebmtY2AqyS z)43;a@ljj*JWJVz+CW>cNkH6j8f6`6>M=K)p=WA2Uwt!D~)y>6}U3 ze2Xk$nG-thXp-+_@?O)@YEPX;!q?NWFDz}0wvG9oX|1H6=kPzLwLvO5bb3AHv^r0B zVQ&0`>0@xuvYJYBGnRcEF77>f>c2a z7ruUGxc!G@H_1lqPvSq%^l05^r_j1Gt0cV%2NyCGlN>#Xa=NtnhMew-EYe=N_eT~b zZirg=kMSSzuvuPg0#BXgE!E%4Kb+;sCi3~Snt0ssB8|=cKV8{3Q7~kj<<#VFoZw4{ zIDz>gBy!5Q3o-Hkf*D3IOk#^>SQ`#}clrjiV{YHya_eA=VaJA^lF8bUdCcSFa#r zZW40KhQX+bMb4L6V4uynW+LT*GP{}NCT2pvYlQM(Hc|{R4p>X23fp%H1E-Beb+k+= z-wM#Ixvb-7r`R_10uLz&pVJ8Ugvrpyf*&TrgeU2*f~{$|GnRhA^K*Trk}vqCT>q>b z%qiG^Edh0TomLR-N>C_$BbbRvhRS9iD1y%5MBZ)sySrC;KWkx~1L3td$zEeL;nl=d z2+tEYB)mVhK4qXY+CY44?o1YzwxaPlW1qP=vQtTX^D!os#8+MUU*c;pL5Q!TN#2Q` z6R8&(sT$>SONT0Ia$7;dsVX;qYD$e7TSn4$+8HC8#Bb;MW!1Z5=}#~KD9K4u75!;q zCh}e*k_WM9{aH{>#7VS0XB?GJ-I?h>&7uw}#ANAD5C7>#*TnyJi1I<<<3lVxIy6e_ zkp$Nd_wEK_nkJ0L{Ly;!#VG!DzL(bsV(*mE5xOKy0n({GaAFN^&Z~gm%WoiUD(1Fx zqcERh=f<;-xgN;@M$6%qP~Xve{ivw5y);yy3bA7X)O;6RzN-)haI+CghI zlllxf87v@2@(mv?L-=@oOWXcvV7wm7x9SsZYt#LLSpHgn zR2er|u!bo-c8ErzKdyqr7~Bwv{u+s5D7r@C1k^(#(M7a9XWTT4+Zue@RC`YYx`HA{ z>guL7)P-{hAxJCJNGmfS&;QkF{~>&+Av82yB-QnXz0fwwM4yTxURL`%A?b;OWQBIv zP#zpNC~hFO0S65%Ubd)ytD&8dGNBXI2|lU%(p3E&oIF+Z&lNqAyvL1O;2?AiuJttu$mHmzQQpWdpc=X>;bq3zsIiP8eW;HW9R5 zKsWQ^Udw!>Rs(p*43qv9#WD6crYhDj`b);`3&~uaGTP?wO*|{BMG|R9WSX0`rviPil)s8MjTcPd{SXI%6F6jm51!okeuVE#ixtFl;brQ*gmNJWWEZ z$Of$fBPRJ}-}0@r6#r@QdUa4^X6FKHieSDE?Bx`;!j$#Zv4$B?rbxc zmj_6Ni+S7SZKWk6`0VAKSQ~y~xwq{iKp{Nm4l6uEX5tU-vdcIuN8=aBo49X@D*o z;DoAx&jjE~3*fe%JX~$qY%UIj{=den)4YoD`eVK}UL9xg`KoX5+g^fT+y|nMy>LMv zw?maGacU9-Z}t*r!k+XHJzTB9-6fM~aCm_W;JQ?Wvxdr;jU2{H zKHbM`c+O`NgLm~1NSn}XlK3cy?Ru;j;_zvzbCWtTfNLvVc87};8< zQ;VD>nWwL86kJbWjC?v&Fg6VrFm?fIqIKvP4O)U=>}_{o^pqUC@pCJKr7dy%-O32b z>ojk+s?gZdYX zTwA)Lw`mf~XRL;??#3Ui4yum%M6As2%H7s9kd_AVm^Cc}r){K>E!Og^;xt^vA0!X< zk@cmV9^cwFTpDbr4$fm=TjwH|$=_{gz}K(wvNK}*aKgRwt|M#SFln1LFIv~G{b@1r zlbsxQcfju1rTKBnu?`B(aK|~pG9HUnn6VRDlrBLRvZpJ$OqXMERDFqRJ19EiLTlcB zeNX9%75{8~JxR9a`__B=)Jg?2B?)0zgV2>6Cxm?FSb`fEc%H)lS>H#RV9mR1xS)pR zV_&xS#%|WXVZFxJM}=5_M>iLueE7SKHJzux;Z#XNzV5`mKL0poMJIYr9x)>t8gLCW z5?g^}%!dYwqv#z{nmpJK)zNh_%nUH47)CH`h{9!=-%OHxb$rn`;XLcx`oRqnNHQJFlIdWU%&B7?NHW!^ z(%|4j6F}b3Vb_^&3ni%?=Zkl?l@{ON=Wsc+j5~f8C(VrG-M(w*;~Xa#|FAQ`$ueTM zN?Vj~efW;=+_SJzK#HQ|lu}};G`^yIhsw>(WlP%EVQicgs7JOV9vtyk?+}M4(KhYy zcZwa}s&NR%o&JXYJXmduTczkX-vS$7y0f~8-Alk!(o?SN3Xq<}@=3e=rIJ{#?rJXW z3*l#W1y{d>a7EF}m*ctgeWG+KmM4GjE0uQPD^a1WSUl0<9V@bbVgxVMG+qvAvfkXG3NJo_$fX$KrGwz*K{OiB z5=_a>a`KuAJgYT42Y>*58lmCoQWcMOaPwn<$5!AmMDy_7b=^PmBy>1`^#Ht*n@x2h zW0EHGLAw_;YL18KN@(sYyA0VR&w?DvUmAnKm`MJAR2yDvPvhVe)WPeG!wdx%E;LaM zvI%-r$s_a=y=mMAz44S{TJxMeuJ-;O!~jB79>YK16Pnryb0!WGQ2$z+o(kSvvPsA< z%<8QaeCUsy$5Il2A>>|)Ak-fh5Q;A+bd)T$HZ~KY$@Z)58ZjGbPAlGK?(E>(BwCoh$!ozhe8C?)SNH`yb;Qt%-up zKN|sBSWdd3U`glAdZ{7&6?y9@p82DX6c)u-{MfJg<(6QtB;h4lyOe@iPmd-1sw>NJ z+;bM8PAds-vSGuw1{kV<-`JAiopJyu#xj(~vcDtm{!<(2AAi2|r%b6u6t_FjvgQ*s zaolqqqT7|olMmE)o`?0Kv6Br zy~J@(Y7Oj@mt$#`$gcxS4Z?B&3|p|AXwDrDdP!CSOIS{%So1CPHxi;ZF*Z_#qPJCsDb@%Sk_Di3D{Sw&!BmJ!gUt`^xnFTwli!G;g1j1|#NJ8Y zY_v}kkE~vFn8q@&70|&~p|xk@FuuCDRh_{a?o%)_;wb&Kru<>?7m{C7ZaA{c=fEd4 zDU*Fu^nSuun=+i?fyEN+xG}pXZ+rB)roN)NG3PxGJ`?Qd z-w-G33Nvw5(cUBnG~^@Clu8-?yxZ9%$=#o?IU6SJX~55&4U&Fpz+azDab3{>V`h>= zaUn2q9=llsNo^X*eE7_B?XpTS&oxDuK+02q<2boRzD5t65<{{^eoznjioJ!Hyw8xk zqZ20z-uHux00+m7@m&#MVoS4FDVTR0+CqjE7CRHv;`aIA0n#IBM8F^~4WbJjz8;KP z1WB9mAf+H|0A3)aG`l73sEfr(N8}Css8J#mPbC|Kog>0;JkphqIX}1N_b@9O)2&sm~KGg!g`cw&=hVylM<0w5q&ol1s&{ zJ*8}a!7XX#SzN_Y#M`*R96Jbmg^na*&?~vPRIr6u*iTa9ev&*~ulS%AL3w`+T=}|o zVq5PS3 zRbpQO_sG}0hI&_z7hMc;UFl1WVpM>DVul8p+K97D&eAkrI+h^m>+y(736g&rPk-vm zS6*r^z3}1ZFEy1`v|4uArS@8a(Y8mEaMpTWUmkEdP#RZ_cfA}VHHzR%F8ljz-YyJo zGGu0h?qeLfxEUMt5V>EQ;wXOUa@*i3^@x+m9vB~R5-E(H+{oY32Vv$SL?61=6J~C> z7w>oFH>urMyxmn7X-^#QeYI7SnQ>4B>^p`jhR-$&``p7Hi;YvpTuSB8p==b8Z87e$ z;Xht&9lRKE8zeq0Oi=BL3nbURzJ;og+zLT;oEP`I<|$=+@V3{wN?&^LrPmtQEfmZ#G_ zgwz+h@n$zNgKxVFxCby@kjgq-0Ea9NF6D3s1b;ue3%Ikc{MijxX?a^-{bozP{&tgE zcTuhA+hM_Cl2hIJjoXRpl1-A0YBPs9Tm9`Osh)FKvj1#1qTqcE)&mr>AJV1#2;#_> zOozZ;ZJf_qJH(=8_6$GZe3S93`rMZJ?DGBP0As!RFTW~|wOk0&Apld@ByXw99kveI z#qT&s>XKW`S&f*_Vyse}C3VVt*4FR0I)Y{!AqM&W-6}LsKW93=>|V^M19(9JR>K+Q zJ>BS(Nap~OM;UE#13gNfh?h!h3$J4(PG_3Z0`XcgQa??BoB}^&*GP1~irEnJH!fN> z@v1A4BXd&|Epft7T{lT`k$jwZm*1K<8sbE?U4VUL`CW{5mu}pOd?RG#9l*Ez78tS$ zNk`J_BOTM} zufx~`Au|j7$l7JVZtr#C<9`omu^3Ot&}0#1I;6b_H|R{FHcGFAtjp6IX+jUCI8g*a z2a(#(twmsX%^0c2b3!ng5KI&yGk7=j7N{PH877y>^spRNH-XBf9F-JQiznOy5A^htRqRLKP1y%NQUNrZ#*N( zBttUERB!P9*`GIl(2K3+IS)ok{?`1_gO=)2I~K})A0CnVIPeD#ql15|N&H35#B@Oa z4+wiFub_bwObhFCmn?}sB$8+tZ8bbJ)D8(DPM8c*$0U7|FM`c&7Qj4Pv39x zKmD{zb@J0V+D-h`*7$3NQPU=lt_`ZusU#Xl7~TKrr)%0$oB!jdKWGU*J%Vq4>{oL* zS$@%pNA-lSZcFULL3f6wG5cyOGRakZwVxet_@rg;Y_!GnLE3i_2$_9#uDG?&7;BQJ z;g+V*C|t!9`Up2rp=nTm$mFgAUCQ;oi;(yLTg_KHO|T)Laxd+~Z$I%2rVe5Lbj6GT zo@yGNLqb2x@z7*2$&acDC;iS^IO(m`1l;qw0`4o}c;vxV;RXu01=Y+>dW|*T@JCSH z$=IPo;=B-*ie4|moOXQhQ$KF{!%a%~n!7)3CO^k!%cC(4yJTn%If#M5}%6kl#z;qvZ26sO5+J6v5G3E1Fc!juILp(+`iD97~5T zzMa8ipUc79tq50)5eOg>a*7b`P~g!-D-K;I3q%Gh@=`U|Gpb8YGs#yO-~8McAK~FA zpLeLU3D2{$rs2you#c$S#JJC&A;Eizt|5eJ_?HQvD37(X;1>)0bb)_`1d+SginPEM z9bf)uob-o|U;i_%ZooU*%`~RypJ&wDw*-xiK{t8GUtWp!HyM4Q0!oBf{R$o6_A+ZD<;O5{^cPV-|=3^VCA^;<^MDZ z%R{r2f;dH++10>!N#PwnL;7uI%^=+!T@n`?6m3F`9OJ2A)Tt$ve zm|IlUBYI@na86XaC4fLze)fgCH1ItyeNn%GyQt_8g^KqCE6zXL{HEO!q|uc(eHjt_ z`8(=fWL<6U{)4HAUi1>$OLJGakpV&;Iqy{VHFHsSOpt7(Pu}paU-k~R(x7K*Gq|S) zy<6yJIrK0AefMo8=)Yg{POm;--h9U^cPaW2KlQ4u)Zj9=|2I19AT5~;G2f6XYm>01 zv*2kQ#+>35?WAq4K>FDm#)nwTQ6gEl^HN1p*N+bW_*WR^k{{V+K zEDYboJu!R|SK%pc;08iyrlIRl72OMg?%)e`$w}tL{^sM}x0ehr_|ErH!JdS`;C%$H z1>oa^hmp^UkuK*3yX=@b|NcWV^ptA;&6}CpNC(gGiKaf%_ip^8sbPHsHi5-b20M`d z2#j5zsK7Wt_zd~L>*ckXvt;~R^vL54j=WetVh~k)I<_}nsX!9K=9_!V`!m1b`FJA^ zOtlh$j>AogTMTmaYkFADRG3J{j?fTF)Bjw4lr@XX$IG*2edBW9SY>p_UmJ?8|NToK z`%c6(4#^rap^+8H+6ZLV{t_c9J$kP8V61if5rDJ^ydUmK;GGB?MYnx%gZ_PofCtPK zlj2n1qhu4lLGzc8ShcQL9h9}_lis(L9R50`n$w@ z<6qUqG2L9U_y|^YWk?!}UENY(z|?ChtfE7-a8~kap-3bU;j`umnkCQ0ywj58H=nA* ztyn+DwROmbo9EV$6Y3c&);{>3X9DK~OlR~XQ8*}hvrva}ob>%MlYHr!I^;1%{=pw= zA8Tm$b7$3nYuoHH^u1uZ5*xLz5Zq?CYwly#aUh2K@F({{Nw_js&36npSKuAH<3>mI zy)|+Sb~@o*at_urqOv7R>McsB6DnjGuUhZ*11 zRwvmo-+B#5F5bUzA$e85c@hH}DcL{B|y2ZjshZD!;FAE@`v?C=3 zRh!;aQ)%6iC64e^T6es+QPXT$0h^-Uv}I$YS2k)#JJv}pv||@onYyexi)~UyV-r~u zuX18+QZek%u|`4(XlyF2Ai9=SGTy^WRgW4hRPAfeYDR`AGe#25XgIq6!Le`(oWRfX<{O#~QyIB660BaSLu}EsKEXm{BZiZ8{5pYL=A< zmhLH!)YkUQ$Jz70G&~-uAKEiNDZolyY|kQEm(qY%U36{2Gs{wE71bNO7s72-UFs|- zRo~jP7`rA=7?XVep&D0{os0lK6$_kTl*|j9zGia>A$I(O0NhXqyhHvFdL{WkQ2RNs zX&oN|9(h?DHn;O7_3GfOJ*$&3Mbor>&^TR zZr?5%_Z0s?UIjXdzqHNj1wCPV` zsH_Pe|3(k~yLV2?t>)EX4Xf|E^WGG%&&zqX=es&Al?8uEOEH7@BQYx-vV@nA`;gQs zOdok?lbm~3{qQdHR95_oN=kwk&+=iqh4^j4?-+jf@#~M@82qfUzvqfyBm5%qQ}FAD z-)Q`1;-~jj7u98M(lIx6b6u7qrT?mCd9nb<#9x{D12Ub{jrGr|&s|wvHCASE(xqRt z7W;px)MEKrYT>G$msv-tt+_?R$}Mzf)y^(#ptR+-2EOEWCGfFl2;6&xD{C(Knj6?w zZgB6k#zD3#YbCAvSwk`B=SnCBiWYq&dvoQVFmu`$aL|D>r_>xb)?LcJr9qCYT-pAV zhTGR2)OF?-53w332S0pLYq8!P)Mwn(a15>7BIcx8+k^FijhXGq0v#{js06+3gu20l zb!X{XU1H_B`X@BZv7RhOx^`W|d=Ll7%V~dhoLYFQ=RH}JlwxiXQMpAe(ZWX^?8PFb z!fP6iP1h>nm{X!rx#NW%#+q9MRBj=eTcmq4yWlp!4qeQ7K$FtJg{F-`ev09!q>EjJ z6Y;n%bWsYqs&@5dZcTs^fPNa_ZedjA#Z>`&3Bdi=G{7@g)ScetfJOHO#ayX@Dy6a!FlU0eBY{1r(=hfL*ErW(dHK&47kW>hlV~91YM#1AGd#tweFU0Q9(G z9>+`CIO6;|jiUy*8+IM6F0KkVTLA9AY#zsp+Bj-}MfbFE)Br=P0_F<9ewWSTcu^Zi z4RDAC_(C`U`5b0SC06GPz}J_|<9JaU$4i1$rU9}2q|^VG>m1)&pU6(k}kxto|lyK!)Q2 zVf7O;fgnZ3rk{Y!KS$A)r}XKWJslgddRCr&z6HaE-sw1%H!U3pZ$-3#^?`Bl*J@S} zb9L?bHDOyke|<&eRb%+q>b4-(J9*R@CcdpT9N%uht@a_x!3d6hjPJ2SEIveuIBWVT z!B`DgEHD-Up;S`1uLWa+)Gm#&oS1Y%9oLw3k&d5M4>o2Y(r2gDCv+Vn%C37Nny}`~ zHWNZYM68YvW}n(!ML$h)c8OXmgau3A9ar0gFkhch$BCqO5h^Y3(0`y>qLHqf)EObn zAJOvq5Vjz6vVzdiU^4>~Q7M0;b(WZx-m{_dcz6e!ObFo6%J7@ow<#OWY}JEJnQQxN zsK;64f*ggu!HcxAXrI$ZD?Qgr=_naPj*@DeGu}@!nJPYrckY<#8pk2 zj=^s);uP8bv_(=PU=9?LYH_S0VD?Qqf)*l2h#{iw0Xo1(AumFf!KL;`)m@=%d3|e; z*3OC*Q6n58D1AdUX!peh{xLhiE)%=h=qiq=LCj zBulY>X({nX)r}>ESBhPg$5QL)Rxniep1U?AWeMeplaKa)%X7k(_Gj( zF3G-m-?+!Q_+$gP$#xzih{M6qmvr5%Jj6+B8 z7C`>*nVoQc{3nJlnROnFbx*qRkn#nL7Mtj=i`~c`7qL;#r#rOiPw#kWfo*8qnI;0iz9TW|WDTYM~P|=G? zzA5^SiuP5TNj+!)Um?qoiC1b){ix+;e#BMeW=`UUDB&GAqBI4R#OHtHpmOH7|ET`j ziup(f_pNBnTpQvI9y+;fSQJKlzr-gW1WzldXn8tGZPOZuT@UP2r?+N}oi^+f!D|g| zH+{wybysT^CY6p*@3&@=E@MaUsI+p-q6@XVgjc5XaY5?PsJ+j`^Pp zpm%sAq~MrWARauX2lOH4jF~3+S1QnlturRz6P;8@qylEsQ43rK&8DpLm8ExMm*91Q z2&rUFDk!8^Q{?%pV`%U}e>JB)a}^&;xv*1x632XM8+RfueL~81Q*aWcdbekxk$3PI z774o66nG(u5=>8sVzZc~@?Dw{0=*E0rfV3S_RK5H2cY<`BOnj7Uxr9F#gOMu8{*J5 zZiXXma}+EUeW#vj56Pe2q5j#P4Psep*A6T;Wh|(gRc0@4D^zCk*~*oGlZsTJ=yauk;7+i$UO>A_(O#1p1>M} zC<0exkcLaraJ|8ZYq&(**I3|cv_mAu)kCY94SZ!@0xVqSs zX6Mve9a#*^QByi1pnm(UI;JCQlF+-6*ts7<2~jxvLNG+T0Xqa^FinSWL!Chsj}Z$h zXF%vtf2}j$YBJrkRejl!)t4IVQauxy2hz1I5?Nz*S{;(edi!PIg{I1J+wh9Ah}(Lo zHxgNcu!&8{UK?yCo&~`ITikV~z88p(o}rYcmCU0s=A0U=unyh_oXAYC3$&qw7Gd~n zk|%FNPtbue+th^$n=I|#x*~}+9o>;SB91xu3ksI6Z#2?MX1uXli5OFI_qhR~_^5vM zt(yDAESe4JvErVYsDE;iDA{RZmk zBvwCkc0b{sk|FXRzY!6m2-l6h@D(8hqWJ%6@P9c#Ghzpqeh$f~PX;pICTNHy!Ckm~ zFfo~eD+4~Kr;#@2(6#Mkmv1VT1Wkg7746sn)&l2@qwQ%D{*To`>;v`NPRzgQ#!s;> ziona2@%W!O^pBAFPcn4hLE)C}TZ$^K)8TEyVmnC3*tE@xWGp=EI;tMYEG%{mEe@mC zIiZTIh9`v57eZ#WB=RQ(Y!U%Xvo9(!6~GNoWRKQzS!27N;^bFS@%zLfKM z#kl3ZdNi5&LXW?hz&zCK6qXhI&t`&;8F4~LBor4Q-TbYF)NG)&!&H|xi-{NY;46mX zbBY+%jT&?l4fDd}I!0}?6_c+ba0 z(~7mwL`^F$Z&ITtGk4$8FPZK|q7Q??hgG7%Xz6E`=s9B>Uz0jxGLYwX#%70GD|JO@ z_BLiC7%pp%_p|Wk!CcaF`iBoq;Bko#BMCjN^l{V-JdV>JD_tavo{M^}3v=j!F_#8aYOuvh(aFWlyRI8;SjOyp3Hcw;q6C3R!md+V#2{8H&*Gx0WhZc|-xS?^S zZ9Vk-`=gdF-xMlJ6Cqt)lg2!0{PM}G>&iJDmXUchRCnd$orL(Pb?>Y22J3o)fQb@U5|Skk)coY#+ir2dLL*n zVu%mF?w_d+?~0gjw7Re>_FC&{6mi7Z%S^GRg`y{J(9r=$Xhh|F((;O+L`zucz94h# zfn$~)-Izz*W>3LBkbMOakib`vD9AE>i5nn$P%Mx+Rz-%hx)|OCpKHk0s7tzGXqMbj z4|Zeqo75!~hM1#(1cJ^Qf)b&|1&$;8zRy`0eWn0RM{?{FL#Y_*6;{a$0AMk?xlMbpTT8Uj!ki{ zZ&i!Bv$`yR5W1?1r!t$StqH4mWlH>yKl(FDuE|Mp?0`3!jf*^JrGjJZv;fBu&05*2 zZx80*=oxxKnKOLel%n|)(}4mnJPjI%U_Q2&dAD7!j_JXo(P=;tfa=N;w z2MZ3V4K$FzVXVx+Vlplm&m)*M+IWgMM*CLE)Aho=#)@~WGyu`OY_&yX_}EV@&5t{H{oiLXd9p>i3STfL88&P0lPCbLSL2> z63!T%g~s>_LLMwaechA!)X8YLi~9W$laTh;}SRh~=A))G56XFLY7A>cv(` zWi!{XZdW?2IQBQekQg?Qa=kHzr!3?oOCJIhgfSL!9+^jQPb zI_r=wGX-B?#y!nY9ZU`wH;P4xw*jiIna18ik;zUN)QNqVhwsK!8u^oYs3~)4-x94VCl0BM zAk>^V?5dSS;&2U4l#+q|2llEWaroooAXz~9{9L@kqbHYxG<+MEE@8-vryrKVf(M(-82s{46!KJ}Q6^vV=xX)06h*k;_ z%`*pGTMwu;2D6|VMV~?f(Dr?wsxgCEgkx;?o>-sLc?+!1U*@Zh=?L5ps%lg^Ys$V< zN2ar`jy1_8;e`cUO!8t?ElFohr2VS;cRKQD%T(2C2=kQJh$WlDFca z2n%-m{gU|3!5}(*)z%QVs*TmuTKFvY3U$d4rg#ir0p~l%arZ1A#h@?5u!*<6uNZ$? zq5e4p=SFPDs{unrC;@?K=+Y*`chZ)cc}pJB)?L`d<`g z>AXq)?h|c-Z^TuY%$>NwJQ*q$MzSX~w32@zp9%NziM9i?WtqBs7&?bnst*if(cZ%^ zXjsKJ{I%fXo)FnNyh^9a!&$6kdqHF1GS**6x`2V9Tw|acu7ZIfxB&xo#M((dC3L7f ziLgd6(2;8l^j)gnAI>I7uP&&)K4A5v>&w-tAFz$m&r4O05iCJkb4DF9g1Jh~m#QC+ zz|QBlXVo1eur|p!t3DdRB3kvv!l+VG*+}c8^2L@!3>4&$W*F%kdlmZqY>C=yBnzo7 zX5=S0s;e#>iS^8IlX^3e)ej4+t*sx<3v{%8pnOBc`eBDwGOOIlJ!;KSEUEF!sRC*- zEgg(w{=(=LtV_fF{B?cs7h4KTG?jE+qGpZ4_kzME)w1ffnDMwtk#%?D1uBH<75}}A z11c6w@*mxi7E9Vvqe|ZzX(h{2Lo1n=8uTqn5tNQb=th>a8Oj)t{UQb7eF_)Na@Ho5 z5lfB4MPjMZrr$z5$vqTn!BEGHAwt72Ov5k$ajk}7KaIJ-@XR1Ecv=w#^J1l?4OupA zvC_oGq<%4m`PH4*rhK(>#2{8H>zvfDvCavJ!s&D&1e3g6tI^gmVMu@DdF6G?EGN}( zEc5T=IHP=df#Z{StN6M0pH${wq$R_1!Hf4wE#T^~i#U_NSf;Uz4v=hOgg%~Is4YM5 zEl{_PWqI9a;sbJyyW{<*(nt5Fet@^Vfy#2)?WJB*_=mU(g@1t?$hV6~*vRQs2_y*u zxAfZiz&{Gq^&hgN9-j+Xd=28PQNd^Y5x&-j?-te^5$(}qI2YEC+ z=HlrAz4=rt1J4k}Oe4P*H%yHg$G(t;El__O$J$BFrm6np*^Jn2b+DoF3QTCwu=Sn> z0@GGri-fi&d7>IiH2ha`bLmT*8Lo;U&5c}R=pX8@C%hVQQzd&y^y{Lc^9rpS%<=ts}Y76I)7}sY%DN&OJLOGbiSr2R#2{C3hfCy)gx5J|RzK8B7kEjb?=X z+c)pUVs5!u%(>wyMT&N!7QWLpPi>chG4OcM} z=HZ6A{+rhI>re=-&kvvmTAx46RoA95cPS@Fb;x7^&WFX>g5x?(B|h|Bs{@D6OVfQ3Z;|55hlaXDx2|9G#{B9a*HLT-f+6(uDS zMNyPutYcrs7&}vTLPBo0E#nwFV_yeDvae-lEHh^8%Zxi2%rF>Rzvp$G`@XxI_vib^ zug9bNbzbLn&hxs?b*^*Hb@m|^vz}6~2)J#(_EpVm*3 zrqNohNWZrhUTXn^c&$KKWK#LU0bZv-pTX;bqG&Z3%~hfG^`1m=FonV;Hz%FU9-Ix6 zMtWpE&ujT>3!yEkiqKL#nb2l9K*(MZDp!<{9}}93!Cfr7?!9Ir;_%t2bn$B>v^18w zfRUzu-+baOV3N5DIJP@VdK)jC0Za$2=A<7Zj?}#tk+?V+6fu7tiWxyNO|5-Fmm#wC zSoCE|calTL!p^okD7TNr5cACg@+$ey>?mK4)w~0mP>0PDsc&(<(mw@^~%Ug}4%U0vHI^yX-Ic~gm zUes7DV<%`s#iChq-vq6RON-^;&zLaJ^zoI{CTi;T1)TA<50L_ zw%g^Qy8wO=^5RQXi;?@v-?H%}O)nnal3gcZO7Q--(l|-;bLfZhCwXv^wpTnDBa>6L zXz^%_+@A{Jo*5%=r(z~JWUl--6$2PEFbgtSOYQB(jUdS_370Ub#sm!o_55(wKi%*H zqwCkv$Zuq|9nG=M#tUuEAn8aj2hshyoMfi&57DWLDv)J+8oNbD%T|ju&xmm;+?)J_ z+edgu{YZfPpydl15J(tKr7bp*vSXRgQA+QWlPDf`mhMoj7=Wv&8H~QXLX8_ zx1H%JzGgnU^|?a`Il^yODxCsHPD=`O0loNSE%U3}4KquxtyFv_n1ZD~QrjJ}7A#!A zna7#I>m!<>?*!JF1(XmRpM97a}9Vd z8!8oZ1YSG6719ocV+rnhg7mz`~O^1CUR=)G%@JEmaK`HQJq zhS=Rfj!)C(h`w*6%QUT)Z2yIJF{|oyt-9twQ$e!z3~fx4jLS5tF}8R#mYV1F!K_g z^wH>=I))^s4b*m*+S*shon5tV!Yfs}b;J7EZUbbyZdz0CmtRrw)5k+YP|p7eEizJY zs|C`!%cE+)8`c2WyOOrX?W;{o#_aoB1uk#=YLaAz#yzCh}>9)};Cu{dvb%6D(6`z;>B# z%wXb}hD=)E8#rw^yR&t=XD?iIr45v4-x)zVb7pR<)t;D{Idsy)XA% z9QS+!kPOS_;kLnC$gjzNTqH!-dbq*T6tbTIC9IZ;Y&sV$)6-#`QY1VIBZvqHeGL%tg zu+63GRTNcq{tdkglP6a6l-_f(ayoUY>^T=@tjbh*XfFEVTiVE*bF~`IjspNFGk>#&lgz<<9gli~;K-kt>u3m_3Yd5;8Ncmml)rDAX zI6(zIhVq5L9aZ4EtQ}TzE@&rkyL?yk3gRxZ?YCNIaWhtK`BwAvKm3I%{GJE}2sxFh zcLtIwy8TI)x$rOhf*a}79k8lUy@fF`^ZCWC$8vF{LH_hJDU~soK(Oi(L@cWqVA?$Q zQvofM>4qx9z*k;kxGlL_+FPe&gf91=&=bs|ao`7v{GNN%a%S+^*TF~S>_wVit5>GvJFcw;)q7T;+rQfFd)rRuaz@2CVb3QrbHIvhaj&xW(^IcusF4LJa`fe5l6 zE`&=+jW!(Tn@eLex~JkajrIi7{V|RV<^}`<7A3o&zDPT)s!QyD_35b90;3ThlbO(` ziOlvdtfNGTZE|D+2#Jnz_7bq|(Ozy?qQ#1s_VTYKny-f+Q#r_2FwmwBzBBk!a~Zf) za}Q|JfdKV2kpQHlyn_D=oZHknsGI>`se>lVEW;IsL7z*^8?*~pN4Un2MTmo_sS}v9 z&eo`04@314HLX3>B|2W7Ar`fhzRR>=t%2;eOsf)5Orba{l>6fuWj`q%cLf*)qjW&| z{qsT;{oA$(VKCf4j>jAMrk$v4ZwMKqPq%~R{bgEpof9^*Aqa`mR2#Yt_gf(odSQ2snJ5dz+kgxBMk_$BD1BF@77k%_-+$Hdh+hpt3CZM-+Gff~-^NhjMe z&OhKDI4cy+=%P6L7-x;bQCm3oB+23{&_#IAQ~Iyaz7VfdFW+AB^-3+wzhjarlefSyQd4&fr)~0Bq>T^Q{=_On zwoCmad2p5H*|KFD;_Y*98UZ$yNTc48iI#7ov3`Zl1r_l73hV-U9}sxX5DVBcE7+Ap z1{1$0$X{1!wTm@G(Kqc6kR?`YK_%01^l5e^rC@GN*>bh!*XYSyq>5Hf@?{eaAQP2s zVj_-rM-dU7w-x#s_=A<$03MhIlgCzR?%m(T6VJQ~#4C_w$afM(4^@jp>BBiw4&L&S z2&_KfL{w#Ma~;O``tvC5s+MZPI!qEtCP|n{h#B!&4c2ItHSsuDVwSI$ICVWM`+F@~ zYxy_@^$1Ssrfc9~j2$v}M^~N=V(eajgqp@*QXT9w#z|__*FlRO zwvw6av=$w{Z$*6J-ZI=DLb-t9-c{cnXh|3(0sl>V8M=+mwAw zZKCM)YNdu(zKNBs*JB6T#^ZAOdd(}B4NuD;^tTiM0n_nhE*8Q8E-sJ_YSeu~e%f$Bi)OG@0zvj8ixCcEGN?*3 zhdGpVp4}1?Q!OXIlb;T2jZQ0spb+(D&f&xqS#zV--EC%B?wT0N)9B&&vNCfc7UliXQeNJu)k*EhwmB(F zeFnAkKSI@;87fJ=@kGj$V+<67@pDuV4pAK379Z|WTLSMgdsP!_o^`T zVh*#)!LAx^w?ego2sFlT`e|9=lm@Ozr2Q0?&&pMsU_PyE0TRZ5Sd?C5XTy>7rfWxq zjq7vXZ&M4v7)5MBwx4JHdC~Z2z(FaoMgvH}{fp^5h(%6&O&OMyOh>;HSsbO0Nyp$T zra8-H(q@e8qNe|Dvu5z{g(;7bn!Bdwhb$vCcTHCh%kV9jkQ}~D4&8z}zyBsVa|`x{ zPTC+ZZ^071*OHNyd9G>ZILJJbyhIW0Pa--McEbwql~9@|hJ`z@5SwqXQnYcsijo7U0QAA|Lz za@g!MznRo;$9&-F`7(67*0g~<@QLo7M*%P`+Yi>2c#%%3S8#@1v8@=3aoaoC#|xiG zHaJJpRCS@;x?LM0T1QFG9a?bYihVr5)*a`EMX5sdA(AAD0X7$SAQ!d{=3GdjoaJ0N zK~?f9&V?6|a?TE|O4*N1=p)Z;7%A^fPo3oP9a>mqyDSTQFThfnO|roEgahz)3jPe| zyw&5&__qIrk93klf1t5QC%OFxExbxFQjvg_a8&c2Hto?XZlDuJR^zpfvcyg# zI-;o@yHmR-JpE9zwlp2>3F6ZYvB_voBDQ^ z=XPmru$#5wZY>s%zPq*hrSuV?W~-*R#teYz{3?bd3Eb&X|(AGI1@9e{==WINST zSV`eaO3kND&<^e<$oU_kYKP9r`9Es4Tm);e3uf@b<*6TGiXGA9^WB=SNDo(NA>oWR z2epy~tsb8>L1>jL%1L`LNj$wRp_P}H_h52ns=X|^7sKXL8p(*gT2hr_jToU9XQ{3@ z9~xmjCGSOfEbAz>U#lmN?$tb<8^WB%5#V9+;a==O?%z-z+^>0g=^HY_D9$yVmvfQP zAE)y2-F}e07A8XvK&Ll`$vat4-1+Wu`~iriUzl8fK=biz5(dfHpTPM*$z?DGfUJu< zb`R&@nQFSr-un=tQkeX7K&vX3?bAAnH4WseeOgoZ-VG274fi857|h!N6B@`_2elfq z?tabRc`SN&1-hjnvhRL$FV}=Bj=O|1$GcE4A^xs(Bo-P1Z?&?enND$BI#hA|C`565 zp{(L~RfytvT*&`}i;j3=j#)bHRXtG^l)a>moi(62=qoksK!_- zYi8BZ({@Sl=4&cmmPT5zg0&Zqr%(eU*B;bb)Sdbxm3PMjy+Oq~G4+1Hyb%M6+U=qWeqg+CNF|Dnu>SkU6 zwn6qkqO}v10_FZAS{1LIuzf7s08xeHwT0B^o#N)z$KtXh*tZrvh*x-|-mLSVRYA&h zsQ2wY)aT;%n${H zS4XHal9%*@ym(ym@_+14$RT7OfZ_=5^Xitcs!=P$T|-*gfo&lEg~LexH)<2h7}PU2 zr)W}44xoZpmF-tej^F?is9a3;I-&Wx{2^R zJnX|-DwD3_$(i&34v6ZT&LlWpJgdI7L5Ai-RJpa(pw(|RCDtnY+y9`QkXKJ>jUv6Q zuzEABs|B`_g5B1MVW(qs#im@RGA!mi_&BR_HRZq@t%3GluF267Be#6Xv%BE6A-W1w zmTOU$fozj7IKb+KSv)yyzrumE4g8$b)*OY*CT+hk?ZZeD zods4^ZUcd`4$EoE6m9c$gw%2{gFRKgKZ~{dJ~H&2Hp#UbA)C*S!V2YcTFun@|5&Rn zsx0z+3g4-^$SY@gM`^dVNu9uwO{X@H1Z3^h)>CihswZB(5thk!q3zPms>F@_>bzE` za#fPT`v|@&5k=7(=Ty@Tc5Zved70iXmAlVt*l8o*orhJld!_WdpjB%(XDLbfXDUkR zM-Ju76bi?9stu9k@xwc*&maP*>9JLhi zQDG>y7*1&At*TP=mx+Ph%s|9>Jk$Wo-%tr+1#1-$(t03pcxBoAk`@Bgv6r+kJa%2e z{GxZ(jZ4_s-Bi!4wO2IFUaKJ2U&m1~*f4cnOVC#!IQ?kSeGI6W=wY?Eie>ftS$m{mC41Zr zZ30dx%(;P8sO}WTbq2B#m$m7%%u-vsXQlm$nKbA-PQ;1S!yp3WY)Y9?7xJJ8WF?t+ zON(t?PHlDTS)ls{PPNso9eM=;bt!vqAa9eK<7ng0IIWS7?b>faaC_ zX8cUN7qXsE1b;&rX1$lf?_Css3FFUZ{PJRro4j>f3u+CH2pFeHe1ua0cY{o_0<4Tf zwaO^qv*@Kly5~4EtPOywnO>J>oo-m%4dW(`X>WNq#7RnqQNJAVpgyBi^wCA5?_<8! zsOVx(DS76Orgsf}j^f~V56hCGf1GIOsVJno&X;A82*! z-~;jqJC#$B7Lc$bM5C@DG?e(potbC~GW;wm+N z6qAd8*SuP@Vz8J#F9PgZ1o$fj?5%*S6a~&?;CKbxtYzmbRwopxTWW^ zZkKhEHy>-Y>mFfmDiE&7FJvuFwxdMkLc9K_K>S_IS|FVL5D~eD5 zRCpIBeM>Pa4_+1aJDOQJ1_u>l#Ywm$apG5pJ&BPJg}Ilj65VrX!U8lr|22xBU!6~NbSt{ikvxrkUxgNp0npt!7!xVR7wydpwKC_U7X7OTy% zDDPB<`I0>yX;G!L1{#Lhibe2#Nd5rddVdw=9cKX;;!2~u7U+&q1Y^YCDBO^#Tlz(% z{u(onp*u@%J1ZtKxDwDEM`55mGf!75uKyIY{JfGs;$U?lSO?QC7@V^(J=z?Jm~O~q z)(Jj`!)v!4aoxH!%sIG7_Z1t#ITct$njH{ zS0F|>q3Oj5*>Zxe^^nq+b>VA!NNKD0b~56X*0kge`ofc;uj@)25go5Bme*gQm$E>< zf2D15ox|EN*VzF*#t(AmKbSfA*G~R)ObcigTE`N#J-ebxPtHDysbaRPivNpMh7bv* z2?<`{hpH>zlpbPt7%boAEa>ePI!{G(G3$NtPx0<^-ep40S zS;Y@38h@a*W`4ClDHhle9Pwb30Uq99omuwy-+}#iZaHAFOb?6oeK8lxd6zG;i$nRk1 z|DAR5owikT|C>HXY^~0M>VOA`O?oTmeL#Kkx4a)JJpB&7Ko~koW%2&^`Ad7*}7QMeRGn$!Ywz{NkflyEaa#M?n#aTx$-e zOMatRG~3kJqKVF?3035Sk6K6Vg>3i< zTQEI+*kWy- z{LNnY;cQ_i2l0hyTvGON5H&=}%5s*2sOJObkc^5*I8?GZ>0n{~@fG6?eL~Wxq?zPL z2a%-Z$u^G2)~hq+AV<+nq|B6O97P}P7wPXL%KL#;lH*jw1newNg4Oq}1X=Nt!%dul zRAb*Y$+j+{Lewi96l0i9nTGv;Ga;gpSU9)Aq+rq%OrU~kYlTU)!lWyhl1l&+6Z{Co zA}eJ*a}s+sANUX}2NXu_3KkxcSpLMr^goyfvGkFA=q&szPpOE7CJrUs_BxJ-E5EeC zakSNEL`4};Ty({m;2Fh5WS4uWD0+e0X)s{6<7wJ|2q~~s7$H5W!id9+ct(pc;AtIY z8tRRvSP1$%Rt02#Vx}A~c(B-eaGnxJ{=YLvHKHC;M(COlnc)NGl<)b70C5hxUEWTFY^=GZ!^h6#V9QWJuc8b+C!JIb&F1(x86O$u=%En4w;V2h7mSyI^Px!7n(-2-rGW$k6M)g;aV0-YvZh##;+??o0wR?mXxYGRt{z zN>_)-7*3;%KO`y@+k!~mSqGqdo6))Y_52U>E``i*gq)(XabX8BAFNPMQgLDC7cgvv zZX52Ck8bT93-j9#zyq0O%lv2mVLqi9wwh8lV4ff<8~3RYi9G%T&a$S4xV*xG}c1vFZK|wsr@Q4eae>&9OE(KRFELyAHFVlND!=kNtjS8QC zL(VNJJX~&rM;d51{k~uBEGc|ai=j}Mb!qwwd*<6M9ehEq?H^F;agUK*-bw<&c%WPQ z49rp%6212yqNbumU(l;#l;LE)qvz4I8)USmw;%wFsVh#9fu;z>ig5c{rn(CEMo29d zY;s~9!&N8w{9|y&LSKTfs{5YN{W6x#UbZZo#on>I@{+6YZhH%9>;;BR%d$B=s+INV zYE38?ni&MCbkv6_Ueh=acBtNPq?KZ+`>dl~s@)|XblwEdg{HO{-Zq=>Y$~KeI!a}7 z*F8$mFA6?F!Cyr6p%S$09>a^BcjSdqA|SMCCpP#{O+_LeRWT1art2B*9_yc=gsa-l z1ee07tT3tt-=Q0FRs_Sa%p<128i67irM2;7qqHF$sG85B$~8}c ztwix8SanNKH1ZY0hIb0v&pNkcQW;U9Y+6S!tJoxlQ3GjmLK%^owDZ9y9D?MQej0gN zp!2&8-uXx;4Cug3)ZOr8>XqRD^&P5jIg`p4w>Kv!wMk6c{Z z%-(-XVQ$8gF|*+SW-EnRtte)D#$0jBiYa#fCNF#@Qv4{oQNI;(KxCupT<*PJgrUA1 z`Tk9^(D*V$@#I~TsL1LDsQSOkR^`ML z_unXBL^T!LLB$TZC-0XN<+R_}92A3Y$g(|JjPKyGs{jT|J5})tGw_MeQ(Mws;+BJ!*II11^5gy#L zO>xG`5?axD0;WBAHmiyHX4)x`!KuyU5zQVyvd2X7Xv-eov&Ufah+&Tf?9r7x;@M*g zd$b~tHhi>aGM4+$TQEK+<7jj~fYJ2#pC7?9&+=j9CjKYZ!Q1vMASc!u%2O`w?>SF{ zekv?n(U)YS$|BV3iZy+onCe1!sPuWlHoPq7R>pQn@>9uE%y%RYmAnNUD~3E&Y83PJ z$%9gp4Bl(f3n%2O0$oLVNuV#NF)R7G%7K;Ko! zfehONfs~Agd32?&FY<Y|AFjQ1aj|1hV)R7!%-A$D&giV zyrmZlDQrJ4FMEsNBrsxTy4e3xIQYbtX?I0ow95F)&=VU9ZJ5IQ3xyO)otML_2p{c$ z{I-f1^*JIFp^*i;0ytGtz9bD><}(>_O*`{!X}O@Q4gn2Txo`>@W<%?1ruE{ym6nG+ zX2EEEIU&)~3EoD1XRVx9Rp_<-a(h)#Ub`T3s|xSZXL(skI@($kAMdkv@_mF>r%5h* zr*x0aIOsDO#TgoNo@hp_zrl>mzys=V6d9`+v6)B9KgX3r=%+J8+!B8uSV9Vdc-&Hr z`VKM2re@KcBj@bo5jA!@Y>@%dChXVBqnZsHk3@DEoJ@7TNMh$qhI zhIdb-%{qjdPpV-%gnE{xa6B0uKVO$PEq>Xo0v(gIV6e0s-j>5>IaV@sE7^4PbJjgA?DDe+k3u=x&u9qWf zictTFxfCN}9BdZA6jLyPRv1?9It456%cTCl*XjD}#v^r(ca7WSogv3&5U;pA+O1cJ!nqm8LlnMSE-eElh=>YQE$C$uHqy%D@ zoQ>9juD(p*_%RSDCnpDpV&eJ{nGqmn2!~_xvpQml2s|mb*Aed>g7xM}0znQ;63CBr zMPP|UtcjzM>D*VcL7?z+!7!`ZE%Vnua!8;U?H_p<78Yu+NM_VE>J_mO@dX}gp_J(a zdC(X`<-@Xckf{Ffe5C{YS!*-J(_goi?DZbcb;h*8|9 zAD|$arS0)B7`Q8a6}IiuAkj|LI3y$Mi7N4gg5_wjYSQ9QdZkjyOKqvu|NbChL_GbQ zCAba`NU$U292Xr{f>@T|l!L4U;S2X;@brN70DuGquwDTqDge8p0C5a}MAPtZ<0b&W zC?Tz?DDP*@Rv%kiP2k^iuL1RrtZ8E4`MJV3K5w9-a`bHNa1$o8=W zMX$Z`Q>bVoCjTMZG!PBM+$=exfzS)zKjiubP|$=dd8UDACxE>Fb{|{fnHfRL)t6E;0Ro_b~lNC4WR1179+- z--+_Z5S!$d73XX!n@2kvvCcG&7kpD2TmuKy?V%u`KR8RyYAEV9Jn@8j5C&eE=>fMP z6H5ThHybG5s6WWJ@qc{J$-f(lIswsO7`cV>MRAn6r5kYso`$!oWv!{2QSSoXnIC0B zBT-pw`cV#PB>GlK1}kV$p|`Cl4Mx2^)ETu~{1bZ9eax1BH4Kk`+$eno{vJWXS7c%Z6V8j>sW85uQBdAAh1VxT|!Zrf7zlw2tA1=`Vw)1WlVnxrL z2&9C7n@zwCNehdFmi{QaHWn4D@7Tq$_nDa9*Q_Mg{D@$B3wJ4f*zkkQYAnLU#2)gm z#v;}~pP-Eq{T?wwh@!s&N?@Z=KAfXxb~1wQ)(&E($RshYD)=@6d$b6qI@W;g7+^t(LcOri4?3UPQ-$P#+zi-79!exQA6ulDlaz@ z&bb2JlZ|ph3y~mpZiGW(=kiBhHH9p)h)FRT!RYW%D>uQ#@HG2gixeT~@C`Rb3u&(F;8r zC#u#ATSpvCS7=Ll_(s=$i-n`A_zI2&ZIQQIp{VCU49gF=&$hxDXG$0U_txDEReBFm)iy->*_=Z7m-)O^8!)0!};xoGY7U&kPl4s+^ zM4?|J;}V2E?l7@r)F=K*!Ck%a0PqM>7yz3GNKOE|a^Me1j;E*<=;- zC)O{L8OMCjF+Z$OG2NES#3WHEBzpx%smd`OcdM9#%`wSHMXv^8S%P4ejGXhcT$Lo; zORirA&Un4jvK8`plIRrTqQH_dh=WlSPT%>~8bd5P#pkQ7? z8!en*U=}b{Y+!KlDRUCAR0g#Zx{y0a9yn>KAR-mSd>aUi$^zmDf>{#dd7UK_eQpWo zafya8u@k_|G==mhn>&t93aNn&5(c7y^ra2b{cDUQMl6wkwiEi$&+yGs*}-OXVMNDd zAVNF=W++VeG0;B{1a!E`8X5UHltf!1yMHdKx?Cr3Y6z|^m9st<(czVOGZh?-mrh_P3$r&HXjtwg;7c|BZhW^fC8QDQpi#zrmM{lRh znQ9bWaWfo>UN|8W#oR1I;Qt$Lmy}yOh`NDs9Kv-M#&V#SE|fThEi7VC}KSJqh`c5Wy@hQpCeWXB@rF!9tvWOJ>aCET(SL7->p*kktrJdAM6{6aMc z;1&G-bb;|^k=`QfqOwN;ibsqRIe>ogG9~363m0_}=gR4LCYh8x3svd*e8K^5={L#zIcJ*2<_~~RWXkWmidJHD zrhMKNIn^ms7V9Q1hPGUQ7-l;HYXT$j3jS+>Ea>&&Y@`OQEt9HEfsKyeES4_aVT;t6 zCj+~S0VPk*wzT|LzLsmdi>UBi;=_!JDj<+vjR8StIWeE%0q}>EW=;&NLl34Dp7YsQJ@e zPT>C29Q7qMhIl{*ajXOQiUc|=lEz-5e8gEJ*^14b`(x-#OGd$-!r%1^5F5GDSAooYs+ zLoZQT>)eWxnKs_ZZge7+T!0k%GJ8)k@?AV2;vYEUN%6RMifRb;;7tmN(UJj2pxj^s zn^YJ++K_Ab1?}7{IkJ!N@t?zhdasiVI9vfnSpm5_2SWsagJ;X<{Y3djYiDQ@w38^c!041te{q_ z;|gPBA|#8aFbil0KKR)*lTZhhM#Jqu!tbpx7br|MhNUZ46cY_7(%V#<#f*uhnX=TE zqI~KnFo?7~K28tEFvZSJ)>kE`pE=%L1hdGgER*@a+*9qA(Y3sA4)3j&vLf%8%`AvQE0{B8> ziLj}jPRx*Q{l&!8#UvqP$Y00}q;4D@pwXI3hgHhYn9wMM{J*6<8$Fp=!#8LWF7?kC zZ%#!60yd`t6?Y)VcC4TXv?BskahJ`032?5tJvfBE*Bn{-D^b2m4S=GtY3@W?fvuye zopB~qvNDRzB=s#XhkYf6H@yIHVq*`lT0wOfidQ7Y>nJ@Om*Igl<#91lS%qcg$YKwQ zWptcyl*UGiVfv>)S1nzJ4-hLqqbRo11>>g6rvor?epCj0ErR@x(C2^Y2nozW#6@D& zcsh~NufT`+46njFCvK<9jITwc>&s6xMU#k?oi|KxjwWv^> zDo8MM<`6L(=$}OxMYtWJqF2U;BHVUQBW^3n>w~cVAVt0%B)moY53=H5amh99ePIe_ z$k&5KbK!DOu|9H25!MIc6=Hw7pIJAukPBJwz+d$%W+>Ksr^+DKJJ4VO(2Z$3*9Y|%J{25Qawz;`v zvg|fobQWO;q zrj8UoiFvPxqT4i7oyg*sh?y2vk`62|!AT6^tx3U>}jwwI$7A0dZB|o}-_i zC?gMIu=wtHG(EX3hkl6>sUd)!F;RMbBbtCL^z3&rg$OMv=kyYaBC7F@^5?1dso z)*d6umHC;Z$6DtcXZXpqa+gdTgMzp2M>%4Qs3V4)k*mju?)FY&>@w%SE-&8WlFYFv z^cP3Vu(6me*uO`18w*2d-e}omgQ(`roBs2RTjlDp7)if1O8zz$!z)qGWxzNwT9h6o z*N+pO^uwM}amM)}FHG&9!_sdwWNk^06 zkf{PwEZ*{)neJbfhbD;XqGCJwXacO8gWssahT5A*2J9eO`Zjo|GS?3xR%LFofnL9@JUbC%B3DN$bhMj<9=)B>X<@NKACJ0J zq3;~Y=pAx~!^e>DIMxv3hW?L+JUee{i**qY6)vdg2|y|$iFmT8dYCDEt0-K;*rkF# zWQA_7peu9+G@%{EiVlP8YlO^jcFS`8YnwbY2^MzwB>BfAQLXIDL_nuae6EhWhavc6 zgshY*s+B$k$R`2%aWXMgvS`73iXd%aqBYrVm4f-$|~ARU5V#M^!R5;#BhC^5|sY zt=*FMCyVOkw-2Lw$0fN22o(l04U?6phyam2OeRbbUR4$&RPfP!w*p-gxD;o+uq@#% ztqbVgQW~d-W+8tLB`#l>8`sBpLq*bSGbL76oU|I{JSzJGl2xGliNaz_N{S4U!ZYyp zV2bLvf&=%!W*#RjQ(ug?nJt_RMp{s6s_2U#X=iBh?u^YcajNhTqkQFnsiH=gjuZ`2 zZb3opZ$OfKa@|$aKaVV>%O3PdWnK=Upl>l~&+NI5--LIgZg4U^tX%^vNCl6NhoBnr ztnzM<(wIJ2TR~byhj^SeJ!(xru#s*Kk=4>fsCQXjdVyn9-kRQW$Qvl{#YeV?H@HCz z37h2DG||X;ELg-Pe1qlFbm1fKrU~zmL!5St*s}13@PQkduU|>SS!~!{g@~&utWo!5 zB#W)?wt+~M<5CXW!wEvma$JCy{uwPC%u>s*jtEL>oj0=7w3hO#siJ0dO^OAfdDOtu zR%kg7EJC}6l#|d-;>kk03I|GX{06*ZC+bM4rDObL-yoLLxv!O+f+6%mIqiv~xRBG< zL9$)CXyEwq20k zT)RoopnO;CmVRTJ>})yzxCw~@yw<^!>x2k6!0X<1%qx`}mBHM8_hM;Q9VoX>7ZqwW z7(gEr-t^Cn(V^*#DQ9n52qBFl=Gwaj{%KV4L6yA7!a#U+KxQS>yo=mhW1;+{I-!suuT)e3~vAC0&XygDnXC~T?4*lh( znIfU|DC{Jlbq?xW#kVmsb(SdKb`c~|M8Jn|*O{vK$Kw+b9Yn&Sl#YV~MAe|M?h%#k zLR(@C6Ycqx9F_s1$zRG@8KPGE;uNJwvYz)ZOx8oViNaMpnZg4&K%pxS&+6ifQkcLL za{J5K%R%8*KT1}x>@Z7IEdBA0ZQ4?!Ic=$WCS{|)(GHfh2{Yxtzcf?U6yNjSDkzlkG?qZyFYPjWgyJ02z9fOb3QQQ~$+Yw~*_|CLm>1Mn zl9OhM3T^lI`%ezv7Zxe3#3!OY7f+_X0uE63P}H4^QlH7x)B4HQvqgnki~A63Hl^6n z^v^A7mI*^p(U#Qq(8dE|Bg#o*We0t&vIaM*~@rhV<#gkdB z1P56Cb{PpqH=XLMLiw!Jh*b?iEUe03<_fn`?%)tso(I`f@51D(xmcXBxQ(ncPh1eI zr^t`X&w02=ZtZ}x_WINbfhkrr%z0QqXW0s;SNyinO zK$-1>f{5*LD!6@0Z>!f_3eND;2)?9(pAL7jGjG0%Hr$Izf0R;}V%ULMQv&nFFa1es zrUXE+;cyuTnV1SHK&CJ9J90wDVPHMi&K0!tF`qJ+-=@=BeKKL%55X~_x{mDYLcW!w zXZGz}po=c_DTx8A9&+*mk=Ql>zO-^AzdtUq>Q1<&5C>bw;igPHgePa>c{q@XG2h`G z!)VCJdQ=-(_Y&PfDhhPlyBBUc5y!g9h)j(9F9?y{GDSkE-9JOF<{_!9>+;QD(M+U$ zr$%(vbOUbTVAN8)!tkrKi1JZ)2t|Wb#xfX{&R_Kx`=}9}`CrIwL&OPjzM&jBRD?xd zxni-|BD<Nca zkWJa-Y5&5ICWlQG?tNO9k2f~20Nn3rIt$BjGSv52zkj%&@v|xHqDA~IIw|po;>jj+ z3>*-@VnVlrbc<^Oo`Qfnf$Q3x*nW=apzP;$=tc8vE!RagLkI|C$(1|Fq{X7O$ml4S zFBV=t-U!Bn3pY%T=+#p_%Du}gz>GH7gWahMl+Xx zg@24EtIBIQ!0V9(#H6kl>1ScBmBzf@>`*x3@a%Ir`8(lHmyvA$PK1ic4)Txh#8={R zGnu$V)M~r6eUS>&!*um;ONBWfpNRAnJel-7I6%6~d?x)4T4qCfBa=>P&*o!|S?%a! zf(MM65VF?m+nXMrXKQ`%Jd3s7Z=Q5sih9lNzbw?Wvhe%oiiPWVG7FF301Mjyg4DMu z%EAxK!Wjgy)Y)z}%?oR8(8)VK&zfz{k>-?tq&ptR&e{ z1HPSt8(l}wC1_pwq7)7?h0Jzx3%Vv^W0GvT0(R}c%V5`@IZLW$vDsS(%7T@!+4GS2 zB55oA!jiU&_(YTslYEHs1vo%?(Hy4SfJ>}3ZAY2%uC~ge&P|jXmWx`c-6#s%36``q zgO4R`p>Pw08hA2=5DE_C#K;s@Qb{b7-btoV5kV{&`5)t?Zeme8!6Q~Ct`HHWlg`+t z{7M~8`QYJ6|4F%gW=VMmd?LPL@MON)!vVhZim$_{oNV|y&3rXP5DQ=bv0vJ>k=`ps zjrM1huf54N89--hy*O{}4nyyw+qUV|D+C+I_E;2ehfil`^zI&LS z<&x!KHQ$HHPb)=*R97Z92~oKd?qRC`rzOdMw^7s|;K|hgf&C<_`K;kZaebLwvl|LR)RI(2@aFL=BfdwQ$x2pGYoo zcrs_5;Q(h<6lce&9xCMQ7v?OYjnr0)3a;&l4MRc$vdcnc&DA1CoDNrJ*-t~2S=J*5 zlCqj*8xi4u%(8F_Vq=ztpCaMvqgz?*rvJk%`-{R9HOrozG@E59GylgdJFbG;nq@~Q z`2R1nY$EezW0p+>M4?$$w-^LzG0Qf$ri5C|vSs{MXqHX;g3Pk%?CV16Vm8Z?3w>ag z^>3}rvhMJ;m}SK|L@CaNkF8YB{fQ^%+y^+2bEjtDU72NlsK8szGMtluM)giB8?)@M zSY?(S$7%m-MNHBGipw(<{d1#gpb?3xj`uj<0$mVM$!H!(b!aS_W~SxXm%`)JYAVUl zlBnz&%vw4As_&kpj56<7*=8N=me+A=rt29*VV-j^{e9HZ>h_9L=}E$q)6)|Un(6Wf zCek$zu_!S{-C-)jAO}M>j%T{cb!tg*5(BZQACYLzOFvE4S}$T-EIsnEfR=*yrd3!l zeZP-YR5I~oDr?{X`ptC0)Ri$FRyB`qi(pvd0&2 zpqPpl+iwk+R;?Daf6lX1W2S>+Q!%*TD^k|kB-;D0iJ|BL2Vgw`WiTF)eg`v3f;!X; zy-g_WIIZ5vn=KPFqB#V=6jo$@2LY(IH?TPTM#6N)TQ1#-4K@qb$q!qxy)ZxqZWG;b3y5)>Xrj%R=eLQbqDz!? z-7cEqUd4p%Sbl%5vdr8r;(TXD0x|8AmiPQUQmd3O=7D+bYLgHGV-*WgZZQ^4U@e(ejVffPp`K=MfjRUQwK>4NfOTp(O zs&NcO!RLHj+DB`wpOIg&X_rvnzfLY)pc{=>uI%Od9XKOc%Dp>~pkYnrn;lqy@Vmc^ z`ayUXAKw@wQM0FdpOXWB5Oo|UKrlJ7?M@Nr^lUubqvfidm~eTRE{`(pwWiZF@^O?sc8lgtQv737>OoT_vI zm%RUI_A4l_{6jM{?$WR1YW##?CFLC!4qHI~^aHzg@altM) zsVZHACo{4W4lvN@8zQUoL_=Uxm7+wT04%D{qXQnB>Y;a)+p;p6%a(fhw?$N#o$`4$ zmX_S#FZPH@!E*5dQCqYNmM0I0fJB$gwruE-5c6V-5^xe5?*Pec6o&`cSTKUw_@-eI zHlSJ{_pF{;xC?>1>qvA4tZ0){d8bZy;I2s6eQgQu+=eGO;whyhVqQhgm{1h>;9ApeuHxwc z4F0%+K5ijDW5jg0V+}8}9g&Qe>)p~9;F)48Q?UCBfQKmX6Dp{C!M2amz`>NJl_R(vK*v<2G_QAabg-> zIb?WCciP~3frgG>f(^RA(3e@yLI&scV_1BR+UJd41>z?)=gg`K!iS(vrbYh~q7H{h zz5^=xbvOs3_Sqdz&Byk{Urf7@fiUJKm5(5PQp;0?B4Qg5CIiUJa4GKq0zv@C`P0j6XS`BY!E#Vpl?ud3_-MLGJ`v-5 zLDX%UJKEkj17+M2c(aR^v~0l(i;Xgjro9)!0~*VDHkIA3WmMXDI19H}-Z0%DW$$}B zHvF#?#~gbtzg~_#WzYS(=pIywO*KaBgR4-DQi_@0;J~hYO6q!iF_9r-t+fa6t%+Q9 zcSq%YqM-VfI*>&5ll;4ve>d{)68@ddzoYnf0RMi$zw!8uH5@xpkXn7e9|0WX-^2WS zlz)%&?@9j6;osBzdltWzBM|7wU*y9|81htbX|Ur!ZMZWW{R2p89QE|T;i8Vl=30KW z*fd;SxC_MvX?uu=NjSRjOD4U%mK#op#<~kN_!!|i)d(6VX+6(y++Rb!Jt6d+{D2*N z^hK=OPW^Bkpqlb9-zn-4f?>$BGv3qQie$HJFT9&tIzdTR;}f*413qEpOfA$%hI=T1 zZqpX2tg6o+LTkyvCoym~59x|+7-N_GJ1jaxa7F}9(P;VrJuE=w9!6 z9cDz#@RKg5MEz7;GHgj^3xq*39nGn%i&ylyOR7YAL2CI;p!hRM{@(N4#C4T zltGfqBp6Qar|^8>`WbvFa6IQDADL+dj{)*R4mM;T50K8e z*iI4dF8y+0Gk-1z<_cf8{{7v&rU4hJ4R`%XC)eeQnA9aTNq@KE*SsHKbFhw{E)=~~eTwW`CoDp@4?@+HB`L(LtcSbA_530)evmz{YCV&g7&*I;O z{JV&M7vnb;EhL1VQaUy*!V8LLm*RxM?yBaci_S74h@;x0ym)6fG&@T2! zy)}0Oz9T&i&qWjV<}ws@Ha_QLBPVWnMYjMrv4%jj4p`a(ceLR~T<}eF<80iID2&=9 zr9R%QDud4nzmo1iihFZ4K0{ybGdb{_(7XNaMLBe&3V}La_Lhszi56m>m%MXM)K2Z@ z4Ze)id}dN!ryX?$FL?-$kj>~zhU4za^fry}(Z=hK_?YWB3!cRt?2hI-PJ@dI0U}f> zLlJQ62HbkHdpHa+Z%mOpzCyTcE-j_-8+-2`CU2YM3+P(hSi`I&(2Omp zzN@m*s99j!F7MS_^LL|qU-(uoxh(uj6#M^}dmlKfrv3kaowH}AnVND&|7QAoN|O9L zGTfqaN-_wi6d{}vCgL6$4B{LKp_quB|0lZ4_3s{TlrHXxkbgOKLr6}^y)&*qhZ{G9 z-}AlK+H>}q%Kd!5kI(n_xa-lo*LuI#d%f3M@AYS|z0clj(2{2;UC*%J$?*IW`R5tt z+x%Yko@@Nofs46$s=4tx$LqZIJj9;1#(%KCOD{XQ#y?>9CI2q8I{x2|)poD-&{nM< zezr3i-Werf;98z?oZG`bYAt8VR`j(0u$G_5Ht`PlTK|40UUA{izaF&qpx2vj``wre6TrHCI`Cd+833#=sR6iMcqx&$Nz{sq{;kI zyVu_H?`~hd&fmR9q?;74tDY~tl1}f?%}%ZJcia6uG@QXuBb`5c%Fn;rL)Z9wR(zW9 zcIQ)9|7@Q}FZ-|WCjHrMugDKl942ce+t$e~W6EjZH7jC_`sVi2?Tg;!bMY4@+w%qQ zn`}SzuD@%1cA3~WccsZN?-XW`SisHwWN#hoyn8EP11YZWCX$HY|$^j zdTY3@!rr*v-z`3VCz&(HI>w#K7P*zzGqJhfPV|$aKkuf&(%2%mG4pPU3cvOA7H>;k znz!WnTKF@X*A)tySGv3@aEambmA~1nG6T;k7y&!>_@>VGyC3)u^j&JV`H=n1*30dI zANu?I9=FGS$efzWFC&gy=iL;Nnys7EiXUIdFUhAno>|EREP|!RzU!W*7kIJVzuC31VQAzLDn$PEV(u>^mmPNF*IfXa%xY|bs%7Er%i$M5D zbLtRRfotrFgp_mD>Gu4OSd4!5*-wGKq6{Pb>7#_&o1q8|Cuu73Wr?uX#!f zGza)g5bm(PW(AuK)qI~F-oPoRU!H1D-aw&mpK4#T!QXZ7>YA3^PUDvFeT$hC!c$jg z@_u}ay=jBLs!djA^4kv6%YVVOw(nzX6kXObQJfyB&f5^)wQ>3__C=d1`nX%{$z+SK zJEgFpD_ikP^1Neq-G&zZh_q-ytMnzU((Cf+A*#_lHP26kKec&$UXT!lQ7&($NHu?9 z&-fxty0ZYJMz{21bH8s}eC4DYU$sx$V>hy%&Xa3SRhuSpSQbnA8Qcaux8A=Io$+x*1SUoMKP@1bh4aB3M=8 zcC~KKWHhN2V+!yLJMD63cn@K=Xhe&ye`j2rLLoRl4F*sm|U)^^Sm?2 z`{ntl*jtd#KL@^R^K2vVR&HIXy>XMj+vxFmWvBZ`<@vNYusY9&r80|0?%2?}QhWGj zf49mazD6>mP^N)9o4&MToB1H*MtcPFvcxInXFIi-&b{DPN7lv}WAkpczmZ9I-;Y}8 zjIoa=@b|3{{(Pc67WBPf$3FE}4p|Uu>3x|X&9n1-RQM%)^t7|J;Rd}nIOSb%qP^); zf7hy&x3uV*TFc*NZa!|bU9p9dhn->{DA@Bdd+Zi}*8$`6>R~BrR3T5Jo$PPh4Og$ZthO)pMK}xQR=C!4%oswjh;25xh|hc8s?h**^d6* z-@{*BWMBPv>eQ*ozF%;wWxpu6&ayWOF0t%i1Q%F#uYZ7bmOWf>yk(yuSZ&!?3wE;X z`vtf9?H2{t`R$E@OZ@gPf(!h1uO_h0Zx3(c9)`aSc43o$;1MeankJe3Y~A^$_J*J8 z@;BdaQD~wH9DLpRdtHr&A7BCjmmSp0APBAdRef9oZ=1@HtOE^Lz2U-!JbXz7UZq9wlg zs`ptX2~7qahW{RvM=^xbEgHZ2RO5#RUp3fhaIV36gHsJ2W3bv_rNL5-an)c7+Pqm8 zu+HGC2A?(fsKEsWXBwPhaGb%g!H~f&27fW-Ty6004#t(*W)xPNgr^N&YS3{5|Mil& zP6!*EVzA!e-3B)s41S>XCmCF2@E3z4KO~*<)oh6n(guq@()?(Ha}2IB_=~|Y8?@eB zgC82~`>~dvXYf&jIfH{X>hu}lFe&&+Bapa+fu_%^4GuS$HF}>L{NBFk3pO5=pJ;o1 z4URGxH8|T~qrs;QE;smw!3_qR41R0y7lS2PT~5GYUyX4!&C+m^IjB@LPk$zHj@#@*i?yo#AT@PBeJDL8lY=Z;;`;7%VaP<9pf>O$IaXS@ZjJ?wtI|pWxE1 z(gt&a^ZRrx9`K%yEX{u9&-e#!xW;mxgDnAhB(A;ygP;V-pB!g7b{2eOfB236`_30m zt2_IGi_Z)W9Tprt>dX_59Dm}`ryjZV?Qi`bm5dCG*ShI`%E`0rLtTf3Cu(`5Uduyo zYOHJ}PrSYK^B;K6Lgs-JG81&h>};JO)u=H#(B~8o`b_h|eKemj=~=^v_to;GLA9Ue z`5W_2{^%B+KWp*@njAi^vioa=@BtblMzP_KIz!P0-Lj5)G&>$`LxjsKC1I4 z47zq2O+y=2NILCL7(vnzD3vuC!jEYKNrMxOUc%_9$8~zpVAx>7V92#QL^r^#Kmp1+ zQ0ms`YHhGUf%MjV*7SXB>C&~^{rCIg^^Ob)I0e-7by!K2p%zn^DazB|ujg$Ug^=f##Q_evurX$Mj)v&2h+Q<_> z>I#KS#TtHE>bI;jeDR4>bj?$iUNc&E>#k}ZY^(L729pNU=d%<#2_PZ~ZK)%hcpqR%4tA3Au4^q4V_a13y5 z>!b?~ch=|*xU}H|U9>!9FlV|ZBNgK3e--Me72M@IZ1{-5q`_=QyKRZpKR$7)8EnP_ z|I;q}Us^)i=DW;(uEaXIZNk(i5wg3rp?<5*HXc6AH2nXc>!rI=t)k9+M{8k z|C>7y*|+>JZ9!a@w)A*wk0$=2Js16}#>{$O!g*CFklwjV!_RAZ#AI+?nlyacv@~N{ zy3p|1|KQP>(aR0<^>!}syLPGlVVQMOyrx#WR2`u!W)Ckl zd|gm#!he}Zb0_HvxgM2SCYxAws;OvHW9D>?;r9$bQKRe8#L1f9W`<6~xkk_7@o3Tr zcIDAVlQCuVe#@gBxDte?YmbI&bwU3%V>E3l0j9A0bCcr@7R&M9K_ zDosNh44-p`5+02i!LB^I%8a>$(fbXLez==;PJG*i+N05T{>wa?GZjkzURNw>Fnpfo z6NXPrFZ5{Cc-S4Iv6xQJn1+V_rujyPmussL?8>7FlQDgf&bVuj>K*am3$#ZguKqxs zFZhT?_d<|-6ke{a|JPT7C$zy0dpmAuLyxZX~Rus5N1rq z=pVE^_^`&b!Qf(h*6!Bucw5|-C#ZCv) z|NdCo@uKYRD%^`}y{TZsv$}%28cPwQmo$329!uKJ{`*hjUmUu4##xgtzGTY&XT@SP zP=#k`kED#D|EGgYrssc}Uhd66_+4G|;8KmPF9FF9wLEJsw(dnWZ7v0Y_jP*4@Rc<5 z4Ch&;c?y>^E=(AHSA%So+a*SC*MrP{qbnP~ri-;l6U%i4{-1huM~Ch>#$1o?>}J4O zugtxGT4_9H`2Tn>U>cfSt@AB(c&2T_2zKSsn90~+^nSym$5gRRnNw$G?K}Tv9(6CO z*)_Ui5p%H&8Qj%2rS(NM>*||^x);^K4v$Cw(?vC4GXCd_s=d4$9vyIr_Gob3f0;+! zS?_NA+)GP?na%&FvtF5oW;g1Fu6I3}GlE@>(UkG1`b1~^jWIf~hdfj<1qF=$f6c6K zeX)*i(hW+OiiQoJHT-|NSSL+GVzs>f(@ z)6&g7tu9u4&ShrMw)u@;C0Gz!KQPP~Lzz;YFBH%i=;+?DYiu-n4TCfvZl_Uc{f;Wr zSqmZtQ+wGr^|3DOtLjZn&CeyRFWNj3=+@VII36*2;UkS6u30C~dFR zrFPfPGzOT8g(5m*(ilh?Odq}Uiao45{qfx8x}~`*wPI^m2TXcwrcPH6YYbhZvB?y) ztMrB|jQy*3n!mfM-KB#4Xn*Vac>PRmAY%$_T|t*$c%{~Bn57HiMP_}=KF6Su$BbV1 z#+~cA_VoU0fBR2+Su5f>Q;FzJI#cLojX8tC<(hXfHc#_WgX(3?H(g~a`H1FQdo#WB zbW4S}SuZ~=0^g^bAu6JB?%V~{nI^{h*(CR;}GNH@MzNyP;-8&H@&zbTvruSOw zxpw;&-(DpzXlu_k-OK33Nu4cF(zyojb2!UsVKl1;LUeANy5SMVg*7CvXs zCwqna<9KwAr9_RR|M#&v%4eC%P1<0Rif-J|GOy#Pe)n5S^fRRMYMTn)w4eyN8-h{{v63aqJ6o=sDT|^14rv*c|7wQeRS5V+E@$Pm{ z5^oi%ehYRq;jP#<(j{NeuGpW71@A1hJiwlec*vwy;;HZh$R)w8m}Csu+S8?=ya-Wa zKSlP*Tb?Sk8d+$mFv$|!?1HWJmhD7OEVb_EZMN?KiWz)Qz8Gm!1irQVylr1dy6C0B zASl7Dj$`S*LVK0=B8sVKd@L`PSVF`dJ9`J}I&#WD9c6z*5-*4;RsFcV`2ef0^Yg;K ztt^Bd*m(seA$NmRv~DMQV!LQjUQc4>@bc!k1h+wg;YF6*W9lG^H7EuR?^SF)4C)@* zQBNwgZgIZg_VC-`qdT#eecaVMSuZW6e4!p}r6^r93Ar1jfa&mIBk)#m?jw0Ui7l|N zIgk;MY}Dhg9+dI73=Fo)F6x8-sPzJ%=taQRdeWciN44HUP-ausUPCbzt^2RqzGx8h zPbxUQRoB+Rw;qF{*Lo18923r(RNdk%?W>{o3b8KrsrMvFeHOxpK?!2DWhM9MNqd{b z1he~zyw@rb53nl^vbx4=p3I9S7J(0f5`N2S{VwztqzdgdqPH_27(Kq4CrFli$+$B` z@46tP;tTsJ>OI6O7H`C!-q9N}r~-e^*GIeh(dy-V^rWPCJA zj;`@9JlY~ILM;eNa2+KD)_Af@ffIM4C-TZ^f##w%Xpbt6cR?Qe5ilUemMW z7LS%L+tEj2eI|18*?3U&7VJb%e3V7*2I*w=+>VzXDR<&?p0&;CN)*GAf#7zI$d@5^ zLm81Qd~2sk!DE)^^`zkG@H-ovdFP@fS(eyq4q<~MF3Wms$n_xbmz_IfE^;^QMr1L3 z>+7r3-FtO+?Av{Q$GDvRLO#1xbuN6w*z-1hy+==~qh8#xNn$CA+zsN2dibCbxb{S2 zz1Gv?QVP!5E2vLJ&0q8R#l^LD#b9%VY@L*mq^?7Trt>-ELNXq{wF9K&ytB2h-?Ar@ zeX?4S&n~rzzz0DIZiQunJnzvHKX-a*M+eAYT8!Kc;(#T#Z;08mZuKOIiK3TxEXt`V zayLk_UU$><68JcL>&i=6O&&d&BBl0$htYLXoiT6ZO-O7!d=Ql2t?o>Zo|w3I zCwija2;aJwM&`ya}0CG5FRdq^F+u z=t<+>5)*9K-_B(~aI3f+)(tEiL#@4htL)~XR_`|96D`Gi&7v3_ zZWUEbgm*)Xc#}PBn6(dwx@{U}b#FHZ(`lrpeM|?B|AIJ1yG1iwBRl zRKT7*-0C_%RHV&E5V>I)@mfjlXx9w4Dt!$S@7})Aqf%?%I2?O}?WcxgFM6`Ywoo$M zIl*dQ_Kl@tC$agTVE;1Q>RZx8JT$@Hc)HcAY!zwSCNM+n;|{m>D3NGlf_>o$o}@{X*ISlV)e844qIJ0pK3&yTF>!h zS!hoSQ|p*LUw~VC6gnvKx*>3~y*X_4C#h@%8d3Ye5tyj=Xw0!s(J9vmtQUo@+JiZd zmQyd=HxdsvjlhE;iFfZ%Lsi{SI?*0DlA^ZRV@Kk`Mv@Yug|)M+BD-OvRdit5qaT^X zcsPYId@3G7ApjfMgqmLl`zk&;%!I0(CbO)Y@b{(khqBoRVo2hSuAQ#6-e= zT_9+GGs^1TdGKj@BLi^3MEI25=Sb@S6vrNEb+1_H(a@=6>}WR}i3iq;5steXZ56lo zsHsWz+9UD(di#eXouc}T1{&?7M>Fw~l)^jbEfa4Uyc>e2<9PeN(bhiJHc{z(=dsLT zgl@>#--xNCU3CCvub(aCipa(NsxhsGT^m7PME?U@~yHRbH0dYN^~AQj8;u)JQS#G2!#mJB7#%m1nXHY4ye$ z3Six-VU(95b^~irjZ6|Fb`>xLTQVY~A&ENGSXiep&N8YpKWQeM?<>4}sl$0{es9g<_AY#(~8)vGu+MHaZzk7Wg_J&X2CcG^}}`#sAT{4)CqlG-HD z;#Fn)fuUAs`-@|(@?w#c+AGG0^T*(5;X{U(&RB>6kxdj?cRM=8D(blq-VLFt+Aqr} zBn;6DV;Bp`F;-A|fjk{b5xb%CEc^2@4AY!laU8u-Yd>`y{gm)%urlkE8wIkCLWgZ0 zh0>|^hsR+eYx|BzBVq4-JcB625SwVPIi7YzkEb1t)GHx;e!!#=xnaQB7L(IaUv|7z zX{ocFzQ+Z{!7(Bw#ooNXU}I7@rr-*gRpy?wz6_*|mNv+WnBS-snu z6ka%P8BTotQ?zI4IeEi1#CN&cAC7xQL?|$DE~DifU0@Wm!Y{PvMJQ0B>2ve|c9WXU z$(P95TErTC(O9cv&u!?|L%S?+FIgKWj%DH`B}ex?m!a*3UFUpitaZ3WMeHjNx2nn- zsbH*Drt&pY+^Ou!YD8vM2xkb*LD3D-Y5A*O7Wpz!?ro=zvPy0C6#Us6j*aUmofXk@f0Z0%z3&%wT&eW zew+OzNo^#`yPYisMoywYWNt_j-*tgLWiL9(sW!}9ofdVC(JKrg=?EnfC zzH++V;UueX8;OUf=Sy@3Wdfla(!_UNq@AQdX6$n(QDpQ2*{*$jlC_5u4cJeeO#k*c znH5En*hHO7cVtem%J-~?cf-UB>0WquljC$ZUCux~**aWi`^i@KKHEGwcB$RZUZl4~ zdrxGBM(wc^saEj!GV8I$Dj=&@1{a8|QOi;jSs8@SXx_QpxH{WJX2z&9d&2fLr!ad; zV~ij2?AkLjdumU?IVs7}ea}^ByJ6QkSDZqNgSPKfCVGZ4LNPtjbJSUQ_LHa5qY_QT z^h9@)ct@^f+&I11gpwNuT(qmYZaS3`Gj^ZTC^3tVBNyqB8KFesS<6nNM2RLZ(wp1x z4~(H1&hU~XiRMf$H;Jp;B>Xn>Y^$u)Xop4A(auGz^1TyeaYN0;Sc3m;S2j+|*W8!OU^tSu;1MUMsQ zbf!kUA^c!_zcWlyv`$}5-6WP1Ny^a_{(P!)J*cGV!n2&XN$L`v%S{?!_dHW_U4rK? z(Yd0M3m(tANlBfnotwlf7A<`(!}7qurFoaQu9=8z*Zs~7gtNjAjyjGV8)a+31yAv= zf&KL{Ru_9-)M{6}4I3<5QMpke%KHN?OVX$3PA0Ie1gQ%v9=!2~)q~0LgA>QR`^4%c=A&lR|r! z1ZUF1EA0-G*rEKyJRk?J1GG3}y~jcX)ot+X<<91&gxeNsT`?G`8(LC3+M#nOBW)jj z4$e-ZQZJb*?I(s>ZQ3vMWLah3bq+2_+ABn}@+#V+HG2-XN&~QNSV+9a9&s+78E`JP zx#>MuZhAc`HTJY~*$`mFzVcM7TPf{{T}_*GE@xE_ZKt!5aYuZv*#nAC2Ox4ol6Vc| z`1AlNr?{IT+jrN>W*ePVqMqMemd5jjgT!?U?wm#ga&{Hl!ZtCH z#Bk&TjwEr%+Y}^OV)k8RDUQ)*F6`4-HIfM&7Pl{C?JoV9I>T1l7oF#6+C)Td z$PllGsN{L{AiKKrXxcK5hEAocI@+o8C^769v$N+}y~;bN%JJ=0Wp%l#oME>;Uw+*z z@vD+S{zz5lQq{Sxt?E3rOm(g%KCU7?^<%&DEB?(#@CQ)B zV}?J~6m~8s2BsUnLN_2Jl@<9<=uiI0udZ+_w_AzYZE72}TQxYSU97B#ij7pt)$dBa zW1uAZpncGEYtOiw_ztaUf?gs~u%fb9RZi)Y-aS?k4e;d5)!QfQSI0uur@GP=9r4Dv zl905%W`yN5C?shcIL3s~1(Yz*@VL7 znSCQ>dh*JXItq%;c573{dpSmCueiYKS{DAjU!4i8PzZwbU+d$!789J#${VEN4bv&}Tu>db*+L+nbp3Y4<%HoSM)PfOiB%f9e#z^47c46FF~x;a)sh0_?43MUTL1vP*Y zo;JLsOL!ZU6mNk|BkT^BTV0C9IZgKb8T<;DYh^xb%*Tdk^SzAu{f&7^m++-A?@XDI zW^fMjsq-Lb#)#Kh6r%+)o-4rL3C+CG>F+pGrEQ_GLy_u0#^UO-g3MLzEY)sgn@9;$ zNa`OLiSs1is)n-=yYUAoTHReBe5R~7f-?sD1BI63TQKPV{2}ZVXDFVH+05a!y zqMq727lIPrFubHo=m|>7o}fsojrk(u2_$R1N? zRmJ)HTyH?$3j&80Qu<9Qy@bp^(pRxygCIkbQ(4(^$_G;9+Aacgih^m^M~{j zSLR&yq_YPzC}j2}|E~KX1xi1p!G=%tEPn}<)DJ*O`xKP$l}Yyws;CUI-leKHD_O-1 z`;AMiw!@_yk&6u>cl?Z*TR46=AFpL)X&~;@Yl~i4a_|YWmHFOmZT9+D*XLkR>~1!E zyN&usl-{7&5W5my0Hy2?4e#AT%`tvZpD|I^>U_gM33snm_9K^CJx@=(s?_69c%B)1 z+fjM_#X4$qN~E{MO5^EV)#vm!S2MwPT6uNLpLcWXI-B)0Z>)myNP-x1yFkX&-6G zlS=i5yaUNABd`6)WmfxmYOzx1|AAK?{zzfs+VM;UuS_mGt!3B`J;dMmfV}w%WF}vM zjC|Rd@a{S5?Hbj77Cb%eA_2e(=K zHWW6i!Iaey)wU0xto2U@r7TI8aGxp5xsJ`kMJ3!+%-~OXdM+&kD6gt#iRwAEZJZrd zez}nZH@Fp9(yAh9Q<3N~x?pvz&Jh5mB9boQZBvmx#8baxSmUWq^PLgoObabDLT74@ zFJ(S(pT<3!WD54>HKaYr?Aa{mW%jFASiO2iR{K@aJ8YI+!*%Udi_G?2Y3*~8I5@cXx;<|OAGCCLG z!^{jxd>@qTZQAL~oj?h_LDw5OpI`O&({a+$BJ%Tx&%82c){(8Mcd=?;eSm83+gEWr z@7x8-(aBZaEmc;AP;Q)ZS-bDmJb{smN>UO%Q#415s_;O`IKQ(L3hxGKnNay1g-b+$ zu9W4d;VZqF`x7W(wc#aQLQhaq`ap@#xG(zCXFk<$AuXycQMGkN>P)((ST3H(Thhc= ztow=?8r|Yk^^mh4bH*9^t>qYxed<%6Lf#qdmH9fAs!mhwk#Vb6sW@RGdF=YQ)vvFN z(8^JI(x#fY61=LLbk=LSNjJY{zZhpE*KP8vFnXtwQ~D@O(*i5CZrLkZ_f$~#AI)D^ zt}DkX~y5mV*Ko`3Sz7n1?4W-r5|b>8sJ+{;5d4y8Cx8a#=2*SBNZI4G}dcRRrgYWAe&;^+l?_u1uBKBWCgZNz5)YW;vP0 zG4nDgq20v1+30aT_2Th7Ww{FF_U|z>t?|BC_!#lvl5+XR&JM8>)(8R#eYz zzsg`*e9S3e>a)Xq{R`@8gj$AD`e2`04<+oMXIXoc<=MTjwR*=x6`WWMc^AY285TGI zPdx!;-D+1?6v(Rhyh*mYGSh0&_wnOOJ$F&=10oL8Q_n;F?v^GNvHjhh^{ql7kGCXL zb*1fVi&~6G`@%etx&m7A6dAh~sjg&_%ms4v6kpZEp{;R8Y#ybNth|*~2EmzSivoD!#?KM#5WtRTV{h$|zzCY?4ks+Y;`VpXnEaV*_1u}FR{=u2nkXI)!I|`4B(r4VO zLiP7*Ug919&e|`$^vKHHob(o%%!YM=d_LQEy|vFU&N)@*|Bd?s$+jCiyLIeGR~P)b+)csFYZAkTw(4-lEz_A z7>7Lric?k^`B$J+#C>uTJX5I=koUojS5^^Z&W&%!I^9;aAJ_6sGOjYTEOVT$#JOXo z3QAoBwk*=4cq9Q8J-|Sav9hI`N_%8gd+=M6ue&PC=*8a(`6IGKrLp6E1h9>ALL;@^ z(V&FLNG6RG)cUzeaI~Jrp(bfFilDeW2F8Z!JR65ONvhv)-5ujV(GDN3)AjCz%lUYA zDeP`K4GK6n1_Abbm5@r(Aj)@`(-3Tt7Rpd&9En1UOdg~&{M$3O_!%) z{V_d_8@f`NO1`xbjFq0Zd5LT@>R;g_i$RDsNCXov0v!m2L( zEU;PsEWqyey&J7wd&yO|hVHlxPf1rb&;_Y^daE<@7TrBhH~8%X9_4|cOqH1FyCjMY zH)_Q%KnaK59)A?3Vm`B9LE(s;t$Chk{Rn)-$35YzgMR3Aobm}JFOZ<_|@Z(cUpO6zFDPe z*2;FOyt-VKkF$s0Y_%J^uU`#>q7UYWQ@|tB#gw<)sOGpIX|Viif#}N2vik zC}H>#kw*lffCNY*q(7Kr&!546kw0@G%~4d(0C{WW~S&oSDdBuOq{AcG!vBY z3FtO374@mzCYwsjLo_PgnMO**y=i8k(2 z?R8X^9Fx(>$AO%xm|GR^@F|dCo8wK@Ns#`vN;&Zh;G@oVJ1z@fSu3GjtJ)T1)RRy4 zK-@N&d)UEvO29@;#Ja>)NOm*@5!gjd)-;pBm32bni`o zSLV3wX=%MZdcM_vi28-E;~;O#y)wNTwvi|5G4I}sk6~`JIy%1$M(wBOTOBW$+gP}@ ziqV|G)JUoiI3a?}L#Rj zQhL%;dhV~fl&ZAOuooyUKLwQ1CBKBXP3hv>=yIj5hMWida(y0O;>zNVP_NmAk6AO% zF=-)hrUDs;!%UjrL+(=oiN6j79;H(~PYDX-P6f(L-cCBRGrn)rH_7zy^|xE2oi5_# zLVC-&{PS+Ow99d+#H7)WQ%)FkL-6w*yDo<#L^nX1I7oB@GqkgYfD(=ZMP~*m?we!M z#U3H9_9G&NR&**Vm;&p~6o`JoBJz7}^jJ{B1jAPhY^w&c2vp7Joa>ma$n2JGA1jZx zi^!fv)#xb{!G6ZvJ)yr8X>(RTSSf?kn zYgE)=%wP%(9IADm0L87x941xbr+bh#t96F|4ivBM&(2$dcgaqgI;F9f+f(i4RIsGK zR_xy29)73Q&8gHX6bB&|S7lHRzpVTDLQulND>Z*4D52T#KN$XtS9JPzP{P-*YW`PH z!m+Pu{xnd+BZgo4n*RhxaM~)Za6Twux7Rh_8E~B(L+g)}nmWI&uzhCh*^+?VSK|DL7L{3+ z*#m=QC`zF(Yg}DBkIWu^m(}$Yela*6suLBN33UO**=rsd51rtbm;2Qu*9^}_3S{yW znta9lhLg{0KY16^K~|JndQwJ1;Ge80oAgEa_{}m4l{yEMG^s9UWU8B>>9eIS%8B0( z-{h9dR$tN!WNZpr=i|&@)d{L?u(}#Q$wU8kDxY9qeYe%+5RNTY10Um!E_oU#jbFzj zM6aw{k?Mx5w2l$cBDdeTn>}5_BA;3YIZqO$vsq5Pviu`VyW2fxU1-1&EaOgtgE)gT zd!2a0Ozn*2S84ulpoAX`FV5hsX!RU4^l9qq+$6J)n_5{Quj;{rD_=+DZpjklt2&@m z^_kk$e(WB8j&~j_n@Vs%x>NXiP{MnsX}$@RU`^6|4^YAY!%Jm2#$J5~y(N{AfyI5C zSEgqM@8g*tDAPyz)as+yk{8TFEp%k9ABtqnkO|=>31PwEx;AyQ~EP|l$Z-O$Ib!+q+p)vs`np&hyYcinN$%3Izb)E^J$R>kg>+(;z#*1J! z0tvSm#n!G$7~?r(Tyfn`Zq`Qs21@uG6kAoshVCDJ$Ym#*cbk5lRVv)**o?DrG)5Dq z#topO$&4F>ZsB_5^5wD-1vV6Rp<=S>Sp07f_F97&x7HShcl81-7(NrRz#n z(bS59bYEOvVAijcMdSr$F_2@=IN&e4Hc*f*1*Vib3`$6W&Jws=fh@m=*K2y!er2kw zuajz*Ez8(n+;5dTb0&j7?#7yQZUFyE2!iQFT6V&Njz}#5#TDxf{{tv_s`hWAdQ^Ak zXO~X;XBRFXG8eaD_cruJCuHn~4MxDo4GaQF49w95RD;3~G5iUj6nL89Zv_4DcNqRT zQ1ml~-(Yy}wkCKi-zZ$C_4YoMWniAp_PaSWNuM|dkn;&q^eS)jCefsspo3HN~#YrP>} zNL30unngT>uU%H?AoXS5K{;d7F>L-zo~+AX2}(H` z!%IF1?Z34DzR2vC`LtL~G5h6^Ne>&07>t4e4waQQT?I<$#A9=@JqQ%5CxbG{r+^aX zf}&rw50A*dZI>&{^0bQIN9Ad)jP$`{tlza<`(hLz$_X$rQfK@Ll+g7E&A$ygPCvq4 z{veOe#7I;sPpOi(!PrQGqL(t5Hkbh;hil!BK?yU$n%@FSo?}Mn##{kPV;%r`!}(yubEL;h&v8R7;Wx6PBVP#3&VPJMK5S75dx*aFen8^KxuUh zlvX!@fjzbD!$Aqhf|6&_!9*m}C7@)w6_iZ(g2muQPzrP28u1NR=B1Ha7Mre9$64x8 z^h75`K@!piGhpfkJtP*ssMDtXRaf?EP{IXiUFmKsH2*ayw#r`8^3I@yLqU| zj^s@)$h)EO%A9RDFU07#YaZn7n)_ScuF2v!ebwdDCbp&SM*;)zQKXHo|K*@K{sT~2 z_A4lUzl^OW*$-FG5Rr!J*E>si4$hf77~?2u)iKL+>=(G;$xX>hd0$K4C*;%YJ0G?N zIddvPp?))bqhI?~_z}H1`a39LyWu-DYJMOnlDj2q%(7&~TqNvKo|DzI(rZ%)1GcQTBu3iyqKBwcSAp!3XS{9x?Z$ zNmF3X6v&SXPJux%dat&BKPcf%P%3eRDYp;t&=Ed$8szO!udHhC5`IzKUA24Kc_!qn zYO5&oRCyR9Ee%tUV8mb)Onjh+{B}@6{fC-g0ZLVdeWdvlL8;I?hIcj$~+oe ze?zAq1xlr&py)kh1L;yo zmI_M9fx@eAbdLl;@k9ue@f-o^MHK^?x~c(`eMt%|1v6myT3z17poAMhX~46fl#&Lq zv4`@_=G7Dg9Y8U%FDOPvfMwtdv+d8_igL<`Q?VQcIN@9E*#Ib#AZUSMun3HTQqcq` zWh6lhaQ1o(OtiP`CJW$GSJ3!Z`5+rY2^(P|64hE%S5yPJbijnicw%{zo&jY10 zhj8B}l{+0257dGZt_8)*dM#~Ru$9W1hN^$*h6euCgG=xux?2uu)WYeY7`(sH?)A7C z?4>90KoOZ34w=khFxQ~-E}5_Mz6FZT-wpq>;eR!J@HTDxKv2RsQ1nkW@>`8OW#rG? z=0D7-%!?-B6O-Uvm{`Em=lIoy=la#+m(86_fz1B)aqAH0$!UlNNI?-Q%^C7e{KOhv ziA!qiW1g@EIt%|q^d2+~jiD=f5+Hwh#EC!jg1APhXFy3i??t`#&IE<8=uxVAjBn2? zROPB{hV#p$^W|59~iw|+xi-m zP`W@*j=rFTaiCQ9q6O}A1e37DBs>d>(f#hwvulp6XWR3j%*Kr2KL(|8qwdzT_d`&Y zf}(pgUkyt77*On;3`)2GlnTtfC#n;kFbN-1}V(@}8iC<3Opy2}ZsOlu`n>8ZURh)zMSOf}%JL6vIOrw0s&U@(V$ce+o*M`{!$Z z87QF%6umEvyn{R@APfgZJ_(fkj~e-hw{fYIgilPu7bc;H87KPgKtGa`8{8P468)ff zgAfA6U<4FN43vsBfHE9Xpp3-~DBYg}Wh@51*O#nNoQNn!K*<;d8?G~z0?UvccD?T6 zqe01h1t`WAfnxkgP;4v*vl(m$`fkvCIVhFw2F9iK1BggC1eDh4SHU{4 zaci&I&uDoSOf596k5Nep2~hGU!Qc^kF&qaX`r8B`{X^bC?VgBA}?pK#??vq33kIw?GM+EGf|7P-Q2XY3Pz_!KCYj*Q{UuZ1C0 z^yIbKS%F-KYqfMFt0)DGG;*Xb7_mr?z7zLYN2Z%vD_NwfAK?m)^aMIoF>KPgH&|z z8h#^yT8CsmEs3^DTlijHchvj*@L$B)NFLd2WP_0<-_7eaAgi^kh#I^$FAS`gI0pWf zm#y8%v0OfmFmOo3y+XRS92xs_{dE zuNrJLIM-mk!Knt1F<5P|(qO5^IG@#P!<#p2TxalAgU=d#)ZhYxGYw8LIL=_$V8~z> zgTI(^t~U602bq-HjKXS@@U+284LZ%|zg~{Rl?of2VzA!e-3B)s41S;+G|Av9gTELY z`620)uVzbxkTzKKk>*DmoMUj6!CwrH*`W328vM{;-;cHYJcExK%o!ZSD3LG&bY7o- z(g++W{|z*KUTtu=!K~5y+~D{2MPK;4#w$P3_WBweWiV=Rw!ub&Pa9lr@C}0-3^p13 z*5EG&OBl%#0tWkPjH`i0Fw$Ve;3R|R8N9;a9D_-NPa9liaIL|t!6t*>8th_5#=Z`g zGbD_lW{Z95m;V0#qV@KyFa2lumfM@Y^mlFhsF_>$zHj@#@*gs`&hWJcCmKB7pwmkJ z8)Wz{21^Y7Xx57+gBiOjZT)$-YIVWc^+#ShdHRWUGp1d5?$VFa)~519zdE}21Tpw9 zohYlY_)usL`~oNmeetf}q3l|}S_;1jYWvyJU*5K+_@2#Jsq!I}Vg0wyIvETYEH_wc zP#N5IxYp0vuWzvSvI8Gm+v1VGu+-((;rw#T5-dw`zulPw#07^zDdK`-p(ODbcptRy zjno?4Y~nevZ$~W;fqU}B!-hNfIS6#WegNYt-i1FylC&JWo%jOcf){n=%}L^d*Fhrp zeq!PMWe zM4kX&9EBT^r$P4vB*C|jqJaA?2P=-Dvc!YnI7nVymV*uUIF>k-2!S6TOaE_~M+;!u zj?qf;Q|`;h@#h?t>93#O8p~U%7|MWK#^KV%xEh>wqV9qQ@PzSHlmfiRy2cTHxK zdMlLxmrT*EPlKDGt&j2O5WMg#Ug01vcm=eIcmh0Os;-c{+4?m!7rA`Y_W3z@_ddJ` z#(y}M#|ac5Zv{L6y|t9Wz-^FIA+}c!KvT&eTdkKMX^p&V`_J=vj)u`3c+-Wv+C<(4 zu;lmJbMiiKyBT;39eH8+9w_lBcEBzdJ34U{Byv<8{YPeb@8Q_XC`{tugHZNaY7LI6 zr~jyE1iTEAO314n+o8qi1TSaP3CXlfgP|+5j$kt+a_^BSa$L$OSH{_7-C_};kD>L% zy=SY)xhqG{RB9!1!8Onl(E;6qTLh1}iusLPa2C`+-1`xvd?5KV6v2yv7hKJFBHj=u zvJ{fm$lc4(Yx&b5t1ai}ly_${;?ooc2Cg#$6Fe50NsHwto|~cP(UC`2H9SR{y$U(l z`9>BdULp#DSI=d78&j86N9={DqoJ)t0R!9$=BagguAOoHH5kC=W1A8zC^ zlNbfxgv3Kx@a8|V_|O9W?6X=1$xKOuRgdb=Z-e0FCY}I4F!3xn{4s4O4BiDbJ|D*r zksllew?B@%ATgQ%e|myG`;%30f{>gfbSb2$oZvht$0F7M%KKaWsGRpbE_t78Ei@gE z3VsGnBAx^L#Gf)X0uOy!&u{NH0p9oi<-35`GfYjoL+}q!6LG;bw4S)&@@LID0iL&% zF+}BJpbd!^y~ifSUqX2PG6oS!f>%LF;t8Tr>yU8qHUbkIKEBUxvj^p|xw0xhmyZ||FXF}xtZq;Sod|d_ zb}MYd>M}p=;#qw9Z+k=FKcV;44sycm~{ilb)g>@J1b%Th06lZVwS} zvzeU<83a2)bHxxi7LwM-z$7H=x!_)(vPF|I0X_t+|1;hK-+<)xbisqRppPBFBcWR2 zQLx`<^uL?|%b(L$H$Zc6m-jP$?1G}n}}yc28pXxGj4~R%>`KcxgOO4a55zF&_DU=@C!!& zBDw?I{FU}r4(#(aacqXbhahK0fLG?|{~!qoBHg~xE)9ayzSXN<49r5}YQZD_rHw|w z=OHOL4eq~H>!iSgzteH=VSaMZ-&4?d+%C8V8bv(&9rJ(s_c}uiv>|7O0{8#7=^AkN zZCV}#Z4;NboHzf#B13=6ITV-t$VzuNjR8YHF%F0e-Ux}S8^C50&w+<*7n`jAVIt=` z41)_?YU18+;p98HOQ8^BMX>9y^gnU$Ss9~|$srrdDA;@0#&yUxKn=(R_f{Iy07f~S@gb-jx!^Ow0u^}Ho)2WeQyEZ;GiFg2%Qy`^6-qRrEw8%Y5eQE=S1cyMYh9GY@RIjteH;4*0YU9<+g zl>=FF#Jz{J$RREF@EPP=$OT`4o+s}83{pOkd<@DyVuAb&*SUgzfbpLCA}7K;05y_X z@Dpeu@s^J+X|a5eIevEvAg|za(Bs6@VE>NVa}n@9NM=eB{K&}VW6!~ze5x)^h6s^m zkhnSx9@trD2!nryL>}nkQ;Q&{J3#kvPr*KX7_fv22@Zo6OLu_hLe7c_+9sX^Uo&y} zupoW{UlD|vLJ{yXNHQeA@+wm>_%$TAS2^(NZuBbyHUUoUZVCYZVd6RPmL58<_jpn{ zy7Yah4m*NBL(!Y$Z!7lX%l2M)fWFUxU3+VzAu!ZO|1=|bA|#cIf*U0+-2tB8SI1+Z z+C#?$?=bNs*sGtG2f>F-JOv)KC;cym!h3Qs5hU?6IK01+gD;zS20U>uEsug5O*{*p zJ3z~0;I}5O_QqR~*i3-Gn7A6~Q>Q?B{U`FAVbWmLJ~|-?UT)$E@BX)$od(VsF zFex>3C<70pf)k)1@$fLF7354ma24cSnuq(;d(if$sRVdhm=VrhR1^%3^r_i5SPuT1 zxXd7R1hyfu@SI9o2k-A1wC5D$P?LXNA!7a_?kumAk@C_E&$Y#^U2 zId%k}tl=XxDkQiCT2EYFE1GvS6A2-;uFAbpedKR`rImXHL&E1_*1 zaUt(Hbi9PQ{wA#lM_q;+kw?H!A(?)1gxxcjGw^6Y8cbY)dnGUU_?5bA~uF4`|wgZ!2=$^)i2;7a9WZX!P67(aV&CF%Riur zlnchy;6=Rs4-*EjgJh-iewiv?ty+ue8v0ML3)Db72%i22+)dnjCXAdH^959mO~LLD zGkA%651EkzXdZw{7qk9L_hi041)wVZE$o8u&uOJ?w2(DoGln##X! zDW4j^j1YVXsw6J>B2-FTUSld>!gzXv!oY>k=;@bwmTp~Y#t`Tp>l2sA(a&*3qxFIl zp(VrxW6)ya^1@a9auykkCO~<$w;X&Leq7=1@KK=4yYx+w>Kw1!2Dsh9-^uGQYng7MCO z(@J5m*E*d!2+Es(l37p=pIY}i-2}RaP*FxBpE0UQ5R5~0#JvXu%R#~E zCZ;BG!H=LC;#sh^Suf9_&wZ-xKPiBfE&yH&N$VTHO(vcLXMLr+SWYs2ABs0Ezz~rW zzt)Dle|k&SHbY~G=fE}J=v6WcM*qbcfLw6?RxMA0V}7Rf*pGlyA(_%K z@cCa@&XK2oVg9dHoZ$xJ{i8OUkqzaho(gr60>Ea-8P%YBV6@E&8-oH^Kf2-(w=!@$x3XbLl#0|tF;A@cdrT3*oc{%ZdN{#`>j^L-zV&a0| zn7H5%&;sQ0^5e^U@WoU$jQ8XZIRRuglw-9LTn1%{r$Og95#oY$zDg4p>PmP|7nG9+uYtxe00lelN0-H6fOxQon!!=bsvy?-oA{*c!DPz<@?1}I8A3%Y-ZOYkyi406Gl&`{!@zwi}z{?ylX z2h&Ot1n+@LiF=Q}mm~0Rf@V`u!GA$@G9!M+i4>3=gDyA^+B%zCE$}vI3vutCAd^2& zHe@g#_#hV?KA8Sb!-Qe(AA%v~dJ=pMl4+I!A30R_rRNWxIe!do&%-!?lDvWkLH805 z4E3vNklfP8z}HPY1MWRc%e{YGZDbtbUCvF0Er$e_ z8AsguoD3*j>5EZXIUJ~GQF>FI@oHi4^UZD|e|-6T_sQz=NNnjd=T>h_wyre67@6t&L1xHuKiN(YkF6IYCXsu<4;Kk@K z0xvFU3%vNV(8uANN4S;(T^Z?5Q2=K=%8;WK#kuGX{8;=zyy6HhTF2ME@d=q#=;8)y z21oaM6{kH;pK$|m(JyIUytwdJffu(v5qPmX^f`F`N!}ggS%y=e3c4T)<5G%y!2?gx z|9YVE9DM6(PU2T>O)&E7;3OOFLK=!LEQjgh_Y%Pa6@#}Vd0TGdTKFPTJ}zwR2(BFq zrbvwyXz^tc zdL)JZT_|#P zwW+XfES6H##-+w^)^=LxFwG7JyU3Udrgkm%n~G?M`a!~v0;$r)sqZ&BVC+>SG^HrYQs}V-xatr z(x{@4E;z_MLEno%Ms4^jgP1Cq>3`7=NEg#@(*JWg&~6r=AErs)ps9~AX&^PbHUexu z#>Avr!oMJmh$2+59~DkKf?U!IaQ<=n8$T8+2(LIo9*X0|kI@Qz`2^#?tw8^A5Qhhl zhEpD{{c|``z?YB;RDjb?1~-nv$C1*L@Fdc;`nqiHZ?t3wL-Fqs>sh38I^mgNJ};1d z7EXVkF79Cdk79m;G@r-eR+Qo-Ma%6+8T_B%x>NKq=ZMcE-K+~*T%kdcE|OyOHmGZj!gVTJjX7Zt*{3!jkL5&l4NdKHdWCy5HVD=&UK^omyL zp>=#1Q2@zzQH(#YDB9z=vot;4hIb*47HWZ8Q5QZ3OQ?1Wt$vPHKS%#x{4Ea`2OTKB zm7xgtp-=FNc%{fv?YuDTfAPjc!(C(w+mH$uhuct*U)5M2F&m={%dUE8A8{yR873g@GE z9}gq!3Db)(ay~2sJQR9u7_|j8C%Cb8gxZG+f1t+jEIQavZ9a`yvr*Fkh5IaGJ&IH~ zEmikJujT3|La$}vkW?L!r;Z z)1fcI%b~Zvl@N($2qG=}54YaCh zap?2#4AO8a!`T-{eEQ&nfuPQKoZA8%RFD(gD>+u2`d8mr50#kJBk&i8Hepp%+n8l09%W^Q#n)1FCY z*z?#n^(xIg=Ynmnj#TzI#YyJ5>P|1^?ed6OKH1z~WA`=mMf)22oVO;M+pbxYjc41l z$*i08oP`bM8_vvnGuw&QQNHE%rrAl#rRvON6{mJw!Fi|NeAg)`wPp%GkE-e`e08ei|KQWcHnp`_8&W8!YwWnPc<@+|z_LbDq;9$&D~tfmJEl{7o4g?%MW z4Bx^AH<2?FaF+jU#)WH+b&_v?;8(%2}vg-Ue{>`wE2bEHMF`D21{H1rc!??{s_;s ztS?zR@FkWFr6-pByyYHgw9IE!ZY+(f$&XcT!A9_ER(HZ{_tt3AbVXX-Rf67i45;*J zeldo3xUbcB@QX>-9oOp4YjwXGy3FKG*6$?UFWk{)NaE0$8clwo-7ITJfIt!qgL|Q* zdrCL|1*h7+7sP#SO?6jueUSRx^Rs#_bA5#RJm9l>khwlieI8}5PgU#nP4!&M z0`*3;xxv?Jy@9#DQLQ&L*Y~OQ7<2ukT8}l?FRJxM=K6iL-q>7scq%&FM6KuQEpMm| z;>-<7)Ox(R&YlZ^rsleXT2C<7>#Frcb3InAH#667JQ46o=DO*5vZ&`mWy@BgIJY7Yjb_0 z`n-*~epsz%nCmCidfU(H?acLy>ht#I`VF<-0rgy=bobR89nB3)^-kt`iTb>=x&BP8 z4>s3r{uLq~Vy^qB^`Yi^tXh8)Vp8(9YW;19CQ#LS(~WoL27{=9RxdBW6$1L{UtZ0r zNzE&N7>(M#hwXMxmpnW*8r_^}dp&p$C!=)Z5%1~jQ7bB*%ZKlvJGcj?~m{1<1pFOu9fnsod+{_<7+M>%kkj45}7P3>7e~(f|A(e5*?>tr04& zyQ$T^!Cj-g<_}5pvWR8dz)~3H1E^_r#adktzesJ~QSaVGXXxJ%jYeF}{{h*v2i(%N zopkI0@9J7F=z>NwU#r(;pqqwc5o#riDlV|Dcrah|fA9mo!!9~+x)ysVi zs??40*AMtHHy`Qyd)(mGQ7XR2o4N;A-+WKfOuv<5qt&Np8fNm*?z2PY+y}XlG=8hp--OdB|qj-Pg;DBzwvN)9Se?AbZ50Q=NdrQC=Wy( zjc)wM!#$nTGN@MY;}nuc!H=`l%Y0n4`qmjndBJbQg|2mwHveRHWuxpPnhy&~D;O4u zUkn~un;uoZ$LD)?W6gM}XMO4KKHR5PLuvCJKEcb!>2-=eJqthkDVJG|G!^^GQCgF&l3J*(9TV zcB)bCZ-QE`LOm3U!nRVyHeJQG z7#CGfH$gvCZ1-;wE45zUD8n{NU^``kEN!z^n z+&~|u=i35Z!qcuunyA9k5Ewygt?q&$+nIW}Dh5umX~fbBJe~>~K3DjEf$`GC%RD-$ znRLvHj|&QrR(SC>L9=VFd5-q_HW@J9L5V$j!+c-A#G3{eORW!c>yTQ~Zx?w`NR)Ix zfcFfEmY!eYi$Z!iwQ2-fxvHQ*4=L*s4+!;(X?2Mvf?l<~2QNsP zDHHvIG&v4N`QAkmNIwV<1_0w#sMYE1VFt8OXAEKA@@b*%r9&6__0UL3f05gS)scE$ z-j3GA4hl;S+r|Hh6>6))rk)`i7 zgxG?DE`6I(9*f5)J*CmDw1oca94rLRiX9TD?WThMcrQU2$!q_NxGTn_8s#KLaIVYI;thvvna>Y_XYWm;86 z6ERv<@=*Y}>K8l(y(bmvofq`JDw32l3nUjg7uZY4_D`8456H14cj5L0?%Sw^Cj;5nC_hK5Vof!{@I#b|;cK`GhW|tX3=e~rLOyMZ=~5=27lPkYg_06JM{<$w z{=&C5iM6j^mlVIFLo&svCk)5<>n15-j)YL}`4~D6bc=BTy5k~tEkpNOpnGqy}pbLJdd&=okO?|k1La`WCneBqBUT{>SG})xCUK^Do$N{;~OC>0l*(xJ8DD*V5efovQ1)Yj+QwE@<)0_gk>eplPn z?Kia3T3k%golI$bA;qrQ1;ZJ-gLQ$wZXaPi33_Xko9^Hd9hy4!s``1`G+s9)Q1aW! zyQQ?NwP6QonP-X6Ia!*9QHGek)6iXS!(o0ZJTQH5AY&>$dH1Pjiu^*s46bwN`3VmFKqZ&HmwcTZc=TRe1F_!BTV;9@{1) zY!J9TJ`;B2bJ?!G{h4gX{AiYK_aFJDHa}r-dS!HyCQs+PGgh?HSV7sT%I z^mgs6!}k&=#*KV^y9Sc;CVsbFd*4%g=w9|lq4tRwN%#;^Ms4FGqukPTiS~xCtayj^ znKoU>Ny0R5$S-b|18SfKxwHo?X5Wyp732~+jd0~1)$&;#;;nz&P584m@N*r)r8OJ* zhYsFtJA)d)m*NqLG6*;}k5O?18M3A#N=VbSgfrlr7J4Kl@7{X|(#s)!b7M_@iEgx+rmO15f zVy^`;UjS7kW?>@cf}V7*$5(d@m)cb3=Q|cMPd>lXN;aKGbRI2Tx8UnLzjQQS`fQ}G zt;0yUvvvGTmp{0Ds*7~=TON|y&PV&LV6I@B5aiks6$II50w(U3uG6K{Yk5>R|5_8* zQY*`YTX88!7Gk@YW$wvhKDt|D$HC+9Ebr6oi&`rw-Zfa*!X6E!UDbJPj{ysNraMNQ z|BSuLYrvkH^w(-Wv1f$Mn$?1-n_KwKp1Y*rF*^qLvSm`G$9#NmkBEn71ngvWf>$@n z2Umh*aSIna*nM2>anT&F45Nf8zh)&r)_aCjx0I)6#v+oOnOR>t{1-o%IZuj2?z2y8 z>0Sw6*=M%Yp@fHgFl3LI}Z3>x-pa=7;x3`anWZi6fG7ktY0ix*nr_O%FPz-I5W_~ z!shBK!Ye;q#eW?<)iD({mYY^r>kGP6!vV!=q^~43TJ-3K1v~U(vjCu-VXO!Q}<%gfUr&QAuk623VcBj_L zE9sv-%6KxnZ{8b;!rVP`3DEP8YPmAp$nKuL>Kc!rocP9Y#1>SnDNa%@ro|CnGE+cO6d}F(7h0F`|#& zK{}RKmhO+Q}bVC@I{})f1~4@N4D`gJj-ZAMlfvxEpMlc_aTyc zGZ1Rd$C_^#(u2E=svWeRtZ;!laOaB%IFFVb)Ml!+dunaX54``VfNHz)0jeur!6oe8LQSzNEWW=e~j|3)}#!{=<<0D49d*6QswspUjT4;55OKJ+P<*C#tiy9s1 z#!rJ1e@kw+r{6v^C24bxM)#qe7@*c=jb^EhiVl@)^u5~1ks66{NEeMf zwXvUgDjfzix8S9yEo9NcL({HYiw0=%EwzXtmhbSa(H=g(A`M~|pf>NoYDC^ftzGh6 z=wT@gyu(cX=jgyXsbe&n6Zj>L)o2dm_a48=<20Im_`Sd{V!TH46@F{+yE&dW8q=iu zN}3!<_2wORF`UZf)5iq$wy(i71wX>o)D+J^%0gqrKj@qfnaqO9C>cd*hDjIM61qRb zG%oIH%^=2j?o(V0StTMeoof%K4M`1o)v+E@^hh2&HeSk^!3T|vkwT~QZ^x!9-UC>5 zsYU+6aSa^57YX5ViQW&>dBHgU+|gt-z^>l1!y+n8H8Igit(lm}QftJ7VNM8QszcGV zf0xtRD0iHW00{G+qYm4!1V#atX{)deln(w-KsP936@`}MG~SwvCGJ487E`;my;=EaEnLDPA!@u4h_&mQk36=m^F<9%)0)Df;{Dx$8< zdHm*h-@1_wjJz1SGbvA?wbY9~&QwKc*;%cbdbWo1@CnXRP#@l6LI}&^BPP@$UygdT zUhUDV`P6|p?**7e$ja;GUbDhZD{hp zTi%(l7-EqT)j=b8GhK`e{tM8GUE44@G?U0#@>c<2R=+!cz0iX*>DjX@Y422bBAIMhr(na5R>d*ew0@~zYYdt8Q|SnQ@3 z=Cm`)p(a9qsDy?PA${C`P?>aL1utXx)Df{k%e1mIylU5F4L>)*%HIP#q`{reAlwmH zFtr7{vS7?pbl1SvSd80GEgIgxs)l6qbyw@fIcDz_yhoQiVerzcdY zvT-ed<@yU(9XYNlJ04TpmQWgCPH4*u!5*Y#_sxr(jBVsSwo;PS`PvcZk-VXW8NA9v#Y3dnCaLz(TJn>(MaGBDF{BviJ{r507EQ z-f6@6(I$g{OlAkaOj__J&gT#GwWYwL+-hzN`%HRhs+BOU;mBKn5J6J?%06^ zJH?uhnB*`QpFjKp>9B9g`&Tr}T!x5uVO%$2hNX_YBuNJ%x^0@d}?vtP>EW!GOSp*psq9_nMW-M45ulae~XOyy&+_b zJ%u1GYfm8Y$?r+;gr9T@Pt*9p2`de_c@5c>vggUw}P@I6_yL z?TNtu`*GZRVW96|!s@GHO%&!pb}Pebz*80LyFol}VQ@qOTqnS{q@kJ)Pa9XGT!dC+ zRzH{1rooU?y=3DD8YQtN!8p01G3lcXu0kJOP#~pGR#l`ctt!G;j3F%)o%`?=jFSf& z#E0>QR!L}Jux`dT^Oja`Fa-_!6ZutleykX{KZnfB}Nec}^0sRv4A*rj6)=?ME!;v7Z%pk4Y33>jnPWuhwUo4J@ z7)a|BR*=2WHp(5pizQx```O!|KJ{p!HR6NbiMp1LGL+CP9#T+%$i*ECN$Zp9=K;Xqe6!9F(8#rDr5quhG{f3(D_di(%lG~J7s zZWY68Dov#|U-FL1B+2(nenpAGmXP(*aOXq);Ty(O&1sl_YjRC^;VxvBkNEPmrCw4& ze?D|+fYhfyU%WJ4^6Ag7F3pxU_2a2u*JnO_%Gb@EBl?-4jRdU|(Di)y?XSJ0H+}hs zuj?Y=8}UsOx9t!g$+3qY4n1W1B~ZBE8;P3{eR=*j2~x`iy!e}8^#UP)DF;M!ksYno zag7)@-D~o0LKo5y;;f49vZ1%0%-3l{;4D61S#IvbHl#5*{$Ijj#s&aw+eI4MPDXnw zVcydA#$nMY`;Jk*+lQF0ls(iaUlGNs+3DD;LJ^++G#EMDtux6;k>gHYI@0!P&I8F1Bu#>havkw}D&MlgJ=_Cjgjgvs zSYWdkSzEn)9)qZ|Swz$0kzn&}Z;_30lWcqO5i4E7z#0Hch6=!sxBzf?MZi)4_>CEG zOHb~w(mA|`3R$2+u2doIDndRLkd4fc={@!VQ+9N$Zv=hF8Oj5bl>2B~n9Rk$a8E5KEPN@1<& zWs*&J5B_Xbwp2Wb4_LjARpLHtvclT;5ah#DP54ik7P;~l70_(LU>W7QJaXOwzk1x~HB(28K#F{_Y&{4{_ z;;|cRSsg>$<1MwyFZs+>>L@8U@|ip9$QN(yBF(enPc~i*Hsu+Spw!uz_CMNo5K91( z&;?1>_}Pn8CExc$W+lf}MkAl!G`!M-l_(r;>cxj{s^(Zk8dpBW`Bi&9XVdt&%I)bs zt)JPAp#Tw30BrSAz&y@WcXVlux(gNt@%8)zg@V zjRw;ZThAHNo@3M4TUMzjGRI2MbQafaB1$Gj_xOpT3JGzn|0%~WEH+KO$K5Zby zP(Ed|i}Xip{>|nzuVJl8+da1m-Iq^zRM=LS8Ne;K+~y;GY%Fz2=e2%xmYSyX;vavK z_SNPSwvLbz82@MMCh2QmzHHkF>7K-^Z?CJ|oy~m1zeVJtElx6Vk!0fH^zkI(Vg^0b z+s^Dv67orr_SDg_z7nsyJu>X~mj6F+$LXQowiqLAl>4;Uq2FF8Nq4cGy)#}K{sW(f zOK40^4UO>24q=q__QuqW19b-UXKT zsAO>yIs%w-bB$Z?4wSYe@w&VHq?t*)^X~f6xJa(w9cII+w>o)IOMYZ`OG%f+tM2iZ z3fl4TJsx2P2#G#!PCM$KZGT+QzhOc=WqT&27i}m$hvQz~qa)-=q}!80OmN_}_RS7>0o0hd5qYnzvt^?k2RW2q z$g{}B32MsE?F$L3hG$rRZ8Jn~cGG0i%ZK1Bms`}j2`>JMM{nGv4^4RDe&?z+ornQ= z=j{`C-~AEk&r>N>d5R+!s*Ta+U&^*@o?n>TSz9o~56PakBmjN*G*E!p-eDSoP^B_L z$7r=t$0j14mM`UQ0JD^uHR12~ub1w(;@=&pCxwUd8wY&s$5WVr4LGbN7_G-mc$J?c zrJv^WCO_Aarp@O=e(vVg;&-y}ueJK-d$f&w;i_i#`=oML{w1P=bjyJ!nDV=J!=N!B_Ap0^Ad&X5Nz<<$*;O!Fu zD8@2^#xk`kcRbWY+7-y#9?FqkHsU7^HLSJ;P3-pk3emN1#j6(jI^q8&_jxx#|KWCQVL%REI*_G%Rw+~ z#!}Fbp9Pk0rxKRPM8cxQ(KiDjdIv=2icxOfP-PlPT#8b`c&H7JIvgjxXuwAv4ww4- z^EHR3OG*q6JQ6LrXnC(AzIC5s>Ka~&LtQ6y9pOtJh$eklB+k}RJe^^%A$Cof<~zB> zhBTo8KYgUO<7@&hC&X3K(4fYiwW($m%SPsR8BIE$$5fNQZL8JKlqTsN*^@;!J4Jv#A!RzIPqzJ+& z2ww^_6~G7U3t#F&JwEKHOW0%;Znz2;q{7v$2#4+hu7?UYydFP)w1G6VDz`e8+r0sq z3$asDUzFf~Og+35gJhKR>Ol;cR9Z}4N+D|Xon3^*_<|m2bynKG+DdSCN{MDcrC986 zyTDY4hkDD7&H4Rf8KHUN;q)p4#qLnoDQN$crfh-5%cQX^8~Y$h-dYN`|EkA(9FMKx zrQ$vfUqqbTSL*Wh$Ja^sBYAr9La!BRq+qGuX*wU_a2T^4;YNrk^MoPGntv>QX4f$i zQBdkwtpBhrkr6vSo(N{r*>E0w>VRY)&L5r{A*~4GT~BwET7>P`cG{LXtcMer@UmFE zsemaqHjJM;6XhBOa|2rh+30Q%pDEze#wdq{fzPm7d40!z)E1;>2`YWcApp?_p}gPO zM$(tAeD&GR(tnfro3pj0pio}xT%hzMgs(hbmybP{EJaS{znrTr^$igZLevLw=Nm{D zgTcD1sd+ zPXP`PSNH2fygA~o)LQLL!uaJ3w0n$d@B99LooG|oj4<{MBwnf^4nJ1tv zWLRObqd_!rpBHW*J^vJ{4@7Ol=t4VZUU&*eY9MZ;6-4&%)6x!_)|_e8B;Z^n61INS zs3jCnAsd8kGs189qdgC~Jfm6%!YP=(8N+|R>>JoxW!JJb&BlTx7pR*Btxp9O<^jg| zB>Hp9D|I_BL0fcSlu_OZA{02^H_97Du_|S$SE5LoITu%P@NoqSnA^Qzuh0=I3LV7U zETWYs9cD1-KAmv zgbo4)x+;Dm4D|FBVc?nC0`5&+0XIX1%dH64RlxmF+Y|;K^x;#l20M2XkZ}zG0*Wc1~I3IX72VFWgKD=`L(ywOYKIza z(Gad34o*|=KEM=#PIV#uGS^NGv12`j*wftk^IJJ#D?9|;3;+PGsS1}tIwVv=9O*eI z_?zG%;O4sVZMU7JT?zc;?S@K1F5;&PLF8c{ag+A+&!zb3Andl%cPfiZzKxP8eu7*O zKY1Td@`hbA1)JW?Kn|KI*z^|h6FpYrCvS~mIbr%^Dr;ZqPw=2LMzm({k9)^kQZt+m z^LCY#0n=FQ!aJeW`>ZEoO%eX#We*n~d#B}&tlthYhLe2vw06Cms86=NArc%$`+ zd+qrBo~^_)<8Ao9-vb7o{U~x?j^H=b;GIYZ9#RJyoKb)oO3lJPK@G9`Scs#f#*Cop zg_PxrcZ6SsX^0&?lHhrmM~nkmNi~uB&_$Ic;L#FiBbA6Tl9LqSz zzZ0WC8Yxh<6Q}~pP)V_NyyL?l-f0>wxduApk&~qF*2VR_*Dz_+nWy^c~<>`2U2$s)rG_vJ${;Csoq#Ew4=k?&l z|BPC)zD+ciwUff0X)`g;uVLto@&-Hug=aN*q@}yGvkI?Lnj?Lv%BPlk20pAx&n#bg zQ+H%*QWf+nao=Fkp$p=vr>hEi+lD_VT`t8}zXg68G<)k_%Hs9OcA zE&#)uyC7i;4!(_&q=ROdJRpG$S8DzsGB0zCMutMWGz14jHA<%A}9j7}BM z5W?*K&!sxen%exIrP?wEOZAuh$=^QJrjr#Gov7k1mg`}}KGx`AuJk}G*R{!5R#>k4 z*zo@UH0-<$Z839(8s&2!WLmC^M6qi2V57VjMVdVua22y>4+@w)OQHFYi4V;Vp+Z9C zku=9xEw@&eYx}L038-wL#(DH7?qSp+Or3F;xR&j%Hg4TV3b3w#X22VS*+8K ztpuE_3U^#A3G%9na6JXwDJ#=DeaDjDe-bR$!0r{c2MX~}tJ4Wj=WYYBAUA#LA|3md zcYRte=uw(VpPE2ZDiNAj45wFcQ8sQvv(-ve?;M~WO_=*0C))>Sj=!>&h zZe)8>xU#d3TES8iOPW=VZ7k3j8yZ+tQxoXKN%b5)<+&X8q!QtZvjzg-+2~F+c`dX< zm5ErWQU#*3crW0&d$oHKJxk3%Txr1#&%LE47QD*8Ni`nf{*>IYnj8;U6g+(-@!tQ2 zhrK4c`fwj02L7L51%Q8(jTyfP@-qegYZj2Xla)vflrVnv-$bd7#9dw_)*SGWw(|{X zx@Xz7_E84a@bwiw^o2*u2{@~udady1PZ*9Od!yAE$Z;*jDS&9AlK(fop?3+)CF|2e zF&C@^3u1mhhCblUMu}f|;huX@g9(FI$Y>i*KJh`)WP7NzG$2B=Etp7b!kZxU5}?;U zV%qS>W%ZdLA0fy;CG!7j)i(o^1>M&5KzAHX3Fs@Z_Y!m?@$A#?48Q%t&M^r*;CTY5 z?-R;0{xYBQUxL?OM$)r z!LNO5$BG9@F?di*Em9i`wMdZGu6)?*sIcF0b^sb*U!8%nSncE`LUn1;6N^X>A&kQx zm5W=MlQKU?vXrj8=YPHK9G0X)FPDW5=HLPeycCLA2HjUc`;>>S|DMl&(;x56J$>UU zO(^A6-^NS)98Z1QIP&9r;wSDhX_z_#!)gkwTQI2Pps1&f^90fx?-}n?NsbZOy2oz; ziLBpPa&FsH!PiU*$xd~lQ1B^UMnjB|*}Z5R+%VJ4TW7h&yXBInCtve!gVeZ$r@n6# zH-J`}g5`d*K)`NynqTjihgnW4CLOS2nt6+bNM0kO!tappl;IR+_q4#-cR-c_1B4-}2EXY&Y7&AU70_gsnkXba{{% ztukK*M~I=Ri(V^r&oLZge94`S4U+-@XlB?AWn#DrAtNu#6$J>Por*56BD$9X-N#pg zVaeeo-(qYgoqffh8Dqk_QzVR&^YB;zuNRJsT>S&xEMw=LfRBAeLUfnX{#!hfHIeF^ zSiFsOkvh04RT%U44R?i+pkT%*x5CL9pd15L1fx#2PjG z9(mFtqS;+6 zSMqIA0MQ4rYRwcht^O60PfeA(JyX_IV%_ZGg{3x4u!}{CttD#~77ea|v$F7vYzK%X zN;U|UpwSmNe-StxpDTU-#pnk-RhC*p#TV36&f*$h_?TwpIBi1AzCv)D?W!&ye;)y2 zEFgZgfGnkMIIFA271IN}4tT=grNmceElA#S`U8 zW!BcFUZH6ZUx~G15sp9q!(dQ;5!m#tyC4nwk21lE^?e^ET@g<8pi?@j z35HAEXrCcfYdDDlg}CsAj+cmN*RqZPsBDf>5KyO;Dvhc!FD0cabCBFhl_Axbk7QLz znOBWPHTsK2w_^OY9{0?l&oX+h_Z)(StYYXh`!D5vH5O;>2<Jh3JN2^qG4K0(Rw40!uI5lSZcJyN<=XJcF7{aEzN8;9?$y-C-SytR3Isi>jU zUf5np?2&T8jy1K8gXu8Jb`KS2d#1C# ziMef*r~j$^V9$PK50yLz7EtR?!e{w`#@O_Jox@HV_B6jB!_|XIu>$7g?1v3RR5j?Vd+sV_*DJJ?bZ zRMHZMQq{8nIOtO1Qqr(OJ*Fh^Q{B8vYI%z!QC`d3hz(uM&(9d3TiX>sN9J$S{{BZ} zvTpj+j6LlfSvm`A{(xBY9Ql+OwlxZiD!+b2H_MhIasZ5S?FY&b19R6lzrBIu6UqV?R#UkrvqWjsUA0BG@-3o83uh(EiM5b^`%P_e?6-0_ zRu?P(II*5mis@lw`G-}DiGZiF+L_gt3h$`k>+h5UpLSej!P|w!N{vk|e9O1^aEw}X zkv82{!57{x2R`(e;^WHNOWvl3R^=Z)II7|&l`~+B_0y?RHb`=5p3&2Ju!1Sw1U2jmlCMX80fV(kYVOh39oyxKL zl>oeXO%=}HSCj>x08a{&WZOvvY*P_%xBwh~P3@!pit_9e;2;(7CCoM`K7sO;qnIrK z-AsVtSCqCi99OB0r;Q4@L$vHMMe};kU=?up-&B*gV%n8sb)f*fd0A!k?~Cdf& z3syU+fNd%QDgto)WtF1-qB@Q$;2;(7rSNOyCt}K!nfT=b(9HxG4#3*XrNO8&r^K$V z_V5F5ZPgLwulFOc`< zF2$VN^DuzbvT%P*TM_!snK-;SHWTNWh5Lb+&k(Ur@d{zi&Q9wH+q_w;KRvu=VC$6h z5Y{=>`WzFV3+spXlu(SLZ%tiw3oo#cj}B+e^^EA!Y#1Iec3JeZY%m}UthXPP zCm{${98M{=p{$KG@T}4+l!Z&NXB9nNtBAVup39-EKC}7&q2MDnO7(EI)Vi0bc%M*y z3}<0dyOYZ8aOUl0eUeCerr@FZLkK+;vwP#SMscsh{NUas)M2wD+9lFqNXvJaPuc?W zJG~#o?DG6b9z#LiJ#3)CBSb6PKa@9hSU)yX=@r48n{`Gr9O*8Ys{JUCP#v`{YHfsC z%S6p^_7_r(^M?FpM&qY%{tYiy_C&Dgu-Eti9R`0Y%s8gz5oj+YwFz=lCyGeN1PMu9 zJO0T5_bxe#79t0UAwoPScBIH}#@T@0C7XUx+DEd*zUx3*J&$&n8sVTq$$~?;g>wv4 zFY!B~RH@67avy=L`QwD>YN6=6`Nhy9YK^2h&DE%!_p><2VL#H24zENCBhjiz#2It^MDnl_V6=L*Vw77SQC#Y? z5Xo(kl3bsyl)gBu{868!NLGiHh-elgtteCmMY90uJFNQAtc6p4A#mZCEG~2|K^!pf zDOCQBW*x0p3hl{$skCaq{QN&YC64K=yxwv=t?bxVLFNv=;3oxruJ8s-Cj}HL-VK>g z`VLxEg>#IS@d8GST($`C5l*Zr+BQ-B{YG;GQtH5lgyl}!zq zo0NMs$9mprjE?r@R0oMqNTcj%Tm|8;X?O zvCJ!NzyV@^Ne0enYjtyD=%{wh60@1gX={|LqdjdK_6K^1ND=E>Tp=#%2I=l2X3UQj zpGM5P*Sq~hV6GOZ=zT8lG+hg=`uUy_*gT=5afp%dCX()FHM27TSCLPfjRH~nN~Po| zNYG2uC1oUr|E#QP#Jr@*`<22*%-J8WHqjAo{oF`m+!>$F5KJwhs`>5$<$WX8Semq7 ziEYe6?E8Q{IM-Fw9r?!JDx(^+NXaHs`K~dGb_yYJ=;PjDX+&ptiWO46qdaZQYD(4z zga&kV-$xAVtg)#HbqCY*O7j;+c^QhTvF`|DAANzONS)2b#@|*U6x#$9;UFk`IRzUn z6l~FcRl(NpRg@-}D0g}(7n{Ja8SJ<5k?HHdURe{z0@(!RWE=}^Fc91FIC(=o5$|QY z80EkBQsI_}?P{I%2`6x0N#hHO>S@O149gTfaxi zeU9|su3b!1)<=B(QFO#`2;$KxF%TV&l$PC1xlebSe0KNpedTmh7MeN??3(o9GK!z{ zVdxq2tRj7Q1Rl|yvBHIv*Fba1b?21e?TnI`06TG4>6O5mu`|k=1m+xl2E8Km_!Mbf zpb#Tv4LXo-$vGM+_!Z**d7X>l`dh3YvdwPg?*!IJ%I~HGCo*rzai)@*$ZAVVzE!dk znMc@I^c^anf;9ykNy1Z(kLxsq%Sp2l<)Bz zun8)j!l#v6V8qMmOMoCS;wQDk)3+)6lUblNAy4@|8HO+5C&jxt^BMFl!J5~?$>eU9 zecob5a3@MY`djO|1*t|@SU4R4i=SSVvT;rI%<_S>#1$(XG~4&M%<#Zjz- zIbq6;=B#$OwZIj966+*zt)=BsFCV~gtGI+$7b0*y+$NIhO72=_iIp*p%v;r^utY`eErZj8v&-CH^8y8^M;bDH2?mG+yC^gGC7s`)fxFU z0-h+me46Z+rPcj~eTx)*`)%ZB&EG=a#IJPnTR+bl;xV+gQ!b<;q^xAG{FTZg6B=y- zvBs;B=mq~oPkz09{!mq>Ca(K4-|A3rp~iQQI4q%lW_ zE?tD+DAdsEt{S@DRTif)Z!D|JhB7xL;S`&qTu5WNVa=(7`nV+`bhGV^3oyTiB9xnX z>N%|18^z3vX|SGYrcBU^!F|3#KzCQ6tEtf6RfKL2_Kos|4Fa0|uKbnG8nGBn#EkbW4~vbmo2>*%stE!4as^}lUxx} zxEPheSjirb00 z<0W&2)%#NM%3w}DuVk9?cGG)`n~7*bGrlgaVu?)nUg?wpC+d{5GChO&wrubdv2@-r zS%A^k%+7qLg8YoD06C2U^?W|)qvwAhCQ!Q^A{3QIb(`{c26M|j_ANj@F6Zv2>`4|)VWh(i$W#kpoL7`NhXo96r znbDTjbgKs@j<@v0sfm`g`m679h%ePP8m;VX3y*J~a=R@yYUipHaY}gzQWzwo9=M7Q z4@LnUouhhKSH&DJvx;gyB4ZudV>i}U`KldrOLQqi_7ceUkteL^SG zmi;Yde+L#L-@Go4qRZ;x4$=P6NX4on3k&Z9fk2MW4+|D2-~u_;glQ-z#~VTdP1lH3 zHc`m2-Kq+5tg2$!tYYz3vHU{Q>eFbb{#40ofu*0o@_r??FiG=?c;}U*iN9w+>%>Ys zvqa}WKBPAjg`A)_Iusz$&4q&9|H=pz(Nz3Ru$v_axv@N@RVU_E<6rxVV$2((Oz6ZK zI`{&Udb~x5C3J*R)QQz&tCW|W*fMGGXoYvi7U+hZ%I?lcrM=ms{Mni1_E?HgNPKvs z;~w)O@LxEsT6vS~)R(SaAvcNMO__8^laq!|sjg7Xga(EOjJqHVhk-ms_Fk->>xCkc zwYZ}cc42Pb&zI4Pm^bN>iViQ*8Gr(BX*8tKelbjW+l75y?Ia8oj?0rW#w)A3vT^LF z;@XX+N4H*10`i=iqxIWRp#rl5oX+~ zJkeu6t;sh^y}7Ju?&YrqQdK+T@PQSOJ|0mHsX%UigR|!2itbOPPj%t`yeL(lm%T%5 zm1WiX=a^&pwBpvKYFaU7DO&2I536oqI}tv}r8EjcsmrAmotA!bHPV8YpvC_) ztr!ZDX3^tn&LS={-8R)J%Xt4R&cYAxiSq?G%n50<6pWjl!4y>(twi6ZxBOQ0`Tv!-Jd@DABa#br)&$9ghSP;-rF7^8hxy}TWo$22hpkoC z_hN1B>WgV$+Y=YO%)3~z>diu>w{w;Hy^#vMG*{`-o4LyeMOb6|5SPTg9mHgBwOEwQou5_C#-(<3W_VJbwOy28CIpRa-36+%UeON&KIg%HYM|wt9{V9!zYvveOP19 z>ByBL7j&V-6_!GEkRAxR!DqElI)1?tq`(s@122lr46I$CGO!R=!N3|6z(73_v&dD2 zB9|@FD+B{G7N`t-Jx}rP%Z5uXCzU0ASuM#$uk7y2)=D1pm2Ul5bLrqwWlcZkEM?D9 z_V>fy?73sg(|!oB79CSU`m?CmF$hP?<-M(mWLae4tJWy8FwF2PpXrXAr!48u!fohL z$se!a-k<5uJZc<8iKd6yc62Z*KWLe6&C zhIgH#t`hZ7$MDS-A(iJcT+~&9k%9@QuHhUJV>M|t8+Y;!C73ZtCJa$3hA0(77<^F` z!w;k(0>eF>z~KHb{BMXzthg=TA(>!`(i*?}s4N=Dd}Pq$-O@9|*bbq5v z-7+5ze1tN&57()yG~N$UfPB3~;3a2NB#A(dnJ_B;j(4{(k z-7DJxeu^5FT{kQ~h+}mAdw#&dRy$r5l}&RY-4E+@6$~QAI#QC z?Pn>M2eYPXU%rj z>N8x(4QTpUIX?t3XwFRZwed=NNRkaem83UK)r-!E#}I=KgrBFzpy!}Bs$Nt=OH&N$ z@0@Sa8?|48G_McRpL)LNfHHn4QtkhCrigSyoqceZ4KJz)3Du?^B$xz(;WL~WQ~}m= zzcOMNn;RAlGVnoXAW*@m3=olvY!JFo=7p~kqvDva#;yT*pJLYs(*<;@3SCo$UR)7+ zwSX?1E}*5$)0Abyk?QO{Qn@~y1%*We0|{rNDx5EWAcUUl*O@vm-=VP=lg4qnh+YGN zrosJfLD4G~A$)_M%n8m&pEJz+Pff?6xafuQRTlG+>xw^gpznx1G}RETeq=Q6S)Ik~ znQJ!i{Eygm%QWTW2rLTG)0Af;m>fI|%?SH1&pwLqb+HIvt#Oys`t?+L3bnSHrbLXy zY1PsHDq}}7U+n|&xusT};kb!29F(^>ie^7sY7mCvIW*gU~6l_)^CzhC5J^wQM;7JIn2XJ-X)gp2lUM< z*n)v%3w$z^p*hSq>^t-ms@GtZ;PpB*5ZJpwJxLrUUOfc%yveG4S~5}jHHQT!H2%lT zt1EEO7~2poQVSOp(DSw`wrLfy1qf^(CJAhP?I#ipwv5EgJ)Tca625+e?W3~qzHNDI zCbVplN=S#RAoL9iAaq$cadM@KghB62eV6Z_yDBR63 zg}YyOz)WxLg%^YA)4a#?4--e~Uo1($w>>}+u5tr-spK`3#l7#oQW}pz+!ond={1JM zOBa4pR*pedebY}$5#8UAt~?yWyu<5IfAw*PmJ7x+*HTTsPm@E)TWo4{5sX)xST1h$ z8c!`uachmqs&vZY*2909CA1a2q@h?vy``b}5d}!-(HcR>g{JkVf$bp(@d>IDem_o0 z?Zj%;aDu$c$N%5AQ(li{f$klFY8xwAW9s^uGuup`d_QwW2^q)gNM{Br-NvyqQsu=; z(0DdXYA{n-I-bQ>ok6>y`t-Sl+&*F(wvgnQfj^uj7MH%T9TfHAZ${7`WrB;g zF9+j~q1VtR^AJ?%1sAd!2ysZ1UoRsWde(s`RpVg~xj=W|)a58uRxvH?o%pgJg890RA&l|i-~Aw2cqyg7vHINWH-B625wz0zfWLRycNHHSe17oC z7OlmGEXKWlbh5yo%HlCUhU~dCi}|xk{rxZo?+V!1_^y{JcQVc<87JXOzQF!oN?vXx zgqotGk7#^541dY6xTW|Q6t2_>d`t0s;_;UBHK_by%J$jJkN@`|)xu*K<4M2Ad+!)3 zdiFvnzHHm1LeI`LXMDsiXWtihD?0Cge5wmK|H@tE)Lho9nhP=q`??^7VrUny)St&1 zH2aI<6>&sp3c0vtG5roU(Zyi}!aMLg&a+ z<8h+lItL=X95a$Glvt^ZXBeC|BNe;({~u#t0$$_s{hxQ_Ml6w7ZW1Aq5QHSeE+Ua2 zBqYSH)>s-!k!ph4g4p7^cBZwjwW~csYbVrBEk*6ijZoTZX_fo`oHKWeet*yN&-3KI z@60>%IcLtCnK`p-<=jdQ!UuJ3{h`6K!5pn$k$Ba|D7Q+knWI&z_$>xi(R z5y`*&W?kjvxlo$spq1YCm-Lv60(NqcoG@1l?w&=IxeMUO;jLYOaOL7IKxWP>q=}9G z>R^Nvx-;BR=!a~f`~EZ?-15-SQCKj0iz$Q!sf%P zgf2TUGKdlK2G|)9|9&c)Er;7e0aj42m?r%eYCS~EG&yb|<|7ApluH(BRb1Z9^LLKIWefcRj?Y*Ypfq;(;9M4xMwzA&iZI zv#I?Ya_E~ra^2V3ND)0%R`^B>(VEHD-)IRTL;6xg-}A8kA(pCm0L`D3z-B)^XSCLR z)ymgi$@1PeSkyVOzkL6Vmgu#=4d#wze< zC|@A=*K`j2lGM-Msux3Rf`c>rsL__t-m>HpEW%&XMh;%0l?xf4tcq?q)tWV62;aAO zsG?iN0)`2gWNywfhV>$1x*HtQazgZAm>}qI(^SBe)9Dq=dO@)2ibpKK7-;G?>w}q= z)bv1kHSmR=7}iRwl=;>r4WWPPT`+WrC3Foc-C29?QL~uE7t+-^EEAS$!O``4Scm4n zL|jtIet5D<4ks{ZUrm*wU@E*^3tb|O;+nWiZ%&FB)KmVnR0|YqljT24VWo}jDH|=* zLOgo)bX?n%=pW!uRSSt1j1SSLw&% zVL`k#d@$3XpV5iZhPMA{4H75LB`zeRHwb^ZV!7rY5(@@^{Q)G9uVyx6^>10XY-$t- zHn7#Dr_5iD&QZhe(q)CVJj3-977V&OEnv=(VCv(^f{Dco&|DPScLmY9F){W{CJ+I{uox4iYDlAZKB+IYX0zz|%JDg#LkYHe1RVH6>%2sZYI9JD-&18DxT|%5Se5Aaq(6vkHkz?I13d{ zl)`CH5N99b^i?=&uV{K_d3p_u>At8x*J#~@=NK8cR%>6P1S*L52otXPIAJY;eyi0g9-9QKFq%@3QAHMBuLU=nLGu^1#*#1fI1UbCa!gD_mob(Y z)Zb(Mq`G4pzQRg;0}rfymlMC$JbUhMPdxLw5x+X59DHeG|1Z@tQu=Vl^aQSaB%(9o zlSC@Awz;`8zHeGzN(3#F`M^3%luXUmY%{cIO_J=eS!>a$ zUlQ?!o8oX!3*`a^PUGNZy_>Z$-l+}?!ISH-2nug>>o^*2qkbLfw!NhbgDT;yrX)2m zQKyY8wgr39rXQ9qwrGACg{x9vj0d6o1cK~G79$)+GfJb91}~LX;#=m|-}!+`=J8S7G3)IOZCIzbH&L$Krq#%Bq11CP;}O4Edl^rZ%L3)Zz-ppl;t>XV zT#8D=YzC{^Drsa(!m%btuDOMfcU{ejiW_@A;S$O5@Cbz;z z15RGSG#yCc{kmx^h(%BSi?SstjgHJGvbd4}Q+RbQo1&IV|Lqw0+!`)F+pZbBx_(Y| zSK?jM-2-YomfnwjFN^KK^q&6`8MOm7yXOYkbq6+se%K;c?!a8+yjJq~4oLW1KdJ51 zri(N2(y$XNB-_W!-8;3Gb=t+#xX62_yivSt+${#`kJVi*X^$=jXIFPd4d8sTMOW~f zSe0yxXdhW)7fM~3`Lf$CjL3|QlQVW{o!xGub3lrP-93Hc7?2N=i+5!g-wk6-p>R5kX0lb98PJvJWr0@tql?7TFU(0TAk=w zdwBq=r&)iyg(^B{@#La&3opop9^5O|$5PJP3-C(Lg~KgmuRU5o>2uBLBai$WDep}Q zMdiFbTEpn3d#vzb7I=Rvd`$(v{R@h!|AuqkW-+a1_%aswfREu<7LieVVFe}^k>mGj z5doEuibO1sqx$ufX-|2@4RpfDYV2G@-rS2syT!`*Z0(-NuO)-`X-#T9Kow=y&umJ$ zlKJk#h!Sx|xAW{biv1#f9--%XU#yK!ylAS^Q!d%3wZU4tXZy4`JnH0VbxXWJP~;+? zi1~MEnVy4BhvdN=t(r)0D)Vx*Dt?s_1Pw(B)kRo98ie$Y_E5tjL8d6={C=p~xw8@* z391!)faZvg(mWC)7w(6_wL+7JaIj>K-dvH$E^V0Xxbol$C7`V9K>~ zXF~IqD-U4uqN20BeE`GC?V_dI_gYfGb=bw=$D6ZMUyDx*vE4xY$_uMImVd8>x)wnP z4og#_}&Y$?Ate@pzO>ISh6FI!d1Z0Xn-w zFE<~CL^?*vYlpSKay6nLv_i*l)=*kWb?j68k$X5t&(u;c+Z{xN;!(235v`(}c~I*t z=0(a!2el@i?IIBiE%PI?2rOIwA|vJgBN`4Ey;4->9YGiQO=DU3s2161PGe5wC6q*~ zm>%5WJPBRoAQ z;76(cH=I&kRZcvrh1Z<7lS;pCFnF~Ohta?T@_1+pdr}pz2F=C|kl6e(rUQ0arUm+2 z&udvt$LrPMC9KJoxmGpJn$-~TjlQK+W1h+VGJRvpJ$qfC1~vyYRE_!Q`m+CVZBoY( zSdD5MKA>sVWex1@^jy4CJ3SFku59Mu1(nU*{)DXmhcenupf1-2=?%zM_7T(T$<8OV z<{?cfu6=f~!(eJ+W*xRP0?sv6#mP&x8px9;wDw|bed%*j3-Bum^TW2BX7W(mrag+A zx1hG{b`rbHCJ*Ap3|%8?e6$KDk6Z7x%PsQ=>ef}<(!F{cXG1(pBWmvW&je>YF%}rrZCCUB+HGSh}wRrq)HeXLV4r_2Q zm^Yh*VoDvY9Nd6+7(foyfUEM8cX*qOI*ldQT?o%u?;cuZP(0FyT>7HnikxN1HLW+m zfxLC>Lo^|AApFrfC{ssJv5=>=jGe#%q%+G!UOcS@xjC;@*&A)v=hc?FAGNTu4LYD9 zr)>epC~rA0kB_CilXp&HN+ECn=V!nY0C6!_KfIDGj8+x|(Vam?-2qwgj22j;{u&#B za<#Sjb0VvYq3z{_Gg>vbW)L|i|CK3jwcL9~^V1s0YiBfnZG?PtMr)p+E#*7C79o&n z%1Y}D&y_HhKgaOo{JD%5NU2$GmQrI@XIl&SIZG)!OpOKoSVOKotA)%D!vQOg&SDO) zi4E4*0_$dlEw5nFBPHQatxpddYzD(>VQNW4nHqA?Ijw%F~UQ#0;;g zc&&yf^V$$E;B{k923=jR0H_+k^sPyt<+V`R=Dg;Kw&&CHT88$ue0*MO6CK~*3jHQj zK|jTlq5r}Qpa=9|=;XQupieNrw?Y-azXr=W7c}4Y7y1#J`{V|gtuX7q0stLf+RdyV zY60(M1s|fo?@)gbvq2EZ6{sj%NPGx74MAdYj|IPPuq=O3i*#GFoO1XKj>|J`SSC|0 zYKzg@;}D;Sjv*A8J3$RCouDVd_D;}Eyi>LIBc7bLpYejUwd%%cYgW5J+O9M0gTeFX z;HZmgax3sl2QH;4JY1c16`7`;#Ej}r`R)={&j-u;m$mV3)d|>g{L^iD<#A`hU_Ywcoawgp7N*EO<0=e{6YFKQs~AvxxkbWJ$zNG9`id9$kGfk z4Z#Td=&h=%I@Av&Kz}~dkKBTX8ff?(3ZbgfAcV9X<{MF2HoJ!7ORCDRuHl%Is&eNw zOuALgzHv<}t$9|aIKI_#JHhi+Ex%LYMiLHzFLTWEg$Nkzs3e>#U-WEEs(s z^R-$<7kl*b^kdD}E#)POL-0K;tnH{1@{h;bsQTc+!s-gVDptP$tKlIwR$=L3|l(i2O~nbgSiW?I(ee$Ll7P;R!4Y5d)ShrIdiwnmO^(7 zx#0Q<1tOZ3k&T~f-dddO^i&IMjU-ywnu}Mv1cQTZY(awS^o$>+@Owi^9JC7M0QfWX zJPi}Rth9p!yCNRgD~Whu?-}(-jrw8*qob-u^!k?Q@raI@s%V~tbym?Is}AfU6+N3& z%C6HW+lc<43{fwym6BN|)ICDT6DF;BU`gzyuXCEp(!dyFI}Ke-Y~O_^_OxSP@j&oY zvV{!I)5^t`0*5$0))+Ykr5k0*eac^)v%3*G^Q|u3AJaP*V<~2iaPk1faw-M~#R6ye zWR;Z0JgsI8d_W#yqi_b&0um-Jg!*u3DDjO;XUSGn+fnw?9Eo(i48B|iXe}`9E&Q<%%SD$&1$HvWeZ zA3Gz3LqZV~7pZ_Ba5BA#jgxhjn8e9m=H!YSb0QuTlS^M}W!($#(Y}~G{t|o?v(^v^ z3ULot4SJXV#YZhSn?MQ&H%Ck~(kj*p3=UW%@;x-rT0?x#d_0q3s36+>U6j}2(To!3 zGmbkE)BK?*!J`At+QcaV2RR23?0qoLSn|>u=!D*vI6+BrqA5)y@^&z{N3g!Eaji zGDsSoN5vJYsvMgaQ3p!o7h!p!9SWyFM&JFY6u{RKt{e2vxrEpXgNo}_OmSHqaj{Vl zydr`=k{+~<(WqZ#iA7nbI?5M{(t#2I9OSSX(tcNFzQ%rhRn38`V&V&~1N28x7AVUsQ^1Pr7gBqH{f8J)(}g-A zA|{2wKRC~iuya1r5|cO&XIkru@KG3ky9yKQtvz7U;f?fP@luEUjUDBoC`~Wl|AA>^ z{!AqyNa4@r3Pt|_%J3hi+#HzlM?|!?U=2(ab6`qZViHpk%+v{2W~$^B7h=jT&xdmV zYc0%E32k>HMp}pm@}xwGMSnuUTzN&fK7k|hDFnqVV~{bf*|C4ZdT)LxojUvOljG4> zf=P{#)EoR;N2IW%(-j_IFuozf4u@{4R2?JsXiXOmOVP2#SIEg(lNoQY_(k7Pu6m=j ztqcrAUDSZ1y0gMjF7cEI`qqfrNTt!{xho+D5k#tP8VUY3OLI-0`o5qRQi3tvu^7CB&@DZ!sPdat>p}n+>ZXPO7s- z=|N(L*QUh!8t_o#Ry#=l z3Ne_mN)SS)C1IfSx|Wp$glHj=YL<82YvtP!f!vnfRGr{@fFRT5q1FK%e}GW_df>_V z>t{h7u284jP{-R)oh^(DulI7m2Xx*($O9j=Fg%`r&?@PTFuQ35-D666R!a}Owl5(A z&01_Q@nH-d62^Ma0uN~B>_UoLiymOK3wp5sz1*RRGDYaF!c?>V+&j6$ta)1E`>FV* znjF7Y!T1w6eh(Et$`XIrI}paT>Zs>J6c4{3GU=kixGM_qFp)8e7UaSA-NHViVySAO zB&aT~m@aVz%ch*_3l|E%h&P%O&Kkx>65N#MjH0_=AhBnz0h#sOA%b17{H|kxcA-vU&>D1+!~y^rWVd(a@0P$qW_X$%C-0XhcNX% zpqtYW?3y~Bg9q#yzCf%krp@Rg1Poxb#5I|R33nG{0Ng-@dliaBY8b;SBQUTH32UOf z_ILJqO>EIT|0ejznISBtdU$}?c(a^SNR+{mBbc@-7ySJjgrTEMCLA!4_Mgn;LXeKz z7&>70Hr6}b45HNoXH2VQej(9Ke<7G)++2Ycv+oegxbfezo3p4M{Fcc1K0p9uN-&4h zr+pw#TjO(*BdmBU?-diCzC8jlTD%h-i3x}3+Ha>cKV%B1wske#t|}imi_Y2`8Lku2 z;$3w)Mkhi7!7Z@et8-GivKH7XpBIds`G&B|iA8@(lTNhJ{*nz`#12u$OFnZEje|i9 zB1x{sJZ1$k&Sg?8dsBld9LoFtPuZ?8WcgYSEi9@A|H*07R6HLQub(X**PCcC5pUL? z5=V=d6RZA^zZ4b`Vos3saTO_nubK1uRheQ2XFTdn z9&r_;wOX=q5wSV=4`w{K3NwDHGQ*VQ47RnAT^OeEAH;aM#%*!xKNhB<9Z|cf3M+&O z3gHWdu%GkHhR~G}9{YN6cgRV(o(W-F;PW450o>CiQ0i+4_Wz7B~D2*QbW!HZbt?%(9qvVAmz1}@_jLp zq`i`DiX&r7&yYB9zlYe9B~KR@eR1Yoh@0>Z2CpQ_Nr(y9K@|zsw;9k?jlGdGkZSC^ zFJ-$@qHN4-=!;=0Wg7OQO^1+%V>#M-3``JArh@TMFtuzjZEY}96io5OfQha12*ms= zW&i3X_G*FfA&dhGqbLoB@iLku&H>_K>I>#UEXkJ--9<=+J^@(1;at>xudX}Z@;wZ? zE;gTb0W#DB``e#O+%y#Z$y3x7$>4S}te0(gnx6fD6jS#i;AZ(B0&M480_+R1D4J__#y`8K!%~!$$fI^ci}9 z6*l?IP_iM98JhkC42>fAqu(` zP2{6r``F6-odfVdW;rrH308(9^XW}7+(X%bX@Zy>-10>vmhqUCz73He#(kg3TBU_g za}dCxirYDm+uEn^&A1)deG1wt1Y5KekNAkW8|oKwO2^F!i`FXlc5;_7EZPEROvK!M za&~FqRqPRXq=9ym{(#(3S_EdinP%f_>MK;wEZ2vKgOlnZub3QMWaE^#fNTs55HE&GLPpZt!R=we98^sbPR?$x?Js}?S{shlurke%cF_#Z+v{NA! zr6RfWDZyV?@HEB^l=G-PRDza1Wq7gUu{@_2q4k?~W_u5{R5apI4FiHy*=^+RvF|e! za8=Qm@TM>-D2z&V9@8Z^%VBfjLz^Jet}bMRo@!3@(jr)gPNo?7xhL9iB!!Ss{0Z4x zA^!~46ml0Evhj&L;wgNzNAk9(IHA3htGz^R~#38CPxfjYsxdaiA z$op}``wz%2w9vBj~EpUo-mbt7UU3lD-Z7I|AGpr$h?C13yvJ1BCCs=>fV#B zutmW0J_U>{q+&nfAryV+Q+Xe^1Zwx$2o!_w%F^XUs&-yZE-$KTF>*_J5g&2SF4DSq z$Hb=lWYrC?3@1rMk0(nc5HH|uArG_YXFZW&zCgbxW44Gg^3W))aN+Ve;3m#6RpL^) z@IpPD%yNydh{NG_&wa%b5&J-9RS*@?ly9jZVnoIR`Lcp22WK%q(IA*&8tcsjHpvbR zHcH7}7AVP%lfOmD?iZGwO8)Cxa)zJq6P51E&3+;pC)7Uo6D@*&VX&no8EhQ)4)rHl zz&5aK2Kx<-+#Ahv{>v|P!uggQ?Jw$xL-*u&{=(nwwp}vaZp+*LVxS1RCtC!FrkKFa z3V;Yt%N+rtq6klrR|7;d&s)|Ami@CymO-D2;+yj8?vNspfl~eMNwwc{w(FO{+9F#6yX`5Zg|TBH;_4s z%5HdYZ#LZ(n-XZ%B<{UmL7q*kqLP_>fB`Jj06pFVYRW9u6LZN zwQkr;SMzJKQDsrz?`K>3&{aYD7QjQLuN>^b>vDEw;g>;vDtU_e&g7wzr{pUaTtWB!K}7vxWbQzVw+Rvz`jQi$cE${cu2U!|3mRQs^bF$kZSas2!CH zgT#mqh)6_+V@4LQDhZ$Bs4`p!Hv#cXbMqYO6#I!&k)R}h0-5AM=QF1B>I&2GDs-9h zL!r>}2;Qn&Vx62*P55d@ga#bZ$5EE?+6hgL0erIy~OoJA<$6;S25uNCA|mE z0^n=l&Qd+$-38}3y>g}xy4MF~`w&qXH&qfj_bJO*`m;ejatIZ|s#w%Ojtb=PG3(RG zQI{NUIDmp2_2Hl`2i?iRWwk3x+Mkb!L+sW#oEC4^4}%cF;VB(+SdB_0EFQ~9_5_eD z%r<(1YWI_FbGgA+Sf-C8BOIeu{-1&mNr40Y<971G{apfu~ zP+^=vWMIrv7}rq%95AXdhH$_rswWIID?K;MxwsxZWZ8L&5jpxk3!<=sNwUGP($-*@ zG3QkaHtTG*M@`|Xg(eUbZkR=70S@-^(3##0X*=jpZ;o31oRb`4!iu`cGqO*Z@Cto? zmZO$cQ9G-sD+)&K&ryFoYl-^Hj~q2*riz+_N(5B@;(;}NlY&uIQ6Gfm(KNs_?nfC= zO9X|K&({<0oJ*Io4D3HBsRs6?Zvzol^gFCnq~YY;cd|46(afn^%sb*EvKt<1d6VlI@}Pl%s1vwrKm>@^$7F|wqPoj8)EA~C znb}ZO2{~|Fp~NVZrT;L>4|ph)ek6HD`Q|vIcz%17eCB%;!oy(T{%;*vr^UlXd(q;! zOb!3;yeuy^5@p4jl`_AP zXs@-EQ4uh8$Nnb!Mu=e1d$pV$A$p5nU*To}5sE`8D>N46O7+9}iI7S%W?$7s4~u2% z#v-7r(;;j?p+RnS$pdwa<1m4Cm^#LjKoCP8C;lS3`VSa8R(W?8Uoq&ehmzBR`c&F3 zl^Sa}8DqGXqjz$O#`&uUHo^wNrjx12t^+B%l^Rh8-*M|7y~cm-tU4hafY}g_w0CAQ=L58OL;HhaY~zLlVisC^QCBbVOyh%DJulooNgl!9v7?m4nqQ}IdVQ~Np8j#nIN60|_&4R@b0 zJ_gxr-7k+Is8=flMQ)aZp#$6y732LOS*savgZ8rkeIoWDkP-kE?1B@rK(MUmzyUd? zneeH6A%|n{Lp2GmvRFZEc@fF7=tHg?hL$u;sFo_&#zewwnoCh6o>7W<~R(bPueNV$BPN=oDk(?%L-0;-|^>- zyQs5Tg5Q_nojUqPJQ;o|UI2gY8N<62gkQvQa2ddhcv!ooWU*E#g5#>lcCAE|c)vG$ zZYz4#I>Rn1-- zG{8U+9y_V$g9j~AHtJJJfLybGi;&n-B5RHmp5=445%Nf^n!x@Z+VIwpW>1OK`t8!3 zAZqAGB6y1VSV~0iqUl%y+!l)idTf_X6Gd~+CyklI*5I%-fznN_MYqePi6T*4*(384 z#gh8hh=5v_k=_Q!f5I7))0dglmBL^eSj(rpVb+)%qfYFR-?u>pacGOY+eVD4zt91r zJ#NO@N*KcwM$BWz@UdZ-@D;Uit=%#zNmLTgH_M%EMd$jD$lJmPFcKN#D}^!V5o3Ht znaF%JP#6<-DU68CvR{&@DvEBEGm}JzVn^1alJ-Vi(>wVrNmQ)bbqjGcRiQ0;$Y^Oh zt!Pd06&x9M%J=P1$Xjoc9omUH#e8fi9p&71BDU(R&4e;bpi~MlfVbAkIMQgc>7zoqXC!wC^3v-u1q}!yrTOu#D*5gevf+0p8N^ zoH1M|a8`QsL6vgi?WC=tF1rpUMs~B}Dacq~wKT_Nz5Kefs2Z~FTcTaBg(C9w7jo%I z6IIH&H}elu$oy93ccv-dwbHeVs1OpRV!lBX$ZUd&`5WsO$&6#du!PLYTVmqwyJ1~K z`FcNt9Ym?fF?G9C%$b&$WS+j~X!{Y&nvt_`_H`HGS^VT0aK>wkzF#LFbP-+Z1uL+$ z+k~leQ($*UUyyYKhJG4&DDD7;nYE!^g{SadBd2y1RqJK1WqzC#L=GO1!5{|+n%y<) zzeX@CKMNE@%-Yqkgc^-;{SrrzB`cVXx0sW83Z}FJ3`RBp6XO6g#KKA9YT51+p|AG= z$%ABCDu`$Wu>%TiO$-KM0C5+=telj)&5~)Jzl!s?Xn1VgSTM6zA-%ZC%(y6|E)GZ- zdjirF2c-MA7)i`sCEdCS-}<%j&05*Tq4{7$T^bM}o)6Xk|O9&q4IjSnm(!(QOL~gGIs1qLA4YJdg>* zu9nrh!|v<6QpR-`hpR0`dQ&npiaN2zkHnp2t>A+~{17;h;Y=7M;Pd^rvQ`gKx_l5m zk_Fq)UM^_Vq9J-ZD`avHQ7QiZN{-$h@esWdMOPCjbD-$<36vP-=6eMG-*A_g%d7dUEZOH||#$GU~D)BrA%TL%d5 z$Y%@4SZwB+g5feP4JCUOfA^h-*vOTB3Zx_SPSNL{$tXt3SR`MjplB>yAd3tTHH!^| z0k4d#)w0Hli5_!v!wJJxi|Nsy7U)fypIv^SsGxNnM9It?~RlEgTl?*v%puH~^^6Tse6VDk$STf~hz3N5*ceK%*_77L(x!;|`ujJoy$M zI|nhiy&pbLh71<{GOo^LjB5%*;sM5{vx3^p4iqEswhJLyJoYT0P4M97^lU;M?17fs znS?)4Va`*S%@k(cf|yqsv$r;v8560qWeo@|qXH9gdwQB^=^Co2msnqwoUU;^Gtyy| zQ)wpizvNT|e7Wy!?HrAxIa7j9rD&~P+_PJ|s5);8iNaF2p^EF^OfW|4hJrFAkZU0s zLu0E*{A>q;SMbdu2)h}~8S~97sT(5vilq`ZRn)`g$eKgMxQu-yA!EJYPEky^(RhHy zU@jdtDgVlZ79r&Smhu)OfqscL;X+E*7)vU;5U?c`sJW9kwyvxqFq{Zb&0RX@4}f#k z-GD>*PFN_Th6?Y1763(S)69jm0((7GLlZ=()ZeT+o7C4^&K@dKo4lAsv|@Rg397@+ za3V2&x%AL2#RF+7!sSk7RUH&4v%Uev!ih<_G%Vs-80++L^w><v&GJSLwq!5mB1~!A~ zDO2S35u!!{(IZvLJd$LZ^qNK171yjyRw6r$CyVR?UZ|r}%Zbw-bO;Y#30Z@52Q4)E zyOVh^szUB0KG#8)i!gLohM_GC;GKw%)b%?g`;8QvM0TchA0-0Ye)Bs~be{|ml#0wu z4BRy=PI)#8uQXgW5Km@cBwir&8$S>^{rxOO)zWQNdDbJ7^Q_dciD>h3TMqpcV_`!8 z>y;_L8zrJjtU&Ux+&+m4!kRziyHV&x`%IEsz7qazoqls<(P;e=$oPpeZZsHi`GXi~!;BRDT`m|cz80nf zvc?z@RX=$G0JEC$NdTz3K7kWO;O2g&Hii|DiaqV7xpu zM);JCIDkl8lc1tN9#m4Hf7&m9A0t|XECqLDh5{Pt@l+JrP9aa589IQ;jLuM_x5jaD z;#l#SXx~{rA1nGKBAuw_pA?PSg%%(WF@|&9OpO=x7 zuxRqfB-wuw%&o>>sX~Yvhe#TC6D{9uc&M`Yh@{MA(dR31N2Vdq&YFJ13_nDLBS`O#v=kjYRnfrb&wc8~lC&T1F)kdaF7L`h`X#?oYaWB<*?XXM-jg(9A!6O!==%7_~ z5?b3hd110>QUAOCm`JB>d9iPCFiV2rJ}nRI%L^XhamLgV)W9h;z{P#iHjUEj)?}w_ zJw<#Pd-^@5Jqvw^3%-MMy|gbe4f8vA%ymMMBo<5_?vt>kfaGxzCITdrhozRVv>L>j z&%{OC`LYDI&!x*hr--V73>9%Ftu}_^9Wf58WNa|&Po~T0slp#K27RWA%HA~)icTY` z0z&pc1JmX5sUlQ_r^|Cwg0SmNCmkxv-wYDXQ)R2kwR4KrUG4{uZw3 zEnE#oT9RrST?IihPty$H)9>VkX~Iift0GO)M3qnWQZz{UTMAO>1|-Qx&0R4qd|)kI znO`cE`4Ufz2BRZ`7pTguZEzd)&rtwW>EgZ$))9io0blYShk(&2Y@{;c(R+;ZV%-bo z08W_}v?3%}ZQZ|=Yo?3({<|Jh9^)LAx2CT-BxQGz;Vlvj?vTUQZSwEwqLJ&*;L)rf zGhBXd5P`CHmhi6^$%%huF_IdGGm{h>?pZaXPyEmEXManvD|8grXpFocO15t z3#68<`yGyytQO7|v9%6F1SPh8Tb0<>2eR0jPoroM+eixHD7KV)RVFt1C(gi_PQx#hq*@PClDcx=QBt4AQDjIeg43z+rX%*;~JQF(lf>WXBR=jvfHWTq%vC3^^cOnj4)8>>gF8e682 zsV<~|n&B(NPC*^9*X@hVa_~%1zFp|YEG)n!UaDp)Wnn>BStzMkP~)-sF(^n5EDU58 z{u(O%*NCz{#Xe?1Gflty-h9%jmQ0-~ygr{d^rMvj?P4W65}zpL1MuXOkH8C3eqkfg z)8FI5W@~#>nQV6i*^f7bOI%@H2alP66=r?v=W>=&gme^yLX*U?Z%8@&;jTvTXgx&r zHr|QoS>l@}jc?%vMC&S|u?2~yG10?AWQkd5KCTXy)noDL7_J*E5B)T>fmL9Lp41elC};1%)1iC{=aj)!D+wec5ft zq}7yt=8Ccz%LadxhtAH{q)oynB0L;VCOi=@Abj&%CY(S{BoB6$Nzv5+joU_#C z2+z;wLPQ0slDC?bixK!lLP)`rg^-RH2;ux%=Hf0DZ+m9UVJ^BMh&40TJ7mUs3``7= zv*(Gb87_oUK=RMQvQ_o&;hl(Hq-0Qmx{DVOZK#OG7bLoXi5^D~E75ERqSBS*jf7^(gO1FGxJhB*rdzwiC8t_$*eBL3t0Vg74fKdDah&yW_2QhSXq@_ z77F(gi~3XSL@!#>xv7CnTZr`{-W}z(h2or;I8}~YBxJIB%(sQoZ(H0~sTle$=u0h{M@q!}9#Msy(o4GUO%jdf_mbvCqI^al z6-P^-7iXLqH~|fVsTZQT?{#hDwr(XVlPM!;UI5?Va5B}llIUaes!72azCXbiSMVu# zPjlrBT+I#lVy8SxuSqeSz^v&7^Tm!7lA7toPn-!j5g4bTn0k9drmyllb3*^=M+tQU z?R-q~JZINba@8dpX2BO9AdGA5Ta0`wG@stDt66{C?o-^X-`j7|*P?B^t?;DPEcq$u z2XlZDh=LUnc&9v!#FO(d0WZkIb<5#a(`h@o1j7d8+3P!;jWzn&H?fGAKJtgJF&WXc zuDt!VNG#C-DY6cdb-5x3q=}~D;d0CHSYO~e43EJH%Wo`?$m=6fzDT)k!(;r_x6MGy z@L00+O&4DEYy&@SiAj5(IT|&1AHwq;3cLb+=5u}I=_S}OJ!XY0wiKP;cgtkNQW1i4 zEe0+{7wElN&Rr@J3++u-ec^~@sxLe~S@nfmEmwWv=w$8-%deJ+FtMb!+`LTms}t3m zxZsoTTbT6?;c9M7Y=cz&!l{Z&Mp}$AEvSOVL2JQhQmc&P8%I;rGrmVi$dDBMnEcD8dDPK+#o_$+;Cm5TR1#T80VKL8F z>U&)9pWG+7W*Uf2DoPKAf;#t7+1&z9Hf}rN1=+2b&>y0*$h8ai3E%?Pje03dH?fDZ zbg!aA&6B-cYYeDINEnH((Mu+;5Us^GJ>}LF!Y?oh!DyEaRJ`5=iec#rUIu7$1Fm4w z5C2BKS|RGS83}$3CRkh8VTRj?&sv!+O!9$lz5!v@O&558+3&s~F7>ITvi7PllbOx$ zVILm&&`r)+DMG~b9`fKyQC}qWkbkWd1H_wn*?X0!*6#c61*$eLQ>E9|s%;fM5$U;j zGU=6g0qJ<2`_LC9Ew+>1z@(>iXG5>b;!o&fq8AL1dSqAEEoAaSnqXJ=kXF08qm0R*Y<1xN>pcECXjjzdQm5wt$2AO#F;K`+;QA`hSw zA@+5VZP&pBEwWblc>Im=0K0W<2$SyXVSN3K#1}|gvh5npJNQJD&y#$J@-KJ+<*5sq za!W34*b+SP zDvEYpI?fcTBZxI4KQbelbS~JUd&SA#>qMl-gj0?wFIAIM{`rJ1AEo@Mx(E}^_ow(o zDer_Q^VJ_O;LA<%bsmMyfv;1{S3H7P`TEGx=+#MveJiST{0saQ6vl1%ScP#B??m)4 zo=o%t1vk2lnord9;RT7FWum(~%fyAq=+hl3qr=KtOl>byg{)S&bD zv6C#hL6mjtOKcbt8;}JxLN?eSV#ST7%7BVVR|eFq6Ofe6fZB%$|1qEjQxFFOYVdIq zu5ZV7Rtx8U7*GK!j-vrp0nyli`gHbx45;4;l1SJMsF%mA@c+LC)K=!p!GPKd2p*$i z1In*31Zg#(_P3{mS`DZz?6MnB9h1p`TExDN2GnG`4-BXg?b(1D0#B;}Rh9!N1Ii8W zlyUFdQ6`}NC=L%~+@4u*D+6jcm3P~QZtOTl<@IYj2Lnn=QU;W$B)4o9u}PaLE>AY3 zaEiUcUY}FkjVbN@rtEu8)YonW*q|%d&C#Po^UTE+r1ei$I1jJHf*ymAph#a;@ zCh=@lnE`DmPTMfEz9%Bl#uhh&4Bsl^TAVrf-b~BL`_LLL*r>bODk^L6WGXxH0`xO8 z2~%I*0u4e$I)alU+w#mw`Avxw2QXyogo1I@_m)oGA^BmesOU~aY(`=iqinJb)@dA) zzfA;|Y&7n@Ir^_$Ev*QQXe?oFE9Y;+*5sM;z&6Z&oX0J*nC&R6W;+f@Ol#GNuKI&j zI(np#a$CnKMQ)eD3-~@^V7|w9q=&7w2xY$iPPCaMVZ{@O_ib|og9+_isLn=C} z<;eIM3pphiPFMzqN>rAIzZ2mhgDJ(v$i^T7T6#sR0#`mni*2wA^NKOwtEL|-A#$O+ak%=)Y|a>gjSESXK4a)7ipD=#Orwy61`cri^o5-lsqX*)2nniVd8*&+If3L9kfPElX$EJyAX^K~e?rsL9m zm*^BaeGBcJG9*eICC_3sc3N*Lbd@|a#~s4_L0^)sArT`H`c`u8E)nR0**H_#0C`{+ zw&67WR+it5&4uG+(r(d1+b*~67E##u|9rP-BEE`~p?gFVoUAis50>he^OL*wi1?rl zErFQ%LCbsj4$0NW!6MM83c9+oPqy$cvZNVCh-OZ5Ixc5qiyAJloK2p- ziw=rLa?3tZqVTVi;E`Ki9@z)udChGZu}{>}kzZf=#Xix>g zxWXG?3z$~n4CsSM&$t`1&-eIFevQ@lf5+kdg%^J>avEbI#Na)7@dr_@a4vnD?!`FK z^d7Fl3H^0>`Ul8`{C<+=A4DtNSiDY=Z4P1@sn0bz?w|;EA+IW)%&nIzh7W+8UlF@E zP~=hlz$`xyCG!so-=@3WNnPo_6BM*m)IQNMJ$m;#HmCnF;Uo_Wr`AV=(-+?hr^-JF zr=RhE`=D@&fdAb?!pV$pyN=3MheS(ltekg9d@jC?Ty$8}Y&`~`T*Jqij&9*P40W$Z zq^iT5@Z`GJ9WPWcYdLYvkcwEUh98Qes%rSxjn#UD!l;U=UZ2Lumh}j~H>P;LYevdl zheaom&{!5dB5Dio#xm-N2yXkwCZcRzm+%V^EXx5dnl)dhfCuz zvAD#aNHbO?@H(NtH_Cd)1#UQ1ixQF$#bHrGJe+94e;m%l21hAk)Or~-=; zn$(xQPl$5fBM{hOO+slE`1o)+?}SJQ=C1`76rhcu1qC2gU~ptv16kyx2x#zoA!zH1 z=HT3LYQHnm8JDH2(Gb`1#kV9sny-LQAo*m&2PTL|t}eW`>~m81+ZW_yM!MIAi4)iF zCWdCxi=*mFMqZgF0zA&(cD4a_P#ccX@!E9to^>5g-b?^G-1>q0o}Oc4i5uNX!$)!J z2LmM57~^c}%gnfC;*05I3lg(ilW-?Llru%4AAK0AKDZ+i%2H5XQF-B{2+9acG~AED zdEJI*I1h?>TZ6nd9TzmRQ9RJ}9bTXUWL**CL+Rss@-s$uX6^VRM+dq5@vZxmxp-#2 z7ikpElfq>%NJ5~i=`%*5UGI!?gOc9|e)}^Z7bnb;H{$@O;xXi7s)hH=$nR;i2NTKZ zwaE&=(flM`FF;SG6d10bbkR(e5i;*O!ku&hLvHQyCGQwT0|WG)&F_(dWBid**urQb zcys?H$0_4zelZiBzm^%9U?oWWuY_Wlj!<-iTk-lh!7vB!ILFWl;W71Vx(Jc;VJGRm z(IZ$4HA|U;Vq2GrP_gvZ$RJ*Bfjoub^bRrdDKVoF#)QfipRwwQngAHLX?*!r7~fKO%v|}~dPr;KulaWd|BmI~q5PZ7 zzpePUG5^-!Uw{0@8IBHiyQp zafL)3PCM6?>wP9fD9n`!x#;xcik;9e9Jr0pplCKrA$>?X
=Uc@4GbL9_3!({XsjJfqky5hoP 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 From dde883898a015f76a0d64aad98d1dbd96bc18bdd Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Fri, 10 Apr 2015 17:00:13 -0700 Subject: [PATCH 250/308] messenger make script works in py3 --- messenger/make.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/messenger/make.py b/messenger/make.py index 26d6a53..56cc196 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -10,6 +10,11 @@ use_shell = True if sys.platform.startswith("win32") else False +def make_str(byte_or_str): + return byte_or_str if isinstance(byte_or_str, str) \ + else str(byte_or_str.decode("UTF-8")) + + def esc(path): if ' ' in path: return '"' + path + '"' @@ -79,6 +84,7 @@ def build_octave(): def which_matlab(): try: matlab_path = subprocess.check_output(['which', 'matlab']).strip() + matlab_path = make_str(matlab_path) return os.path.dirname(os.path.realpath(matlab_path)) except (OSError, subprocess.CalledProcessError): def ensure_path(path, extension=''): From c7fb2171c05bc0b30795ba1470e9cbb6831fe5c8 Mon Sep 17 00:00:00 2001 From: arokem Date: Fri, 10 Apr 2015 18:38:03 -0700 Subject: [PATCH 251/308] RF: Use pexpect 'which'. --- messenger/make.py | 113 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 112 insertions(+), 1 deletion(-) diff --git a/messenger/make.py b/messenger/make.py index 56cc196..3419422 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -1,4 +1,28 @@ #!/usr/bin/python + +""" +Make : building messenger mex file. + +Some functions have been taken from the pexpect module (https://pexpect.readthedocs.org/en/latest/) + +The license for pexpect is below: + + This license is approved by the OSI and FSF as GPL-compatible. + http://opensource.org/licenses/isc-license.txt + + Copyright (c) 2012, Noah Spurrier + PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY + PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE + COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +""" + from __future__ import print_function import os import platform @@ -6,6 +30,93 @@ import shlex import shutil import subprocess +import stat + +try: + import pty +except ImportError: + pty = None + +def is_executable_file(path): + """Checks that path is an executable regular file (or a symlink to a file). + + This is roughly ``os.path isfile(path) and os.access(path, os.X_OK)``, but + on some platforms :func:`os.access` gives us the wrong answer, so this + checks permission bits directly. + + Note + ---- + This function is taken from the pexpect module, see module doc-string for + license. + """ + # follow symlinks, + fpath = os.path.realpath(path) + + # return False for non-files (directories, fifo, etc.) + if not os.path.isfile(fpath): + return False + + # On Solaris, etc., "If the process has appropriate privileges, an + # implementation may indicate success for X_OK even if none of the + # execute file permission bits are set." + # + # For this reason, it is necessary to explicitly check st_mode + + # get file mode using os.stat, and check if `other', + # that is anybody, may read and execute. + mode = os.stat(fpath).st_mode + if mode & stat.S_IROTH and mode & stat.S_IXOTH: + return True + + # get current user's group ids, and check if `group', + # when matching ours, may read and execute. + user_gids = os.getgroups() + [os.getgid()] + if (os.stat(fpath).st_gid in user_gids and + mode & stat.S_IRGRP and mode & stat.S_IXGRP): + return True + + # finally, if file owner matches our effective userid, + # check if `user', may read and execute. + user_gids = os.getgroups() + [os.getgid()] + if (os.stat(fpath).st_uid == os.geteuid() and + mode & stat.S_IRUSR and mode & stat.S_IXUSR): + return True + + return False + + +def which(filename): + '''This takes a given filename; tries to find it in the environment path; + then checks if it is executable. This returns the full path to the filename + if found and executable. Otherwise this returns None. + + Note + ---- + This function is taken from the pexpect module, see module doc-string for + license. + ''' + + # Special case where filename contains an explicit path. + if os.path.dirname(filename) != '' and is_executable_file(filename): + return filename + if 'PATH' not in os.environ or os.environ['PATH'] == '': + p = os.defpath + else: + p = os.environ['PATH'] + pathlist = p.split(os.pathsep) + for path in pathlist: + ff = os.path.join(path, filename) + if pty: + if is_executable_file(ff): + return ff + else: + pathext = os.environ.get('Pathext', '.exe;.com;.bat;.cmd') + pathext = pathext.split(os.pathsep) + [''] + for ext in pathext: + if os.access(ff + ext, os.X_OK): + return ff + ext + return None + use_shell = True if sys.platform.startswith("win32") else False @@ -83,7 +194,7 @@ def build_octave(): def which_matlab(): try: - matlab_path = subprocess.check_output(['which', 'matlab']).strip() + matlab_path = which('matlab').strip() matlab_path = make_str(matlab_path) return os.path.dirname(os.path.realpath(matlab_path)) except (OSError, subprocess.CalledProcessError): From 70bb23dafd97da2491c0bf988b31f3d1eb2199fa Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 21 Apr 2015 09:20:18 -0700 Subject: [PATCH 252/308] DOC: Small update in the installation instructions. Thanks to @kjaquier for proposing this on #177 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e36c217..05da893 100644 --- a/README.md +++ b/README.md @@ -226,7 +226,7 @@ For Matlab: cd messenger # edit local.cfg in the directory for your platform - python make.py + python make.py matlab cd .. python setup.py install @@ -235,7 +235,7 @@ For Octave: cd messenger/octave # edit local_octave.cfg in the directory for your platform - python make_octave.py + python make.py octave cd .. python setup.py From c12c9c86a70ae19e254ea2ccecbf674bc0a0f036 Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 21 Apr 2015 09:46:58 -0700 Subject: [PATCH 253/308] DOC: Clarify dependencies. --- README.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 05da893..3cf5e99 100644 --- a/README.md +++ b/README.md @@ -33,17 +33,25 @@ machine. These can be installed using ``` $ pip install pyzmq ``` +You will also need [Numpy](http://www.numpy.org/), which can be installed +using: + +``` +$ pip install numpy +``` If you intend to use the Matlab magic extension, you'll also need -[IPython](http://ipython.org/install.html), as well as -[Scipy](http://scipy.org/) and [Numpy](http://www.numpy.org/). These can be -installed from PyPI, or using distributions such as -[Anaconda](https://store.continuum.io/cshop/anaconda/) or [Enthought -Canopy](https://store.enthought.com/downloads/) +[IPython](http://ipython.org/install.html). Note thatIPython notebooks also depend on `pyzmq` so if you have IPython notebooks installed, you likely have `pyzmq` already. +Finally, if you want to handle sparse arrays, you will need to install +[Scipy](http://scipy.org/). This can also be installed from PyPI, or using +distributions such as [Anaconda](https://store.continuum.io/cshop/anaconda/) or +[Enthought Canopy](https://store.enthought.com/downloads/) + + ## Usage To use the pymatbridge you need to connect your python interpreter to a Matlab From f6572d01bb423d784c77e42fdd3460ac5f2c5806 Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 21 Apr 2015 11:54:17 -0700 Subject: [PATCH 254/308] RF: Create a random socket location for every instance. --- pymatbridge/pymatbridge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 31855fa..bae1e61 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -160,7 +160,7 @@ def __init__(self, executable, socket_addr=None, self.startup_options = startup_options if socket_addr is None: - self.socket_addr = "tcp://127.0.0.1:55555" if self.platform == "win32" else "ipc:///tmp/pymatbridge" + self.socket_addr = "tcp://127.0.0.1:55555" if self.platform == "win32" else "ipc:///tmp/%s"%str(uuid4()) if self.log: startup_options += ' > ./pymatbridge/logs/bashlog_%s.txt' % self.id From 9a85ec992f81f19467d8d31de8489000111505ab Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 21 Apr 2015 12:16:33 -0700 Subject: [PATCH 255/308] RF: For windows, bind to a random port and use that as your socket address. --- pymatbridge/pymatbridge.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index bae1e61..4db9337 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -160,7 +160,7 @@ def __init__(self, executable, socket_addr=None, self.startup_options = startup_options if socket_addr is None: - self.socket_addr = "tcp://127.0.0.1:55555" if self.platform == "win32" else "ipc:///tmp/%s"%str(uuid4()) + self.socket_addr = "tcp://127.0.0.1" if self.platform == "win32" else "ipc:///tmp/%s"%str(uuid4()) if self.log: startup_options += ' > ./pymatbridge/logs/bashlog_%s.txt' % self.id @@ -205,6 +205,10 @@ def start(self): # Start the client self.context = zmq.Context() self.socket = self.context.socket(zmq.REQ) + if self.platform == "win32": + port = self.socket.bind_to_random_port(self.socket_addr) + self.socket_addr = self.socket_addr + ":%s"%port + self.socket.connect(self.socket_addr) self.started = True From e72d95995ee2ec80e702dc9f1afb779c2f8eef9a Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 21 Apr 2015 13:08:46 -0700 Subject: [PATCH 256/308] RF: Add 'pymatbridge' identifier at the beginning of the random socket address. --- pymatbridge/pymatbridge.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 4db9337..c5bac25 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -130,7 +130,8 @@ def __init__(self, executable, socket_addr=None, socket_addr : str A string that represents a valid ZMQ socket address, such as - "ipc:///tmp/pymatbridge", "tcp://127.0.0.1:55555", etc. + "ipc:///tmp/pymatbridge", "tcp://127.0.0.1:55555", etc. Default is + to choose a random IPC file name, or a random socket (for TCP). id : str An identifier for this instance of the pymatbridge. @@ -160,7 +161,7 @@ def __init__(self, executable, socket_addr=None, self.startup_options = startup_options if socket_addr is None: - self.socket_addr = "tcp://127.0.0.1" if self.platform == "win32" else "ipc:///tmp/%s"%str(uuid4()) + self.socket_addr = "tcp://127.0.0.1" if self.platform == "win32" else "ipc:///tmp/pymatbridge-%s"%str(uuid4()) if self.log: startup_options += ' > ./pymatbridge/logs/bashlog_%s.txt' % self.id From 01245ec5e14929ca7eb39b7b27ce76322e9f46f7 Mon Sep 17 00:00:00 2001 From: Ali Uneri Date: Thu, 23 Apr 2015 12:54:17 -0400 Subject: [PATCH 257/308] Respect current directory when starting MATLAB on Windows Also suppress verbose startup output by suffixing commands with semicolon. Current directory was not respected on Windows when -automation flag is used, as previously reported below: http://www.mathworks.com/matlabcentral/answers/58372-can-t-change-startup-directory-when-calling-matlab-with-automation-from-command-line --- pymatbridge/pymatbridge.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 31855fa..f30db34 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -176,10 +176,11 @@ def _preamble_code(self): # suppress warnings while loading the path, in the case of # overshadowing a built-in function on a newer version of # Matlab (e.g. isrow) - return ["old_warning_state = warning('off','all')", - "addpath(genpath('%s'))" % MATLAB_FOLDER, - "warning(old_warning_state)", - "clear old_warning_state"] + return ["old_warning_state = warning('off','all');", + "addpath(genpath('%s'));" % MATLAB_FOLDER, + "warning(old_warning_state);", + "clear('old_warning_state');", + "cd('%s');" % os.getcwd()] def _execute_flag(self): # pragma: no cover raise NotImplemented From 88fa211cfe21e10dc42794cd5b5b32c2a7c9ec60 Mon Sep 17 00:00:00 2001 From: arokem Date: Fri, 24 Apr 2015 11:20:32 -0700 Subject: [PATCH 258/308] BF: Install the publish matlab test file. --- pymatbridge/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 0b9ef31..415f956 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -82,7 +82,7 @@ "matlab/util/json_v0.2.2/test/*", "matlab/util/json_v0.2.2/json/*.m", "matlab/util/json_v0.2.2/json/java/*", - "tests/*.py", "examples/*.ipynb"]} + "tests/*.py", "tests/*.m", "examples/*.ipynb"]} REQUIRES = ['pyzmq'] #EXTRAS_REQUIRE = ['numpy', 'scipy', 'ipython'] From 5210f0b5345a3967808e8357cccd1ae3b0fb9539 Mon Sep 17 00:00:00 2001 From: Ali Uneri Date: Wed, 13 May 2015 14:20:49 -0400 Subject: [PATCH 259/308] Unbind socket and run server after identifying random port Fixes #182 --- pymatbridge/pymatbridge.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index c5bac25..0bc390f 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -198,18 +198,20 @@ def _run_server(self): # Start server/client session and make the connection def start(self): + # Setup socket + self.context = zmq.Context() + self.socket = self.context.socket(zmq.REQ) + if self.platform == "win32": + port = self.socket.bind_to_random_port(self.socket_addr) + self.socket_addr = self.socket_addr + ":%s"%port + self.socket.unbind(self.socket_addr) + # Start the MATLAB server in a new process print("Starting %s on ZMQ socket %s" % (self._program_name(), self.socket_addr)) print("Send 'exit' command to kill the server") self._run_server() # Start the client - self.context = zmq.Context() - self.socket = self.context.socket(zmq.REQ) - if self.platform == "win32": - port = self.socket.bind_to_random_port(self.socket_addr) - self.socket_addr = self.socket_addr + ":%s"%port - self.socket.connect(self.socket_addr) self.started = True From 59910d122812188f2a49b5ea8e012692c6f9867f Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 19 May 2015 09:01:28 -0700 Subject: [PATCH 260/308] Produce git history for git markdown, rather than for sphinx. --- tools/github_stats.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tools/github_stats.py b/tools/github_stats.py index ba6e367..572043d 100755 --- a/tools/github_stats.py +++ b/tools/github_stats.py @@ -100,9 +100,8 @@ def report(issues, show_urls=False): # titles may have unicode in them, so we must encode everything below if show_urls: for i in issues: - role = 'ghpull' if 'merged_at' in i else 'ghissue' - print(u'* :%s:`%d`: %s' % (role, i['number'], - i['title'].replace(u'`', u'``'))) + print(u'#%d: %s' % (i['number'], + i['title'].replace(u'`', u'``'))) else: for i in issues: print(u'* %d: %s' % (i['number'], i['title'].replace(u'`', u'``'))) From 276bb209f5e669415ff57718aaa704a4bebdd4aa Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 19 May 2015 09:05:31 -0700 Subject: [PATCH 261/308] Preparing 0.5 release. --- pymatbridge/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 415f956..237ed97 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -4,8 +4,8 @@ _version_major = 0 _version_minor = 5 _version_micro = 0 #'' # use '' for first of series, number for 1 and above -_version_extra = 'dev' -#_version_extra = '' # Uncomment this for full releases +#_version_extra = 'dev' +_version_extra = '' # Uncomment this for full releases # Construct full version string from these. _ver = [_version_major, _version_minor] From 7d403ca4d0bb87b9f60860455eb3f9cef3450b4a Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 19 May 2015 10:11:31 -0700 Subject: [PATCH 262/308] Try to fix pip installation of this, by including `messenger` as a package. --- pymatbridge/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 237ed97..7b3f759 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -3,7 +3,7 @@ # Format expected by setup.py and doc/source/conf.py: string of form "X.Y.Z" _version_major = 0 _version_minor = 5 -_version_micro = 0 #'' # use '' for first of series, number for 1 and above +_version_micro = 1 #'' # use '' for first of series, number for 1 and above #_version_extra = 'dev' _version_extra = '' # Uncomment this for full releases @@ -74,7 +74,7 @@ MINOR = _version_minor MICRO = _version_micro VERSION = __version__ -PACKAGES = ['pymatbridge'] +PACKAGES = ['pymatbridge', 'messenger'] PACKAGE_DATA = {"pymatbridge": ["matlab/matlabserver.m", "matlab/messenger.*", "matlab/usrprog/*", "matlab/util/*.m", "matlab/util/json_v0.2.2/LICENSE", From 6535a151fc8f396bdac771bdb3f8fb5b1e30ac6a Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 19 May 2015 10:56:21 -0700 Subject: [PATCH 263/308] Typo in comment. --- messenger/make.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/messenger/make.py b/messenger/make.py index 3419422..20045bc 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -148,7 +148,7 @@ def get_messenger_dir(): if not platform.machine().endswith('64'): raise ValueError("pymatbridge does not work on win32") - # We further need to differniate 32 from 64 bit: + # We further need to differentiate 32 from 64 bit: maxint = sys.maxsize if maxint == 9223372036854775807: messenger_dir = 'mexw64' From 956195acc7e350b90f277ceea354f011bd83b8f8 Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 19 May 2015 11:17:00 -0700 Subject: [PATCH 264/308] Always explicitly install the messengers for the three platforms. This is because the release is always built on only one platform, but then installed to all platforms from that one release. --- pymatbridge/version.py | 2 +- setup.py | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 7b3f759..df588e3 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -3,7 +3,7 @@ # Format expected by setup.py and doc/source/conf.py: string of form "X.Y.Z" _version_major = 0 _version_minor = 5 -_version_micro = 1 #'' # use '' for first of series, number for 1 and above +_version_micro = 2 #'' # use '' for first of series, number for 1 and above #_version_extra = 'dev' _version_extra = '' # Uncomment this for full releases diff --git a/setup.py b/setup.py index ae9622a..46c5b1a 100755 --- a/setup.py +++ b/setup.py @@ -15,15 +15,16 @@ from distutils.core import setup - -# Find the messenger binary file(s) and copy it to /matlab folder. -from messenger.make import get_messenger_dir -messenger_dir = get_messenger_dir() - -for f in glob.glob("./messenger/%s/messenger.*" % messenger_dir): +# Find the messenger binary files and copy them all to the matlab folder. +# We include all of these, so that when releases are built on travis, they +# include the compiled mex files for all three platforms. +msgrs = ['./messenger/mexa64/messenger.mexa64', + './messenger/mexmaci64/messenger.mexmaci64', + './messenger/mexw64/messenger.mexw64'] + +for f in msgrs: shutil.copy(f, "./pymatbridge/matlab") - - + # Get version and release info, which is all stored in pymatbridge/version.py ver_file = os.path.join('pymatbridge', 'version.py') exec(open(ver_file).read()) From aaa914456a7b4ed71a2957541835276077a6ccb1 Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 19 May 2015 11:24:15 -0700 Subject: [PATCH 265/308] Update notebooks. --- pymatbridge/examples/matlab_magic.ipynb | 623 +----------------------- pymatbridge/examples/pymatbridge.ipynb | 159 +----- 2 files changed, 10 insertions(+), 772 deletions(-) diff --git a/pymatbridge/examples/matlab_magic.ipynb b/pymatbridge/examples/matlab_magic.ipynb index f57177f..8b9e1b3 100644 --- a/pymatbridge/examples/matlab_magic.ipynb +++ b/pymatbridge/examples/matlab_magic.ipynb @@ -22,9 +22,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge\n", + "Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge-13a5236e-5f5a-4b58-a712-84cca5314f75\n", "Send 'exit' command to kill the server\n", - ".............MATLAB started and connected!\n" + "..............MATLAB started and connected!\n" ] } ], @@ -42,320 +42,7 @@ "outputs": [ { "data": { - "image/png": [ - "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\n" - ] + "image/png": "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\n" }, "metadata": {}, "output_type": "display_data" @@ -379,307 +66,7 @@ "outputs": [ { "data": { - "image/png": [ - "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\n" - ] + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgAAAAGACAIAAABUQk3oAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\nB3RJTUUH3wUTEhcaQrN5qQAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAxOS1NYXktMjAxNSAxMToyMzoyNgHlHKcAACAA\nSURBVHic7Z17QFTXtf/XMCAgqAhEUDTyCOMzFd9y4yuJyi+aejXGJL3+0ObeGCOJTVsfUZvEKDFR\na3JbbTX3Vi9GE1uTgk1qLFoR8miMmOsrPgBFQUBREREBhzLA/WPryWSA4cyZc/bZj/X5azwMw96z\nlue7z1rfs4+lubkZEARBEPnwMXsACIIgiDmgACAIgkgKCgCCIIikoAAgCIJICgoAgiCIpKAAIAiC\nSAoKAIIgiKSgACAIgkgKCgCCIIikoAAgCIJICgoAgiCIpKAAIAiCSAoKAIIgiKSgACAIgkgKCgCC\nIIikoAAgCIJICgoAgiCIpKAAIAiCSIqvuX++rq7ulVdeCQsLe+ONN5yPl5WVpaenl5SUxMTEDBs2\nbMiQIb6+Jg8VQRBEMEw+q6ampu7fv79Pnz7OBzMzMxcuXOhwOJQjEyZM2LBhg9VqpT5ABEEQYTGz\nBPTZZ59lZGS4HLx06dKiRYuam5tTU1Nzc3P37NmTlJR04MCB119/3ZRBIgiCiIppAlBWVrZixYpR\no0a5HN+yZUtDQ8OCBQueeuqpLl26xMfHr127tkePHhkZGdevXzdlqAiCIEJijgA0NjYuXLjQ398/\nNTXV5UdHjx4FgGnTpilHAgMDx40b19TUlJmZSXWUCIIgQmOOAPz+978/fvz4mjVrQkNDnY83NTVd\nunSpd+/e3bt3dz6ekJAAAOfOnaM6SgRBEKExQQC+/fbb9957Lzk5ecyYMS4/Ki8vr6+vDw8Pdzke\nFhYGABUVFZSGiCAIIgG0BaC6unrx4sWxsbGLFi1q+dMLFy4AQJcuXVyOd+rUCQCqqqoojBBBEEQS\naNtAX3311YqKis2bN/v7+7f8KbF++vi4ypLdbgeAjh07qvkTRZV2AIgODfB2rAiCIPrB4KmJqgBk\nZmbu27dvxowZjY2Np0+fBoC6ujoAsNvtp0+ftlgs9913HwDcvn3b5RfJ2t+lYeCM850EJYm/cASG\nhRV81rn0kBGzQNTQEBhWmvgLAIg4sb3jjQKzhyMvSiB6HvpPvzs3zB6OvNSF2UoTf+FXd+Ofm2ea\nPZbvoSoAJSUlAJCenp6enu58vLi4+IknnrBarTk5OcrbnCHV/6ioqHb/RENgmCMwrKFjWHnC7IaO\noWEFn+k1eEQ9N2xTbtgeJ6+vDprdufQQBsIUnANRmvgLDIRZOAcip/Dm+Liu5o5HgaoAPPTQQ8HB\nwc5HHA7Hm2++GRERMX/+fIvF0q1bt9jY2AsXLpSUlPTq1Ut5W3Z2NgCMHTvW/eevWbNmxIgRDYFh\n7x+58sb+izdsj1f3TMxOGcLUNZf3bNy4cffu3SNGjFizZo3ZY3GlqNL+6pe3CgqrACA6NGB8XNdt\nR8CbQJSVlSUnJwPAwYMH9R8ueyQnJ5eVlZFM9uZznAMxPi4EAHIKvQqEEWRkZPzud79jM5P1wjkQ\ngTcKeh36z/HSXgH079+/f//+zkcaGhrefPPNkJCQn/zkJ+TI1KlTf/Ob37z99tubNm0iR86cOXPo\n0KGePXsOGjTI/edHRUWRq4QVSTEA8Mb+iw0dw/7/p1ez57OS8TqiTJYpRm/7mhQ635gUQ6IQ3TVA\nCcTFX/2Lpx9YVlYGrE7WOLyfb8937+olCURRpZ2sijQHwjjEDq5zIHb+bL65g2kJc7uBzpo1y2az\nZWVlpaSk/OUvf9m0adOcOXP8/Pw2bNjQsjnshhVJMRd/9S/RoQFFlfaV+y8aN2BEYduRK+Tsn50y\nmJz94YeBePZPZ00doCys3Hc34ZVARIcGkEAAQFGlfduRK2aOTxpIwkeHBlz81b88N7CD2cNpBea2\n2OzcuXNaWtrcuXOzsrKysrIAIDIyctWqVQMGDPD0o6JDA1ZMinn2T2dzCm8aMFLTWLRo0QsvvOBS\nTGMBIrRvTIpxKXGKGggj2L59u8PhiIyM9OZDtn17BQDSnunXMhBpz/R79k9nV+6/+NPh3dv4bXok\nJyf/+Mc/ZjCT9YII7YpJMdGhAWVlZo+mNUwWAD8/v/z8fJeD4eHhu3fvvnr16vHjx2NjY+Pj4zV/\n/vi4ruPjQnIKq57909m0Z/p5N1jEHcryf05rZxZyJiJrT49OPREREdu3bxe4RKA7SiBa/Z41BwLx\nFOU6jOXvmbkSkEJERERSUpI3Z38AiA4NIOcjXHsaDVn+/3R491bbLWTtqbxNPREREREREbqMUBKU\n67BWfxodGkDOR1gXNZo39l8EAMbXnewKgF6Mj+tKCtBY9zQOZdW5oo3zDvxw7UlvZJLxfSCS2gwE\niVFRpR1XRcahJDnLy3+QQQBIARpwyWMk7x+5Am0v/wm49qSAch3m5j1KILAnbxzur8PYQXwBAFx7\nGkxO4c2cwipwu/wn4NrTUNRchxEwEIai5jqMEaQQgOjQgDfwIsAwSLPL/fKfgGtPQ1FzHUaIDg0g\nd4cpjUpER9RchzGCFAIA96wpuOQxArL8nzNclXMR157GofI6jJD2TH/yKxgIfVF/HcYCsgiAsuT5\n/DzuKa0nSlVN5fYmGAiD2KZ6+U9QAkHOVohefF5YBZ4EwlxkEQC4d4Yi98ggeqGku/pfIYHAhae+\nvO95f4sEQsMvIm4giT0uLsTsgahCIgHAKpARkIWnR+k+7oEQACi6iQtPPfGoEEfAQBgBuaJiZ79P\n90gkAHjNqzvazM6KKQuVWC88LcQRorsGAgZCV5RAcFH/AakEAPCaV2801H8IaEHRF22BwH6M7mj+\nH2EWcgkAXvPqi+ZyJ/FHYyD0QnMgSF0UG2N6oaEiai5yCQBe8+qL5nInBkJHFN+hhkBgOU5HeNn+\nwRnJBACvefXDm3InBkJ3tPkOMRA6wl39B2QTAMBrXv3wMt3RDKoX5L5TzWUHDIRe8GUAJUgnAHjN\nqxfkCsAj36Ez97bpxoWnt3jpO8TGmF7wZQAlSCcAeM2rC9p8h84ogUAl9gbvfYfYj9EF7gygBOkE\nAPCaVw90KXdGhwYCmkG9w/tAKEr8/pFy3YYlHzw2AEBOAcBrXu/RpdxJykcYCG/QJRDElYtLIm/w\nsiJqFjIKAF7zeo8u5U4MhJcUVdrdPP5XPUog8CZ5bXhfETULKQUA2wDeoVe5Ezfn8BIinN4XnaND\nA8iHFN28o8OwZIW7+g/IKQCAbQDv0LHcSdoAuDmHNkggdFl1RncNAFwSaeVzbs1skgoAtgG8QUe/\nM/kQDIQ2dAwELom8gcc7AAiSCgAWPb2BfGm62N2U2zK8/ygJ0dF4jksib+DxDgCCrAKARU+tKItE\nfSoP91QE156eoq/xHBvymuH0DgCCpAIAWPTUyr3Fjm5Xu9iQ9wa9Go/ojNAMp3cAEOQVACx6aoOk\nO2ne6gIGQhu6Nx4xENooqrwDfDYAQGYBwKKnNnTvd2EgtIGBYASu97OSVwCw6KkN3ftd2JDXhnGB\n0OsDZUA5e2AJiDOw6KkBI/pd2JDXgEGBIC9wSaQe3VtilJFXAOBeIRvTXT3Femw80BJsyHuKQY1H\nXBJ5iu4tMcpILQC4GZmnkO+KnK91BNuPnmLQnUcYCE/h9xYwgtQCgEVPTyHp3ltvvzO2Hz3FoDuP\nMBCewu8tYAS5BQCLnh5iULpjQ94jlG9J9zuPMBAewfUtYASpBQCw6OkJxqU7NuQ9wrjGoxIIRD2c\n+n8IKABY9FSLoXc8YiDUQ6HxiEqsBn43AVWQXQCw6KkeQ/tdGAj1GBoIVGL18N4BBhQAvAtJPYb2\nu7Ahrx5DA4FKrB7eO8CAAoB3IalEOTUb1O/ChrxKjOsA3/1Y7AOrQ4AOMKAAAN6FpA4KpwN8PKQa\njL71VFkSIWrgugMMKACARU91GHQPsDOkq1mMAuAWCh1gXBKpQYAOMKAAABY91WHQPcDOkA9HJXYP\nhc2HcUmkBgE6wIACgKjEoHuAnUElVgOF7wcDoQYBOsCAAgDY9VIHhXRHR5YaaAbCuD/BO0Z7IqiB\nAoB3P7aP0c4T5cPRkeUeys4TXBK1hTDfDArA92DXqy2obXqO7Uc1GO08UZZEeBHQFhQ8EXRAAQDA\nrld7UNv0HAPhHsrOE3RktQUFTwQdUAAAsOvVHtQee937bgkIA9E61JwnqMTuoeCJoAMKAAB2vdqD\n2hmZ95aa0VBznuCSyD1iWIAABYCA+xC4h1q6oyPLDTSdJ+jIcgMdTwQdUADugl2vtqDpPEFHlhto\niqISa3RktYT3B8E7gwJwF9yHwD2UDQ9oBGoJZecJPqKnLXh/ELwzKAB3wX0I2oKy8wTbj21B2XmC\ngWgLap4ICqAA3AW7Xm1Bec8TDERbUHaeoCOrLUT6TlAA7oJdr7agbHhAR1Zb0A4E/x1OgxDGAgQo\nAAq4D0Gr0N/zBB1ZrULfeYKOrFYR4zkwCigA34P7ELTElP/86MhqCX3nCT4Zxg0CbAJBQAH4Hux6\ntcSUPU/QkdUSU5wnuCRqiRjPgVFAAfgebD+2xJQ9T9CR1RJTnCe4JGqJGM+BUUABQNxhyp4nqMQt\nMeXbwEC0RKQOMKAAOINdr5aYku7oyGqJuYGg+UdZRpjnwCigAHwPdr1cMCvdcR8CF0zffAaXRATx\nvgdf+n+yubn5H//4x8mTJwsKCsLCwuLj46dNmxYQ8H1mHzx4sKSkxOW3fH19Z82aZfTYorsGFFXa\nPz9fJcwlnjeQdDflpDM+LiSnsKqo0j4qSoQb7r3ErM1nyJIIrwBcEMYCBPQFoLm5+bXXXvv444+d\nD27cuHHbtm3x8fHKP8+cOePyi4GBgRQEYHxc15zCKix6EorNLneiEYhg4uYzuCRyRjALENAXgK1b\nt3788cf9+vVbuXKlzWY7derU1q1bs7OzFy1a9Mknn5D3FBcXJyQkzJ49+wcD9aU3VOK4QEwUQqLE\nOYU3XxknzmrLS0x5/pQSiBUQQ/+vs4ZIuwARaAvAF198YbFYtmzZEh4eDgDDhw+PiYl5+OGH8/Ly\nqqqqQkJCbty4UVtbO3z48ClTplAeGxDbw360PdzFRMcbBsIZE58/JcBDr3REvISk2gR2OBwnT56M\niYkhZ39CeHi4zWazWCwOhwMALl26BAAxMeYsN9B/0hJTegDoP3HGROthNG4J54RgHlCgfAVgsVj+\n+te/Bgb+oJRZWlqan58/ePBgogrFxcUA0Lt376NHj+bn5/v4+PTp0ychIYHOCJ39J+gIIulOzsVm\nkVN4s2+QiX/ffMy1HjoviST/H2G6F8sIqAqA1Wrt1asXeX327NlTp04VFBTs3bvX399//vz55DgR\ngGXLlpFLAcLIkSNXr16t/K6hKP4TiKPw19jF3E2v0H+iYK71EJdECiI9CEzBBBsoITs7+7e//S15\nPXr06B/96EfkNRGA5ubmFStW9O/f/+rVq//zP/9z+PDhefPmZWRkOLtFDQX9JwQT0534T3LOV/Ud\nJLUT1JTtmJzBJRGBBEKMB4EpmHYj2JNPPrlt27aXX345MTHxq6++mjJlyuXLlwFgzJgx8+bN27Vr\n17/9278lJCQkJSXt3Llz0KBBhYWFH374IYWB4f4nBNOfe0cC8bn0gTC9/o578xFM2RfLaEy7AujW\nrVu3bt0SExNTUlKWL1+enp6elZWVnJw8ffp0l3dardbk5OQTJ06cOHHC/Wdu3LiRvFi0aFFERIS2\ngQ0IcQBA0U17eXm5tk8wmsrKytra2rq6OtI2Nwi73Q4AYX4Os76H2zU1AOBobLx+/bqvry9NH7CJ\nXLt2rbGx0WKx+Pv7kyMH8q8DwKAwMCsQYX4OMox5el+K3bp1q7q62uhM1gsSiC4+Hp8ZFi9eDABl\nZWWGDMs7qP6nOnr06JdffpmYmDhixAjn4xMnTkxPT//666+Tk5Nb/cWuXbsCQG1trfvPz83NJS/s\ndjs5f2mA5KLD4dD8CUZjt9vr6+utVquhI/yq+DYARHYEs76HYZG+AFBa7aivr2c5HPpSX1/f2Nho\nt9ubm5udj5v4DZBAFN3U/n+qLerr6ylksl6UVjsAYFiEn0ejvXr1qnJeYhCqAlBeXr5p06b8/HwX\nAaivrweA0NDQc+fOpaamPvjgg0QzFQ4ePAgAcXHt1CCnT58+cuRIABgwYIDmQSZ0cABcKa12nLpl\nZdPvRZaHwcHBYWFhxv2V0uoLAPD/BnQPN6n1RwJRXtdc59upd9cAZ+uwwBC1CwsLU9pdjASitNqh\newj8/PysVqvRmawL5OwPAAmxkR79YmNj45o1a8jrpUuX6jwsr6EqAIMGDbJarbm5uRUVFUoyNTY2\nbt++HQCGDBly//33Hzt27Pjx47NmzerRowd5Q21t7b59+wDgsccec//5TzzxhIu0aKBvMBD/SXBw\ncHBwsJefZgRkeRgUFGTc8BT7zcD7TTvt9r03ucrGDv2NnCxTBAUFORyO4OBgIgBKL8rEQAT8824y\nfHu1Qd8lkcPhaGhoMDST9eKbs3dNcZ4ONTg4mKxc2SwBUW0CR0VFPf3007dv3545c+Z//dd/7d27\nd8WKFaNHj/7f//3fIUOGTJ8+3d/ff968efX19TNnzvzv//7vgwcPfvjhhzNmzKioqJg6dergwYPp\njBMfhGTiNnDOEA+SsviSEBash7hLroJI28ARaDfWli1bFhgYmJaW9u6775IjPj4+Tz/99C9/+Usf\nHx8AePHFF318fLZu3frOO++QN1it1p/97GcvvPACtUHilnCmbwPnjMwCYLoXi4Bbwom3DRyBtgB0\n6NBhyZIlzz333Pnz58vLyyMjI2NjY51rixaLJSUlZc6cOXl5eRUVFffff39MTAw1+78zMm8Jx4j4\nESU+XCZvIAimWw9xSzjBngSpYI61LjQ01H2xPigoaOjQodTG4wLuRMZIupNAlN6W9wrAxG3gnDF9\nAIhB4BPBWgG3hCOYXvklgZC5BMTI7mO4JRwjgdAdFIBWwEcSsrANnDPfSFkFYucJtJIviYTcBo6A\nAtA6xHchZ7qbuw2cM5L7T9jZj0TyJRELXiyDQAFwh8z7nzCS7qT/+U2pjIEwfRs4Z0g+yOmNZsSL\nZQQoAK0j85ZwTKU7CYScRiCmau6M5IOJmO7FMgIUgNYZ90AIMPY/kDJCpjtfMOLFIpB8kHNJxIgX\nywhQAFqHnf4nfZhKd6LEMjtBGemCyLwkEtUCBCgA7pHT9sBUuvfs5AdyB4KRtYi0T2lmx4tlBCgA\nraP4T2SzPbCW7j07371XUbZAMGs9lK0KJPZ8UQDaRM4t4RhM91FRASDf2vPu8p+Zs7/kllxGTHG6\ngwLQJjLbHhhMd9ksuUztx0eQc0nElClOd1AA2kRO2wOD6T4yKhDkCwSD7VamsoIyopriUADaRGbb\nA1PprrQBpIIpDyhBziURU6Y43UEBQH4Ag+lOBEBOJWYKOZdETJnidAcFoE3k3ACLwXRXnKBmD4Qq\nDAZCQieo8JNFAWgTCZ2grHlACUoJSJ7iA7MeUILwp0UFxgPhPSgA7pDN9sDsGZY4QeWBNQ8oQcIl\nEYFBU5xeoAC4Q07bA7PpLo8SM1j/Ici2JGLQFKcvKADukM32wGy6y+YELWa10cpgblCAKVOcvqAA\nuENO24PA6c4LRZV3gDEPKEG2JRGDpjh9QQFAvofZdB/VU65n0jK7+6lsSyJma3F6gQLgDtmcoMym\nu2xO0NJqBzAZCEQwUADcIdWjUFk+vSqBkKH48M29x5+x5gICyZZE7Dwc2zhQANpBnqfDM255Ztab\npDtk+c9mFCR0goqdeCgAqpBnK0rG010GAyLj9R95nKDMmuJ0BAWgHeR5Ojzj6U4CIUP7sYzVDjCB\n2QwxCLFNcSgA7SCb7YHxdCf+SLEprW4AJj2gBHmcoMya4nQEBQC5C+PpLo8SM+sBJcgTCGZNcTqC\nAtAO8tgeGE93ebaiZLwHgIgECkA7SOUE5QKxiw8se0AJkiyJGDfF6QUKQPvI4ARl3/IsyUPJWfaA\nEiRZEt27IGa0E6MXKABqkcEJyni6y2NAZLz+I8OSqPjujtyCW55QANpHBico4x5QggxO0MNl3MxO\n7CURSTPGTXHegwLQPr1DZdmJjIt0F9sJyrgHlCDDkohxU5xeoAC0D8sFWb3gIt1lMCAy7gElyBAI\nNh/KpjsoAO0jg+2Bi3SXwQlKZje6dyezB4IA3Es5gUEBaB9JbA/AT7qLWnxQtK1nZ19zR+Ie4ZdE\nknhAAQVAJWLbHnhJd+GdoLwIm/BLIi4uiHUBBcADRLU9cJTuMjhBR0VxEAixl0TFbN8VryMoAKoQ\n24DIUbozblT1EmLG7dnZz+yBqEXYJZGg/9NbggLgAaIaEDlKdxm2oozqxHQDgCC2E5T8T2fcjKsL\nKACqENv3xlG6ix0Icj5lvAMsA6ImWEtQAFQhtgFRnnRnHJJgo6I4KHOJrcSM74yrIygAniHkNS9H\n6S68AZEXBF4SKZPiwhbhJSgAqhDYgMhXugtsQFTWFnyVgMRbEok3IzegAKhFVAMid+kuqgHxXv2H\nAxkGoZdEBMZ3xtULFAC1iG1A5C7dxTMgkhlx5AEVdUnExc64eoECoBZRDYjcpbuoBkTuGqoc5YwG\nuNgZ13tQANQitu1BknRnGSJpIzkpAYG4SyIudsbVCxQA2eEu3cVWYo4QNRAcmeK8BwVALaIaELlL\nd1ENiBzdBIAIAwqAWgQ2IHKKSMUHvsy4BCGXRLzsjKsXKAAeIJ4Bkcd0F9KASALB17yEXBLduyDm\nzBSnGRQAjxHJgMhpuotqQOSoEEcQb0lUfHdrdFkKcSgAHiCeAZHTdOduwO1CzLicItSSSLietntQ\nADyAI6uMSjhNd1ENiNyZccVbEpG5cLEzri6gAHgAKXpyetJsFU7TXTwDIndmXAJ3A0ZcQAHwAFEN\niHz1HoWEOzMuQbwlEaeB0AwKgAcoJ0phrnnvPg24K2cldSENiDwi2JKIR1Ocl6AAeIZImcFvugtm\nQNx25Ap5wW8gxFgS3V0P8RYFb0AB8AyRDIhcp7t4BkTuzLgETvPHDfLUfwDAhEdPNDc3/+Mf/zh5\n8mRBQUFYWFh8fPy0adMCAn6QRmVlZenp6SUlJTExMcOGDRsyZIivLxNPyYgODYTCKpGKnlynuxgG\nRE7NuITorgFFlfbPz1dxnUgErs242qB9Vm1ubn7ttdc+/vhj54MbN27ctm1bfHw8+WdmZubChQsd\nDofyhgkTJmzYsMFqtVIda2uQKwDyFHXe4Trdx8d1zSmsyim8uQJizB6Lt5D1BHceUIJ4SyJOA6EN\n2iWgrVu3fvzxx/369fvoo4+OHz/+wQcfPPzwwxUVFYsWLSJvuHTp0qJFi5qbm1NTU3Nzc/fs2ZOU\nlHTgwIHXX3+d8lBbRSQDIpEx7jygBJEMiJx6QAkiLYm4DoQ2aAvAF198YbFYtmzZMmjQoMDAwOHD\nh7/55psdOnTIy8urqqoCgC1btjQ0NCxYsOCpp57q0qVLfHz82rVre/TokZGRcf36dcqjbQl3hhk3\ncC1j4hkQOS2mi7UkkssDCpQFwOFwnDx5MiYmJjw8XDkYHh5us9ksFgup+Rw9ehQApk2bprwhMDBw\n3LhxTU1NmZmZNEfrBjEMiFynu0gGRE7NuARhAiHAFDRAVQAsFstf//rXHTt2OB8sLS3Nz88fPHhw\neHh4U1PTpUuXevfu3b17d+f3JCQkAMC5c+dojrZVlK0oeTcg8p7uwhgQ+TXjusB7RgkTCI+g2gS2\nWq29evUir8+ePXvq1KmCgoK9e/f6+/vPnz8fAMrLy+vr652vDwhhYWEAUFFRQXO0bUFsD0WVdogz\neyheIEC6R4cG8H7SAc7NuHBvSVRUaS+6eYffWShwasbVjGneyuzs7N/+9rfk9ejRo3/0ox8BwIUL\nFwCgS5cuLm/u1KkTAJAmASOIYUDkOt3FMCAW81yII4ixJOLajKsZ024Ee/LJJ7dt2/byyy8nJiZ+\n9dVXU6ZMuXz5MmkD+Pi4jsputwNAx44dTRhoC8TYAVGAdCeD5739yPv4FXhfEnFtxtWMaVcA3bp1\n69atW2JiYkpKyvLly9PT07OysoYMGQIAt2/fdnkzWfuHhoa6/8yMjIyMjAzyOjk5OSIiwoCBQ1gH\nBwA4HA6zSlI3btyora2tr6/35kPyrlQBQEQgK4W1trDb7ZWVlb6+vi63CgJAmJ8DAM5fu834FNyT\nd/kmAAyN8CWzqKysdDgcfn5+/v7+Zg9NLUMj/HIK4UD+9ReHdvLoF2/dunXr1i0vM1kvDuRfB4Cw\nDjr/v16/fj15UVZWpuPH6gVVATh69OiXX36ZmJg4YsQI5+MTJ05MT0//+uuvk5KSAKCkpMTlF0lI\noqKi3H/+7t27ldfTp08PCgrSZ9w/JLyDAwCKbtpramqM+Px2qa2traurAwBvzhFfFd8GgPAODrNm\noZL6+vq6ujqr1dpynMMifcHUQOhC6W0HANjtd2dRW1vb2NhYU1PT0NBg9tDUEtkRAMDh8DiXdMlk\nfdH3f8TVq1edT0oMQlUAysvLN23alJ+f7yIAZAkQGhrarVu32NjYCxculJSUKO1iAMjOzgaAsWPH\nuv/8ESNGKCIRHBwcHBys8wQAAKBv9wCAK6XVDoM+v13I1xUUFOT9AB7oZtS3pBd+fn61tbW+vr4t\nx2l6IHShtNoBABP63Bcc7AsAQUFBDocjKCio5RUPs/TtYQW4Xnrb40A0NjaSybIQQRKIvt27kkDo\nQm1t7fTp05V/MigGVAVg0KBBVqs1Nze3oqJCsfo0NjZu374dAEj9Z+rUqb/5zW/efvvtTZs2kTec\nOXPm0KFDPXv2HDRokPvPX7BggYu0GEF4OACcAYBTt6xm9e78/f2Dg4Nb2qXUQ9I9IaZ7ONvODbvd\n3tDQ4Ovr23KyNT72ey+COfWfKC6mkJAQEgi73e5wOMLDwzkSgIE+doBzpdUOTxPS19fXarV6mcm6\noLT0EmIjdfzY8PDwNWvWkNdlZWWyC0BUVNTTTz+9c+fOmTNnPvPMM7169Tp8A5QDUAAAIABJREFU\n+PD+/fsrKyuHDBlCpHLWrFl79+7NyspKSUmZNGnS5cuX09LS/Pz8NmzY0LI5bBa8GxAF8ICCEAZE\nYQJBXuQU3uTUzsS7GVcztJvAy5YtCwwMTEtLe/fdd8kRHx+fp59++pe//CU5v3fu3DktLW3u3LlZ\nWVlZWVkAEBkZuWrVqgEDBlAeqht4NyAKk+5iGBC5NuMSxseF5PC8t6AAZlxt0BaADh06LFmy5Lnn\nnjt//nx5eXlkZGRsbKzLBWB4ePju3buvXr16/Pjx2NhYZZdQduB9B0TB0p1fA6IAZlxnOF4Scft/\n2UvMsYGGhoa2W6yPiIggpiAG4X0HRGHSnfdNoYXxnpNA8JtXXO+M6w2sVNX5gvcdEIVJd9537hVs\n/2FcEnEHCoAWeN8BUZh0F2NTaAGaMfwviYQqiqoHBcArONUAYdKdeyXmeSNoZ7gOBKfD1gUUAC1w\nvSm0ku4CLDy53hRaDA+oCzyeTIUMhEpQADRyrw/McbqLAb8eSmHMuMD5kojAbyJ5AwqAV/BrQBQs\n3T8/z58JXTAzLr9LIsHMuB6BAqARfjeFFizdSSB4bD/yOOZ24XFJJIwZVwMoABrh17onZLrzaEAU\nxoxL4HdJJJgZ1yNQADTCrwFRsHTn14DI45jd0Jvb/xEEMZoxnoICoBGufW8gULrzGwhhzLgEfjNK\nGDOuBlAANMKvAVHUdOdLA/garRoUJeZrajJ7QAEFwBt4NNKIl+6cGhCFDAR5wVcgRDLjagAFwFv4\nMiAKme78GhB5XEO4gcfpCGbG9RQUAO3waEAUON35MiAKZsZ1hrMlEVf/f3UHBcBb+DIgCpnuPBoQ\nhTTj8rgkEsyM6ykoANrh0YAoZLrzaEAUzIzrDC6JOAIFQDs8GhCFTHd+Wxr8jrxV+FwSCVsUVQMK\ngA5wVHwQMt15NCAKacblbkkk0s642kAB0I5iQOQFUdOdOwOieB5QF3hZEvEyTuNAAfAK0sTjxfYg\ncLoTAyIva08hzbjA4ZKIwKN7VS9QALyCRxufwOnOixNUYDMuX0uizwurgM//xXqBAuAVJN15WVkL\nnO58OUH5apN6BI/ZJZgZ1yNQALyCR9uDzOnOCEKacQl8LYkENuOqBAVAIgROd76UmJdxaoCzQIhb\ni1MJCoBX8GVAFDjd+TIgChwIhC9QALyCOwOi8LBffBDVjEvgaEkkvBlXDSgA3sKLAVHsdOfIgMi+\nRHkDR0uie9dhAnZi1IMCoA/sGxCFT3e+DIg/Hd7d7CEYBS9LIoE3ZFUPCoC38GJAFD7dydTYbz8S\nM67wcLAkYj5VKIAC4C28mGqE3H/YmXuPhWG98kAQOBC8LInICIU046oHBcBbojnZi1hgDyiBFwOi\n8IHga2q8tI4MAgXAW/gyIAqc7rwEQngPKC9LIiE3ZPUUFABvUU6pjF/zypPuLGsAy2PTCy6coGKb\n4tSDAqAD7FtrZEh3xQnKsgFRkkCQFywHQtQNWT0FBUA3WDYgSpLuvDhB2V8xeAn7ExR4Q1aPQAHQ\nAfafhS1JurNvchV4Q9aWsKzELP9vpQkKgG6wbECUJN152YpSYA8ogf0lkcAbsnoECoAOsG9AlCTd\n2Q+E8B5QZ3BJxD4oADrAvgER050RJGnGsK/EwptxVYICoCfMFh8kSXcuDIgggRmX8SWR2BuyegQK\ngA4wvhWlPOnOuAFRBg+oC2wuidgclSmgAOgDywZEqdKd5a0ohd+QVYHxJRFBhkC0CwqAPrBv7BN4\n/+GWsLkVpfAbsjrD8pJIKjOue1AA9IFlA6Ik+w8TWN6KkuWmqO6wf3oV3oyrBhQAfWDf9iBJurPs\nsJRq/2GWl0RSmXHdgwKgDyz7OqRKd/a3omS/OK4LLC+JJDHFqQEFQE+KKu0MLnmkSneWnaDybMgK\nDDtB5THFqQEFQB+YtT3Ilu7MOkEl9IASWFsSsTYec0EB0A02bQ8SpjubTlBJ7gFWYHZJREAPKAEF\nQDdYtj1I5QElsOYElWRDVmfYXBKhB9QZFADdYNP2IJUHlMCmE5S0QyXxYhFY3hNUEi9Wu6AA6Aab\ntgdJ9gF1pjeTRiCpvFjOsLYnKGsrA3NBAdANNm0PrJ0HKcBm6Vm2HgCwuySSrhbnBhQA/WFqiSFh\nurPsBJXEA0pgcEkkmymuXVAAdINB24Oc1kMGnaDbjlwhL6QKhAI7SyJ2RsIIKAB6wprtQcKyA4FN\nJ6hs1sPo0AA2pyyhKa4tUAD0hDXbg4TWQ2fYcYJKbj1kZ0kkoSnOPSgA+sOO7YEdKaIMm05QqTyg\nBNYCIaEpzj0oAHrCmu1Bqu0nnWEzEBJ6QFmDnZRgBBQAPWHQ9oCwgIReLAJrSixtINoCBUBPlHYr\nI9e80qY7U05QFsZgFkwtieQ0xbkHBUBn2LE9yJzuiiWXBSeo5IEgL1hYEklrinODryl/NS8vLzc3\n97vvvmtqaoqNjZ00aVJ8fLzy04MHD5aUlLj8iq+v76xZs+gOUzufn68yfd0tebpHdw0oqrSzEAgC\nOysDyoyPC8kprCqqtEOcySOR3BTXKiYIwKeffrp06dLGxkaLxdLc3AwAmzdvXrZsmXJ+37hx45kz\nZ1x+KzAwkAsBGB/XNaewKqfw5gqIMXckkqd7dGggsOH5k9wDSmDBkstOK4IdaAvAkSNHXnnllYCA\ngDVr1iQmJl6/fv0vf/nL1q1bV69ePXTo0L59+wJAcXFxQkLC7NmzfzBQX3MuVjyFHaeH5OmubM5q\nuhITJPSAEthZEklrinMD7bPql19+2dTUtGrVqqSkJADo3LnzwoULCwoKcnJy/vjHP65cufLGjRu1\ntbXDhw+fMmUK5bHpAjvPpJU83cc9EAL7GQoEOysDyrA2cWmLoq1Cuwl87NgxABg1apTzwalTpwJA\nYWEhAFy6dAkAYmKYWLVpgCn/CUic7uz4T6T1YhHYWRJJ9UxmldC+AkhMTBw5cuR9993nfLC2thYA\nIiIiAKC4uBgAevfuffTo0fz8fB8fnz59+iQkJFAep2acdyIz9+SL6U7IKbxp4skXt590XhKZ+CXI\n7MVyA20BSElJcTlSUVGxefNmAHj00UfhngAsW7aMXAoQRo4cuXr16l69elEcqXZYsD1guhMnqOlX\nACzYH82FkSWR5Ka4tjD5PoDs7OypU6devnx58uTJkydPhnsC0NzcvGLFil27dm3YsCEhIeHw4cPz\n5s2z282/ilSPubaHe2UHSRsABHY2Z5V8+0kWNmeV3BTXFqZZay5fvrxu3bq//e1vfn5+L7744ksv\nvUSOjxkzpmfPnnPmzAkLCyNHJkyY8JOf/OTEiRMffvjhf/zHf7j5zMOHD5eVlQHAxIkTjR6/G0ZG\nBRLbw8Ka+9p/t+fU1tbW1tZaLJaAgDaXM3mXqwCgZ2e/mpoaI8ZADbvdXltb6+vrq2EiPTv7AcD5\n6zUmfglZ+RUA4HA4VI6htraWvNnhcBg8NHqQuZy/5hqImpqadjNZL85frwGAqE5aEslL/v73vwNA\naWkp5b+rBnMEYOfOnWvXrrXb7WPGjFm+fHlsbKzyo+nTp7u82Wq1Jicnnzhx4sSJE+4/9ne/+x15\n0aNHD9JRMIXwDg4AOH+9pqKiwojPr6ysrKurq6+vJ3dRtErh9RoACPNzGDQGatTX19+8edNqtfr7\n+3v6u2F+5Lxz28Qv4fy12wAwKAxUjqGysrKxsdHX11fDfJllaITfV8WQlX/9uQF+zserq6urq6vd\nZ7JekFpciI+dcjJcvXp16dKlNP+iR5ggAMuXL09PT4+MjFy1atW4cePU/ErXrl3hXq/YDVFRUVFR\nUQAQEBBAYU3RFg90awa4ToZhxOcHBAQ0Nja6n+M3ZXcAIDrUzO9BFywWi7+/v9Vq1TCR8Q+E/Db3\nZulth4lfQultBwD4+vqqHIO/v39jY6O/vz/vgXOmrUDU19eTmVKYbGm1AwDGx3UNCKB60gsICBgx\nYgR5nZubS/NPq4G2APz5z39OT0+Pi4vbtWtXp06dXH567ty51NTUBx98cPHixc7HDx48CABxce00\nVdesWaN81yaS0MEOcLG02pFX629EzZHUQ4KDg8PDw9t6T2n1GQCYNjQmkvOul91ub25u9vX1jYyM\n9PR3lUDYO4SY1f3zNBAOh8PhcERGRookAEogXIIYEBDg7+/vPpN1QWk/hIeHU/4fERkZuWPHDgAo\nKyt75JFHaP5pNdBuAn/yySc+Pj5vvfVWy7M/ANx///3Hjh3bsWPH5cuXlYO1tbX79u0DgMcee4ze\nQL3A9IcDo/WQYPrDgdGL5YJZnigMRFtQvQJoaGg4efJkYGDgu+++2/KnAwcOXLJkybx58zZu3Dhz\n5sw5c+Y88MADV65c2bFjR0VFxdSpUwcPHkxztN5g7k5kJN0x18FsSy56sQjk4cA5Zm/NJLkXq1Wo\nCsCpU6eIlfPw4cMtf+rj4wMAL774oo+Pz9atW9955x1y3Gq1/uxnP3vhhRdoDtVLzN3/BB1vCmRL\nOLMsubgNnAtmLYnwUcBtQVUABg8enJ+f7/49FoslJSVlzpw5eXl5FRUV999/f0xMDHf1UHP3P2Hh\ntntGYGFLOGm3gXPG3CWR5PtiuYHRLTaDgoKGDh1q9ii0Y+7+J5juCuZuCSf5NnDOmBsIvA24LfCJ\nYIZg7pZwku8+5oy5W8JhIJgC98VqCQqAIZj4SEK0ADlj4iMJ0XnijKLE9AOx7ciVu2PAQLQABcAo\nzNqIBncfc8GsjWjQAuSM6d5otAC1CgqAUZALf/pFT+J4wXR3gb4RCC1ALpi1JEILkBtQAIylqJJ6\nCQgtQD+EKLFZF0ZoAVIwKxDoiXADCoBRjHsgBMw4HWO6u2BuINACpNDbVGscNgBaBQXAKMwyAqHz\nxAWzjEAYCBfMOgXjo/HcgAJgFKZsRGP6A7BYhmbxAS1ALTHFCIQWIPegABgIcYDQ7HrheaclZCMa\noKuOeOdRS0w0AqEXqy1QAAyEOEDoFz3RAtQqNI1AuB1Tq9A3AqEXyz0oAAZC0p2mEQgdb61C339C\nVB8tQC6YEIjKO4CeiLZBATAQ+v4TtAC1ilmBQAuQC/S/EHRFuwcFwEDoG4Gw9Nwq9I1AaAFqFfqb\nJGIg3IMCYCBmPZEKHW9tQaf4gK34tqC8JEILULugABgLTSMQpntbKEYgOuB1WFuYskkiWoDcgAJg\nLPTtB2gBcgMdJUYLkBtoGoHQAtQuKADGojyRisLfQguQG2j6T9AC5AaqgUALUHugACAIgkgKCoCx\n0DQgogfUDfQDgR5QN9AJBHpA2wUFwFho2h7Q8eYGmk5QDIQbiBLTAQPRLigAxkLN9oDWQ/dQezYk\nerHcQ21LOAyEGlAADIeO7QGth+1C05KLXqy2oLY3Hz4aTw0oAIZDx/ZALEB4tesGmoFA2sXovfnQ\ni6UGFADDodN+xA5wu2AgGIGOEmMrXg0oAIZDpw+Mj4JpFzp9YGw8tgsdJcZAqAEFwHAo7AiknNQw\n3dVg3NoTW/FqoNAHxg6wSlAAaGB0+xHPO2pQ2o/GBeLeqhPrP+6gsDUTdoBVggJAA6OLnqTxiOne\nLmRbGKMDgZvPqCTHOCXGW8DUgQJAAzpFTzQ8tIvRXxF2gFVClkSHy4wqimIgVIICQAOj249oeFCJ\n0UqMjUeVkECU3nYY9PkYCJWgANDA6NtQMd1VYmj7ETsx6iGBKK12lFbrrwHYAVYPCgAljGs/Yrqr\nx9DbUPFmbPUoW6SU3m4w6E9gS0wNKACUMK4PjIYHDRhxGyrejO0RpB/zTalRgUDUgAJACeOqz3jL\nu0cYp8TYePQI4/rAGAj1oABQwrg+MHaAPcJAJcabsT3BuD4wtsTUgwJAG93XnpjuHmFQHxhvxvYU\ng/rA2Ir3CBQAShh0Gyp2gD3FoNtQ8bzjKcoXpW8fGG/G9ggUAHoYdxsqdoA1oK8S483YGiCnaX37\nwHgztkegANCD9Gn1rT6j4UEDRvSBiyrvALbiPYQE4h/Ft3X8TOwAewQKAD3mDO8OercKMd01YEQf\nOKewCug+8FYARvbUf0mELTGPQAGgh+73A+cU3sR014DufWClE4OB8IienfzAmEBgJ0YlKABU0bcP\nrPS7MN09QveGPN6Lp42enX1HRen5xGzsxHgKCgBVyApx27dXdPk07HdpRt82AN6Lp5mRUXo6I7Ai\n6ikoAFTRtw2A6a4ZfdsApPKADQANjNK1DYAVUU9BAaCKvm0ATHfN6NgGwAaAN+jYBsAGgAZQAGij\nV/WZpDs2ALShexsA687a0LENgA0ADaAA0Eav6vPhMrL5MDYANKJXIO52YrABoBW92gBYEdUACgBt\n7rYBvC56flN2BzDdvUCvNgC5FMPN+DQzOjoY9AgEVkQ1gAJAG1Kx8b7oSbbQwnTXjC5tAKXujJUH\nzegbCKyIegQKgAl4X33+89m7d89jumtGxzYAnv29QZdAYANAGygAJuB99Zk0ADDdvcT7QOBeTLrg\nfSCwAaANFAAT8L76jA0AXfA+EHfvAMBAeIf3gcAGgDZQAEzA+6InNgB0wctAKL+Fl2Je4mUgsAGg\nGRQAE/Cy6IkNAL3wMhBFuAWQTnj5lB7ci0kzKADm4M2mQNgA0BFvqs/vH9FnTycE7gVi5b6LGn4X\nGwCaQQEwB2VTIA2nHnLBO6NfsP7Dkg+l+qwhEOQZAHOGR+o/LPnwpg1AAoEVUQ2gAJiD5uKDUu4c\nFYX3AOvA+Liu4+NCiirtmgOB5x1diO4aGB0aUFRp3+bhddWzfzoLuCeKVlAATINcBHhaBSJlhyf7\ndTJkTFKirRy3cv9FAHhjUowhY5KP6NCAnw7rDp4X1sil2xysiGoCBcA0yHnH0yoQudrF+o+OaCjH\nKc9iw/OOjpAvM6ewSn0gth25ggZQb0ABMA2lCvT+kXKVv4L1HyPQUI4jIfvp8O5YdtARDYFQbgDG\nQGgDBcBMViTFgCcWFFJ2+PWE+wwck5R4Wo5D24lBeFqOw0B4CQqAmXh0/ws+At44PCrHYdnBODwq\nxymBQEu0ZnxN+at5eXm5ubnfffddU1NTbGzspEmT4uPjnd9QVlaWnp5eUlISExMzbNiwIUOG+Pqa\nM1RDIde8OYVVK/ddHJ/SztnEuexQU1NDZYCyoATi/SPl7Z7WsexgHNoCQWVoYmLCWfXTTz9dunRp\nY2OjxWJpbm4GgM2bNy9btmzWrFnkDZmZmQsXLnQ4HMqvTJgwYcOGDVarlf5ojWZFUkzOpmNq7M94\ntWsoJBAqF56AgTCMOcO7q+wDk0DgfRjeQLsEdOTIkVdeecXf33/Dhg25ubl79+59/vnnm5qaVq9e\nnZeXBwCXLl1atGhRc3Nzampqbm7unj17kpKSDhw48Prrr1MeKh1U2p+x7GA0Kstx+AAAo1FZjsP7\nMHSBtgB8+eWXTU1Nq1atSkpK6ty5c1xc3MKFC8eMGdPY2PjHP/4RALZs2dLQ0LBgwYKnnnqqS5cu\n8fHxa9eu7dGjR0ZGxvXr1ymPlgKK/Zk0eNuCmKOx7GAc0aEB5JxObixqCyUQlIYlH4oXCANBAdoC\ncOzYMQAYNWqU88GpU6cCQGFhIQAcPXoUAKZNm6b8NDAwcNy4cU1NTZmZmVTHSgul8dVWxq/cd1Hm\nXQeuXr169epVCn9oxaQYwEAwQNoz/QGgqNLe1tZAD286SgKxAm/E8w7aApCYmLhgwYL77vuBkbG2\nthYAIiIimpqaLl261Lt37+7dfyDsCQkJAHDu3DmaQ6VGdGhA2jP9AGDbkSstC0E5hTffuHfTKbna\npXZCZIGTJ0/Onj178eLFFP6WcyBa1h+UQKQ908+4soNUwW1rstGhAeQW623fth4IcvbPThmMF8Re\nQlsAUlJSXnrpJecjFRUVmzdvBoBHH320vLy8vr4+PDzc5bfCwsLIO6mNkzI/Hd6dXMyu3H+R1PoV\nyCJofFwIuWkAAHbs2DF79uz169fTH6fw/HR497bqD8qeM4aWHRYvXjx79uyTJ08a9yfYYf/+/W1l\n8pzh3ckeTS6BKKq0P7zpGACMjwvB6r/3mHwfQHZ29tSpUy9fvjx58uTJkydfuHABALp06eLytk6d\nOgFAVZXIj99bMSmGdIOf/dMZ5eCzfzpLFjvkohihQNoz/e8F4vtTz8ObjhJhzk4ZYt7QJCI6NEAp\nBDkHgvzviA4NwEDogmnm+suXL69bt+5vf/ubn5/fiy++SC4LiPXTx8dVlux2OwB07NjR/WeWlZXl\n5uYaM14arB3a8PTfIaewKmb11+QIOemsHdpw7fzJa/feVlZWBvxPViWHDx8mL2hOdn7M7Vcq/ZwL\nQUog6AxDkuC2m8nzY29vvtBJCYRycTw/5jZ33w+ZLGvcdeJTZufOnWvXrrXb7WPGjFm+fHlsbCw5\nfvr06SeeeGLkyJHbt293fn9mZubLL7/8r//6r+vWrWv1A/v06WP4oKlwwzblhu1x5yOBNwp6HfpP\ns8YjLS0D0bnkUOSJ7W29HzGI8kGzq3slOh8JK9gTVvCZWePxnvz8fLOH8D0mXAEsX748PT09MjJy\n1apV48aNc/4RaQ6XlJS4/Aqp/kdFRVEbpFl0Lvkm8MYPet0dbxSYNRiZwUAwQljBZ51Lv3E+goHQ\nEdoC8Oc//zk9PT0uLm7Xrl2ksu9Mt27dYmNjL1y4UFJS0qtXL+V4dnY2AIwdO7atj2VKVBEEQbiA\ndhP4k08+8fHxeeutt1qe/QnknoC3335bOXLmzJlDhw717Nlz0KBBlEaJIAgiAVR7AA0NDcOGDbNa\nrQMHDmz504EDBy5ZsqS6unrWrFkFBQWPPvropEmTLl++nJaW9s9//nPnzp0DBgygNlQEQRDhoVoC\nOnXqFPHzKNYOZ4j5p3PnzmlpaXPnzs3KysrKygIA0i3Asz+CIIi+mOMCUsPVq1ePHz8eGxvrslM0\ngiAIogvsCgCCIAhiKPhEMARBEEnh/jFbAj87rN3npoGg06+rq3vllVfCwsLeeOMNlx8JM987d+7s\n2rXru+++s9vt0dHREyZMGDx4sMt7hJksABw9evTgwYPFxcWdOnXq06fPzJkzW97Yz/V8b968uW7d\nuscff/yhhx5q+VM1UzNl+nyXgAR+dljL56b5+fk5PzcNxJ3+smXLMjIy+vTp8+mnnzofF2a+paWl\ns2bNKi8vt1qtgYGBNTU1Pj4+S5YsefbZZ5X3CDNZAHjrrbe2b9/ufKrp1q3bli1bnG/g532+27dv\nX7169a9+9avZs2e7/EjN1EybfjO3FBcXDxgwoF+/frt27aqqqiooKFiwYIHNZlu+fLnZQ/OW3Nzc\nvn37JiQkZGZm3rp16/z58+vXr+/Xr1+/fv3Onj1L3iPq9Pfs2WOz2Ww2249//GPn48LMt7GxccqU\nKTab7de//nV1dXVzc/PXX389dOjQAQMGXLp0ibxHmMk2NzdnZmbabLZHHnkkPT391q1bhw4deuml\nl2w2W1JSUlNTE3kP1/OtqanJyMgYNGiQzWZ7//33XX6qZmomTp9jAXjttddsNtumTZuUI3V1dePH\nj+/bt++1a9dMHJj3vPPOOzab7dNPP3U++Pzzz9tsttdff538U8jpl5aWDh06dPbs2S0FQJj5EoX7\n+c9/7nxw3bp1Npvtgw8+IP8UZrLNzc0///nPbTbbzp07lSN1dXXDhg2z2WyFhYXkCL/zHT9+fJ8+\nfWz3aCkAaqZm4vQ5bgIL/Oywdp+bBiJOv7GxceHChf7+/qmpqS1/Ksx89+7dCwAuhYKUlJS9e/c+\n9thj5J/CTBYArl27BgC9e/dWjgQGBoaFhVkslqCgIHKE3/mOHTt25syZTz31VN++fVt9g5qpmTh9\nXgVA7GeHuX9uGgg6/d///vfHjx9fs2ZNaGioy49Emu/Ro0eDg4MHDx58586dI0eO7Nmz58yZM4GB\ngXFxcWTiIk0WAEhze+vWrU1NTeTIgQMHLl68OHDgQAGSeeXKlampqampqWPGjGn5UzVTM3f63DTZ\nXRD72WEpKSkuR5yfmwYiTv/bb7997733kpOTx4wZU1NT4/JTYeZbVVVVWVnZt2/frKyshQsX3rlz\nhxwfMGBAamoqud1dmMkS5s+ff/bs2a+++mr06NFjx449e/ZsXl5eSEjIkiVLyBsEm68zaqZm7vR5\nvQKQ6tlhLs9NA+GmX11dvXjx4tjY2EWLFrX6BmHme+vWLQC4cuXKSy+91Lt37+XLl7/11luPPPLI\n6dOnn3/++crKShBosoSgoKDk5OQOHTrcuHFj9+7deXl5ABATE6Ps7i7YfJ1RMzVzp8/rFYCXzw7j\nhVafmwbCTf/VV18llzj+/v6tvkGY+dbV1QHArVu3nnvuOeVJ9zNmzJg7d+4XX3yxdevWxYsXCzNZ\nwpYtW9avX9+jR48ZM2ZMnDjx3LlzmZmZ+/fvnz59+t69e8PDwwWbrzNqpmbu9HkVAFIfv337tstx\nIpgti8g80tZz00Cs6WdmZu7bt2/GjBmNjY2nT5+Ge2dJu91++vRpi8XSv39/YearXOn/+7//u/Px\nyZMnf/HFF2R1LMxkAaCpqekPf/iDv7//Bx980KNHDwCw2WxTpkx57bXXPvroo7S0tMWLF4s0XxfU\nTM3c6fMtAAI/O8zNc9NArOmTWaSnp6enpzsfLy4ufuKJJ6xW65kzZ4SZb3h4uJ+fn8ViIRVehQcf\nfBAASAlImMkCwKlTp6qqqgYPHkzO/goTJ0786KOPCgoKQKz5uqBmauZOn1cB0PzsMC5w/9w0EGv6\nDz30UHBwsPMRh8Px5ptvRkREzJ8/32KxgEDztVgsPXv2vHjx4pUrV5xdH2SDdHKRJ8xk4V5lo6Sk\npLGx0fmmVuII6tq1K4g1XxfUTM3c6fPaBAahnx3W7nPTQKDp9+/f/yc/5JlnngGAkJAQ5TUINF9y\nB8B7772nHGlubiZ27wkTJpAjwkw2Pj7ez8+voqIiJyfH+TjZ5EPZ/kgV8u79AAABpUlEQVSY+bZE\nzdRMnD7HewGJ+uwwNc9NA3GnDwANDQ0DBw502QtImPk6HI7HH3/84sWLEydOTEpKAoDPPvssOzt7\n5MiR27dvJ+8RZrJwb5Ocjh07Pvvss/369Tt//vz+/fvPnDnTp0+fjIwMst+ZAPNdv379H/7wh5Z7\nAamZmonT51gAAKCiomLu3Llnzpwh/4yMjFy6dKlyOyWnHDt2TFn2tiQxMXHbtm3ktZDThzYEAASa\nb1VV1auvvvr3v/9dOfLkk0+++uqrgYGByhFhJgsAO3bs2LRpE+lwEB555JGVK1d269ZNOcL7fNsS\nAFA3NbOmz7cAECR/dphs0xdmvteuXTt16lTHjh379OlDquEtEWayd+7cOXv27KVLlzp37hwXF+e8\nM4Qzwsy3JWqmRn/6IggAgiAIogGOm8AIgiCIN6AAIAiCSAoKAIIgiKSgACAIgkgKCgCCIIikoAAg\nCIJICgoAgiCIpKAAIAiCSAoKAIIgiKSgACAIgkgKCgCCIIikoAAgCIJICgoAgiCIpKAAIAiCSAoK\nAIIgiKSgACAIgkjK/wEH/MzXi5T25AAAAABJRU5ErkJggg==\n" }, "metadata": {}, "output_type": "display_data" @@ -757,7 +144,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.4.2" + "version": "3.4.3" } }, "nbformat": 4, diff --git a/pymatbridge/examples/pymatbridge.ipynb b/pymatbridge/examples/pymatbridge.ipynb index 7ec680e..d9ba1bf 100644 --- a/pymatbridge/examples/pymatbridge.ipynb +++ b/pymatbridge/examples/pymatbridge.ipynb @@ -24,15 +24,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge\n", + "Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge-b664aaed-d003-4439-9a51-6094f9268c4c\n", "Send 'exit' command to kill the server\n", - "..........MATLAB started and connected!\n" + "...............MATLAB started and connected!\n" ] }, { "data": { "text/plain": [ - "True" + "" ] }, "execution_count": 2, @@ -115,156 +115,7 @@ }, { "data": { - "image/png": [ - "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\n", - "o4cQYvTo0dOnT7906dLBgwdlVwfgGuj+OqLcR0C7d+8WQsycOdN1cf78+SkpKb16cQEZoDS6v74o\n", - "FwDFxcXdu3ePjY29cOFCaWnpd999FxUVdcstt0RHR8suDUBH6P66o1YAnDt3rr6+/pZbbvn4448X\n", - "LVp04cIFbf3WW29dvXr1rbfeKrc8AFfTOtqX7q8jagXAjz/+KISoqalZsGDBkCFDUlJSunfv/tFH\n", - "H+Xn5//+97//8MMPw8PDZdcIoC3X4Y50fx1R60vg8+fPCyF+/PHHRx99dOfOnbNmzZoyZcr69evv\n", - "ueee2trarKws2QUCaIvRvvql1hlAZGSk9uDRRx91XZ80adLBgwfLyso6fnpmZmbr44yMDJvN5vUK\n", - "AbhitG/HUlNTtQdOp1NuJe1SLgCCgoIsFktERITr+m233SaEqK+v7/jpDofDh8UB+CVG+3bM6XQq\n", - "3pTUCgCLxdK/f//Kysqampq+fX++c0hhYaEQIioqquOnJycnJyYmao95+w/4GqN9rykjI6P1cVpa\n", - "msRK2qVWAAghZs6cmZ6e/uabb6anp2srLS0te/fuFUKMGzeu4+empKQkJCT4vEQADHhxg81mS05O\n", - "1h7zEZBbfvvb327atGnLli11dXUTJ04UQuzatcvhcCQmJt5///2yqwMgBN3fKJQLgMDAwC1btqxY\n", - "sWL//v379+/XFqdOnbpixQq5hQHQ0P0NQ7kAEEKEhYW9/vrrZ8+eLS0tvf7662NiYrgJBKAIur+R\n", - "qBgAmt69eyclJcmuAsDP6P4Go9ZGMADKah3szjU/hkEAALg2RvsaEgEA4BrS91Vq3X/VBDvd30gI\n", - "AAAdyS6qWZVXKYSYHd935US77HLgTQQAgKtisLuxEQAA2sdgd8MjAAC0g/FeZkAAAGiL7m8SBACA\n", - "X6D7mwcBAOBndH9TIQAA/KR1sDujfU2CAAAgBKN9TYkAAED3NykCADA7BrubFgEAmBqD3c2MAABM\n", - "jcHuZkYAAObFgBeTIwAAk6L7gwAAzIjuD0EAACZE94eGAADMhe6PVgQAYCIMdocrAgAwCwa7ow0C\n", - "ADCF7KIarfvPju9L94eGAACMj9G+aBcBABgco31xNQQAYGQMeEEHCADAsOj+6BgBABgT3R/XRAAA\n", - "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\n" - ] + "image/png": "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\n" }, "metadata": {}, "output_type": "display_data" @@ -399,7 +250,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.4.2" + "version": "3.4.3" } }, "nbformat": 4, From 02d89b5e242b3cb06827cf147032669c36799d48 Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 19 May 2015 15:48:54 -0700 Subject: [PATCH 266/308] Make the messenger part of a package under pymatbridge, to smooth installation. --- .../messenger}/__init__.py | 0 {messenger => pymatbridge/messenger}/make.py | 0 .../messenger}/mexa64/local.cfg | 0 .../messenger}/mexa64/messenger.mex | Bin .../messenger}/mexa64/messenger.mex.zmq4 | Bin .../messenger}/mexa64/messenger.mexa64 | Bin .../messenger}/mexmaci64/local.cfg | 0 .../messenger}/mexmaci64/messenger.mex | Bin .../messenger}/mexmaci64/messenger.mex.zmq3 | Bin .../messenger}/mexmaci64/messenger.mexmaci64 | Bin .../mexmaci64/messenger.mexmaci64.zmq3 | Bin .../messenger}/mexw64/README.md | 0 .../messenger}/mexw64/local.cfg | 0 .../messenger}/mexw64/messenger.mex | Bin .../messenger}/mexw64/messenger.mexw64 | Bin .../messenger}/src/messenger.c | 0 pymatbridge/version.py | 7 +++++-- setup.py | 16 ++++++---------- 18 files changed, 11 insertions(+), 12 deletions(-) rename {messenger => pymatbridge/messenger}/__init__.py (100%) rename {messenger => pymatbridge/messenger}/make.py (100%) rename {messenger => pymatbridge/messenger}/mexa64/local.cfg (100%) rename {messenger => pymatbridge/messenger}/mexa64/messenger.mex (100%) rename {messenger => pymatbridge/messenger}/mexa64/messenger.mex.zmq4 (100%) rename {messenger => pymatbridge/messenger}/mexa64/messenger.mexa64 (100%) rename {messenger => pymatbridge/messenger}/mexmaci64/local.cfg (100%) rename {messenger => pymatbridge/messenger}/mexmaci64/messenger.mex (100%) rename {messenger => pymatbridge/messenger}/mexmaci64/messenger.mex.zmq3 (100%) rename {messenger => pymatbridge/messenger}/mexmaci64/messenger.mexmaci64 (100%) rename {messenger => pymatbridge/messenger}/mexmaci64/messenger.mexmaci64.zmq3 (100%) rename {messenger => pymatbridge/messenger}/mexw64/README.md (100%) rename {messenger => pymatbridge/messenger}/mexw64/local.cfg (100%) rename {messenger => pymatbridge/messenger}/mexw64/messenger.mex (100%) rename {messenger => pymatbridge/messenger}/mexw64/messenger.mexw64 (100%) rename {messenger => pymatbridge/messenger}/src/messenger.c (100%) diff --git a/messenger/__init__.py b/pymatbridge/messenger/__init__.py similarity index 100% rename from messenger/__init__.py rename to pymatbridge/messenger/__init__.py diff --git a/messenger/make.py b/pymatbridge/messenger/make.py similarity index 100% rename from messenger/make.py rename to pymatbridge/messenger/make.py diff --git a/messenger/mexa64/local.cfg b/pymatbridge/messenger/mexa64/local.cfg similarity index 100% rename from messenger/mexa64/local.cfg rename to pymatbridge/messenger/mexa64/local.cfg diff --git a/messenger/mexa64/messenger.mex b/pymatbridge/messenger/mexa64/messenger.mex similarity index 100% rename from messenger/mexa64/messenger.mex rename to pymatbridge/messenger/mexa64/messenger.mex diff --git a/messenger/mexa64/messenger.mex.zmq4 b/pymatbridge/messenger/mexa64/messenger.mex.zmq4 similarity index 100% rename from messenger/mexa64/messenger.mex.zmq4 rename to pymatbridge/messenger/mexa64/messenger.mex.zmq4 diff --git a/messenger/mexa64/messenger.mexa64 b/pymatbridge/messenger/mexa64/messenger.mexa64 similarity index 100% rename from messenger/mexa64/messenger.mexa64 rename to pymatbridge/messenger/mexa64/messenger.mexa64 diff --git a/messenger/mexmaci64/local.cfg b/pymatbridge/messenger/mexmaci64/local.cfg similarity index 100% rename from messenger/mexmaci64/local.cfg rename to pymatbridge/messenger/mexmaci64/local.cfg diff --git a/messenger/mexmaci64/messenger.mex b/pymatbridge/messenger/mexmaci64/messenger.mex similarity index 100% rename from messenger/mexmaci64/messenger.mex rename to pymatbridge/messenger/mexmaci64/messenger.mex diff --git a/messenger/mexmaci64/messenger.mex.zmq3 b/pymatbridge/messenger/mexmaci64/messenger.mex.zmq3 similarity index 100% rename from messenger/mexmaci64/messenger.mex.zmq3 rename to pymatbridge/messenger/mexmaci64/messenger.mex.zmq3 diff --git a/messenger/mexmaci64/messenger.mexmaci64 b/pymatbridge/messenger/mexmaci64/messenger.mexmaci64 similarity index 100% rename from messenger/mexmaci64/messenger.mexmaci64 rename to pymatbridge/messenger/mexmaci64/messenger.mexmaci64 diff --git a/messenger/mexmaci64/messenger.mexmaci64.zmq3 b/pymatbridge/messenger/mexmaci64/messenger.mexmaci64.zmq3 similarity index 100% rename from messenger/mexmaci64/messenger.mexmaci64.zmq3 rename to pymatbridge/messenger/mexmaci64/messenger.mexmaci64.zmq3 diff --git a/messenger/mexw64/README.md b/pymatbridge/messenger/mexw64/README.md similarity index 100% rename from messenger/mexw64/README.md rename to pymatbridge/messenger/mexw64/README.md diff --git a/messenger/mexw64/local.cfg b/pymatbridge/messenger/mexw64/local.cfg similarity index 100% rename from messenger/mexw64/local.cfg rename to pymatbridge/messenger/mexw64/local.cfg diff --git a/messenger/mexw64/messenger.mex b/pymatbridge/messenger/mexw64/messenger.mex similarity index 100% rename from messenger/mexw64/messenger.mex rename to pymatbridge/messenger/mexw64/messenger.mex diff --git a/messenger/mexw64/messenger.mexw64 b/pymatbridge/messenger/mexw64/messenger.mexw64 similarity index 100% rename from messenger/mexw64/messenger.mexw64 rename to pymatbridge/messenger/mexw64/messenger.mexw64 diff --git a/messenger/src/messenger.c b/pymatbridge/messenger/src/messenger.c similarity index 100% rename from messenger/src/messenger.c rename to pymatbridge/messenger/src/messenger.c diff --git a/pymatbridge/version.py b/pymatbridge/version.py index df588e3..5684def 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -74,7 +74,7 @@ MINOR = _version_minor MICRO = _version_micro VERSION = __version__ -PACKAGES = ['pymatbridge', 'messenger'] +PACKAGES = ['pymatbridge', 'pymatbridge.messenger'] PACKAGE_DATA = {"pymatbridge": ["matlab/matlabserver.m", "matlab/messenger.*", "matlab/usrprog/*", "matlab/util/*.m", "matlab/util/json_v0.2.2/LICENSE", @@ -82,7 +82,10 @@ "matlab/util/json_v0.2.2/test/*", "matlab/util/json_v0.2.2/json/*.m", "matlab/util/json_v0.2.2/json/java/*", - "tests/*.py", "tests/*.m", "examples/*.ipynb"]} + "tests/*.py", "tests/*.m", "examples/*.ipynb"], + "pymatbridge.messenger": ["pymatbridge/messenger/mexmaci64/*", + "pymatbridge/messenger/mexw64/*", + "pymatbridge/messenger/mexa64/*"]} REQUIRES = ['pyzmq'] #EXTRAS_REQUIRE = ['numpy', 'scipy', 'ipython'] diff --git a/setup.py b/setup.py index 46c5b1a..2b49f64 100755 --- a/setup.py +++ b/setup.py @@ -12,19 +12,15 @@ if os.path.exists('MANIFEST'): os.remove('MANIFEST') +# Find the messenger binary file(s) and copy it to /matlab folder. +from pymatbridge.messenger.make import get_messenger_dir +messenger_dir = get_messenger_dir() -from distutils.core import setup - -# Find the messenger binary files and copy them all to the matlab folder. -# We include all of these, so that when releases are built on travis, they -# include the compiled mex files for all three platforms. -msgrs = ['./messenger/mexa64/messenger.mexa64', - './messenger/mexmaci64/messenger.mexmaci64', - './messenger/mexw64/messenger.mexw64'] - -for f in msgrs: +for f in glob.glob("./pymatbridge/messenger/%s/messenger.*" % messenger_dir): shutil.copy(f, "./pymatbridge/matlab") +from distutils.core import setup + # Get version and release info, which is all stored in pymatbridge/version.py ver_file = os.path.join('pymatbridge', 'version.py') exec(open(ver_file).read()) From f10a202e675156a41de9bf71a3bf116f4828f332 Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 19 May 2015 16:03:48 -0700 Subject: [PATCH 267/308] Find the package data under the package --- pymatbridge/version.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 5684def..13925f8 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -74,7 +74,8 @@ MINOR = _version_minor MICRO = _version_micro VERSION = __version__ -PACKAGES = ['pymatbridge', 'pymatbridge.messenger'] +PACKAGES = ['pymatbridge', + 'pymatbridge.messenger'] PACKAGE_DATA = {"pymatbridge": ["matlab/matlabserver.m", "matlab/messenger.*", "matlab/usrprog/*", "matlab/util/*.m", "matlab/util/json_v0.2.2/LICENSE", @@ -83,9 +84,9 @@ "matlab/util/json_v0.2.2/json/*.m", "matlab/util/json_v0.2.2/json/java/*", "tests/*.py", "tests/*.m", "examples/*.ipynb"], - "pymatbridge.messenger": ["pymatbridge/messenger/mexmaci64/*", - "pymatbridge/messenger/mexw64/*", - "pymatbridge/messenger/mexa64/*"]} + "pymatbridge.messenger": ["mexmaci64/*", + "mexw64/*", + "mexa64/*"]} REQUIRES = ['pyzmq'] #EXTRAS_REQUIRE = ['numpy', 'scipy', 'ipython'] From 0310fa797a210e9322a4d3e504f2e0e4033c0963 Mon Sep 17 00:00:00 2001 From: arokem Date: Tue, 19 May 2015 09:14:26 -0700 Subject: [PATCH 268/308] Starting to work towards 0.6. --- pymatbridge/version.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 13925f8..9b002f3 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -2,10 +2,10 @@ # Format expected by setup.py and doc/source/conf.py: string of form "X.Y.Z" _version_major = 0 -_version_minor = 5 -_version_micro = 2 #'' # use '' for first of series, number for 1 and above -#_version_extra = 'dev' -_version_extra = '' # Uncomment this for full releases +_version_minor = 6 +_version_micro = 0 #'' # use '' for first of series, number for 1 and above +_version_extra = 'dev' +#_version_extra = '' # Uncomment this for full releases # Construct full version string from these. _ver = [_version_major, _version_minor] From df1c35d74adf69c39249c656a90db644675a3884 Mon Sep 17 00:00:00 2001 From: "Mohammad A.Raji" Date: Sat, 23 May 2015 16:52:29 -0400 Subject: [PATCH 269/308] Fixed LD_LIBRARY_PATH in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3cf5e99..e1579f1 100644 --- a/README.md +++ b/README.md @@ -200,7 +200,7 @@ file for your shell): On Linux, add the following line to your .bash_profile (or similar file for your shell): - export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH: + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH: On Windows, add the install location of libzmq.dll to the PATH environment variable. On Windows 7+, typing "environment variables" into the start menu will bring up the From 21bf9f98429966c4e56b37510153c3eb984b770e Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Fri, 12 Jun 2015 10:24:41 -0700 Subject: [PATCH 270/308] use setuptools if available falls back to distutils if not installed --- setup.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 2b49f64..a2d7fd2 100755 --- a/setup.py +++ b/setup.py @@ -19,7 +19,10 @@ for f in glob.glob("./pymatbridge/messenger/%s/messenger.*" % messenger_dir): shutil.copy(f, "./pymatbridge/matlab") -from distutils.core import setup +try: + from setuptools import setup +except ImportError: + from distutils.core import setup # Get version and release info, which is all stored in pymatbridge/version.py ver_file = os.path.join('pymatbridge', 'version.py') From 90fdb5f20137143b8dcc1df9ab286332f55a43f4 Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Sun, 14 Jun 2015 17:58:41 -0400 Subject: [PATCH 271/308] Include the stack trace in the response on error. --- pymatbridge/matlab/util/pymat_eval.m | 51 +++++++++++++++++++++++++++- pymatbridge/tests/test_run_code.py | 18 ++++++++++ pymatbridge/tests/test_stack_trace.m | 15 ++++++++ 3 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 pymatbridge/tests/test_stack_trace.m diff --git a/pymatbridge/matlab/util/pymat_eval.m b/pymatbridge/matlab/util/pymat_eval.m index 192670e..499bf61 100644 --- a/pymatbridge/matlab/util/pymat_eval.m +++ b/pymatbridge/matlab/util/pymat_eval.m @@ -5,7 +5,10 @@ % % This allows you to run any matlab code. req should be a struct with the % following fields: -% code: a string which contains the code to be run in the matlab session +% dname: The name of a directory to add to the runtime path before attempting to run the code. +% func_name: The name of a function to invoke. +% func_args: An array of arguments to send to the function. +% nargout: An int specifying how many output arguments are expected. % % Should return a json object containing the result. % @@ -14,6 +17,7 @@ response.success = true; response.content = ''; response.result = ''; +response.stack = {}; close all hidden; @@ -67,6 +71,51 @@ diary('off'); response.success = false; response.content.stdout = ME.message; + + % Retrieve the stack trace. + if ~exist('OCTAVE_VERSION', 'builtin'); + % For MATLAB, just grab it off the exception. + response.stack = ME.stack; + else + % Octave exceptions don't seem to have a 'stack' field, so we use lasterror + % instead. lasterror exists in MATLAB too, but it doesn't seem to return + % the correct stack trace in this case. + err = lasterror(); + stack = err.stack; + + % Strip off fields that aren't available on MException. + stack = rmfield(stack, {'column', 'context', 'scope'}); + + % The 'name' fields here look like 'foo>bar' in Octave, where foo is the + % outermost calling function, and bar is the current function. With + % MException there's only 'bar' so let's strip off the 'foo>'. + + % n.b. strsplit doesn't work in Octave when the delimiter is < or >. + % This bug is fixed in Octave 4.0 (http://savannah.gnu.org/bugs/?44641) + % but we support 3.8, so we use the regex mode as a workaround. + for i = 1:numel(stack) + name = stack(i).name; + name = strsplit(name, '>', 'delimitertype', 'regularexpression'); + stack(i).name = name{end}; + end + + response.stack = stack; + end + + % Strip off the last two frames -- these correspond to pymat_eval and + % matlabserver, which we don't want to expose. + response.stack = response.stack(1:end-2, :); + + % FIXME: The stack is returned as a nx1 struct array, and in Octave json_dump + % throws an error trying to serialize it. Let's just transpose it for now. + response.stack = response.stack'; + % FIXME: json_dump loops infinitely if this is a 1x0 struct array, so + % let's just turn it back into an empty array if so. + if ndims(response.stack) == 2 && ... + size(response.stack, 1) == 1 && ... + size(response.stack, 2) == 0 + response.stack = {}; + end end json_response = json_dump(response); diff --git a/pymatbridge/tests/test_run_code.py b/pymatbridge/tests/test_run_code.py index 816f3b2..e4255e7 100644 --- a/pymatbridge/tests/test_run_code.py +++ b/pymatbridge/tests/test_run_code.py @@ -1,3 +1,5 @@ +import os + import pymatbridge as pymat from pymatbridge.compat import text_type import numpy as np @@ -64,3 +66,19 @@ def test_undefined_code(self): npt.assert_equal(message, "'this_is_nonsense' undefined near line 1 column 1") else: npt.assert_equal(message, "Undefined function or variable 'this_is_nonsense'.") + + def test_stack_traces(self): + this_dir = os.path.abspath(os.path.dirname(__file__)) + test_file = os.path.join(this_dir, 'test_stack_trace.m') + + self.mlab.run_code("addpath('%s')" % this_dir) + response = self.mlab.run_code('test_stack_trace(10)') + npt.assert_equal(response['stack'], [ + {'name': 'baz', 'line': 14, 'file': test_file}, + {'name': 'bar', 'line': 10, 'file': test_file}, + {'name': 'foo', 'line': 6, 'file': test_file}, + {'name': 'test_stack_trace', 'line': 2, 'file': test_file} + ]) + + response = self.mlab.run_code('x = 2') + npt.assert_equal(response['stack'], []) diff --git a/pymatbridge/tests/test_stack_trace.m b/pymatbridge/tests/test_stack_trace.m new file mode 100644 index 0000000..0878c2c --- /dev/null +++ b/pymatbridge/tests/test_stack_trace.m @@ -0,0 +1,15 @@ +function o = test_stack_trace(input) + o = foo(input); +end + +function o = foo(input) + o = bar(input) +end + +function o = bar(input) + o = baz(input) +end + +function o = baz(input) + o = quux(input) +end From 11be4245291976b819620e28ef0ad2f2eb06a03a Mon Sep 17 00:00:00 2001 From: Mohammad Date: Tue, 30 Jun 2015 22:52:38 -0400 Subject: [PATCH 272/308] Made json encode/decode reversible --- pymatbridge/pymatbridge.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 048373e..10bf196 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -94,7 +94,9 @@ def decode_arr(data): def decode_pymat(dct): if 'ndarray' in dct and 'data' in dct: value = decode_arr(dct['data']) - shape = decode_arr(dct['shape']).astype(int) + shape = dct['shape'] + if type(dct['shape']) is unicode: + shape = decode_arr(dct['shape']).astype(int) return value.reshape(shape, order='F') elif 'ndarray' in dct and 'imag' in dct: real = decode_arr(dct['real']) From 473838f95e3457cf26d1b7afdcc098b7a65b8a88 Mon Sep 17 00:00:00 2001 From: Mohammad Date: Wed, 1 Jul 2015 01:54:42 -0400 Subject: [PATCH 273/308] Made json encode/decode reversible with Python 3 support --- pymatbridge/pymatbridge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 10bf196..411c7b8 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -95,7 +95,7 @@ def decode_pymat(dct): if 'ndarray' in dct and 'data' in dct: value = decode_arr(dct['data']) shape = dct['shape'] - if type(dct['shape']) is unicode: + if type(dct['shape']) is not list: shape = decode_arr(dct['shape']).astype(int) return value.reshape(shape, order='F') elif 'ndarray' in dct and 'imag' in dct: From efe38bf928b9ea8c17c6a2d0f494531ef7bd729f Mon Sep 17 00:00:00 2001 From: arokem Date: Wed, 29 Jul 2015 09:57:56 -0700 Subject: [PATCH 274/308] Assign a random port directly, instead of using teh magic --- pymatbridge/pymatbridge.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 411c7b8..091ee08 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -204,9 +204,8 @@ def start(self): self.context = zmq.Context() self.socket = self.context.socket(zmq.REQ) if self.platform == "win32": - port = self.socket.bind_to_random_port(self.socket_addr) - self.socket_addr = self.socket_addr + ":%s"%port - self.socket.unbind(self.socket_addr) + rndport = random.randrange(49152, 65536) + self.socket_addr = self.socket_addr + ":%s"%rndport # Start the MATLAB server in a new process print("Starting %s on ZMQ socket %s" % (self._program_name(), self.socket_addr)) From 2523fb2e0249652bbe15e3cb50223095b2e00ce8 Mon Sep 17 00:00:00 2001 From: arokem Date: Fri, 31 Jul 2015 09:18:21 -0700 Subject: [PATCH 275/308] BF: Import stdlib random. --- pymatbridge/pymatbridge.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 091ee08..18b3b8b 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -31,6 +31,7 @@ import json import types import weakref +import random from uuid import uuid4 from numpy import ndarray, generic, float64, frombuffer, asfortranarray From fc0cabf1231e4ab8d39283e610ff278a075b8611 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 3 Aug 2015 08:36:58 -0500 Subject: [PATCH 276/308] Force a rehash of user functions --- pymatbridge/matlab/util/pymat_eval.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pymatbridge/matlab/util/pymat_eval.m b/pymatbridge/matlab/util/pymat_eval.m index 499bf61..f38856f 100644 --- a/pymatbridge/matlab/util/pymat_eval.m +++ b/pymatbridge/matlab/util/pymat_eval.m @@ -31,6 +31,9 @@ addpath(req.dname); end + % force a rehash of user functions + rehash + if iscell(req.func_args) [resp{1:req.nargout}] = feval(req.func_name, req.func_args{:}); else From 79e57a7aee324855ac8f46b81e29966bce744dbe Mon Sep 17 00:00:00 2001 From: Bruno Beltran Date: Tue, 4 Aug 2015 22:59:17 -0400 Subject: [PATCH 277/308] BF: example works in 3, iterates through figures correctly --- pymatbridge/examples/pymatbridge.ipynb | 32 ++++++++++---------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/pymatbridge/examples/pymatbridge.ipynb b/pymatbridge/examples/pymatbridge.ipynb index d9ba1bf..ff116fb 100644 --- a/pymatbridge/examples/pymatbridge.ipynb +++ b/pymatbridge/examples/pymatbridge.ipynb @@ -24,15 +24,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge-b664aaed-d003-4439-9a51-6094f9268c4c\n", + "Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge-051089d9-1f6e-4298-8228-e9e1a8b3f368\n", "Send 'exit' command to kill the server\n", - "...............MATLAB started and connected!\n" + ".......MATLAB started and connected!\n" ] }, { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -64,7 +64,8 @@ } ], "source": [ - "res = matlab.run_func('%s/matlab/www/demo_func.m'%os.path.dirname(pymat.__file__), {'a': 10})\n", + "func_file = os.path.dirname(pymat.__file__) + '/matlab/www/demo_func.m'\n", + "res = matlab.run_func(func_file, {'a': 10})\n", "res['result']" ] }, @@ -115,7 +116,7 @@ }, { "data": { - "image/png": "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\n" + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgAAAAGACAIAAABUQk3oAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\nB3RJTUUH3wgFAjkLssA/9QAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAwNC1BdWctMjAxNSAyMjo1NzoxMWrauvUAAB7C\nSURBVHic7d1/UFT3/e/xj6gRwVJqTRV20NWkK/4WRDJh/EmIWsZfTdtv0lRMYIy/gExTyThqEyE3\nnanJ3DiKgzVOow6mMfUHI+3NTYISaidcxYBCKhZBwSYLKgk6JuGH6673j5NuCCIuy+5+Puec5+Ov\n9cg6755u3i9gz9lXvzt37ggAgPkEyR4AACAHAQAAJkUAAIBJEQAAYFIEAACYFAEAACZFAACASREA\nAGBSBAAAmBQBAAAmRQAAgEkRAABgUgQAAJgUAQAAJkUAAIBJEQAAYFIEAACYFAEAACZFAACASQ2Q\nPUD3Tp06dfr06StXrgQHB8fGxs6ZMyckJET2UABgKP1UK4VvaWlZs2bN2bNnOx8MCwt74403Zs6c\nKWsqADAe5X4FtG7durNnz06bNu3QoUP/+te/Tpw4sXr16ps3b2ZkZDQ2NsqeDgCMQ60AaGlpKS0t\nHTBgQF5e3qRJkwYOHDh8+PAXXnhhzpw57e3tRUVFsgcEAONQKwD+/e9/CyHCw8PDw8M7H4+LixNC\n1NfXyxkLAIxIrQCYPn36gAEDvv76a4fD0fn4hQsXxH9jAADgE2oFwMCBA9PT09vb29evX3/jxg0h\nhMvlOnz4cGFh4fjx4+fPny97QAAwDuWuAhJCFBQU/PnPf7506VJwcLDD4Rg0aNCvfvWrNWvWhIWF\nyR4NAIxDufsArl69WlhYWFtbGxkZabPZbty4cfbs2ffeey8+Pn7u3Ln3elZubm5ZWVkg5wSAXjk1\n8n9+M2vi5vmjZQ/yHbV+Amhra0tOTm5sbMzOzv71r3+tHbx06VJqauqVK1fy8/Pj4+O7fWJKSkpZ\nWZnFYgngsHplt9s5UZ6w2+1CCM7VfXGiPHFy5P+0/diWFOkqWpcke5ZO7qjkyJEjNptt9erVXY7/\n7W9/s9lsaWlp93rismXLbDabn6czgu3bt9tsts8//1z2IKo7deqUzWY7cuSI7EFU9/nnn9tstu3b\n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\npAgAADCp/w/UelOBKsEppQAAAABJRU5ErkJggg==\n" }, "metadata": {}, "output_type": "display_data" @@ -125,7 +126,7 @@ "res_dict = matlab.run_code('figure; plot(b); b')\n", "\n", "from IPython.core.displaypub import publish_display_data\n", - "imgfiles = [res_dict['content']['figures']]\n", + "imgfiles = res_dict['content']['figures']\n", "text_output = res_dict['content']['stdout']\n", "\n", "display_data = []\n", @@ -133,9 +134,9 @@ " display_data.append({'text/plain':text_output})\n", "for imgf in imgfiles:\n", " try: # python 2\n", - " image = open(imgf[0], 'rb').read().decode('utf-8') \n", + " image = open(imgf, 'rb').read().decode('utf-8') \n", " except: # python 3\n", - " image = open(imgf[0], 'rb').read()\n", + " image = open(imgf, 'rb').read()\n", " \n", " display_data.append({'image/png': image})\n", "\n", @@ -204,7 +205,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -215,7 +216,7 @@ "False" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -223,15 +224,6 @@ "source": [ "matlab.is_connected()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [] } ], "metadata": { @@ -250,7 +242,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.4.3" + "version": "3.4.2" } }, "nbformat": 4, From ee07de220c8299d9ce254ffea96ecdd4bde977f4 Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 6 Sep 2015 19:19:04 -0700 Subject: [PATCH 278/308] Update Travis to new container infrastructure. Let's see if Octave behaves now. --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index dd6961b..fda0d7b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,4 @@ +sudo: false language: python deploy: provider: pypi From c4c6d50954a386791eb2cadecc1e7706df57f1d5 Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 6 Sep 2015 19:20:32 -0700 Subject: [PATCH 279/308] apt-get should run without sudo in this configuration. --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index fda0d7b..a4dc2e4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,9 +15,9 @@ env: - CONDA="python=3.3 numpy" - CONDA="python=3.4 numpy" before_install: - - sudo apt-add-repository -y ppa:octave/stable; - - sudo apt-get update -qq; - - sudo apt-get install -qq octave liboctave-dev default-jdk; + - apt-add-repository -y ppa:octave/stable; + - apt-get update -qq; + - apt-get install -qq octave liboctave-dev default-jdk; - wget http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh; - bash miniconda.sh -b -p $HOME/miniconda - export PATH="$HOME/miniconda/bin:$PATH" From 77a60728dbd3cbb8f3b97600d2ea50cffe9fb0ec Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 6 Sep 2015 19:25:43 -0700 Subject: [PATCH 280/308] More adaptation to the new infrastructure. Trying to follow instructions here: http://docs.travis-ci.com/user/apt/ --- .travis.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index a4dc2e4..6bd0bb8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,10 +14,13 @@ env: - CONDA="python=2.7 numpy=1.7" - CONDA="python=3.3 numpy" - CONDA="python=3.4 numpy" +addons: + apt: + sources: + - ppa:octave/stable; + packages: + - octave liboctave-dev default-jdk before_install: - - apt-add-repository -y ppa:octave/stable; - - apt-get update -qq; - - apt-get install -qq octave liboctave-dev default-jdk; - wget http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh; - bash miniconda.sh -b -p $HOME/miniconda - export PATH="$HOME/miniconda/bin:$PATH" From 5120ad2cbfe0d0dd6f776dd82d00dd37dbfae7d2 Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 6 Sep 2015 19:33:27 -0700 Subject: [PATCH 281/308] Trying again, backing off to the legacy infrastructure. At least until this issue is resolved: https://github.com/travis-ci/apt-source-whitelist/issues/53 --- .travis.yml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6bd0bb8..6174cea 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,3 @@ -sudo: false language: python deploy: provider: pypi @@ -14,13 +13,10 @@ env: - CONDA="python=2.7 numpy=1.7" - CONDA="python=3.3 numpy" - CONDA="python=3.4 numpy" -addons: - apt: - sources: - - ppa:octave/stable; - packages: - - octave liboctave-dev default-jdk before_install: + - sudo apt-add-repository --yes ppa:octave/stable + - sudo apt-get update + - sudo apt-get install octave liboctave-dev - wget http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh; - bash miniconda.sh -b -p $HOME/miniconda - export PATH="$HOME/miniconda/bin:$PATH" From 0a04e8b0d2b862f50d67c360155f277e392036c2 Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 6 Sep 2015 19:37:14 -0700 Subject: [PATCH 282/308] Add the notebook with all its dependencies. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6174cea..2979b7f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ before_install: - conda config --set always_yes yes - conda update conda - conda info -a - - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema + - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema notebook - source activate test - travis_retry pip install coveralls From 6f290cdda98fbeefac444b827f54bcb66eab3076 Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 6 Sep 2015 19:50:26 -0700 Subject: [PATCH 283/308] Check if installing only octave might be a solution. Trying to pick up some wisdom from: http://stackoverflow.com/questions/30167348/octave-and-java-libjvm-so-not-found --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2979b7f..8305deb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ env: before_install: - sudo apt-add-repository --yes ppa:octave/stable - sudo apt-get update - - sudo apt-get install octave liboctave-dev + - sudo apt-get install octave - wget http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh; - bash miniconda.sh -b -p $HOME/miniconda - export PATH="$HOME/miniconda/bin:$PATH" From 0e83bd7e29c36833bde63599513a338a8dcce39d Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 6 Sep 2015 20:07:46 -0700 Subject: [PATCH 284/308] Use nbformat instead. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8305deb..58997da 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ before_install: - conda config --set always_yes yes - conda update conda - conda info -a - - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema notebook + - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema nbformat - source activate test - travis_retry pip install coveralls From 0482c319ea84ddfe5dc19ad0d2f64ab7735ec798 Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 6 Sep 2015 20:11:39 -0700 Subject: [PATCH 285/308] Coming back full circle to where I started Just removed the qq options, for fuller messages. --- .travis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 58997da..f9c5944 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,9 +14,9 @@ env: - CONDA="python=3.3 numpy" - CONDA="python=3.4 numpy" before_install: - - sudo apt-add-repository --yes ppa:octave/stable - - sudo apt-get update - - sudo apt-get install octave + - sudo apt-add-repository -y ppa:octave/stable; + - sudo apt-get update; + - sudo apt-get install octave liboctave-dev default-jdk; - wget http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh; - bash miniconda.sh -b -p $HOME/miniconda - export PATH="$HOME/miniconda/bin:$PATH" @@ -24,7 +24,7 @@ before_install: - conda config --set always_yes yes - conda update conda - conda info -a - - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema nbformat + - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema - source activate test - travis_retry pip install coveralls From 0d2f983ec5f8a97b93938c41005f825e5abb583a Mon Sep 17 00:00:00 2001 From: arokem Date: Sun, 6 Sep 2015 23:04:58 -0700 Subject: [PATCH 286/308] Recompiled messenger for octave. --- pymatbridge/messenger/mexmaci64/messenger.mex | Bin 9936 -> 14188 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/pymatbridge/messenger/mexmaci64/messenger.mex b/pymatbridge/messenger/mexmaci64/messenger.mex index 3fd7963a12ca3a0994659e06cb949c4e260796c3..27dbcd683a295d6627ba0d11393dba06dee7a160 100755 GIT binary patch literal 14188 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 Date: Thu, 10 Sep 2015 22:30:06 -0700 Subject: [PATCH 287/308] BUILDING: pip and pip3 should work sanely copy trick from numpy to use some functions defined inside our project without having to import unecessary dependencies. --- README.md | 21 ++------------------- pymatbridge/__init__.py | 29 ++++++++++++++++++++--------- pymatbridge/version.py | 5 ++++- setup.py | 11 +++++++++-- 4 files changed, 35 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index e1579f1..fd44dc5 100644 --- a/README.md +++ b/README.md @@ -22,30 +22,12 @@ Matlab code together (requires ipython > 0.13). `pymatbridge` can be installed from [PyPI][1]: ``` -$ pip install pymatbridge # sudo may be needed -``` - -`pymatbridge` communicates with Matlab using zeromq. So before installing -pymatbridge you must have [zmq](http://zeromq.org/intro:get-the-software) -library and [pyzmq](http://zeromq.org/bindings:python) installed on your -machine. These can be installed using - -``` -$ pip install pyzmq -``` -You will also need [Numpy](http://www.numpy.org/), which can be installed -using: - -``` -$ pip install numpy +$ pip install pymatbridge ``` If you intend to use the Matlab magic extension, you'll also need [IPython](http://ipython.org/install.html). -Note thatIPython notebooks also depend on `pyzmq` so if you have IPython notebooks -installed, you likely have `pyzmq` already. - Finally, if you want to handle sparse arrays, you will need to install [Scipy](http://scipy.org/). This can also be installed from PyPI, or using distributions such as [Anaconda](https://store.continuum.io/cshop/anaconda/) or @@ -162,6 +144,7 @@ Python and Matlab using the [0MQ](http://zeromq.org/) messaging library. This sh without any need for compilation on most computers. However, in some cases, you might want to build the pymatbridge messenger from source. To do so, you will need to follow the instructions below: + ### Install zmq library Please refer to the [official guide](http://zeromq.org/intro:get-the-software) on how to build and install zmq. On Ubuntu, it is as simple as `sudo apt-get install libzmq3-dev`. diff --git a/pymatbridge/__init__.py b/pymatbridge/__init__.py index 45d2145..7bdf135 100644 --- a/pymatbridge/__init__.py +++ b/pymatbridge/__init__.py @@ -1,12 +1,23 @@ -from .pymatbridge import * -from .version import __version__ - +# We first need to detect if we're being called as part of the setup.py +# procedure itself in a reliable manner. try: - from .publish import * -except ImportError: - pass + __PYMATBRIDGE_SETUP__ +except NameError: + __PYMATBRIDGE_SETUP__ = False -try: - from .matlab_magic import * -except ImportError: + +if __PYMATBRIDGE_SETUP__: pass +else: + from .pymatbridge import * + from .version import __version__ + + try: + from .publish import * + except ImportError: + pass + + try: + from .matlab_magic import * + except ImportError: + pass diff --git a/pymatbridge/version.py b/pymatbridge/version.py index 9b002f3..ad5ff15 100644 --- a/pymatbridge/version.py +++ b/pymatbridge/version.py @@ -89,6 +89,9 @@ "mexa64/*"]} REQUIRES = ['pyzmq'] -#EXTRAS_REQUIRE = ['numpy', 'scipy', 'ipython'] +EXTRAS_REQUIRE = { + 'sparse arrays': ["scipy>=0.13.0"], + 'ipython': ["ipython>=3.0"], +} BIN=['scripts/publish-notebook'] diff --git a/setup.py b/setup.py index a2d7fd2..6adfc7b 100755 --- a/setup.py +++ b/setup.py @@ -12,13 +12,20 @@ if os.path.exists('MANIFEST'): os.remove('MANIFEST') +# we need some code from inside the package to build it. use the same hack as +# numpy to selectively import even if we don't have dependencies installed +if sys.version_info[0] >= 3: + import builtins +else: + import __builtin__ as builtins +builtins.__PYMATBRIDGE_SETUP__ = True # Find the messenger binary file(s) and copy it to /matlab folder. from pymatbridge.messenger.make import get_messenger_dir messenger_dir = get_messenger_dir() for f in glob.glob("./pymatbridge/messenger/%s/messenger.*" % messenger_dir): shutil.copy(f, "./pymatbridge/matlab") - + try: from setuptools import setup except ImportError: @@ -44,7 +51,7 @@ packages=PACKAGES, package_data=PACKAGE_DATA, requires=REQUIRES, - #extras_require=EXTRAS_REQUIRE, + extras_require=EXTRAS_REQUIRE, scripts=BIN ) From f3f322b2022579ea812cee6e8462f91f9922f04d Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Fri, 18 Sep 2015 00:00:03 -0400 Subject: [PATCH 288/308] Update messenger.mex for ubuntu. Compiled against latest octave. --- pymatbridge/messenger/mexa64/messenger.mex | Bin 22519 -> 20024 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/pymatbridge/messenger/mexa64/messenger.mex b/pymatbridge/messenger/mexa64/messenger.mex index 3a55f816a88baff693bb4826a03b6ebbf4336b38..85afaa9880d7bdf0b5a3ccc6ce95961fd9571522 100755 GIT binary patch literal 20024 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 literal 22519 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 Okv` Date: Sat, 29 Aug 2015 09:16:24 -0400 Subject: [PATCH 289/308] IPython.nbformat is now nbformat in Jupyter I've changed the imports (two) in publish.py from IPython.nbformat to nbformat. I'm concerned that this breaks backwards compatibility though. I'm not sure how to assure that if nbformat doesn't exist, Python.nbformat will be. --- pymatbridge/publish.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymatbridge/publish.py b/pymatbridge/publish.py index f6d97d7..9342e4d 100644 --- a/pymatbridge/publish.py +++ b/pymatbridge/publish.py @@ -1,5 +1,5 @@ -import IPython.nbformat.v4 as nbformat -from IPython.nbformat import write as nbwrite +import nbformat.v4 as nbformat +from nbformat import write as nbwrite import numpy as np From 58f12f0254bb3845d3690771ba442b714fb168e7 Mon Sep 17 00:00:00 2001 From: "Joseph C. Slater" Date: Sat, 29 Aug 2015 09:31:07 -0400 Subject: [PATCH 290/308] IPython.nbformat deprecated if nbformat exists as a package, import it instead of the legacy named Python.nbformat . Corrects error thrown by Jupyter. --- pymatbridge/publish.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pymatbridge/publish.py b/pymatbridge/publish.py index 9342e4d..90b0f88 100644 --- a/pymatbridge/publish.py +++ b/pymatbridge/publish.py @@ -1,5 +1,10 @@ -import nbformat.v4 as nbformat -from nbformat import write as nbwrite +try: + import nbformat.v4 as nbformat + from nbformat import write as nbwrite +except: + import IPython.nbformat.v4 as nbformat + from IPython.nbformat import write as nbwrite + import numpy as np From 38a4439297f302ca6f658dc7a5354f94b470665b Mon Sep 17 00:00:00 2001 From: "Joseph C. Slater" Date: Sat, 29 Aug 2015 11:06:02 -0400 Subject: [PATCH 291/308] Update publish.py --- pymatbridge/publish.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymatbridge/publish.py b/pymatbridge/publish.py index 90b0f88..213d3cb 100644 --- a/pymatbridge/publish.py +++ b/pymatbridge/publish.py @@ -1,7 +1,7 @@ try: import nbformat.v4 as nbformat from nbformat import write as nbwrite -except: +except ImportError: import IPython.nbformat.v4 as nbformat from IPython.nbformat import write as nbwrite From 03e9fd2733e0f7649b0d29ed5d66f1d69c67cc98 Mon Sep 17 00:00:00 2001 From: "Joseph C. Slater" Date: Sat, 29 Aug 2015 15:55:44 -0400 Subject: [PATCH 292/308] Update .travis.yml to include nbformat. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f9c5944..8ac9159 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ before_install: - conda config --set always_yes yes - conda update conda - conda info -a - - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema + - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema nbformat - source activate test - travis_retry pip install coveralls From e7a687e4c10efe527d607154dccbad73bc41dc40 Mon Sep 17 00:00:00 2001 From: "Joseph C. Slater" Date: Sat, 29 Aug 2015 16:06:25 -0400 Subject: [PATCH 293/308] Update .travis.yml- CONDA_Jupyter env added. modify the python3.4 env variable so nbformat isn't added for older versions of python. I'm guessing at this point. --- .travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8ac9159..2e9394e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ deploy: env: - CONDA="python=2.7 numpy=1.7" - CONDA="python=3.3 numpy" - - CONDA="python=3.4 numpy" + - CONDA_Jupyter="python=3.4 numpy" before_install: - sudo apt-add-repository -y ppa:octave/stable; - sudo apt-get update; @@ -24,7 +24,8 @@ before_install: - conda config --set always_yes yes - conda update conda - conda info -a - - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema nbformat + - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema + - travis_retry conda create -n test $CONDA_Jupyter IPython pip nose pyzmq jsonschema nbformat - source activate test - travis_retry pip install coveralls From d98c05cabe9e79d66fa9dd5993e4914a38482229 Mon Sep 17 00:00:00 2001 From: "Joseph C. Slater" Date: Sat, 29 Aug 2015 16:11:24 -0400 Subject: [PATCH 294/308] Undid commit of changes to .travid.yml file. I have no idea how to fix this so travis can build it. My other changes seem to work, just not in travis. --- .travis.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2e9394e..8ac9159 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ deploy: env: - CONDA="python=2.7 numpy=1.7" - CONDA="python=3.3 numpy" - - CONDA_Jupyter="python=3.4 numpy" + - CONDA="python=3.4 numpy" before_install: - sudo apt-add-repository -y ppa:octave/stable; - sudo apt-get update; @@ -24,8 +24,7 @@ before_install: - conda config --set always_yes yes - conda update conda - conda info -a - - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema - - travis_retry conda create -n test $CONDA_Jupyter IPython pip nose pyzmq jsonschema nbformat + - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema nbformat - source activate test - travis_retry pip install coveralls From 5c2a4720b64c0ba7ec94b0fc0ec45389ee47757e Mon Sep 17 00:00:00 2001 From: arokem Date: Mon, 21 Sep 2015 12:08:44 -0700 Subject: [PATCH 295/308] Try pip installing nbformat, until it comes in as a conda package for 3.3 --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8ac9159..e38ecca 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,8 @@ before_install: - conda config --set always_yes yes - conda update conda - conda info -a - - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema nbformat + - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema + - pip install nbformat - source activate test - travis_retry pip install coveralls From 09ab6e509d06730baefddc931fc4dd8826ea05df Mon Sep 17 00:00:00 2001 From: arokem Date: Mon, 21 Sep 2015 12:17:27 -0700 Subject: [PATCH 296/308] travis_retry ? --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e38ecca..60ead21 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,7 +25,7 @@ before_install: - conda update conda - conda info -a - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema - - pip install nbformat + - travis_retry pip install nbformat - source activate test - travis_retry pip install coveralls From 562f2693090452756733f16820a66285967438f3 Mon Sep 17 00:00:00 2001 From: arokem Date: Mon, 21 Sep 2015 12:28:57 -0700 Subject: [PATCH 297/308] Install nbformat in different ways, depending on python version. Sigh. --- .travis.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 60ead21..dab3ec8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,7 +25,10 @@ before_install: - conda update conda - conda info -a - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema - - travis_retry pip install nbformat + - if [[ $CONDA == python=3.3* ]]; then + pip install nbformat; + else + travis_retry conda install nbformat; - source activate test - travis_retry pip install coveralls From e4b2b9dcd3b9ef1b118ba2e2cfeb439fb00b96e4 Mon Sep 17 00:00:00 2001 From: arokem Date: Mon, 21 Sep 2015 12:36:06 -0700 Subject: [PATCH 298/308] Ugh bash. --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index dab3ec8..4bc7373 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,6 +29,7 @@ before_install: pip install nbformat; else travis_retry conda install nbformat; + fi - source activate test - travis_retry pip install coveralls From fca113ab645ad8f4b265250c42509b73ccf69eda Mon Sep 17 00:00:00 2001 From: arokem Date: Mon, 21 Sep 2015 12:43:25 -0700 Subject: [PATCH 299/308] Activate my env first, so that nbformat gets installed into it. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 4bc7373..72a4326 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,12 +25,12 @@ before_install: - conda update conda - conda info -a - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema + - source activate test - if [[ $CONDA == python=3.3* ]]; then pip install nbformat; else travis_retry conda install nbformat; fi - - source activate test - travis_retry pip install coveralls install: From aeb8f2b44fa5168a410ec6e5e79402aa13a52c06 Mon Sep 17 00:00:00 2001 From: arokem Date: Fri, 25 Sep 2015 09:18:32 -0700 Subject: [PATCH 300/308] NF: Allow passing of all kwargs to the Matlab/Octave init in the magic. --- pymatbridge/matlab_magic.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index de3233f..fb2c4df 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -51,8 +51,8 @@ class MatlabMagics(Magics): """ def __init__(self, shell, matlab='matlab', - maxtime=60, - pyconverter=np.asarray): + pyconverter=np.asarray, + **kwargs): """ Parameters ---------- @@ -63,20 +63,19 @@ def __init__(self, shell, The system call to start a matlab session. Allows you to choose a particular version of matlab if you want - maxtime : float - The maximal time to wait for responses for matlab (in seconds). - Default: 10 seconds. - pyconverter : callable To be called on matlab variables returning into the ipython namespace + + kwargs: additional key-word arguments to pass to initialization of + the Matlab/Octave process """ super(MatlabMagics, self).__init__(shell) if 'octave' in matlab.lower(): - self.Matlab = pymat.Octave(matlab, maxtime=maxtime) + self.Matlab = pymat.Octave(matlab, **kwargs) else: - self.Matlab = pymat.Matlab(matlab, maxtime=maxtime) + self.Matlab = pymat.Matlab(matlab, **kwargs) self.Matlab.start() self.pyconverter = pyconverter @@ -216,4 +215,3 @@ def unload_ipython_extension(ip): magic = ip.magics_manager.registry.pop('MatlabMagics') magic.Matlab.stop() _loaded = False - From 797694206cf953c6b9a7bb3693d8ef725b8d5106 Mon Sep 17 00:00:00 2001 From: arokem Date: Fri, 25 Sep 2015 09:36:13 -0700 Subject: [PATCH 301/308] TST: Test passing of kwargs through the magic. --- pymatbridge/tests/test_magic.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pymatbridge/tests/test_magic.py b/pymatbridge/tests/test_magic.py index f9ecb00..4a9d38f 100644 --- a/pymatbridge/tests/test_magic.py +++ b/pymatbridge/tests/test_magic.py @@ -1,4 +1,6 @@ +import sys import os +from uuid import uuid4 import pymatbridge as pymat from pymatbridge.matlab_magic import MatlabInterperterError @@ -19,7 +21,12 @@ def setup_class(cls): matlab = 'octave' else: matlab = 'matlab' - pymat.load_ipython_extension(cls.ip, matlab=matlab) + + # We will test the passing of kwargs through to the Matlab or Octave + # objects, by assigning the socket address out here: + socket_addr = "tcp://127.0.0.1" if sys.platform == "win32" else "ipc:///tmp/pymatbridge-%s"%str(uuid4()) + pymat.load_ipython_extension(cls.ip, matlab=matlab, + socket_addr=socket_addr) # Unload the magic @classmethod From e69fe45f72846499521617238e863ca1f6c18497 Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Mon, 14 Mar 2016 14:18:26 -0700 Subject: [PATCH 302/308] fix sparse matrix bug on python 3 --- pymatbridge/pymatbridge.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 18b3b8b..bb60c51 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -343,10 +343,10 @@ def set_plot_settings(self, width=512, height=384, inline=True): def _set_sparse_variable(self, varname, value): value = value.todok() prefix = 'pymatbridge_temp_sparse_%s_' % uuid4().hex - self.set_variable(prefix + 'keys', value.keys()) + self.set_variable(prefix + 'keys', list(value.keys())) # correct for 1-indexing in MATLAB self.run_code('{0}keys = {0}keys + 1;'.format(prefix)) - self.set_variable(prefix + 'values', value.values()) + self.set_variable(prefix + 'values', list(value.values())) cmd = "{1} = sparse({0}keys(:, 1), {0}keys(:, 2), {0}values');" result = self.run_code(cmd.format(prefix, varname)) self.run_code('clear {0}keys {0}values'.format(prefix)) From 390aaa647092014644099bbdb8850378d615c1d3 Mon Sep 17 00:00:00 2001 From: Yoav Ram Date: Sun, 26 Feb 2017 15:33:47 +0200 Subject: [PATCH 303/308] typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fd44dc5..e254b93 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ and create the connection between your Python interpreter and this session: which will return True once connected. - results = mlab.run_code('a=1;') + results = mlab.run_code('a=1') Should now run that line of code and return a `results` dict into your Python namespace. The `results` dict contains the following fields: From 41f8d81ca173da0025491d2402b326225b7951f6 Mon Sep 17 00:00:00 2001 From: Mateusz Was Date: Mon, 30 Jul 2018 21:36:38 -0400 Subject: [PATCH 304/308] Update README.md Including README changes that are described in https://github.com/arokem/python-matlab-bridge/issues/258. This took me way to much time to find, so I hope this can get better exposure. --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index e254b93..0619ff8 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,12 @@ write matlab code: hold on plot(cos(a),'r') +If `%load_ext pymatbridge` doesn't work for you use: +``` +import pymatbridge as pymat +pymat.load_ipython_extension(get_ipython(), matlab='/your_matlab_installation_dir/bin/matlab') +``` + More examples are provided in the `examples` directory ## Building the pymatbridge messenger from source From b51f91848e926238e2a61ca7d6669f7431dbd467 Mon Sep 17 00:00:00 2001 From: Olle Vidner Date: Wed, 29 Sep 2021 18:31:57 +0200 Subject: [PATCH 305/308] Always make cell array of arguments Fixes #228 --- pymatbridge/matlab/util/pymat_eval.m | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pymatbridge/matlab/util/pymat_eval.m b/pymatbridge/matlab/util/pymat_eval.m index f38856f..a564be1 100644 --- a/pymatbridge/matlab/util/pymat_eval.m +++ b/pymatbridge/matlab/util/pymat_eval.m @@ -35,10 +35,13 @@ rehash if iscell(req.func_args) - [resp{1:req.nargout}] = feval(req.func_name, req.func_args{:}); + func_args = req.func_args; else - [resp{1:req.nargout}] = feval(req.func_name, req.func_args); + % If we don't have a cell, the JSON decoder has managed to merge + % everything into an array, which we don't want + func_args = num2cell(req.func_args, 1); end + [resp{1:req.nargout}] = feval(req.func_name, func_args{:}); if req.nargout == 1 response.result = resp{1}; From 4b2137c5c3824b34b8a8e4e85da40da5731cbc5a Mon Sep 17 00:00:00 2001 From: Olle Vidner Date: Wed, 29 Sep 2021 20:10:32 +0200 Subject: [PATCH 306/308] Detect messenger architecture at runtime --- pymatbridge/pymatbridge.py | 4 ++++ setup.py | 10 ---------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index bb60c51..e107532 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -36,6 +36,8 @@ from numpy import ndarray, generic, float64, frombuffer, asfortranarray +from pymatbridge.messenger.make import get_messenger_dir + try: from scipy.sparse import spmatrix except ImportError: @@ -110,6 +112,7 @@ def decode_pymat(dct): return dct MATLAB_FOLDER = '%s/matlab' % os.path.realpath(os.path.dirname(__file__)) +MESSENGER_FOLDER = '%s/messenger/%s' % (os.path.realpath(os.path.dirname(__file__)), get_messenger_dir()) class _Session(object): @@ -182,6 +185,7 @@ def _preamble_code(self): # Matlab (e.g. isrow) return ["old_warning_state = warning('off','all');", "addpath(genpath('%s'));" % MATLAB_FOLDER, + "addpath('%s');" % MESSENGER_FOLDER, "warning(old_warning_state);", "clear('old_warning_state');", "cd('%s');" % os.getcwd()] diff --git a/setup.py b/setup.py index 6adfc7b..0eabf39 100755 --- a/setup.py +++ b/setup.py @@ -3,9 +3,6 @@ import os import sys -import shutil -import glob - # BEFORE importing distutils, remove MANIFEST. distutils doesn't properly # update it when the contents of directories change. @@ -19,13 +16,6 @@ else: import __builtin__ as builtins builtins.__PYMATBRIDGE_SETUP__ = True -# Find the messenger binary file(s) and copy it to /matlab folder. -from pymatbridge.messenger.make import get_messenger_dir -messenger_dir = get_messenger_dir() - -for f in glob.glob("./pymatbridge/messenger/%s/messenger.*" % messenger_dir): - shutil.copy(f, "./pymatbridge/matlab") - try: from setuptools import setup except ImportError: From ea911e01ac89a00e8ba4defcf178cf3564ac5401 Mon Sep 17 00:00:00 2001 From: Olle Vidner Date: Wed, 29 Sep 2021 20:12:44 +0200 Subject: [PATCH 307/308] Remove unneeded setup hacks --- pymatbridge/__init__.py | 29 +++++++++-------------------- setup.py | 13 ------------- 2 files changed, 9 insertions(+), 33 deletions(-) diff --git a/pymatbridge/__init__.py b/pymatbridge/__init__.py index 7bdf135..45d2145 100644 --- a/pymatbridge/__init__.py +++ b/pymatbridge/__init__.py @@ -1,23 +1,12 @@ -# We first need to detect if we're being called as part of the setup.py -# procedure itself in a reliable manner. -try: - __PYMATBRIDGE_SETUP__ -except NameError: - __PYMATBRIDGE_SETUP__ = False - +from .pymatbridge import * +from .version import __version__ -if __PYMATBRIDGE_SETUP__: +try: + from .publish import * +except ImportError: pass -else: - from .pymatbridge import * - from .version import __version__ - try: - from .publish import * - except ImportError: - pass - - try: - from .matlab_magic import * - except ImportError: - pass +try: + from .matlab_magic import * +except ImportError: + pass diff --git a/setup.py b/setup.py index 0eabf39..1707de6 100755 --- a/setup.py +++ b/setup.py @@ -2,20 +2,7 @@ """Setup file for python-matlab-bridge""" import os -import sys -# BEFORE importing distutils, remove MANIFEST. distutils doesn't properly -# update it when the contents of directories change. -if os.path.exists('MANIFEST'): - os.remove('MANIFEST') - -# we need some code from inside the package to build it. use the same hack as -# numpy to selectively import even if we don't have dependencies installed -if sys.version_info[0] >= 3: - import builtins -else: - import __builtin__ as builtins -builtins.__PYMATBRIDGE_SETUP__ = True try: from setuptools import setup except ImportError: From 2efcde2455b476cb4832b1805028f43001c0d289 Mon Sep 17 00:00:00 2001 From: Alexander Nguyen Date: Sun, 21 Jan 2024 21:33:04 +0100 Subject: [PATCH 308/308] #268 Add dependencies to setup.py --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1707de6..766aaae 100755 --- a/setup.py +++ b/setup.py @@ -29,7 +29,8 @@ package_data=PACKAGE_DATA, requires=REQUIRES, extras_require=EXTRAS_REQUIRE, - scripts=BIN + scripts=BIN, + install_requires=['pyzmq', 'numpy'] )

}WEePLwnp(`t!pN>w7PL3Xm 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 Date: Wed, 18 Feb 2015 10:31:29 -0600 Subject: [PATCH 217/308] Trim down to a single eval method on both ends --- pymatbridge/matlab/matlabserver.m | 2 +- pymatbridge/matlab/util/pymat_eval.m | 32 +++++++++++++++++----------- pymatbridge/matlab/util/run_dot_m.m | 30 -------------------------- pymatbridge/pymatbridge.py | 12 ++++++++--- 4 files changed, 29 insertions(+), 47 deletions(-) delete mode 100644 pymatbridge/matlab/util/run_dot_m.m diff --git a/pymatbridge/matlab/matlabserver.m b/pymatbridge/matlab/matlabserver.m index de5cd21..3337b1e 100644 --- a/pymatbridge/matlab/matlabserver.m +++ b/pymatbridge/matlab/matlabserver.m @@ -19,7 +19,7 @@ function matlabserver(socket_address) clear mex; break; - case {'eval', 'feval'} + case {'eval'} resp = pymat_eval(req); messenger('respond', resp); diff --git a/pymatbridge/matlab/util/pymat_eval.m b/pymatbridge/matlab/util/pymat_eval.m index 681a2ff..60912b2 100644 --- a/pymatbridge/matlab/util/pymat_eval.m +++ b/pymatbridge/matlab/util/pymat_eval.m @@ -13,24 +13,30 @@ response.success = true; response.content = ''; +response.result = ''; try % tempname is less likely to get bonked by another process. diary_file = [tempname() '_diary.txt']; diary(diary_file); - if strcmp(req.cmd, 'eval') - response.content.code = req.code; - evalin('base', req.code); - elseif strcmp(req.cmd, 'feval') - response.result = ''; - [resp{1:req.nargout}] = run_dot_m(req.func_path, req.func_args, ... - req.nargout); - if req.nargout == 1 - response.result = resp{1}; - else - response.result = resp; - end - end + + % Add function path to current path + if req.dname + addpath(req.dname); + end + + if iscell(req.func_args) + [resp{1:req.nargout}] = feval(req.func_name, req.func_args{:}); + else + [resp{1:req.nargout}] = feval(req.func_name, req.func_args); + end + + if req.nargout == 1 + response.result = resp{1}; + else + response.result = resp; + end + diary('off'); datadir = fullfile(tempdir(),'MatlabData'); diff --git a/pymatbridge/matlab/util/run_dot_m.m b/pymatbridge/matlab/util/run_dot_m.m deleted file mode 100644 index e60aeac..0000000 --- a/pymatbridge/matlab/util/run_dot_m.m +++ /dev/null @@ -1,30 +0,0 @@ -% Max Jaderberg 2011 - -function varargout = run_dot_m( func_to_run, arguments, nout ) -%RUN_DOT_M Runs the given function or .m file with the arguments given -% and the nout selected -% For exmaple run_dot_m('/path/to/function.m', args, 1); -% arguments can be a scalar, as cell, or struct containing the arguments. -% If it is a struct, func_to_run must take only one parameter, the argument structure - - [dname, func_name, ext] = fileparts(func_to_run); - - if size(ext) - if ~strcmp(ext, '.m') - varargout = 'Error: Need to give path to .m file'; - return - end - end - - % Add function path to current path - if size(dname) - addpath(dname); - end - - if iscell(arguments) - [varargout{1:nout}] = feval(func_name, arguments{:}); - else - [varargout{1:nout}] = feval(func_name, arguments); - end - -end diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 94e9eb3..ea2da87 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -288,9 +288,15 @@ def run_func(self, func_path, *func_args, **kwargs): nargout = kwargs.pop('nargout', 1) func_args += tuple(item for pair in zip(kwargs.keys(), kwargs.values()) for item in pair) - return self._json_response(cmd='feval', - func_path=func_path, + dname = os.path.dirname(func_path) + fname = os.path.basename(func_path) + func_name, ext = os.path.splitext(fname) + if ext and not ext == '.m': + raise TypeError('Need to give path to .m file') + return self._json_response(cmd='eval', + func_name=func_name, func_args=func_args or '', + dname=dname, nargout=nargout) def run_code(self, code): @@ -301,7 +307,7 @@ def run_code(self, code): code : str Code to send for evaluation. """ - return self._json_response(cmd='eval', code=code) + return self.run_func('evalin', 'base', code, nargout=0) def get_variable(self, varname, default=None): resp = self.run_func('evalin', 'base', varname) From c678026ac8b382babc77aa25ea22bd09fdd7f4b1 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 18 Feb 2015 20:18:34 -0600 Subject: [PATCH 218/308] Add ability to refresh the Matlab UI --- messenger/src/messenger.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/messenger/src/messenger.c b/messenger/src/messenger.c index 8056bb1..bbd7b78 100644 --- a/messenger/src/messenger.c +++ b/messenger/src/messenger.c @@ -1,5 +1,6 @@ #include #include +#include #include "mex.h" #include "zmq.h" @@ -33,7 +34,7 @@ int listen_zmq(char *buffer, int buflen) { mexErrMsgTxt("Error: ZMQ session not initialized"); } - return zmq_recv(socket_ptr, buffer, buflen, 0); + return zmq_recv(socket_ptr, buffer, buflen, ZMQ_NOBLOCK); } /* Sending out a message */ @@ -108,6 +109,11 @@ void mexFunction(int nlhs, mxArray *plhs[], int byte_recvd = listen_zmq(recv_buffer, BUFLEN); + while (byte_recvd == -1 && errno == EAGAIN) { + byte_recvd = listen_zmq(recv_buffer, BUFLEN); + mexCallMATLAB(0, NULL, 0, NULL, "drawnow"); + } + /* Check if the received data is complete and correct */ if ((byte_recvd > -1) && (byte_recvd <= BUFLEN)) { plhs[0] = mxCreateString(recv_buffer); From 3df6371a600aa3b625de6d32a0ba834022f764e6 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 18 Feb 2015 20:19:08 -0600 Subject: [PATCH 219/308] Recompile linux binaries --- messenger/mexa64/messenger.mex | Bin 21133 -> 21147 bytes messenger/mexa64/messenger.mexa64 | Bin 13090 -> 13208 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/messenger/mexa64/messenger.mex b/messenger/mexa64/messenger.mex index 2114d622b245ca93c04ea26fe35ccfcbe571c473..7afdeea066dee45216a6466cdc312239db758e01 100755 GIT binary patch delta 7380 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 INp0i*1H1cbAOHXW delta 7405 zcmZu$3wTu3wcdM99_NH4lbInTAtW<_goIQwiG~ExJb^F?5Ay_pL_`RJ6$A`iE!7!K zP^TeE-0hWGG{M3(6N|tB}SLSgk8Ps+{P}82?l%jJZk^k zW`amBX7OjMmJQ!{edU(b+8-<@TGIF4Ik4Kj_Z4*1;4=X}7$O!vJu`i&%;&1r=P>?Q zRFbr%gWf69EKB(C&?bwUi-49YhPA>cqkOiJcrZe1G&{CKG(@MY+XBeW40b^ke~Ys2 zWyB{MSSd>6w@Oq(Zarlf6DQ|!MgO~2@k zb#SNH7yATH8JeO0l6yU!pXi?M=!6L_=Gi{d5gnKf@jRW!^rL11x`t*<2A5DyHe9XF zN{|q*MRV|M2wKiW#J~Xyo|f2-7?&_OB5@pIT-xBE#1_QfC{*-I#aGFoh(^3q;){r5 z5c?$lCt}|Jck$;Hh31Wrzd&<6rP^4r=e@{OuOXq|J~DhDe>Pd zZAXFPW8+PVFSdowB7@++DLF>{ zYHS2G#0s5m3od~GR;N!)igy)Wa=6$LToaG~gvW0Q?8J$6Cm#T{$A3mCzy3B9+CH+y zdLsIMad&){cR2(G91meTV1Wbo$U)J!t3j*&SaizMJrg(8^0we+Fs|9z;{T$_cbnr~*Bt*GBww?$$=+q%ub@xqyhrz)E{eJ9w%5FvL zNMM1~Mt_Ub?w%R=^qWvnM`Z_AKxmKu_ubJJs1KrTKQHP0Fi;|56Ekv8!VH6} zz{l#u907o@;--c*|Li}kT?WJh^?PD|V)~7Lf-Hdp7_S@hdz1jd13N&DL1>GnKIy#m-|%kTo8PS>9IF8vNpGbf3f6 z@ws8+Nf;-M?@4193?mNMn;(x0RDt>kN^+MR4P*f)Wr(ehJmLk{2U{US8%!^Fr`&L6 zfU4tB**M|1(6Gqdi5M6wlG&C+7?Y~YNR59^wjNjlsXW~v1&>QB6bd1VFvK_+q7w0W zz=7+)HTXfAbo0r;{tp8uzY2wLt%5IqH)KuX{JNTz>+Wt}?drJ4wYhy&`?{^|u9dF! z?f2fh^3HbG>MiYPShldi)xLT2J)1?m?VsX1TmH09z6^z$A>=ogL!lo-zW}1{hJFY1 z$Dn@;`cI(0PBhqaqj!S0OFUqo!tWD%>`p!)f_A5ojsEZ%0hF8d9z<#c#HtdLIxUvj ziR!kF(fi!oUpsL@_z9v z*G+NsJv*w2m3+eFZQv6ny>vbiwi5RNI1EDAPfX3q|GHPUCqqFJ{R(N?i?V zP+9JUDAo$Fb0;PU|E$31(D?2VOz;&H!<|UlF8Cx_(IWl71j(_|jG4vSAm}cctHsbx zqZhUb52~CS#C18D@zx*Ubn-BpPn^!4z~2}D$j->yqnt2CCTxrGd`yfZ$}Av8j`!-{ zbA0zX7~(iXP7q^mmmL)cmBTJo)6DxNq|2@DNHoki=9F?Tw$Z3sI@V8MJL=e9;>);28jpO{xYY z^L21< zfifT``B0$D)=#`7?^PQCi;<@7WMXM&6U4&Y0?U^P;(^>$@3!esUHYAH;Zj@=^I?;G za9IMgO8*TSevCe^f+78VB;WxgzygtxfCrI)`8X*j{z!v{IWJR57s3SODRVi@%U-O& zj6+!}%S15o-0ww};#}l*_(xeS0irey1y+4agK#D(wh-}gzT%xez zFMv7zL#+5MFr>%f9$1fyo`?Ke6;Dk7-iG-?is*R!x-=KV;Z$}!^8aVr%@Ry6mOSiL z9_t~3Ss+ZWQmu|$>>X+f$V(xVB-i7T8pbkTxWb(Amn%Rk`JSP*%eZufd7EkW8rmyl z&umvwYv4#F->*P;53D6W7NhTn(J^{2kQ1Z-R?3IrnqVqk1hw-VE_EC-WoR$BT+qYa zy%UtN1Ixhf`V_@qE%Sn$wW{Mj#*H5EFtlOiJGmGjDe14)l;^-*KZKsy%OQY%tGuD( zoiPWMIhc=SH=^k_c}K_UP17SVlubPh7o%wdYNa9}`!Fo2zFIm9aU?%2emmy4Ln?;F z-}1A)ct~UnmTQ2`khgfex5yBAEO#RW)!)S2xMHSj_9GD2u*t72Jf}HG6U%)E^Y?cXu!)BA_c z{h-Fe4-VxO7~D(WKw3O^mB02-*=y}(%jW-b@v`a{`(D?x+V8_|^6L91>xVnvJ@3>H ze(|WDqW^H|VSSOlwCml^w2C^dx=t&<8L#mlX*PY0e)rPXduz*5omQva)Zx(@PM-IbFMr9crRz5@)e`gq?MDx5 z2fYt#)Af(E+b?R9^p2swxRWeHmx~Tsavy^!VdJccM4T=*&YDSlT+|n5h@Hi{__ElM z>o@J-u$V-0H5-G3gNCsm>~--p=D!Gz9797+6mj3Xfp z4l_2+T1nKE%8W?Jqp^DO1X;F~V>}6MjD#d{%NR#OqvCMs#A}e+K&1XUOzL71iAF50 zAxvsTc)E*8BpOXeLJ?9M!lZ_Om$1bo5{>3yLLWu4kVx#9j)aIG*qtO2Ii@2a_?45Z zNL`G-c(4&WrYE6M@%7AWan(p%?F@6(MBA31E)?-#Zzw^0cH8n6|L+N#p< z6C8SyvrF`X4?O@H7N@}HtYMCz9$sZsyKVHghx#`}L$y1OURA&&qn}il*y;a2^;0b3 zo$7+PE8h6T%`Pzt?Ph|)q1xGxa(GZQI>&AFyIfM+FO0dR#(+WtqIPZtJSFqP^(}E~ zZiVrU>BhXmR#VEiiQ1Y9UN3Ic@_LcVe>qiMjVug3E-0<7cE N=q0wTjywGdVog~(oX27;asZEd2CSV;xB!i6OwA5P1X&pmsGJRLlDX1MuNOS$Zef#iW zraSZYd%xfJ?YG~4yZd(E>3t`^*PUgXv=CN2njn+MOR6l7rEBQ1^yB-T<}8DT%8vKG zoOa))frpZ=6W*#U+WyVmtIEetjsH?!e>(c&n(+Q&k?WmEe>zdjdzw_MwhP~~y$@sPAq?!H*I~V~pT6TKOE9L<^sX+M4TuH^hx-6q$@dDSR3+j+aCx81Y>s za5f_&3~xq^3nLO{xEe7gH`2rKI>biA-3(VC#uX6hWOxN)99QH3!+D4?Es@;}F9jTE zgcOs=Rz{?u0WQ{vhhYn1OkbpoVG(f>Vh6)tW&*~w5=mwFF5(o#gyDZ8wj!SX8i>L> zh;eo!lMMeg(@{qnakWP#7;y~^(h!dTmP5vyK*%BY6%e&@$*in=CI@Fz4vD@|n1fF< zv^luzi%w#S!M<0sKb1*qERO_!!wjyq-}TALSo99sbh`I|3Go-nLHC=W2Di#*?MZT% zyBc`)XV9(M2(kLcjB9}q?v3ul;E{;n)`v~Iv8(ND{U~$l$83O^ljuSbhjChE<+9qL(I0BGtlUQO&;N}^kB#_~ zE*pC@=(@!GKma56Cqb_-!un7fppkd)^&wnK*d%1!i|xDCs^16AGtw^KDE2Mw*e)w` zl5#)jestb}gboV018C13alBV%2RAIErWv{Y{sB?1=hw@R-{V!Y>{`Io* zvHAe)A)IV!EUrLcGvYpveyq?g@*em=1;+MkWX~bn11u1mFqo4_;FoR)cQ3GSfmzHD z0yu_uL8Zk+E=?t>f6>AiMu2PP4-kSf8k~*#y=pf2^D1LCA-4}4O_edD8s#7AIcBs) znbjr}Jd$CoKEO)73oe6mQGbFId^EBB%2dUXIrM(W7QnWzvko_rhzhov=0`S&^>+}r zdJ~k9KY{{?>quNi0(}qR2ME|(FwmGGt-a*;&(Fv;Y{C3@;f#C(+QI~T8E63zfWgE} z$N4WG&c*?FhuKhW*C-FvWEh@&QvTMcKc3CRl%(e!k0W(8xSDe6%LGrEg#pDg2UEC4 zs&HE3Fb-U!iPA2~Cp|0G`$oyY;gmEn{`rG@4z;u%qM_8%lJgIu(H$_zTVF(@he1|C zNWTF20?4Z%-v@agq=SBvT4dY`)*hN{%NL%a<+dV0p*x{I4RyZhB3S+Y3)*MPDOm}x zpThGMIDH#}AyP`}OX9|4)0Wo^KZy$&e{2fI8(tTa;^`wR(%((nVF~Exp?>~B8&+VL ztnB75I&NNs{fjU=si389kLwc)o(EVu@F0Q0?+ylX(Mt1jo)uo9M{;t73$!=KC5+QQ z<>cDJxT>LWL8hsY>k>L>d2a5iFrHsf;0xM{5{HUqn&WD&hcvVjx~W(>>}1_U8Y+lpLf{c07a=ZdP#gANBX9i)+>4Z?;#lp6UL{G*- zK8fh*SjZcEtpV<@Woh)(iZhTMsniY`kV-RYOX+6s z;(ndbM1&2L%CD%pe~I&pw{9Kq0^Icnsj$)|b|=z`m5&P-=??*T(rF)n5jwNdzEmFv zUbV2`Zvyu7t0bDY%2{5*w=8ypr2uxaKCVABPgvJi5LITVs9)&%lia}c-D@~#5mL?tB_yf0O zLUkfHWpAlB!tJ(b(pJMN7SV3&>P>1`m*#`Q)PZK$N4069sB6VDY!ahs8$P|?x$nI! z$*$#h-tTwLJ?GqW-hJ;5J$1D6&|+_CA(Nxc6f85?&{8<%HPMuJ@adr2t0yr{h6?_R@aOpF<6qi_ORtIxc(FiP zp=4a?HA;~4WunjF7r%Eb7DJ9Ek*duTw;Yf0J~1Bji@kX+_v&IfiLFofbT zu4W;wo~kz75$+;o_F@jBrjRftmCZ=35T73nH6E81=l5Of(DYNe56GxDybLxhR;MMx zPeBd8`bYbUwSlk#-uNBj8ePbxUrcv9Sj>jOxstB3_Ml_OSd7( z^Pu4?m+8pvfCEoeuXwA-y@C8cEFT8_rg2#=tNc}(rz@k>EKNUc{M4jhG-*x0K;)g< zxm^EPtoXEZPq`>B4#YP>&0@s}Re`P>dod~cwm#b~3 zWD~dJSnj~*tBt2=l0Jz|CAF_oEjq!C(36hvZ-78OK0fC8;e_Y#SnGtR|0pz(#BBwA zPKGy;yJk#?4jia<8F$Tf*F*07;6`cZy-gRRi}Kdvr=xnl(TMw~elih$yG%tl)@u6u zcBhs^PUTf|*^2OHaub1Vb{AZbf>QeuvA-oY3KqmA2;(>rt+*SZy$H5#{t9BdkWC!v zu!$>0MiJ~$fKdYUp!^Nlh6y}dO4-~EH8Ra!f-^}!=Y`K-P$ZeqAI%_ViD;tGqaa3T z+r#WEiZiEpv6x-Bc=!)A<<3pJaDn&kgaeuU4zalx~=^NJ;4n%K8QQ8xjs>S8;*;iKvF^L;Sm8w;n0Y z*nRQ4j%418&P2YWMS*!bQnsrwy`^j`kK11r`zwM;a$vb~v{*MbUOx{%I1g{1hv^GP z!}?~jjFl_BjWHbTK#91g@^RiS`YNmVpg2+);zQzGWtF#;oFEpg}5qKR#i2& z)7Jw7@3(J~w1Tj!7QRe-5aT*w@kG5}Y$@AwSY7;3K7B?o7Fn{^lB+Da(URLO*=fmV zEct>Ze_+XDZsAi`@l^U(sz>2%V*H+vw;it|8nzr1JP`8QDcQ0~L;@kVYAr++J%N@A zds((rr60z~As1%@0r!5(e!sXLXqhRIU8*4wsSXv|CC<3Sx2jipuUZwir7Fg&Lo=r> z`_#2Z@S0HJ0s1Inpebu=R(Zc|L0bkyAB<)lxK6;xunsV`EKc*S zscUf$tEzNAEUwqBI+&B$ zm7L4xGgTaED0dXFc5$x3&-Y8@X03uR_s8wp%$-xj?BdMjihYXf|WsJ6H*` zD>Yl|U>;`GtZX)qhrg5=rQ-PVW2n~F6@FA?>xy#m+=@-n`Ei4os9+PdS%*E_PsHNq zZ{Ho@Ia|zzh4@s|B^RVRVwV)QUqEilNpEh6Ke@ymNwWXmUc}12iot= zi}+QkMMSYI7@{NkL%~tL Date: Wed, 18 Feb 2015 20:19:56 -0600 Subject: [PATCH 220/308] Only close invisible figures --- pymatbridge/matlab/util/make_figs.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pymatbridge/matlab/util/make_figs.m b/pymatbridge/matlab/util/make_figs.m index 239110e..94c32ba 100644 --- a/pymatbridge/matlab/util/make_figs.m +++ b/pymatbridge/matlab/util/make_figs.m @@ -14,7 +14,9 @@ saveas(h, [filename, '.png']); % Once you've saved it, close it, so it doesn't get dragged into the % scope of other cells - close(h); + if (strcmp(get(h, 'visible'), 'off')) + close(h); + end fig_files{fig} = [filename '.png']; end From 83262f218c6a32fd6d197f107a10d399775f0f3a Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 18 Feb 2015 20:47:37 -0600 Subject: [PATCH 221/308] Add ability to toggle figure visibility --- pymatbridge/matlab_magic.py | 7 ++++++- pymatbridge/pymatbridge.py | 23 +++++++++++++---------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index 17debc8..acbb239 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -130,6 +130,11 @@ def set_matlab_var(self, name, value): help='Pixel size of plots, "width,height.' ) + @argument( + '-g', '--gui', action='store_true', + help='Show plots in a graphical user interface' + ) + @argument( 'code', nargs='*', @@ -148,7 +153,7 @@ def matlab(self, line, cell=None, local_ns=None): local_ns = {} width, height = args.size.split(',') - self.Matlab.set_default_plot_size(width, height) + self.Matlab.set_plot_settings(width, height, not args.gui) if args.input: for input in ','.join(args.input).split(','): diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index ea2da87..7fd4e67 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -212,7 +212,7 @@ def start(self): # Test if connection is established if self.is_connected(): print("%s started and connected!" % self._program_name()) - self.set_default_plot_size() + self.set_plot_settings() return True else: print("%s failed to start" % self._program_name()) @@ -318,12 +318,16 @@ def set_variable(self, varname, value): return self._set_sparse_variable(varname, value) return self.run_func('assignin', 'base', varname, value, nargout=0) - def set_default_plot_size(self, width=512, height=384): - code = "set(0, 'defaultfigurepaperunits', 'inches');\n" - code += "set(0, 'defaultfigureunits', 'inches');\n" - size = "set(0, 'defaultfigurepaperposition', [0 0 %s %s])\n;" - code += size % (int(width) / 150., int(height) / 150.) - self.run_code(code) + def set_plot_settings(self, width=512, height=384, inline=True): + if inline: + code = ["set(0, 'defaultfigurevisible', 'off')"] + else: + code = ["set(0, 'defaultfigurevisible', 'on')"] + size = "set(0, 'defaultfigurepaperposition', [0 0 %s %s])" + code += ["set(0, 'defaultfigurepaperunits', 'inches')", + "set(0, 'defaultfigureunits', 'inches')", + size % (int(width) / 150., int(height) / 150.)] + self.run_code(';'.join(code)) def _set_sparse_variable(self, varname, value): value = value.todok() @@ -436,9 +440,9 @@ def __init__(self, executable='matlab', socket_addr=None, platform = sys.platform if startup_options is None: if platform == 'win32': - startup_options = ' -automation -noFigureWindows' + startup_options = ' -automation' else: - startup_options = ' -nodesktop -nodisplay' + startup_options = ' -nodesktop' if log: startup_options += ' -logfile ./pymatbridge/logs/matlablog_%s.txt' % id super(Matlab, self).__init__(executable, socket_addr, id, log, maxtime, @@ -499,7 +503,6 @@ def _preamble_code(self): code = super(Octave, self)._preamble_code() if self.log: code.append("diary('./pymatbridge/logs/octavelog_%s.txt')" % self.id) - code.append("set(0, 'defaultfigurevisible', 'off');") code.append("graphics_toolkit('gnuplot')") return code From fa4ba519fb2da50f675ceaaf35192b606682005a Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 18 Feb 2015 21:40:00 -0600 Subject: [PATCH 222/308] Prevent "clear all" from killing the server --- messenger/src/messenger.c | 1 + 1 file changed, 1 insertion(+) diff --git a/messenger/src/messenger.c b/messenger/src/messenger.c index bbd7b78..c8b0de9 100644 --- a/messenger/src/messenger.c +++ b/messenger/src/messenger.c @@ -13,6 +13,7 @@ static int initialized = 0; /* Initialize a ZMQ server */ int initialize(char *socket_addr) { int rc; + mexLock(); ctx = zmq_ctx_new(); socket_ptr = zmq_socket(ctx, ZMQ_REP); rc = zmq_bind(socket_ptr, socket_addr); From 0d0f93e20e318c7e0876e5a483f4ce47c416b41b Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 18 Feb 2015 21:40:29 -0600 Subject: [PATCH 223/308] Rebuild the binaries on Linux --- messenger/mexa64/messenger.mex | Bin 21147 -> 21878 bytes messenger/mexa64/messenger.mexa64 | Bin 13208 -> 13248 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/messenger/mexa64/messenger.mex b/messenger/mexa64/messenger.mex index 7afdeea066dee45216a6466cdc312239db758e01..847b34734290d348f72aaddb3a05e482f6f7a687 100755 GIT binary patch literal 21878 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 literal 21147 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 T`5Tx2CYc#(dRAhQn-f0((|=k< From 86b61cd480324a6331c0088d03faa411e1e0b41b Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 18 Feb 2015 21:58:47 -0600 Subject: [PATCH 224/308] Add numpy to requirements.txt --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 02ec117..ae3bcc7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ pyzmq +numpy>=1.7 From 276100f6fd9115ea4479e418f35efe15f70673bb Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 19 Feb 2015 06:18:24 -0600 Subject: [PATCH 225/308] Prevent zmq errors on Octave --- messenger/src/messenger.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/messenger/src/messenger.c b/messenger/src/messenger.c index c8b0de9..4be1b71 100644 --- a/messenger/src/messenger.c +++ b/messenger/src/messenger.c @@ -111,8 +111,8 @@ void mexFunction(int nlhs, mxArray *plhs[], int byte_recvd = listen_zmq(recv_buffer, BUFLEN); while (byte_recvd == -1 && errno == EAGAIN) { - byte_recvd = listen_zmq(recv_buffer, BUFLEN); mexCallMATLAB(0, NULL, 0, NULL, "drawnow"); + byte_recvd = listen_zmq(recv_buffer, BUFLEN); } /* Check if the received data is complete and correct */ @@ -121,7 +121,8 @@ void mexFunction(int nlhs, mxArray *plhs[], } else if (byte_recvd > BUFLEN){ mexErrMsgTxt("Receiver buffer overflow. Message truncated"); } else { - mexErrMsgTxt("Failed to receive a message due to ZMQ error"); + sprintf(recv_buffer, "Failed to receive a message due to ZMQ error %s", strerror(errno)); + mexErrMsgTxt(recv_buffer); } return; From f67fa57f45c52fda634461d2f6a4ce731b8a05cc Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 19 Feb 2015 06:18:37 -0600 Subject: [PATCH 226/308] Recompile --- messenger/mexa64/messenger.mex | Bin 21878 -> 22519 bytes messenger/mexa64/messenger.mexa64 | Bin 13248 -> 13361 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/messenger/mexa64/messenger.mex b/messenger/mexa64/messenger.mex index 847b34734290d348f72aaddb3a05e482f6f7a687..3a55f816a88baff693bb4826a03b6ebbf4336b38 100755 GIT binary patch literal 22519 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 diff --git a/messenger/mexa64/messenger.mexa64 b/messenger/mexa64/messenger.mexa64 index 54472c5113391c4f3a15df2ae1f74e195e18c972..9ff2538e4fb0af9af43e8bea75a0788a908430e5 100755 GIT binary patch delta 3411 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 QNOQNq`fuuHuA3|V57@AkSpWb4 From 2274c79ca9b1a05f8bcfcc291652a0edd4eaeb26 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 19 Feb 2015 06:19:22 -0600 Subject: [PATCH 227/308] Close figures before eval to avoid Octave plots resurrecting --- pymatbridge/matlab/util/pymat_eval.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pymatbridge/matlab/util/pymat_eval.m b/pymatbridge/matlab/util/pymat_eval.m index 60912b2..192670e 100644 --- a/pymatbridge/matlab/util/pymat_eval.m +++ b/pymatbridge/matlab/util/pymat_eval.m @@ -15,6 +15,8 @@ response.content = ''; response.result = ''; +close all hidden; + try % tempname is less likely to get bonked by another process. diary_file = [tempname() '_diary.txt']; From a91610a8f40d71e94cae44461c6359a52bd5ad03 Mon Sep 17 00:00:00 2001 From: arokem Date: Fri, 20 Feb 2015 16:23:19 -0800 Subject: [PATCH 228/308] RF: We probably don't need this variable. Certainly, we don't need to mention "R" in our docs :-) --- pymatbridge/matlab_magic.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/pymatbridge/matlab_magic.py b/pymatbridge/matlab_magic.py index 17debc8..9cf8039 100644 --- a/pymatbridge/matlab_magic.py +++ b/pymatbridge/matlab_magic.py @@ -52,8 +52,7 @@ class MatlabMagics(Magics): def __init__(self, shell, matlab='matlab', maxtime=60, - pyconverter=np.asarray, - cache_display_data=False): + pyconverter=np.asarray): """ Parameters ---------- @@ -71,14 +70,8 @@ def __init__(self, shell, pyconverter : callable To be called on matlab variables returning into the ipython namespace - - cache_display_data : bool - If True, the published results of the final call to R are - cached in the variable 'display_cache'. - """ super(MatlabMagics, self).__init__(shell) - self.cache_display_data = cache_display_data if 'octave' in matlab.lower(): self.Matlab = pymat.Octave(matlab, maxtime=maxtime) From 7fb251760d8b9ffa16d3ef7fdc3a4bfe25ff9dc4 Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Fri, 20 Feb 2015 20:16:26 -0500 Subject: [PATCH 229/308] Recompile OSX messengers for Matlab and Octave. --- messenger/mexmaci64/messenger.mex | Bin 9664 -> 9936 bytes messenger/mexmaci64/messenger.mexmaci64 | Bin 9224 -> 9792 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/messenger/mexmaci64/messenger.mex b/messenger/mexmaci64/messenger.mex index 718c8a2f72f995ecb47651b72f4328568eac668c..3fd7963a12ca3a0994659e06cb949c4e260796c3 100755 GIT binary patch literal 9936 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 K?^slWW&RuPH8`sP diff --git a/messenger/mexmaci64/messenger.mexmaci64 b/messenger/mexmaci64/messenger.mexmaci64 index b744df73e5efbc2b00d9cb33d112b1a6e8d76272..3cc7b8da8bc4461123e832ea6b73474352cac894 100755 GIT binary patch literal 9792 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 Y2^4SlN=#H=g_R#0d7zp&c7?J30vNvjD*ylh From 8caf70b44ccc60538eaed1d2d9c321952923d372 Mon Sep 17 00:00:00 2001 From: arokem Date: Fri, 20 Feb 2015 17:58:27 -0800 Subject: [PATCH 230/308] For backwards compatibility, ship mac messengers compiled against zmq3. --- messenger/mexmaci64/messenger.mex.zmq3 | Bin 0 -> 9888 bytes messenger/mexmaci64/messenger.mexmaci64.zmq3 | Bin 0 -> 9792 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 messenger/mexmaci64/messenger.mex.zmq3 create mode 100755 messenger/mexmaci64/messenger.mexmaci64.zmq3 diff --git a/messenger/mexmaci64/messenger.mex.zmq3 b/messenger/mexmaci64/messenger.mex.zmq3 new file mode 100755 index 0000000000000000000000000000000000000000..c394ada2298f198ce714dbae6bd2f9438567ed8c GIT binary patch literal 9888 zcmeHNYiv}<6`sY97%vFw&ZEv%_Yj*FN zHL?h*v679kMEc|hYWY#AX;npyNGg)5#*Hfo`9nlVt12xhQJbzs6Sbs5h!EWGn>%;C zz9f++OxZ z+9hjxL519;Fl>qt9CM zt58bBYG`uJWNFTmrx9RX-xO#MWZBMyB6R18r{+AN-9pMB>ADrw6a76Mv8di_$3NAc zYle1n{o;6jPFivbU5^@{Wv^TrdQRyO=h~xxUzlbu6zl1USuV@l-?Pe|s-#%1z1%s- zMqTenOwHnZ0mzGbI`xWAMOVU3F_@ap3>uJ7Ub&1LblOou3F=-^H)nFUIuW)vdws} zfA#;`E*_j?RQWr-pT9*%eac^_hi&}{+wAdg$T|bP<;a{G)fhjH%?gF8qJO zFw?&~JBc)OF*);m(Ofk9YQ}6?v1f0cck1L4dFgqnuGp7{|Cq{o9pZ_746+YU;jwd+6!)7LUT z1soc)x52+L#d=n<%8s34>_=)B;B}3XhZVa5aRPgQ{Rcaw*guo(`bQu=aRzi?@XidI z(S8epnUBC}8h)}QQwZ@Km;S`Yt7trjEJj&m-luH3n8W^oB+oxnREwXZV`KJ{u=h`> zOl(8LIq~ZC*^bJKfUr7B4xRGdotzxJHJSWcvm>8*0Rn?{UoIQE#Q0Cv+^o4=bFn3T zE3+33S+&W2ty$A51;K|@4oLr{8_RrmE~MnmdkR!EEk|`9$9R{P@rwHay#l1-S9|EyoZi<^QUOy z&!m=;x=d;Kv&QsXvgi zNWDiYOp4<>v76LFQmv$_No^*zmDGAt`$?@PWs|BRHArd+sK$6a7GJ0BZrP?K%tRs* zvotGaYY{7AM~rCXuo)I+Dq@SaSm+7U)uo-tu8ZO^$@KLL?igEw+7;7qBmxRA6ltFFK*PRdi6@p@At0|8x4!kjhjYTv%5`= z@3@8)7BnGRBJj-W(u{alvd6USby~u4#|VdEH!)4y)8sl1%kWY&pj?@lmF*AN>~yCQ ziJD=*c+4_go>9;dD!cy+pgW_n zLw>CV4k9p`9Zy;z`XDyTXK8i}-IZFJA)`jAa1xR+IUXj52F?l@&^2HR1G}Z>*Qwzl+^=7*pDt`oT4V321F7z!GGkgnxnS6&I7rs=vue|iWk`sK8 zC;d{{{k5vcRQ{2FmaBT9s+XzSuj)EgZ%}o!s&}aRfU3W( zYFpJFxAQO`fqVq=5y(d%AAx)X@)5{KARmEz1o9EcM<5@8d;~rt0`r!ZAK-oIf(G1p zh2^EX-hq2&T!L>qC{BojlF>~@DiDtw{q3gO0m*9xhS(w1X49(qTQ+Eqn1Cx%hk_ z)YD6$Un%Hn$>H?r_`afe>ZDL?a?Zp!Sfa^2wAvaHZHVJ$9DebjO>{cvbMk7vw?Isk z2FZDK;bRKpvQQ!jI64=#bTx&D@WFb}PrKPVzC^Waq;yxxO1 zdvL1<^S;ITbL@9IARABK{qwtu3S@q>un?Jd`#k@|u*>fTI9qt!Hy4@X&!L%zjHxQ_ zN9NFS_;|L-J&bbzsp0=&TNC*5X6jU452>}HhpUR zxtoAz^CO(v_K4($M?!6N_iS=tsO^o^Cv0q4w%XBvbGI@F-m{0f+Y)PMKbrb=kd*Vg d;E?JUK?3<(ASwAP;84!~FKM~+-}4(J{sR^RwU+<@ literal 0 HcmV?d00001 diff --git a/messenger/mexmaci64/messenger.mexmaci64.zmq3 b/messenger/mexmaci64/messenger.mexmaci64.zmq3 new file mode 100755 index 0000000000000000000000000000000000000000..dc77206a7a2912968adf10003836c2467221050b GIT binary patch literal 9792 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 literal 0 HcmV?d00001 From 6d4cc9f1937ee1134620c8aeb5a55027491706ac Mon Sep 17 00:00:00 2001 From: arokem Date: Fri, 20 Feb 2015 18:28:48 -0800 Subject: [PATCH 231/308] Update the notebooks to IPython 3.0 version. To be merged once IPython 3.0 is out. --- pymatbridge/examples/matlab_magic.ipynb | 899 ++++++++++++++++++++---- pymatbridge/examples/pymatbridge.ipynb | 607 ++++++++++------ 2 files changed, 1160 insertions(+), 346 deletions(-) diff --git a/pymatbridge/examples/matlab_magic.ipynb b/pymatbridge/examples/matlab_magic.ipynb index b2a7172..5f0fbf0 100644 --- a/pymatbridge/examples/matlab_magic.ipynb +++ b/pymatbridge/examples/matlab_magic.ipynb @@ -1,145 +1,778 @@ { - "metadata": { - "name": "", - "signature": "sha256:48e8fc74a7e448f6413aa94b84b2099f57ab69f6390c266abbd5d1ff0c4a0b14" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ + "cells": [ { - "cells": [ - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import pymatbridge as pymat" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 1 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "ip = get_ipython()\n", - "pymat.load_ipython_extension(ip)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge\n", - "Send 'exit' command to kill the server\n", - ".MATLAB started and connected!" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "\n" - ] - } - ], - "prompt_number": 2 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%matlab --size 400,350\n", - "t = linspace(0,6*pi,100);\n", - "plot(sin(t))\n", - "grid on\n", - "hold on\n", - "plot(cos(t), 'r')" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "display_data", - "png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAFeCAIAAAAkP95fAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\nB3RJTUUH3wINFAUaPCyJdAAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAxMy1GZWItMjAxNSAxNDowNToyNopOReQAACAA\nSURBVHic7b1tVBznle/7p2mgoRvohpbUCGSQwYhIWEIYR4qisywcW1Esa9nnHM84dyX3zCRzZ2Xu\ndWbGsmwrJ3fiWM5o5WQy59pZuWvZGo8nJx7PmfjcWDd+Pbal2PIdyZESJCECMjIoAoNQgxCvDXRD\n09wPu7rUQL/Uy67qKrp+H7LiUnd18a9du55nP/vZO2thYQEWFhYWZsCW7guwsLCwkIrlsCwsLEyD\n5bAsLCxMg+WwLCwsTIPlsCwsLEyD5bAsLCxMg+WwLCwsTIPlsCwsLEyD5bAsLCxMg+WwLCwsTIPl\nsCwsLEyD5bAsLCxMg+WwLCwsTIPlsCwsLEyD5bAsLCxMg+WwLCwsTIPlsCwsLEyDXZ+fiUQiv//9\n769fvw7gnnvu0edHLSwsVhiaO6xXXnnl9ddfv3jxYjgcpiOXLl3S+kctLCxWJJpPCc+dO9fW1rZm\nzZo9e/Zo/VsWFhYrmyytm1BcunTp1ltvzcnJAbBhwwZYIywLCwulaD4lJCdlYWFhoR5rldDCwsI0\nWA7LwsLCNFgOy8LCwjTolIelgObm5qGhodzc3Nvz8w90dv7TnXfaNm5Uec4JFPw267Zq+NctXLcj\nwnKdBsQ7NtZ87txHDQ1DJSUqTzUGZ0tWDYtivb29o6OjHo+nsrJS5VVpQU1//50XL564445rpaVq\nzjOBghZbzbqF6xULN/Ixy3V5xqGvr290dBSA89q173322f+9adPPz5zR7dc1XyWMRdYq4aZNmyh1\n65/7+z8/PT2flfVfvd7/5nbPZ2Up+/W5/NL+Hfvn8ksB2OamXf4LJZffzw34lZ3NsPzZ6Oi3b9wo\niETUK7aQZevbcSDouRUrWrHPT0//5cjI56enAagULVYxAHmTA/k3PnX3fLTyRBPN7EJ+/pbpad1+\n17gOa+vWrdPT03a7/Y7i4u90dGycmADQt2bNy1/5yrDbLfenJ1DwS9sXJlAQe7Bi4cZDCx/LPZVh\n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\n" - } - ], - "prompt_number": 3 - }, + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "%matlab b = 10*cos(t)+30; plot(b); grid on" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "display_data", - "png": "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\nSUVORK5CYII=\n" - } - ], - "prompt_number": 4 - }, + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/arokem/anaconda3/lib/python3.4/site-packages/IPython/nbformat/current.py:19: UserWarning: IPython.nbformat.current is deprecated.\n", + "\n", + "- use IPython.nbformat for read/write/validate public API\n", + "- use IPython.nbformat.vX directly to composing notebooks of a particular version\n", + "\n", + " \"\"\")\n" + ] + } + ], + "source": [ + "import pymatbridge as pymat" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "a = [1,2,3]\n" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 5 - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge\n", + "Send 'exit' command to kill the server\n", + "..........MATLAB started and connected!\n" + ] + } + ], + "source": [ + "ip = get_ipython()\n", + "pymat.load_ipython_extension(ip)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "%%matlab -i a -o b\n", - "b = a + 3;" - ], - "language": "python", + "data": { + "image/png": [ + "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\n" + ] + }, "metadata": {}, - "outputs": [], - "prompt_number": 6 - }, + "output_type": "display_data" + } + ], + "source": [ + "%%matlab --size 400,350\n", + "t = linspace(0,6*pi,100);\n", + "plot(sin(t))\n", + "grid on\n", + "hold on\n", + "plot(cos(t), 'r')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "print(b)" - ], - "language": "python", + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAAgAAAAGACAIAAABUQk3oAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\n", + "B3RJTUUH3wIVAhMQTWd1DwAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\n", + "bmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyMC1GZWItMjAxNSAxODoxOToxNh2KITgAACAA\n", + "SURBVHic7Z17QFTXtf/XMCAgqAhEUDTyCOMzFd9y4yuJyi+aejXGJL3+0ObeGCOJTVsfUZvEKDFR\n", + "a3JbbTX3Vi9GE1uTgk1qLFoR8miMmOsrPgBFQUBREREBhzLA/WPryWSA4cyZc/bZj/X5azwMw96z\n", + "lue7z1rfs4+lubkZEARBEPnwMXsACIIgiDmgACAIgkgKCgCCIIikoAAgCIJICgoAgiCIpKAAIAiC\n", + "SAoKAIIgiKSgACAIgkgKCgCCIIikoAAgCIJICgoAgiCIpKAAIAiCSAoKAIIgiKSgACAIgkgKCgCC\n", + "IIikoAAgCIJICgoAgiCIpKAAIAiCSIqvuX++rq7ulVdeCQsLe+ONN5yPl5WVpaenl5SUxMTEDBs2\n", + "bMiQIb6+Jg8VQRBEMEw+q6ampu7fv79Pnz7OBzMzMxcuXOhwOJQjEyZM2LBhg9VqpT5ABEEQYTGz\n", + "BPTZZ59lZGS4HLx06dKiRYuam5tTU1Nzc3P37NmTlJR04MCB119/3ZRBIgiCiIppAlBWVrZixYpR\n", + "o0a5HN+yZUtDQ8OCBQueeuqpLl26xMfHr127tkePHhkZGdevXzdlqAiCIEJijgA0NjYuXLjQ398/\n", + "NTXV5UdHjx4FgGnTpilHAgMDx40b19TUlJmZSXWUCIIgQmOOAPz+978/fvz4mjVrQkNDnY83NTVd\n", + "unSpd+/e3bt3dz6ekJAAAOfOnaM6SgRBEKExQQC+/fbb9957Lzk5ecyYMS4/Ki8vr6+vDw8Pdzke\n", + "FhYGABUVFZSGiCAIIgG0BaC6unrx4sWxsbGLFi1q+dMLFy4AQJcuXVyOd+rUCQCqqqoojBBBEEQS\n", + "aNtAX3311YqKis2bN/v7+7f8KbF++vi4ypLdbgeAjh07qvkTRZV2AIgODfB2rAiCIPrB4KmJqgBk\n", + "Zmbu27dvxowZjY2Np0+fBoC6ujoAsNvtp0+ftlgs9913HwDcvn3b5RfJ2t+lYeCM850EJYm/cASG\n", + "hRV81rn0kBGzQNTQEBhWmvgLAIg4sb3jjQKzhyMvSiB6HvpPvzs3zB6OvNSF2UoTf+FXd+Ofm2ea\n", + "PZbvoSoAJSUlAJCenp6enu58vLi4+IknnrBarTk5OcrbnCHV/6ioqHb/RENgmCMwrKFjWHnC7IaO\n", + "oWEFn+k1eEQ9N2xTbtgeJ6+vDprdufQQBsIUnANRmvgLDIRZOAcip/Dm+Liu5o5HgaoAPPTQQ8HB\n", + "wc5HHA7Hm2++GRERMX/+fIvF0q1bt9jY2AsXLpSUlPTq1Ut5W3Z2NgCMHTvW/eevWbNmxIgRDYFh\n", + "7x+58sb+izdsj1f3TMxOGcLUNZf3bNy4cffu3SNGjFizZo3ZY3GlqNL+6pe3CgqrACA6NGB8XNdt\n", + "R8CbQJSVlSUnJwPAwYMH9R8ueyQnJ5eVlZFM9uZznAMxPi4EAHIKvQqEEWRkZPzud79jM5P1wjkQ\n", + "gTcKeh36z/HSXgH079+/f//+zkcaGhrefPPNkJCQn/zkJ+TI1KlTf/Ob37z99tubNm0iR86cOXPo\n", + "0KGePXsOGjTI/edHRUWRq4QVSTEA8Mb+iw0dw/7/p1ez57OS8TqiTJYpRm/7mhQ635gUQ6IQ3TVA\n", + "CcTFX/2Lpx9YVlYGrE7WOLyfb8937+olCURRpZ2sijQHwjjEDq5zIHb+bL65g2kJc7uBzpo1y2az\n", + "ZWVlpaSk/OUvf9m0adOcOXP8/Pw2bNjQsjnshhVJMRd/9S/RoQFFlfaV+y8aN2BEYduRK+Tsn50y\n", + "mJz94YeBePZPZ00doCys3Hc34ZVARIcGkEAAQFGlfduRK2aOTxpIwkeHBlz81b88N7CD2cNpBea2\n", + "2OzcuXNaWtrcuXOzsrKysrIAIDIyctWqVQMGDPD0o6JDA1ZMinn2T2dzCm8aMFLTWLRo0QsvvOBS\n", + "TGMBIrRvTIpxKXGKGggj2L59u8PhiIyM9OZDtn17BQDSnunXMhBpz/R79k9nV+6/+NPh3dv4bXok\n", + "Jyf/+Mc/ZjCT9YII7YpJMdGhAWVlZo+mNUwWAD8/v/z8fJeD4eHhu3fvvnr16vHjx2NjY+Pj4zV/\n", + "/vi4ruPjQnIKq57909m0Z/p5N1jEHcryf05rZxZyJiJrT49OPREREdu3bxe4RKA7SiBa/Z41BwLx\n", + "FOU6jOXvmbkSkEJERERSUpI3Z38AiA4NIOcjXHsaDVn+/3R491bbLWTtqbxNPREREREREbqMUBKU\n", + "67BWfxodGkDOR1gXNZo39l8EAMbXnewKgF6Mj+tKCtBY9zQOZdW5oo3zDvxw7UlvZJLxfSCS2gwE\n", + "iVFRpR1XRcahJDnLy3+QQQBIARpwyWMk7x+5Am0v/wm49qSAch3m5j1KILAnbxzur8PYQXwBAFx7\n", + "GkxO4c2cwipwu/wn4NrTUNRchxEwEIai5jqMEaQQgOjQgDfwIsAwSLPL/fKfgGtPQ1FzHUaIDg0g\n", + "d4cpjUpER9RchzGCFAIA96wpuOQxArL8nzNclXMR157GofI6jJD2TH/yKxgIfVF/HcYCsgiAsuT5\n", + "/DzuKa0nSlVN5fYmGAiD2KZ6+U9QAkHOVohefF5YBZ4EwlxkEQC4d4Yi98ggeqGku/pfIYHAhae+\n", + "vO95f4sEQsMvIm4giT0uLsTsgahCIgHAKpARkIWnR+k+7oEQACi6iQtPPfGoEEfAQBgBuaJiZ79P\n", + "90gkAHjNqzvazM6KKQuVWC88LcQRorsGAgZCV5RAcFH/AakEAPCaV2801H8IaEHRF22BwH6M7mj+\n", + "H2EWcgkAXvPqi+ZyJ/FHYyD0QnMgSF0UG2N6oaEiai5yCQBe8+qL5nInBkJHFN+hhkBgOU5HeNn+\n", + "wRnJBACvefXDm3InBkJ3tPkOMRA6wl39B2QTAMBrXv3wMt3RDKoX5L5TzWUHDIRe8GUAJUgnAHjN\n", + "qxfkCsAj36Ez97bpxoWnt3jpO8TGmF7wZQAlSCcAeM2rC9p8h84ogUAl9gbvfYfYj9EF7gygBOkE\n", + "APCaVw90KXdGhwYCmkG9w/tAKEr8/pFy3YYlHzw2AEBOAcBrXu/RpdxJykcYCG/QJRDElYtLIm/w\n", + "siJqFjIKAF7zeo8u5U4MhJcUVdrdPP5XPUog8CZ5bXhfETULKQUA2wDeoVe5Ezfn8BIinN4XnaND\n", + "A8iHFN28o8OwZIW7+g/IKQCAbQDv0LHcSdoAuDmHNkggdFl1RncNAFwSaeVzbs1skgoAtgG8QUe/\n", + "M/kQDIQ2dAwELom8gcc7AAiSCgAWPb2BfGm62N2U2zK8/ygJ0dF4jksib+DxDgCCrAKARU+tKItE\n", + "fSoP91QE156eoq/xHBvymuH0DgCCpAIAWPTUyr3Fjm5Xu9iQ9wa9Go/ojNAMp3cAEOQVACx6aoOk\n", + "O2ne6gIGQhu6Nx4xENooqrwDfDYAQGYBwKKnNnTvd2EgtIGBYASu97OSVwCw6KkN3ftd2JDXhnGB\n", + "0OsDZUA5e2AJiDOw6KkBI/pd2JDXgEGBIC9wSaQe3VtilJFXAOBeIRvTXT3Femw80BJsyHuKQY1H\n", + "XBJ5iu4tMcpILQC4GZmnkO+KnK91BNuPnmLQnUcYCE/h9xYwgtQCgEVPTyHp3ltvvzO2Hz3FoDuP\n", + "MBCewu8tYAS5BQCLnh5iULpjQ94jlG9J9zuPMBAewfUtYASpBQCw6OkJxqU7NuQ9wrjGoxIIRD2c\n", + "+n8IKABY9FSLoXc8YiDUQ6HxiEqsBn43AVWQXQCw6KkeQ/tdGAj1GBoIVGL18N4BBhQAvAtJPYb2\n", + "u7Ahrx5DA4FKrB7eO8CAAoB3IalEOTUb1O/ChrxKjOsA3/1Y7AOrQ4AOMKAAAN6FpA4KpwN8PKQa\n", + "jL71VFkSIWrgugMMKACARU91GHQPsDOkq1mMAuAWCh1gXBKpQYAOMKAAABY91WHQPcDOkA9HJXYP\n", + "hc2HcUmkBgE6wIACgKjEoHuAnUElVgOF7wcDoQYBOsCAAgDY9VIHhXRHR5YaaAbCuD/BO0Z7IqiB\n", + "AoB3P7aP0c4T5cPRkeUeys4TXBK1hTDfDArA92DXqy2obXqO7Uc1GO08UZZEeBHQFhQ8EXRAAQDA\n", + "rld7UNv0HAPhHsrOE3RktQUFTwQdUAAAsOvVHtQee937bgkIA9E61JwnqMTuoeCJoAMKAAB2vdqD\n", + "2hmZ95aa0VBznuCSyD1iWIAABYCA+xC4h1q6oyPLDTSdJ+jIcgMdTwQdUADugl2vtqDpPEFHlhto\n", + "iqISa3RktYT3B8E7gwJwF9yHwD2UDQ9oBGoJZecJPqKnLXh/ELwzKAB3wX0I2oKy8wTbj21B2XmC\n", + "gWgLap4ICqAA3AW7Xm1Bec8TDERbUHaeoCOrLUT6TlAA7oJdr7agbHhAR1Zb0A4E/x1OgxDGAgQo\n", + "AAq4D0Gr0N/zBB1ZrULfeYKOrFYR4zkwCigA34P7ELTElP/86MhqCX3nCT4Zxg0CbAJBQAH4Hux6\n", + "tcSUPU/QkdUSU5wnuCRqiRjPgVFAAfgebD+2xJQ9T9CR1RJTnCe4JGqJGM+BUUABQNxhyp4nqMQt\n", + "MeXbwEC0RKQOMKAAOINdr5aYku7oyGqJuYGg+UdZRpjnwCigAHwPdr1cMCvdcR8CF0zffAaXRATx\n", + "vgdf+n+yubn5H//4x8mTJwsKCsLCwuLj46dNmxYQ8H1mHzx4sKSkxOW3fH19Z82aZfTYorsGFFXa\n", + "Pz9fJcwlnjeQdDflpDM+LiSnsKqo0j4qSoQb7r3ErM1nyJIIrwBcEMYCBPQFoLm5+bXXXvv444+d\n", + "D27cuHHbtm3x8fHKP8+cOePyi4GBgRQEYHxc15zCKix6EorNLneiEYhg4uYzuCRyRjALENAXgK1b\n", + "t3788cf9+vVbuXKlzWY7derU1q1bs7OzFy1a9Mknn5D3FBcXJyQkzJ49+wcD9aU3VOK4QEwUQqLE\n", + "OYU3XxknzmrLS0x5/pQSiBUQQ/+vs4ZIuwARaAvAF198YbFYtmzZEh4eDgDDhw+PiYl5+OGH8/Ly\n", + "qqqqQkJCbty4UVtbO3z48ClTplAeGxDbw360PdzFRMcbBsIZE58/JcBDr3REvISk2gR2OBwnT56M\n", + "iYkhZ39CeHi4zWazWCwOhwMALl26BAAxMeYsN9B/0hJTegDoP3HGROthNG4J54RgHlCgfAVgsVj+\n", + "+te/Bgb+oJRZWlqan58/ePBgogrFxcUA0Lt376NHj+bn5/v4+PTp0ychIYHOCJ39J+gIIulOzsVm\n", + "kVN4s2+QiX/ffMy1HjoviST/H2G6F8sIqAqA1Wrt1asXeX327NlTp04VFBTs3bvX399//vz55DgR\n", + "gGXLlpFLAcLIkSNXr16t/K6hKP4TiKPw19jF3E2v0H+iYK71EJdECiI9CEzBBBsoITs7+7e//S15\n", + "PXr06B/96EfkNRGA5ubmFStW9O/f/+rVq//zP/9z+PDhefPmZWRkOLtFDQX9JwQT0534T3LOV/Ud\n", + "JLUT1JTtmJzBJRGBBEKMB4EpmHYj2JNPPrlt27aXX345MTHxq6++mjJlyuXLlwFgzJgx8+bN27Vr\n", + "17/9278lJCQkJSXt3Llz0KBBhYWFH374IYWB4f4nBNOfe0cC8bn0gTC9/o578xFM2RfLaEy7AujW\n", + "rVu3bt0SExNTUlKWL1+enp6elZWVnJw8ffp0l3dardbk5OQTJ06cOHHC/Wdu3LiRvFi0aFFERIS2\n", + "gQ0IcQBA0U17eXm5tk8wmsrKytra2rq6OtI2Nwi73Q4AYX4Os76H2zU1AOBobLx+/bqvry9NH7CJ\n", + "XLt2rbGx0WKx+Pv7kyMH8q8DwKAwMCsQYX4OMox5el+K3bp1q7q62uhM1gsSiC4+Hp8ZFi9eDABl\n", + "ZWWGDMs7qP6nOnr06JdffpmYmDhixAjn4xMnTkxPT//666+Tk5Nb/cWuXbsCQG1trfvPz83NJS/s\n", + "djs5f2mA5KLD4dD8CUZjt9vr6+utVquhI/yq+DYARHYEs76HYZG+AFBa7aivr2c5HPpSX1/f2Nho\n", + "t9ubm5udj5v4DZBAFN3U/n+qLerr6ylksl6UVjsAYFiEn0ejvXr1qnJeYhCqAlBeXr5p06b8/HwX\n", + "AaivrweA0NDQc+fOpaamPvjgg0QzFQ4ePAgAcXHt1CCnT58+cuRIABgwYIDmQSZ0cABcKa12nLpl\n", + "ZdPvRZaHwcHBYWFhxv2V0uoLAPD/BnQPN6n1RwJRXtdc59upd9cAZ+uwwBC1CwsLU9pdjASitNqh\n", + "ewj8/PysVqvRmawL5OwPAAmxkR79YmNj45o1a8jrpUuX6jwsr6EqAIMGDbJarbm5uRUVFUoyNTY2\n", + "bt++HQCGDBly//33Hzt27Pjx47NmzerRowd5Q21t7b59+wDgsccec//5TzzxhIu0aKBvMBD/SXBw\n", + "cHBwsJefZgRkeRgUFGTc8BT7zcD7TTvt9r03ucrGDv2NnCxTBAUFORyO4OBgIgBKL8rEQAT8824y\n", + "fHu1Qd8lkcPhaGhoMDST9eKbs3dNcZ4ONTg4mKxc2SwBUW0CR0VFPf3007dv3545c+Z//dd/7d27\n", + "d8WKFaNHj/7f//3fIUOGTJ8+3d/ff968efX19TNnzvzv//7vgwcPfvjhhzNmzKioqJg6dergwYPp\n", + "jBMfhGTiNnDOEA+SsviSEBash7hLroJI28ARaDfWli1bFhgYmJaW9u6775IjPj4+Tz/99C9/+Usf\n", + "Hx8AePHFF318fLZu3frOO++QN1it1p/97GcvvPACtUHilnCmbwPnjMwCYLoXi4Bbwom3DRyBtgB0\n", + "6NBhyZIlzz333Pnz58vLyyMjI2NjY51rixaLJSUlZc6cOXl5eRUVFffff39MTAw1+78zMm8Jx4j4\n", + "ESU+XCZvIAimWw9xSzjBngSpYI61LjQ01H2xPigoaOjQodTG4wLuRMZIupNAlN6W9wrAxG3gnDF9\n", + "AIhB4BPBWgG3hCOYXvklgZC5BMTI7mO4JRwjgdAdFIBWwEcSsrANnDPfSFkFYucJtJIviYTcBo6A\n", + "AtA6xHchZ7qbuw2cM5L7T9jZj0TyJRELXiyDQAFwh8z7nzCS7qT/+U2pjIEwfRs4Z0g+yOmNZsSL\n", + "ZQQoAK0j85ZwTKU7CYScRiCmau6M5IOJmO7FMgIUgNYZ90AIMPY/kDJCpjtfMOLFIpB8kHNJxIgX\n", + "ywhQAFqHnf4nfZhKd6LEMjtBGemCyLwkEtUCBCgA7pHT9sBUuvfs5AdyB4KRtYi0T2lmx4tlBCgA\n", + "raP4T2SzPbCW7j07371XUbZAMGs9lK0KJPZ8UQDaRM4t4RhM91FRASDf2vPu8p+Zs7/kllxGTHG6\n", + "gwLQJjLbHhhMd9ksuUztx0eQc0nElClOd1AA2kRO2wOD6T4yKhDkCwSD7VamsoIyopriUADaRGbb\n", + "A1PprrQBpIIpDyhBziURU6Y43UEBQH4Ag+lOBEBOJWYKOZdETJnidAcFoE3k3ACLwXRXnKBmD4Qq\n", + "DAZCQieo8JNFAWgTCZ2grHlACUoJSJ7iA7MeUILwp0UFxgPhPSgA7pDN9sDsGZY4QeWBNQ8oQcIl\n", + "EYFBU5xeoAC4Q07bA7PpLo8SM1j/Ici2JGLQFKcvKADukM32wGy6y+YELWa10cpgblCAKVOcvqAA\n", + "uENO24PA6c4LRZV3gDEPKEG2JRGDpjh9QQFAvofZdB/VU65n0jK7+6lsSyJma3F6gQLgDtmcoMym\n", + "u2xO0NJqBzAZCEQwUADcIdWjUFk+vSqBkKH48M29x5+x5gICyZZE7Dwc2zhQANpBnqfDM255Ztab\n", + "pDtk+c9mFCR0goqdeCgAqpBnK0rG010GAyLj9R95nKDMmuJ0BAWgHeR5Ojzj6U4CIUP7sYzVDjCB\n", + "2QwxCLFNcSgA7SCb7YHxdCf+SLEprW4AJj2gBHmcoMya4nQEBQC5C+PpLo8SM+sBJcgTCGZNcTqC\n", + "AtAO8tgeGE93ebaiZLwHgIgECkA7SOUE5QKxiw8se0AJkiyJGDfF6QUKQPvI4ARl3/IsyUPJWfaA\n", + "EiRZEt27IGa0E6MXKABqkcEJyni6y2NAZLz+I8OSqPjujtyCW55QANpHBico4x5QggxO0MNl3MxO\n", + "7CURSTPGTXHegwLQPr1DZdmJjIt0F9sJyrgHlCDDkohxU5xeoAC0D8sFWb3gIt1lMCAy7gElyBAI\n", + "Nh/KpjsoAO0jg+2Bi3SXwQlKZje6dyezB4IA3Es5gUEBaB9JbA/AT7qLWnxQtK1nZ19zR+Ie4ZdE\n", + "knhAAQVAJWLbHnhJd+GdoLwIm/BLIi4uiHUBBcADRLU9cJTuMjhBR0VxEAixl0TFbN8VryMoAKoQ\n", + "24DIUbozblT1EmLG7dnZz+yBqEXYJZGg/9NbggLgAaIaEDlKdxm2oozqxHQDgCC2E5T8T2fcjKsL\n", + "KACqENv3xlG6ix0Icj5lvAMsA6ImWEtQAFQhtgFRnnRnHJJgo6I4KHOJrcSM74yrIygAniHkNS9H\n", + "6S68AZEXBF4SKZPiwhbhJSgAqhDYgMhXugtsQFTWFnyVgMRbEok3IzegAKhFVAMid+kuqgHxXv2H\n", + "AxkGoZdEBMZ3xtULFAC1iG1A5C7dxTMgkhlx5AEVdUnExc64eoECoBZRDYjcpbuoBkTuGqoc5YwG\n", + "uNgZ13tQANQitu1BknRnGSJpIzkpAYG4SyIudsbVCxQA2eEu3cVWYo4QNRAcmeK8BwVALaIaELlL\n", + "d1ENiBzdBIAIAwqAWgQ2IHKKSMUHvsy4BCGXRLzsjKsXKAAeIJ4Bkcd0F9KASALB17yEXBLduyDm\n", + "zBSnGRQAjxHJgMhpuotqQOSoEEcQb0lUfHdrdFkKcSgAHiCeAZHTdOduwO1CzLicItSSSLietntQ\n", + "ADyAI6uMSjhNd1ENiNyZccVbEpG5cLEzri6gAHgAKXpyetJsFU7TXTwDIndmXAJ3A0ZcQAHwAFEN\n", + "iHz1HoWEOzMuQbwlEaeB0AwKgAcoJ0phrnnvPg24K2cldSENiDwi2JKIR1Ocl6AAeIZImcFvugtm\n", + "QNx25Ap5wW8gxFgS3V0P8RYFb0AB8AyRDIhcp7t4BkTuzLgETvPHDfLUfwDAhEdPNDc3/+Mf/zh5\n", + "8mRBQUFYWFh8fPy0adMCAn6QRmVlZenp6SUlJTExMcOGDRsyZIivLxNPyYgODYTCKpGKnlynuxgG\n", + "RE7NuITorgFFlfbPz1dxnUgErs242qB9Vm1ubn7ttdc+/vhj54MbN27ctm1bfHw8+WdmZubChQsd\n", + "DofyhgkTJmzYsMFqtVIda2uQKwDyFHXe4Trdx8d1zSmsyim8uQJizB6Lt5D1BHceUIJ4SyJOA6EN\n", + "2iWgrVu3fvzxx/369fvoo4+OHz/+wQcfPPzwwxUVFYsWLSJvuHTp0qJFi5qbm1NTU3Nzc/fs2ZOU\n", + "lHTgwIHXX3+d8lBbRSQDIpEx7jygBJEMiJx6QAkiLYm4DoQ2aAvAF198YbFYtmzZMmjQoMDAwOHD\n", + "h7/55psdOnTIy8urqqoCgC1btjQ0NCxYsOCpp57q0qVLfHz82rVre/TokZGRcf36dcqjbQl3hhk3\n", + "cC1j4hkQOS2mi7UkkssDCpQFwOFwnDx5MiYmJjw8XDkYHh5us9ksFgup+Rw9ehQApk2bprwhMDBw\n", + "3LhxTU1NmZmZNEfrBjEMiFynu0gGRE7NuARhAiHAFDRAVQAsFstf//rXHTt2OB8sLS3Nz88fPHhw\n", + "eHh4U1PTpUuXevfu3b17d+f3JCQkAMC5c+dojrZVlK0oeTcg8p7uwhgQ+TXjusB7RgkTCI+g2gS2\n", + "Wq29evUir8+ePXvq1KmCgoK9e/f6+/vPnz8fAMrLy+vr652vDwhhYWEAUFFRQXO0bUFsD0WVdogz\n", + "eyheIEC6R4cG8H7SAc7NuHBvSVRUaS+6eYffWShwasbVjGneyuzs7N/+9rfk9ejRo3/0ox8BwIUL\n", + "FwCgS5cuLm/u1KkTAJAmASOIYUDkOt3FMCAW81yII4ixJOLajKsZ024Ee/LJJ7dt2/byyy8nJiZ+\n", + "9dVXU6ZMuXz5MmkD+Pi4jsputwNAx44dTRhoC8TYAVGAdCeD5739yPv4FXhfEnFtxtWMaVcA3bp1\n", + "69atW2JiYkpKyvLly9PT07OysoYMGQIAt2/fdnkzWfuHhoa6/8yMjIyMjAzyOjk5OSIiwoCBQ1gH\n", + "BwA4HA6zSlI3btyora2tr6/35kPyrlQBQEQgK4W1trDb7ZWVlb6+vi63CgJAmJ8DAM5fu834FNyT\n", + "d/kmAAyN8CWzqKysdDgcfn5+/v7+Zg9NLUMj/HIK4UD+9ReHdvLoF2/dunXr1i0vM1kvDuRfB4Cw\n", + "Djr/v16/fj15UVZWpuPH6gVVATh69OiXX36ZmJg4YsQI5+MTJ05MT0//+uuvk5KSAKCkpMTlF0lI\n", + "oqKi3H/+7t27ldfTp08PCgrSZ9w/JLyDAwCKbtpramqM+Px2qa2traurAwBvzhFfFd8GgPAODrNm\n", + "oZL6+vq6ujqr1dpynMMifcHUQOhC6W0HANjtd2dRW1vb2NhYU1PT0NBg9tDUEtkRAMDh8DiXdMlk\n", + "fdH3f8TVq1edT0oMQlUAysvLN23alJ+f7yIAZAkQGhrarVu32NjYCxculJSUKO1iAMjOzgaAsWPH\n", + "uv/8ESNGKCIRHBwcHBys8wQAAKBv9wCAK6XVDoM+v13I1xUUFOT9AB7oZtS3pBd+fn61tbW+vr4t\n", + "x2l6IHShtNoBABP63Bcc7AsAQUFBDocjKCio5RUPs/TtYQW4Xnrb40A0NjaSybIQQRKIvt27kkDo\n", + "Qm1t7fTp05V/MigGVAVg0KBBVqs1Nze3oqJCsfo0NjZu374dAEj9Z+rUqb/5zW/efvvtTZs2kTec\n", + "OXPm0KFDPXv2HDRokPvPX7BggYu0GEF4OACcAYBTt6xm9e78/f2Dg4Nb2qXUQ9I9IaZ7ONvODbvd\n", + "3tDQ4Ovr23KyNT72ey+COfWfKC6mkJAQEgi73e5wOMLDwzkSgIE+doBzpdUOTxPS19fXarV6mcm6\n", + "oLT0EmIjdfzY8PDwNWvWkNdlZWWyC0BUVNTTTz+9c+fOmTNnPvPMM7169Tp8A5QDUAAAIABJREFU\n", + "+PD+/fsrKyuHDBlCpHLWrFl79+7NyspKSUmZNGnS5cuX09LS/Pz8NmzY0LI5bBa8GxAF8ICCEAZE\n", + "YQJBXuQU3uTUzsS7GVcztJvAy5YtCwwMTEtLe/fdd8kRHx+fp59++pe//CU5v3fu3DktLW3u3LlZ\n", + "WVlZWVkAEBkZuWrVqgEDBlAeqht4NyAKk+5iGBC5NuMSxseF5PC8t6AAZlxt0BaADh06LFmy5Lnn\n", + "njt//nx5eXlkZGRsbKzLBWB4ePju3buvXr16/Pjx2NhYZZdQduB9B0TB0p1fA6IAZlxnOF4Scft/\n", + "2UvMsYGGhoa2W6yPiIggpiAG4X0HRGHSnfdNoYXxnpNA8JtXXO+M6w2sVNX5gvcdEIVJd9537hVs\n", + "/2FcEnEHCoAWeN8BUZh0F2NTaAGaMfwviYQqiqoHBcArONUAYdKdeyXmeSNoZ7gOBKfD1gUUAC1w\n", + "vSm0ku4CLDy53hRaDA+oCzyeTIUMhEpQADRyrw/McbqLAb8eSmHMuMD5kojAbyJ5AwqAV/BrQBQs\n", + "3T8/z58JXTAzLr9LIsHMuB6BAqARfjeFFizdSSB4bD/yOOZ24XFJJIwZVwMoABrh17onZLrzaEAU\n", + "xoxL4HdJJJgZ1yNQADTCrwFRsHTn14DI45jd0Jvb/xEEMZoxnoICoBGufW8gULrzGwhhzLgEfjNK\n", + "GDOuBlAANMKvAVHUdOdLA/garRoUJeZrajJ7QAEFwBt4NNKIl+6cGhCFDAR5wVcgRDLjagAFwFv4\n", + "MiAKme78GhB5XEO4gcfpCGbG9RQUAO3waEAUON35MiAKZsZ1hrMlEVf/f3UHBcBb+DIgCpnuPBoQ\n", + "hTTj8rgkEsyM6ykoANrh0YAoZLrzaEAUzIzrDC6JOAIFQDs8GhCFTHd+Wxr8jrxV+FwSCVsUVQMK\n", + "gA5wVHwQMt15NCAKacblbkkk0s642kAB0I5iQOQFUdOdOwOieB5QF3hZEvEyTuNAAfAK0sTjxfYg\n", + "cLoTAyIva08hzbjA4ZKIwKN7VS9QALyCRxufwOnOixNUYDMuX0uizwurgM//xXqBAuAVJN15WVkL\n", + "nO58OUH5apN6BI/ZJZgZ1yNQALyCR9uDzOnOCEKacQl8LYkENuOqBAVAIgROd76UmJdxaoCzQIhb\n", + "i1MJCoBX8GVAFDjd+TIgChwIhC9QALyCOwOi8LBffBDVjEvgaEkkvBlXDSgA3sKLAVHsdOfIgMi+\n", + "RHkDR0uie9dhAnZi1IMCoA/sGxCFT3e+DIg/Hd7d7CEYBS9LIoE3ZFUPCoC38GJAFD7dydTYbz8S\n", + "M67wcLAkYj5VKIAC4C28mGqE3H/YmXuPhWG98kAQOBC8LInICIU046oHBcBbojnZi1hgDyiBFwOi\n", + "8IHga2q8tI4MAgXAW/gyIAqc7rwEQngPKC9LIiE3ZPUUFABvUU6pjF/zypPuLGsAy2PTCy6coGKb\n", + "4tSDAqAD7FtrZEh3xQnKsgFRkkCQFywHQtQNWT0FBUA3WDYgSpLuvDhB2V8xeAn7ExR4Q1aPQAHQ\n", + "AfafhS1JurNvchV4Q9aWsKzELP9vpQkKgG6wbECUJN152YpSYA8ogf0lkcAbsnoECoAOsG9AlCTd\n", + "2Q+E8B5QZ3BJxD4oADrAvgER050RJGnGsK/EwptxVYICoCfMFh8kSXcuDIgggRmX8SWR2BuyegQK\n", + "gA4wvhWlPOnOuAFRBg+oC2wuidgclSmgAOgDywZEqdKd5a0ohd+QVYHxJRFBhkC0CwqAPrBv7BN4\n", + "/+GWsLkVpfAbsjrD8pJIKjOue1AA9IFlA6Ik+w8TWN6KkuWmqO6wf3oV3oyrBhQAfWDf9iBJurPs\n", + "sJRq/2GWl0RSmXHdgwKgDyz7OqRKd/a3omS/OK4LLC+JJDHFqQEFQE+KKu0MLnmkSneWnaDybMgK\n", + "DDtB5THFqQEFQB+YtT3Ilu7MOkEl9IASWFsSsTYec0EB0A02bQ8SpjubTlBJ7gFWYHZJREAPKAEF\n", + "QDdYtj1I5QElsOYElWRDVmfYXBKhB9QZFADdYNP2IJUHlMCmE5S0QyXxYhFY3hNUEi9Wu6AA6Aab\n", + "tgdJ9gF1pjeTRiCpvFjOsLYnKGsrA3NBAdANNm0PrJ0HKcBm6Vm2HgCwuySSrhbnBhQA/WFqiSFh\n", + "urPsBJXEA0pgcEkkmymuXVAAdINB24Oc1kMGnaDbjlwhL6QKhAI7SyJ2RsIIKAB6wprtQcKyA4FN\n", + "J6hs1sPo0AA2pyyhKa4tUAD0hDXbg4TWQ2fYcYJKbj1kZ0kkoSnOPSgA+sOO7YEdKaIMm05QqTyg\n", + "BNYCIaEpzj0oAHrCmu1Bqu0nnWEzEBJ6QFmDnZRgBBQAPWHQ9oCwgIReLAJrSixtINoCBUBPlHYr\n", + "I9e80qY7U05QFsZgFkwtieQ0xbkHBUBn2LE9yJzuiiWXBSeo5IEgL1hYEklrinODryl/NS8vLzc3\n", + "97vvvmtqaoqNjZ00aVJ8fLzy04MHD5aUlLj8iq+v76xZs+gOUzufn68yfd0tebpHdw0oqrSzEAgC\n", + "OysDyoyPC8kprCqqtEOcySOR3BTXKiYIwKeffrp06dLGxkaLxdLc3AwAmzdvXrZsmXJ+37hx45kz\n", + "Z1x+KzAwkAsBGB/XNaewKqfw5gqIMXckkqd7dGggsOH5k9wDSmDBkstOK4IdaAvAkSNHXnnllYCA\n", + "gDVr1iQmJl6/fv0vf/nL1q1bV69ePXTo0L59+wJAcXFxQkLC7NmzfzBQX3MuVjyFHaeH5OmubM5q\n", + "uhITJPSAEthZEklrinMD7bPql19+2dTUtGrVqqSkJADo3LnzwoULCwoKcnJy/vjHP65cufLGjRu1\n", + "tbXDhw+fMmUK5bHpAjvPpJU83cc9EAL7GQoEOysDyrA2cWmLoq1Cuwl87NgxABg1apTzwalTpwJA\n", + "YWEhAFy6dAkAYmKYWLVpgCn/CUic7uz4T6T1YhHYWRJJ9UxmldC+AkhMTBw5cuR9993nfLC2thYA\n", + "IiIiAKC4uBgAevfuffTo0fz8fB8fnz59+iQkJFAep2acdyIz9+SL6U7IKbxp4skXt590XhKZ+CXI\n", + "7MVyA20BSElJcTlSUVGxefNmAHj00UfhngAsW7aMXAoQRo4cuXr16l69elEcqXZYsD1guhMnqOlX\n", + "ACzYH82FkSWR5Ka4tjD5PoDs7OypU6devnx58uTJkydPhnsC0NzcvGLFil27dm3YsCEhIeHw4cPz\n", + "5s2z282/ilSPubaHe2UHSRsABHY2Z5V8+0kWNmeV3BTXFqZZay5fvrxu3bq//e1vfn5+L7744ksv\n", + "vUSOjxkzpmfPnnPmzAkLCyNHJkyY8JOf/OTEiRMffvjhf/zHf7j5zMOHD5eVlQHAxIkTjR6/G0ZG\n", + "BRLbw8Ka+9p/t+fU1tbW1tZaLJaAgDaXM3mXqwCgZ2e/mpoaI8ZADbvdXltb6+vrq2EiPTv7AcD5\n", + "6zUmfglZ+RUA4HA4VI6htraWvNnhcBg8NHqQuZy/5hqImpqadjNZL85frwGAqE5aEslL/v73vwNA\n", + "aWkp5b+rBnMEYOfOnWvXrrXb7WPGjFm+fHlsbKzyo+nTp7u82Wq1Jicnnzhx4sSJE+4/9ne/+x15\n", + "0aNHD9JRMIXwDg4AOH+9pqKiwojPr6ysrKurq6+vJ3dRtErh9RoACPNzGDQGatTX19+8edNqtfr7\n", + "+3v6u2F+5Lxz28Qv4fy12wAwKAxUjqGysrKxsdHX11fDfJllaITfV8WQlX/9uQF+zserq6urq6vd\n", + "Z7JekFpciI+dcjJcvXp16dKlNP+iR5ggAMuXL09PT4+MjFy1atW4cePU/ErXrl3hXq/YDVFRUVFR\n", + "UQAQEBBAYU3RFg90awa4ToZhxOcHBAQ0Nja6n+M3ZXcAIDrUzO9BFywWi7+/v9Vq1TCR8Q+E/Db3\n", + "Zulth4lfQultBwD4+vqqHIO/v39jY6O/vz/vgXOmrUDU19eTmVKYbGm1AwDGx3UNCKB60gsICBgx\n", + "YgR5nZubS/NPq4G2APz5z39OT0+Pi4vbtWtXp06dXH567ty51NTUBx98cPHixc7HDx48CABxce00\n", + "VdesWaN81yaS0MEOcLG02pFX629EzZHUQ4KDg8PDw9t6T2n1GQCYNjQmkvOul91ub25u9vX1jYyM\n", + "9PR3lUDYO4SY1f3zNBAOh8PhcERGRookAEogXIIYEBDg7+/vPpN1QWk/hIeHU/4fERkZuWPHDgAo\n", + "Kyt75JFHaP5pNdBuAn/yySc+Pj5vvfVWy7M/ANx///3Hjh3bsWPH5cuXlYO1tbX79u0DgMcee4ze\n", + "QL3A9IcDo/WQYPrDgdGL5YJZnigMRFtQvQJoaGg4efJkYGDgu+++2/KnAwcOXLJkybx58zZu3Dhz\n", + "5sw5c+Y88MADV65c2bFjR0VFxdSpUwcPHkxztN5g7k5kJN0x18FsSy56sQjk4cA5Zm/NJLkXq1Wo\n", + "CsCpU6eIlfPw4cMtf+rj4wMAL774oo+Pz9atW9955x1y3Gq1/uxnP3vhhRdoDtVLzN3/BB1vCmRL\n", + "OLMsubgNnAtmLYnwUcBtQVUABg8enJ+f7/49FoslJSVlzpw5eXl5FRUV999/f0xMDHf1UHP3P2Hh\n", + "tntGYGFLOGm3gXPG3CWR5PtiuYHRLTaDgoKGDh1q9ii0Y+7+J5juCuZuCSf5NnDOmBsIvA24LfCJ\n", + "YIZg7pZwku8+5oy5W8JhIJgC98VqCQqAIZj4SEK0ADlj4iMJ0XnijKLE9AOx7ciVu2PAQLQABcAo\n", + "zNqIBncfc8GsjWjQAuSM6d5otAC1CgqAUZALf/pFT+J4wXR3gb4RCC1ALpi1JEILkBtQAIylqJJ6\n", + "CQgtQD+EKLFZF0ZoAVIwKxDoiXADCoBRjHsgBMw4HWO6u2BuINACpNDbVGscNgBaBQXAKMwyAqHz\n", + "xAWzjEAYCBfMOgXjo/HcgAJgFKZsRGP6A7BYhmbxAS1ALTHFCIQWIPegABgIcYDQ7HrheaclZCMa\n", + "oKuOeOdRS0w0AqEXqy1QAAyEOEDoFz3RAtQqNI1AuB1Tq9A3AqEXyz0oAAZC0p2mEQgdb61C339C\n", + "VB8tQC6YEIjKO4CeiLZBATAQ+v4TtAC1ilmBQAuQC/S/EHRFuwcFwEDoG4Gw9Nwq9I1AaAFqFfqb\n", + "JGIg3IMCYCBmPZEKHW9tQaf4gK34tqC8JEILULugABgLTSMQpntbKEYgOuB1WFuYskkiWoDcgAJg\n", + "LPTtB2gBcgMdJUYLkBtoGoHQAtQuKADGojyRisLfQguQG2j6T9AC5AaqgUALUHugACAIgkgKCoCx\n", + "0DQgogfUDfQDgR5QN9AJBHpA2wUFwFho2h7Q8eYGmk5QDIQbiBLTAQPRLigAxkLN9oDWQ/dQezYk\n", + "erHcQ21LOAyEGlAADIeO7QGth+1C05KLXqy2oLY3Hz4aTw0oAIZDx/ZALEB4tesGmoFA2sXovfnQ\n", + "i6UGFADDodN+xA5wu2AgGIGOEmMrXg0oAIZDpw+Mj4JpFzp9YGw8tgsdJcZAqAEFwHAo7AiknNQw\n", + "3dVg3NoTW/FqoNAHxg6wSlAAaGB0+xHPO2pQ2o/GBeLeqhPrP+6gsDUTdoBVggJAA6OLnqTxiOne\n", + "LmRbGKMDgZvPqCTHOCXGW8DUgQJAAzpFTzQ8tIvRXxF2gFVClkSHy4wqimIgVIICQAOj249oeFCJ\n", + "0UqMjUeVkECU3nYY9PkYCJWgANDA6NtQMd1VYmj7ETsx6iGBKK12lFbrrwHYAVYPCgAljGs/Yrqr\n", + "x9DbUPFmbPUoW6SU3m4w6E9gS0wNKACUMK4PjIYHDRhxGyrejO0RpB/zTalRgUDUgAJACeOqz3jL\n", + "u0cYp8TYePQI4/rAGAj1oABQwrg+MHaAPcJAJcabsT3BuD4wtsTUgwJAG93XnpjuHmFQHxhvxvYU\n", + "g/rA2Ir3CBQAShh0Gyp2gD3FoNtQ8bzjKcoXpW8fGG/G9ggUAHoYdxsqdoA1oK8S483YGiCnaX37\n", + "wHgztkegANCD9Gn1rT6j4UEDRvSBiyrvALbiPYQE4h/Ft3X8TOwAewQKAD3mDO8OercKMd01YEQf\n", + "OKewCug+8FYARvbUf0mELTGPQAGgh+73A+cU3sR014DufWClE4OB8IienfzAmEBgJ0YlKABU0bcP\n", + "rPS7MN09QveGPN6Lp42enX1HRen5xGzsxHgKCgBVyApx27dXdPk07HdpRt82AN6Lp5mRUXo6I7Ai\n", + "6ikoAFTRtw2A6a4ZfdsApPKADQANjNK1DYAVUU9BAaCKvm0ATHfN6NgGwAaAN+jYBsAGgAZQAGij\n", + "V/WZpDs2ALShexsA687a0LENgA0ADaAA0Eav6vPhMrL5MDYANKJXIO52YrABoBW92gBYEdUACgBt\n", + "7rYBvC56flN2BzDdvUCvNgC5FMPN+DQzOjoY9AgEVkQ1gAJAG1Kx8b7oSbbQwnTXjC5tAKXujJUH\n", + "zegbCKyIegQKgAl4X33+89m7d89jumtGxzYAnv29QZdAYANAGygAJuB99Zk0ADDdvcT7QOBeTLrg\n", + "fSCwAaANFAAT8L76jA0AXfA+EHfvAMBAeIf3gcAGgDZQAEzA+6InNgB0wctAKL+Fl2Je4mUgsAGg\n", + "GRQAE/Cy6IkNAL3wMhBFuAWQTnj5lB7ci0kzKADm4M2mQNgA0BFvqs/vH9FnTycE7gVi5b6LGn4X\n", + "GwCaQQEwB2VTIA2nHnLBO6NfsP7Dkg+l+qwhEOQZAHOGR+o/LPnwpg1AAoEVUQ2gAJiD5uKDUu4c\n", + "FYX3AOvA+Liu4+NCiirtmgOB5x1diO4aGB0aUFRp3+bhddWzfzoLuCeKVlAATINcBHhaBSJlhyf7\n", + "dTJkTFKirRy3cv9FAHhjUowhY5KP6NCAnw7rDp4X1sil2xysiGoCBcA0yHnH0yoQudrF+o+OaCjH\n", + "Kc9iw/OOjpAvM6ewSn0gth25ggZQb0ABMA2lCvT+kXKVv4L1HyPQUI4jIfvp8O5YdtARDYFQbgDG\n", + "QGgDBcBMViTFgCcWFFJ2+PWE+wwck5R4Wo5D24lBeFqOw0B4CQqAmXh0/ws+At44PCrHYdnBODwq\n", + "xymBQEu0ZnxN+at5eXm5ubnfffddU1NTbGzspEmT4uPjnd9QVlaWnp5eUlISExMzbNiwIUOG+Pqa\n", + "M1RDIde8OYVVK/ddHJ/SztnEuexQU1NDZYCyoATi/SPl7Z7WsexgHNoCQWVoYmLCWfXTTz9dunRp\n", + "Y2OjxWJpbm4GgM2bNy9btmzWrFnkDZmZmQsXLnQ4HMqvTJgwYcOGDVarlf5ojWZFUkzOpmNq7M94\n", + "tWsoJBAqF56AgTCMOcO7q+wDk0DgfRjeQLsEdOTIkVdeecXf33/Dhg25ubl79+59/vnnm5qaVq9e\n", + "nZeXBwCXLl1atGhRc3Nzampqbm7unj17kpKSDhw48Prrr1MeKh1U2p+x7GA0Kstx+AAAo1FZjsP7\n", + "MHSBtgB8+eWXTU1Nq1atSkpK6ty5c1xc3MKFC8eMGdPY2PjHP/4RALZs2dLQ0LBgwYKnnnqqS5cu\n", + "8fHxa9eu7dGjR0ZGxvXr1ymPlgKK/Zk0eNuCmKOx7GAc0aEB5JxObixqCyUQlIYlH4oXCANBAdoC\n", + "cOzYMQAYNWqU88GpU6cCQGFhIQAcPXoUAKZNm6b8NDAwcNy4cU1NTZmZmVTHSgul8dVWxq/cd1Hm\n", + "XQeuXr169epVCn9oxaQYwEAwQNoz/QGgqNLe1tZAD286SgKxAm/E8w7aApCYmLhgwYL77vuBkbG2\n", + "thYAIiIimpqaLl261Lt37+7dfyDsCQkJAHDu3DmaQ6VGdGhA2jP9AGDbkSstC0E5hTffuHfTKbna\n", + "pXZCZIGTJ0/Onj178eLFFP6WcyBa1h+UQKQ908+4soNUwW1rstGhAeQW623fth4IcvbPThmMF8Re\n", + "QlsAUlJSXnrpJecjFRUVmzdvBoBHH320vLy8vr4+PDzc5bfCwsLIO6mNkzI/Hd6dXMyu3H+R1PoV\n", + "yCJofFwIuWkAAHbs2DF79uz169fTH6fw/HR497bqD8qeM4aWHRYvXjx79uyTJ08a9yfYYf/+/W1l\n", + "8pzh3ckeTS6BKKq0P7zpGACMjwvB6r/3mHwfQHZ29tSpUy9fvjx58uTJkydfuHABALp06eLytk6d\n", + "OgFAVZXIj99bMSmGdIOf/dMZ5eCzfzpLFjvkohihQNoz/e8F4vtTz8ObjhJhzk4ZYt7QJCI6NEAp\n", + "BDkHgvzviA4NwEDogmnm+suXL69bt+5vf/ubn5/fiy++SC4LiPXTx8dVlux2OwB07NjR/WeWlZXl\n", + "5uYaM14arB3a8PTfIaewKmb11+QIOemsHdpw7fzJa/feVlZWBvxPViWHDx8mL2hOdn7M7Vcq/ZwL\n", + "QUog6AxDkuC2m8nzY29vvtBJCYRycTw/5jZ33w+ZLGvcdeJTZufOnWvXrrXb7WPGjFm+fHlsbCw5\n", + "fvr06SeeeGLkyJHbt293fn9mZubLL7/8r//6r+vWrWv1A/v06WP4oKlwwzblhu1x5yOBNwp6HfpP\n", + "s8YjLS0D0bnkUOSJ7W29HzGI8kGzq3slOh8JK9gTVvCZWePxnvz8fLOH8D0mXAEsX748PT09MjJy\n", + "1apV48aNc/4RaQ6XlJS4/Aqp/kdFRVEbpFl0Lvkm8MYPet0dbxSYNRiZwUAwQljBZ51Lv3E+goHQ\n", + "EdoC8Oc//zk9PT0uLm7Xrl2ksu9Mt27dYmNjL1y4UFJS0qtXL+V4dnY2AIwdO7atj2VKVBEEQbiA\n", + "dhP4k08+8fHxeeutt1qe/QnknoC3335bOXLmzJlDhw717Nlz0KBBlEaJIAgiAVR7AA0NDcOGDbNa\n", + "rQMHDmz504EDBy5ZsqS6unrWrFkFBQWPPvropEmTLl++nJaW9s9//nPnzp0DBgygNlQEQRDhoVoC\n", + "OnXqFPHzKNYOZ4j5p3PnzmlpaXPnzs3KysrKygIA0i3Asz+CIIi+mOMCUsPVq1ePHz8eGxvrslM0\n", + "giAIogvsCgCCIAhiKPhEMARBEEnh/jFbAj87rN3npoGg06+rq3vllVfCwsLeeOMNlx8JM987d+7s\n", + "2rXru+++s9vt0dHREyZMGDx4sMt7hJksABw9evTgwYPFxcWdOnXq06fPzJkzW97Yz/V8b968uW7d\n", + "uscff/yhhx5q+VM1UzNl+nyXgAR+dljL56b5+fk5PzcNxJ3+smXLMjIy+vTp8+mnnzofF2a+paWl\n", + "s2bNKi8vt1qtgYGBNTU1Pj4+S5YsefbZZ5X3CDNZAHjrrbe2b9/ufKrp1q3bli1bnG/g532+27dv\n", + "X7169a9+9avZs2e7/EjN1EybfjO3FBcXDxgwoF+/frt27aqqqiooKFiwYIHNZlu+fLnZQ/OW3Nzc\n", + "vn37JiQkZGZm3rp16/z58+vXr+/Xr1+/fv3Onj1L3iPq9Pfs2WOz2Ww2249//GPn48LMt7GxccqU\n", + "KTab7de//nV1dXVzc/PXX389dOjQAQMGXLp0ibxHmMk2NzdnZmbabLZHHnkkPT391q1bhw4deuml\n", + "l2w2W1JSUlNTE3kP1/OtqanJyMgYNGiQzWZ7//33XX6qZmomTp9jAXjttddsNtumTZuUI3V1dePH\n", + "j+/bt++1a9dMHJj3vPPOOzab7dNPP3U++Pzzz9tsttdff538U8jpl5aWDh06dPbs2S0FQJj5EoX7\n", + "+c9/7nxw3bp1Npvtgw8+IP8UZrLNzc0///nPbTbbzp07lSN1dXXDhg2z2WyFhYXkCL/zHT9+fJ8+\n", + "fWz3aCkAaqZm4vQ5bgIL/Oywdp+bBiJOv7GxceHChf7+/qmpqS1/Ksx89+7dCwAuhYKUlJS9e/c+\n", + "9thj5J/CTBYArl27BgC9e/dWjgQGBoaFhVkslqCgIHKE3/mOHTt25syZTz31VN++fVt9g5qpmTh9\n", + "XgVA7GeHuX9uGgg6/d///vfHjx9fs2ZNaGioy49Emu/Ro0eDg4MHDx58586dI0eO7Nmz58yZM4GB\n", + "gXFxcWTiIk0WAEhze+vWrU1NTeTIgQMHLl68OHDgQAGSeeXKlampqampqWPGjGn5UzVTM3f63DTZ\n", + "XRD72WEpKSkuR5yfmwYiTv/bb7997733kpOTx4wZU1NT4/JTYeZbVVVVWVnZt2/frKyshQsX3rlz\n", + "hxwfMGBAamoqud1dmMkS5s+ff/bs2a+++mr06NFjx449e/ZsXl5eSEjIkiVLyBsEm68zaqZm7vR5\n", + "vQKQ6tlhLs9NA+GmX11dvXjx4tjY2EWLFrX6BmHme+vWLQC4cuXKSy+91Lt37+XLl7/11luPPPLI\n", + "6dOnn3/++crKShBosoSgoKDk5OQOHTrcuHFj9+7deXl5ABATE6Ps7i7YfJ1RMzVzp8/rFYCXzw7j\n", + "hVafmwbCTf/VV18llzj+/v6tvkGY+dbV1QHArVu3nnvuOeVJ9zNmzJg7d+4XX3yxdevWxYsXCzNZ\n", + "wpYtW9avX9+jR48ZM2ZMnDjx3LlzmZmZ+/fvnz59+t69e8PDwwWbrzNqpmbu9HkVAFIfv337tstx\n", + "Ipgti8g80tZz00Cs6WdmZu7bt2/GjBmNjY2nT5+Ge2dJu91++vRpi8XSv39/YearXOn/+7//u/Px\n", + "yZMnf/HFF2R1LMxkAaCpqekPf/iDv7//Bx980KNHDwCw2WxTpkx57bXXPvroo7S0tMWLF4s0XxfU\n", + "TM3c6fMtAAI/O8zNc9NArOmTWaSnp6enpzsfLy4ufuKJJ6xW65kzZ4SZb3h4uJ+fn8ViIRVehQcf\n", + "fBAASAlImMkCwKlTp6qqqgYPHkzO/goTJ0786KOPCgoKQKz5uqBmauZOn1cB0PzsMC5w/9w0EGv6\n", + "Dz30UHBwsPMRh8Px5ptvRkREzJ8/32KxgEDztVgsPXv2vHjx4pUrV5xdH2SDdHKRJ8xk4V5lo6Sk\n", + "pLGx0fmmVuII6tq1K4g1XxfUTM3c6fPaBAahnx3W7nPTQKDp9+/f/yc/5JlnngGAkJAQ5TUINF9y\n", + "B8B7772nHGlubiZ27wkTJpAjwkw2Pj7ez8+voqIiJyfH+TjZ5EPZ/kgV8u79AAABpUlEQVSY+bZE\n", + "zdRMnD7HewGJ+uwwNc9NA3GnDwANDQ0DBw502QtImPk6HI7HH3/84sWLEydOTEpKAoDPPvssOzt7\n", + "5MiR27dvJ+8RZrJwb5Ocjh07Pvvss/369Tt//vz+/fvPnDnTp0+fjIwMst+ZAPNdv379H/7wh5Z7\n", + "AamZmonT51gAAKCiomLu3Llnzpwh/4yMjFy6dKlyOyWnHDt2TFn2tiQxMXHbtm3ktZDThzYEAASa\n", + "b1VV1auvvvr3v/9dOfLkk0+++uqrgYGByhFhJgsAO3bs2LRpE+lwEB555JGVK1d269ZNOcL7fNsS\n", + "AFA3NbOmz7cAECR/dphs0xdmvteuXTt16lTHjh379OlDquEtEWayd+7cOXv27KVLlzp37hwXF+e8\n", + "M4Qzwsy3JWqmRn/6IggAgiAIogGOm8AIgiCIN6AAIAiCSAoKAIIgiKSgACAIgkgKCgCCIIikoAAg\n", + "CIJICgoAgiCIpKAAIAiCSAoKAIIgiKSgACAIgkgKCgCCIIikoAAgCIJICgoAgiCIpKAAIAiCSAoK\n", + "AIIgiKSgACAIgkjK/wEH/MzXi5T25AAAAABJRU5ErkJggg==\n" + ] + }, "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "[[ 4. 5. 6.]]\n" - ] - } - ], - "prompt_number": 7 - }, + "output_type": "display_data" + } + ], + "source": [ + "%matlab b = 10*cos(t)+30; plot(b); grid on" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "a = [1,2,3]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%%matlab -i a -o b\n", + "b = a + 3;" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 7 + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 4. 5. 6.]]\n" + ] } ], - "metadata": {} + "source": [ + "print(b)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] } - ] -} \ No newline at end of file + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.4.2" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/pymatbridge/examples/pymatbridge.ipynb b/pymatbridge/examples/pymatbridge.ipynb index d32a2a9..8ae794e 100644 --- a/pymatbridge/examples/pymatbridge.ipynb +++ b/pymatbridge/examples/pymatbridge.ipynb @@ -1,239 +1,420 @@ { - "metadata": { - "name": "", - "signature": "sha256:97d58e18d73db04b81f296e9b6a194146fc1715e389c5f41eb5d98b818def865" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ + "cells": [ { - "cells": [ + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "import os\n", - "import numpy as np\n", - "import pymatbridge as pymat" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 1 + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/arokem/anaconda3/lib/python3.4/site-packages/IPython/nbformat/current.py:19: UserWarning: IPython.nbformat.current is deprecated.\n", + "\n", + "- use IPython.nbformat for read/write/validate public API\n", + "- use IPython.nbformat.vX directly to composing notebooks of a particular version\n", + "\n", + " \"\"\")\n" + ] + } + ], + "source": [ + "import os\n", + "import numpy as np\n", + "import pymatbridge as pymat" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge\n", + "Send 'exit' command to kill the server\n", + ".MATLAB started and connected!\n" + ] }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "matlab = pymat.Matlab()\n", - "matlab.start()" - ], - "language": "python", + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 2, "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge\n", - "Send 'exit' command to kill the server\n", - ".MATLAB started and connected!" - ] - }, - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "\n" - ] - }, - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 2, - "text": [ - "True" - ] - } - ], - "prompt_number": 2 - }, + "output_type": "execute_result" + } + ], + "source": [ + "matlab = pymat.Matlab()\n", + "matlab.start()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "res = matlab.run_func('%s/matlab/www/demo_func.m'%os.path.dirname(pymat.__file__), {'a': 10})\n", - "res['result']" - ], - "language": "python", + "data": { + "text/plain": [ + "11" + ] + }, + "execution_count": 3, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 3, - "text": [ - "11" - ] - } - ], - "prompt_number": 3 - }, + "output_type": "execute_result" + } + ], + "source": [ + "res = matlab.run_func('%s/matlab/www/demo_func.m'%os.path.dirname(pymat.__file__), {'a': 10})\n", + "res['result']" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "res_dict = matlab.run_code('a=[1,3,7]')\n", - "res_dict = matlab.run_code('plot(a)')\n", - "res_dict = matlab.run_code('b=a+1')\n", - "matlab.get_variable('b')" - ], - "language": "python", + "data": { + "text/plain": [ + "array([[ 2., 4., 8.]])" + ] + }, + "execution_count": 4, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 4, - "text": [ - "array([[ 2., 4., 8.]])" - ] - } - ], - "prompt_number": 4 - }, + "output_type": "execute_result" + } + ], + "source": [ + "res_dict = matlab.run_code('a=[1,3,7]')\n", + "res_dict = matlab.run_code('plot(a)')\n", + "res_dict = matlab.run_code('b=a+1')\n", + "matlab.get_variable('b')" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [ - "res_dict = matlab.run_code('figure; plot(b); b')\n", - "\n", - "from IPython.core.displaypub import publish_display_data\n", - "imgfiles = [res_dict['content']['figures']]\n", - "text_output = res_dict['content']['stdout']\n", - "\n", - "display_data = []\n", - "if text_output:\n", - " display_data.append(('MatlabMagic.matlab',\n", - " {'text/plain':text_output}))\n", - "for imgf in imgfiles:\n", - " try: # python 2\n", - " image = open(imgf[0], 'rb').read().decode('utf-8') \n", - " except: # python 3\n", - " image = open(imgf[0], 'rb').read()\n", - " \n", - " display_data.append(('MatlabMagic.matlab', {'image/png': image}))\n", - "\n", - "for tag, disp_d in display_data:\n", - " publish_display_data(tag, disp_d)\n", - "\n" - ], - "language": "python", + "data": { + "text/plain": [ + "\n", + "b =\n", + "\n", + " 2 4 8\n", + "\n" + ] + }, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "display_data", - "text": [ - "\n", - "b =\n", - "\n", - " 2 4 8\n", - "\n" - ] - }, - { - "metadata": {}, - "output_type": "display_data", - "png": "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\n" - } - ], - "prompt_number": 5 + "output_type": "display_data" }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "matlab.is_connected()" - ], - "language": "python", + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAAgAAAAGACAIAAABUQk3oAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\n", + "B3RJTUUH3wIVAhkjCFj8kwAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\n", + "bmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyMC1GZWItMjAxNSAxODoyNTozNbvD12gAACAA\n", + "SURBVHic7d1/VFR1/sfxzzAQkD9CYDUdNQdS0qyEBPRbtkn+OOl+O4G61npQK1vTtD0nzcUfrZLZ\n", + "spWdU5R2WimUk+mastb6Cws8Zn6XoTAMFbAWDSbMgGzPongU+P5xW5oQcRhm5vO59z4ff00fGM67\n", + "e8b3a+7M/dy3paWlRQAAzCdAdgEAADkIAAAwKQIAAEyKAAAAkyIAAMCkCAAAMCkCAABMigAAAJMi\n", + "AADApAgAADApAgAATIoAAACTIgAAwKQIAAAwKQIAAEyKAAAAkyIAAMCkCAAAMKlA2QW0r7i4OD8/\n", + "//Tp0z169IiJiZk2bdr1118vuygAMBSLgjOBX3jhhU2bNrkW1rt37w0bNsTExEisCgAMRrmPgPbt\n", + "27dx40abzfbnP/+5qKho48aNEyZMOHv27B/+8AcFswoA9Eu5j4D27t0rhJgzZ05KSooQYtSoUXfc\n", + "ccc///nPysrKysrKqKgo2QUCgEEodwZw9uxZIcRNN93UuhIaGhoREWGxWLp16yavLgAwGuUCIDY2\n", + "VgiRlZXV3NysrXz00UeVlZXDhw/v06eP1NIAwFCU+xK4oaHhqaeeOnToUERExD333HPixImysrKw\n", + "sLDMzMyEhATZ1QGAcSh3BtCtW7fU1NTrrruurq4uNze3rKxMCGG32202m+zSAMBQlDsD2LBhw8sv\n", + "v9yvX78pU6aMHz/+5MmTe/fuzcvLu+GGG3bv3h0ZGSm7QADwxKn6xkHhIbKr+AW1AqC5uXn06NGN\n", + "jY179uzp169f6/qzzz77t7/9bc6cOc8880y7T2SLAACVXQqNqLzv+aDzdRVr/ledGFDrI6DS0tJz\n", + "584NHTrUtfsLIcaPHy+EqKiokFQXAHhO6/7aY3W6v1BtH0BAQIAQoqqqqqmpyWq1tq5rVwT16tWr\n", + "46dnZGTwRXHH0tLSHA7HggULtG0WuJrMzMzc3NyEhISMjAzZtSjN4XCkpaXZbLacnBzZtSjqVH3j\n", + "ik9+rPz6XND5uj4lm4SYJruin6kVAIMHDw4KCqqtrT1w4MB9993Xuv7BBx+I/14h2gGbzcZ3xe7o\n", + "378/B8odvKLcxIG6mlP1jSs+OX7g63ODwkMu/9+m6+vU+hhDrY+AgoODlyxZIoRYvHjxa6+9tn//\n", + "/vXr1ycnJ+/atUu7JZzsAgGgEx7ZcvzA1+eEEM+P6ala9xeqnQEIIWbOnGmxWNatW/fGG2+0LiYl\n", + "JaWnpwcGKlctjCojI4MPf9yRnJycnJwsuwpFjV1XrHX/gvmxg0POPye7niup2FJTU1OnTp164sSJ\n", + "b775pmfPntHR0a53hkBXaE2Ns3XA11y7/73RvZzO87IraoeKASCECA0NjYuLi4uLk12I0dD6AT9o\n", + "0/1ll3NVan0HAAB6p5fuLwgAAPCiR7ac0Lr/Ow8NVbz7CwIAALzlkS0nsotqhBDvPDR0dnxf2eVc\n", + "GwEAAF6Qvq9S6/6rJth10f0FAQAAXZddVLMqr1IIMTu+78qJdtnluIsAAIAuyS6qeWTLCSHE7Pi+\n", + "7zw0VHY5nUAAAIDnDnz9g9b9740O01f3FwQAAHjswNc/jF13RAhxb3RYwXz97VsiAADAE3rv/oIA\n", + "AAAPGKD7CwIAADrLGN1fEAAA0Cmn6hu17j8oPETX3V8QAADgvlP1jfY1h4UQg8JDKpf/j+xyuooA\n", + "AAC3GKz7CwIAANxxqr7xkS3HhRCDwkN0d73/1RAAAHANWvfXRvvq4jafbiIAAOAaWkf7Gqn7CwIA\n", + "ADqmowEvnUUAAMBVGbj7CwIAAK7G2N1fEAAA0C7Dd39BAADAlczQ/QUBAABt6Guwe1cQAADwM90N\n", + "du8KAgAAfqLHwe5dQQAAgBC6HezeFQQAAOh4sHtXEAAAzE7Xg927ggAAYGqGGe/lAQIAgHmZufsL\n", + "AgCAaZm8+wsCAIA50f0FAQDAhIw02L0rCAAA5mK80b4eIwAAmAjd31Wg7AJ+4fvvv9+9e/fVfhoQ\n", + "EJCamurPegAYiSEHu3eFWgFQVVX1wgsvXO2nVquVAADgGaMOdu8KtQJg4MCBf/rTn65cLy8v37p1\n", + "a1JSkv9LAmAMRh3s3hVqBUBkZOSMGTPaLF68eDElJeXmm29+6aWXpFQFQO9MMuCls9QKgHa9/PLL\n", + "lZWVubm5oaGhsmsBoD90/6tR/SqgQ4cO5eTkzJgxIyYmRnYtAPSH7t8BpQPgP//5z9KlS3v06LFg\n", + "wQLZtQDQH7p/x5QOgM2bN589e3bBggU33HCD7FoA6Ix5Rvt6TN0AuHjx4saNG9v9WhgAOmaq0b4e\n", + "U/dL4B07dtTW1j7++OOBge4WmZaWpj3Iycmx2Ww+Kw2A0lpH+6rQ/bXr151Op9wy2qVoADQ3N2dl\n", + "ZQkhpk6d6v6z1DzEAPzJdbSv9O7vdDpV7kuKBsDx48erqqruvPPOQYMGuf+sBQsWJCYmCiF4+w+Y\n", + "k4KjfXNycrQHCt7IQNEA+PTTT4UQ9957b6eelZiYmJCQ4JOCAChPwdG+NptNez+q5nmAol8CHz58\n", + "WAgxcuRI2YUA0AcGvHhAxQBobGwsLi4ODAy89dZbZdcCQAfo/p5R8SOgkJCQL7/8UnYVAPSB7u8x\n", + "Fc8AAMBNdP+uIAAA6BWjfbuIAACgSwx37DoCAID+0P29ggAAoDOM9vUWAgCAnjDa14sIAAB6wmhf\n", + "LyIAAOgGA168iwAAoA90f68jAADoAN3fFwgAAKqj+/sIAQBAaXR/3yEAAKiLwe4+RQAAUBSD3X2N\n", + "AACgotbB7qsm2On+PkIAAFCO62D3lRPtsssxLAIAgFoUHOxuVAQAAIUoONjdwAgAAKpgvJefEQAA\n", + "lED39z8CAIB8dH8pCAAAktH9ZSEAAMjEYHeJCAAA0jDaVy4CAIAcdH/pCAAAEjDYXQUEAAB/Y7C7\n", + "IggAAP7GYHdFEAAA/IoBL+ogAAD4D91fKQQAAD+h+6uGAADgD3R/BREAAHyudbQv3V8pBAAA33Id\n", + "7Uv3VwoBAMCHGOyuMgIAgK9kF9Vo3X92fF+6v4ICZRfQvgsXLmzduvXLL79sbGwcNGjQuHHjYmNj\n", + "ZRcFoBMY7as+FQOgurp6xowZZ86csVqtoaGhH3300dtvv71kyZJHHnlEdmkA3MJoX11Q7iOg5ubm\n", + "J5544syZM48//nhhYeHnn3+enZ3drVu3tWvXVlVVya4OwLUx4EUvlAuAPXv2nDx5ctKkSYsXL+7R\n", + "o4cQYvTo0dOnT7906dLBgwdlVwfgGuj+OqLcR0C7d+8WQsycOdN1cf78+SkpKb16cQEZoDS6v74o\n", + "FwDFxcXdu3ePjY29cOFCaWnpd999FxUVdcstt0RHR8suDUBH6P66o1YAnDt3rr6+/pZbbvn4448X\n", + "LVp04cIFbf3WW29dvXr1rbfeKrc8AFfTOtqX7q8jagXAjz/+KISoqalZsGDBkCFDUlJSunfv/tFH\n", + "H+Xn5//+97//8MMPw8PDZdcIoC3X4Y50fx1R60vg8+fPCyF+/PHHRx99dOfOnbNmzZoyZcr69evv\n", + "ueee2trarKws2QUCaIvRvvql1hlAZGSk9uDRRx91XZ80adLBgwfLyso6fnpmZmbr44yMDJvN5vUK\n", + "AbhitG/HUlNTtQdOp1NuJe1SLgCCgoIsFktERITr+m233SaEqK+v7/jpDofDh8UB+CVG+3bM6XQq\n", + "3pTUCgCLxdK/f//Kysqampq+fX++c0hhYaEQIioqquOnJycnJyYmao95+w/4GqN9rykjI6P1cVpa\n", + "msRK2qVWAAghZs6cmZ6e/uabb6anp2srLS0te/fuFUKMGzeu4+empKQkJCT4vEQADHhxg81mS05O\n", + "1h7zEZBbfvvb327atGnLli11dXUTJ04UQuzatcvhcCQmJt5///2yqwMgBN3fKJQLgMDAwC1btqxY\n", + "sWL//v379+/XFqdOnbpixQq5hQHQ0P0NQ7kAEEKEhYW9/vrrZ8+eLS0tvf7662NiYrgJBKAIur+R\n", + "qBgAmt69eyclJcmuAsDP6P4Go9ZGMADKah3szjU/hkEAALg2RvsaEgEA4BrS91Vq3X/VBDvd30gI\n", + "AAAdyS6qWZVXKYSYHd935US77HLgTQQAgKtisLuxEQAA2sdgd8MjAAC0g/FeZkAAAGiL7m8SBACA\n", + "X6D7mwcBAOBndH9TIQAA/KR1sDujfU2CAAAgBKN9TYkAAED3NykCADA7BrubFgEAmBqD3c2MAABM\n", + "jcHuZkYAAObFgBeTIwAAk6L7gwAAzIjuD0EAACZE94eGAADMhe6PVgQAYCIMdocrAgAwCwa7ow0C\n", + "ADCF7KIarfvPju9L94eGAACMj9G+aBcBABgco31xNQQAYGQMeEEHCADAsOj+6BgBABgT3R/XRAAA\n", + "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\n" + ] + }, "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "." - ] - }, - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 6, - "text": [ - "True" - ] - } - ], - "prompt_number": 6 + "output_type": "display_data" + } + ], + "source": [ + "res_dict = matlab.run_code('figure; plot(b); b')\n", + "\n", + "from IPython.core.displaypub import publish_display_data\n", + "imgfiles = [res_dict['content']['figures']]\n", + "text_output = res_dict['content']['stdout']\n", + "\n", + "display_data = []\n", + "if text_output:\n", + " display_data.append({'text/plain':text_output})\n", + "for imgf in imgfiles:\n", + " try: # python 2\n", + " image = open(imgf[0], 'rb').read().decode('utf-8') \n", + " except: # python 3\n", + " image = open(imgf[0], 'rb').read()\n", + " \n", + " display_data.append({'image/png': image})\n", + "\n", + "for d in display_data:\n", + " publish_display_data(d)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "." + ] }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "matlab.stop()" - ], - "language": "python", + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 19, "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "MATLAB closed\n" - ] - }, - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 7, - "text": [ - "True" - ] - } - ], - "prompt_number": 7 + "output_type": "execute_result" + } + ], + "source": [ + "matlab.is_connected()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MATLAB closed\n" + ] }, { - "cell_type": "code", - "collapsed": false, - "input": [ - "matlab.is_connected()" - ], - "language": "python", + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 20, "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "pyout", - "prompt_number": 8, - "text": [ - "False" - ] - } - ], - "prompt_number": 8 - }, + "output_type": "execute_result" + } + ], + "source": [ + "matlab.stop()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ { - "cell_type": "code", - "collapsed": false, - "input": [], - "language": "python", + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 21, "metadata": {}, - "outputs": [] + "output_type": "execute_result" } ], - "metadata": {} + "source": [ + "matlab.is_connected()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] } - ] -} \ No newline at end of file + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.4.2" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} From 78ab1f6c367dc39dd206bcbecfee09e198f13dab Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 20 Feb 2015 21:17:29 -0600 Subject: [PATCH 232/308] Do not show the splash screen --- pymatbridge/pymatbridge.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 7fd4e67..9ed463f 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -440,9 +440,9 @@ def __init__(self, executable='matlab', socket_addr=None, platform = sys.platform if startup_options is None: if platform == 'win32': - startup_options = ' -automation' + startup_options = ' -automation -nosplash' else: - startup_options = ' -nodesktop' + startup_options = ' -nodesktop -nosplash' if log: startup_options += ' -logfile ./pymatbridge/logs/matlablog_%s.txt' % id super(Matlab, self).__init__(executable, socket_addr, id, log, maxtime, From 90fea89df82c717900ef21405886305b0ee74dad Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 22 Feb 2015 07:08:41 -0600 Subject: [PATCH 233/308] Add linux builds again zmq4 --- messenger/mexa64/messenger.mex.zmq4 | Bin 0 -> 22567 bytes messenger/mexa64/messenger.mexa64.zmq4 | Bin 0 -> 13361 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 messenger/mexa64/messenger.mex.zmq4 create mode 100755 messenger/mexa64/messenger.mexa64.zmq4 diff --git a/messenger/mexa64/messenger.mex.zmq4 b/messenger/mexa64/messenger.mex.zmq4 new file mode 100755 index 0000000000000000000000000000000000000000..65e467c10aba9ceaf4521d5b2371f1b22542c57a GIT binary patch literal 22567 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 literal 0 HcmV?d00001 diff --git a/messenger/mexa64/messenger.mexa64.zmq4 b/messenger/mexa64/messenger.mexa64.zmq4 new file mode 100755 index 0000000000000000000000000000000000000000..a01118c88df9f2d84794889b995f1221ba80ef68 GIT binary patch literal 13361 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 QcZihHqSf`#b{V<;Ki`H#D*ylh literal 0 HcmV?d00001 From b867b13db918cfb29f777bf7454ce661212b57b4 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 22 Feb 2015 07:20:28 -0600 Subject: [PATCH 234/308] Fix deprecation warning for nbformat --- pymatbridge/publish.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pymatbridge/publish.py b/pymatbridge/publish.py index 35d596e..3145a8f 100644 --- a/pymatbridge/publish.py +++ b/pymatbridge/publish.py @@ -1,6 +1,10 @@ -import IPython.nbformat.current as nbformat +try: + from IPython.nbformat import current_nbformat as nbformat +except ImportError: + import IPython.nbformat.current as nbformat import numpy as np + def format_line(line): """ Format a line of Matlab into either a markdown line or a code line. From d9ce956e418e0e801b9fff15a1e0a95e89ba99f3 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 22 Feb 2015 08:16:45 -0600 Subject: [PATCH 235/308] Start the session if you try and run code --- pymatbridge/pymatbridge.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 9ed463f..285d2b2 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -285,6 +285,8 @@ def run_func(self, func_path, *func_args, **kwargs): ------- Result dictionary with keys: 'message', 'result', and 'success' """ + if not self.started: + self.start() nargout = kwargs.pop('nargout', 1) func_args += tuple(item for pair in zip(kwargs.keys(), kwargs.values()) for item in pair) From a26d744ff52147857b1ae74f3acbb0435942e267 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 22 Feb 2015 18:43:45 -0600 Subject: [PATCH 236/308] Raise error if not started but allow method chaining --- pymatbridge/pymatbridge.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 285d2b2..9c0a7e7 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -168,6 +168,7 @@ def __init__(self, executable, socket_addr=None, self.context = None self.socket = None atexit.register(self.stop) + return self def _program_name(self): # pragma: no cover raise NotImplemented @@ -286,7 +287,8 @@ def run_func(self, func_path, *func_args, **kwargs): Result dictionary with keys: 'message', 'result', and 'success' """ if not self.started: - self.start() + raise ValueError('Session not started, use start()') + nargout = kwargs.pop('nargout', 1) func_args += tuple(item for pair in zip(kwargs.keys(), kwargs.values()) for item in pair) From c56c2368085f065a5b88088687940b02937c0460 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 22 Feb 2015 18:45:20 -0600 Subject: [PATCH 237/308] Fix method chaining --- pymatbridge/pymatbridge.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pymatbridge/pymatbridge.py b/pymatbridge/pymatbridge.py index 9c0a7e7..31855fa 100644 --- a/pymatbridge/pymatbridge.py +++ b/pymatbridge/pymatbridge.py @@ -168,7 +168,6 @@ def __init__(self, executable, socket_addr=None, self.context = None self.socket = None atexit.register(self.stop) - return self def _program_name(self): # pragma: no cover raise NotImplemented @@ -214,10 +213,9 @@ def start(self): if self.is_connected(): print("%s started and connected!" % self._program_name()) self.set_plot_settings() - return True + return self else: - print("%s failed to start" % self._program_name()) - return False + raise ValueError("%s failed to start" % self._program_name()) def _response(self, **kwargs): req = json.dumps(kwargs, cls=PymatEncoder) From 4644427f2d37aaaf2604960033e843f34c5eb875 Mon Sep 17 00:00:00 2001 From: Ismail Badawi Date: Sun, 1 Mar 2015 21:03:07 -0500 Subject: [PATCH 238/308] Add pypi and license badges from pypip.in --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3e9bb5d..e36c217 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ [![Build Status](https://travis-ci.org/arokem/python-matlab-bridge.svg?branch=master)](https://travis-ci.org/arokem/python-matlab-bridge) [![Coverage Status](https://coveralls.io/repos/arokem/python-matlab-bridge/badge.svg?branch=master)](https://coveralls.io/r/arokem/python-matlab-bridge?branch=master) +[![Latest Version](https://pypip.in/version/pymatbridge/badge.svg?style=flat)](https://pypi.python.org/pypi/pymatbridge/) +[![License](https://pypip.in/license/pymatbridge/badge.svg?style=flat)](https://pypi.python.org/pypi/pymatbridge/) [![Join the chat at https://gitter.im/arokem/python-matlab-bridge](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/arokem/python-matlab-bridge?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) A python interface to call out to [Matlab(R)](http://mathworks.com). Original From ff95b80cb9c75984abd257a1b23fc31a52bf9b20 Mon Sep 17 00:00:00 2001 From: arokem Date: Thu, 5 Mar 2015 16:04:23 -0800 Subject: [PATCH 239/308] Notebook: some cruft. --- pymatbridge/examples/matlab_magic.ipynb | 27 +++++++------------------ 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/pymatbridge/examples/matlab_magic.ipynb b/pymatbridge/examples/matlab_magic.ipynb index 5f0fbf0..f57177f 100644 --- a/pymatbridge/examples/matlab_magic.ipynb +++ b/pymatbridge/examples/matlab_magic.ipynb @@ -6,20 +6,7 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/arokem/anaconda3/lib/python3.4/site-packages/IPython/nbformat/current.py:19: UserWarning: IPython.nbformat.current is deprecated.\n", - "\n", - "- use IPython.nbformat for read/write/validate public API\n", - "- use IPython.nbformat.vX directly to composing notebooks of a particular version\n", - "\n", - " \"\"\")\n" - ] - } - ], + "outputs": [], "source": [ "import pymatbridge as pymat" ] @@ -37,7 +24,7 @@ "text": [ "Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge\n", "Send 'exit' command to kill the server\n", - "..........MATLAB started and connected!\n" + ".............MATLAB started and connected!\n" ] } ], @@ -57,8 +44,8 @@ "data": { "image/png": [ "iVBORw0KGgoAAAANSUhEUgAAAZAAAAFeCAIAAAAkP95fAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\n", - "B3RJTUUH3wIVAhMOt2hIbAAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\n", - "bmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyMC1GZWItMjAxNSAxODoxOToxM23g1bcAACAA\n", + "B3RJTUUH3wMFFwglxXZlAgAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\n", + "bmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAwNS1NYXItMjAxNSAxNTowODozN20tYN0AACAA\n", "SURBVHic7Z1/dFXVmfe/kpt6gyGEJJBgLuSGQMTBvkSFqm8rXCktdenwQju6aqkEX8vShWOXU3Ut\n", "nTpGpCx1bDsVOsysji6wjEtZHcF5q2sFa0JYo4K1RdJaRDBwk9xIggmJISGX5pq8f+x7T+7ve348\n", "+5y9T/bnH/Hk3n3OPefsZ3/38zz72ZeMj49DoVAoZGCK0xegUCgUelEGS6FQSIMyWAqFQhqUwVIo\n", @@ -394,8 +381,8 @@ "data": { "image/png": [ "iVBORw0KGgoAAAANSUhEUgAAAgAAAAGACAIAAABUQk3oAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\n", - "B3RJTUUH3wIVAhMQTWd1DwAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\n", - "bmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyMC1GZWItMjAxNSAxODoxOToxNh2KITgAACAA\n", + "B3RJTUUH3wMFFwgou8cZvwAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\n", + "bmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAwNS1NYXItMjAxNSAxNTowODozOYqVTdoAACAA\n", "SURBVHic7Z17QFTXtf/XMCAgqAhEUDTyCOMzFd9y4yuJyi+aejXGJL3+0ObeGCOJTVsfUZvEKDFR\n", "a3JbbTX3Vi9GE1uTgk1qLFoR8miMmOsrPgBFQUBREREBhzLA/WPryWSA4cyZc/bZj/X5azwMw96z\n", "lue7z1rfs4+lubkZEARBEPnwMXsACIIgiDmgACAIgkgKCgCCIIikoAAgCIJICgoAgiCIpKAAIAiC\n", @@ -746,7 +733,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "collapsed": false }, From 21d592d9c2ada0cd86c786999a53826991a670f4 Mon Sep 17 00:00:00 2001 From: arokem Date: Thu, 5 Mar 2015 16:08:31 -0800 Subject: [PATCH 240/308] Notebook example cruft. --- pymatbridge/examples/pymatbridge.ipynb | 35 ++++++++------------------ 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/pymatbridge/examples/pymatbridge.ipynb b/pymatbridge/examples/pymatbridge.ipynb index 8ae794e..7ec680e 100644 --- a/pymatbridge/examples/pymatbridge.ipynb +++ b/pymatbridge/examples/pymatbridge.ipynb @@ -6,20 +6,7 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/arokem/anaconda3/lib/python3.4/site-packages/IPython/nbformat/current.py:19: UserWarning: IPython.nbformat.current is deprecated.\n", - "\n", - "- use IPython.nbformat for read/write/validate public API\n", - "- use IPython.nbformat.vX directly to composing notebooks of a particular version\n", - "\n", - " \"\"\")\n" - ] - } - ], + "outputs": [], "source": [ "import os\n", "import numpy as np\n", @@ -39,7 +26,7 @@ "text": [ "Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge\n", "Send 'exit' command to kill the server\n", - ".MATLAB started and connected!\n" + "..........MATLAB started and connected!\n" ] }, { @@ -108,7 +95,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -130,8 +117,8 @@ "data": { "image/png": [ "iVBORw0KGgoAAAANSUhEUgAAAgAAAAGACAIAAABUQk3oAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\n", - "B3RJTUUH3wIVAhkjCFj8kwAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\n", - "bmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAyMC1GZWItMjAxNSAxODoyNTozNbvD12gAACAA\n", + "B3RJTUUH3wMGAAUpcrJNfwAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\n", + "bmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAwNS1NYXItMjAxNSAxNjowNTo0MQiNkW8AACAA\n", "SURBVHic7d1/VFR1/sfxzzAQkD9CYDUdNQdS0qyEBPRbtkn+OOl+O4G61npQK1vTtD0nzcUfrZLZ\n", "spWdU5R2WimUk+mastb6Cws8Zn6XoTAMFbAWDSbMgGzPongU+P5xW5oQcRhm5vO59z4ff00fGM67\n", "e8b3a+7M/dy3paWlRQAAzCdAdgEAADkIAAAwKQIAAEyKAAAAkyIAAMCkCAAAMCkCAABMigAAAJMi\n", @@ -308,7 +295,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -326,7 +313,7 @@ "True" ] }, - "execution_count": 19, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -337,7 +324,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -355,7 +342,7 @@ "True" ] }, - "execution_count": 20, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -366,7 +353,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -377,7 +364,7 @@ "False" ] }, - "execution_count": 21, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } From 1ce1654c75b1dd27f5615456b76609e308be195b Mon Sep 17 00:00:00 2001 From: arokem Date: Mon, 9 Mar 2015 12:01:28 -0700 Subject: [PATCH 241/308] RF: Update to use v4 notebooks and new IPython 3.0 API. --- pymatbridge/publish.py | 19 ++++++++----------- pymatbridge/tests/test_publish.py | 6 +++--- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/pymatbridge/publish.py b/pymatbridge/publish.py index 3145a8f..f6d97d7 100644 --- a/pymatbridge/publish.py +++ b/pymatbridge/publish.py @@ -1,7 +1,5 @@ -try: - from IPython.nbformat import current_nbformat as nbformat -except ImportError: - import IPython.nbformat.current as nbformat +import IPython.nbformat.v4 as nbformat +from IPython.nbformat import write as nbwrite import numpy as np @@ -97,18 +95,17 @@ def lines_to_notebook(lines, name=None): # Append the notebook with loading matlab magic extension notebook_head = "import pymatbridge as pymat\n" + "ip = get_ipython()\n" \ + "pymat.load_ipython_extension(ip)" - cells.append(nbformat.new_code_cell(notebook_head, language='python')) + cells.append(nbformat.new_code_cell(notebook_head))#, language='python')) for cell_idx, cell_s in enumerate(cell_source): if cell_md[cell_idx]: - cells.append(nbformat.new_text_cell('markdown', cell_s)) + cells.append(nbformat.new_markdown_cell(cell_s)) else: cell_s.insert(0, '%%matlab\n') - cells.append(nbformat.new_code_cell(cell_s, language='matlab')) + cells.append(nbformat.new_code_cell(cell_s))#, language='matlab')) - ws = nbformat.new_worksheet(cells=cells) - notebook = nbformat.new_notebook(metadata=nbformat.new_metadata(), - worksheets=[ws]) + #ws = nbformat.new_worksheet(cells=cells) + notebook = nbformat.new_notebook(cells=cells) return notebook @@ -130,4 +127,4 @@ def convert_mfile(mfile, outfile=None): if outfile is None: outfile = mfile.split('.m')[0] + '.ipynb' with open(outfile, 'w') as fid: - nbformat.write(nb, fid, format='ipynb') + nbwrite(nb, fid) diff --git a/pymatbridge/tests/test_publish.py b/pymatbridge/tests/test_publish.py index 5c73e0f..cb3f093 100644 --- a/pymatbridge/tests/test_publish.py +++ b/pymatbridge/tests/test_publish.py @@ -36,7 +36,7 @@ def test_lines_to_notebook(): nb = publish.lines_to_notebook(lines) - npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], + npt.assert_equal(nb['cells'][1]['source'][0], ' This is a first line\n\n') @@ -45,7 +45,7 @@ def test_convert_mfile(): nb_file = MFILE.replace('.m', '.ipynb') with open(nb_file) as fid: nb = json.load(fid) - npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], + npt.assert_equal(nb['cells'][1]['source'][0], ' Experimenting with conversion from matlab to ipynb\n\n') os.remove(nb_file) @@ -55,5 +55,5 @@ def test_mfile_to_lines(): nb = publish.lines_to_notebook(lines) - npt.assert_equal(nb['worksheets'][0]['cells'][1]['source'][0], + npt.assert_equal(nb['cells'][1]['source'][0], ' Experimenting with conversion from matlab to ipynb\n\n') From 20f30274cb6754f848706a038f48fec71193f4bd Mon Sep 17 00:00:00 2001 From: arokem Date: Mon, 9 Mar 2015 12:20:50 -0700 Subject: [PATCH 242/308] BF: IPython.nbformat requires jsonschema upon import. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 362025d..dd6961b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ before_install: - conda config --set always_yes yes - conda update conda - conda info -a - - travis_retry conda create -n test $CONDA IPython pip nose pyzmq + - travis_retry conda create -n test $CONDA IPython pip nose pyzmq jsonschema - source activate test - travis_retry pip install coveralls From 77677fe1f7e10973ac9c87b7d3d03e610219daa8 Mon Sep 17 00:00:00 2001 From: Ali Ebrahim Date: Mon, 9 Mar 2015 20:15:38 -0700 Subject: [PATCH 243/308] fix messenger build on windows This commit also includs an updated messenger mex for windows 64 bit which is statically linked against libzmq 4.0.5 (so it does not need to be separately installed). The make.py script for messenger has been updated to use argparse, and also now supports linking to a statically linked zmq. --- messenger/make.py | 52 ++++++++++++++++++------------ messenger/mexw64/local.cfg | 4 +-- messenger/mexw64/messenger.mexw64 | Bin 8704 -> 269312 bytes 3 files changed, 33 insertions(+), 23 deletions(-) diff --git a/messenger/make.py b/messenger/make.py index d257f78..7048aab 100755 --- a/messenger/make.py +++ b/messenger/make.py @@ -50,7 +50,7 @@ def do_build(make_cmd, messenger_exe): print('Building %s...' % messenger_exe) print(make_cmd) messenger_dir = get_messenger_dir() - subprocess.check_output(shlex.split(make_cmd)) + subprocess.check_output(shlex.split(make_cmd), shell=True) messenger_loc = os.path.join(messenger_dir, messenger_exe) @@ -67,36 +67,46 @@ def build_octave(): do_build(make_cmd, 'messenger.mex') -def build_matlab(): +def build_matlab(static=False): + """build the messenger mex for MATLAB + + static : bool + Determines if the zmq library has been statically linked. + If so, it will append the command line option -DZMQ_STATIC + when compiling the mex so it matches libzmq. + """ cfg = get_config() - matlab_bin = cfg['matlab_bin'] + # To deal with spaces, remove quotes now, and add + # to the full commands themselves. + matlab_bin = cfg['matlab_bin'].strip('"') # Get the extension - if sys.platform == 'win32': - extcmd = '"%s\\mexext.bat"' % matlab_bin - else: - extcmd = matlab_bin + "/mexext" - - check_extension = subprocess.Popen(extcmd, stdout=subprocess.PIPE) - extension = check_extension.stdout.read() + extcmd = '"' + os.path.join(matlab_bin, "mexext") + '"' + extension = subprocess.check_output(extcmd, shell=True) extension = extension.decode('utf-8').rstrip('\r\n') # Build the mex file - if sys.platform == 'win32': - mex = matlab_bin + "\\mex.bat" - else: - mex = matlab_bin + "/mex" + mex = '"' + os.path.join(matlab_bin, "mex") + '"' paths = "-L%(zmq_lib)s -I%(zmq_inc)s" % cfg make_cmd = '%s -O %s -lzmq ./src/messenger.c' % (mex, paths) + if static: + make_cmd += ' -DZMQ_STATIC' do_build(make_cmd, 'messenger.%s' % extension) if __name__ == '__main__': - usage = 'Please specify a valid make target (Matlab or Octave)' - if len(sys.argv) < 2: - print(usage) - elif sys.argv[1].lower() == 'matlab': - build_matlab() - elif sys.argv[1].lower() == 'octave': + import argparse + parser = argparse.ArgumentParser() + parser.add_argument( + "target", + choices=["matlab", "octave"], + type=str.lower, + help="target to be built") + parser.add_argument("--static", action="store_true", + help="staticly link libzmq") + args = parser.parse_args() + if args.target == "matlab": + build_matlab(static=args.static) + elif args.target == "octave": build_octave() else: - print(usage) + raise ValueError() diff --git a/messenger/mexw64/local.cfg b/messenger/mexw64/local.cfg index b6b5a9c..daf8ab6 100644 --- a/messenger/mexw64/local.cfg +++ b/messenger/mexw64/local.cfg @@ -1,5 +1,5 @@ -MATLAB_BIN=/Applications/MATLAB_R2012a.app/bin +MATLAB_BIN="C:\Program Files\MATLAB\2014b\bin" OCTAVE_INC="C:\Octave\Octave-3.8.2\include\octave-3.8.2\octave" OCTAVE_LIB="C:\Octave\Octave-3.8.2\lib\octave\3.8.2" ZMQ_INC="C:\zeromq-4.0.5\include" -ZMQ_LIB="C:\zeromq-4.0.5\src\.libs" +ZMQ_LIB="C:\zeromq-4.0.5\lib" diff --git a/messenger/mexw64/messenger.mexw64 b/messenger/mexw64/messenger.mexw64 index 9952c40598f0859d3e5eada21dacfbc7d5972e5f..d0767a60e1c5273b202af0839c5c146d2525e78f 100644 GIT binary patch literal 269312 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