Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Honza1Ubuntu 01. 10. 2018, 18:26:41

Název: Vytváření grafu v Gnuplotu bez zápisu datových souborů na disk
Přispěvatel: Honza1Ubuntu 01. 10. 2018, 18:26:41
Ahoj

Mam Fortranovsky program pro vypocet, ktery pocita urcity model a pri tom pravidelne zapisuje data na disk a spousti skript pro tvorbu grafu v Gnuplotu.

Vypis hodnot do TXT souboru - skript ve Fortranu
Kód: [Vybrat]
!Vypis hodnot pro tvorbu mapy
open(4,file='DataZVypoctu'//trim(STW)//'.txt',status='unknown', access='append')
write(4,fmt="(T1,I14,T30,E20.14,T60,E20.14,T90,E20.14,T120,E20.14,T150,E20.14,T180,E20.14,T210,E20.14,T240,E20.14,T270,E20.14,T300,E20.14,T330,E20.14,T360,E20.14, &
T390,E20.14)") &
           ID,Time,TimeDay,TimeDaySyn,TimeYear,Dt,RA,DEC,T,TpartialT,Q,S,K,ForcingT ! KST jsou hodnoty, PST derivace
close(4,status='keep')

!Zavolani skriptu pro tvoreni map v Gnuplotu
call system('Bash_Skript_Pro_Vytvoreni_Mapy.sh')


Tvorba grafu v Gnuplotu - Bash_Skript_Pro_Vytvoreni_Mapy.sh
Kód: [Vybrat]
awk '{ print $'${CollA}'"  "$'${CollB}'"  "$'${CollC}'}'< DataZVypoctu.txt > DataDoMapy.dat ## Vybrani 3 sloupcu pro Gnuplot
 ## Vysledkem PNG obrazek  heatmap.png, skript pro Gluplot pouzije datovy soubor DataDoMapy.dat
mv heatmap.png ${ST}_MAP_${TP}_${PR}_${VEL}.png ## Prejmenovani souboru
./Interp.out < DataDoMapy.dat > DataDoMapyInterplolovana.dat ## vytvareni dat pro interpolovanou mapu pomoci Fortranovskeho programu
gnuplot  Creating_Map_Sphere.plt ## Vytvoreni interpolovane mapy, vysledkeme je PNG soubor

Datove soubory jsou velke a narocne pro zapis na disk, vysledne PNG obrazky maji cca 50-200 kB, vysledkem jsou vzdy 2 klasicke a 2 interpolovane mapy, celkem 4 PNG obrazky. Vsechny velke datove soubory se po probehnuti cyklu smazou.

DataZVypoctu.txt cca 65 MB
DataDoMapy.dat cca 15 MB
DataDoMapyInterplolovana.dat cca 90 MB

Pokud by tento cyklus bezel radove stokrat, tak by to jeste nevadilo moc, ale dany cyklus kresleni map bezi cca 300 000 krat. Datove soubory se zapisuji na disk, a pak se po vytvoreni mapy smazou. Interpolace zabere par minut CPU, coz neni tak hrozne, CPU neresim, a na RAM to taky moc narocny neni, do 500 MB.

Otazkou je, jak to udelat, aby Fortranovsky skript i bash skript nezapisoval velke datove soubory na disk, ale nejak je v RAM predal skriptu pro Gnuplot a na disk se zapsal jen vysledny PNG obrazek
Název: Re:Vytvareni grafu v Gnuplotu bez zapisu datovych souboru na disk
Přispěvatel: agent 01. 10. 2018, 18:35:32
Ramdisk - a kód může zůstat beze změn  :)
Název: Re:Vytvareni grafu v Gnuplotu bez zapisu datovych souboru na disk
Přispěvatel: fi 01. 10. 2018, 18:39:25
Moznosti je nekolik:
 - pojmenovana roura
 - plot '<cat' using ... (a nebo jiny prikaz)
 - plot /dev/stdin using ...
Název: Re:Vytváření grafu v Gnuplotu bez zápisu datových souborů na disk
Přispěvatel: tmp 01. 10. 2018, 20:12:36
něco obdobného řešil před časem a to pomocí roury, zjednodušeně funguje :
cat data | gnuplot -p -e "plot '< cat -' using 1:2 with lines"