cernopendata / opendata.cern.ch

Source code for the CERN Open Data portal
http://opendata.cern.ch/
GNU General Public License v2.0
657 stars 147 forks source link

View ROOT files in your browser, with JavaScript #203

Open RaoOfPhysics opened 10 years ago

RaoOfPhysics commented 10 years ago

@adavidzh pointed me to this: http://root.cern.ch/js/

@katilp, @tiborsimko, @tpmccauley: Do you think it's worth pointing to this from our records that have ROOT files? Could be a separate field. It will allow anyone to visualise the file without needing to download the VM or ROOT, which can be rather advantageous. Alternatively (as a long-term solution, perhaps?), we could potentially work with the developers to integrate a (slimmed-down?) version of this on the ODP, like the event display.

Just thinking out loud here. Feel free to chime in, @adavidzh.

katilp commented 10 years ago

I've heard of this last November at CHEP, it was really nice! At the time, there were some limitations (if I'm mistaking, fitting was not possible, and some other elaboration), which set some constraints on this really nice possibility. If the things have evolved, we could indeed include it. However, the point is that looking at the AOD file has little meaning on its own, further analysis is anyhow required and to do something meaningful, one needs the cmssw framework and vm.

tpmccauley commented 10 years ago

Yes, as @katilp points out, ROOT files in CMSSW format need CMSSW in order to know how to read and write the objects. This perhaps may be more appropriate for the top sample prepared by the CMS group from Hamburg which distilled down CMSSW data into ROOT ntuples.

adavidzh commented 10 years ago

I brought this up after looking around the issues and seeing some mention of displaying histograms. I think that in the documentation this would be a good way to avoid yet another layer between what people will see with root and what we show them in the documentation; i.e., the documentation can show exactly what they are supposed to get in their final analysis.

tiborsimko commented 10 years ago

we could potentially work with the developers to integrate a (slimmed-down?) version of this on the ODP, like the event display

This was in our plans for Invenio (i.e. it may be useful for other Invenio based sites, not only ODP) but we have not got to doing that yet...

tiborsimko commented 9 years ago

This perhaps may be more appropriate for the top sample prepared by the CMS group from Hamburg which distilled down CMSSW data into ROOT ntuples.

Now that basic histogramming is there, shall we revive this issue? @tpmccauley @katilp Are Hamborg files something we'd include in the portal?

katilp commented 9 years ago

All files that CMS has opened (now or earlier) should be available from the portal. I still do not know where ther Hamburg root files reside... @tpmccauley , do you know?

tpmccauley commented 9 years ago

If we want the files available I can provide an XML file for the collection.

tpmccauley commented 9 years ago

The tar file at the bottom of the page: http://ippog.web.cern.ch/resources/2012/cms-hep-tutorial contains the .root files as well as some root .C scripts

tiborsimko commented 9 years ago

Do we have some description? @pherterich Can you take care of creating a record for the Hamburg files?

tiborsimko commented 9 years ago

I'll now add FFT files...

tiborsimko commented 9 years ago

The files are there, so we can start thinking of ROOT file visualisations. CC @jirikuncar

jirikuncar commented 9 years ago

First step would be releasing “rootjs” as standalone javascript Bower package (see http://bower.io/search/?q=ispy-online). Can I see the source code repository somewhere? Just be aware that there is already a javascript library called Root.js (https://github.com/optikalefx/RootJS).

During my quick look inside the code I have just seen hardcoded variables that might cause problems in http://root.cern.ch/js/scripts/JSRootInterface.js

// global variables
// source_dir is the variable defining where to take the scripts and the list tree icons
// To use the local ones (e.g. when checking out the files in a web server), just let it
// empty: var source_dir = "";
var source_dir = "http://root.cern.ch/js/";
tiborsimko commented 9 years ago

Can I see the source code repository somewhere?

I believe this is the canonical home:

(BTW, see also https://github.com/rootpy for Pythonic bindings and WebOOT efforts)

adavidzh commented 9 years ago

I don't see hardcoded stuff at https://github.com/root-mirror/root/blob/master/etc/http/scripts/JSRootInterface.js

but I may have not looked hard enough.

tiborsimko commented 9 years ago

CC @bellenot @FonsRademakers

jirikuncar commented 9 years ago

I don't see hardcoded stuff at https://github.com/root-mirror/root/blob/master/etc/http/scripts/JSRootInterface.js

The deployed version is probably older.

@adavidzh are you planning to release it as a Bower package?

tiborsimko commented 9 years ago

@adavidzh are you planning to release it as a Bower package?

(I CC-ed above @bellenot and @FonsRademakers who created rootjs)

jirikuncar commented 9 years ago

The blocker for easy integration is here. Can we separate the javascript library to separate github repo and load dependencies using requirejs? (cc @bellenot or @FonsRademakers)

Axel-Naumann commented 9 years ago

Can you @bellenot and @jirikuncar meet for a hacking hour and get this done? I'll be serving the coffee.

jirikuncar commented 9 years ago

@karies sure. I am available next week. Please write me an email to discuss details. Thanks

linev commented 9 years ago

Hi, Development repository for JSROOT is https://github.com/linev/jsroot, only after some testing code goes into ROOT repository.

Few weeks ago I tried to implement workaround for situation when require.js loaded on the web page before JSROOT. Like this patch: https://github.com/linev/jsroot/commit/e64a629dcdf254578564e38078c7f7cc8501abf4

Open question is - could one use require.js functionality to load all required by JSROOT scripts? First of all, it could be difficult - one should rewrite loadScript and AssertPrerequisites functions: https://github.com/linev/jsroot/blob/master/scripts/JSRootCore.js#L404-L631 And second, require.js just one more script which should be loaded in advance (bootstrap?).

In simple case (drawing object from json file or http server) JSROOT loads only three scripts (including JSRootCore.js itself). Like: http://web-docs.gsi.de/~linev/js/dev/demo/example_json.htm

suenjedt commented 7 years ago

@tiborsimko can I close this or do you want to keep it?

linev commented 7 years ago

Just update on JSROOT - now it fully supports require.js for scripts loading.