No datiem līdz skaistam grafikam: moderna zinātnieka programmatūras rīki

Par autoru

Mg. Phys. Kristaps Bergfelds ir LU FMOF Skaitliskās modelēšanas institūta pētnieks, kura ikdienas darbs saistīts ar fizikālu datu iegūšanu, apstrādi un attēlošanu. Papildus darbam institūtā Kristaps pasniedz programmēšanas praktiskos darbus LU fizikas studentiem (programmēšanas un datu apstrādes pamatus, izmantojot programmēšanas valodu Python). Šī raksta tapšanas pamatā ir Kristapa gadu gaitā uzkrātā pieredze un novērojumi par savu, kolēģu, kā arī studentu tipiskām ikdienas vajadzībām darbā ar datoru.

Ievads

Mūsdienu darbs zinātnē, tehnoloģijās un daudzās citās jomās nav iedomājams bez datorprasmēm! Taču ar to jāsaprot daudz vairāk nekā interneta lapu lietošanu, teksta redaktoru un e-pastu. Mūsdienu tehnoloģiju vide un attīstības straujums prasa tehnoloģiju speciālistiem un zinātniekiem pārzināt datu apstrādes metodes, datu vizualizāciju un daudzas citas jomas. Dators ir zinātnieka nepārtraukts sabiedrotais – Šveices nazis, kas vienmēr jātur kabatā ass!

Taču atšķirībā no naža, datoram nav taustāmu asmeņu un instrumentu. Tā vietā šīs dažādās funkcijas pilda uz datora instalētās lietojumprogrammas. Zināt, kuras tieši programmas būs noderīgas zinātnieka ikdienā, bieži vien ir ilgs un sāpīgs meklējuma process, ko šajā rakstā veiktais apkopojums mēģina atvieglot.

Rakstā ir apkopota virkne ar noderīgu brīvpieejas programmatūru, kas noderēs ikvienam, kas saskaras ar datu apstrādes u.c. tipiskiem zinātnieka darba uzdevumiem. Raksts ir paredzēts iesācējam, kas izmanto Windows operētājsistēmu. Taču jāatzīmē, ka daļa no programmatūras ir pieejama arī Linux vidē.

Šis raksts ir tapis kā atbalsta materiāls Latvijas Jauno zinātnieku apvienības 2021. gada 6. janvāra tiešsaistes pasākumam “Zinātnieka izdzīvošanas komplekts: no datiem līdz sakarīgam grafikam”. Pasākuma video ieraksts pieejams YouTube.

Failu un jēldatu pārvaldība

Pirms uzsākt datu attēlošanu ir jāveic vairāki sagatavošanās darbi, kā arī jāatbild uz virkni jautājumu: Kādos failos glabājas dati? Kāda ir šo failu struktūra? Cik daudz ir šo datu failu? Kā visefektīvāk tos sakārtot, lai atvieglotu tālāko darbu? Bieži vien šo jautājumu noskaidrošana aizņem lielāko daļu darba procesa un bieži nākas pielaist kļūdas. Šajā sadaļā uzskaitītā programmatūra atvieglo šo procesu.

Notepad++

Ar programmas Notepad++ palīdzību var apskatīt teksta failu saturu. Tas ir īpaši svarīgi, jo tas ir tipisks datu glabāšanas formāts (.csv, .dat u.c. – tie visi ir tekstveida “plain text” datu formāti). Šo failu apskati var veikt arī ar Windows iebūvēto rīku Notepad, bet kā vēsta nosaukums Notepad++, tad šī programma piedāvā vairākus “plusus”.

Programma nodrošina darbu ar failiem cilnēs, masveida atrašanas/aizvietošanas darbības (skat. attēlu), nestandarta ievades veidus (piem. rakstīt reizē vairākās rindās), iespēja ieslēgt neredzamos simbolus, salīdzināt divu failu saturu, iekrāsot dažādu programmēšanas valodu sintaksi utt. Šīs nelielās programmas iespējas un pielietošanas scenāriji ir ārkārtīgi plaši.

Total Commander

Brīdī, kad nepieciešams strādāt ar daudz un dažāda tipa failiem, Windows iebūvētā failu pārvaldnieka Windows Explorer iespējas var būt nepietiekošas. Šādā brīdī var palīdzēt programma Total Commander.

Šī programma piedāvā dažādas specializētas darbības failu pārvaldīšanai: Masveida failu pārsaukšana (ar teksta atrašanu, aizvietošanu, numurēšanu), mapju failu satura salīdzināšanu un sinhronizēšanu (skat. attēlu), specializētas failu meklēšanas iespējas un tml.

7-Zip

Beidzot darbu ar kādu projektu / datu attēlošanas uzdevumu, ir ieteicams visu failu kopu (datu faili, grafiku zīmēšanas skripti, radītie attēli) glabāt kompresētus vienotā ZIP arhīva failā. Šī darbība ir svarīga un aktuāla neskatoties uz to, ka mūsdienu datu glabāšanas iekārtu (flešatmiņas, cietie diski) ietilpība pēdējo gadu laikā ir daudzkāršojusies.

Arhīvu izveide ir ieteicama nevis datu apjoma samazināšanai, bet gan ērtākai failu pārvaldībai. Apkopot daudzus sīkus failus vienotā ZIP failā padara virkni darbību nesalīdzināmi ātrākas: failu kopēšana, kā arī datu nesēju satura salīdzināšana un mapju sinhronizēšana (parādīts iepriekš ar Total Commander). Lietojot arhivētus datus, pazūd risks, ka operētājsistēma veiks ar šiem datiem nevēlamas darbības (piem. izveidotos datu grafiku attēlus Windows attēlu pārvaldnieks, uzskatot tos par fotogrāfijām, mēģinās apkopot albumos).

Darbam ar dažādiem datu arhīvu formātiem ieteicamā programmatūra ir 7-Zip. Tā spēj veidot un atvērt dažāda tipa arhīvu failus (.zip, .rar, .tar, .7z u.c.). Jāuzsver, ka par spīti dažādo formātu atbalstam, ieteicams veidot arhīvus tieši .zip failos, jo tas ir ISO standartizēts formāts.

SpaceSniffer

Lai ātri saprastu sava datora vai kāda datu nesēja aizpildījumu, to var vizualizēt ar programmas SpaceSniffer palīdzību. Programma attēlo diska mapes un failus taisnstūru veidā, kuru laukums ir proporcionāls datu apjomam. Kā redzams attēlā, kāda Windows datora C: diska saturu lielā mērā aizpilda dažas ļoti lielas programmas (ANSYS, Wolfram Mathematica, Anaconda Python), nevis Windows faili vai lietotāja personīgie dati.

Darbs attēliem un video

Liela un nozīmīga niša zinātniskā darbā ar datoru ir dažādu attēlu veidošana un pārvaldība. Ļoti bieži tieši fotogrāfijas un citu tipu attēli ir apstrādājamie datu avoti. Vai tieši otrādi – galvenais datu apstrādes gala rezultāts (grafiks, shēma), ko nepieciešams rādīt citiem. Darbā ar šo īpaši svarīgo datu tipu ir iesakāmi vairāki rīki, kas var šo procesu atvieglot.

WebPlotDigitizer

Dažreiz ir nepieciešamība no kāda attēla iegūt skaitliskus datus. Piemērām, vecas zinātniskas publikācijas datus izmantot savos aprēķinus vai pārzīmēt savos grafikos. Tā vietā, lai pie monitora liktu lineālu un cirkuli, ieteicams izmantot WebPlotDigitizer.

Ar šīs programmas palīdzību var ielasīt skaitliskus datus no jebkura attēla – ieviest savu atskaites sistēmu un ar peles kursoru nolasīt datus un saglabāt tos datu failā (skat. attēlu augstāk). Ja dati attēloti ar kontrastējošu krāsu, nolasīšanu var veikt automātiski, neveicot datu punktu atzīmi ar peli.

GIMP

Ārkārtīgi populāra un iespējām bagāta ir attēlu apstrādes programma GIMP, kuras iespējas būtiski neatpaliek no komerciālā analoga Adobe PhotoShop. Ir iespēja strādāt ar rastra (pikseļu) attēliem slāņos, veidot efektu slāņus un slāņu maskas. Pieejami dažādi filtri un rīki. Attēlā redzama relatīvi reta un unikāla rīka pielietošana: slāņa perspektīvas korekcija, lai parādītu kā logotips izskatītos uz gaiteņa sienas izkārtnes veidā.

Tomēr jāatzīmē, ka programmas apgūšana prasa laiku un pacietību. Taču, ja nav nepieciešamas visas plašās GIMP iespējas, ieteicamas ir citas vienkāršākas programmas.

Paint.NET

Gadījumā, ja nepieciešama tikai daļa no GIMP iespējām, ļoti ieteicama ir programma Paint.NET. Šī relatīvi vienkāršā un intuitīvā programma ļauj strādāt ar attēla slāņiem, dažādiem efektiem un rīkiem. Piemēram, attēlā zemāk redzama Magic Wand rīka pielietošana, lai logotipa attēlam selektīvi iezīmētu balto fonu, lai to izdzēstu vai pārkrāsotu.

ImageMagick

Gadījumā, ja attēlu ir ļoti daudz, pat tādas vienkāršas darbības kā attēla izmēra vai formāta maiņu nav ieteicams veikt ar iepriekš minētajām programmām. Šādos gadījumos var palīdzēt rīks ImageMagick. Tā ir komandrindas programma, kas ļauj efektīvi veikt masveida attēlu apstrādi. Piemēram, zemāk redzamā komanda (izpildāma Command Prompt konsolē vai ierakstāma Windows batch skriptā) veiks visu mapē esošo JPG failu apstrādi – izgriezīs no tām pēc iespējas lielu kvadrātu un nomainīs izmēru uz 1000×1000 px.

magick mogrify -gravity center -crop 1:1 +repage -resize 1000x1000 *.jpg

Šāda darbība ir diezgan tipiska brīžos, kad nepieciešams sagatavot attēlus tālākai lietošanai (piem. interneta lapās, datu apstrādes un attēlošanas programmās).

Inkscape

Atšķirībā no iepriekš aprakstītajām rastra (pikseļu) attēlu apstrādes programmām, Inkscape ir paredzēta vektorgrafikas attēlu veidošanai un apstrādei. Ar tās palīdzību var veidot dažādas shēmas un rasējumus, kas ļoti daudzos gadījumos aizvieto specializētas programmatūras lietošanu (CAD rasēšana, Microsoft Visio u.c.). Brīžos, kad šādas shēmas nav jāveido bieži un daudz, apgūt Inkscape ir īpaši veiksmīga izvēle.

Augstāk redzamajā attēlā parādītas gan Inkscape iespējas, gan vektorgrafikas priekšrocības kopumā: Pikseļains maza izmēra attēls, izmantojot attiecīgo Inkscape rīku Bitmap Trace, tiek pārveidots par vektorgrafikas objektu. Tam var mainīt izmēru pēc ieskatiem, saglabājot attēla kvalitāti. Ir iespējams mainīt tā krāsas un citādi to pārveidot.

Avidemux un OpenShot

Dažreiz nākas saskarties ar situācijām, kad nepieciešams darboties ar video failiem – kadru attēli jāapvieno video (timelapse), jāveic video failu formātu pārveide, vai jāmontē kāds īss video sižets. Ja to nākas darīt tik reti, ka komerciālās programmatūras (Adobe Premier, Final Cut Pro u.c.) iegāde nav attaisnojama, tad noderēs tādi bezmaksas rīki kā Avidemux un OpenShot.

Avidemux ir ļoti spējīga programma dažādu formātu pārveidei un video failu tehnisko parametru maiņai. Iespējama arī atsevišķu attēlu (.jpg, .png) apvienošana video failā (skat piemēru attēlā augstāk). Savukārt programma OpenShot ir ļoti spējīgs video montāžas rīks, kura iespējas pārsniedz Windows 10 iekļauto Video Editor. Tai pat laikā programma ir pietiekoši intuitīva un vienkārša, lai to varētu ātri apgūt.

Datu attēlošana un atskaišu veidošana

Kad ir izpētīta datu failu struktūra un veikta to sakārtošana ērtai attēlošanai (piemēram, tie nosaukti līdzīgos, numurētos nosaukumos), var uzsākt to apstrādi un attēlošanu grafikos, kā arī rezultātu apkopošanu atskaitē. Šī sadaļa parāda dažus rīkus un pieejas šī procesa norisei.

Gnuplot

Ja ir nepieciešama tikai datu failu attēlošana (nevis apstrāde), ļoti noderīga ir programma Gnuplot. Šī programma tiek lietota komandrindas vai sagatavotu skriptu veidā. Līdz ar to, ka programma ir paredzēta datu attēlošanai, nevis datu apstrādei, izmantotās komandas ir ļoti lakoniskas un saprotamas. Apgūt šo programmu ir relatīvi viegli, tai pat laikā ļaujot apstrādāt ļoti lielus datu apjomus un iegūt dažāda tipa grafikus (līniju grafiki, stabiņu diagrammas, histogrammas, 2D datu attēlojums utt.). Iespējams izvadīt grafikus gan vektorgrafikas (PDF), gan rastra attēlu (PNG) formātā.

Zemāk ir redzams neliels skripts, ar kura palīdzību vienā grafikā attēlots trīs datu failu saturs – ātruma atkarība no laika automašīnas bremzēšanas laikā. Kodam pievienotie komentāri parāda katras koda sadaļas nozīmi. Šeit iespējams lejupielādēt visu piemēru (dati, skripts, attēls).

# Definē attēla izmēru, līniju biezumu, fonta izmēru
set terminal pngcairo size 900,700 enhanced lw 3 fontscale 2.0

# Izvadītā attēla faila nosaukums
set output "example_gnuplot_output.png"

# Grafika noformējums (asu apzīmējumi, robežas, atzīmes)
set yrange [-5:105]
set xlabel "t, s"
set ylabel "v, km/h" # Data in m/s! Need to scale by 3.6!
set xtics 1
set ytics 20
set grid

# Cikls visu trīs datu failu grafiku iezīmēšanai vienā rakstlaukumā
plot for [i=1:3] \
	'breaking_speed_data_'.i.'.dat' using ($1):($2*3.6) with line title 'File '.i

No grafika (skat. zemāk) redzams, ka automašīna bremzējusi no 100, 70 un 50 km/h un apstājusies attiecīgi 4.0, 2.7 un 2.0 sekunžu laikā.

Python

Ja ir nepieciešams datus ne tikai attēlot, bet vienlaicīgi arī apstrādāt, tad šim nolūkam ļoti piemērota ir Python programmēšanas valoda un dažādas papildinošas komponentes (paketes), kas šo procesu atvieglo. Ērts veids kā iegūt pilnu rīku kopumu (Python, bieži lietojamas paketes, grafiskais koda redaktors) ir instalēt programmatūras pakotni Anaconda.

Python programmēšanas valodas un saistīto rīku piedāvātās iespējas noteikti pārsniedz šī raksta tvērumu, bet zemāk tiek sniegts neliels piemērs kā izskatās datu apstrādes un attēlošanas skripts, izmantojot Numpy/Scipy skaitlisko datu apstrādes iespējas, kā arī Matplotlib grafiku veidošanu. Kodam pievienotie komentāri parāda katras koda sadaļas nozīmi. Šeit iespējams lejupielādēt visu piemēru (dati, skripts, attēls).

# Nepieciešamie Python rīki (paketes)
import numpy as np
import matplotlib.pyplot as plt
import glob
from scipy.integrate import cumtrapz


# Ielasa visus faila nosaukumus no darba mapes, kas beidzas ar '.dat'.
text_filenames = glob.glob("*.dat")

# Nosaka grafika zīmēšanas rakstlaukuma izmēru
plt.figure(figsize = (4.5,3.5), dpi = 200)

# Katram no .dat failiem veiks datu apstrādi, iezīmēs grafikā
for filename in text_filenames:

    # Ielasa katru failu (tabulatora atdalīti dati)
    time, velocity = np.loadtxt(
        filename,
        delimiter = "\t",
        skiprows = 1,
        unpack = True
        )
    
    # Skaitliskā integrēšana, lai iegūtu attālumu no ātruma datiem
    distance = cumtrapz(velocity, time, initial=0.0)
    
    # Nosaka maksimālo ātrumu un attālumu (lai lietotu grafika leģendā)
    velocity_max = velocity.max()
    distance_max = distance.max()
    
    # Grafikā iezīmē attālumu no laika, leģendā ieraksta bremzēšanas ceļu
    plt.plot(
        time,
        distance,
        label = "{:.0f} km/h - breaking dist. is {:.1f} m".format(
            velocity_max*3.6,
            distance_max
            )
        )


# Noformē grafiku (pievieno režģi, asu nosaukumus, leģendu)
plt.grid()
plt.legend(loc="upper left")
plt.xlabel("t, s")
plt.ylabel("d, m")
plt.xlim(0,5)

# Saglabā grafiku kā PNG attēlu
plt.savefig("example_python_output.png")

Piedāvātais skripts veic jau iepriekš parādīto automašīnas ātruma datu summēšanu (integrēšanu), parādot kādu ceļu veic automašīna bremzēšanas laikā. Redzams, ka automašīnas bremzēšanas ceļš no 100 km/h ir 55 m, bet no 50 km/h tikai 14 m. Šis rezultāts ir diezgan neintuitīvs, jo divreiz lielāks ātrums nenozīmē divreiz garāku bremzēšanas ceļu. Tas ir četras reizes garāks!

LaTeX tekstveide

Zinātnieka darba galvenais rezultāts lielākoties ir nevis konstruētas iekārtas, programmatūra vai cits gatavs risinājums, bet gan jauna informācija un secinājumi. Veids, kādā zinātniskā darbā noformē sava pētījuma rezultātus – jauno informāciju – ir ārkārtīgi nozīmīgs. Tas ir jāveic tehniski kvalitatīvi, lasāmi un saprotami. Lielākoties šie informatīvie materiāli (atskaites, publikācijas) ir pilni ar attēliem, tabulām, matemātiskām izteiksmēm, bibliogrāfiskām atsaucēm.

Šāda tipa materiālus veidot Microsft Word vidē ir iespējams, bet šis risinājums nav optimāls. Šim nolūkam LaTeX tekstveides risinājumi ir daudz piemērotāki. Izmantojot LaTeX tekstveidi, dokumenti tiek veidoti koda veidā, norādot tikai saturu – kur sākas un beidzas nodaļas, kur ievietojamas atsauces, kur ievietojami attēli. Noformējums tiek atstāts programmatūras pārziņā, kas optimāli izkārto tekstu un attēlus, veic automātisku atsauču numurēšanu un tml. Šī pieeja tik piemērota zinātniskas literatūras veidošanai, ka nereti zinātnisku rakstu redakcijas pieņem autoru rakstus tikai un vienīgi LaTeX koda formātā. Zemāk redzams vizuāls piemērs LaTeX dokumentam, kura veidošana ar Word būtu ārkārtīgi grūta (iegūts no šīs StackExchange sarakstes).

Lai sāktu veidot dokumentus ar LaTeX, var uz sava datora uzstādīt vajadzīgo programmatūru: MiKTeX pakotni (ļauj pārveidot LaTeX kodu par PDF dokumentu), kā arī TeXstudio vai Texmaker redaktoru (ērtai koda veidošanai, failu pārvaldīšanai). Taču pēdējā laikā ārkārtīgi populāra kļuvusi LaTeX dokumentu veidošana mākoņplatformā Overleaf. Nav nepieciešams neko instalēt uz sava datora – dokumentus var veidot, strādājot tikai ar interneta pārlūkprogrammu.

Arī LaTeX dokumentu veidošana un valodas nianses ir pārāk plašs temats šī raksta tvērumam, taču iespaidam par to, kā notiek dokumentu veidošana ar LaTeX/Overleaf, var aplūkot šo dokumenta piemēru, kurā koda komentāru veidā parādīta katras sadaļas nozīme.

Noslēgums

Rakstā sniegtais ieteicamās programmatūras uzskaitījums ne tuvu nav pilnīgs, un piemēri nav visaptveroši. Ir gan cita brīvpieejas programmatūra, kas veic minētās funkcijas, kā arī minētās programmatūras iespējas ir aprakstītas ārkārtīgi minimāli. Par spīti tam, cerams, ka šis raksts kalpos kā pirmais solis tiem, kas meklē veidus, kā paplašināt savas iespējas darbā ar datoru.

Papildinājums

Pēc šī raksta publicēšanas, vairāki lasītāji norādījuši vēl citas vērtīgas brīvpieejas programmas, kas atbilst šī raksta tematikai.

Voidtools – Ātrai failu meklēšanai;

FreeFileSync – failu sinhronizēšanai;

Engauge Digitizer – skaitlisku datu iegūšanai no attēla;

Shotcut – video montāžai;

Photopea – attēlu apstrādei interneta pārlūkprogrammā;

Audacity – skaņas apstrādei;

IrfanView un ImageGlass – ātrai attēlu apskatei;

darktable – RAW foto failu apstrādei (Adobe Lightroom aternatīva).