Session state & yazdırma
Sim, derlenmiş modeli kapatıp yeniden kurmadan çalışan oturumu inceleyebilmen veya değiştirebilmen için canlı bir SessionState tutar. Bu rehber; “oturumda şu an ne var?”, bunu güvenli şekilde nasıl değiştirirsin ve ihtiyaç olduğunda alttaki DSL denklemlerini nasıl yazdırırsın gibi konulardaki yardımcıları anlatır. Daha detaylı introspection için export_sources() kullanımına bak.
Session state inceleme
session_state_summary()mevcut zamanı (t), adım sayısını, nominaldt’yi, stepper adını, durumu veresume=True’ın hâlâ mümkün olup olmadığını (can_resume/reason) döndürür. Ayrıca saklanan stepper config özetini (digest) içerir; böylece gelecekteki birrun()çağrısının aynı konfigürasyonu kullanıp kullanmayacağını anlayabilirsin.can_resume()vecompat_check()çalışma zamanı pin’lerinin (spec hash, stepper, workspace imzası, dtype, dynlib sürümü) aktif model ile eşleşip eşleşmediğini kontrol eder; böylece bir oturumu devam ettirmeden önce doğrulayabilirsin.- Bu özet,
run()bittikten hemen sonra veya birSnapshotoluşturmadan önce dashboard/log üretmek için çok kullanışlıdır.
Örnek
summary = sim.session_state_summary()
print(f"Current time {summary['t']} (step {summary['step']})")
if not summary["can_resume"]:
print("Resume unavailable:", summary["reason"])
Çalışma sırasında session değerlerini değiştirme
Sim.assign(...) state ve parametreleri isme göre günceller; zamanı, workspace’i veya sonuç geçmişini değiştirmez (sen açıkça temizlemezsen). Metot; isimleri modelden çıkarır, “bunu mu demek istedin?” önerileri verir, değerleri model dtype’ına çevirir ve bilinmeyen değişkenleri değiştirmeye çalışırsan hata verir.
- Bir mapping veya keyword ver:
sim.assign(v=-65.0, I=12.0)aynı session zamanını korur ama bir sonraki run’ın başlangıç değerlerini değiştirir. clear_history=Trueile birikmiş results/segment geçmişini düşürürsün, amaSessionStatekorunur. Bu, daha önceki snapshot’a dönmeden yeni bir kayıt başlatmak istediğinde işe yarar.
Sayısal değerleri dışa aktarma ve yazdırma
Session’dan, model spec’inden veya isimli bir snapshot’tan state/parametre vektörlerini ya da sözlüklerini okumak için birkaç yardımcı var:
state_vector(source='session', copy=True)/param_vector(...)DSL’deki tanım sırasına göre 1-boyutlu NumPy dizileri döndürür.source"session","model"veya"snapshot"olabilir.copy=Falseverirsen alttaki saklama alanına bir view alırsın; değerleri doğrudan değiştirmek istiyorsan kullanışlıdır.state_dict(...)/param_dict(...)yukarıdaki dizileriisim -> floatsözlüğüne çevirir; hızlı log veya JSON çıktısı için pratik.state(name)/param(name)mevcut session’dan tek bir skalar okur; ismi yanlış yazarsan yardımcı öneriler verir.
print(sim.state_dict()) # session değerleri dict olarak
print(sim.param_vector(source="model")) # model varsayılanları ndarray olarak
snapshot_states = sim.state_vector(source="snapshot", snapshot="initial")
print(sim.state("v")) # tek değer okuma
Bu yardımcılar; run ortasında debug yazdırma, UI paneli üretme veya snapshot/preset yanına checkpoint metadatası koyma gibi işlerde çok işe yarar.
DSL denklemlerini yazdırma
FullModel.print_equations() üretilmiş runner’ı değil, orijinal DSL tanımını yansıtır. Böylece dokümana veya log’a “güzel yazdırılmış” denklemler ekleyebilirsin.
tableshangi TOML table’larının yazdırılacağını seçer: varsayılan"equations"ana dinamikleri gösterir; ama diğer kayıtlı table’ları da isteyebilirsin ("equations.inverse","equations.jacobian"vb.) veyatables="all"ile hepsini yazdırabilirsin.include_headersbölüm başlıklarının yazdırılıp yazdırılmayacağını kontrol eder;file=ise çıktıyı yazılabilir herhangi bir stream’e yönlendirmeni sağlar.FullModel.available_equation_tables()tüm kayıtlı anahtarları listeler; ne isteyebileceğini kontrol edersin.
model.print_equations() # ana denklemleri başlıklarla yazdırır
with open("equations.txt", "w") as out:
model.print_equations(tables="all", include_headers=False, file=out)
print(FullModel.available_equation_tables())
print_equations() ile session_state_summary() veya state_dict()’i birlikte kullanmak, sayısal state’i onu üreten denklemlerle bağlayan tekrarlanabilir raporlar üretmeni kolaylaştırır.