QS mit CheckSummen und FileContent
Aus BAWiki
NEU seit Januar 2020: Die User können zur Qualitätssicherung mit dem md5sum-Algorithmus gebildete Checksummen von Input-Dateien nutzen und den Inhalt von ASCII-Eingabedateien direkt aus den NetCDF-Ergebnisdateien extrahieren. Beide Features sind nicht ISO 19115 konform und können somit nicht in das Metadaten-Informationssystem MIS der BAW übernommen werden. Die Informationen können aber u.a. mit dem ncdump-Befehl direkt aus entsprechenden NetCDF-Dateien der BAW gelesen werden. Die Features wurden im Rahmen des DMQS-Projektes in die Simulationsprogramme UnTRIM und UnTRIM2 sowie die mit NC beginnenden und NetCDF schreibenden Postprozessoren der BAW implementiert.
1. Checksumme
Checksummen dienen dazu die Gleichheit von Eingabedateien zweier ähnlicher Programmläufe zu prüfen. Die Programme bilden die Checksummen mit dem md5sum-Befehl und schreiben sie als Character-Variablen in die NetCDF-Ergebnisdateien. Als Beispiel folgt eine aus zwei Teilstrings bestehende Checksummen-Variable, die jeweils Prüfsummen und Datei-Infos aus NCDELTA-Steuerdaten enthalten:
md5sum_m_ncdelta_steer =
- "md5=c260d840c14f4482dfad41cdf971c2c5,
file=/net/lustre/temp/FuE/UNK/r028/ser/wrk/2019_11_05_POS/6_ncdelta/int/ncdelta.dat, descr=Eingabesteuerdatei des Typs ncdelta.dat",
- "md5=85f91901af2404c5ef23b06f6c766bff,
file=/net/lustre/temp/FuE/UNK/r028/ser/wrk/2D.r028.IZ_2012.integ.nc, descr=Data_Files-Reference_File";
Der Variableninhalt lässt sich für originale und neue NCDELTA-Läufe manuell extrahieren:
- ncdump –v <checksum_variable> <original_result.nc> > original.txt
- ncdump –v <checksum_variable> <new_result.nc> > new.txt
Der Vergleich der beiden Textdateien ergibt, ob im originalen und im neuen Lauf die exakt gleiche Eingabedatei verwendet worden ist. Wenn die Prüfsummen nicht identisch sind, kann das sowohl eine ggf. zu vernachlässigende Änderung der Metadaten als auch eine wesentliche Änderung der Zahlenwerte sein.
2. File-Content
BAW-Programme, die NetCDF-Dateien ausgeben, schreiben den Inhalt von ASCII-Eingabedateien in Form von NetCDF-Variablen. Sie sind durch das Attribut cf_role = "dmqs_file_contents" gekennzeichnet. Im nachfolgenden Beispiel in CDL-Syntax enthält die Variable den Inhalt einer Steuerdatei des Typs utromp2007.dat: contents_m_untrim2007_steer_utromp2007:
- long_name = "/net/themis/system/akprog/examples/untrim2007/run/channel/new_3d/utromp2007_new_3d.dat"
- short_name = "utromp2007_new_3d.dat"
- name_id = 3508
- comment = "Eingabedaten Paket m_untrim2007_steer File utromp2007_new_3d.dat"
- cf_role = "dmqs_file_contents" ;
Der Inhalt der Eingabedateien, bspw. die Parametrisierung eines Simulationslaufes lässt sich einfach aus der Ergebnisdatei rekonstruieren:
- ncdump –v <filcon_variable> <result.nc>
- mit dem MATLAB ncread Befehl
- usw.