Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/shanecelis/eureqa-mathematica-client

A Eureqa Client for Mathematica
https://github.com/shanecelis/eureqa-mathematica-client

Last synced: about 2 months ago
JSON representation

A Eureqa Client for Mathematica

Awesome Lists containing this project

README

        

<!--
html, body { margin: 0; padding: 0; border: 0; font-weight: inherit; font-style: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; }

div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, pre, a, abbr, acronym, address, code, del, dfn, em, img, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr { margin: 0; padding: 0; border: 0; font-weight: inherit; font-style: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; }

blockquote, q { margin: 0; padding: 0; border: 0; font-weight: inherit; font-style: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; quotes: "" ""; }
blockquote:before, q:before, blockquote:after, q:after { content: ""; }

th, td, caption { margin: 0; padding: 0; border: 0; font-weight: inherit; font-style: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; text-align: left; font-weight: normal; vertical-align: middle; }

table { margin: 0; padding: 0; border: 0; font-weight: inherit; font-style: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; border-collapse: separate; border-spacing: 0; vertical-align: middle; }

a img { border: none; }

body { line-height: 1.5; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; color: #333333; font-size: 100%; }

h1 { font-weight: normal; color: #222222; font-size: 3em; line-height: 1; margin-bottom: 0.5em; }
h1 img { margin: 0; }

h2 { font-weight: normal; color: #222222; font-size: 2em; margin-bottom: 0.75em; }

h3 { font-weight: normal; color: #222222; font-size: 1.5em; line-height: 1; margin-bottom: 1em; }

h4 { font-weight: normal; color: #222222; font-size: 1.2em; line-height: 1.25; margin-bottom: 1.25em; }

h5 { font-weight: normal; color: #222222; font-size: 1em; font-weight: bold; margin-bottom: 1.5em; }

h6 { font-weight: normal; color: #222222; font-size: 1em; font-weight: bold; }

h2 img, h3 img, h4 img, h5 img, h6 img { margin: 0; }

p { margin: 0 0 1.5em; }
p img.left { display: inline; float: left; margin: 1.5em 1.5em 1.5em 0; padding: 0; }
p img.right { display: inline; float: right; margin: 1.5em 0 1.5em 1.5em; padding: 0; }

a { text-decoration: underline; color: #000099; }
a:visited { color: #000066; }
a:focus { color: black; }
a:hover { color: black; }
a:active { color: #cc0099; }

blockquote { margin: 1.5em; color: #666; font-style: italic; }

strong { font-weight: bold; }

em { font-style: italic; }

dfn { font-style: italic; font-weight: bold; }

sup, sub { line-height: 0; }

abbr, acronym { border-bottom: 1px dotted #666; }

address { margin: 0 0 1.5em; font-style: italic; }

del { color: #666; }

pre { margin: 1.5em 0; white-space: pre; }

pre, code, tt { font: 1em 'andale mono', 'lucida console', monospace; line-height: 1.5; }

li ul, li ol { margin: 0 1.5em; }

ul { margin: 0 1.5em 1.5em 1.5em; list-style-type: disc; }

ol { margin: 0 1.5em 1.5em 1.5em; list-style-type: decimal; }

dl { margin: 0 0 1.5em 0; }
dl dt { font-weight: bold; }

dd { margin-left: 1.5em; }

table { margin-bottom: 1.4em; width: 100%; }

th { font-weight: bold; }

thead th { background: #c3d9ff; }

th, td, caption { padding: 4px 10px 4px 5px; }

tr.even td { background: #e5ecf9; }

tfoot { font-style: italic; }

caption { background: #eee; }

.quiet { color: #666666; }

.loud { color: #111111; }

.clear { clear: both; }

.nowrap { white-space: nowrap; }

.clearfix { overflow: hidden; display: inline-block; }
.clearfix { display: block; }

.small { font-size: .8em; margin-bottom: 1.875em; line-height: 1.875em; }

.large { font-size: 1.2em; line-height: 2.5em; margin-bottom: 1.25em; }

.first { margin-left: 0; padding-left: 0; }

.last { margin-right: 0; padding-right: 0; }

.top { margin-top: 0; padding-top: 0; }

.bottom { margin-bottom: 0; padding-bottom: 0; }

.container { width: 785px; margin: 0 auto; overflow: hidden; display: inline-block; }
.container { display: block; }

.column, div.span-1, div.span-2, div.span-3, div.span-4, div.span-5, div.span-6, div.span-7, div.span-8, div.span-9, div.span-10, div.span-11, div.span-12, div.span-13, div.span-14, div.span-15, div.span-16, div.span-17, div.span-18, div.span-19, div.span-20 { display: inline; float: left; margin-right: 15px; }
* html .column, * html div.span-1, * html div.span-2, * html div.span-3, * html div.span-4, * html div.span-5, * html div.span-6, * html div.span-7, * html div.span-8, * html div.span-9, * html div.span-10, * html div.span-11, * html div.span-12, * html div.span-13, * html div.span-14, * html div.span-15, * html div.span-16, * html div.span-17, * html div.span-18, * html div.span-19, * html div.span-20 { overflow-x: hidden; }

.last, div.last { margin-right: 0; }

.span-1 { width: 25px; }

.span-2 { width: 65px; }

.span-3 { width: 105px; }

.span-4 { width: 145px; }

.span-5 { width: 185px; }

.span-6 { width: 225px; }

.span-7 { width: 265px; }

.span-8 { width: 305px; }

.span-9 { width: 345px; }

.span-10 { width: 385px; }

.span-11 { width: 425px; }

.span-12 { width: 465px; }

.span-13 { width: 505px; }

.span-14 { width: 545px; }

.span-15 { width: 585px; }

.span-16 { width: 625px; }

.span-17 { width: 665px; }

.span-18 { width: 705px; }

.span-19 { width: 745px; }

.span-20, div.span-20 { width: 785px; margin: 0; }

input.span-1, textarea.span-1, select.span-1 { width: 25px !important; }
input.span-2, textarea.span-2, select.span-2 { width: 65px !important; }
input.span-3, textarea.span-3, select.span-3 { width: 105px !important; }
input.span-4, textarea.span-4, select.span-4 { width: 145px !important; }
input.span-5, textarea.span-5, select.span-5 { width: 185px !important; }
input.span-6, textarea.span-6, select.span-6 { width: 225px !important; }
input.span-7, textarea.span-7, select.span-7 { width: 265px !important; }
input.span-8, textarea.span-8, select.span-8 { width: 305px !important; }
input.span-9, textarea.span-9, select.span-9 { width: 345px !important; }
input.span-10, textarea.span-10, select.span-10 { width: 385px !important; }
input.span-11, textarea.span-11, select.span-11 { width: 425px !important; }
input.span-12, textarea.span-12, select.span-12 { width: 465px !important; }
input.span-13, textarea.span-13, select.span-13 { width: 505px !important; }
input.span-14, textarea.span-14, select.span-14 { width: 545px !important; }
input.span-15, textarea.span-15, select.span-15 { width: 585px !important; }
input.span-16, textarea.span-16, select.span-16 { width: 625px !important; }
input.span-17, textarea.span-17, select.span-17 { width: 665px !important; }
input.span-18, textarea.span-18, select.span-18 { width: 705px !important; }
input.span-19, textarea.span-19, select.span-19 { width: 745px !important; }
input.span-20, textarea.span-20, select.span-20 { width: 785px !important; }

.append-1 { padding-right: 40px; }

.append-2 { padding-right: 80px; }

.append-3 { padding-right: 120px; }

.append-4 { padding-right: 160px; }

.append-5 { padding-right: 200px; }

.append-6 { padding-right: 240px; }

.append-7 { padding-right: 280px; }

.append-8 { padding-right: 320px; }

.append-9 { padding-right: 360px; }

.append-10 { padding-right: 400px; }

.append-11 { padding-right: 440px; }

.append-12 { padding-right: 480px; }

.append-13 { padding-right: 520px; }

.append-14 { padding-right: 560px; }

.append-15 { padding-right: 600px; }

.append-16 { padding-right: 640px; }

.append-17 { padding-right: 680px; }

.append-18 { padding-right: 720px; }

.append-19 { padding-right: 760px; }

.prepend-1 { padding-left: 40px; }

.prepend-2 { padding-left: 80px; }

.prepend-3 { padding-left: 120px; }

.prepend-4 { padding-left: 160px; }

.prepend-5 { padding-left: 200px; }

.prepend-6 { padding-left: 240px; }

.prepend-7 { padding-left: 280px; }

.prepend-8 { padding-left: 320px; }

.prepend-9 { padding-left: 360px; }

.prepend-10 { padding-left: 400px; }

.prepend-11 { padding-left: 440px; }

.prepend-12 { padding-left: 480px; }

.prepend-13 { padding-left: 520px; }

.prepend-14 { padding-left: 560px; }

.prepend-15 { padding-left: 600px; }

.prepend-16 { padding-left: 640px; }

.prepend-17 { padding-left: 680px; }

.prepend-18 { padding-left: 720px; }

.prepend-19 { padding-left: 760px; }

.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20 { display: inline; float: left; position: relative; }

.pull-1 { margin-left: -40px; }

.pull-2 { margin-left: -80px; }

.pull-3 { margin-left: -120px; }

.pull-4 { margin-left: -160px; }

.pull-5 { margin-left: -200px; }

.pull-6 { margin-left: -240px; }

.pull-7 { margin-left: -280px; }

.pull-8 { margin-left: -320px; }

.pull-9 { margin-left: -360px; }

.pull-10 { margin-left: -400px; }

.pull-11 { margin-left: -440px; }

.pull-12 { margin-left: -480px; }

.pull-13 { margin-left: -520px; }

.pull-14 { margin-left: -560px; }

.pull-15 { margin-left: -600px; }

.pull-16 { margin-left: -640px; }

.pull-17 { margin-left: -680px; }

.pull-18 { margin-left: -720px; }

.pull-19 { margin-left: -760px; }

.pull-20 { margin-left: -800px; }

.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20 { display: inline; float: right; position: relative; }

.push-1 { margin: 0 -40px 1.5em 40px; }

.push-2 { margin: 0 -80px 1.5em 80px; }

.push-3 { margin: 0 -120px 1.5em 120px; }

.push-4 { margin: 0 -160px 1.5em 160px; }

.push-5 { margin: 0 -200px 1.5em 200px; }

.push-6 { margin: 0 -240px 1.5em 240px; }

.push-7 { margin: 0 -280px 1.5em 280px; }

.push-8 { margin: 0 -320px 1.5em 320px; }

.push-9 { margin: 0 -360px 1.5em 360px; }

.push-10 { margin: 0 -400px 1.5em 400px; }

.push-11 { margin: 0 -440px 1.5em 440px; }

.push-12 { margin: 0 -480px 1.5em 480px; }

.push-13 { margin: 0 -520px 1.5em 520px; }

.push-14 { margin: 0 -560px 1.5em 560px; }

.push-15 { margin: 0 -600px 1.5em 600px; }

.push-16 { margin: 0 -640px 1.5em 640px; }

.push-17 { margin: 0 -680px 1.5em 680px; }

.push-18 { margin: 0 -720px 1.5em 720px; }

.push-19 { margin: 0 -760px 1.5em 760px; }

.push-20 { margin: 0 -800px 1.5em 800px; }

.showgrid { background: url('/images/grid.png?1248521391'); }

.error { padding: .8em; margin-bottom: 1em; border: 2px solid #dddddd; background: #fbe3e4; color: #8a1f11; border-color: #fbc2c4; }
.error a { color: #8a1f11; }

.notice { padding: .8em; margin-bottom: 1em; border: 2px solid #dddddd; background: #fff6bf; color: #514721; border-color: #ffd324; }
.notice a { color: #514721; }

.success { padding: .8em; margin-bottom: 1em; border: 2px solid #dddddd; background: #e6efc2; color: #264409; border-color: #c6d880; }
.success a { color: #264409; }

.hide { display: none; }

.highlight { background: yellow; }

.added { background: #006600; color: white; }

.removed { background: #990000; color: white; }

label { font-weight: bold; }

fieldset { padding: 1.4em; margin: 0 0 1.5em 0; }

legend { font-weight: bold; font-size: 1.2em; }

input.text, input.title, input[type=text] { margin: 0.5em 0; background-color: #fff; padding: 5px; }
input.title { font-size: 1.5em; }
input[type=checkbox], input.checkbox, input[type=radio], input.radio { position: relative; top: 0.25em; }

textarea { margin: 0.5em 0; padding: 5px; }

select { margin: 0.5em 0; }

fieldset { border: 1px solid #cccccc; }

input.text, input.title, textarea, select { border: 1px solid #bbbbbb; }
input.text:focus, input.title:focus, textarea:focus, select:focus { border: 1px solid #666666; }

input.text, input.title { width: 300px; }

textarea { width: 390px; height: 250px; }

body body { line-height: 1.5; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; color: #333333; font-size: 100%; }
body h1 { font-weight: normal; color: #222222; font-size: 3em; line-height: 1; margin-bottom: 0.5em; }
body h1 img { margin: 0; }
body h2 { font-weight: normal; color: #222222; font-size: 2em; margin-bottom: 0.75em; }
body h3 { font-weight: normal; color: #222222; font-size: 1.5em; line-height: 1; margin-bottom: 1em; }
body h4 { font-weight: normal; color: #222222; font-size: 1.2em; line-height: 1.25; margin-bottom: 1.25em; }
body h5 { font-weight: normal; color: #222222; font-size: 1em; font-weight: bold; margin-bottom: 1.5em; }
body h6 { font-weight: normal; color: #222222; font-size: 1em; font-weight: bold; }
body h2 img, body h3 img, body h4 img, body h5 img, body h6 img { margin: 0; }
body p { margin: 0 0 1.5em; }
body p img.left { display: inline; float: left; margin: 1.5em 1.5em 1.5em 0; padding: 0; }
body p img.right { display: inline; float: right; margin: 1.5em 0 1.5em 1.5em; padding: 0; }
body a { text-decoration: underline; color: #000099; }
body a:visited { color: #000066; }
body a:focus { color: black; }
body a:hover { color: black; }
body a:active { color: #cc0099; }
body blockquote { margin: 1.5em; color: #666; font-style: italic; }
body strong { font-weight: bold; }
body em { font-style: italic; }
body dfn { font-style: italic; font-weight: bold; }
body sup, body sub { line-height: 0; }
body abbr, body acronym { border-bottom: 1px dotted #666; }
body address { margin: 0 0 1.5em; font-style: italic; }
body del { color: #666; }
body pre { margin: 1.5em 0; white-space: pre; }
body pre, body code, body tt { font: 1em 'andale mono', 'lucida console', monospace; line-height: 1.5; }
body li ul, body li ol { margin: 0 1.5em; }
body ul { margin: 0 1.5em 1.5em 1.5em; list-style-type: disc; }
body ol { margin: 0 1.5em 1.5em 1.5em; list-style-type: decimal; }
body dl { margin: 0 0 1.5em 0; }
body dl dt { font-weight: bold; }
body dd { margin-left: 1.5em; }
body table { margin-bottom: 1.4em; width: 100%; }
body th { font-weight: bold; }
body thead th { background: #c3d9ff; }
body th, body td, body caption { padding: 4px 10px 4px 5px; }
body tr.even td { background: #e5ecf9; }
body tfoot { font-style: italic; }
body caption { background: #eee; }
body .quiet { color: #666666; }
body .loud { color: #111111; }
body .clear { clear: both; }
body .nowrap { white-space: nowrap; }
body .clearfix { overflow: hidden; display: inline-block; }
body .clearfix { display: block; }
body .small { font-size: .8em; margin-bottom: 1.875em; line-height: 1.875em; }
body .large { font-size: 1.2em; line-height: 2.5em; margin-bottom: 1.25em; }
body .first { margin-left: 0; padding-left: 0; }
body .last { margin-right: 0; padding-right: 0; }
body .top { margin-top: 0; padding-top: 0; }
body .bottom { margin-bottom: 0; padding-bottom: 0; }
body .showgrid { background: url('/images/grid.png?1248521391'); }
body .error { padding: .8em; margin-bottom: 1em; border: 2px solid #dddddd; background: #fbe3e4; color: #8a1f11; border-color: #fbc2c4; }
body .error a { color: #8a1f11; }
body .notice { padding: .8em; margin-bottom: 1em; border: 2px solid #dddddd; background: #fff6bf; color: #514721; border-color: #ffd324; }
body .notice a { color: #514721; }
body .success { padding: .8em; margin-bottom: 1em; border: 2px solid #dddddd; background: #e6efc2; color: #264409; border-color: #c6d880; }
body .success a { color: #264409; }
body .hide { display: none; }
body .highlight { background: yellow; }
body .added { background: #006600; color: white; }
body .removed { background: #990000; color: white; }
body .box { padding: 1.5em; margin-bottom: 1.5em; background: #E5ECF9; }
body div.border { padding-right: 6.5px; margin-right: 7.5px; border-right: 1px solid #eeeeee; }
body div.colborder { padding-right: 27px; margin-right: 27px; border-right: 1px solid #eeeeee; }
body hr { background: #dddddd; color: #dddddd; clear: both; float: none; width: 100%; height: .1em; margin: 0 0 1.45em; border: none; }
body hr.space { background: #dddddd; color: #dddddd; clear: both; float: none; width: 100%; height: .1em; margin: 0 0 1.45em; border: none; background: #fff; color: #fff; }
body #container { width: 785px; margin: 0 auto; overflow: hidden; display: inline-block; }
body #container { display: block; }
body #content { display: inline; float: left; margin-right: 15px; width: 665px; }
* html body #content { overflow-x: hidden; }
body pre code { background-color: #262626; color: #bebebe; padding: 1em; line-height: 1.2em; display: block; }
-->



Eureqa Client for Mathematica README


Eureqa is a software tool by Michael Schmidt and Hod
Lipson
at Cornell for detecting hidden mathematical relationships
in quantitative data. The aim of this project is to provide a Eureqa
Client for Mathematica, so that Mathematica users can easily connect
to a Eureqa server and search through data for relationships. (See
this paper for details of the search method used.)

See the client in action here.



Dependencies

The following applications and libraries are required to build this
client.

Building

The source code
is available on github. No binaries are available.

$ git clone git://github.com/secelis/eureqa-mathematica-client.git

$ cd eureqa-mathematica-client
$ cmake .
$ make
$ make install

The client should build on Mac OS X and Linux without issue provided
you have the dependencies outlined above. Building the client on
Windows gave me some trouble, so for the time being I recommend only
trying it on Windows if you are willing to get your hands dirty with
some development; however, I welcome any patches to make building on
Windows easier.

Running

Once the client has been built and installed, it can be accessed from
within Mathematica with the following commands.

In[1]:= <<EureqaClient`

In[2]:= ?EureqaSearch

Here is an example of how to perform a search within Mathematica.

In[3]:= data = Table[{t,Sin[t]},{t,0,4 Pi, 0.1}]

In[4]:= EureqaSearch[data, "x = f(t)", VariableLabels -> {"t", "x"},
Host -> "10.211.55.3"]

Limitations

The client currently


  • can only handle one connection;

  • needs more documentation;

  • does no auto plots; and

  • does not calculate different error metrics automatically.

Soliciting Contributions

If you have Mathematica Workbench, I would be indebted to you for
creating the documentation templates.

I welcome help making the Windows build and installation work. I
think the trouble lies somewhere in the FindMathLink CMake module.

License

I am currently electing to be conservative and license this under the
GNU General Public License;
however, I am open to considering other licenses, if anyone wants to
suggest a better license for this project.

Acknowledgments

Thanks to Michael Schmidt and Hod Lipson for making such a fine tool
available.

Thanks to Todd Gayley for A MathLink Tutorial.

Thanks to Kashif Rasul, Jan Woetzel, Bart Janssen and Roel Jordans for
their work on the FindMathLink CMake module.


Written by Shane Celis on 2010-06-06.