Shogun machine learning toolbox

498 views
Skip to first unread message

Heiko Strathmann

unread,
Sep 17, 2013, 7:17:52 AM9/17/13
to juli...@googlegroups.com
Hi there,

I am a developer of the Shogun machine learning toolbox. http://shogun-toolbox.org/
The framework is written in C++ since 1999 and grew quite larger over time. We currently have a very active community and also 8 GSoC students working for us.
We use SWIG for generating interfaces to many languages (python, java, c#, octave, R, lua, etc). This works via mapping the c++ classes to the target languages and allows to use Shogun using a unified interface from all of them.

Some examples of current GSoC projects (work in progress) and other things:

This mail is just meant to be a friendly hello :)
I was wondering whether anyone here has experience with SWIG and Julia. We are very much interested in offering a Julia interface at some point.
It would be nice for you to have access to a machine-learning/statistics package and it would be nice for us to increase our user-base, in particular from a young and active community.
So if anyone of you is interested in adding SWIG support for Julia and/or writing typemaps for Shogun, please let me know :)

Best!
Heiko

Viral Shah

unread,
Sep 17, 2013, 12:53:02 PM9/17/13
to juli...@googlegroups.com
Hello Heiko,

I doubt there has been much work done on Swig and Julia. However, if you have a C-callable interface, perhaps generated with swig, that may offer a path to use Shogun through Julia. I was not aware of Shogun, but it looks like a lot of work has gone into it, and we would love to have a Julia Shogun package to extend our budding machine learning capabilities.

Hopefully your email will get something going.

-viral

Dahua

unread,
Sep 17, 2013, 1:05:33 PM9/17/13
to juli...@googlegroups.com
Shogun is a well known library in machine learning, which provides a rich collection of classifiers and other algorithms. It would be great to have shogun on board with Julia.

I believe C++ OOP is extensively used in Shogun -- therefore calling such interface directly from Julia would requires tremendous efforts (if not impossible). I guess it would be easier to translate the C++ codes to Julia.

- Dahua

Kevin Squire

unread,
Sep 17, 2013, 1:16:03 PM9/17/13
to juli...@googlegroups.com
There is Tim Holy's `Cpp.jl` package, which might be useful here.


Kevin

Tim Holy

unread,
Sep 17, 2013, 9:46:49 PM9/17/13
to juli...@googlegroups.com
On Tuesday, September 17, 2013 10:16:03 AM Kevin Squire wrote:
> There is Tim Holy's `Cpp.jl <https://github.com/timholy/Cpp.jl>` package,
> which might be useful here.

Even better is Isaiah's Clang: https://github.com/ihnorton/Clang.jl
He's put a lot of recent work into it, and my impression (not having tested it
myself recently) is that the C++ support has come a long ways.

--Tim

>
>
> Kevin
>
> On Tue, Sep 17, 2013 at 10:05 AM, Dahua <lind...@gmail.com> wrote:
> > Shogun is a well known library in machine learning, which provides a rich
> > collection of classifiers and other algorithms. It would be great to have
> > shogun on board with Julia.
> >
> > I believe C++ OOP is extensively used in Shogun -- therefore calling such
> > interface directly from Julia would requires tremendous efforts (if not
> > impossible). I guess it would be easier to translate the C++ codes to
> > Julia.
> >
> > - Dahua
> >
> > On Tuesday, September 17, 2013 11:53:02 AM UTC-5, Viral Shah wrote:
> >> Hello Heiko,
> >>
> >> I doubt there has been much work done on Swig and Julia. However, if you
> >> have a C-callable interface, perhaps generated with swig, that may offer
> >> a
> >> path to use Shogun through Julia. I was not aware of Shogun, but it looks
> >> like a lot of work has gone into it, and we would love to have a Julia
> >> Shogun package to extend our budding machine learning capabilities.
> >>
> >> Hopefully your email will get something going.
> >>
> >> -viral
> >>
> >> On Tuesday, September 17, 2013 4:47:52 PM UTC+5:30, Heiko Strathmann
> >>
> >> wrote:
> >>> Hi there,
> >>>
> >>> I am a developer of the Shogun machine learning toolbox. http://shogun-*
> >>> *toolbox.org/ <http://shogun-toolbox.org/>
> >>> The framework is written in C++ since 1999 and grew quite larger over
> >>> time. We currently have a very active community and also 8 GSoC students
> >>> working for us.
> >>> We use SWIG for generating interfaces to many languages (python, java,
> >>> c#, octave, R, lua, etc). This works via mapping the c++ classes to the
> >>> target languages and allows to use Shogun using a unified interface from
> >>> all of them.
> >>>
> >>> Some examples of current GSoC projects (work in progress) and other
> >>> things:
> >>> http://nbviewer.ipython.org/**6576096<http://nbviewer.ipython.org/657609
> >>> 6>
> >>> http://nbviewer.ipython.org/**6579472<http://nbviewer.ipython.org/657947
> >>> 2>
> >>> http://nbviewer.ipython.org/**urls/raw.github.com/pickle27/**shogun/**
> >>> f9bf7ebd52f7536a552b28f8a87202**072c0d89b0/doc/ipython-**
> >>> notebooks/bss/bss_jade.ipynb<http://nbviewer.ipython.org/urls/raw.github
> >>> .com/pickle27/shogun/f9bf7ebd52f7536a552b28f8a87202072c0d89b0/doc/ipytho
> >>> n-notebooks/bss/bss_jade.ipynb>
> >>> http://nbviewer.ipython.org/**5982625<http://nbviewer.ipython.org/59826
> >>> 25>
> >>> http://nbviewer.ipython.org/**5982623<http://nbviewer.ipython.org/59826
> >>> 23>

Kevin Squire

unread,
Sep 17, 2013, 11:29:21 PM9/17/13
to juli...@googlegroups.com
On Tue, Sep 17, 2013 at 6:46 PM, Tim Holy <tim....@gmail.com> wrote:
On Tuesday, September 17, 2013 10:16:03 AM Kevin Squire wrote:
> There is Tim Holy's `Cpp.jl <https://github.com/timholy/Cpp.jl>` package,
> which might be useful here.

Even better is Isaiah's Clang: https://github.com/ihnorton/Clang.jl
He's put a lot of recent work into it, and my impression (not having tested it
myself recently) is that the C++ support has come a long ways.

--Tim

Thanks!  I hadn't realized that Clang.jl supported C++.

Kevin 

Heiko Strathmann

unread,
Feb 22, 2014, 7:13:49 PM2/22/14
to juli...@googlegroups.com
Hey there!

Sorry for the extreme delay in my response. I am happy that you guys responded positive.
We are currently very busy preparing GSoC 2014, and that got me thinking again of this thread here, as it might be a nice project in fact (I know its short notice for 2014, but we are always looking for ideas in general)

A few thoughts on your responses:
-Our swig back-end is quite complicated: mapping types, templates, objects to languages such as python/R/octave in a unified way took a while to be stable. I am not sure why this would be easier for c->julia (eventhough you have those automagic wrappers). Mapping simple functions is one thing, but mapping large diverse class hierarchies is way more difficult. I am not sure whether those clang wrappers will work (though would be a good try!).

-Translating old, mature code seems a bit of an infeasible project to me. Many people spent many years coming up with solutions for problems, so why bother re-implementing such code. 

-Does Julia have bindings to existing toolkits out there? How do you do it?

Best!
Heiko
Reply all
Reply to author
Forward
0 new messages