Noumena

The JavaScript (Canvas) Hyperbolic Browser

Works in Firefox 1.5+, Safari and Opera 9.5

05/10/2008 IMPORTANT UPDATE:

What's a Hyperbolic Tree?

sqlogo2.gif A Hyperbolic Tree (HT) is a "focus+context" information visualization technique used to display large amount of inter-related data. This technique was originally developed (and patented) at Xerox PARC.


How does it work?

The HT algorithm plots a tree in what's called the Poincaré Disk model of Hyperbolic Geometry, a kind of non-Euclidean geometry. Roughly speaking, the HT algorithm applies a moebius transformation to the tree in order to display it with a magnifying glass effect.

How to Browse?

Just click anywhere on the tree to change its focus.

Integrating the HT with "real data":

tree.musictrails is a web app that relates artists by common performances on bands, discs, compilations, etc.
This way you can inter-relate artists/bands to other artists/bands the same way you'd do with actors at the "six degrees of separation" game.

See for example a Pearl Jam query. I'll wait for you right here.
See what happened? The page queried all Pearl Jam's related artists (mainly the members of the band) and then connected those artists to other bands they took part.

Well, I use this data to make a music recommendation engine that allows you to (hyperbolic) browse through bands and related artists in order to get to know new music as fast as possible.

Once the HT is loaded, there are just two rules for browsing it:

  • Click on a yellow label to load the band's hyperbolic tree, or...
  • Click anywhere else on the tree to get proper focus. Only the centered node and its children will display their names. (see image below)

Browse some examples: Pearl Jam, Nine Inch Nails, Radiohead, Metallica, Ozzy Ozbourne, Mad Season, Foo Fighters, etc.
Just click on "Hyperbolic Browse this" to see the corresponding hyperbolic tree of the musictrails recommendation.

Liked it?

Musictrails is an advanced tool for music recommendations based on lastfm user tastes and the tree.musictrails "six degrees" method mentioned above. Just go to our home page, search for a band, and click on the results to watch recommended bands' youTube videos.

Are you a lastfm user and would you like to play with your lastfm stats?

Musictrails is more than just a music recommendation engine. We use JavaScript sql-like queries to retrieve your lastfm music stats and display them in innovating and interesting ways.
You only have to sign up with your lastfm username (no lastfm password needed).

Try it out, I promise you won't regret it.

About the HT

This work is based on

You can get the source code here. The code is hold under the MIT license.
This code works fine with Firefox1.5+, Opera 9.5 and Safari. Haven't tested it on IE with the excanvas library yet :P.

Get more information on how to use the hyperbolic tree here.



Post to: Post to BlinkBits Post to BlogMarks Post to Del.icio.us Post to Digg Post to Fark Post to Furl Post to Google Post to Ma.gnolia Post to MyWeb Post to Netscape Post to NetVouz Post to Newsvine Post to RawSugar Post to Reddit Post to Scuttle Post to Shadows Post to Simpy Post to Slashdot Post to Spurl Post to Technorati Post to Wists


41 responses so far ↓

  • posted on: 8/22/2008

    this is good, very much in line with the meta tagging and media streams movements. You should apply this to a browser plugin. Learn & Review programming languages: <a href='http://www.codesplunk.com'>http://www.codesplunk.com</a>

  • posted on: 7/24/2008

    good help for bigginer

  • posted on: 7/21/2008

    hi!

  • posted on: 5/16/2008

    Hi, sorry, the new version is here: http://thejit.org bye!

  • posted on: 5/16/2008

    posted on: 5/4/2008 - Yes it is. But if you wait until next week it will no longer be like that. How is it going with your new version? I still see v1.0 only available?

  • posted on: 5/15/2008

    Hi, I need you help. I have faced a weired problem while using this old API. Whenever I call loadTree() after adding nodes and adjacencies, the plotting of nodes goes infinite. I guess, it is a problem with setInterval() and clearInterval() thing. Can you plzz, provide me your e-mail to discuss it further. Also, can't use new API as its loadTree() takes only JSON as parameter. Please, reaply at the earliest.

  • posted on: 5/4/2008

    Yes it is. But if you wait until next week it will no longer be like that.

  • posted on: 4/29/2008

    Would I be correct in understanding that the "loadTreeByJSON" function is limited to three levels? Root, Child, and Grandchild?

  • posted on: 4/21/2008

    Hi, in a couple of weeks I'll be releasing a new version of the hyperbolic tree. This version will have a modular, clearer code, and a lot of performance improvements. If you are interested please give me your e-mail and I'll contact you. You can also email me at musictrails[at]gmail[dot]com. Stay tuned, I promise you won't regret having waited a couple of weeks for this.

  • posted on: 4/9/2008

    Can you give clear step-by-step example of adding nodes and label them? Example may be - root node = world 1st children = asia,Europe, America grand Children = USA,India,England

  • posted on: 3/15/2008

    it is not visible in safari on the ipod.

  • posted on: 3/3/2008

    Looks very nice, how many nodes can be rendered in 10 seconds and how does it scale with increasing nodes..

  • posted on: 2/9/2008

    Very great and useful tool! But how to define where the data is coming from? Is it possible to add textfiles, a MySQL-database or xml-files (feeds) where this tree can get it's information from? I can't find this in the Javascript-file...

  • posted on: 1/14/2008

    Sorry, I don't work with .NET technologies :-(

  • posted on: 1/11/2008

    Dear, I'm looking for the .Net objects to work with hyperbolic maps. Do you have some news about that? Or you work only with JavaScript tecnologies? Att, erfelipe@hotmail.com

  • posted on: 1/10/2008

    That way, by calling the method loadTreeByJSON you can add labeled nodes to your tree. You should take also a look at the "objects" section of the API reference mentioned a the top of the page.

  • posted on: 1/10/2008

    Hi, JSON generated trees are always 2-level trees. Take a Pearl Jam query: {"Pearl Jam":{"Pearl Jam & Cypress Hill":["Cypress Hill"],"Neil Young & Pearl Jam":["Neil Young"],"Jeff Ament":["Temple of the Dog","Mother Love Bone","Green River","M.A.C.C.","Three Fish","Gossman Project"],"Stone Gossard":["Temple of the Dog","Mother Love Bone","Brad","Green River","Gossman Project"],"Eddie Vedder":["Temple of the Dog","Eddie Vedder & Zeke","Bad Radio","Beck & Eddie Vedder"],"Mike McCready":["Mad Season","Temple of the Dog","$10,000 Gold Chain","M.A.C.C.","The Rockfords","Gossman Project"],"Matt Cameron":["Soundgarden","Temple of the Dog","Eleven","Queens of the Stone Age","Wellwater Conspiracy","M.A.C.C.","Tone Dogs"],"Dave Krusen":["Candlebox"],"Matt Chamberlain":["Critters Buggin","Edie Brickell and New Bohemians"],"Dave Abbruzzese":["Green Romance Orchestra"],"Jack Irons":["Redd Kross","Eleven","Red Hot Chili Peppers","Anthym","What Is This?"]}}

  • posted on: 1/9/2008

    how do you insert labels in the nodes? Do you have sample data to show? By the way its awesome.

  • posted on: 1/9/2008

    supperbe.tushar lashkari...lashkaritushra@gmail.com

  • posted on: 1/9/2008

    gorgeous !!

  • posted on: 1/4/2008

    Very cool, Thumb up!

  • posted on: 12/21/2007

    Hey, thanks!

  • posted on: 12/20/2007

    This works with Internet Explorer if you include this script http://excanvas.sourceforge.net/ and remove the test for HTMLCanvasElement in the Canvas constructor. A little slower though.

  • posted on: 12/13/2007

    nice

  • posted on: 10/30/2007

    Alles Torfnasen!

  • posted on: 10/25/2007

    Very cool man. Next thing would be to package it up as a download with an easy to follow sample. Nice work!

  • posted on: 10/25/2007

    Amzing Dude. Hats off..

  • posted on: 10/16/2007

    at gmail dot com

  • posted on: 10/16/2007

    Hi, Boris. It's like 5am in Argentina and I was looking forward to get some sleep, so I'll look into it tomorrow and tell you what I think. You can e-mail me at: musictrails

  • posted on: 10/16/2007

    Hello, this is a great tool. I'd like to implement something like this for my project - memory bank of Humankind: you can find more info here: www.memorycemetery.com/about; so let's say clicking on a tag associated with dream or memory will show related deposits (containing same tag) and their authors, and clicking further on one of those deposits will show other posts by same author: it would be great if we could explore relationships between different people's reality perception...unfortunately I'm an artist, not a programmer :0...If you could help me with that (provided with credits and eternal gratitude), your help will be very appreciated. Sorry for posting it here: I couldn't find your email on the site. Once again, great project. Thanks, Boris. Please contact me on boris@memorycemetery.com if you'd be interested in giving me hand in developing this project and collaboration. Cheers

  • posted on: 10/13/2007

    hahahhahahahahahaha

  • posted on: 10/12/2007

    very exciting. is it possible in rectangular form amitesingh@gmail.com

  • posted on: 10/12/2007

    very exciting. is it possible in rectangular form amitesingh@gmail.com

  • posted on: 10/12/2007

    very exciting. is it possible in rectangular form amitesingh@gmail.com

  • posted on: 10/12/2007

    very exciting. is it possible in rectangular form amitesingh@gmail.com

  • posted on: 10/11/2007

    very impressive.

  • posted on: 10/11/2007

    cleaver and interesting

  • posted on: 10/10/2007

    Throwing lots of JS errors in FF2 on a Mac. "An invalid or illegal string was specified" code: "12"

  • posted on: 10/4/2007

    I'm not selling it, so...

  • posted on: 10/4/2007

    patented, though?

  • posted on: 10/3/2007

    cool!

Comments





Security Code: