Automatizace ve fyzice: úvodní hodina

Author

Petr Čermák

Published

October 9, 2026

Info

Připojte se!

cermak.science/teaching/automation/lectures/01-uvod/presentation.html

Úvodní informace

. . .

  • Konzultace:
    • discord (nejrychlejší)
    • mail (klasika)
    • osobní setkání (kancelář mám na Karlově)

Automatizace - proč?

  • Zjednodušení práce - od kdy je to efektivní?
  • Reprodukovatelnost
  • Přenositelnost
  • F.A.I.R. principy

. . .

AI

  • Agent dostane cíl, ne postup: sám napíše skript, spustí ho, přečte chyby a opraví ho
  • Běží nepřetržitě, hlídá měření, reaguje na poruchy, plánuje úlohy
  • Agentní systémy typu Hermes Agent nebo OpenClaw: self-hosted, s pamětí a vlastními „skills“, ovládané z chatu.

Programovací jazyk?

  • V době AI už je skoro jedno, v čem se programuje - kód často napíše AI
  • Co je ale potřeba:
    • Rozumět, co kód dělá - umět ho číst, ověřit a otestovat; za výsledek odpovídáte vy
    • Verzovat - git, malé kroky, změny od AI jde vždy vrátit
    • Chápat, co je možné - znát knihovny, nástroje a limity, umět úlohu dobře zadat

. . .

V kurzu: Python

  • Čitelný, populární ve vědě a AI, spousta knihoven - a AI v něm píše nejlépe
  • Excel, Julia, R… taky fajn, princip je stejný

AI zdarma: e-INFRA CZ

  • AI as a Service od CERIT-SC - velké jazykové modely (Kimi, GLM, DeepSeek, Qwen) na českých serverech
  • Pro uživatele MetaCentra (účet zdarma pro české akademiky a studenty)
  • Chat přes web: chat.ai.e-infra.cz
  • OpenAI-kompatibilní API - jde napojit na VS Code, Claude Code, Codex…

. . .

VS Code + Zoo-Code (nejjednodušší, vše se nastaví v GUI)

  1. API klíč: chat.ai.e-infra.cz → Settings → Account → API keys
  2. VS Code: Ctrl+Shift+X → najít Zoo-Code → Install
  3. Zoo-Code → Settings → Providers:
    • API Provider: OpenAI Compatible
    • Base URL: https://llm.ai.e-infra.cz/v1
    • API Key: váš klíč, Model: coder (nebo agentic)

Verzování

Git?

CI/CD ?

  • Continuous Integration / Continuous Deployment
  • Naměřím výsledky
  • script je automaticky zpracuje
  • gitlab!

Opakování

Co umíme? 1

1+1
2
2+3*4+1
15
2+3 * 4 +1
15
(2+3)*(4+1)
25
2**10
1024
2**100
1267650600228229401496703205376

Co umíme? 2

a = 5
b = 3
print(f"Výsledek je {a+b=}")
Výsledek je a+b=8

Co umíme? 3

numbers = [12, 34, 56, 78, 90]
total = 0

for num in numbers:
    total += num

average = total / len(numbers)
print(f"Průměr: {average}")
Průměr: 54.0

. . .

average = sum(numbers) / len(numbers)
print(f"Průměr: {average}")
Průměr: 54.0

. . .

import numpy as np
print(f"Průměr: {np.mean(numbers)}")
Průměr: 54.0

GIT

Co to je?

. . .

“git” can mean anything, depending on your mood.

  • random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronounciation of “get” may or may not be relevant.
  • stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.
  • “global information tracker”: you’re in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.
  • “goddamn idiotic truckload of sh*t”: when it breaks

Zdroj: Původní readme file gitu

Jak to použít

Využití pro:

  • ukládání kódu
  • latex
  • obrázky (limitovaně)
  • data (limitovaně)

Umožňuje

  • verzování
  • větvení
  • kdo co změnil

Instalace gitu

  • Nejjednodušší: nainstalovat VS Code
    • záložka Source Control nabídne doinstalování gitu, pokud chybí
    • Windows: odkaz na git-scm.com
    • macOS: nabídne instalaci Command Line Tools
    • Linux: sudo apt install git
  • Nápověda: zeptejte se AI, nebo git help [add/commit/config...]

Distribuované verzování (git)

  • Např: git, mercurial
  • clone a pull
    • zkopíruje se celá větev, včetně celé historie
    • máme stejná data jako na serveru
  • většina operací se děje lokálně
    • stage, commit, branch
    • máme vlastní historii u sebe
  • Když je hotovo, provede se “push” na server
    • synchronizují se změny, řeší se konflikty

Snapshoty

  • Git si dělá snapshoty
    • nezměněné fily jsou jen jako odkazy
    • trochu více dat
    • mnohem rychlejší porovnávání

Jak to funguje

  • Každý repozitář má soubory v několika oblastech
    • committed - uložená, verzovaná
    • working copy - rozpracované soubory
    • staging area - soubory připravené ke commitu
  • Commit udělá snapshot ze všech souborů ve staging area
  • Commity se značí hashem (SHA-1), často se vypisuje jen prvních 7 znaků

. . .

Pracujeme stylem: modify -> stage -> commit

Úvodní nastavení

  • Nastavení jména a emailu (nutné!!)
git config --global user.name "John Rambo"
git config --global user.email [email protected]
  • Nano vs vim - nastavte si editor
git config --global core.editor nano
  • Zkontrolujte nastavení
git config --list

Lokální nastavení je uloženo ve filu .git/config

Vytvoření repozitáře

    1. Vytvoření nového repozitáře
    • bez -m by se otevřel editor
git init
git add test.py
git add .
git commit -m "První commit"
    1. klonování existujícího repa (remote)
    • vytvoří nový adresář folder
git clone url folder

Git příkazy

příkaz
git clone url [dir] zkopíruje vzdálené repo na lokální disk
git add [file] přidá soubor(y) do staging area (tečka přidá vše)
git commit vytvoří snapshot ze souborů ve staging
git status zobrazí stav repozitáře, jaké soubory jsou kde atd.
git diff zobrazí změny v souborech
git help nápověda
git pull stáhne data z remote (fetch) a zkusí je mergnout
git push odešle změny na remote

další: init, reset, branch, checkout, merge, log, tag, …

Jak funguje zpět?

  • Nepřidal jsem file do stage
git status               # zobrazí stav
git diff test.py         # zobrazí změny
git checkout -- test.py  # vrátí změny k poslednímu commitu
git reset --hard         # vrátí vše na poslední commit

Jak funguje zpět?

  • Přidal jsem file do stage
git restore --staged test.py  # vyndá ze stage, nechá změny
git reset               # vyhodí vše ze stage, nechá změny
git reset HEAD test.py  # vyhodí ze stage a smaže změny
git stash         # uloží stage na jindy (jen lokálně)
  • Už jsem file commitnul
    • google it, třeba zde
    • zachovávejte historii (není podmínkou jako v mercurial)

Větvení - tam začíná zábava

git branch name        # založí novou větev
git branch             # vylistuje lokální větve
git checkout [branch]  # přepne HEAD na branch
git merge [a]          # mergne [a] do aktuální větve
  • Při mergování je třeba ošetřit konflikty

. . .

Větvení - tam začíná zábava

git branch testing

Větvení - tam začíná zábava

git branch testing

Větvení - tam začíná zábava

git checkout testing

Větvení - tam začíná zábava

vim test.py
git commit -a -m 'Změna je život'

Větvení - tam začíná zábava

git checkout master
vim test.py
git commit -a -m 'Jiná změna'

CI / CD

Co to je?

  • Continuous Integration
    • automatické testování kódu
    • code review od kolegů
    • po schválení merge do jiné větve
    • více na programování
  • Continuous Delivery
    • Instalace nových verzí software
  • Využijeme je na automatizaci

Gitlab

  • open source platforma jako github
  • custom hosted: gitlab.mff.cuni.cz
  • merge request
  • CI/CD workflows –> to použijeme

Spouštění CI/CD

  • Definováno v hlavním adresáři (skrytý soubor .gitlab-ci.yml)
  • Commit vede ke spuštění pipeline
  • Pipeline má jednu nebo více fází (stage)
  • Fáze má jeden nebo více úkolů (job)
  • Každý úkol je přiřazen runneru, který provádí požadované příkazy
  • Pokud všechny úkoly uspějí, fáze pipeline uspěje a další fáze začne. V opačném případě selže fáze a celá pipeline se zastaví.
  • Výsledky pipeline jsou zaznamenány a v případě selhání je odeslán e-mail.

Příklad

stages:
  - evaluate

check-fruit:
  stage: evaluate
  before_script:
    - apk add jq
  script:
    - echo "Downloading datafiles"
    - wget https://filesamples.com/samples/code/json/sample1.json
    - echo "Check available fruits"
    - jq -c '.[]' sample1.json | while read i; do echo $i >> output.txt; done
  artifacts:
    paths:
      - output.txt

DISKUSE

Otázky:

  • Vyhovuje vám čas?
  • Co si představujete, že vám předmět přinese?
  • Na co byste se chtěli zaměřit?
    • git, gitlab, CI/CD
    • python, jupyter, quarto
    • zpracování obrazu (opencv)
    • optimalizace (bayesovská, knihovny)
    • ros (komunikujeme s roboty)
    • F.A.I.R. - jak ukládat data