CompSciWeek3
From Predictive Chemistry
Contents
Reading Assignment
- Beginning Python, Chapter 6
- Algorithms, Chapters 1-2
- focus on tree data structures (formal complexity next week)
- ignore python 'Class' for now
Class 1: Intermediate shell utilities
- commands
- man/info <-> help()
- ls <-> dir()
- cat <-> print
- grep <-> string.find()
- sort <-> list.sort()
- head / tail <-> list.__slice__ (i.e. l[:10])
- tr, sed <-> string.replace()
- find
- w, top, last
- shell variables
- control flow
- shell functions -- f() { commands; }
- pipes, redirection, &&, || -- a | b, a && b, a || b
- for, while loops -- for i in 1 2 3; do ... done, for((i=0; i<$n; i++)); do ... done
References:
Class 2: Python vs. shell
- Reading / Writing Files
- Advanced control structures (list comprehensions)
- Code profiling
- Hash tables
- Graphs
Homework 2 - due Tuesday, Sept. 16
Since the due date was pushed back, re-submitted homework will be accepted in place of the original. As a reminder, all homework must be done on your own. Send the homework as a single txt file attachment with the subject line "Sci Comp HW2". If you send a pdf, format it using the script Code:text2pdf.
- Coding problems:
- Write a loop to sum 100 random numbers (import random, random.random()) using each of the following control structures: for, while, list and `tuple` comprehension. The first two can generate numbers in the loop, the last two must create iterators / generators and can use the python builtin `sum' function.
- Write a shell loop to save 100 numbers from $RANDOM to a file, writing one number per line. (hint: use the shell append re-direction, >> instead of the usual re-direction >)
- Write a shell loop to sum files with 1 number per line. -- use shell math expressions, like a=$(($a*12))
- Write python and shell programs to print the smallest 10 numbers from such a file.
- Write a text processing script using sed to get the numbers for the following quantities from File:Multiwfn.txt
- Basin electric monopole moment: (1 number for ea. line)
- Basin electric dipole moment: and Basin electron contribution to molecular dipole moment: (3 numbers from ea. line) The input is tagged X=, etc, the output should have only numbers.
- (Clarification) The output (if run) would be one file with all the "monopole" numbers, 1 per line, another with all the "dipole" numbers, 3 per line. I just want the code, not the output.