Neuerungen in Igor Pro 10
Igor Pro 10 führt weitreichende Optimierungen ein, die von neuen Operationen und Funktionen bis hin zu einer tiefgreifenden Python-Integration reichen. Die wesentlichen Neuerungen zur Steigerung der Analyseleistung und Benutzerfreundlichkeit sind im Folgenden zusammengefasst.
Python-Integration
Die integrierte Python-Schnittstelle in Igor Pro 10 ermöglicht die direkte Ausführung von Python-Code und einen bidirektionalen Datenaustausch. Anwender können die spezialisierten Bibliotheken des Python-Ökosystems mit den leistungsstarken Werkzeugen zur Datenvisualisierung und -verwaltung von Igor kombinieren.
Das igorpro-Python-Modul bietet eine API für den Zugriff auf Waves, Datenordner sowie Variablen und Zeichenfolgen. Die integrierte Python-Konsole mit Syntax-Highlighting und Code-Vervollständigung erlaubt interaktives Arbeiten.
Ergänzend erlauben die Operationen Python und PythonFile die Einbindung einzelner Befehle oder kompletter Skripte direkt im Igor-Prozedurcode und über die Befehlszeile. Während die Python-Operation zum Ausführen einzelner Python-Befehle verwendet werden kann, dient PythonFile zum Starten ganzer Python-Skripte aus Igor heraus. Selbstverständlich können beide Operationen Python-Objekte wie NumPy-Arrays an Igor zurückgeben und sie in native Igor-Typen konvertieren.
Kamera- und Hardwaresteuerung
Mit der Einführung des MMI XOP, das auf dem Open-Source-Projekt μManager basiert, wird die Hardware-Anbindung erweitert. Die Schnittstelle ermöglicht die zentrale Steuerung einer Vielzahl von Hardware-Komponenten:
- Bildgebung: wissenschaftliche Kameras und Bildsensoren
- Optik: Lichtquellen, Shutter (Verschlüsse) und Filterräder
- Positionierung: motorisierte XY- und Z-Achsen-Positioniertische
Liste der Geräteadapter und Einführung in deren Verwendung beim µManager-Projekt
Sobald MMI-System konfiguriert ist, kann Igor beispielsweise mit nur sieben Befehlen den µManager anweisen, ein Bild von einer unterstützten Kamera aufzunehmen, das Bild in eine Welle zu laden und es anzuzeigen.
MMC_LoadDevice "myDemoCam", "DemoCamera", "DCam" MMC_InitializeDevice "myDemoCam" MMC_SetCameraDevice "myDemoCam" make/O myImageWave MMI_BindImageWave myImageWave MMC_SnapImage NewImage myImageWave
Neben der Aufnahme einzelner Bilder unterstützen sowohl der µManager als auch das MMI-System das Streamen von Bildern, d. h. die kontinuierliche Aufnahme, Anzeige und (optionale) Speicherung von Bildern in HDF5-Dateien mithilfe der Operation MMI_OpenH5file.
Optimierungen im Prozedurfenster
Igor Pro 10 verbessert die Programmierproduktivität durch folgende neue Funktionen:
- Intelligente Editierfunktion: Verbesserte Syntaxhervorhebung und eine kontextsensitive Code-Vervollständigung beschleunigen das Schreiben von Prozeduren.
- Navigation: Per Strg + Klick auf einen Funktionsnamen kann direkt zur Definition der benutzerdefinierten Funktion gesprungen werden.
- Flexibilität: Backslash-Zeichen am Zeilenende erlauben nun beliebig lange Ausdrücke über mehrere Zeilen hinweg.
Function/S LineContinuationDemo(String prefix, \ String separator, \ String suffix) String combined = prefix \ + separator // a comment before line continuation \ + suffix return combined End
- Code-Struktur: Das neue Code-Folding ermöglicht das Zusammenklappen von Code-Blöcken, um die Übersicht in umfangreichen Dateien zu wahren.
Erweiterungen beim Multipeak-Fitting-Package
- Erhöhte Robustheit in vielen Bereichen durch verbesserte Fehlerbehandlung, insbesondere in Bezug auf Daten außerhalb des Bereichs, leere Wellen und NaNs
- Unterstützung für Hold-String-Wellen
- Unterstützung für sowohl 10-%- als auch 200-%-Anzeigeskalierung
- Kopieren/Einfügen-Shortcuts in der Tabellen-Benutzeroberfläche
- Automatische Lokalisierung gibt keine Peaks mit Nullbreite mehr zurück
- Mehrere Verbesserungen bei Warn- und Fehlermeldungen
Verbesserungen der Zeichenwerkzeuge
- Verbesserung bei der Bearbeitung von Polygonen und Bézierkurven durch bessere Beschränkungen, Vertex-Ausrichtung, mehr Kontextmenüs und ein Hinweissystem zur Hilfestellung
- Zeichnen über Anmerkungen hinweg mit zusätzlichen Zeichnungsebenen "ProgTop" und "UserTop" in Diagrammen
Dynamische Layouts für Bedienfelder
- Die neuen integrierten Randhilfslinien ML, MT, MR und MB (linker Rand, oberer Rand, rechter Rand und unterer Rand) erleichtern das Ausrichten von Objekten im druckbaren Bereich der Seite. Die Randhilfslinien passen sich an die im Dialogfeld "Seitengröße" festgelegten Ränder an.
- Wenn eine Hilfslinie in einem Seitenlayout gezogen wird, wird ihre Position in der Statusanzeige am unteren Rand des Fensters angezeigt. Es werden Bruchteile der druckbaren Seitenbreite oder -höhe angezeigt. Durch Gedrückthalten der Umschalttaste werden die gezogenen Hilfslinien auf einen rationalen Bruchteil der druckbaren Seitenbreite oder -höhe beschränkt.
- Durch Drücken der Strg-Taste und Drehen des Scrollrads wird der Vergrößerungsgrad des Layouts geändert.
- Durch Gedrückthalten der Umschalttaste und Verwenden der Pfeiltasten zum Verschieben eines Layoutobjekts wird die Bewegung um den Faktor zehn beschleunigt.
Bedienelemente in einem Bedienfeld können an „Guides“ (Führungslinien) verankert werden. Dies macht es erheblich einfacher, Bedienfelder zu erstellen, die eine Größenänderung sauber mitmachen, ohne dass dafür extra Igor-Code geschrieben werden muss. Es handelt sich dabei um dieselben Führungslinien, die zuvor nur mit Unterfenstern funktionierten.
In der Abbildung ist im Bedienfeld der rechte Rand des Listbox-Steuerelements immer an der Mitte des Panels fixiert, während sein unterer Rand stets einen konstanten Abstand zur Unterkante hält. Die Steuerelemente auf der rechten Seite bleiben dauerhaft bei einem Viertel der Panelbreite vom rechten Fensterrand aus zentriert. Der Titel wird immer mittig ausgerichtet.
Neue Operationen
Interp4DInterp4DPathMMC_*andMMI_*(82 operations added by the MMI64.xop)PythonPythonEnvPythonFileSay
Neue Funktionen
graphemeLengthMMC_*andMMI_*(47 functions added by the MMI64.xop)stringIsNullUTF8CharLength
Neue MatrixOp-Funktionen
subtractMin()indexMatch()removeCol()removeCols()scaleLayers()scaleChunks()subtractRows()subtractCols()quatFromSpherical()quatInverse()
median()zapZeros()replaceInfs()enoise()setType()rowDiff()binMean()binVar()imit()not()
Leistungsverbesserungen
- Verbesserung der Kompilierungszeit von Benutzerprozeduren
- Verbesserung der Leistung der Operationen
NewPathundIndexedFile, insbesondere in Code, der der BeispielfunktionPrintFoldersAndFilesim Hilfethema „IndexedDir“ ähnelt - Verwendung beliebig vieler, von der Hardware unterstützter logischer Prozessoren unter Windows 11 durch die Operationen
MultiThreadundThreadGroupCreatestatt bisher nur bis zu 100 logische Prozessoren (unter Windows 10 ist die Anzahl der verwendeten logischen Prozessoren aufgrund der Einschränkungen durch das Betriebssystem weiterhin auf 64 beschränkt)













