Editing
Archive
(section)
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
=How To Section 2 - VMS Commands= ==Tables== ===Table 1 - Login and Software=== <table border="1"> <tr> <td valign="top" width="200">xuct</td> <td valign="top" width="500">login password</td> </tr> <tr> <td valign="top" width="200">eve, lse, e</td> <td valign="top" width="500"> text editors</td> </tr> <tr> <td valign="top" width="200">spa corelut</td> <td valign="top" width="500">spawn a process</td> </tr> <tr> <td valign="top" width="200">uct</td> <td valign="top" width="500">main program</td> </tr> <tr> <td valign="top" width="200">uct_evaluation</td> <td valign="top" width="500"> </td> </tr> <tr> <td valign="top" width="200">uct_3d</td> <td valign="top" width="500"> </td> </tr> <tr> <td valign="top" width="200">uct_backup</td> <td valign="top" width="500"> </td> </tr> <tr> <td valign="top" width="200">aix C0000104.AIM</td> <td valign="top" width="500">examine an AIM</td> </tr> <tr> <td valign="top" width="200">aio 13</td> <td valign="top" width="500">AIM filtrations (list of procedures)</td> </tr> <tr> <td valign="top" width="200">sap</td> <td valign="top" width="500">2d AIM viewing tool</td> </tr> <tr> <td valign="top" width="200">sap -s aimfile.aim</td> <td valign="top" width="500">Opens the given AIM in sap.</td> </tr> <tr> <td valign="top" width="200">pwindow /nowait</td> <td valign="top" width="500">capture a window as TIF, GIF, etc.</td> </tr> <tr> <td valign="top" width="200">viza /nowait</td> <td valign="top" width="500">3d viewer (requires mcubes result)</td> </tr> <tr> <td valign="top" width="200">mcubes</td> <td valign="top" width="500">marching cubes</td> </tr> <tr> <td valign="top" width="200">help <code>arg</code></td> <td valign="top" width="500"> </td> </tr> <tr> <td valign="top" width="200">sh sym <code>arg</code></td> <td valign="top" width="500"> </td> </tr> <tr> <td valign="top" width="200">aimod</td> <td valign="top" width="500">to alter the dim, pos, el_size_mm, etc of an aim. Use ‘e’ to end input parameters.</td> </tr> </table> ===Table 2 - Commands and Aliases=== <table border="1"> <tr> <td valign="top" width="200">ds</td> <td valign="top" width="500">directory, with file sizes</td> </tr> <tr> <td valign="top" width="200">dh</td> <td valign="top" width="500">directory, with whole path</td> </tr> <tr> <td valign="top" width="200">dh0</td> <td valign="top" width="500">for all the files in lower directories beginning with ‘0’.</td> </tr> <tr> <td valign="top" width="200">-</td> <td valign="top" width="500">to continue command to next line</td> </tr> <tr> <td valign="top" width="200">sh sym dd</td> <td valign="top" width="500">shows symbol value {executable, path}</td> </tr> <tr> <td valign="top" width="200">sh log ud</td> <td valign="top" width="500">shows a logical value {path}</td> </tr> <tr> <td valign="top" width="200">dec</td> <td valign="top" width="500">delete file (with confirmation)</td> </tr> <tr> <td valign="top" width="200">del</td> <td valign="top" width="500">delete file (no confirmation)</td> </tr> <tr> <td valign="top" width="200">decisq</td> <td valign="top" width="500">delete ISQ file</td> </tr> <tr> <td valign="top" width="200">sh dev ud (sdud)</td> <td valign="top" width="500">report disk space (38881940 blocks equals ~19GB)</td> </tr> <tr> <td valign="top" width="200">sdur</td> <td valign="top" width="500">report disk space on measurement disk</td> </tr> <tr> <td valign="top" width="200">onjane</td> <td valign="top" width="500">set display to jane (jane.ethz.ch)</td> </tr> <tr> <td valign="top" width="200">onblund</td> <td valign="top" width="500">set display to blund (blund.ethz.ch)</td> </tr> <tr> <td valign="top" width="200">cd scratch</td> <td valign="top" width="500">view scratch directory (e.g. see MEASUREMENT_233.LOG;1)</td> </tr> <tr> <td valign="top" width="200">sh que <nowiki>*reco*</nowiki></td> <td valign="top" width="500">show reconstruction queue (also, sq <nowiki>*reco*</nowiki>)</td> </tr> <tr> <td valign="top" width="200">sh que <nowiki>*meas*</nowiki></td> <td valign="top" width="500">show measurement queue</td> </tr> <tr> <td valign="top" width="200">sh que <nowiki>*eval*</nowiki></td> <td valign="top" width="500">show evaluation queue</td> </tr> <tr> <td valign="top" width="200">del <nowiki>/entry=#</nowiki></td> <td valign="top" width="500">delete a process off queue (use see to view entry numbers)</td> </tr> <tr> <td valign="top" width="200">tp0</td> <td valign="top" width="500">tape drive for backups</td> </tr> <tr> <td valign="top" width="200">sh dev tp0 /full</td> <td valign="top" width="500">shows all information about tape drive (including if somebody has mounted it).</td> </tr> <tr> <td valign="top" width="200">purge filename</td> <td valign="top" width="500">deletes all files except for the latest version.</td> </tr> <tr> <td valign="top" width="200">v1 filename</td> <td valign="top" width="500">renames the latest version to version 1.</td> </tr> <tr> <td valign="top" width="200">dsg</td> <td valign="top" width="500">type from project directory (ur) to get a report of disk space used by all projects.</td> </tr> <tr> <td valign="top" width="200">term</td> <td valign="top" width="500">opens a new terminal (new blund terminal).</td> </tr> <tr> <td valign="top" width="200">sb 1217</td> <td valign="top" width="500">show batch info after you know the process id from the <code>see</code> command.</td> </tr> <tr> <td valign="top" width="200">sb 1217/cont</td> <td valign="top" width="500">shows the continuous cpu usage. Type <code>e</code> to exit.</td> </tr> <tr> <td valign="top" width="200">qm</td> <td valign="top" width="500">In a busy terminal, type <code>qm s "this is done"</code> to send a mail to myself.</td> </tr> <tr> <td valign="top" width="200">qmm</td> <td valign="top" width="500">Type <code>qmm s “this is done”</code> to put a mail on <i>measurement</i> queue (<code>m</code>).</td> </tr> <tr> <td valign="top" width="200">qme</td> <td valign="top" width="500">Type <code>qme s “this is done” </code> to put a mail on <i>evaluation </i>queue (<code>e</code>).</td> </tr> <tr> <td valign="top" width="200">qmr</td> <td valign="top" width="500">Type <code>qmr s “this is done”</code> to put a mail on <i>reconstruction </i>queue (<code>r</code>).</td> </tr> <tr> <td valign="top" width="200">beep</td> <td valign="top" width="500">Makes a beep sound!</td> </tr> <tr> <td valign="top" width="200">se ipl</td> <td valign="top" width="500">To look at just the jobs with IPL in the job name.</td> </tr> <tr> <td valign="top" width="200">read_meas</td> <td valign="top" width="500">Takes a measurement number and reports info on it (i.e. backup tape name etc).</td> </tr> <tr> <td valign="top" width="200">sh que /all <nowiki>*$mou*</nowiki></td> <td valign="top" width="500">Show printer queue.</td> </tr> <tr> <td valign="top" width="200">sm</td> <td valign="top" width="500">show memory</td> </tr> <tr> <td valign="top" width="200">monitor/interval=1processes/topcpu</td> <td valign="top" width="500">Every 1 second update the cpu usage. Use ctrl-Z to quit. Type <code>monitor/interval=1 processes/topcpu</code></td> </tr> <tr> <td valign="top" width="200">ss</td> <td valign="top" width="500">show current system processes</td> </tr> <tr> <td valign="top" width="200">show proc</td> <td valign="top" width="500">to see who is user</td> </tr> <tr> <td valign="top" width="200">stop <code>jobname</code></td> <td valign="top" width="500">to kill a process</td> </tr> <tr> <td valign="top" width="200">onlocal</td> <td valign="top" width="500">make display on the local machine (i.e. if you’re at blund, display is at blund). or <code>SET DISP/CREATE/TRANSPORT=TCPIP/NODE=SCAPULA.EE.ETHZ.CH</code></td> </tr> <tr> <td valign="top" width="200">dk40</td> <td valign="top" width="500">sets disk to DISK40</td> </tr> <tr> <td valign="top" width="200">dk50</td> <td valign="top" width="500">sets disk to DISK50</td> </tr> <tr> <td valign="top" width="200">help lex</td> <td valign="top" width="500">returns the possible lexical commands for script files (e.g. <code>F$SEARCH</code>)</td> </tr> <tr> <td valign="top" width="200"> move files</td> <td valign="top" width="500"><code>rename myfiles*.* [.TEMP]</code></td> </tr> <tr> <td valign="top" width="200">move files</td> <td valign="top" width="500"><code>rename myfiles*.* [-], rename myfiles*.* [-.-]</code></td> </tr> <tr> <td valign="top" width="200">see</td> <td valign="top" width="500">see current processes (<code>show entry/by=executing /full</code>)</td> </tr> <tr> <td valign="top" width="200">se ipl/full</td> <td valign="top" width="500">see ipl processes on queue</td> </tr> <tr> <td valign="top" width="200">ss</td> <td valign="top" width="500">show system processes</td> </tr> <tr> <td valign="top" width="200">stop <<code>proc id</code>></td> <td valign="top" width="500">kill a system process (i.e. <code>stop UCT_LUT7BB8</code>)</td> </tr> <tr> <td valign="top" width="200">move</td> <td valign="top" width="500">move or rename a file</td> </tr> <tr> <td valign="top" width="200">copy</td> <td valign="top" width="500">duplicate file</td> </tr> <tr> <td valign="top" width="200">rename</td> <td valign="top" width="500">move/copy files</td> </tr> <tr> <td valign="top" width="200">rename test.dir [-]</td> <td valign="top" width="500">to move up</td> </tr> <tr> <td valign="top" width="200">rename test.dir [.models]</td> <td valign="top" width="500">change name to models</td> </tr> <tr> <td valign="top" width="200">more</td> <td valign="top" width="500">view file contents</td> </tr> <tr> <td valign="top" width="200">ud *224 0</td> <td valign="top" width="500">goto DISK40:[DATA.UCT.00000224.00000404]</td> </tr> <tr> <td valign="top" width="200">lo</td> <td valign="top" width="500">logout</td> </tr> <tr> <td valign="top" width="200">ur</td> <td valign="top" width="500">goto DISK40:[DATA.UCT.PROJECTS]</td> </tr> <tr> <td valign="top" width="200">or</td> <td valign="top" width="500">goto OBL projects</td> </tr> <tr> <td valign="top" width="200">ret</td> <td valign="top" width="500">return to previous directory</td> </tr> <tr> <td valign="top" width="200">tup</td> <td valign="top" width="500">check utility processing</td> </tr> <tr> <td valign="top" width="200">v1</td> <td valign="top" width="500">reduces to newest file</td> </tr> <tr> <td valign="top" width="200">dd</td> <td valign="top" width="500">directory, with dates</td> </tr> <tr> <td valign="top" width="200">d</td> <td valign="top" width="500">refresh</td> </tr> </table> ===Table 3 - File Definitions=== <table border="1" cellspacing="1" cellpadding="1"> <tr> <td valign="top" width="200">RSQ</td> <td valign="top" width="500">raw image file (contains projection data), created with scan</td> </tr> <tr> <td valign="top" width="200">ISQ</td> <td valign="top" width="500">reconstructed file (contains slice data), created from RSQ</td> </tr> <tr> <td valign="top" width="200">AIM</td> <td valign="top" width="500">discretized CT results, extracted from ISQ.</td> </tr> <tr> <td valign="top" width="200">RAW</td> <td valign="top" width="500">raw data (RSQ)</td> </tr> <tr> <td valign="top" width="200">IMA</td> <td valign="top" width="500">image data (AIM, ISQ, GOBJ).</td> </tr> </table> ===Table 4 - Reconstruction and Batch Jobs=== <table border="1" cellspacing="1" cellpadding="1"> <tr> <td valign="top" width="200">fan_reko_all [] 9.6</td> <td valign="top" width="500">reconstruct ISQ from RSQ in directory [] with a reconstruction angle of 9.6 (righthand-rule).</td> </tr> <tr> <td valign="top" width="200">fan_reko 9.6 [] 22 10</td> <td valign="top" width="500">reconstruct ISQ from RSQ, angle 9.6, directory [], first slice number, number of slices (optional queue name). Must reconstruct at least 2 slices. Get reconstruction angle from uct_evaluation (atan).</td> </tr> <tr> <td valign="top" width="200">fan_reco</td> <td valign="top" width="500">interactive reconstruction of single slices from RSQ data.</td> </tr> <tr> <td colspan="2" valign="top" width="702">subut MEASUREMENT_92.COM;1 /que=BLUND_MEASURE submeas #sample</td> </tr> <tr> <td valign="top" width="200"> </td> <td valign="top" width="500">submit a batch job</td> </tr> </table> ===Table 5 - Directory and File Organization=== <table border="1" cellspacing="1" cellpadding="1"> <tr> <td valign="top" width="200">data</td> <td valign="top" width="500">DISK40:[DATA.UCT.00000224.00000404]<br> C0000274.ISQ;1 {after reconstructing all slices}<br> C0000274.RSQ;1 {measurement output}<br> C0000274.AIM;1 {extracted from ISQ}</td> </tr> <tr> <td valign="top" width="200">projects</td> <td valign="top" width="500">DISK40:[DATA.UCT.PROJECTS.JAX]<br>00000216.DIR;1 :DISK40: [DATA.UCT.PROJECTS.JAX.00000216.00000354] :C0000229.AIM;1 :C0000229_GFILT.AIM;1 :C0000229_THRES.AIM;1<br> 00000217.DIR;1 {more data files as above, etc.}<br> COM.DIR;1 :DISK40:[DATA.UCT.PROJECTS.JAX.COM] :EVAL.COM;1 :IPL_SCANCO_V4.COM;1 :UCT_EVALUATION_FULL.COM;1<br> DOC.DIR;1 :Directory DISK40:[DATA.UCT.PROJECTS.JAX.DOC.IMG] :2D.DIR;1 {images from SAP usually} :3D.DIR;1 {images from viza usually} :LANDMARKS.DIR;1 {other images}<br> LOG.DIR;1 {evalution processing logs}</td> </tr> </table> ===Table 6 - AIO Procedures=== <table border="1" cellspacing="1" cellpadding="1"> <tr> <td valign="top" width="200"> <p align="left">AIO Procedures</p> </td> <td valign="top" width="500"> <p align="left">1. Different mathematical procedures.</p> <p align="left">2. Different mask procedures.</p> <p align="left">3. Exchange a slice with another slice in the AIM.</p> <p align="left">4. Reduce an AIM with cardinal reduction factors.</p> <p align="left">5. Calculate the relative positions of two AIMs.</p> <p align="left">6. Thresholding an AIM.</p> <p align="left">7. Thresholding and inverting an AIM.</p> <p align="left">8. Fill AIM with ramp function.</p> <p align="left">9. Calculate morphometric parameters from AIM.</p> <p align="left">10. Convert BID image to AIM with only one slice.</p> <p align="left">11. Mirror slices in AIM.</p> <p align="left">12. Interleaf slices in AIM.</p> <p align="left">13. Gaussian filtration of AIM.</p> <p align="left">14. Read single slice in AIM and convert to BID image.</p> <p align="left">15. Select AIM subimage (or MINIMAL).</p> <p align="left">16. SIBA bone remodeling module.</p> <p align="left">17. Flip, flop or flup AIM.</p> <p align="left">18. Convert AIM from YZ or XZ to XY representation.</p> <p align="left">19. Segmentation of AIM using region growing.</p> <p align="left">20. Segmentation of AIM using local thresholding.</p> <p align="left">21. Select cylindrical subvolume from AIM.</p> <p align="left">22. Calculate fist and second area moments from AIM.</p> </td> </tr> </table> ===Table 7 - EVE Editor Commands=== <table border="1" cellspacing="1" cellpadding="1"> <tr> <td valign="top" width="200">gold key</td> <td valign="top" width="500"><code><PF1></code></td> </tr> <tr> <td valign="top" width="200">copy</td> <td valign="top" width="500"><code><PF1><Remove></code> on VMS</td> </tr> <tr> <td valign="top" width="200">paste</td> <td valign="top" width="500"><code><Insert Here></code> on VMS <i>or </i> <code> <ctrl><insert></code> on PC</td> </tr> <tr> <td valign="top" width="200">cut</td> <td valign="top" width="500"><code><Remove> </code> on VMS <i>or </i><code><delete> </code> on PC</td> </tr> <tr> <td valign="top" width="200">learn</td> <td valign="top" width="500"><code><CTRL><K></code></td> </tr> <tr> <td valign="top" width="200">stop</td> <td valign="top" width="500"><code><CTRL><R> </code> (then give a key sequence such as <code><CTRL><Q></code>)</td> </tr> <tr> <td valign="top" width="200">repeat</td> <td valign="top" width="500"><code><PF1><#><(CTRL-Q)> </code> (the <code>CTRL-Q </code> depends on the given key sequence).</td> </tr> <tr> <td valign="top" width="200">find next</td> <td valign="top" width="500"><code><PF3></code></td> </tr> <tr> <td valign="top" width="200">enter search string</td> <td valign="top" width="500"><code><PF1><PF3></code></td> </tr> <tr> <td valign="top" width="200">replace string</td> <td valign="top" width="500"><code><PF1><S></code></td> </tr> <tr> <td valign="top" width="200">margins</td> <td valign="top" width="500">Mouse click bottom of window type: <code>set right 999</code></td> </tr> <tr> <td valign="top" width="200">kill line</td> <td valign="top" width="500"><code><PF4></code></td> </tr> <tr> <td valign="top" width="200">kill word</td> <td valign="top" width="500">- (minus key on number pad)</td> </tr> <tr> <td valign="top" width="200">advance next line</td> <td valign="top" width="500"><code>0</code> (zero on number pad)</td> </tr> <tr> <td valign="top" width="200">select text</td> <td valign="top" width="500"><code><CTRL><SPACE></code></td> </tr> <tr> <td colspan="2" valign="top" width="702">Further reference at <code>DISK1:[RAM.EDIT]TPU.ACCEL </code> where some of Ralph’s definitions are described.</td> </tr> </table> ==Project How To's== ===How To: Set up a new project=== :<i>Step 1: Make directories</i> :* In DISK40:[DATA.UCT.PROJECTS] make a directory HERZOG. :*Make COM, LOG, DOC directories. DOC can have IMG. IMG can have 2D and 3D. :<i>Step 2: Copy files</i> :* Copy some of the COM files from another project. Especially EVAL.COM and EVALUATION.COM. :* EVAL.COM is the main file that calls EVALUATION.COM :<i>Step 3: Create a symbol</i> :* Go to: <code>cd DISK1:[UCT]</code> :*Edit:<code> eve LOGIN.COM</code> :* Add logical <code>HERZOG</code> in alphabetical order. :* Add <code>EVAL_HERZOG :== @UCT-DATA-R:[HERZOG.COM]EVAL.COM HERZOG</code> :* Type <code>rulog</code> to update the symbols. ===How To: Process a project=== :* Record specimens to be scanned on a project sheet. :* Scan :* Create directory in projects: COM, LOG, MODELS, DOC :* Create EVAL.COM :* Do evaluation (will move the output AIMs to the projects directory) :* Backup RSQs. :* Rename the AIMs and place in MODELS. :* Backup AIMs fromUD (measurement disk). Note that we don’t backup ISQs. These can be made again from the RSQs and take much more disk space than the AIMs that have been cutout from them. :* Generate 2D images. ===How To: Evaluate a project (PRE)=== :* This is done in 2 steps: AIM extraction, AIM filtration. :*Run the evaluation as user XUCT so that enough memory can be allocated for the job. To login as xuct on blund, type <code>blund</code> (see HowTo:). :* <code>EVAL_HERZOG G 245</code> (runs the evaluation, with option G, on sample 245). :* When <code>uct_evaluation</code> tool pops up, click <code>cancel</code> to get sample 245. :*Select the <evaluation 3D> button, select <ROI>, then <start evaluation>. :*Then <code>exit</code>. :*To look at the latest <code>UCT_EVALUATION.LOG</code>, go to <code>cd scratch</code> :*Once the AIM has been successfully extracted (it’ll be located in the measurement directory), start the second part of the analysis by typing: <code>EVAL_HERZOG SE 245</code> or <code>EVAL_HERZOG 245</code>. With no options defaults to GSE, and since option G is already processed, it skips to options <code>SE</code>. ::- Option <code>S</code> starts SAP with which the user can check that the AIM captures the data of interest. ::- Once you exit from SAP, the file is Gaussian filtered (option <code>E</code> in script), renamed to the PROJECTS directory, and the original ISQ file in the measurement directory is deleted. :*Once the two steps of evaluation are finished, the filtered aims should be renamed to meaningful project names (see renaming HowTo's). :*If anything goes wrong in the evaluation, goto the LOG directory in the HERZOG project to see the problem. ===How To: Evaluate a project (POST)=== :*This is done typically once the original data has been pre-processed (i.e., cutout and filtered). :* Create a script file with the exact name: <CODE>SUBMIT_ALL_IPL.COM</code> ::- This file usually contains references to various steps in the evaluation such as trabecular morphological evaluation, cortical evaluation, mask generation, etc. These might be named <code>TRAB</code>, <code>CORT</code>, <code>MASK</code> or, if all three steps are to be performed, use <code>ALL</code>. :* Create an IPL procedure file (as opposed to interactive use of IPL). Remember to use the two dots (..) after the IPL procedure! This file might be named <code>IPL_TRAB_SUBMIT_ALL.COM</code> for example. One of these files is necessary for each of the possible evaluations (trab, cort, mask). :* Test the procedures by submitting only one job. ::- From the <code>COM</code> directory, type <code>SAI TRAB NORMAL-01</code>. This will submit the file that contains the string <code>NORMAL-01</code> to be evaluated using the IPL procedure that <code>TRAB</code> refers to in the <code>SUBMIT_ALL_IPL.COM</code> file. :* Submit the project for evaluation using <code>SAI ALL</code>. Or, if only one part of the evaluation is to be performed <code>SAI TRAB</code>. :* Look in the <code>LOG</code> directory for the results from the evaluation. ===How To: Measure reconstruction angle and align an image axially=== :* The ISQ generated from the RSQ can be re-aligned axially. :* Measure the reconstruction angle: ::- Start <code>uct_evaluation</code> and load the ISQ image. ::- Launch <code>corelut</code> from<code> uct_evaluation</code> (<code><lut></code>, <code><modify></code>, <code><option cursor></code>, <code> <position></code>). ::- Click <code><draw line></code> and <code><show></code>. ::- <code><shift></code> to draw line, <code><mb2></code> to store line (don’t forget to uncheck the show line button). ::- View reconstruction angle in corelut window. Follow right-hand rule. :* Generate a new ISQ with: <code>fan_reko_all [directory] -12.6</code> ===How To: Rename the AIMs from the data base and move to MODELS=== :*Do this from the COM directory of the particular project: <code>ur michigan</code> :* Type: <code>r2m 404 421</code> (these are the measurement numbers). Makes a file called REN2MODELS.COM. :* if you want to rename also GOBJ + THRES + FILT aims, type <code>r2m ALL (+meas #)</code> :*Edit the COM file. Change xx.yy to MICHIGAN (capitals). Change “right�? to “r�? and “left�? to “l�? so that all files are the same length. :* @REN2MODELS.COM (moves the files to the MODELS directory). :* Test that the AIMs were properly moved to the MODELS directory by typing: <code>dh0</code> (tests no files in 000... from projects directory). :*Delete the empty directories: <code>dec0</code> ===How To: Create 2D or 3D images=== :*Always rename the images from their system-given name to a meaningful project name. :* Manually, start <code>corelut</code>. Set colormap to black and white (#2). :<i>Option 1: Manual</I> :*Start <code>sap</code> and <code>pwindows</code>. :<i>Option 2: Automatic</i> :* Generate an SAP.COM file using <code>@ut:create_sap-pw.com </code>or “<code>csp</code>�? :* Edit SAP.COM. Then start with <code>@SAP.COM XY</code>. :* Make XY, YZ and XZ 2d images, and some detail images. Always close <code>pwindows</code> before <code>sap</code>. The next AIM will be automatically loaded. :* Always save as TIFFs. Powerpoint is able to make invisible background with TIFFs only. :* Rename the TIFF files to TIF (one ‘F’) so that programs such as Adobe Photoshop will recognize the files. :* Look at TIFFs using <code>xv filename</code> or <code>i disp filename</code> (image magick). ===How To: Compile LOG files from IPL evaluation=== :*Concatenate the log files into one long file and place it in the log directory. ::- <code>app/new ipl_trab*.log [-.doc]calgary_bear_trab.log</code> :*In the doc directory, use the tabulating program to extract the results. ::- <code>taball calgary_bear</code> (it looks for a file ending in ‘<code>_trab</code>’ extension). :*Instead of <code>taball</code>, individual IPL evaluation results can be tabulated. Type <code>tab</code> to get the usage. ==Tape== ===How To: Tape is allocated to another user=== :* Before using tape, test with <code>sh dev tp0 /full</code> :* Status <code>online allocated</code> or <code>offline</code>. Should be <code>online</code> before using. :* If somebody else is using the tape, wait. :* If you are the one using the tape, make sure you <code>dismount tp0</code> or <code>dismount tp0/nounload</code> from the same window you mounted the tape. :* If there is a serious error in getting the tape use back, then logout of blund completely (<code><exit></code> button on CDE at top of screen) and log back (<code>xuct</code>). :* Any currently running queued jobs, including current measurements, will not be affected by the logout. ===How To: Deal with a full backup tape=== :<i>Option 1: From an archive script</i> :* Wait for the script to fail after typing no for the request for volume 2 tape by the program. :* dismount tp0 to remove tape. :* Insert new tape, initialize with <code>uct_backup</code>, and start script again so that it includes only those filesthat were not already backed up on the previous tape (check the measurement directories). :<I>Option 2: From the uct_backup utility</I> :* Resume the operation on a new backup tape. :*To abort the <code>uct_backup</code> utility, type<code> ctrl-y</code>. It is very slow. Be patient! :* Insert the new tape. :* With <code>uct_backup</code>, initialize the tape. Name is <code>RAW007</code> (max 6 characters). :*Continue backing up after mounting the new tape. :<i>Option 3: From <code>bltp</code> utility.</I> :* Type <code>ctrl-y</code>. ===How To: Initialize a new backup tape=== :* Put new tape in drive. :* Start <code>uct_backup</code> :*Select <code><initialize></code> <I>before</I> <code><mount></code>. :* An alternative to using <code>uct_backup</code> is to type at the command line: <code>init tp0 BE0007</code> ===How To: Archive (RSQ and AIM) files with a batch job=== :* <code> RAW</code> = RSQ, <code>IMA</code> = AIM. :*Create an ARCHIVE.COM file and put it in the COM directory. Always add any files that have been backed up for the project to this file so that restoration is simply a matter of changing this file. :* Automatic generation of the ARCHIVE.COM file is possible using the command: <code>archive</code> ::- <code>start_date</code>: copy and paste date of the first measured file (12-DEC-2001). ::- <code>end_date</code>: Last measured file. ::- <code>RAW data only</code>: N ::- <code>*seg.aim</code>: N :* edit the ARCHIVE.COM to include only the files that you want backed up. The version of ARCHIVE.COM can be temporarily modified at any time to: ::- archive the IMA files (AIMs). ::- restore either the IMA or RAW files from tape. :* @ARCHIVE.COM from the COM directory to execute the backup once the appropriate RAW/IMA tape is in the drive. :* Note the tape number on the project sheet. ===How To: Archive the RSQ (and AIM) files with the uct_backup tool=== :<i>Step 1: Tape in drive</I> :* Type <CODE>sh dev tp0</code> to ensure nobody else is using the drive (should not be mounted). :* Put <code>RAW006</code> in drive. :*Door up to insert tape. :*Door down to close. :*Wait for flashing light to stop. Indicates tape is loaded. :<I>Step 2: Back up utility</I> :*Start <code>uct_backup</code> :*Click on <code><mount>/code> :*Click on file to backup in window and file type (i.e. <code>RSQ</code>). :*Select <code><move to></code> (from disk to tape), or <code><copy to></code> (from tape to disk). :*Check that we are moving to <code>tape</code>, not <code>trash</code>! :*Click <code><start></code> :*Click <code><yes></code> :*Then minimize the window. Never re-open the minimized window during the backup process. It will open automatically when done. :*Note the tape label on the project sheet. :<i>Step 3: Remove tape</I> :*Click on <code><unmount></code>. :*Wait for green light, then pop open the door. Done! ===HowTo: Delete a measurement=== :<i>Option 1: Permanent deletion (i.e., a failed measurement)</I> :* Use <code>uct_backup</code> :* Then <code>move to</code> the <code>trash bin</code>. Click on the <code>all</code> box. :* Type <code>exit</code>. :* This removes the measurement from the micro-CT database and prevents future confusion. :<i>Option 2: Delete a restored RSQ (i.e., a good measurement was restored from backup tape)</I> :* Confirm that the RSQ is stored on tape (<code>read_meas</code>). :*Delete the file manually (i.e., <code>del SOME.RSQ</code>). ===HowTo: Archive a project=== :* Do this once MODELS has been created. :* In the project directory, type <code>bltp</code> to remind yourself how to use the command. :* Choose an appropriate name for the SAV name. It must be 13 characters max, and must not be the same name as another sav file on the backup tape. :* Type: <code>bltp HERZOG HERZOG_NORMAL BE0002</code> (project name, SAV name, tape label). :* If <i>only</I> backing up the MODELS directory, type: <code>bltp HERZOG.MODELS HERZOG_NORMAL BE0002</code> :*Creates a BCK directory and puts the SAV (equivalent to a tar) filename in that directory. :*Use <code>quick mail</code> in the busy terminal to notify myself when the backup is complete. :*Type to dismount the tape once done: <code>dismount tp0</code> :*This command does not delete anything from the disk. That is up to you to decide. ::-Usually the AIM GFILT data should be deleted to save space, but keep the thresholded AIMs as they are much smaller files. ===How To: Restore a project=== :* Insert the backup tape into the drive. :* Check what SAV name (in the project BCK directory) includes the files that you want to restore. :* Type: <code>blud HERZOG_NORMAL</code> or <code>blud MICH_BAT01</code> to restore that SAV batch. :* Restored files are automatically put into their original directories. ==Process== ===HowTo: Convert an AIM to a stack of TIFFs=== :* Convert AIM to BID with <code>aimio</code>. :* Convert BID to TIFF with <code>imagemagick</code>. :* Make a COM file to do this automatically. ===HowTo: Reduce resolution of an AIM=== :* Use: <code>aio filein.aim fileout.aim 4</code> (4 refers to cardinal reduction factor). :* x = 1, y = 13, z = 1, no average. ===HowTo: Switch the XY axis of an AIM=== :* Use: <code>aio filein.aim fileout.aim 18</code> :* Or, use the 64 bit option available in IPL. See the utility command files (<code>cd ut com</code>) for some options. ===HowTo: Filter the AIM data=== :* Filter with either support of 1 or 2. Use support of 1 when the data is very good and we don’t want to loose any spatial resolution. Use support of 2 when the data is a little bit sketchy. ===HowTo: Use the 64-bit procedures=== :* Refer to the Scanco manual to learn about the different procedures. :* Must be on BLUND (the 64-bit system). :<I>Step 1: Example: To flip an AIM</I> :* To make it from XZ to XY orientation, we’ll use <code>ipl_flip</code>. :* Go to: <code>cd ut com</code> (to see the command procedures. i.e. IPL stuff). :* Make a procedure here by copying an old one. :*Set the appropriate variables. See manual to see which are necessary. :*Execute the procedure interactively: <code>@ut:ipl_flip MICHIGAN...860..._GFILT.AIM <br><outputaim> XZ (we want XZ to be moved into XY orienation)</code>. :*Execute the procedure on a queue: <code>subut ipl_flip []MICHIGAN...860..._GFILT.AIM[]MICHIGAN...860..._GFILT_FLIP.AIM XZ</code> ===HowTo: Use SAP effectively=== :* Sub-selecting an AIM ::- [<code>MANAGEMENT:Superior image:New</code>] Set<code> position</code> and <code>sub-dimension</code> ::- [<code>MANAGEMENT:Sub-image selection:Apply</code>] Mouse: click selected part in overview. :* Measuring distances and/or mouse position ::- Each click of the mouse in the image window results in an output to the terminal window ::- Terminal output includes position of mouse click (both in mm and voxels) ::-Two subsequent mouse clicks results in the distance between two points output in the 2nd click. :* Mouse control ::- Left button double click: select image ::- Middle button double click: show sequential images from selected (before and after) ::- Right button double click: show menu. ===HowTo: Select a threshold=== :* Should be as deep a threshold possible without creating fragments. :* Threshold given as a value between 1 and 1000. :* A common value is 224 of a possible 1000 (22.4%). :* Work with a representative sub-aim (see HowTo:) approximately 100 voxels cubed. :<I>Option 1: Mcubes and Viza</I> :* Select the threshold after ensuring there aren’t too many fragments. :* Note that the value given here is twice the threshold value that should be used. For some reason, if you choose 40% threshold in <code>mcubes</code>, that number corresponds to a real threshold (for use in IPL commands) of 20% or 200. :<I>Option 2: SAP</I> :* Read in the Gaussian filtered aim [<code>Processing:segmentation:procedures</code>]. :* Threshold<I> only</I>. :* With different thresholds, switch between the original data and the thresholded data until satisfactory. Try other planes too! :* Go to maximum threshold until bonds are broken. ===HowTo: Run IPL in interactive mode=== :* On VMS system, start the 64 bit version with <code>ipl64</code> (<code>ipl</code> starts 32 bit version). :* To read a file: <code>read in DISK40:[DATA.UCT.PROJECTS.HERZOG.MODELS]MYAIM.AIM </code> ::or, type <code>read</code> and fill in the blanks as asked. :* The command <code>gobj</code> will find the first IPL command that starts with gobj (<code>gobj_maskaimpeel_ow</code> in this case). :* See the IPL manual for all the available commands. :* See the sample IPL script command files in this manual. ===HowTo: Extract part of amask=== :* If a mask contains, for example, values 63 and 127 (each representing a different part of the image), then the mask of each component can be extracted using thresholding. :*The <code>lower perm</code> and <code>upper perm</code> control the thresholding. :* Note that if this mask is to be used in an IPL procedure, it must be written to file before it can be used (the IPL <code>gobj</code> command is special and only accepts input from a file. Internal files in IPL are not allowed). :<I>Option 1: To get the 127 value</I> :* Threshold in IPL with <code>lower perm</code> equal 600 and <code>upper perm</code> equal 1000. :*Upper refers the maximum possible value (in case of code>char/code> it is 127, in case of <code>short</code> it is 32k). Therefore, for a <code>char</code> file, setting lower perm to 600 passes values above 76.2 only (0.6 x 127). <I>Option 2: To get the 63 value</I> :* Threshold in IPL with <code>lower perm</code> equal 100 and <code>upper perm</code> equal 800. :*Setting upper perm to 800 is a trick that, in the case of a <code>char</code> file, passes data that only has a maximum of 101.6 (0.8 x 127). :* Choosing a <code>lower perm</code> of 100 in the case of a <code>char</code> file passes data that is greater than 12.7 (0.1 x 127). ==Trouble-Shooting== ===HowTo: Get the correct colour map to display=== :* Problem: The colour map isn’t giving the correct colours. :* Close all <code>corelut</code> applications in all windows (1, 2, 3, 4) and try the <code>uct_evaluation</code> tool again. ===HowTo: Add a new command=== :*Go to directory RAM.COMMANDS. :*Add command to <code>evelog</code>. :* Use <code>rlog</code> to register the command. ===HowTo: Kill a string of processes=== :* The process needs a LOG file in order to run. We can rename the LOG file to LOGO temporarily, then delete the most recent process on the queue. All the rest of processes will fail. :* The <code>ren</code> LOGO to LOG. ===HowTo: Log in as XUCT in a terminal window=== :* Type <code>blund</code>. :* User and password: xuct, password. :* Type <code>onlocal</code> to set display to blund (see Commands and Aliases section if this option is not implemented). :* To login as a micro-CT user, type the user last name in capitals in bold, and the rest should be automatically updated: <code>BOYD</code> ===HowTo: Move files to other systems=== :<I>Option 1: FTP</I> :* <code>ftpmich</code> (give <code>anonymous</code> as login and password). :*Type: <code>cd c:\\users\anonymous</code> :: or, <code>cd f:\\anonymous\\zuerich or (cd “f:\anonymous\zuerich“)</code> :* Type: <code>cd zuerich</code> :<I>Option 2: cp</I> :* Type: <code>cp2mich zuerich /bin MICHIGAN*.AIM</code> ===HowTo: View TIFFS or GIFS=== :* Use either <code>xv filename.tiff</code> or <code>i disp filename.tiff</code> ===HowTo: Generate a text file=== :* If, for example, we wanted a text file of all the processes running on the reconstruction queue so that we can create a COM file to kill a number of processes, type ::-<code> sh que *reco* /output=queuekiller.com</code> :* Then, edit queuekiller.com so that the COM file could be executed. :* Then execute with<code> @queuekiller.com</code> ===HowTo: Subselect a minimal AIM=== :* Type: <code>aio mydata.aim * minimal 15</code> :* Or, replace the * with an output filename if different than the input name. :* Give the <code>extra offset </code>in <code>X equal 0</code>, in <code>Y equal 0</code>, and in <code>Z equal 0</code>. ===HowTo: Set logicals and symbols on OpenVMS=== :The logicals and symbols should be defined in the user account, rather than the microct_common account so it only overrides YOUR settings, but not of anybody else on the same computer (i.e., user calibration). :*In <code>DISK1:[MICROCT]MICROCT_SETUP_USER.COM</code> input your special settings. :For example, to override the current IPL evaluation script that is used by uct_evaluation, do the following in the file: ::<code>$ define uct_evaluation ue:xxxxx.com</code> ==Records== ===HowTo: Michigan project sheet=== ::[[Image:Picture_one.jpg|Michigan Pic]] ==[[Howto_3| Sample COM Files]]== [[Howto_3| Sample COM Files]] ==Sample COM Files== ===HowTo: Example ipl_scanco_v64.com pre-processing=== $!<br> $! _/_/_/ _/_/_/ _/ <br>$! _/ _/ _/ _/ Image Processing Language <br>$! _/ _/_/_/ _/ <br>$! _/ _/ _/ (c) Andres Laib, IBT/ETH Z¸rich <br>$! _/_/_/ _/ _/_/_/_/ <br>$! <br>$! <br>$! <br>$! IPL Batch Scanco <br>$! <br>$! Segmentation with gauss filter and thresholding. <br>$! The segmented volume is saved compressed to file. <br>$! <br>$! <br>$ define log_file 'p1' <br>$ define org_file 'p2' <br>$ define gobj_file 'p3'.GOBJ <br>$ define gau_file 'p3'_GFILT.AIM <br>$ define seg_file 'p3'_THRES.AIM <br>$! <br>$ show log log_file <br>$ show log org_file <br>$ show log gobj_file <br>$ show log gau_file <br>$ show log seg_file <br>$! <br>$! <br>$ ipl_scanco_prog := $um:ipl_scanco_m64.exe <br>$! <br>$ ON ERROR THEN EXIT <br>$! <br>$ ipl_scanco_prog <br>/db_scanco_activate true <br>! read, threshold and vox gfilt aim file <br>/read org org_file <br>/sup_divide org <br>-supdim_numbers 4 4 4 <br>-testoff_pixels 1 1 1 <br>/gauss_lp org gau <br> -sigma 1.2 <br>-support 1 <br>/del org <br>/write gau gau_file <br>/vox_scanco_param <br>-input gau <br>.. <br>$ ON ERROR THEN CONTINUE <br>$! ENDIF <br>$!------------------------------------------------------------------------------ <br>$ ENDCOM: <br>$ IF F$SEARCH("gau_file") .NES. "" <br>$ THEN <br>$ org = F$SEARCH("org_file") <br>$! IF org .NES. "" THEN DELETE/NOCONFIRM 'org' <br>$ ENDIF <br>$ EXIT ===HowTo: Example ipl_scanco_v64.com post-processing=== <br>$! <br>$! _/_/_/ _/_/_/ _/ <br>$! _/ _/ _/ _/ Image Processing Language <br>$! _/ _/_/_/ _/ <br>$! _/ _/ _/ (c) Andres Laib, IBT/ETH Zrich <br>$! _/_/_/ _/ _/_/_/_/ <br>$! <br>$! <br>$! <br>$! IPL Batch Scanco <br>$! <br>$! Segmentation with gauss filter and thresholding. <br>$! The segmented volume is saved compressed to file. <br>$! <br>$! <br>$ define log_file ‘p1’ <br>$ define org_file ‘p2’.AIM <br>$ define gobj_file ‘p2’.GOBJ <br>$ define gau_file ‘p2’_GFILT.AIM <br>$ define seg_file ‘p2’_THRES.AIM <br>$! <br>$ show log log_file <br>$ show log org_file <br>$ show log gobj_file <br>$ show log gau_file <br>$ show log seg_file <br>$! <br>$! <br>$ ipl_scanco_prog := $um:ipl_scanco_m64.exe <br>$! <br>$ ON ERROR THEN EXIT <br>$! <br>$!------------------------------------------------------------------------------ <br>$!Gauss filter, cutout with GOBJ, and threshold <br>$!------------------------------------------------------------------------------ <br>$ IF F$SEARCH(“seg_file�?) .EQS. ““ <br>$ THEN <br>$ ipl_scanco_prog <br>/db_scanco_activate false <br>! read, then gauss filter aim <br>/read org org_file <br>/gauss_lp org gau <br>-sigma 1.2 <br>-support 2 <br>/del org <br>! cutout with gobj <br>/gobj_maskaimpeel_ow <br>-input_output gau <br>-gobj_filename gobj_file <br>-peel_iter 0 <br>! threshold <br>/threshold <br>-input gau <br>-output seg <br>-lower_in_perm 250 <br>-upper_in_perm 1000 <br>-value_in_range 127 <br>/write <br>-name gau <br>-filename gau_file <br>-compress false <br>/del gau <br>/write <br>-name seg <br>-filename seg_file <br>-compress bin <br>.. <br>$ ON ERROR THEN CONTINUE <br>$ ENDIF <br>$!------------------------------------------------------------------------------ <br>$!Morphological and anisotropic analysis <br>$!------------------------------------------------------------------------------ <br>$ipl_scanco_prog <br>/db_scanco_activate false <br>/read seg seg_file <br>/tri <br>-input seg <br>-output tri <br>-gobj_filename gobj_file <br>-peel_iter -1 <br>-ip_sigma 2.000000 <br>-ip_support 0 <br>-ip_threshold 64 <br>-interpolate true <br>-nr_ave_iter 0 <br>-t_dir_radius 2 <br>-epsilon 1.200000 <br>-size_image 512 512 <br>-scale_image 0.700000 <br>-edges false <br>-nr_views 0 <br>.. <br>$ ON ERROR THEN CONTINUE <br>$ipl_scanco_prog <br>/db_scanco_activate false <br>/read seg seg_file <br>/dt_object_param <br>-input seg <br>-output out <br>-gobj_filename gobj_file <br>-roi_radius_factor 10000.000000 <br>-ridge_epsilon 0.900000 <br>-assign_epsilon 1.800000 <br>-histofile_or_screen none <br>.. <br>$ ON ERROR THEN CONTINUE <br>$ipl_scanco_prog <br>/db_scanco_activate false <br>/read seg seg_file <br>/dt_background_param <br>-input seg <br>-output out <br>-gobj_filename gobj_file <br>-roi_radius_factor 10000.000000 <br>-ridge_epsilon 0.900000 <br>-assign_epsilon 1.800000 <br>-histofile_or_screen none <br>.. <br>$ ON ERROR THEN CONTINUE <br>$ipl_scanco_prog <br>/db_scanco_activate false <br>/read seg seg_file <br>/dt_mat_param <br>-input seg <br>-output out <br>-gobj_filename gobj_file <br>-roi_radius_factor 10000.000000 <br>-ridge_epsilon 0.900000 <br>-assign_epsilon 1.800000 <br>-histofile_or_screen none <br>.. <br>$ ON ERROR THEN CONTINUE <br>$ipl_scanco_prog ===HowTo: Example submit_all_ipl.com=== <br>$ com := UT:IPL_SUBMIT_USER.COM <br>$ dir = F <br>$ENVIRONMENT(“DEFAULT�?) - “.COM]�? <br>$ proc_maskxy := ‘dir.COM]IPL_MASKXY_SUBMIT_ALL.COM <br>$ proc_maskxz := ‘dir.COM]IPL_MASKXZ_SUBMIT_ALL.COM <br>$ proc_trabtop := ‘dir.COM]IPL_TRABTOP_SUBMIT_ALL.COM <br>$!------------------------------------------------------------------------------ <br>$ IF P1 .EQS ““ <br>$ THEN <br>$ SAY “Usage: SAI [ALL,MASKXY,MASKXZ,TRABTOP] <br>$ EXIT <br>$ ENDIF <br>$!------------------------------------------------------------------------------ <br>$ IF P1 .NES “ALL�? THEN GOTO ‘P1’ <br>$!------------------------------------------------------------------------------ <br>$ MASKXY: <br>$ FDA @’com’ ‘dir’.MODELS]*’p2’*_INNER_XY.GOBJ [] USER:MASKXY BLUND_EVAL ‘dir’.LOG] ‘proc_maskxy’ <br>$ IF P1 .NES “ALL�? THEN GOTO ENDCOM <br>$!------------------------------------------------------------------------------ <br>$ MASKXZ: <br>$ FDA @’com’ ‘dir’.MODELS]*’p2’*_UPPER_XZ.GOBJ [] USER:MASKXZ BLUND_EVAL ‘dir’.LOG] ‘proc_maskxz’ <br>$ IF P1 .NES “ALL�? THEN GOTO ENDCOM <br>$!------------------------------------------------------------------------------ <br>$ TRABTOP: <br>$ FDA @’com’ ‘dir’.MODELS]*’p2’*_MASK_XZ.AIM [] USER:TRABTOP BLUND_EVAL ‘dir’.LOG] ‘proc_trabtop’ <br>$ IF P1 .NES “ALL�? THEN GOTO ENDCOM <br>$!------------------------------------------------------------------------------ <br>$ ENDCOM: <br>$ EXIT <br>$!------------------------------------------------------------------------------ ===HowTo: Example ipl_maskxy_submit_all.com=== <br>$! <br>$! _/_/_/ _/_/_/ _/ <br>$! _/ _/ _/ _/ Image Processing Language <br>$! _/ _/_/_/ _/ <br>$! _/ _/ _/ (c) Andres Laib, IBT/ETH Zürich <br>$! _/_/_/ _/ _/_/_/_/ <br>$! <br>$! <br>$! <br>$! IPL Batch Scanco <br>$! <br>$! Calculation of morphometric properties in the TRAB region. <br>$! <br>$! <br>$ p2 = p2 - “_INNER_XY�? <br>$! <br>$ define log_file ‘p1’ <br>$ define sum_file ‘p2’_MASK_XZ.AIM <br>$ define seg_file ‘p2’_MSK_INNER.AIM <br>$ define xzaim_file ‘p2’_INNER_XZ.AIM <br>$ define gobj_1_file ‘p2’_INNER_XY.GOBJ <br>$ define gobj_2_file ‘p2’_TOPER_XZ.GOBJ <br>$! <br>$ show log log_file <br>$ show log sum_file <br>$ show log seg_file <br>$ show log xzaim_file <br>$ show log gobj_1_file <br>$ show log gobj_2_file <br>$! <br>$! <br>$ ipl_scanco_prog := <br>$um:ipl_scanco_m64.exe <br>$! <br>$ ON ERROR THEN CONTINUE <br>$! <br>$!------------------------------------------------------------------------------ <br>$!Create an AIM with INNER_XY.GOBJ, write XZ version. <br>$! (Send pos info to log files) <br>$!------------------------------------------------------------------------------ <br>$ IF F <br>$SEARCH(“xzaim_file�?) .EQS. ““ <br>$ THEN <br>$ ipl_scanco_prog /db_scanco_activate false ! read xy inner gobj /gobj_to_aim -gobj_filename gobj_1_file -output gob -peel_iter 0 /examine gob -item geometry /flip_aim gob flip -new_xydir xz /examine flip -item geometry /write flip xzaim_file .. <br>$ ON ERROR THEN CONTINUE <br>$ GOTO ENDCOM <br>$ ENDIF <br>$! Before proceeding to this next part, the “pos�? of the INNER_XZ.AIM files <br>$! created above must be reset from 0 to the proper values based on aims <br>$! before and after flipping. The change in the AIM is done with a <br>$! script that calls program “aimod�?. <br>$! <br>$!------------------------------------------------------------------------------ <br>$!Create an AIM mask AIM with INNER_XZ.AIM and TOPER_XZ.GOBJ <br>$!------------------------------------------------------------------------------ <br>$ IF F <br>$SEARCH(“sum_file�?) .EQS. ““ <br>$ THEN <br>$ ipl_scanco_prog /db_scanco_activate false /read in xzaim_file /gauss_lp in gau -sigma 3.0 -support 3 /del in /threshold gau seg -lower_in_perm 450 -upper_in_perm 1000 -value_in_range 63 /del gau /write seg seg_file -compress bin /del seg ! read xz toper gobj /read seg seg_file /gobj_mask seg -gobj_filename gobj_2_file -peel_iter 0 /read bot seg_file /set_value bot -value_object 64 -value_background 0 /concat bot seg sum -common_region_only false -add_not_overlay true /del seg /del gob ! write the final aim /write sum sum_file -compress bin .. <br>$! <br>$ DELETE/LOG ‘’seg_file’; <br>$ GOTO ENDCOM <br>$ ENDIF <br>$ ON ERROR THEN CONTINUE <br>$!------------------------------------------------------------------------------ <br>$ ENDCOM: <br>$ EXIT ===HowTo: Example flip_xz.com=== <br>$!----------------------------------------------------------------------------- <br>$! RENAME SAMPLES <br>$!----------------------------------------------------------------------------- <br>$ project = “HERZOG�? <br>$ dir = “DISK40:[DATA.UCT.PROJECTS�? <br>$ IF F <br>$SEARCH(“‘’dir’.’’project’]*.*�?) .NES. ““ <br>$ THEN <br>$ dir = “‘’dir’.’’project’�? <br>$ ELSE <br>$ SAY ““ <br>$ SAY “Directory ‘’dir’.’’project’] is empty.�? <br>$ SAY ““ <br>$ EXIT <br>$ ENDIF <br>$!----------------------------------------------------------------------------- <br>$! <br>$ @UT:IPL_FLIP.COM ‘dir’.MODELS]HERZOG_CAT_00WK-01-NORMAL_GFILT.AIM - <br>$! ‘dir’.MODELS]HERZOG_CAT_00WK-01-NORMAL_GFILT_XZ.AIM XZ <br>$! <br>$ @UT:IPL_FLIP.COM ‘dir’.MODELS]HERZOG_CAT_70MO-1B-CLAT-R_GFILT.AIM - ‘dir’.MODELS]HERZOG_CAT_70MO-1B-CLAT-R_GFILT_XZ.AIM XZ <br>$ @UT:IPL_FLIP.COM ‘dir’.MODELS]HERZOG_CAT_74MO-1D-ACLT-L_GFILT.AIM - ‘dir’.MODELS]HERZOG_CAT_74MO-1D-ACLT-L_GFILT_XZ.AIM XZ <br>$ @UT:IPL_FLIP.COM ‘dir’.MODELS]HERZOG_CAT_74MO-1D-CLAT-R_GFILT.AIM - ‘dir’.MODELS]HERZOG_CAT_74MO-1D-CLAT-R_GFILT_XZ.AIM XZ <br>$!----------------------------------------------------------------------------- <br>$ EXIT <br>$!----------------------------------------------------------------------------- ===HowTo: Example eval.com=== <br>$!------------------------------------------------------------------------------ <br>$!EVAL.COM <br>$!------------------------------------------------------------------------------ <br>$IF P1 .EQS. ““ <br>$THEN <br>$ SAY ““ <br>$ SAY “Usage:�? <br>$ SAY “ <br>$ @EVAL.COM RESDIR [ADPGSE] SAMPLE_ID [MEAS_ID] [PAR5-8]�? <br>$ SAY ““ <br>$ SAY “ A: All�? <br>$ SAY “ D: Set Measurement Directory�? <br>$ SAY “ G: Generate AIM interactively�? <br>$ SAY “ S: Startup SAP�? <br>$ SAY “ E: Evaluating AIM�? <br>$ SAY ““ <br>$ EXIT <br>$ENDIF <br>$!------------------------------------------------------------------------------ <br>$ON CONTROL_C THEN GOTO ENDCOM <br>$ON CONTROL_Y THEN GOTO ENDCOM <br>$IF P2 .EQS. ““ THEN P2 = “D�? <br>$IF F <br>$INTEGER(P2) .NES. 0 <br>$THEN <br>$ P4 = P3 <br>$ P3 = P2 <br>$ P2 = “A�? <br>$ENDIF <br>$!------------------------------------------------------------------------------ <br>$!CHECK DIRECTORY SYNTAX <br>$!------------------------------------------------------------------------------ <br>$olddir = F <br>$PARSE(F <br>$DIRECTORY()) - “.;�? <br>$IF P3 .NES. ““ <br>$THEN <br>$ IF P4 .NES. ““ <br>$ THEN <br>$ CDN UD *’P3’ *’P4’ <br>$ ELSE <br>$ CDN UD *’P3’ 0 <br>$!------------------------------------------------------------------------------ <br>$!EVAL.COM <br>$!------------------------------------------------------------------------------ <br>$IF P1 .EQS. ““ <br>$THEN <br>$ SAY ““ <br>$ SAY “Usage:�? <br>$ SAY “ <br>$ @EVAL.COM RESDIR [ADPGSE] SAMPLE_ID [MEAS_ID] [PAR5-8]�? <br>$ SAY ““ <br>$ SAY “ A: All�? <br>$ SAY “ D: Set Measurement Directory�? <br>$ SAY “ G: Generate AIM interactively�? <br>$ SAY “ S: Startup SAP�? <br>$ SAY “ E: Evaluating AIM�? <br>$ SAY ““ <br>$ EXIT <br>$ENDIF <br>$!------------------------------------------------------------------------------ <br>$ON CONTROL_C THEN GOTO ENDCOM <br>$ON CONTROL_Y THEN GOTO ENDCOM <br>$IF P2 .EQS. ““ THEN P2 = “D�? <br>$IF F <br>$INTEGER(P2) .NES. 0 <br>$THEN <br>$ P4 = P3 <br>$ P3 = P2 <br>$ P2 = “A�? <br>$ENDIF <br>$!------------------------------------------------------------------------------ <br>$!CHECK DIRECTORY SYNTAX <br>$!------------------------------------------------------------------------------ <br>$olddir = F <br>$PARSE(F <br>$DIREC <br>$ ENDIF <br>$ENDIF <br>$dir = F <br>$PARSE(F <br>$DIRECTORY()) - “.;�? <br>$length = F <br>$LENGTH(dir) <br>$id = F <br>$EXTRACT(length-18,18,dir) <br>$IF (F <br>$EXTRACT(0,2,id) .NES. “00�?) .OR. (F <br>$EXTRACT(9,2,id) .NES. “00�?) <br>$THEN <br>$ SAY “ “ <br>$ SAY “ THIS IS NOT A MEAUSUREMENT DIRECTORY:�? <br>$ SAY “ ‘’dir’�? <br>$ SAY “ “ <br>$ EXIT <br>$ENDIF <br>$SET DEF UCT-DATA-M:[‘id’ <br>$isqdata = F <br>$SEARCH(“*.ISQ�?) <br>$isqdata = isqdata - F <br>$PARSE(isqdata,,,�?VERSION�?) <br>$aimdata = F <br>$SEARCH(“*.AIM�?) - “_TRAB�? - “_CORT�? <br>$aimdata = F <br>$SEARCH(“‘’aimdata’�?) <br>$aimdata = aimdata - F <br>$PARSE(aimdata,,,�?VERSION�?) <br>$IF (P2 .NES. “D�?) .AND. (isqdata .EQS. ““) .AND. (aimdata .EQS. ““) <br>$THEN <br>$ SAY “ “ <br>$ SAY “ NO IMAGE DATA IN THIS DIRECTORY:�? <br>$ SAY “ ‘’dir’�? <br>$ SAY “ “ <br>$ EXIT <br>$ENDIF <br>$IF F <br>$SEARCH(“*.COM�?) .NES. ““ <br>$THEN <br>$ SAY ““ <br>$ SAY “THERE SEEM TO BE STILL UNRECONSTRUCTED SLICES IN THIS DIRECTORY:�? <br>$ DIRECTORY *.COM <br>$ EXIT <br>$ENDIF <br>$!------------------------------------------------------------------------------ <br>$!PROCESSING <br>$!------------------------------------------------------------------------------ <br>$IF P2 .EQS. “D�? THEN GOTO ENDCOM <br>$!------------------------------------------------------------------------------ <br>$IF F <br>$LOCATE(“A�?,P2) .NE. F <br>$LENGTH(P2) <br>$THEN <br>$! SAP IS INVOKED <br>$ IF isqdata .NES. ““ THEN P2 = “GSE�? <br>$ IF isqdata .EQS. ““ THEN P2 = “SE�? <br>$! SAP IS NOT INVOKED <br>$! IF isqdata .NES. ““ THEN P2 = “GE�? <br>$! IF isqdata .EQS. ““ THEN P2 = “E�? <br>$ENDIF <br>$SAY ““ <br>$!------------------------------------------------------------------------------ <br>$IF F <br>$LOCATE(“G�?,P2) .NE. F <br>$LENGTH(P2) <br>$THEN <br>$ IF (isqdata .NES. ““) .AND. ((aimdata .EQS. ““) .OR. (P2 .EQS. “G�?)) <br>$ THEN <br>$ SAY “- Evaluate ‘’isqdata’�? <br>$ DEFINL UCT_DEFAULT_ISQ ‘isqdata’ <br>$ DEFINL UCT_EVALUATION UCT-DATA-R:[‘P1’.COM]UCT_EVALUATION.COM <br>$ UCT_EVALUATION <br>$ DEASSIGN UCT_DEFAULT_ISQ <br>$ DEASSIGN UCT_EVALUATION <br>$ IF P2 .NES. “G�? <br>$ THEN <br>$ SAY “- Waiting for evaluation job to complete ...�? <br>$ counter = 1 <br>$ loop: <br>$ WAIT 00:00:10 <br>$ elapsed_time = counter * 10 <br>$ IF counter .eq. 1 <br>$ THEN <br>$ SAY “ - job has been runing for ‘’F <br>$STRING(elapsed_time)’ seconds�? <br>$ ELSE <br>$ SAY “[2K[1A - job has been runing for ‘’F <br>$STRING(elapsed_time)’ seconds�? <br>$ ENDIF <br>$ ctx = ““ <br>$ temp = F <br>$CONTEXT (“PROCESS�?,ctx,�?JOBTYPE�?,�?BATCH�?,�?EQL�?) <br>$ loop_pid: <br>$ pid = F <br>$PID(ctx) <br>$ IF pid .NES. ““ <br>$ THEN <br>$ image = F <br>$GETJPI(pid,�?IMAGNAME�?) <br>$ aimdata = F <br>$SEARCH(“*.AIM�?) <br>$ IF (F <br>$LOCATE(“ISQ_TO_AIM�?,image) .NES. F <br>$LENGTH(image)) - .OR. (aimdata .EQS. ““) <br>$ THEN <br>$ counter = counter + 1 <br>$ GOTO loop <br>$ ELSE <br>$ GOTO loop_pid <br>$ ENDIF <br>$ ENDIF <br>$ aimdata = F <br>$SEARCH(“*.AIM�?) <br>$ aimdata = aimdata - F <br>$PARSE(aimdata,,,�?VERSION�?) <br>$ ENDIF <br>$ ENDIF <br>$ENDIF <br>$!------------------------------------------------------------------------------ <br>$IF F <br>$LOCATE(“S�?,P2) .NE. F <br>$LENGTH(P2) <br>$THEN <br>$ IF F <br>$SEARCH(aimdata) .NES. ““ <br>$ THEN <br>$ show sym aimdata <br>$ SAY “- Startup SAP ‘’aimdata’...�? <br>$ SAPXZ -s ‘aimdata’ <br>$ ELSE <br>$ SAY ““ <br>$ SAY “No aimdata found in directory.�? <br>$ SAY “Program exits right now.�? <br>$ GOTO ENDCOM <br>$ ENDIF <br>$ENDIF <br>$!------------------------------------------------------------------------------ <br>$IF F <br>$LOCATE(“E�?,P2) .NE. F <br>$LENGTH(P2) <br>$THEN <br>$ id_dir = F <br>$EXTRACT(0,8,id) + “]�? + F <br>$EXTRACT(9,8,id) + “.DIR�? <br>$ IF F <br>$SEARCH(“UCT-DATA-R:[‘’P1’.’’id_dir’�?) .EQS. ““ <br>$ THEN <br>$ SAY “- Create Result Directory ...�? <br>$ CREATE/DIR/LOG UCT-DATA-R:[‘P1’.’id’ <br>$ ENDIF <br>$ IF aimdata .NES. ““ <br>$ THEN <br>$ aimname = F <br>$PARSE(aimdata,,,�?NAME�?) <br>$ aimnum = F <br>$EXTRACT(0,8,id) <br>$ aimfull = “UCT-DATA-R:[‘’P1’.’’id’’’aimname’�? <br>$ comfile = “UCT-DATA-R:[‘’P1’.COM]IPL_SCANCO_V64.COM�? <br>$ logfile = “UCT-DATA-R:[‘’P1’.LOG]IPL_PRE_’’aimnum’_’’aimname’.LOG�? <br>$! SHOW SYMBOL aimname <br>$! SHOW SYMBOL aimnum <br>$! SHOW SYMBOL aimfull <br>$! SHOW SYMBOL comfile <br>$! SHOW SYMBOL logfile <br>$ !------------------------------------------------------------------- <br>$ IF F <br>$SEARCH(“‘’aimfull’_GFILT.AIM�?) .EQS. ““ <br>$ THEN <br>$! CP ‘aimdata’ ‘aimfull’.AIM <br>$ IF F <br>$SEARCH(aimdata) .NES. ““ THEN IF F <br>$SEARCH(isqdata) .NES. ““ THEN DELETE/NOCONFIRM ‘isqdata’;* <br>$ SUBDATA ‘comfile’ ‘logfile’ - ‘aimdata’ ‘aimfull’!/QUEUE=BLUND_EVAL <br>$ ENDIF <br>$ ENDIF <br>$ENDIF <br>$!------------------------------------------------------------------------------ <br>$ ENDCOM: <br>$IF F <br>$SEARCH(“UCT-DATA-M:[‘’id’*.*�?) .NES. ““ <br>$THEN <br>$ DIRECTORY/NOTRAILER UCT-DATA-M:[‘id’ <br>$ELSE <br>$ dir1 = F <br>$EXTRACT(0,8,id) <br>$ dir2 = F <br>$EXTRACT(9,8,id) <br>$ DELETE UCT-DATA-M:[‘dir1’]’dir2’.DIR;,UCT-DATA-M:[000000]’dir1’.DIR; <br>$ENDIF <br>$IF F <br>$SEARCH(“UCT-DATA-R:[‘’P1’.’’id’*.*�?) .NES. ““ THEN - DIRECTORY/NOTRAILER UCT-DATA-R:[‘P1’.’id’ <br>$SAY ““ <br>$SET DEF ‘olddir’ <br>$EXIT <br>$!------------------------------------------------------------------------------ ===HowTo: Example eval_all.com=== <br>$ eval_herzog e 245 <br>$ eval_herzog e 246 <br>$ eval_herzog e 247 <br>$ eval_herzog e 248 <br>$ eval_herzog e 249 <br>$ eval_herzog e 250
Summary:
Please note that all contributions to bone.wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
BoneWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Log in
associated-pages
Page
Discussion
English
Views
Read
Edit
View history
More
Search
Navigation
Main page
Documents
Recent changes
Help
Tools
What links here
Related changes
Page information