Export page to Open Document format

WideFieldScans @ TOMCAT

MATLAB - widefieldscan.m

die aktuellsten Versionen aller MATLAB-Files sollten sich in

/sls/X02DA/data/e11126/MATLAB

befinden.

File 'main.m' starten, Eingabe der ProbenParameter → Berechnen der einzelnen Proben → Ausgabe eines PreferenceFiles z.B. nach

/sls/X02DA/data/e11126/

In Panel BasisFileNamen eingeben und nach Ausrichtung der Probe im Fenster in der Konsole von z.B. x02da-cons-2

widefieldscan_final.py PreferenceFile

eingeben. Dies startet den Scan via EPICS und fuehrt alle notwendigen SubScans selbstaendig durch. Diese landen dann in den Verzeichnissen 'BasisFileName_s#Subscan'.

Evtl. klappt's schon mit stacked_scan_widefield.py, dass mit Chris zusammen waehrend der Beamtime 2010a angepasst wurde…

Im Ordner ~/MATLAB/WideFieldScan/Release1.0/liegt das Skript MergerRebuild.m, welches anhand dem Logfile des ersten SubScans alle nötigen Parameter ausliest und die einzelnen Subscans für die Rekonstruktion vorbereitet, inklusive Erstellung der Sinogramme. Am einfachsten ist es, wenn am Beginn des Skriptes die BeamTime angepasst wird, dann muss mensch weniger hin- und her-klicken beim LogFile-Auswählen.

Aus dem ersten Logfile liest das Skript die nötigen Parameter aus, berechnet die Cutline (so dass der User noch intervenieren kann, wenn die Cutline falsch ist) und sortiert die Projektionen so, dass direkt mit sinooffline die Sinogramme berechnet werden können. Das MATLAB-Skript übernimmt dies auch gerade.

Nach dem Resortieren der Projektionen wird auch automatisch das Logfile erstellt, sowie ein Hardlink des Logfiles an die richtige Stelle gemacht. Danach wird von MATLAB ein Konsolenbefehl ausgeloest, der die Sinogramme der betreffenden Projektionen erstellt, so dass nach dem MATLAB-Schritt die Rekonstruktionen im RecoManager kontrolliert werden koennen

Das MATLAB-Skript muss auf 'x02da-cons-2' oder 'x02da-cons-4' ausgefuehrt werden, sonst fehlt das sinooff_tomcat_j.py, das zur Sinogramm-Berechnung benoetigt wird!

Falls etwas mit dem Logfile oder den Sinogrammen nicht klappt, koennen untenstehende Befehle benutzt werden:

Logfile hardlinken

Damit der RecoManager schlussendlich “tif2rec_batch_web_grid.py” korrekt aufsühren kann, muss noch das LogFile, das in den afs/path/sample/tif-Verzeicnissen steht, ins verzeichnis afs/path/log sog. hardlinked werden. dies geschieht mit.

$ mkdir /sls/X02DA/data/e11126/Data10/Path/merge/log/

in der Konsole, um erstmals das Verzeichnis zu erstellen (Pfad anpassen!) und dann mit

$ ln /sls/X02DA/data/e11126/Data10/2008b/merge/R108C04C_merge/tif/R108C04C_merge.log /sls/X02DA/data/e11126/Data10/2008b/merge/log/R108C04C_merge.log

den hardlink zu erstellen. Hard links werden gemacht, damit – auch wenn Path/merge/Sample/tif/Sample.log gelöscht wird – Path/merge/log/Sample.log erhalten bleibt.

Sinogramm-Berechnung

In der Konsole von 'x02da-cons-2' mit

sinooff_tomcat_j_widefieldscan.py /sls/X02DA/Data10/e11126/`BeamTime`/mrg/`SampleName`/tif

die Berechnung der Sinogramme starten. Falls alles geklappt hat mit dem Merging der Projektionen im vorherigen Schritt, einfach warten, dann werden in '/sls/X02DA/Data10/e11126/`BeamTime`/`SampleName`/sin' die Sinogramme erstellt.

Rekonstruktions-Parameter bestimmen

mit dem RecoManager koennen die korrekten Rekonstruktion-Parameter wie RotationZentrum und Helligkeiten der zusammengefuehrten Bilder ueberpruefen und korrigiert werden.

Note to self: RotationCenterIterator.py offiziell “releasen”

Rekonstruktion

Anschliessend müssen die Rekonstruktionen aus der Kommandozeile gestartet werden, der RecoManager kann die Befehle leider nicht direkt übergeben. Dieser Befehl muss von 'x02da-cons-2' ausgeführt werden:

tif2rec_batch_web_grid_cn_orig_zp_widefield.py 3 20 TifDir Rotationszentrum parzen 0 0,0,0,0 1,0.3,10 8,0.01,0.5 0.25
  • tif2rec_batch_web_grid_cn_orig_zp_widefield.py ruft das Skript auf
  • 3 20 heisst 'mit Gridrec (Algorithm 3) auf 20 Knoten rekonstruieren
  • TifDir ist das Verzeichnis, im dem die Projektionen sind. Funktioniert mit relativen oder absoluten Pfaden
  • Rotationszentrum ist das Rotationszentrum
  • parzen Rekonstruiere mit Parzen-Filter
  • 0 0,0,0,0 gibt die Rotation und die ROI an, hier beides 0, also keine Rotation und volles Sichtfeld
  • 1,0.3,10 Ring removal Parameter
  • 8,0.01,0.5 Rekonstruktion in 8bit Tiffs mit den angegebenen Grenzen
  • 0.25 Zeropadding mit einem Viertel der Bildbreite (reicht für widefield gut)

Ein Beispiel eines korrekten Aufrufs ist

/work/sls/bin/tif2rec_batch_web_grid_cn_orig_zp_widefield.py 3 20 /sls/X02DA/data/e13406/Data10/2011b/R253C60D__B2_mrg/tif 3030.5 parzen 0 0,0,0,0 1,0.3,10 8,-0.44e-3,2.0e-3 0.5

Am einfachsten geht's, wenn ein Textfile (z.B. Reconstruction-tif.txt) gemacht wird, welches Zeile für Zeile den korrekten Befehlt enthält. Dann können alle Rekonstruktionen gleichzeitig mit dem DiCoClient an den Cluster geschickt werden. Damit dies relativ schnell abläuft, muss der Cluster noch “gebremst” werden, d.h. er sollte simultan nur 8 Jobs ausführen. Das geht mit

cd /usr/local/cluster/DiCoClient
java -jar DiCoCLient

um den Client zu starten und mit

simu 8 a
exit

um dem allen Knoten des Cluster zu sagen, dass gleichzeitig nur 8 Jobs ausgeführt werden sollen. Dies verhindert grössere Schreib- und Leseorgien auf die Platten, welche die Rekonstruktion extrem verlangsamen.

Anschliessend können alle Rekonstruktionen gleichzeitig an den Cluster übermittelt werden, indem das File mit den Rekonstruktions-Befehlen mit untenstehendem Befehl nacheinander eingegeben wird

bash Reconstruction-tif.txt