Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: "Dr. Volker Jaenisch" Newsgroups: de.comp.lang.python Subject: Re: [Python-de] Wie Key-Value Sets speichern? Date: Wed, 28 Sep 2016 22:58:52 +0200 Lines: 105 Message-ID: References: <5451e46e-5eca-e89d-61ef-2030e6aee36e@xgm.de> <95c64ce4-f337-280c-f339-01a2b58cfd36@inqbus.de> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable X-Trace: news.uni-berlin.de IU5f8YOa4XB2Fq5hJ3umSwyRJJfPNblpDXJjFd6oRgEA== Return-Path: X-Original-To: python-de@python.org Delivered-To: python-de@mail.python.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=inqbus.de; s=20160215; h=Content-Type:In-Reply-To:MIME-Version:Date:Message-ID:From:References:To:Subject; bh=PQreDW5ZP3ilCKIbrOuuQCo71YrG0RDaedqojwrEuwI=; b=Pipwc6TB40UoKAibrr6s94DYmEp0BY32u+GbhOs1cm4unnfEYPFBNUTMNqoEmczWAutZS7iis13baiDReCwuoWmVMV2FErtDhIIjNLmMv8pSXx63wzTIdq1ZRtZC9BLHsYi/+V5nMnC91xmBTBIvsHyKqMx9loRS4Tg+IhloKVw=; User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.1.0 In-Reply-To: <5451e46e-5eca-e89d-61ef-2030e6aee36e@xgm.de> X-Content-Filtered-By: Mailman/MimeDel 2.1.23 X-BeenThere: python-de@python.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Die Deutsche Python Mailingliste List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <95c64ce4-f337-280c-f339-01a2b58cfd36@inqbus.de> X-Mailman-Original-References: <5451e46e-5eca-e89d-61ef-2030e6aee36e@xgm.de> Xref: csiph.com de.comp.lang.python:4552 Servus Florian! Am 28.09.2016 um 00:09 schrieb Florian Lindner: > Dabei will ich folgendes: > > - Die Datei soll menschen-lesbar sein > > - Eingelesen werden soll es mit Python um dann z.B. mit numpy weiterver= arbeitet werden. > > Wie w=FCrde nun ein geeignetes Datenformat ausschauen, was ich dann auc= h problemlos mit Python einlesen kann? Ich frage mich, was Du mit dem Ganzen eigentlich bezweckst. Du willst aus C++ in ein menschenlesbares Datenformat schreiben um es dann zu Parsen um es dann mit Numpy zu verarbeiten? Das erscheinen mir gleich zwei Widerspr=FCche zu sein: Wenn Du numpy brauchst sind es viele Daten. Wenn Du viele Daten hast, will die sich ein Mensch nicht mehr anschauen. Und Du willst keinen Parser daf=FCr bauen, weil der a) langsam sein wird und b) Du dir wirklic= h sicher sein musst, dass er richtig funktioniert. Was bei vielen Daten nicht ganz einfach zu =FCberpr=FCfen ist. Dein Daten sind irregul=E4r, also keine rechteckige Matrix. Daher ist Numpy sowieso nicht gut geeignet diese Daten direkt zu verarbeiten. Warum willst Du also Dinge, die sich unterscheiden in einer Datei aneinander h=E4ngen, um sie sp=E4ter f=FCr die Verarbeitung in Numpy wied= er auseinander zu pfriemeln. Wenn Du an Deiner "Alles in einen File"-Strategie festh=E4lt, wirst Du beim Einlesen sowieso eine Art von Dispatching machen m=FCssen um die (sofern ich verstanden habe homogenen) Daten der einzelnen Runs wieder aus Deinem File zu extrahieren. Wir verarbeiten f=FCr einen gro=DFen KFZ-Hersteller CAN-Bus-Daten. Das si= nd Signale die je nach Datenquelle anders kodiert sind. Also z.B. "Blinker Hinten Rechts" hat nur ein paar Zustands-Bits. Dagegen ist die Drehzahl, das Drehmoment und der =D6ldruck, des Motors ein Flie=DFkomma-Wert. Alle diese Daten kommen als ein gro=DFer Datenstrom an. Das Problem ist also dem Deinigen evtl. =E4hnlich gelagert. Jede da drau=DFen mit CAN-Daten besch=E4ftigte Firma baut sich, wie Du es auch vor hast, ein eigenes Datenformat, um mit den Daten umzugehen. Wir wollten nicht den gleichen Fehler machen und haben ein standardisiertes Datenformat genommen. Wir dispatchen die CAN-Daten nach der Datenquelle jeweils in eine Tabelle eines HDF5-Files. Es gibt also eine Tabelle f=FCr den "Blinker hinten rechts" und eine andere Tabelle f=FC= r die Motordaten. Jede dieser HDF5-Tabellen hat dabei eine andere Struktur. HDF5 ist ein sehr flexibles selbst dokumentierendes, standardisiertes, komprimiertes, bin=E4res, plattformunabh=E4giges Datenformat welches mit zwei Python-Befehlen eine Tabelle in einen numpy Array lesen/schreiben kann [1]. Ein HDF5-File ist aufgebaut wie ein Dateisystem mit Ordnern in denen Tabellen (und beliebige andere Dinge wie z.B. Grafiken) liegen k=F6nnen. Noch dazu kann mit mehr als C-Geschwindigkeit in gigantisch gro=DFen Datenbest=E4nden (gr=F6=DFer als= der verf=FCgbare RAM) aus Python heraus gesucht und gefiltert werden. HDF5 ist erstmal nicht menschenlesbar - was meiner Meinung nach auch in den seltensten F=E4llen n=F6tig oder w=FCnschenswert ist. Aber es gibt mi= t hdf5dump und hdfview [2] plattformunabh=E4ngige Werkzeuge um HDF5-Files konfortablel zu betrachten oder in menschenlesbare Form zu bringen. Die Python Charting-Software VEUSZ [3] kann HDF5-Files direkt einlesen und verarbeiten, wie auch alle anderen gr=F6=DFeren Charting-Programme Import-Filter f=FCr HDF5 anbieten. Ich habe mit Aesir [4] einen QT-Python-HDF5-Viewer programmiert der deutlich schneller als HDFView ist. Auch haben wir Datenklassen f=FCr Plone programmiert, um direkt im Browser durch HDF5-Files zu navigieren und deren Tabellen als Web-Tabellen und Charts darzustellen zu k=F6nnen [5]. Das ist der gro=DFe= Vorteil eines gut dokumentierten und standardisierten Datenformats, es ist eine gute Basis um selber darum ein =D6kosystem zu entwickeln. Ich hoffe Du erz=E4hlst uns ein bisschen mehr =FCber Dein Projekt, dann k=F6nnen wir Dir sicher bessere Ratschl=E4ge geben als JSON, YAML, welche= beide mit Numpy nicht so recht zusammengehen. Beste Gr=FC=DFe Volker [1] http://www.pytables.org/ [2] https://support.hdfgroup.org/products/java/hdfview/ [3] http://home.gna.org/veusz/ [4] Noch nicht released. Kann bei Interesse aber gerne das Teil "as is" mal auf github schieben. [5] Erste Prototypen. --=20 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D inqbus Scientific Computing Dr. Volker Jaenisch Richard-Strauss-Stra=DFe 1 +49(08861) 690 474 0 86956 Schongau-West http://www.inqbus.de =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D