Getting Started SIMG 726 1 Rolando V. Raqueño Wednesday, March 16, 2016 Location of Class Notes • http://www.cis.rit.edu/~rvrpc i/teaching/simg726/20022 – Arranged by Class Number – Watch out for Posted Messages – Link to e-mail • Previous year’s notes – http://www.cis.rit.edu/~rvrpci/t eaching/simg726/20012 2 Rolando V. Raqueño Wednesday, March 16, 2016 Reading • On-Line Tour of IDL • UNIX Reading Assignment Guide • IDL Reading Assignment Guide 3 Rolando V. Raqueño Wednesday, March 16, 2016 Objective • • • • • Quiz #1 Topics Define Homework/Project #1 Brief Introduction to UNIX IDL demo More Final Project Details 4 Rolando V. Raqueño Wednesday, March 16, 2016 Quiz #1 Topics for December 6 • man • ls • cp • mv • pwd 5 Rolando V. Raqueño Wednesday, March 16, 2016 Homework/Project #1 - Part 1 • Part 1 – Copy the file .plan.blank from ~rvrpci to your home directory – Modify it to reflect your schedule – Rename the file to .plan – Change the permissions of the file to have it accessible by others (test-ask your neighbor to check to see if they can access the file through the finger command) 6 Rolando V. Raqueño Wednesday, March 16, 2016 Purpose of Part 1 • Exercises UNIX file navigation skills – copying, renaming, changing directories – handling being aware of hidden files • Exercising vi skills • Working with concept of file permissions and protections 7 Rolando V. Raqueño Wednesday, March 16, 2016 Homework/Project #1 - Part 2 • Part 2 – Write the following IDL functions that will compute the following statistics for any dimension array(s) • Minimum • Maximum • Sum • Mean • Sum_Squares • Variance • Standard_Deviation 8 Rolando V. Raqueño Wednesday, March 16, 2016 Purpose of Part 2 • Getting acquainted with the IDL array characteristics. – Function utilities to extract array properties • Mechanics of IDL “compilation” • Opportunity for Modular design of routines – Reduce, Reuse, Recycle – Debugging • LaTeX documentation exercise 9 Rolando V. Raqueño Wednesday, March 16, 2016 Homework/Project #1 - Part 2 • Test for the ambitious - Read in a PBMPLUS formatted image to test your statistics routine 10 Rolando V. Raqueño Wednesday, March 16, 2016 Homework/Project #1 Guidelines • Due Before Break • Please follow the program submission guidelines (should be in LaTeX) • Hardcopy submission (for marking up) 11 Rolando V. Raqueño Wednesday, March 16, 2016 Brief Introduction to UNIX 12 Rolando V. Raqueño Wednesday, March 16, 2016 UNIX History • Approaching 30 years of development and user use/abuse – BSD Flavor – System V Flavor – Other Flavors - LINUX • Originally developed by programmers for programmers • Way too many commands to cover 13 Rolando V. Raqueño Wednesday, March 16, 2016 Before we start % source ~rvrpci/.simg726.rc 14 Rolando V. Raqueño Wednesday, March 16, 2016 The “Original” UNIX Desktop $ 15 Rolando V. Raqueño Wednesday, March 16, 2016 The “New and Improved” UNIX Desktop % 16 Rolando V. Raqueño Wednesday, March 16, 2016 These represent UNIX Shells % prompt indicates The C-shell (csh) $ prompt indicates The Bourne-shell (sh) 17 Rolando V. Raqueño Wednesday, March 16, 2016 Other UNIX Shells •bash -“Bourne again” shell –Distributed with LINUX •tcsh - C-shell variant –Allows the use of up-arrow keys •ksh - Korn shell 18 Rolando V. Raqueño Wednesday, March 16, 2016 UNIX Shell Prompt % prompt indicates C-shell $ prompt indicates Bourne-shell 19 Rolando V. Raqueño Wednesday, March 16, 2016 What is a shell? • Captures commands and schedules it for execution. • Several shells running at a time – each shell is its own environment – each window is its own shell • Shells in UNIX are created through a process called “spawning” 20 Rolando V. Raqueño Wednesday, March 16, 2016 % xterm example % • Under the X windowing environment – Repeatedly start several windows by giving the xterm command. % xterm & % xterm & 21 Rolando V. Raqueño Wednesday, March 16, 2016 UNIX Command Form % command [options] arg2 arg3 ... argn • Very Important Concept – The command can be • a compiled program (FORTRAN, C/C++) • a file containing other UNIX commands (also called a shell script) – e.g. commands to run IDL • UNIX makes no distinction between the two 22 Rolando V. Raqueño Wednesday, March 16, 2016 % Most Important UNIX Command % man % Usage: man [-] [-M | -P pathname] [-t] [section] title ... man [-] [-M | -P pathname] [-t] [section title ...]... man [-M | -P pathname] -f title ... man [-M | -P pathname] -k keyword ... • A Usage: message typically indicates that not enough arguments were given to a command or incorrect options 23 Rolando V. Raqueño Wednesday, March 16, 2016 % Most Important UNIX Command % • To correct the command we can type % man man man(1) man(1) NAME man - Displays reference pages SYNOPSIS man [-] [-M | -P pathname] [-t] [ section[suffix] ] title ... man [-] [-M | -P pathname] [-t] [ section[suffix] title ...]... man [-M | -P pathname] pathname] -f title ... man [-M | -P pathname] -k keyword ... . 24 Rolando V. Raqueño Wednesday, March 16, 2016 % Other UNIX Commands % • You know the name of the command, but you need a reminder of what it does. % whatis man man (1) man, man.page (5) reference pages - Displays reference pages - The man macro packages for 25 Rolando V. Raqueño Wednesday, March 16, 2016 % Other UNIX Commands % • You know a keyword about a command, but don’t remember the command itself % apropos printer 26 Rolando V. Raqueño Wednesday, March 16, 2016 Keyboard Control Characters ^[ - ESC key equivalent ^C - stops a currently running process (totally abort) ^Z - suspends a running process (can be restarted) ^U - erases a complete line being typed ^S - stops output to the screen ^Q - resumes output to the screen ^D - signals an interactive end-of-file condition(EOF) 27 Rolando V. Raqueño Wednesday, March 16, 2016 Most Common Keyboard Problem Problem: You press the “backspace key” to erase a character, but instead you get ^H whenever you press it. Solution: % stty erase ^H 28 Rolando V. Raqueño Wednesday, March 16, 2016 Most Common Keyboard Problem Problem: You press the “delete key” to erase a character, but instead you get ^? whenever you press it. Solution: % stty erase ^? 29 Rolando V. Raqueño Wednesday, March 16, 2016 % UNIX Commands To Try % % whoami #This will print out your username. % hostname #This will print out computer name. % finger #This will print out current users % date #Gives current system time and date 30 Rolando V. Raqueño Wednesday, March 16, 2016 Sample UNIX Directory Tree Structure 31 Rolando V. Raqueño Wednesday, March 16, 2016 Where am I? (Two Types of Pathnames) • Absolute Path (always starts with a / ) /usr/local/bin/ls /cis/students/neg3153/.login • Relative Path (does not start with a / ) pub ./pub ../testing ~neg3153/.login 32 Rolando V. Raqueño Wednesday, March 16, 2016 % Fundamental UNIX Commands % List files in the current directory. % ls List files in the rvrpci’s home directory. % ls /cis/staff/rvrpci % ls ~rvrpci List files in the YOUR home directory. % ls ~ Lists all files including hidden files in current directory 33 % ls -a Rolando V. Raqueño Wednesday, March 16, 2016 % What “Else” UNIX Can Do (How do you spell releif?) % % % % % look look look look rel re re | more re | wc 34 Rolando V. Raqueño Wednesday, March 16, 2016 % “Excuse me, Do you sell beer in the special hogshead size” % % units #Unit Conversion Program #Try miles to feet #Try furlong to yards #Try barrel to hogshead #Try dollar to yen (unreliable) # hectopascals vs. millibars # km vs. astronomicalunits #Type ^D to get out 35 Rolando V. Raqueño Wednesday, March 16, 2016 % #%?!, I forgot my calculator! % % bc -l 2+2 10*20 3^100 sqrt(625) p=3.1415926535 c(p/2) s(p/2) for( f=-10.0; f<=10.0; f+=0.1 ) {f; s(f)} (type quit to get out) 36 Rolando V. Raqueño Wednesday, March 16, 2016 % UNIX is Y2K Compliant % % cal % cal 2000 37 Rolando V. Raqueño Wednesday, March 16, 2016 Metacharacters, Schmetacharacters • In UNIX there are several characters that are not interpreted literally but contain some special meaning. These are called metacharacters. • Examples | < Rolando V. Raqueño > * & 38 \ ( ) ! Wednesday, March 16, 2016 UNIX Plumbing facilities (Piping and Input/Output File Redirection) • Output File Redirection % command1 > output_file • Input File Redirection % command2 < input_file • Piping % command1 | command2 39 Rolando V. Raqueño Wednesday, March 16, 2016 % Piping and Redirection Examples % % echo 2+2 % echo 2+2 > input.dat % bc -l < input.dat 40 Rolando V. Raqueño Wednesday, March 16, 2016 % Piping and Redirection Examples % % echo 2+2 | bc -l % echo 2+2 | bc -l > output.dat % echo 2+2 | tee input.dat | bc -l > output.dat 41 Rolando V. Raqueño Wednesday, March 16, 2016 % Line Continuation Metacharacter % • In the previous command % echo 2+2 | tee input.dat | bc -l > output.dat • Should technically be the following % echo 2+2 | tee input.dat | \ bc -l > output.dat • Where the character “\” indicates the continuation of a command line 42 Rolando V. Raqueño Wednesday, March 16, 2016 % More Elaborate Example % % echo “for( f=-10.0; f<=10.0; f+=0.1 ) {f; s(f)}” | bc -l 43 Rolando V. Raqueño Wednesday, March 16, 2016 % Public Service Announcement to Prevent Repetitive Motion Injury % % echo “for( f=-10.0; f<=10.0; f+=0.1 ) {f; s(f)}” | bc -l % !! This recalls the last command executed % !! | paste - % !! > sine.dat 44 Rolando V. Raqueño Wednesday, March 16, 2016 Primitive Plotting Capabilities % echo “for( f=-10.0; f<=10.0; f+=0.1 ) {f; s(f)}” | bc –l | paste - - | graph | dumbplot % cat sine.dat | graph | dumbplot 45 Rolando V. Raqueño Wednesday, March 16, 2016 Result of dumbplot 46 Rolando V. Raqueño Wednesday, March 16, 2016 Less than Primitive Graphing Capabilities • While depressing the Ctrl button with the mouse pointer in the xterm window, – Depress the middle mouse button – Select “tekshow” – Give the following command in the new window • % echo “for( f=-10.0; f<=10.0; f+=0.1 ) {f; s(f)}” | bc –l | paste - - | graph | tek 47 Rolando V. Raqueño Wednesday, March 16, 2016 Result of tek plot 48 Rolando V. Raqueño Wednesday, March 16, 2016 The gnuplot utility % gnuplot G N U P L O T unix version 3.5 patchlevel 3.50.1.17, 27 Aug 93 last modified Fri Aug 27 05:21:33 GMT 1993 Copyright(C) 1986 - 1993 Thomas Williams, Colin Kelley Send comments and requests for help to info-gnuplot@dartmouth.edu Send bugs, suggestions and mods to bug-gnuplot@dartmouth.edu Terminal type set to 'x11' gnuplot> plot 'sine.dat' gnuplot> 49 Rolando V. Raqueño Wednesday, March 16, 2016 50 Rolando V. Raqueño Wednesday, March 16, 2016 The UNIX History Channel: Studying history so you can repeat it • UNIX remembers the commands you have typed in through a “history list” • By giving the history command, you will see a numbered list of previously executed commands 51 Rolando V. Raqueño Wednesday, March 16, 2016 % Other Obscure UNIX Short Cuts % % !! % !:p # Recalls the last command and execute # Recalls the last command (don’t execute) % !c # Recalls the last command that begins with a c % !5 # Recalls the #5 argument in the history list 52 Rolando V. Raqueño Wednesday, March 16, 2016 More Esoteric UNIX Short Cuts % ^string1^string2 # Performs a substitution on the previous command of the first occurrence of string1 with string2 % command !$ # Recalls the very last argument of the previous command % command !* # Recalls the all the arguments of the very last command 53 Rolando V. Raqueño Wednesday, March 16, 2016 Or simply use up arrows • if tcsh is available 54 Rolando V. Raqueño Wednesday, March 16, 2016 IMPORTANT UNIX Concepts • Environment and Shell Variables – These allow you to customize your UNIX environment – They are different in terms of their SCOPE • SCOPE determines the visibility of a variable 55 Rolando V. Raqueño Wednesday, March 16, 2016 Other IMPORTANT UNIX Concepts • Environment Variable – Examples are TERM and DISPLAY – Set a particular variable to a value by using the setenv command – You can print the value of a particular variable or all the environment variable using the printenv command 56 Rolando V. Raqueño Wednesday, March 16, 2016 % Environment Variables % • Examples – To set environment variables % setenv TERM vt100 % setenv DOG Goofy – print out the terminal type % printenv TERM vt100 – print out all environment variables % printenv 57 Rolando V. Raqueño Wednesday, March 16, 2016 Shell Variables • Shell variables are similar to Environment variables except they have a limited scope, i.e., they exist only in the shell which they are defined. • Environment variables on the other hand, exist in all its children shells • To illustrate this concept, let us look at the following example 58 Rolando V. Raqueño Wednesday, March 16, 2016 Environment vs. Shell Variables % set prompt Parent Shell Parent Shell Parent Shell Goofy Parent Shell Mickey Parent Shell = > > > "Parent Shell > " setenv DOG Goofy set mouse=Mickey printenv DOG > echo $mouse > xterm & (YOU SHOULD NOW HAVE A NEW xterm WINDOW) THIS IS KNOWN AS “SPAWNING A NEW (OR CHILD) PROCESS” 59 Rolando V. Raqueño Wednesday, March 16, 2016 Environment vs. Shell Variables (IN THE NEW xterm WINDOW, DO THE FOLLOWING) % set prompt = "Child Shell > " Child Shell > printenv DOG Goofy Child Shell > echo $mouse mouse: Undefined variable. 60 Rolando V. Raqueño Wednesday, March 16, 2016 Environment vs. Shell Variables Child Shell Child Shell Child Shell Pluto Child Shell Minnie Child Shell > setenv DOG Pluto > set mouse=Minnie > printenv DOG > echo $mouse > exit (THE xterm WINDOW SHOULD NOW GO AWAY - THIS PROCESS HAS NOW BEEN KILLED) 61 Rolando V. Raqueño Wednesday, March 16, 2016 Environment vs. Shell Variables Parent Parent Goofy Parent Mickey Parent Shell > Shell > printenv DOG Shell > echo $mouse Shell > 62 Rolando V. Raqueño Wednesday, March 16, 2016 Environment & Shell Variables • Why is this important? – UNIX uses Environment and Shell Variables control a number of processes – Customizes your working environment – Variables used for UNIX Scripts • They are typically defined and initialized in your .login and .cshrc files 63 Rolando V. Raqueño Wednesday, March 16, 2016 Useful Shell Variables filec path #Allows file completion #List of command directories cdpath #List of candidate directories to cd into history #Number of commands to remember 64 Rolando V. Raqueño Wednesday, March 16, 2016 The X-Windows Environment 65 Rolando V. Raqueño Wednesday, March 16, 2016 X-Windowing System • Vendor independent Graphical User Interface (GUI) • Works on a network client/server concept. • The client is some entity (in this case a software package, IDL, for instance) that requests from another entity some form of service (e.g., IDL requests for program input or requests some output data to be displayed) 66 Rolando V. Raqueño Wednesday, March 16, 2016 X-Windowing System • Windowing interface is decoupled from the software application • Possible to remotely control software running at another location. bullwinkle.whatsomatau.edu rocky.cis.rit.edu 67 Rolando V. Raqueño Wednesday, March 16, 2016 Starting IDL remotely 0. Find out the name of the local workstation you are working on by typing the following commands % hostname 1. On the local workstation, type the following % xhost + 2. Remotely log on to another machine using telnet. If you choose to use the computer “ride”, you would type % telnet ride.cis.rit.edu . 68 Rolando V. Raqueño Wednesday, March 16, 2016 Starting IDL 3. Check environment variable telling the remote system the name of your workstation. For example, if your local workstation was named “glen”, you would type % echo $DISPLAY % setenv DISPLAY glenn.cis.rit.edu:0.0 4. Run idldemo on the remote system; display graphics will be directed back to your local workstation. 69 Rolando V. Raqueño Wednesday, March 16, 2016 Other X-clients • • • • • • • xterm xclipboard gnuplot ghostview acroread xfig xv 70 Rolando V. Raqueño Wednesday, March 16, 2016 xclipboard • Allows cutting and pasting text fragments to and from files 71 Rolando V. Raqueño Wednesday, March 16, 2016 gnuplot • Allows quick plotting of data files 72 Rolando V. Raqueño Wednesday, March 16, 2016 ghostview • X client used to view files in postscript format (*.ps) 73 Rolando V. Raqueño Wednesday, March 16, 2016 acroread • X client to read PDF (portable document files) files 74 Rolando V. Raqueño Wednesday, March 16, 2016 xfig • X client to create drawings in EPS format 75 Rolando V. Raqueño Wednesday, March 16, 2016 xv • X client to view most standard images 76 Rolando V. Raqueño Wednesday, March 16, 2016 FINAL Project Information • Two design review presentations (10-15 minutes long) • What’s already out there to solve your problem • How can you improve on it? • Your plan of implementation and testing • A Final Document of your Project – (PDF or HTML file desirable) • Teaming is Encouraged 77 Rolando V. Raqueño Wednesday, March 16, 2016 Previous Projects – Visualization of a DIRSIG Geometric Database – Visualization and modification of radiosonde data – IDL GUI to Visualize MODTRAN Output Data – Graphical User Interface for generating and modifying a MODTRAN Card deck – GUI for generating and modifying object material parameters 78 Rolando– V. Raqueño Wednesday, March 16, 2016 GUI for visualizing emissivity files Previous Projects – An IDL FFT Widget Based on Dr. Easton's Signals. – GUI for Displaying the CIELAB Color Matching Functions – Astronomical Image Analysis in IDL – Stereo Visualization of Plots – GUI for Visualizing Atmospheric Parameters – GUI for texture image creation and 79 visualization Rolando V. Raqueño Wednesday, March 16, 2016 Previous Projects – GUI for Modifying Material Parameters – Spectral Unmixing GUI Utilizing ENVI – Interface to Generate Satellite Image Preview and rendering using IDL’s globe and map database – Bi-directional Reflectance Parameter Viewer – Ephemeris program interface – Thermal Image apparent temperature 80 predictor Rolando V. Raqueño Wednesday, March 16, 2016