Entries:
Comments:
Posts:

Loading User Information from Channel 9

Something went wrong getting user information from Channel 9

Latest Achievement:

Loading User Information from MSDN

Something went wrong getting user information from MSDN

Visual Studio Achievements

Latest Achievement:

Loading Visual Studio Achievements

Something went wrong getting the Visual Studio Achievements

John Platt: Introduction to Sho - A Playground for Data

Download

Right click “Save as…”

Sho is an interactive environment for data analysis and scientific computing that lets you seamlessly connect scripts (in IronPython) with compiled code (in .NET) to enable fast and flexible prototyping. The environment includes powerful and efficient libraries for linear algebra as well as data visualization that can be used from any .NET language, as well as a feature-rich interactive shell for rapid development. Here, we meet the lead researcher behind Sho - John Platt Sho is very, very cool and you can use it's powerful computational facilities from any managed language (or from C++/CLI). I highly recommend that you download and start playing with Sho, regardless of whether or not you program in Python. Props to John and his small team of talented developers!

Tags:

Follow the Discussion

  • MikeYeaneymyeaney Lovin the 9...

    This looks an awful lot like SciPy [1] and NumPy [2] (admitedly without the .NET integration)...thoughts?

     

    [1]: http://www.scipy.org/

    [2]: http://numpy.scipy.org/

  • The more I see of sho, the more interested I become.  My own work involves a lot of the same issues that led to the development of sho.  I really need to find some time (Ihave NO idea when) to play around with it and find out what problems it can solve for me. 

  • NovoxNovox “Simplicity is the ultimate ​sophisticat​ion.” —Leonardo da Vinci

    Very interesting project. Reminds me of Python(x,y), but with all the .NET goodness (tools, libraries). The managed MKL wrapper could proof to be actually very useful for my work.

    Are the plotting capabilities comparable to that of Gnuplot/Matplotlib? Does it support exporting plots to, say, SVG or PDF? Or is it currently aimed at at interactive visualization only?

    Python is certainly a nice language, but personally I'd prefer a nice and clean, functional, F# interface. If I find some time, I got to play around a little bit to see what that could look like.

  • , Novox wrote

    Are the plotting capabilities comparable to that of Gnuplot/Matplotlib? Does it support exporting plots to, say, SVG or PDF? Or is it currently aimed at at interactive visualization only?

    Python is certainly a nice language, but personally I'd prefer a nice and clean, functional, F# interface. If I find some time, I got to play around a little bit to see what that could look like.

    I would like to see support for DrawingML (given that most of the plotting I do ends up in Office anyway), but I also haven't had the time to play with it yet.

    Thanks to the .NET integration you should be able to use it with F# very easily, but I am also confused at why they choose Python instead of F#.

  • Thanks to the .NET integration you should be able to use it with F# very easily, but I am also confused at why they choose Python instead of F#.

    Probably because F# wasn't available back when they started working on sho.  Plus, Python has a much wider user base.  Not many people even know F# exists, much less want to do any functional programming.  I do think F# would a very good language from which to use sho, among others.  F# is easily covered by the .NET interface.  The Python interface just adds another option.

     

  • CharlesCharles Welcome Change

    , ryanb wrote


    *snip*

    Probably because F# wasn't available back when they started working on sho.  Plus, Python has a much wider user base.  Not many people even know F# exists, much less want to do any functional programming.  I do think F# would a very good language from which to use sho, among others.  F# is easily covered by the .NET interface.  The Python interface just adds another option.

     


    Also, as John said when I asked him about F#, the target of this tool was initially scientists, folks who use Python daily to script analytical prototypes (mathematical or data analytic lines of code that execute without the overhead and ceremony of composing code in some full blown static OO model)...

    IronPython solved two important problems for them: 1) Python is a widely-used scripting language for fast protyping in the Sho shell and 2) it seamlessly integrates with the the .NET Framework and its robust BCL.

    We also talked about PowerShell and if this could have been implemented in that world. The key point is that Python made the most sense and IronPython mad the decision even easier...

    C

  • ivan_ivan_ g

    Great interview, @Charles, as usual !!!

    @Novox, since it is .NET chart (plot) it probably inherits from UIElement, for which you may capture a bitmap.

    Here is an example for that:

    http://msdn.microsoft.com/en-us/library/aa969775.aspx

    Then you may convert images to PDF using Microsoft Report Viewer.

    Here is an example for that:

    http://isolvable.blogspot.com/2010/12/converting-images-to-pdf.html

    blessings.

    P.S. something is wrong with "Returns".

  • NovoxNovox “Simplicity is the ultimate ​sophisticat​ion.” —Leonardo da Vinci

    @ivan_: Thanks for the suggestion. I would still prefer a vector-based format, though (easier post-processing + better quality when scaled).

    The sho libraries are actually quite accessible from F#.

    let shoMat = ArrayRandom.RandomDoubleArrayNorm(10000, 10000)
    let invMat = shoMat.Inv()   // calls into the MKL, if SHODIR envvar is set correctly

    Not much more overhead than the Matlab version, but equally performant, statically typed and with superior tooling support. I'm looking forward to new sho versions Big Smile

  • GigiGigi

    IronPython development slowed down significantly since Microsoft dropped it. Aren't you concerned about this? I'm using IronPython myself and loving it. I've also integrated it with R, obtaining something similar with Sho, but with R behind :)

  • Allan LindqvistaL_ Kinect ftw

    sho looks really  cool although im firmly planted in the use-the-libraries-from-c# camp Smiley are those slides with the c# examples available somewhere?

  • ivan_ivan_ g

    @Novox: true. But you can also scale visual using ScaleTransform (if it is WPF control) before capturing it into bitmap thus getting a higher resolution.

    I have not tried this but you may try capturing visual into WMF or some other vector format.

    You may also pass data directly to a report viewer chart (this is more involved for dynamic types of charts), but then you get vector charts, when rendering report to PDF you will need to specify higher resolution.

  • CharlesCharles Welcome Change

    , aL_ wrote

    sho looks really  cool although im firmly planted in the use-the-libraries-from-c# camp Smiley are those slides with the c# examples available somewhere?

    It's like using any other external managed assembly... http://research.microsoft.com/en-us/projects/sho/shoexternalapis.aspx

    C

  • @ivan_: A Sho plot object has a SaveImage(filename) method, so you can save to any of the standard raster formats (jpg, png, etc.), and we also made it save to .eps (for inclusion into TeX papers)

    --- John

     

  • ivan_ivan_ g

    @shoteam: this is great! 

    Then for @Novox it will be even easier to convert plots/charts to PDF Smiley, since there is no need to figure out how to capture capture them as image!

  • Chris Tracyyzorg Building wisdom in ​organizatio​ns is humanities greatest challenge.
    I love the easy integration of data visualization.  Might consider looking at the recent PowerShell samples by Doug Finke that output to HTML/jQuery, but layering in jQuery visualization libraries. 
     
    He's from my industry sector, financial services, and we also work with mountains of data quickly and often in an ad-hoc manner in reaction to world events.
     
    http://www.dougfinke.com/blog/index.php/2011/02/15/how-to-send-powershell-output-to-a-jquery-interactive-datatable-in-a-web-browser/

Remove this comment

Remove this thread

close

Comments Closed

Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums,
or Contact Us and let us know.