2009-06-26 10 views
7

Das Datenanalyse-Framework ROOT, das häufig in der Hochenergiephysik verwendet wird, verwendet ein binäres Dateiformat, das eine interne Struktur wie ein reales Dateisystem aufweist (d. H. Ordner & Dateien). Die ls() -Methode Ausgabe aus dem Programm in etwa so aussehen:Implementieren einer dired-Schnittstelle in Emacs für etwas anderes als das Dateisystem?

KEY: TH1D  name1 
    KEY: TH1D  name2 
    KEY: TH2D  name3 
.... 

Wo „TH1D“ und „TH2D“ usw. ist nur Typ-Objekt. Es wäre schön, die Datei in einer direkten Schnittstelle in Emacs zu durchsuchen. Ich habe sicherlich nicht die Energie/Zeit, um eine Dired-Schnittstelle dafür von Grund auf neu zu schreiben (auch mit Hilfe der dired.el-Quelle). Meine Frage ist: wenn möglich, wie kann ich einfach in die Dired-Schnittstelle aufnehmen, indem ich einige Funktionen neu implementiere, um eine Dired-ähnliche Schnittstelle für die Ausgabe wie oben zu erstellen?

Ich erwarte hier sicherlich keine Komplettlösung, sondern eher Hinweise auf Beispiele, Tutorials und andere nützliche Informationen.

+0

Ich habe versucht, Dinge wie diese zu tun (Registerkarte vollständige ROOT-Verzeichnisnamen). Die nervige Sache ist, dass der Zugriff auf ROOT-Dateien extrem schwer ist; Sie müssen das Framework nur initialisieren, um eine Datei zu betrachten, die ~ 1s dauert. Sicher, es funktioniert, aber es ist ein bisschen klobig. Wenn Sie Ihre Daten in einem anderen Format speichern (z. B. HDF5), haben Sie eine bessere Zeit. – Shep

Antwort

3

Wenn es ähnlich genug zu einem Dateisystem ist, könnten Sie vielleicht etwas von Loopback-Treiber schreiben, was Ihnen erlaubt, die Datei als Dateisystem zu mounten, ähnlich wie Sie ein ISO-Image als Dateisystem mounten können. Mein sehr begrenztes Verständnis ist, dass dies unter Linux nicht besonders schwer ist.

+0

Ja, es ist sehr einfach und Sie können es für viele verschiedene Zwecke verwenden. Siehe fuse.http: //fuse.sourceforge.net/ – Ben

4

archive-mode oder tar-mode könnte gute Startpunkte sein.

1

xRootdfs von jemandem bei Slac scheint dies jetzt zu tun. "rootdFS ist ein Posix-Dateisystem für einen Xrootd-Speichercluster. Es basiert auf FUSE (Dateisystem in Userspace) und wird im Benutzerbereich ausgeführt."

aber ich erwarte, dass Sie Root-Zugriff benötigen, um das FUSE-Modul zu laden.