CERI 8104 Data Analysis in Geophysics
Fall 2023
TuTh 11:20-12:45
CERI New/Long Building - Student Computer Lab



Instructor: Bob Smalley
Office hours: when you see me in my office.



frequency domain view of traveling delta functions


Frequency Domain integrand and Fourier sum to the Time Domain (top 2 panels) of two traveling delta functions and (third panel) their combination showing sum of integrands on left and factorized into product of cos(kx) and cos(wt) terms on right showing how delta function position is determined by where they are "in phase" (Smalley, 2009).

Course Description:

The course provides an overview of common tools used by geoscientists.

Homework assignments are designed to develop a working knowledge of a wide range of computer tools.

Topics will include programming in MATLABŪ,  UNIX/LINUX (Ubuntu), Seismic Analysis Code (SAC), scripting (sh and csh), AWK, Generic Mapping Tools (GMT), PYTHON, network tools such as FTP, VNC, X display, and Adobe Illustrator, EXCEL, Web page development, and an overview of Fortran and C.

The course will be "lab based", a short presentation followed by hands on programming exercises on the CERI comptuer system, or your personal notebook, for the remainder of the class period.

Texts:

No "official" text. Some useful references and documentation follow.

For MATLAB you can download (open source) the book:

Programming for Computations - MATLAB/Octave A Gentle Introduction to Numerical Simulations with MATLAB/Octave



Please see the web pages for the course from previous years on
Bob Smalley's home page
for links to online textbooks, articles, tutorials, etc.

Course requirements:

Students must attend all labs. Class absences must be discussed PRIOR to the missed class.

Homework assignments must be handed in on time; grades will be reduced for each day late.

The class will include completing a computer based research project that uses the tools discussed in class.
The project can, but is not required to, be related to your primary research interest or topic.
The project must be approved before starting work.
The project should not also be used for another class you are currently taking.
Each student will give a presentation the last day of class.

Grading:

50% homework, 10% class participation, 40% final project.
There is no final exam.

Homework:

Homework assignments will be posted on the class web page.

Project:

Each student will design, implement and present a small-scale data analysis project.
The project should use programs and/or techniques discussed in the class.
Geophysics data is preferred and a project releated to the student's own research is encouraged.
Use of SAC, and/or MATLAB, and or PYTHON, and/or GMT as part of the project is mandatory.
The topic should be discussed with me, decided on and approved no later than Oct 19th (the 1st class after Fall Break).
Each student will give a PowerPoint presentation during the final exam period.
The project should be thoroughtly documented and all scripts/programs/macros turned in as part of the project.
There will be no final exam.


Classes:


        (Clicking on links opens a pdf of the class. Notes are uploaded after class.)
Aug    29   Tu    LAB 1 - Matlab
Aug    31   Th    LAB 2 - Matlab
Sep      5   Tu    LAB 3 - Matlab  
Sep      7   Th    LAB 4 - Matlab   
Sep    12   Tu    LAB 5 - Matlab   
Sep    14   Th    LAB 6 - Matlab   
Sep    19   Tu    LAB 7 - Matlab   
Sep    21   Th    LAB 8 - Matlab
Sep    26   Tu    LAB 9 - Matlab
Sep    28   Th    LAB 10 - Matlab  
Oct       3   Tu    Lab 11- Matlab
Oct       5   Th    LAB12 - Matlab
Oct    10    Tu    LAB13 - Matlab
Oct    12    Th   Lab14 - finish Matlab, UNIX
Oct    17    Tu    Fall Break - NO Lab
Oct    19    Th   Lab15 - UNIX, GMT
Oct    24    Tu   Lab16 - UNIX, AWK, GMT CLASSIC and MODERN
Oct    26    Th  Lab17 - UNIX, GMT MODERN
Oct    31    Tu  Lab18 - UNIX, GMT MODERN
Nov     2    Th  Lab19 - Python
Nov     7    Tu   Lab20
Nov     9    Th  Lab21, some python ex 1, some python ex 2
Nov   13   Mo  Lab22
Nov   14   Tu   Lab23
Nov   16   Th  Lab24 
Nov   21   Tu    changed to Nov 14
Nov   23   Th  Thanksgiving - NO LAB
Nov   28   Tu    Lab25
Nov   30   Th    Lab26, numpy_examples, slicing and dicing numpy arrays
Dec     5   Tu    python inheritance

Dec   14   Th  Present projects during exam period

(I sometimes make changes to the notes presented in class - based on errors found during presentation, questions/comments during the class, or because I found something interesting to add. The files at the links above are therefore not completely static during the semester.)
Homeworks:

     Assigned               Due
        Aug   31   Th      Sep      5   Tu    HW-1: Matlab intro









Links and other useful info:


        Mathworks
        Getting started with Matlab (old, they don't make this document anymore, as far as I can tell): html, pdf

        Generic Mapping Tools (GMT)

        Seismic Analysis Code (SAC) manual (pdf)
        Seismic Analysis Code (SAC) online tutorial

        UNIX and Linux Visual Quickstart Guide, Fifth Edition, D.S. Ray and E.J. Ray. This book will serve as the "textbook" for the introduction to UNIX part of the course. It is available at safaribooksonline.com (thorugh the link given). Reading assignments from this book will be assigned.


        Classic Shell Scripting, A. Robbins and N.H.F. Beebe.

        The "AWK book"
       
Awk Article 1
        Awk Article 2
        Awk Article 3



     Fortran
       Fortran tutorial - Stanford
       history
       Recursion in Fortran - Andrew Miller, Penn State

    History

    Number representation
      Integer representations   
      Common Floating Point representations   
      Floating point Hidden Bit   

    Finding old web pages. An archive of some old links that have gone away. Beta version.

       Wayback page

   Additional UNIX files/link:

        UNIX_tutorial (Havill, 2006)
        UNIX_book (Fiamingo et al, 1998)
        UNIX_in a nutshell (3rd ed., not latest, Robbins, 1999)
        unix-intro (Satten, 1989. Unlike a traditional introduction to Unix, the emphasis of this one is on philosophy and brevity. When
                           you understand how the creators of Unix intended you to use it, you’ll approach Unix on it’s "best side". This
                           introduction intends to help a new Unix user get started on the right foot quickly.)
        The Linux Development Project Excellent collection of documentation, tutorials, etc. See especially the The Advanced Bash Scripting Guide
        The Grymoire - home for UNIX wizards
        UNIX SHELL Quote Tutorial (Grymoire)
      
       The UNIX Haters Handbook
       The truth about UNIX: The user interface is horrid
       UNIX is a four letter word
       The rise and fall of UNIX

Links and other useful info:

        Most useful non-human resource --- GOOGLE. You can find just about anything you need on the web.

       list of typical unix commands
       UNIX Power Tools
       Permissions
       another Permissions
       redirection
       A UNIX/Linux Find Command Tutorial
       file globbing

    BASH programming

       How-to BASH
       bash internal variables
       bash beginners guide

       csh vs bash in scripting - Top Ten Reasons not to use the C shell

       Tests and arrays from Advanced Bash-scripting guide html or Advanced Bash-scripting guide pdf This tutorial assumes no previous knowledge of scripting or programming, but progresses rapidly toward an intermediate/advanced level of instruction . . . all the while sneaking in little nuggets of UNIXŪ wisdom and lore.

    man pages

       wiki man entry


    nedit

       Nirvana Editor (nedit)


     sed (plus more on regular expressions)

       Sed - an introduction
       GNU/Linux Sed (Prasad, 2008)


    vi and vim editors
    Google on "vi tutorial" or "vim tutorial" for a large number of additional tutorials and references on vi and vim.

       viRef
       whyVi
       vi graphical cheat sheet
       vi editing - jmcpherson
       vi editing - dheller
       wiki vi entry
        Vi pages - Substitution guide
       The Vi editor and its clones
       wiki vim entry
       vim quick reference card
       vim tutorial book (572 pages!)
       vim tutorial
       another vim tutorial
       yet another vim tutorial
       vim regular expressions
       vim tips
       vi/vim tutorial
       vi lover's home page
       vi (Hruza, good list of commands)

    Editor Wars

    Regular Expressions

        regular expressions (Grymoire)
        regular expressions (from regular-expressions.info)
        regular expressions (zytrax)
        regular expressions (Sedgwick and Wayne, Princeton)

    AWK/NAWK/GAWK

       Intro & Tutorial
       Awk Programming language ( Robbins, Close, Rubin, and Stallman, Utah Math department, 1996)
       The AWK Programming Language, Robbins, Unix in a Nutshell, Ch 11, sample chapter
       Awk Introduction Tutorial - 7 Awk Print Examples
       awk arrays

       printf format specification
    
    SAC

       manual page at iris
       users guide at iris
       general info
       Zhigang Peng's tutorial
       Chuck Ammon's tutorial

      SAC alternatives
      Project SEIZMO
      MATSEIS
      SEISAN
      CORAL

      GMT

      Tutorial by Wessell (one of the co-authors of GMT)
      my "Tools of the Trade" (TOT) presentation
      Andrew Newman's intro
      GMT (X11) color names - gmtcolors - info on using color names, gmtcolors and man gmtcolors do ont work on CERI mac system.

      DEM data
      NASA
      GEBCO
      CGIAR - SRTM 90m Digital Elevation Database v4.1

      Matlab

       David Jacobs, U. Maryland
       Tim Marks, UCSD
       Peter Acklam array manipulation
       U Florida (plus other computer stuff)
       cell arrays to structures and back - the "deal" function
       how to vectorize code from Matlab tips and tricks by Mario Athineos
       Vectorization Drea's notes
       control tutorials
       Tutorials on Analysis of Data using MATLAB
       Textbooks by Cleve Moler one of the authors of Matalb - "Numerical Computing with Matlab" and "Numerical Experiments with Matlab"

     Fortran

       Fortran tutorial

     C

       C tutorial short
       C tutorial longer
       pointer tutorial


     CERI Computer informatoin

       CERI Computer Network Facts (and some opinion) (updated June 2011)

    Sesimic Data sources

       seismosurfing the internet (very old and now static, but many of the links still work)

    Geosciences Freeware/Shareware

       J. Butler
       R. Allmendinger
       C. Ammon/SLU
       Mike Thorne's software downloads - SAC to Matlab and ohter stuff.

    Mac Stuff

       Mac Keyboard shorcuts Dan Rodney, Mac Central

    Opinions/fun stuff

       Matt's rants

PCA

      Tutorial - Shlens   

Finding old web pages. An archive of some old links that have gone away. Beta version.

       Wayback page

Missing links.

Just about everything on the Web is "under construction" as links are ephemeral. I usually link to the source pages, rather than offer a local copy. This means they can go away. Please report broken links. Some are recoverable, but many just disappear into the ether.

If you find this web site useful and have any questions, have found any errors, etc., please feel free to contact me - rsmalley at memphis dot edu