--- /dev/null
+# Cochlear Implants
+
+A cochlear implant is a small electronic device that is surgically
+implanted in the inner ear to give deaf people a sense of
+hearing. More than a quarter of a million people have them, but there
+is still no widely-accepted benchmark to measure their effectiveness.
+In order to establish a baseline for such a benchmark, our supervisor
+got teenagers with CIs to listen to audio files on their computer and
+report:
+
+1. the quietest sound they could hear
+2. the lowest and highest tones they could hear
+3. the narrowest range of frequencies they could discriminate
+
+To participate, subjects attended our laboratory and one of our lab
+techs played an audio sample, and recorded their data—when they first
+heard the sound, or first heard a difference in the sound. Each set
+of test results were written out to a text file, one set per file.
+Each participant has a unique subject ID, and a made-up subject name.
+Each experiment has a unique experiment ID. The experiment has
+collected 351 files so far.
+
+The data is a bit of a mess! There are inconsistent file names, there
+are extraneous `NOTES` files that we'd like to get rid of, and the
+data is spread across many directories. We are going to use shell
+commands to get this data into shape. By the end we would like to:
+
+1. Put all of the data into one directory called `alldata`
+
+2. Have all of the data files in there, and ensure that every file
+ has a `.txt` extension
+
+3. Get rid of the extraneous `NOTES` files
+
+If we can get through this example in the available time, we will move
+on to more advanced shell topics…
--- /dev/null
+#
+Reported: Sun Jun 26 14:56:54 2011
+Subject: beyonceLennon177
+Year/month of birth: 1993/09
+Sex: N
+CI type: 20
+Volume: 8
+Range: 5
+Discrimination: 7
--- /dev/null
+#
+Reported: Wed Jul 6 12:48:14 2011
+Subject: madonnaBroccoli184
+Year/month of birth: 1999/02
+Sex: N
+CI type: 22
+Volume: 6
+Range: 5
+Discrimination: 5
--- /dev/null
+#
+Reported: Sun May 29 13:27:38 2011
+Subject: georgeBeatle185
+Year/month of birth: 1993/01
+Sex: M
+CI type: 11
+Volume: 3
+Range: 2
+Discrimination: 5
--- /dev/null
+#
+Reported: Thu Aug 25 11:33:44 2011
+Subject: robynBroccoli193
+Year/month of birth: 1995/06
+Sex: N
+CI type: 15
+Volume: 7
+Range: 10
+Discrimination: 6
--- /dev/null
+#
+Reported: Sun May 1 11:05:49 2011
+Subject: robynSync197
+Year/month of birth: 1991/01
+Sex: N
+CI type: 19
+Volume: 4
+Range: 7
+Discrimination: 3
--- /dev/null
+#
+Reported: Fri Aug 19 10:22:59 2011
+Subject: paulBackstreet202
+Year/month of birth: 1998/08
+Sex: N
+CI type: 12
+Volume: 3
+Range: 8
+Discrimination: 4
--- /dev/null
+#
+Reported: Sat Sep 3 14:56:05 2011
+Subject: georgeHarrison216
+Year/month of birth: 1999/11
+Sex: F
+CI type: 1
+Volume: 6
+Range: 7
+Discrimination: 2
--- /dev/null
+#
+Reported: Sat Jul 30 10:25:29 2011
+Subject: babyBeatle218
+Year/month of birth: 1997/06
+Sex: M
+CI type: 24
+Volume: 5
+Range: 9
+Discrimination: 7
--- /dev/null
+#
+Reported: Fri May 27 15:57:41 2011
+Subject: gingerLennon221
+Year/month of birth: 1992/04
+Sex: N
+CI type: 9
+Volume: 5
+Range: 4
+Discrimination: 7
--- /dev/null
+#
+Reported: Tue Aug 30 12:16:14 2011
+Subject: gingerMcCartney236
+Year/month of birth: 1993/10
+Sex: F
+CI type: 10
+Volume: 3
+Range: 10
+Discrimination: 5
--- /dev/null
+#
+Reported: Tue May 17 09:31:06 2011
+Subject: scaryBroccoli244
+Year/month of birth: 1997/12
+Sex: F
+CI type: 1
+Volume: 3
+Range: 5
+Discrimination: 5
--- /dev/null
+#
+Reported: Sat Sep 24 15:58:59 2011
+Subject: gingerSpice253
+Year/month of birth: 1996/10
+Sex: F
+CI type: 20
+Volume: 8
+Range: 6
+Discrimination: 5
--- /dev/null
+#
+Reported: Tue Sep 6 14:27:03 2011
+Subject: beyonceBroccoli254
+Year/month of birth: 1999/11
+Sex: M
+CI type: 1
+Volume: 5
+Range: 10
+Discrimination: 5
--- /dev/null
+#
+Reported: Wed Jun 22 12:34:15 2011
+Subject: paulBackstreet255
+Year/month of birth: 1994/07
+Sex: N
+CI type: 23
+Volume: 5
+Range: 7
+Discrimination: 4
--- /dev/null
+#
+Reported: Mon Jun 20 13:36:14 2011
+Subject: gingerCarrot256
+Year/month of birth: 1992/01
+Sex: N
+CI type: 13
+Volume: 1
+Range: 5
+Discrimination: 3
--- /dev/null
+#
+Reported: Wed Sep 21 14:11:14 2011
+Subject: scaryBeatle265
+Year/month of birth: 1993/04
+Sex: F
+CI type: 6
+Volume: 4
+Range: 4
+Discrimination: 3
--- /dev/null
+#
+Reported: Sat Jul 30 08:38:30 2011
+Subject: georgeJonas266
+Year/month of birth: 1993/12
+Sex: M
+CI type: 21
+Volume: 8
+Range: 5
+Discrimination: 5
--- /dev/null
+#
+Reported: Fri Jun 17 14:36:59 2011
+Subject: scarySpice280
+Year/month of birth: 1999/12
+Sex: F
+CI type: 18
+Volume: 6
+Range: 4
+Discrimination: 5
--- /dev/null
+#
+Reported: Tue Jun 28 12:34:35 2011
+Subject: madonnaMcCartney282
+Year/month of birth: 1997/07
+Sex: N
+CI type: 20
+Volume: 6
+Range: 6
+Discrimination: 4
--- /dev/null
+#
+Reported: Sun Jun 12 16:25:26 2011
+Subject: poshBeatle284
+Year/month of birth: 1997/08
+Sex: F
+CI type: 14
+Volume: 6
+Range: 7
+Discrimination: 4
--- /dev/null
+#
+Reported: Sun May 8 11:04:18 2011
+Subject: scarySpice288
+Year/month of birth: 1993/04
+Sex: M
+CI type: 8
+Volume: 5
+Range: 7
+Discrimination: 4
--- /dev/null
+#
+Reported: Sat Sep 10 14:30:22 2011
+Subject: beyonceJonas301
+Year/month of birth: 1995/03
+Sex: N
+CI type: 19
+Volume: 1
+Range: 5
+Discrimination: 7
--- /dev/null
+#
+Reported: Tue Jun 21 10:41:16 2011
+Subject: beyonceJonas304
+Year/month of birth: 1995/11
+Sex: F
+CI type: 16
+Volume: 5
+Range: 5
+Discrimination: 6
--- /dev/null
+#
+Reported: Mon May 9 08:17:18 2011
+Subject: scaryJonas306
+Year/month of birth: 1996/07
+Sex: N
+CI type: 4
+Volume: 4
+Range: 9
+Discrimination: 7
--- /dev/null
+#
+Reported: Thu Sep 22 12:15:33 2011
+Subject: poshJonas308
+Year/month of birth: 1999/12
+Sex: N
+CI type: 13
+Volume: 8
+Range: 10
+Discrimination: 5
--- /dev/null
+#
+Reported: Fri Sep 23 09:15:36 2011
+Subject: paulAsparagus310
+Year/month of birth: 1991/09
+Sex: M
+CI type: 3
+Volume: 4
+Range: 4
+Discrimination:
--- /dev/null
+#
+Reported: Sun Jun 26 11:55:12 2011
+Subject: babyBeet317
+Year/month of birth: 1993/11
+Sex: F
+CI type: 1
+Volume: 6
+Range: 4
+Discrimination: 3
--- /dev/null
+#
+Reported: Wed Sep 28 08:36:56 2011
+Subject: poshHarrison332
+Year/month of birth: 1994/04
+Sex: M
+CI type: 18
+Volume: 6
+Range: 6
+Discrimination: 9
--- /dev/null
+#
+Reported: Sat Aug 6 09:15:12 2011
+Subject: princeAsparagus333
+Year/month of birth: 1996/10
+Sex: M
+CI type: 17
+Volume: 6
+Range: 7
+Discrimination:
--- /dev/null
+#
+Reported: Thu Sep 8 12:58:11 2011
+Subject: beyonceStarr338
+Year/month of birth: 1992/09
+Sex: N
+CI type: 23
+Volume: 8
+Range: 5
+Discrimination: 6
--- /dev/null
+#
+Reported: Thu Jun 23 08:55:58 2011
+Subject: babyJonas352
+Year/month of birth: 1995/04
+Sex: N
+CI type: 17
+Volume: 4
+Range: 5
+Discrimination: 7
--- /dev/null
+#
+Reported: Fri Sep 9 10:49:33 2011
+Subject: scaryCarrot354
+Year/month of birth: 1993/09
+Sex: N
+CI type: 11
+Volume: 6
+Range: 4
+Discrimination:
--- /dev/null
+#
+Reported: Sun Aug 7 14:19:30 2011
+Subject: beyonceJonas360
+Year/month of birth: 1991/02
+Sex: F
+CI type: 12
+Volume: 7
+Range: 6
+Discrimination: 4
--- /dev/null
+#
+Reported: Sun Jul 17 15:56:04 2011
+Subject: georgeSync362
+Year/month of birth: 1996/09
+Sex: M
+CI type: 6
+Volume: 3
+Range: 6
+Discrimination:
--- /dev/null
+#
+Reported: Mon May 30 11:36:48 2011
+Subject: paulBroccoli369
+Year/month of birth: 1992/01
+Sex: F
+CI type: 14
+Volume: 6
+Range: 5
+Discrimination: 7
--- /dev/null
+#
+Reported: Fri Jul 15 14:04:15 2011
+Subject: johnBeet374
+Year/month of birth: 1993/12
+Sex: M
+CI type: 23
+Volume: 1
+Range: 5
+Discrimination: 3
--- /dev/null
+#
+Reported: Sun Sep 11 16:04:30 2011
+Subject: poshMcCartney378
+Year/month of birth: 1992/10
+Sex: M
+CI type: 23
+Volume: 6
+Range: 8
+Discrimination: 9
--- /dev/null
+#
+Reported: Thu Jul 14 14:33:57 2011
+Subject: paulJonas380
+Year/month of birth: 1998/10
+Sex: F
+CI type: 20
+Volume: 6
+Range: 7
+Discrimination: 5
--- /dev/null
+#
+Reported: Wed Jul 27 11:08:42 2011
+Subject: gingerMcCartney390
+Year/month of birth: 1997/07
+Sex: M
+CI type: 8
+Volume: 5
+Range: 4
+Discrimination: 2
--- /dev/null
+#
+Reported: Sat Aug 13 08:41:11 2011
+Subject: scaryZ393
+Year/month of birth: 1996/05
+Sex: M
+CI type: 14
+Volume: 5
+Range: 9
+Discrimination: 5
--- /dev/null
+#
+Reported: Mon May 2 15:22:40 2011
+Subject: jayBroccoli397
+Year/month of birth: 1991/05
+Sex: M
+CI type: 2
+Volume: 6
+Range: 6
+Discrimination: 1
--- /dev/null
+#
+Reported: Tue Jun 28 09:42:30 2011
+Subject: jayCarrot410
+Year/month of birth: 1997/11
+Sex: F
+CI type: 15
+Volume: 3
+Range: 1
+Discrimination: 5
--- /dev/null
+#
+Reported: Fri Sep 9 16:02:27 2011
+Subject: madonnaJonas411
+Year/month of birth: 1998/06
+Sex: N
+CI type: 23
+Volume: 8
+Range: 9
+Discrimination: 7
--- /dev/null
+#
+Reported: Wed Jul 6 16:29:27 2011
+Subject: babyHarrison418
+Year/month of birth: 1994/09
+Sex: M
+CI type: 3
+Volume: 4
+Range: 6
+Discrimination: 3
--- /dev/null
+#
+Reported: Tue Aug 16 08:52:53 2011
+Subject: babyHarrison418
+Year/month of birth: 1994/09
+Sex: M
+CI type: 3
+Volume: 3
+Range: 6
+Discrimination: 2
--- /dev/null
+#
+Reported: Fri Aug 19 09:36:48 2011
+Subject: beyonceHarrison419
+Year/month of birth: 1994/08
+Sex: F
+CI type: 25
+Volume: 4
+Range: 8
+Discrimination: 6
--- /dev/null
+#
+Reported: Tue Jul 26 14:01:03 2011
+Subject: princeCarrot434
+Year/month of birth: 1992/09
+Sex: M
+CI type: 16
+Volume: 9
+Range: 2
+Discrimination: 4
--- /dev/null
+Fuse blew midway through this weeks data taking,
+fewer results than last week.
--- /dev/null
+#
+Reported: Sat Jul 30 09:11:13 2011
+Subject: gingerBeatle174
+Year/month of birth: 1991/09
+Sex: N
+CI type: 15
+Volume: 5
+Range: 6
+Discrimination: 2
--- /dev/null
+#
+Reported: Thu Jun 9 11:29:21 2011
+Subject: robynBeet183
+Year/month of birth: 1996/09
+Sex: N
+CI type: 17
+Volume: 3
+Range: 9
+Discrimination: 3
--- /dev/null
+#
+Reported: Thu Jul 21 13:35:25 2011
+Subject: poshCarrot186
+Year/month of birth: 1991/07
+Sex: N
+CI type: 24
+Volume: 6
+Range: 6
+Discrimination: 4
--- /dev/null
+#
+Reported: Wed Jul 20 14:52:31 2011
+Subject: scarySync192
+Year/month of birth: 1997/02
+Sex: N
+CI type: 6
+Volume: 6
+Range: 5
+Discrimination: 3
--- /dev/null
+#
+Reported: Tue Aug 30 13:12:59 2011
+Subject: ringoBroccoli195
+Year/month of birth: 1998/01
+Sex: F
+CI type: 19
+Volume: 7
+Range: 6
+Discrimination: 7
--- /dev/null
+#
+Reported: Wed Jun 8 12:04:27 2011
+Subject: paulBackstreet202
+Year/month of birth: 1998/08
+Sex: N
+CI type: 12
+Volume: 1
+Range: 7
+Discrimination: 2
--- /dev/null
+#
+Reported: Sat Sep 3 08:12:49 2011
+Subject: beyonceAsparagus207
+Year/month of birth: 1994/02
+Sex: M
+CI type: 14
+Volume: 8
+Range: 6
+Discrimination: 8
--- /dev/null
+#
+Reported: Thu Sep 22 13:51:16 2011
+Subject: beyonceCarrot209
+Year/month of birth: 1992/03
+Sex: M
+CI type: 1
+Volume: 5
+Range: 1
+Discrimination: 6
--- /dev/null
+#
+Reported: Mon Sep 19 13:31:10 2011
+Subject: paulBroccoli212
+Year/month of birth: 1997/10
+Sex: F
+CI type: 1
+Volume: 4
+Range: 9
+Discrimination: 3
--- /dev/null
+#
+Reported: Wed Jun 29 08:26:52 2011
+Subject: paulBroccoli212
+Year/month of birth: 1997/10
+Sex: F
+CI type: 1
+Volume: 2
+Range: 7
+Discrimination: 2
--- /dev/null
+#
+Reported: Sat Sep 3 15:55:29 2011
+Subject: ringoBeatle223
+Year/month of birth: 1999/03
+Sex: F
+CI type: 25
+Volume: 7
+Range: 10
+Discrimination: 8
--- /dev/null
+#
+Reported: Mon Sep 19 14:06:09 2011
+Subject: georgeBroccoli224
+Year/month of birth: 1991/02
+Sex: M
+CI type: 1
+Volume: 4
+Range: 4
+Discrimination: 5
--- /dev/null
+#
+Reported: Wed Jul 20 08:14:06 2011
+Subject: gingerMcCartney236
+Year/month of birth: 1993/10
+Sex: F
+CI type: 10
+Volume: 3
+Range: 9
+Discrimination: 5
--- /dev/null
+#
+Reported: Fri May 13 14:39:03 2011
+Subject: babyJonas240
+Year/month of birth: 1993/03
+Sex: M
+CI type: 3
+Volume: 0
+Range: 9
+Discrimination: 3
--- /dev/null
+#
+Reported: Sat Jun 4 11:59:25 2011
+Subject: princeMcCartney241
+Year/month of birth: 1992/01
+Sex: M
+CI type: 25
+Volume: 5
+Range: 3
+Discrimination: 6
--- /dev/null
+#
+Reported: Mon Aug 1 14:12:02 2011
+Subject: gingerSpice253
+Year/month of birth: 1996/10
+Sex: F
+CI type: 20
+Volume: 7
+Range: 4
+Discrimination: 4
--- /dev/null
+#
+Reported: Wed Aug 17 08:38:30 2011
+Subject: babySpice258
+Year/month of birth: 1994/03
+Sex: F
+CI type: 19
+Volume: 8
+Range: 5
+Discrimination: 4
--- /dev/null
+#
+Reported: Fri May 13 12:19:05 2011
+Subject: georgeLennon262
+Year/month of birth: 1998/09
+Sex: M
+CI type: 5
+Volume: 1
+Range: 8
+Discrimination: 3
--- /dev/null
+#
+Reported: Fri Sep 23 13:40:42 2011
+Subject: paulSpice264
+Year/month of birth: 1995/11
+Sex: F
+CI type: 15
+Volume: 8
+Range: 8
+Discrimination: 6
--- /dev/null
+#
+Reported: Tue Jul 12 16:57:17 2011
+Subject: madonnaBackstreet295
+Year/month of birth: 1996/02
+Sex: F
+CI type: 9
+Volume: 3
+Range: 7
+Discrimination: 6
--- /dev/null
+#
+Reported: Fri Jun 10 13:02:09 2011
+Subject: beyonceJonas304
+Year/month of birth: 1995/11
+Sex: F
+CI type: 16
+Volume: 5
+Range: 5
+Discrimination: 6
--- /dev/null
+#
+Reported: Wed Sep 28 11:17:12 2011
+Subject: scaryJonas306
+Year/month of birth: 1996/07
+Sex: N
+CI type: 4
+Volume: 5
+Range: 10
+Discrimination: 7
--- /dev/null
+#
+Reported: Tue Aug 23 12:20:01 2011
+Subject: jayBeatle309
+Year/month of birth: 1997/06
+Sex: N
+CI type: 15
+Volume: 5
+Range: 4
+Discrimination: 6
--- /dev/null
+#
+Reported: Sun Aug 28 10:11:57 2011
+Subject: jaySync312
+Year/month of birth: 1991/10
+Sex: M
+CI type: 21
+Volume: 7
+Range: 5
+Discrimination: 4
--- /dev/null
+#
+Reported: Wed Jun 1 14:47:12 2011
+Subject: poshBeatle321
+Year/month of birth: 1991/08
+Sex: M
+CI type: 23
+Volume: 2
+Range: 5
+Discrimination: 7
--- /dev/null
+#
+Reported: Fri Jun 3 10:08:03 2011
+Subject: babyLennon326
+Year/month of birth: 1998/02
+Sex: F
+CI type: 17
+Volume: 2
+Range: 9
+Discrimination: 7
--- /dev/null
+#
+Reported: Fri Jul 29 11:29:08 2011
+Subject: babyLennon326
+Year/month of birth: 1998/02
+Sex: F
+CI type: 17
+Volume: 3
+Range: 9
+Discrimination: 8
--- /dev/null
+#
+Reported: Mon Sep 12 10:55:23 2011
+Subject: madonnaJonas334
+Year/month of birth: 1997/05
+Sex: M
+CI type: 7
+Volume: 5
+Range: 8
+Discrimination: 8
--- /dev/null
+#
+Reported: Sat Jul 16 10:04:22 2011
+Subject: paulAsparagus344
+Year/month of birth: 1998/12
+Sex: N
+CI type: 21
+Volume: 4
+Range: 9
+Discrimination: 2
--- /dev/null
+#
+Reported: Tue Jul 5 15:56:08 2011
+Subject: madonnaLennon345
+Year/month of birth: 1996/02
+Sex: F
+CI type: 8
+Volume: 3
+Range: 5
+Discrimination: 4
--- /dev/null
+#
+Reported: Sun Jul 3 16:22:47 2011
+Subject: robynSpice349
+Year/month of birth: 1997/10
+Sex: M
+CI type: 19
+Volume: 4
+Range: 8
+Discrimination: 7
--- /dev/null
+#
+Reported: Fri Jul 15 13:24:50 2011
+Subject: robynSpice349
+Year/month of birth: 1997/10
+Sex: M
+CI type: 19
+Volume: 5
+Range: 7
+Discrimination: 8
--- /dev/null
+#
+Reported: Fri May 27 08:03:39 2011
+Subject: robynBeatle351
+Year/month of birth: 1997/02
+Sex: M
+CI type: 25
+Volume: 6
+Range: 9
+Discrimination: 9
--- /dev/null
+#
+Reported: Mon Jul 11 10:59:18 2011
+Subject: gingerLennon353
+Year/month of birth: 1994/09
+Sex: F
+CI type: 16
+Volume: 5
+Range: 8
+Discrimination: 3
--- /dev/null
+#
+Reported: Fri May 20 11:02:49 2011
+Subject: beyonceAsparagus370
+Year/month of birth: 1991/08
+Sex: M
+CI type: 12
+Volume: 6
+Range: 6
+Discrimination: 4
--- /dev/null
+#
+Reported: Mon Jul 11 13:10:54 2011
+Subject: babySync385
+Year/month of birth: 1996/01
+Sex: N
+CI type: 21
+Volume: 3
+Range: 8
+Discrimination: 7
--- /dev/null
+#
+Reported: Wed Sep 14 13:23:49 2011
+Subject: johnAsparagus387
+Year/month of birth: 1998/07
+Sex: N
+CI type: 12
+Volume: 8
+Range: 6
+Discrimination: 3
--- /dev/null
+#
+Reported: Tue Aug 9 11:38:51 2011
+Subject: poshBackstreet391
+Year/month of birth: 1996/05
+Sex: N
+CI type: 14
+Volume: 4
+Range: 6
+Discrimination: 3
--- /dev/null
+#
+Reported: Sun Sep 4 12:02:37 2011
+Subject: madonnaBeet394
+Year/month of birth: 1999/02
+Sex: N
+CI type: 1
+Volume: 9
+Range: 8
+Discrimination: 8
--- /dev/null
+#
+Reported: Sat Jul 30 13:06:28 2011
+Subject: scaryLennon399
+Year/month of birth: 1999/08
+Sex: F
+CI type: 12
+Volume: 3
+Range: 9
+Discrimination: 6
--- /dev/null
+#
+Reported: Wed Sep 28 10:18:06 2011
+Subject: scaryLennon399
+Year/month of birth: 1999/08
+Sex: F
+CI type: 12
+Volume: 4
+Range: 10
+Discrimination: 8
--- /dev/null
+#
+Reported: Mon Aug 22 16:48:55 2011
+Subject: paulCarrot400
+Year/month of birth: 1991/06
+Sex: N
+CI type: 22
+Volume: 9
+Range: 7
+Discrimination: 7
--- /dev/null
+#
+Reported: Sat Aug 6 13:22:40 2011
+Subject: poshBeet403
+Year/month of birth: 1997/09
+Sex: N
+CI type: 12
+Volume: 5
+Range: 7
+Discrimination: 5
--- /dev/null
+#
+Reported: Mon May 16 08:53:11 2011
+Subject: babyMcCartney404
+Year/month of birth: 1997/03
+Sex: N
+CI type: 20
+Volume: 4
+Range: 8
+Discrimination: 6
--- /dev/null
+#
+Reported: Mon Aug 1 14:11:44 2011
+Subject: ringoAsparagus406
+Year/month of birth: 1993/07
+Sex: F
+CI type: 1
+Volume: 7
+Range: 5
+Discrimination: 4
--- /dev/null
+#
+Reported: Wed May 18 16:45:36 2011
+Subject: madonnaJonas411
+Year/month of birth: 1998/06
+Sex: N
+CI type: 23
+Volume: 6
+Range: 8
+Discrimination: 7
--- /dev/null
+#
+Reported: Sat Aug 20 12:45:37 2011
+Subject: babyHarrison418
+Year/month of birth: 1994/09
+Sex: M
+CI type: 3
+Volume: 4
+Range: 7
+Discrimination: 3
--- /dev/null
+#
+Reported: Fri Aug 12 12:37:40 2011
+Subject: scaryMcCartney421
+Year/month of birth: 1996/10
+Sex: F
+CI type: 9
+Volume: 5
+Range: 5
+Discrimination: 2
--- /dev/null
+#
+Reported: Sun Sep 4 09:06:45 2011
+Subject: ringoBeet422
+Year/month of birth: 1999/10
+Sex: M
+CI type: 20
+Volume: 6
+Range: 10
+Discrimination: 9
--- /dev/null
+#
+Reported: Thu May 12 14:09:07 2011
+Subject: ringoBeet422
+Year/month of birth: 1999/10
+Sex: M
+CI type: 20
+Volume: 5
+Range: 8
+Discrimination: 6
--- /dev/null
+#
+Reported: Wed Aug 17 09:02:49 2011
+Subject: madonnaBroccoli425
+Year/month of birth: 1997/09
+Sex: N
+CI type: 10
+Volume: 1
+Range: 3
+Discrimination: 5
--- /dev/null
+#
+Reported: Wed Aug 17 16:46:31 2011
+Subject: princeCarrot434
+Year/month of birth: 1992/09
+Sex: M
+CI type: 16
+Volume: 7
+Range: 2
+Discrimination: 3
--- /dev/null
+#
+Reported: Tue May 24 13:29:57 2011
+Subject: madonnaBackstreet176
+Year/month of birth: 1999/10
+Sex: M
+CI type: 19
+Volume: 5
+Range: 7
+Discrimination: 4
--- /dev/null
+#
+Reported: Sun May 8 12:15:55 2011
+Subject: beyonceJonas187
+Year/month of birth: 1994/05
+Sex: N
+CI type: 15
+Volume: 3
+Range: 8
+Discrimination: 4
--- /dev/null
+#
+Reported: Thu Jul 28 15:44:10 2011
+Subject: scarySync192
+Year/month of birth: 1997/02
+Sex: N
+CI type: 6
+Volume: 6
+Range: 6
+Discrimination: 3
--- /dev/null
+#
+Reported: Thu Aug 25 13:46:49 2011
+Subject: madonnaLennon203
+Year/month of birth: 1997/10
+Sex: M
+CI type: 2
+Volume: 4
+Range: 9
+Discrimination: 3
--- /dev/null
+#
+Reported: Sun Jun 26 13:44:34 2011
+Subject: gingerSync206
+Year/month of birth: 1992/12
+Sex: N
+CI type: 22
+Volume: 5
+Range: 2
+Discrimination: 7
--- /dev/null
+#
+Reported: Wed Aug 3 10:03:12 2011
+Subject: scarySpice208
+Year/month of birth: 1996/04
+Sex: M
+CI type: 19
+Volume: 4
+Range: 6
+Discrimination: 5
--- /dev/null
+#
+Reported: Sat May 21 12:53:23 2011
+Subject: paulBroccoli212
+Year/month of birth: 1997/10
+Sex: F
+CI type: 1
+Volume: 3
+Range: 6
+Discrimination: 3
--- /dev/null
+#
+Reported: Sat Sep 24 10:19:51 2011
+Subject: jayAsparagus222
+Year/month of birth: 1992/05
+Sex: F
+CI type: 20
+Volume: 4
+Range: 1
+Discrimination:
--- /dev/null
+#
+Reported: Thu Sep 15 10:42:17 2011
+Subject: ringoSync226
+Year/month of birth: 1995/10
+Sex: M
+CI type: 14
+Volume: 4
+Range: 4
+Discrimination: 6
--- /dev/null
+#
+Reported: Tue Jun 14 16:44:20 2011
+Subject: paulBroccoli227
+Year/month of birth: 1999/10
+Sex: N
+CI type: 8
+Volume: 3
+Range: 8
+Discrimination: 4
--- /dev/null
+#
+Reported: Wed Jul 6 16:33:52 2011
+Subject: paulHarrison235
+Year/month of birth: 1997/11
+Sex: F
+CI type: 17
+Volume: 5
+Range: 7
+Discrimination: 4
--- /dev/null
+#
+Reported: Fri Aug 26 12:17:50 2011
+Subject: princeMcCartney241
+Year/month of birth: 1992/01
+Sex: M
+CI type: 25
+Volume: 6
+Range: 3
+Discrimination:
--- /dev/null
+#
+Reported: Mon Sep 12 14:42:32 2011
+Subject: poshJonas243
+Year/month of birth: 1992/02
+Sex: F
+CI type: 16
+Volume: 4
+Range: 8
+Discrimination: 4
--- /dev/null
+#
+Reported: Sat Sep 17 12:49:27 2011
+Subject: paulSpice249
+Year/month of birth: 1993/08
+Sex: N
+CI type: 8
+Volume: 7
+Range: 4
+Discrimination: 6
--- /dev/null
+#
+Reported: Wed May 25 08:27:38 2011
+Subject: robynStarr251
+Year/month of birth: 1996/04
+Sex: F
+CI type: 24
+Volume: 6
+Range: 3
+Discrimination: 3
--- /dev/null
+#
+Reported: Thu May 26 16:28:29 2011
+Subject: scaryJonas269
+Year/month of birth: 1999/05
+Sex: N
+CI type: 16
+Volume: 5
+Range: 7
+Discrimination: 6
--- /dev/null
+#
+Reported: Wed Jun 15 09:19:55 2011
+Subject: poshHarrison275
+Year/month of birth: 1993/11
+Sex: F
+CI type: 19
+Volume: 5
+Range: 9
+Discrimination: 7
--- /dev/null
+#
+Reported: Mon Jul 25 14:01:36 2011
+Subject: babyMcCartney281
+Year/month of birth: 1991/07
+Sex: M
+CI type: 14
+Volume: 1
+Range: 2
+Discrimination: 4
--- /dev/null
+#
+Reported: Mon May 9 16:29:40 2011
+Subject: scaryAsparagus290
+Year/month of birth: 1991/01
+Sex: F
+CI type: 3
+Volume: 4
+Range: 4
+Discrimination: 3
--- /dev/null
+#
+Reported: Sat May 14 10:26:22 2011
+Subject: gingerHarrison291
+Year/month of birth: 1994/06
+Sex: N
+CI type: 4
+Volume: 6
+Range: 9
+Discrimination: 6
--- /dev/null
+#
+Reported: Mon Sep 12 13:31:21 2011
+Subject: ringoJonas292
+Year/month of birth: 1996/02
+Sex: N
+CI type: 20
+Volume: 7
+Range: 8
+Discrimination: 6
--- /dev/null
+#
+Reported: Sat Aug 13 08:57:47 2011
+Subject: johnHarrison300
+Year/month of birth: 1994/08
+Sex: N
+CI type: 20
+Volume: 5
+Range: 6
+Discrimination: 2
--- /dev/null
+#
+Reported: Tue Aug 9 15:43:20 2011
+Subject: scaryJonas306
+Year/month of birth: 1996/07
+Sex: N
+CI type: 4
+Volume: 4
+Range: 9
+Discrimination: 7
--- /dev/null
+#
+Reported: Sat Jun 11 09:23:07 2011
+Subject: poshAsparagus314
+Year/month of birth: 1998/08
+Sex: N
+CI type: 9
+Volume: 3
+Range: 5
+Discrimination: 3
--- /dev/null
+#
+Reported: Tue Jul 19 08:52:02 2011
+Subject: robynStarr316
+Year/month of birth: 1997/02
+Sex: M
+CI type: 10
+Volume: 5
+Range: 9
+Discrimination: 3
--- /dev/null
+#
+Reported: Sun Aug 28 08:48:53 2011
+Subject: gingerLennon323
+Year/month of birth: 1996/03
+Sex: M
+CI type: 13
+Volume: 6
+Range: 6
+Discrimination: 4
--- /dev/null
+#
+Reported: Tue May 24 11:59:38 2011
+Subject: babyLennon326
+Year/month of birth: 1998/02
+Sex: F
+CI type: 17
+Volume: 3
+Range: 9
+Discrimination: 7
--- /dev/null
+#
+Reported: Fri Aug 12 14:26:35 2011
+Subject: beyonceBeet331
+Year/month of birth: 1998/03
+Sex: F
+CI type: 24
+Volume: 2
+Range: 5
+Discrimination: 7
--- /dev/null
+#
+Reported: Thu Sep 8 08:43:35 2011
+Subject: poshHarrison332
+Year/month of birth: 1994/04
+Sex: M
+CI type: 18
+Volume: 5
+Range: 6
+Discrimination: 8
--- /dev/null
+#
+Reported: Sat Sep 17 11:20:22 2011
+Subject: jayBroccoli339
+Year/month of birth: 1998/11
+Sex: M
+CI type: 11
+Volume: 3
+Range: 4
+Discrimination: 4
--- /dev/null
+#
+Reported: Thu Aug 25 11:59:54 2011
+Subject: poshJonas346
+Year/month of birth: 1995/09
+Sex: F
+CI type: 7
+Volume: 3
+Range: 9
+Discrimination: 6
--- /dev/null
+#
+Reported: Sat Aug 13 11:33:02 2011
+Subject: robynBeatle350
+Year/month of birth: 1995/04
+Sex: M
+CI type: 1
+Volume: 4
+Range: 2
+Discrimination: 1
--- /dev/null
+#
+Reported: Sun May 29 16:20:51 2011
+Subject: robynBeatle351
+Year/month of birth: 1997/02
+Sex: M
+CI type: 25
+Volume: 6
+Range: 9
+Discrimination: 8
--- /dev/null
+#
+Reported: Mon Jul 25 12:36:14 2011
+Subject: robynBeatle351
+Year/month of birth: 1997/02
+Sex: M
+CI type: 25
+Volume: 6
+Range: 9
+Discrimination: 8
--- /dev/null
+#
+Reported: Sun Jun 12 16:59:19 2011
+Subject: robynBeatle351
+Year/month of birth: 1997/02
+Sex: M
+CI type: 25
+Volume: 6
+Range: 9
+Discrimination: 9
--- /dev/null
+#
+Reported: Thu Jun 16 16:06:30 2011
+Subject: beyonceBeatle356
+Year/month of birth: 1999/08
+Sex: F
+CI type: 16
+Volume: 7
+Range: 7
+Discrimination: 5
--- /dev/null
+#
+Reported: Sun Sep 4 09:45:13 2011
+Subject: madonnaStarr358
+Year/month of birth: 1998/02
+Sex: M
+CI type: 11
+Volume: 7
+Range: 4
+Discrimination: 5
--- /dev/null
+#
+Reported: Sat Jul 16 10:50:02 2011
+Subject: babyCarrot361
+Year/month of birth: 1991/01
+Sex: F
+CI type: 19
+Volume: 5
+Range: 6
+Discrimination: 6
--- /dev/null
+#
+Reported: Mon Jul 4 16:15:34 2011
+Subject: georgeBeatle364
+Year/month of birth: 1992/08
+Sex: F
+CI type: 10
+Volume: 3
+Range: 5
+Discrimination: 5
--- /dev/null
+#
+Reported: Wed Jun 29 08:30:45 2011
+Subject: johnStarr365
+Year/month of birth: 1998/05
+Sex: F
+CI type: 10
+Volume: 5
+Range: 8
+Discrimination: 5
--- /dev/null
+#
+Reported: Thu Jun 16 08:39:17 2011
+Subject: georgeHarrison372
+Year/month of birth: 1995/08
+Sex: N
+CI type: 10
+Volume: 6
+Range: 0
+Discrimination: 4
--- /dev/null
+#
+Reported: Tue Jun 7 12:59:49 2011
+Subject: jayBroccoli389
+Year/month of birth: 1999/12
+Sex: F
+CI type: 16
+Volume: 2
+Range: 9
+Discrimination: 6
--- /dev/null
+#
+Reported: Tue Jul 19 14:52:29 2011
+Subject: babyMcCartney392
+Year/month of birth: 1991/11
+Sex: N
+CI type: 17
+Volume: 4
+Range: 5
+Discrimination: 6
--- /dev/null
+#
+Reported: Wed Aug 17 08:55:39 2011
+Subject: jayCarrot402
+Year/month of birth: 1998/02
+Sex: M
+CI type: 2
+Volume: 0
+Range: 7
+Discrimination: 1
--- /dev/null
+#
+Reported: Sat May 14 15:28:34 2011
+Subject: ringoAsparagus406
+Year/month of birth: 1993/07
+Sex: F
+CI type: 1
+Volume: 8
+Range: 5
+Discrimination: 5
--- /dev/null
+#
+Reported: Sun Jul 10 11:26:31 2011
+Subject: madonnaBroccoli407
+Year/month of birth: 1993/03
+Sex: F
+CI type: 3
+Volume: 0
+Range: 3
+Discrimination: 1
--- /dev/null
+#
+Reported: Sun Sep 11 15:05:06 2011
+Subject: madonnaJonas411
+Year/month of birth: 1998/06
+Sex: N
+CI type: 23
+Volume: 8
+Range: 9
+Discrimination: 8
--- /dev/null
+#
+Reported: Mon Jun 27 13:46:07 2011
+Subject: scaryLennon414
+Year/month of birth: 1996/02
+Sex: N
+CI type: 18
+Volume: 3
+Range: 9
+Discrimination: 6
--- /dev/null
+#
+Reported: Mon Jun 6 15:01:26 2011
+Subject: scaryLennon414
+Year/month of birth: 1996/02
+Sex: N
+CI type: 18
+Volume: 3
+Range: 9
+Discrimination: 7
--- /dev/null
+#
+Reported: Tue Sep 6 16:04:49 2011
+Subject: poshMcCartney417
+Year/month of birth: 1992/09
+Sex: N
+CI type: 9
+Volume: 9
+Range: 9
+Discrimination: 4
--- /dev/null
+#
+Reported: Sun May 22 10:03:57 2011
+Subject: gingerLennon424
+Year/month of birth: 1996/06
+Sex: N
+CI type: 15
+Volume: 3
+Range: 6
+Discrimination: 4
--- /dev/null
+#
+Reported: Tue Aug 2 08:45:59 2011
+Subject: princeCarrot434
+Year/month of birth: 1992/09
+Sex: M
+CI type: 16
+Volume: 9
+Range: 2
+Discrimination: 4
--- /dev/null
+#
+Reported: Fri Jun 3 12:44:23 2011
+Subject: georgeMcCartney175
+Year/month of birth: 1998/08
+Sex: N
+CI type: 21
+Volume: 3
+Range: 8
+Discrimination: 5
--- /dev/null
+#
+Reported: Fri Aug 12 13:44:31 2011
+Subject: paulSpice199
+Year/month of birth: 1994/01
+Sex: M
+CI type: 24
+Volume: 5
+Range: 9
+Discrimination: 8
--- /dev/null
+#
+Reported: Tue Aug 9 13:07:38 2011
+Subject: scarySync200
+Year/month of birth: 1996/11
+Sex: M
+CI type: 4
+Volume: 4
+Range: 2
+Discrimination: 2
--- /dev/null
+#
+Reported: Fri Aug 5 13:23:15 2011
+Subject: princeHarrison204
+Year/month of birth: 1999/02
+Sex: M
+CI type: 3
+Volume: 4
+Range: 7
+Discrimination: 5
--- /dev/null
+#
+Reported: Wed May 18 16:35:41 2011
+Subject: babyStarr225
+Year/month of birth: 1992/11
+Sex: M
+CI type: 2
+Volume: 5
+Range: 8
+Discrimination: 3
--- /dev/null
+#
+Reported: Sun Aug 21 12:27:37 2011
+Subject: robynMcCartney232
+Year/month of birth: 1994/06
+Sex: M
+CI type: 2
+Volume: 4
+Range: 7
+Discrimination: 4
--- /dev/null
+#
+Reported: Thu Aug 11 13:17:20 2011
+Subject: paulLennon237
+Year/month of birth: 1998/11
+Sex: N
+CI type: 10
+Volume: 5
+Range: 7
+Discrimination: 8
--- /dev/null
+#
+Reported: Wed Sep 21 10:29:36 2011
+Subject: johnHarrison239
+Year/month of birth: 1995/12
+Sex: F
+CI type: 25
+Volume: 6
+Range: 10
+Discrimination: 6
--- /dev/null
+#
+Reported: Mon Sep 12 09:19:11 2011
+Subject: princeMcCartney241
+Year/month of birth: 1992/01
+Sex: M
+CI type: 25
+Volume: 7
+Range: 4
+Discrimination: 7
--- /dev/null
+#
+Reported: Thu Sep 1 13:33:15 2011
+Subject: babyAsparagus242
+Year/month of birth: 1993/10
+Sex: F
+CI type: 23
+Volume: 10
+Range: 4
+Discrimination:
--- /dev/null
+#
+Reported: Thu Sep 8 15:45:50 2011
+Subject: poshJonas243
+Year/month of birth: 1992/02
+Sex: F
+CI type: 16
+Volume: 4
+Range: 7
+Discrimination: 4
--- /dev/null
+#
+Reported: Wed Jul 6 15:38:07 2011
+Subject: scaryBroccoli244
+Year/month of birth: 1997/12
+Sex: F
+CI type: 1
+Volume: 4
+Range: 6
+Discrimination: 6
--- /dev/null
+#
+Reported: Tue Jul 12 15:10:58 2011
+Subject: scaryBroccoli244
+Year/month of birth: 1997/12
+Sex: F
+CI type: 1
+Volume: 4
+Range: 5
+Discrimination: 5
--- /dev/null
+#
+Reported: Tue Jun 14 14:06:23 2011
+Subject: robynStarr251
+Year/month of birth: 1996/04
+Sex: F
+CI type: 24
+Volume: 5
+Range: 2
+Discrimination: 3
--- /dev/null
+#
+Reported: Tue May 17 09:33:53 2011
+Subject: paulBeet252
+Year/month of birth: 1998/05
+Sex: M
+CI type: 10
+Volume: 1
+Range: 8
+Discrimination: 3
--- /dev/null
+#
+Reported: Wed Jun 8 16:43:12 2011
+Subject: georgeHarrison257
+Year/month of birth: 1998/09
+Sex: M
+CI type: 16
+Volume: 5
+Range: 6
+Discrimination: 3
--- /dev/null
+#
+Reported: Sun May 29 13:13:07 2011
+Subject: gingerBackstreet263
+Year/month of birth: 1998/08
+Sex: N
+CI type: 7
+Volume: 3
+Range: 8
+Discrimination: 4
--- /dev/null
+#
+Reported: Sun May 8 09:44:17 2011
+Subject: beyonceZ267
+Year/month of birth: 1992/06
+Sex: N
+CI type: 3
+Volume: 4
+Range: 2
+Discrimination: 6
--- /dev/null
+#
+Reported: Sat Sep 10 09:40:09 2011
+Subject: beyonceHarrison268
+Year/month of birth: 1994/05
+Sex: N
+CI type: 4
+Volume: 7
+Range: 7
+Discrimination: 4
--- /dev/null
+#
+Reported: Tue Sep 20 11:36:06 2011
+Subject: jaySpice270
+Year/month of birth: 1998/01
+Sex: F
+CI type: 1
+Volume: 3
+Range: 10
+Discrimination: 6
--- /dev/null
+#
+Reported: Sun Jun 19 14:51:49 2011
+Subject: princeHarrison273
+Year/month of birth: 1995/03
+Sex: F
+CI type: 2
+Volume: 4
+Range: 3
+Discrimination: 1
--- /dev/null
+#
+Reported: Thu Aug 11 08:20:16 2011
+Subject: princeHarrison273
+Year/month of birth: 1995/03
+Sex: F
+CI type: 2
+Volume: 4
+Range: 3
+Discrimination: 2
--- /dev/null
+#
+Reported: Mon Aug 15 10:39:17 2011
+Subject: georgeLennon278
+Year/month of birth: 1997/08
+Sex: M
+CI type: 2
+Volume: 3
+Range: 8
+Discrimination: 3
--- /dev/null
+#
+Reported: Wed Jul 27 15:38:03 2011
+Subject: poshBroccoli279
+Year/month of birth: 1991/07
+Sex: M
+CI type: 6
+Volume: 5
+Range: 9
+Discrimination: 2
--- /dev/null
+#
+Reported: Tue Sep 13 12:08:32 2011
+Subject: babyMcCartney281
+Year/month of birth: 1991/07
+Sex: M
+CI type: 14
+Volume: 2
+Range: 2
+Discrimination: 5
--- /dev/null
+#
+Reported: Sat May 14 08:58:18 2011
+Subject: jayBackstreet283
+Year/month of birth: 1993/02
+Sex: M
+CI type: 5
+Volume: 1
+Range: 4
+Discrimination: 5
--- /dev/null
+#
+Reported: Sun Jun 26 08:15:24 2011
+Subject: scaryBroccoli287
+Year/month of birth: 1994/10
+Sex: M
+CI type: 3
+Volume: 3
+Range: 7
+Discrimination: 1
--- /dev/null
+#
+Reported: Wed May 18 10:35:09 2011
+Subject: babyBroccoli298
+Year/month of birth: 1999/03
+Sex: N
+CI type: 4
+Volume: 1
+Range: 9
+Discrimination: 4
--- /dev/null
+#
+Reported: Tue Sep 20 12:09:15 2011
+Subject: beyonceCarrot302
+Year/month of birth: 1997/06
+Sex: N
+CI type: 4
+Volume: 8
+Range: 6
+Discrimination: 6
--- /dev/null
+#
+Reported: Thu Aug 4 14:45:40 2011
+Subject: beyonceJonas304
+Year/month of birth: 1995/11
+Sex: F
+CI type: 16
+Volume: 5
+Range: 5
+Discrimination: 6
--- /dev/null
+#
+Reported: Sun Aug 14 09:34:36 2011
+Subject: madonnaStarr315
+Year/month of birth: 1994/09
+Sex: F
+CI type: 21
+Volume: 8
+Range: 6
+Discrimination: 6
--- /dev/null
+#
+Reported: Fri Aug 26 14:59:45 2011
+Subject: madonnaBroccoli319
+Year/month of birth: 1999/06
+Sex: F
+CI type: 10
+Volume: 7
+Range: 9
+Discrimination: 7
--- /dev/null
+#
+Reported: Sat Jul 16 11:06:21 2011
+Subject: princeHarrison322
+Year/month of birth: 1998/01
+Sex: F
+CI type: 6
+Volume: 3
+Range: 4
+Discrimination: 7
--- /dev/null
+#
+Reported: Sun Aug 21 10:01:29 2011
+Subject: princeBackstreet327
+Year/month of birth: 1993/11
+Sex: M
+CI type: 21
+Volume: 10
+Range: 9
+Discrimination: 3
--- /dev/null
+#
+Reported: Tue Aug 30 08:15:42 2011
+Subject: poshZ341
+Year/month of birth: 1994/04
+Sex: F
+CI type: 14
+Volume: 5
+Range: 7
+Discrimination: 3
--- /dev/null
+#
+Reported: Thu Jul 28 11:38:24 2011
+Subject: beyonceSpice347
+Year/month of birth: 1997/02
+Sex: F
+CI type: 10
+Volume: 2
+Range: 9
+Discrimination: 3
--- /dev/null
+#
+Reported: Wed Jul 20 09:59:38 2011
+Subject: madonnaBeet348
+Year/month of birth: 1993/07
+Sex: N
+CI type: 17
+Volume: 4
+Range: 6
+Discrimination: 9
--- /dev/null
+#
+Reported: Wed Sep 7 10:51:36 2011
+Subject: robynSpice349
+Year/month of birth: 1997/10
+Sex: M
+CI type: 19
+Volume: 7
+Range: 8
+Discrimination: 9
--- /dev/null
+#
+Reported: Tue Aug 2 15:05:01 2011
+Subject: robynBeatle351
+Year/month of birth: 1997/02
+Sex: M
+CI type: 25
+Volume: 6
+Range: 9
+Discrimination: 9
--- /dev/null
+#
+Reported: Wed Sep 28 14:01:36 2011
+Subject: johnAsparagus357
+Year/month of birth: 1996/01
+Sex: F
+CI type: 23
+Volume: 8
+Range: 9
+Discrimination: 10
--- /dev/null
+#
+Reported: Thu Jul 28 14:33:15 2011
+Subject: georgeCarrot359
+Year/month of birth: 1996/05
+Sex: M
+CI type: 24
+Volume: 5
+Range: 2
+Discrimination: 6
--- /dev/null
+#
+Reported: Sat May 28 14:35:47 2011
+Subject: georgeHarrison372
+Year/month of birth: 1995/08
+Sex: N
+CI type: 10
+Volume: 6
+Range: 2
+Discrimination: 3
--- /dev/null
+#
+Reported: Sat Aug 13 14:48:40 2011
+Subject: georgeBackstreet373
+Year/month of birth: 1992/07
+Sex: F
+CI type: 23
+Volume: 3
+Range: 4
+Discrimination: 8
--- /dev/null
+#
+Reported: Sat Sep 10 12:55:17 2011
+Subject: poshSync375
+Year/month of birth: 1991/06
+Sex: F
+CI type: 14
+Volume: 3
+Range: 6
+Discrimination: 7
--- /dev/null
+#
+Reported: Tue Jun 21 12:23:40 2011
+Subject: jayBroccoli389
+Year/month of birth: 1999/12
+Sex: F
+CI type: 16
+Volume: 3
+Range: 9
+Discrimination: 8
--- /dev/null
+#
+Reported: Mon May 16 15:11:14 2011
+Subject: jayBroccoli389
+Year/month of birth: 1999/12
+Sex: F
+CI type: 16
+Volume: 3
+Range: 9
+Discrimination: 8
--- /dev/null
+#
+Reported: Tue May 10 11:10:24 2011
+Subject: jayBroccoli389
+Year/month of birth: 1999/12
+Sex: F
+CI type: 16
+Volume: 4
+Range: 9
+Discrimination: 7
--- /dev/null
+#
+Reported: Mon May 2 10:15:40 2011
+Subject: jayBroccoli389
+Year/month of birth: 1999/12
+Sex: F
+CI type: 16
+Volume: 4
+Range: 9
+Discrimination: 6
--- /dev/null
+#
+Reported: Wed Jun 22 08:58:50 2011
+Subject: gingerMcCartney390
+Year/month of birth: 1997/07
+Sex: M
+CI type: 8
+Volume: 4
+Range: 5
+Discrimination: 1
--- /dev/null
+#
+Reported: Tue Jul 5 08:56:26 2011
+Subject: scaryLennon399
+Year/month of birth: 1999/08
+Sex: F
+CI type: 12
+Volume: 2
+Range: 9
+Discrimination: 7
--- /dev/null
+#
+Reported: Sat Jun 18 08:44:29 2011
+Subject: ringoAsparagus406
+Year/month of birth: 1993/07
+Sex: F
+CI type: 1
+Volume: 6
+Range: 5
+Discrimination: 4
--- /dev/null
+#
+Reported: Tue Jun 14 08:08:50 2011
+Subject: ringoAsparagus406
+Year/month of birth: 1993/07
+Sex: F
+CI type: 1
+Volume: 7
+Range: 5
+Discrimination: 4
--- /dev/null
+#
+Reported: Fri May 20 13:28:57 2011
+Subject: ringoBeet422
+Year/month of birth: 1999/10
+Sex: M
+CI type: 20
+Volume: 5
+Range: 9
+Discrimination: 6
--- /dev/null
+#
+Reported: Tue Jul 12 10:45:09 2011
+Subject: georgeBeatle438
+Year/month of birth: 1997/01
+Sex: F
+CI type: 16
+Volume: 8
+Range: 3
+Discrimination: 6
--- /dev/null
+#
+Reported: Wed Aug 17 13:56:38 2011
+Subject: madonnaStarr178
+Year/month of birth: 1995/02
+Sex: N
+CI type: 8
+Volume: 7
+Range: 3
+Discrimination: 5
--- /dev/null
+#
+Reported: Thu May 19 09:08:14 2011
+Subject: paulSpice199
+Year/month of birth: 1994/01
+Sex: M
+CI type: 24
+Volume: 4
+Range: 9
+Discrimination: 8
--- /dev/null
+#
+Reported: Fri May 13 09:11:42 2011
+Subject: paulBeet211
+Year/month of birth: 1991/04
+Sex: F
+CI type: 5
+Volume: 4
+Range: 4
+Discrimination: 2
--- /dev/null
+#
+Reported: Tue Sep 6 12:57:43 2011
+Subject: ringoBeet213
+Year/month of birth: 1998/01
+Sex: N
+CI type: 19
+Volume: 6
+Range: 5
+Discrimination: 8
--- /dev/null
+#
+Reported: Fri Jul 8 15:41:01 2011
+Subject: georgeHarrison219
+Year/month of birth: 1998/03
+Sex: F
+CI type: 18
+Volume: 6
+Range: 5
+Discrimination: 5
--- /dev/null
+#
+Reported: Tue Aug 23 12:41:49 2011
+Subject: beyonceJonas228
+Year/month of birth: 1998/10
+Sex: F
+CI type: 22
+Volume: 6
+Range: 10
+Discrimination: 9
--- /dev/null
+#
+Reported: Sun Jun 19 09:32:30 2011
+Subject: georgeBeet229
+Year/month of birth: 1996/01
+Sex: M
+CI type: 20
+Volume: 7
+Range: 4
+Discrimination: 5
--- /dev/null
+#
+Reported: Tue Jul 26 15:01:25 2011
+Subject: scaryMcCartney238
+Year/month of birth: 1996/03
+Sex: F
+CI type: 24
+Volume: 3
+Range: 8
+Discrimination: 8
--- /dev/null
+#
+Reported: Sun May 29 11:12:13 2011
+Subject: babyJonas240
+Year/month of birth: 1993/03
+Sex: M
+CI type: 3
+Volume: 0
+Range: 9
+Discrimination: 2
--- /dev/null
+#
+Reported: Sun Jul 3 11:43:06 2011
+Subject: princeMcCartney241
+Year/month of birth: 1992/01
+Sex: M
+CI type: 25
+Volume: 5
+Range: 4
+Discrimination: 6
--- /dev/null
+#
+Reported: Sat Jul 16 10:40:53 2011
+Subject: scaryBroccoli244
+Year/month of birth: 1997/12
+Sex: F
+CI type: 1
+Volume: 5
+Range: 5
+Discrimination: 6
--- /dev/null
+#
+Reported: Fri Sep 9 12:23:59 2011
+Subject: robynSync245
+Year/month of birth: 1999/08
+Sex: M
+CI type: 1
+Volume: 1
+Range: 9
+Discrimination: 6
--- /dev/null
+#
+Reported: Tue Aug 23 12:23:45 2011
+Subject: georgeSync248
+Year/month of birth: 1996/12
+Sex: M
+CI type: 11
+Volume: 6
+Range: 8
+Discrimination: 3
--- /dev/null
+#
+Reported: Sat Sep 10 11:44:27 2011
+Subject: gingerSpice253
+Year/month of birth: 1996/10
+Sex: F
+CI type: 20
+Volume: 8
+Range: 7
+Discrimination: 6
--- /dev/null
+#
+Reported: Thu Sep 22 10:16:46 2011
+Subject: ringoSpice271
+Year/month of birth: 1998/11
+Sex: F
+CI type: 22
+Volume: 7
+Range: 3
+Discrimination: 8
--- /dev/null
+#
+Reported: Fri Jul 15 16:17:33 2011
+Subject: princeHarrison273
+Year/month of birth: 1995/03
+Sex: F
+CI type: 2
+Volume: 4
+Range: 2
+Discrimination: 2
--- /dev/null
+#
+Reported: Tue Jul 12 13:31:34 2011
+Subject: madonnaAsparagus274
+Year/month of birth: 1999/04
+Sex: M
+CI type: 10
+Volume: 3
+Range: 8
+Discrimination: 5
--- /dev/null
+#
+Reported: Fri May 27 08:08:06 2011
+Subject: scaryStarr276
+Year/month of birth: 1991/01
+Sex: F
+CI type: 15
+Volume: 2
+Range: 4
+Discrimination: 6
--- /dev/null
+#
+Reported: Sat May 28 08:24:36 2011
+Subject: paulBroccoli277
+Year/month of birth: 1993/07
+Sex: F
+CI type: 13
+Volume: 8
+Range: 3
+Discrimination: 3
--- /dev/null
+#
+Reported: Mon Jul 4 12:09:44 2011
+Subject: jayBeet286
+Year/month of birth: 1992/12
+Sex: N
+CI type: 1
+Volume: 2
+Range: 9
+Discrimination: 2
--- /dev/null
+#
+Reported: Sat Jun 25 13:37:57 2011
+Subject: georgeSpice293
+Year/month of birth: 1995/10
+Sex: N
+CI type: 12
+Volume: 3
+Range: 7
+Discrimination: 1
--- /dev/null
+#
+Reported: Mon Jul 4 10:58:58 2011
+Subject: ringoSync305
+Year/month of birth: 1999/07
+Sex: M
+CI type: 17
+Volume: 3
+Range: 9
+Discrimination: 3
--- /dev/null
+#
+Reported: Wed Jul 20 14:25:09 2011
+Subject: beyonceCarrot311
+Year/month of birth: 1994/03
+Sex: N
+CI type: 14
+Volume: 4
+Range: 4
+Discrimination: 5
--- /dev/null
+#
+Reported: Thu Aug 18 14:36:01 2011
+Subject: beyonceLennon313
+Year/month of birth: 1998/07
+Sex: F
+CI type: 12
+Volume: 7
+Range: 6
+Discrimination: 7
--- /dev/null
+#
+Reported: Fri May 27 11:30:48 2011
+Subject: robynCarrot320
+Year/month of birth: 1996/08
+Sex: M
+CI type: 21
+Volume: 9
+Range: 9
+Discrimination: 6
--- /dev/null
+#
+Reported: Sat Jul 30 12:31:51 2011
+Subject: scaryJonas325
+Year/month of birth: 1995/11
+Sex: N
+CI type: 25
+Volume: 6
+Range: 6
+Discrimination: 4
--- /dev/null
+#
+Reported: Mon Sep 26 11:48:42 2011
+Subject: madonnaHarrison329
+Year/month of birth: 1998/09
+Sex: M
+CI type: 8
+Volume: 3
+Range: 4
+Discrimination: 6
--- /dev/null
+#
+Reported: Tue Jun 7 16:21:41 2011
+Subject: princeAsparagus333
+Year/month of birth: 1996/10
+Sex: M
+CI type: 17
+Volume: 4
+Range: 7
+Discrimination: 6
--- /dev/null
+#
+Reported: Fri Aug 26 09:44:02 2011
+Subject: johnBeatle336
+Year/month of birth: 1997/05
+Sex: F
+CI type: 11
+Volume: 8
+Range: 9
+Discrimination: 7
--- /dev/null
+#
+Reported: Tue May 3 15:31:05 2011
+Subject: scaryCarrot337
+Year/month of birth: 1998/09
+Sex: F
+CI type: 21
+Volume: 4
+Range: 2
+Discrimination: 5
--- /dev/null
+#
+Reported: Tue Jun 28 15:19:14 2011
+Subject: babyBeatle343
+Year/month of birth: 1991/11
+Sex: N
+CI type: 10
+Volume: 7
+Range: 9
+Discrimination: 3
--- /dev/null
+#
+Reported: Fri May 6 13:45:16 2011
+Subject: robynSpice349
+Year/month of birth: 1997/10
+Sex: M
+CI type: 19
+Volume: 4
+Range: 7
+Discrimination: 8
--- /dev/null
+#
+Reported: Mon Jul 18 09:19:13 2011
+Subject: paulBeet363
+Year/month of birth: 1997/09
+Sex: F
+CI type: 21
+Volume: 5
+Range: 7
+Discrimination: 8
--- /dev/null
+#
+Reported: Thu Sep 8 12:04:36 2011
+Subject: gingerBeet371
+Year/month of birth: 1994/12
+Sex: M
+CI type: 19
+Volume: 3
+Range: 10
+Discrimination: 6
--- /dev/null
+#
+Reported: Sat Aug 6 08:59:11 2011
+Subject: poshLennon377
+Year/month of birth: 1993/03
+Sex: N
+CI type: 16
+Volume: 4
+Range: 5
+Discrimination: 7
--- /dev/null
+#
+Reported: Tue Aug 30 16:56:43 2011
+Subject: beyonceLennon379
+Year/month of birth: 1999/02
+Sex: F
+CI type: 4
+Volume: 6
+Range: 7
+Discrimination: 4
--- /dev/null
+#
+Reported: Tue Aug 9 11:39:55 2011
+Subject: johnMcCartney381
+Year/month of birth: 1999/12
+Sex: M
+CI type: 14
+Volume: 1
+Range: 8
+Discrimination: 8
--- /dev/null
+#
+Reported: Sun Aug 7 13:15:25 2011
+Subject: scaryStarr398
+Year/month of birth: 1992/03
+Sex: M
+CI type: 12
+Volume: 6
+Range: 7
+Discrimination: 6
--- /dev/null
+#
+Reported: Sat Jul 16 15:25:11 2011
+Subject: scaryLennon399
+Year/month of birth: 1999/08
+Sex: F
+CI type: 12
+Volume: 4
+Range: 9
+Discrimination: 6
--- /dev/null
+#
+Reported: Sun May 1 09:04:32 2011
+Subject: madonnaLennon408
+Year/month of birth: 1995/03
+Sex: M
+CI type: 21
+Volume: 8
+Range: 6
+Discrimination: 5
--- /dev/null
+#
+Reported: Sat Aug 13 15:03:55 2011
+Subject: scaryLennon414
+Year/month of birth: 1996/02
+Sex: N
+CI type: 18
+Volume: 4
+Range: 9
+Discrimination: 7
--- /dev/null
+#
+Reported: Fri Aug 19 10:47:35 2011
+Subject: gingerSpice416
+Year/month of birth: 1993/12
+Sex: M
+CI type: 19
+Volume: 4
+Range: 6
+Discrimination: 8
--- /dev/null
+#
+Reported: Tue Jun 14 09:01:29 2011
+Subject: jaySync420
+Year/month of birth: 1998/02
+Sex: N
+CI type: 18
+Volume: 8
+Range: 7
+Discrimination: 4
--- /dev/null
+#
+Reported: Mon Aug 1 10:28:48 2011
+Subject: ringoBeet422
+Year/month of birth: 1999/10
+Sex: M
+CI type: 20
+Volume: 6
+Range: 7
+Discrimination:
--- /dev/null
+#
+Reported: Thu Sep 29 15:43:02 2011
+Subject: scaryLennon426
+Year/month of birth: 1995/09
+Sex: F
+CI type: 18
+Volume: 9
+Range: 9
+Discrimination:
--- /dev/null
+#
+Reported: Mon Sep 5 09:56:05 2011
+Subject: madonnaBroccoli427
+Year/month of birth: 1999/12
+Sex: N
+CI type: 20
+Volume: 4
+Range: 9
+Discrimination: 5
--- /dev/null
+#
+Reported: Sat Sep 17 08:52:44 2011
+Subject: beyonceLennon428
+Year/month of birth: 1992/08
+Sex: N
+CI type: 17
+Volume: 3
+Range: 6
+Discrimination: 6
--- /dev/null
+#
+Reported: Mon May 23 14:24:45 2011
+Subject: poshSpice430
+Year/month of birth: 1999/05
+Sex: F
+CI type: 22
+Volume: 6
+Range: 8
+Discrimination: 8
--- /dev/null
+#
+Reported: Sat May 7 10:50:03 2011
+Subject: georgeSpice437
+Year/month of birth: 1997/12
+Sex: M
+CI type: 20
+Volume: 3
+Range: 5
+Discrimination:
--- /dev/null
+#
+Reported: Mon Jun 6 15:49:15 2011
+Subject: robynSync173
+Year/month of birth: 1997/09
+Sex: M
+CI type: 9
+Volume: 3
+Range: 9
+Discrimination: 5
--- /dev/null
+#
+Reported: Thu Jun 23 15:25:05 2011
+Subject: madonnaSpice180
+Year/month of birth: 1994/01
+Sex: N
+CI type: 23
+Volume: 6
+Range: 7
+Discrimination: 3
--- /dev/null
+#
+Reported: Sun May 1 11:48:13 2011
+Subject: georgeAsparagus182
+Year/month of birth: 1994/05
+Sex: N
+CI type: 18
+Volume: 3
+Range: 6
+Discrimination: 4
--- /dev/null
+#
+Reported: Thu Jul 28 16:26:05 2011
+Subject: poshJonas189
+Year/month of birth: 1998/10
+Sex: M
+CI type: 18
+Volume: 2
+Range: 7
+Discrimination: 5
--- /dev/null
+#
+Reported: Sat Sep 17 09:08:21 2011
+Subject: scaryAsparagus190
+Year/month of birth: 1991/10
+Sex: F
+CI type: 20
+Volume: 10
+Range: 2
+Discrimination: 7
--- /dev/null
+#
+Reported: Fri Jun 3 11:58:55 2011
+Subject: madonnaBeatle191
+Year/month of birth: 1992/08
+Sex: N
+CI type: 11
+Volume: 6
+Range: 6
+Discrimination: 6
--- /dev/null
+#
+Reported: Sun Jul 3 10:17:15 2011
+Subject: scarySync192
+Year/month of birth: 1997/02
+Sex: N
+CI type: 6
+Volume: 6
+Range: 7
+Discrimination: 3
--- /dev/null
+#
+Reported: Fri Jun 3 10:35:41 2011
+Subject: gingerZ196
+Year/month of birth: 1992/09
+Sex: M
+CI type: 6
+Volume: 1
+Range: 6
+Discrimination: 3
--- /dev/null
+#
+Reported: Fri Jul 15 16:56:22 2011
+Subject: johnBackstreet198
+Year/month of birth: 1996/06
+Sex: F
+CI type: 6
+Volume: 3
+Range: 7
+Discrimination: 3
--- /dev/null
+#
+Reported: Wed Sep 14 12:04:14 2011
+Subject: paulSpice199
+Year/month of birth: 1994/01
+Sex: M
+CI type: 24
+Volume: 6
+Range: 10
+Discrimination: 10
--- /dev/null
+#
+Reported: Fri Jul 1 13:46:35 2011
+Subject: babyHarrison201
+Year/month of birth: 1999/05
+Sex: F
+CI type: 3
+Volume: 5
+Range: 9
+Discrimination: 5
--- /dev/null
+#
+Reported: Sat Aug 6 08:47:43 2011
+Subject: poshHarrison205
+Year/month of birth: 1997/03
+Sex: F
+CI type: 3
+Volume: 3
+Range: 2
+Discrimination: 4
--- /dev/null
+#
+Reported: Thu May 26 08:31:36 2011
+Subject: paulBroccoli212
+Year/month of birth: 1997/10
+Sex: F
+CI type: 1
+Volume: 3
+Range: 7
+Discrimination: 3
--- /dev/null
+#
+Reported: Wed Jun 22 09:04:09 2011
+Subject: gingerSpice214
+Year/month of birth: 1998/03
+Sex: N
+CI type: 15
+Volume: 4
+Range: 4
+Discrimination: 7
--- /dev/null
+#
+Reported: Tue Jul 5 08:07:52 2011
+Subject: georgeSync220
+Year/month of birth: 1995/03
+Sex: M
+CI type: 14
+Volume: 5
+Range: 4
+Discrimination: 6
--- /dev/null
+#
+Reported: Tue Sep 27 10:34:54 2011
+Subject: johnStarr230
+Year/month of birth: 1992/07
+Sex: N
+CI type: 6
+Volume: 4
+Range: 10
+Discrimination: 6
--- /dev/null
+#
+Reported: Thu May 12 08:22:30 2011
+Subject: princeStarr234
+Year/month of birth: 1995/10
+Sex: F
+CI type: 2
+Volume: 5
+Range: 3
+Discrimination: 1
--- /dev/null
+#
+Reported: Mon Jun 6 11:11:27 2011
+Subject: princeMcCartney241
+Year/month of birth: 1992/01
+Sex: M
+CI type: 25
+Volume: 5
+Range: 2
+Discrimination: 6
--- /dev/null
+#
+Reported: Tue Jul 26 13:23:07 2011
+Subject: robynStarr246
+Year/month of birth: 1999/03
+Sex: M
+CI type: 1
+Volume: 6
+Range: 9
+Discrimination: 3
--- /dev/null
+#
+Reported: Thu Sep 29 09:49:38 2011
+Subject: gingerBackstreet247
+Year/month of birth: 1996/09
+Sex: M
+CI type: 17
+Volume: 5
+Range: 5
+Discrimination: 7
--- /dev/null
+#
+Reported: Sun Jul 10 15:14:14 2011
+Subject: georgeBeet250
+Year/month of birth: 1993/02
+Sex: N
+CI type: 11
+Volume: 8
+Range: 4
+Discrimination: 3
--- /dev/null
+#
+Reported: Thu Jun 9 14:22:12 2011
+Subject: scaryZ259
+Year/month of birth: 1998/05
+Sex: M
+CI type: 7
+Volume: 5
+Range: 4
+Discrimination: 3
--- /dev/null
+#
+Reported: Wed Aug 10 10:54:01 2011
+Subject: scaryBeatle265
+Year/month of birth: 1993/04
+Sex: F
+CI type: 6
+Volume: 3
+Range: 4
+Discrimination: 2
--- /dev/null
+#
+Reported: Tue Sep 20 16:25:55 2011
+Subject: poshZ272
+Year/month of birth: 1996/12
+Sex: N
+CI type: 3
+Volume: 3
+Range: 5
+Discrimination: 6
--- /dev/null
+#
+Reported: Wed May 25 09:40:12 2011
+Subject: princeHarrison273
+Year/month of birth: 1995/03
+Sex: F
+CI type: 2
+Volume: 4
+Range: 2
+Discrimination: 2
--- /dev/null
+#
+Reported: Wed Jun 8 09:40:18 2011
+Subject: madonnaBroccoli285
+Year/month of birth: 1997/11
+Sex: F
+CI type: 24
+Volume: 3
+Range: 8
+Discrimination: 9
--- /dev/null
+#
+Reported: Sat Aug 20 08:31:27 2011
+Subject: scaryLennon294
+Year/month of birth: 1994/10
+Sex: M
+CI type: 23
+Volume: 5
+Range: 9
+Discrimination: 9
--- /dev/null
+#
+Reported: Wed Aug 17 08:15:39 2011
+Subject: beyonceSpice296
+Year/month of birth: 1996/05
+Sex: F
+CI type: 13
+Volume: 3
+Range: 7
+Discrimination: 1
--- /dev/null
+#
+Reported: Mon Jun 27 16:24:59 2011
+Subject: georgeLennon299
+Year/month of birth: 1997/10
+Sex: F
+CI type: 1
+Volume: 6
+Range: 5
+Discrimination: 3
--- /dev/null
+#
+Reported: Sat Sep 10 10:09:39 2011
+Subject: jayBeatle328
+Year/month of birth: 1991/04
+Sex: N
+CI type: 17
+Volume: 6
+Range: 7
+Discrimination: 8
--- /dev/null
+#
+Reported: Mon Sep 5 16:07:02 2011
+Subject: ringoSync330
+Year/month of birth: 1998/05
+Sex: M
+CI type: 23
+Volume: 6
+Range: 6
+Discrimination: 5
--- /dev/null
+#
+Reported: Thu Jul 21 14:39:03 2011
+Subject: poshHarrison332
+Year/month of birth: 1994/04
+Sex: M
+CI type: 18
+Volume: 4
+Range: 4
+Discrimination:
--- /dev/null
+#
+Reported: Thu May 19 12:44:17 2011
+Subject: princeAsparagus333
+Year/month of birth: 1996/10
+Sex: M
+CI type: 17
+Volume: 5
+Range: 8
+Discrimination:
--- /dev/null
+#
+Reported: Mon Sep 12 14:50:10 2011
+Subject: princeSpice335
+Year/month of birth: 1991/04
+Sex: F
+CI type: 7
+Volume: 1
+Range: 5
+Discrimination: 6
--- /dev/null
+#
+Reported: Wed Jun 1 12:01:42 2011
+Subject: ringoSpice340
+Year/month of birth: 1992/02
+Sex: N
+CI type: 1
+Volume: 5
+Range: 5
+Discrimination: 3
--- /dev/null
+#
+Reported: Thu Jul 28 10:21:42 2011
+Subject: babyMcCartney342
+Year/month of birth: 1995/05
+Sex: M
+CI type: 16
+Volume: 6
+Range: 4
+Discrimination: 3
--- /dev/null
+#
+Reported: Wed Jun 1 16:22:57 2011
+Subject: gingerBroccoli355
+Year/month of birth: 1991/05
+Sex: M
+CI type: 25
+Volume: 5
+Range: 5
+Discrimination: 5
--- /dev/null
+#
+Reported: Sat May 7 14:01:49 2011
+Subject: robynJonas367
+Year/month of birth: 1994/01
+Sex: N
+CI type: 7
+Volume: 3
+Range: 5
+Discrimination: 3
--- /dev/null
+#
+Reported: Mon Sep 26 13:19:35 2011
+Subject: robynLennon368
+Year/month of birth: 1993/10
+Sex: M
+CI type: 19
+Volume: 6
+Range: 2
+Discrimination: 8
--- /dev/null
+#
+Reported: Tue Jul 5 08:12:43 2011
+Subject: beyonceJonas376
+Year/month of birth: 1996/10
+Sex: M
+CI type: 24
+Volume: 4
+Range: 6
+Discrimination: 6
--- /dev/null
+#
+Reported: Fri Aug 19 14:32:40 2011
+Subject: gingerMcCartney390
+Year/month of birth: 1997/07
+Sex: M
+CI type: 8
+Volume: 5
+Range: 7
+Discrimination: 3
--- /dev/null
+#
+Reported: Mon Aug 1 09:53:38 2011
+Subject: gingerMcCartney390
+Year/month of birth: 1997/07
+Sex: M
+CI type: 8
+Volume: 4
+Range: 4
+Discrimination: 1
--- /dev/null
+#
+Reported: Thu Jul 28 14:06:20 2011
+Subject: princeBackstreet395
+Year/month of birth: 1993/03
+Sex: M
+CI type: 13
+Volume: 4
+Range: 4
+Discrimination: 5
--- /dev/null
+#
+Reported: Mon Jun 20 16:58:45 2011
+Subject: scaryLennon399
+Year/month of birth: 1999/08
+Sex: F
+CI type: 12
+Volume: 3
+Range: 9
+Discrimination: 5
--- /dev/null
+#
+Reported: Tue Aug 9 13:32:11 2011
+Subject: babyJonas401
+Year/month of birth: 1996/01
+Sex: N
+CI type: 1
+Volume: 3
+Range: 3
+Discrimination: 4
--- /dev/null
+#
+Reported: Mon Jun 20 11:31:59 2011
+Subject: madonnaJonas411
+Year/month of birth: 1998/06
+Sex: N
+CI type: 23
+Volume: 8
+Range: 9
+Discrimination: 6
--- /dev/null
+#
+Reported: Sat Sep 3 15:14:46 2011
+Subject: georgeBeatle412
+Year/month of birth: 1997/05
+Sex: N
+CI type: 1
+Volume: 8
+Range: 10
+Discrimination: 2
--- /dev/null
+#
+Reported: Sat Sep 24 13:35:24 2011
+Subject: scaryLennon414
+Year/month of birth: 1996/02
+Sex: N
+CI type: 18
+Volume: 4
+Range: 10
+Discrimination: 9
--- /dev/null
+#
+Reported: Wed Sep 28 10:46:08 2011
+Subject: madonnaAsparagus415
+Year/month of birth: 1993/07
+Sex: F
+CI type: 21
+Volume: 3
+Range: 10
+Discrimination: 6
--- /dev/null
+#
+Reported: Mon Jul 25 09:24:04 2011
+Subject: ringoBeet422
+Year/month of birth: 1999/10
+Sex: M
+CI type: 20
+Volume: 5
+Range: 8
+Discrimination: 7
--- /dev/null
+#
+Reported: Fri Jun 10 14:58:13 2011
+Subject: gingerCarrot423
+Year/month of birth: 1991/01
+Sex: M
+CI type: 20
+Volume: 6
+Range: 0
+Discrimination: 5
--- /dev/null
+#
+Reported: Fri Jun 17 14:43:38 2011
+Subject: paulJonas429
+Year/month of birth: 1993/08
+Sex: N
+CI type: 14
+Volume: 3
+Range: 4
+Discrimination: 3
--- /dev/null
+#
+Reported: Wed Jun 1 10:09:42 2011
+Subject: ringoBackstreet431
+Year/month of birth: 1999/08
+Sex: M
+CI type: 24
+Volume: 3
+Range: 9
+Discrimination: 9
--- /dev/null
+#
+Reported: Sat Jul 2 14:55:38 2011
+Subject: paulJonas432
+Year/month of birth: 1995/02
+Sex: M
+CI type: 10
+Volume: 2
+Range: 7
+Discrimination: 3
--- /dev/null
+#
+Reported: Sun Sep 11 16:33:54 2011
+Subject: princeCarrot434
+Year/month of birth: 1992/09
+Sex: M
+CI type: 16
+Volume: 9
+Range: 3
+Discrimination: 5
--- /dev/null
+#
+Reported: Fri Sep 23 13:47:10 2011
+Subject: madonnaHarrison435
+Year/month of birth: 1992/02
+Sex: M
+CI type: 7
+Volume: 2
+Range: 7
+Discrimination: 1
--- /dev/null
+#
+Reported: Mon Sep 12 12:36:10 2011
+Subject: babyJonas436
+Year/month of birth: 1996/07
+Sex: F
+CI type: 21
+Volume: 9
+Range: 10
+Discrimination: 4
--- /dev/null
+Contact Janice about new calibration for data in August.
--- /dev/null
+#
+Reported: Thu Sep 8 15:08:36 2011
+Subject: jayBackstreet179
+Year/month of birth: 1994/09
+Sex: N
+CI type: 18
+Volume: 6
+Range: 5
+Discrimination: 7
--- /dev/null
+#
+Reported: Wed Aug 24 14:44:27 2011
+Subject: beyonceHarrison181
+Year/month of birth: 1996/04
+Sex: F
+CI type: 15
+Volume: 9
+Range: 6
+Discrimination:
--- /dev/null
+#
+Reported: Mon Jul 25 11:10:05 2011
+Subject: madonnaMcCartney188
+Year/month of birth: 1992/03
+Sex: N
+CI type: 14
+Volume: 2
+Range: 1
+Discrimination: 4
--- /dev/null
+#
+Reported: Mon Jun 20 10:40:32 2011
+Subject: poshJonas189
+Year/month of birth: 1998/10
+Sex: M
+CI type: 18
+Volume: 2
+Range: 7
+Discrimination: 5
--- /dev/null
+#
+Reported: Mon Jun 27 10:30:07 2011
+Subject: scarySync192
+Year/month of birth: 1997/02
+Sex: N
+CI type: 6
+Volume: 5
+Range: 7
+Discrimination: 3
--- /dev/null
+#
+Reported: Wed Jul 6 12:57:12 2011
+Subject: jayMcCartney194
+Year/month of birth: 1998/02
+Sex: N
+CI type: 20
+Volume: 5
+Range: 5
+Discrimination: 6
--- /dev/null
+#
+Reported: Sat Jun 4 11:10:28 2011
+Subject: johnLennon210
+Year/month of birth: 1993/11
+Sex: N
+CI type: 18
+Volume: 6
+Range: 6
+Discrimination: 7
--- /dev/null
+#
+Reported: Mon Aug 15 10:28:56 2011
+Subject: paulBroccoli212
+Year/month of birth: 1997/10
+Sex: F
+CI type: 1
+Volume: 3
+Range: 8
+Discrimination: 2
--- /dev/null
+#
+Reported: Tue Aug 2 11:21:23 2011
+Subject: jaySync215
+Year/month of birth: 1993/02
+Sex: N
+CI type: 2
+Volume: 4
+Range: 9
+Discrimination: 2
--- /dev/null
+#
+Reported: Thu Sep 15 08:58:48 2011
+Subject: johnStarr217
+Year/month of birth: 1996/05
+Sex: N
+CI type: 15
+Volume: 6
+Range: 10
+Discrimination: 6
--- /dev/null
+#
+Reported: Thu Sep 15 16:14:23 2011
+Subject: johnAsparagus231
+Year/month of birth: 1997/02
+Sex: M
+CI type: 23
+Volume: 9
+Range: 10
+Discrimination: 8
--- /dev/null
+#
+Reported: Fri May 13 15:16:27 2011
+Subject: georgeBackstreet233
+Year/month of birth: 1991/01
+Sex: F
+CI type: 8
+Volume: 3
+Range: 6
+Discrimination: 5
--- /dev/null
+#
+Reported: Thu Jun 9 14:44:07 2011
+Subject: babyJonas240
+Year/month of birth: 1993/03
+Sex: M
+CI type: 3
+Volume: 0
+Range: 9
+Discrimination: 3
--- /dev/null
+#
+Reported: Thu Jun 2 16:58:46 2011
+Subject: babyJonas240
+Year/month of birth: 1993/03
+Sex: M
+CI type: 3
+Volume: 0
+Range: 9
+Discrimination: 3
--- /dev/null
+#
+Reported: Wed Jul 6 10:39:52 2011
+Subject: robynStarr251
+Year/month of birth: 1996/04
+Sex: F
+CI type: 24
+Volume: 5
+Range: 4
+Discrimination: 3
--- /dev/null
+#
+Reported: Tue Aug 23 12:54:20 2011
+Subject: scaryBeet260
+Year/month of birth: 1999/10
+Sex: N
+CI type: 23
+Volume: 7
+Range: 10
+Discrimination: 6
--- /dev/null
+#
+Reported: Tue Jul 5 12:20:47 2011
+Subject: poshHarrison261
+Year/month of birth: 1999/09
+Sex: N
+CI type: 20
+Volume: 4
+Range: 9
+Discrimination: 6
--- /dev/null
+#
+Reported: Mon Jul 4 09:54:35 2011
+Subject: princeHarrison273
+Year/month of birth: 1995/03
+Sex: F
+CI type: 2
+Volume: 4
+Range: 4
+Discrimination: 2
--- /dev/null
+#
+Reported: Thu Sep 29 12:56:35 2011
+Subject: ringoCarrot289
+Year/month of birth: 1997/12
+Sex: F
+CI type: 17
+Volume: 5
+Range: 10
+Discrimination: 7
--- /dev/null
+#
+Reported: Fri Aug 19 13:12:34 2011
+Subject: scaryBeet297
+Year/month of birth: 1994/02
+Sex: F
+CI type: 3
+Volume: 1
+Range: 10
+Discrimination: 2
--- /dev/null
+#
+Reported: Mon Sep 12 16:22:47 2011
+Subject: poshBeatle303
+Year/month of birth: 1996/01
+Sex: F
+CI type: 21
+Volume: 7
+Range: 4
+Discrimination: 7
--- /dev/null
+#
+Reported: Thu May 26 14:56:52 2011
+Subject: beyonceJonas304
+Year/month of birth: 1995/11
+Sex: F
+CI type: 16
+Volume: 5
+Range: 4
+Discrimination: 5
--- /dev/null
+#
+Reported: Mon Aug 22 16:26:09 2011
+Subject: beyonceSpice307
+Year/month of birth: 1997/01
+Sex: N
+CI type: 20
+Volume: 8
+Range: 10
+Discrimination: 6
--- /dev/null
+#
+Reported: Sun May 1 14:41:09 2011
+Subject: ringoSpice318
+Year/month of birth: 1993/12
+Sex: M
+CI type: 25
+Volume: 2
+Range: 7
+Discrimination: 7
--- /dev/null
+#
+Reported: Wed Jun 29 15:46:50 2011
+Subject: madonnaBroccoli319
+Year/month of birth: 1999/06
+Sex: F
+CI type: 10
+Volume: 7
+Range: 8
+Discrimination: 7
--- /dev/null
+#
+Reported: Thu Sep 8 14:59:05 2011
+Subject: robynSpice324
+Year/month of birth: 1999/03
+Sex: F
+CI type: 10
+Volume: 3
+Range: 10
+Discrimination: 7
--- /dev/null
+#
+Reported: Tue Aug 30 08:22:33 2011
+Subject: princeSpice335
+Year/month of birth: 1991/04
+Sex: F
+CI type: 7
+Volume: 1
+Range: 6
+Discrimination: 6
--- /dev/null
+#
+Reported: Wed Sep 14 09:18:41 2011
+Subject: beyonceBeatle366
+Year/month of birth: 1999/10
+Sex: N
+CI type: 12
+Volume: 6
+Range: 7
+Discrimination: 6
--- /dev/null
+#
+Reported: Sun Aug 21 13:11:09 2011
+Subject: ringoMcCartney382
+Year/month of birth: 1997/08
+Sex: F
+CI type: 2
+Volume: 4
+Range: 5
+Discrimination:
--- /dev/null
+#
+Reported: Wed Sep 28 08:03:15 2011
+Subject: robynLennon383
+Year/month of birth: 1998/03
+Sex: N
+CI type: 4
+Volume: 6
+Range: 7
+Discrimination: 4
--- /dev/null
+#
+Reported: Fri Sep 2 09:48:10 2011
+Subject: babyBeet384
+Year/month of birth: 1996/04
+Sex: N
+CI type: 21
+Volume: 8
+Range: 8
+Discrimination: 9
--- /dev/null
+#
+Reported: Thu Sep 29 14:25:35 2011
+Subject: jayCarrot386
+Year/month of birth: 1991/11
+Sex: F
+CI type: 23
+Volume: 5
+Range: 8
+Discrimination: 5
--- /dev/null
+#
+Reported: Tue May 3 11:27:09 2011
+Subject: beyonceZ388
+Year/month of birth: 1991/08
+Sex: N
+CI type: 24
+Volume: 4
+Range: 5
+Discrimination: 3
--- /dev/null
+#
+Reported: Tue Jul 19 16:01:08 2011
+Subject: gingerMcCartney390
+Year/month of birth: 1997/07
+Sex: M
+CI type: 8
+Volume: 5
+Range: 4
+Discrimination: 2
--- /dev/null
+#
+Reported: Tue Sep 20 12:29:04 2011
+Subject: beyonceLennon396
+Year/month of birth: 1997/11
+Sex: N
+CI type: 25
+Volume: 5
+Range: 8
+Discrimination: 5
--- /dev/null
+#
+Reported: Thu Sep 22 08:43:31 2011
+Subject: beyonceCarrot405
+Year/month of birth: 1999/05
+Sex: N
+CI type: 5
+Volume: 5
+Range: 8
+Discrimination: 3
--- /dev/null
+#
+Reported: Sat May 14 08:52:25 2011
+Subject: ringoAsparagus406
+Year/month of birth: 1993/07
+Sex: F
+CI type: 1
+Volume: 6
+Range: 5
+Discrimination: 5
--- /dev/null
+#
+Reported: Sat Sep 3 14:40:34 2011
+Subject: gingerBeatle409
+Year/month of birth: 1999/02
+Sex: F
+CI type: 21
+Volume: 6
+Range: 10
+Discrimination: 8
--- /dev/null
+#
+Reported: Fri Jun 24 10:14:01 2011
+Subject: babyBackstreet413
+Year/month of birth: 1992/12
+Sex: F
+CI type: 15
+Volume: 4
+Range: 7
+Discrimination: 6
--- /dev/null
+#
+Reported: Tue Jun 14 13:22:45 2011
+Subject: scaryBackstreet433
+Year/month of birth: 1992/12
+Sex: F
+CI type: 22
+Volume: 7
+Range: 5
+Discrimination: 4
--- /dev/null
+# Example data file
+Reported: Wed Oct 12 10:22:55 2011
+Subject: appaloosa123
+Year/month of birth: 1994/12
+Sex: M # options are 'MFN', where 'N' is "not given"
+CI type: 4 # integer in the range 1..25
+Volume: 3
+Range: 7
+Discrimination: 2
--- /dev/null
+import sys
+import os
+import math
+from random import choice, randint, random
+import calendar
+
+class Person:
+ maxCI = 25
+ # teenagers are hereby declared to be between 11 and 20 years old
+ birthyears = range(1991,2000)
+ repeatFraction = 0.1
+
+ names = ['john', 'paul', 'george', 'ringo',\
+ 'baby','scary','posh','ginger','madonna',\
+ 'prince','robyn','beyonce','jay']
+ words =['Beatle','Spice','Backstreet','Sync','Jonas',\
+ 'Lennon','McCartney','Starr','Harrison','Z',\
+ 'Carrot','Broccoli','Asparagus','Beet']
+ CIs=range(1,maxCI+1)
+ birthmonths= range(1,13)
+ #ensure unique ids
+ serialNum=173
+ sexes=['M','F','N']
+
+ def age(self, curyr=2011, curmo=11):
+ return curyr+(1.*curmo-1.)/12. - self.birthyear - 1.*(self.birthmonth-1.)/12.
+
+ def __init__(self):
+ self.subject = choice(Person.names)+choice(Person.words)+ ('%03d' % Person.serialNum)
+ Person.serialNum = Person.serialNum + 1
+
+ self.birthyear = choice(Person.birthyears)
+ self.birthmonth = choice(Person.birthmonths)
+
+ self.sex = choice(Person.sexes)
+ age = self.age(2011,11)
+ self.CI = choice(Person.CIs)
+
+ # newer CIs have better volume, discrimination;
+ # range goes down with age. (say).
+
+ CInewness = (self.CI-1.)/(1.*max(Person.CIs))
+ # from oldest CI to newest, gain 2 volume pts:
+ self.trueVolume = randint(0,4)+randint(1,4)+round(2.*CInewness)
+
+ # from oldest CI to newest, gain 3 discrimination pts:
+ self.trueDiscrimination = randint(0,3)+randint(1,4)+round(3.*CInewness)
+
+ # 21-year-olds would lose 3 range points over 10 year olds (say)
+ self.trueRange = randint(0,4)+randint(1,6)+round((10.-(self.age()-11.))*3./10.)
+
+ # Most people don't repeat; those that do take the test 2-5 times
+ if (random() > Person.repeatFraction):
+ self.repeats = 1
+ else:
+ self.repeats=choice(range(2,6))
+
+
+from numpy import polyfit, array
+def test_peopleCorrelations():
+ testpeople = []
+ npeople = 4000
+ for pnum in xrange(1,npeople):
+ testpeople.append(Person())
+
+ data = [[p.age(), p.CI, p.trueVolume, p.trueRange, p.trueDiscrimination] for p in testpeople]
+ ages, cis, vols, ranges, discs = zip(*data)
+
+ CIVolParam, dummy = polyfit(cis, vols, 1)
+ CIRangeParam, dummy = polyfit(cis, ranges, 1)
+ CIDiscParam, dummy = polyfit(cis, discs, 1)
+
+ AgeVolParam, dummy = polyfit(ages, vols, 1)
+ AgeRangeParam, dummy = polyfit(ages, ranges, 1)
+ AgeDiscParam, dummy = polyfit(ages, discs, 1)
+
+ assert CIVolParam > 0.75*(2./25.) and CIVolParam < 1.25*(2./25.)
+ assert CIDiscParam > 0.75*(3./25.) and CIDiscParam < 1.25*(3./25.)
+ assert AgeRangeParam < 0.75*(-3./10.) and AgeRangeParam > 1.25*(-3./10.)
+
+ zeroTol = 0.03
+ assert abs(CIRangeParam) < zeroTol
+ assert abs(AgeVolParam) < zeroTol
+ assert abs(AgeDiscParam) < zeroTol
+
+
+
+class Measurement:
+ incompleteFraction = 0.05
+ serialNum = 211
+ def randomDate(self):
+ hrs = range(8,17)
+ mins = range(1,60)
+ secs = range(1,60)
+ months = range(5,10)
+
+ month = choice(months)
+ monthname = calendar.month_abbr[month]
+ day = choice(range(1,calendar.monthrange(2011, month)[1]))
+ dayname = calendar.day_abbr[calendar.weekday(2011, month, day)]
+ hr = choice(hrs)
+ min = choice(mins)
+ sec = choice(secs)
+
+ datestring = '%s %s %d %02d:%02d:%02d %s' % (dayname, monthname, day, hr, min, sec, '2011')
+ return [datestring, month, day, hr, min, sec]
+
+ def limit(self,n):
+ if n < 1 :
+ n = 1
+ if n > 10 :
+ n = 10
+ return n
+
+ def __init__(self, p):
+ """Generate a result"""
+ self.person = p
+ self.datestring, self.month, self.day, self.hr, self.min, self.sec = self.randomDate();
+
+ self.serialNum = Measurement.serialNum
+ Measurement.serialNum = Measurement.serialNum + 1
+
+ # +/- 1 random measurement error
+ self.volume = self.person.trueVolume + choice([-1,0,0,0,+1])
+ self.range = self.person.trueRange + choice([-1,0,0,0,+1])
+ self.discrimination = self.person.trueDiscrimination + choice([-1,0,0,0,+1])
+
+ self.volume = self.limit(self.volume)
+ self.range = self.limit(self.range)
+ self.discrimination = self.limit(self.discrimination)
+
+ # before this date, things were being recorded 0..9 rather than 1..10
+ fixmonth = 8
+ fixday = 18
+ fixhr = 10
+
+ fixdate = fixmonth*10000 + fixday*100 + fixhr
+ checkdate = self.month*10000 + self.day*100 + self.hr
+ if checkdate < fixdate:
+ self.volume = self.volume - 1
+ self.range = self.range - 1
+ self.discrimination = self.discrimination - 1
+
+ if (random() < Measurement.incompleteFraction):
+ self.discrimination = None
+
+
+ def __str__(self):
+ text = '# ' + '\n'
+ text += "%s: %s\n" % ( 'Reported', self.datestring )
+ text += "%s: %s\n" % ( 'Subject', self.person.subject )
+ text += "%s: %4d/%02d\n" % ( 'Year/month of birth', self.person.birthyear, self.person.birthmonth )
+ text += "%s: %s\n" % ( 'Sex', self.person.sex )
+ text += "%s: %d\n" % ( 'CI type', self.person.CI )
+ text += "%s: %d\n" % ( 'Volume', self.volume )
+ text += "%s: %d\n" % ( 'Range', self.range )
+ if self.discrimination is None :
+ text += "%s: \n" % ( 'Discrimination' )
+ else:
+ text += "%s: %d\n" % ( 'Discrimination', self.discrimination )
+
+ return text
+
+class Datataker:
+ names = ['angela', 'JamesD', 'jamesm', 'Frank_Richard',\
+ 'lab183','THOMAS','alexander','Beth','Lawrence',\
+ 'Toni', 'gerdal', 'Bert', 'Ernie', 'olivia', 'Leandra',\
+ 'sonya_p', 'h_jackson']
+ filenamestyles = ['data_%d','Data%04d','%d','%04d','audioresult-%05d']
+ suffixstyles = ['.dat','.txt','','','.DATA']
+ tookNotesFraction = 0.5
+ notes = ['Took data on Thursday and Friday until 4pm;\nAll day saturday.\n',\
+ 'Contact Janice about new calibration for data in August.\n',\
+ 'Submission of hours last week shows only 7 hours because \none was spent cleaning the lab.\n',\
+ 'Had some trouble accessing data submission form on Saturday,\nso fewer submissions then.\n',\
+ 'Third subject had real problems with the discrimiation test, so omitted.\n',\
+ 'Discrimination test seems kind of flaky - had to skip in several cases\n',\
+ 'Fuse blew midway through this weeks data taking,\nfewer results than last week.\n']
+ notefilenames = ['notes.txt','NOTES','ReadMe','misc.txt','About']
+
+ def __init__(self):
+ self.name = choice(Datataker.names)
+ Datataker.names.remove(self.name)
+ self.filenameprefix = choice(Datataker.filenamestyles)
+ self.filenamesuffix = choice(Datataker.suffixstyles)
+ self.measures = []
+ self.tookNotes = False
+ if (random() < Datataker.tookNotesFraction) :
+ self.tookNotes = True
+ self.notes = choice(Datataker.notes)
+ self.noteFilename = choice(Datataker.notefilenames)
+
+ def addmeasurement(self,measurement):
+ self.measures.append(measurement)
+
+ def write(self):
+ os.mkdir(self.name)
+ os.chdir(self.name)
+
+ if (self.tookNotes):
+ fname = self.noteFilename
+ file = open(fname, 'w')
+ file.write(self.notes)
+ file.close()
+
+ for m in self.measures:
+ fname = self.filenameprefix % m.serialNum + self.filenamesuffix
+ file = open(fname, 'w')
+ file.write(str(m))
+ file.close()
+ os.chdir('..')
+
+
+def main():
+ #test_peopleCorrelations()
+
+ npeople = 300 # should generate ~ .9*300 + 3.5*.1*300 ~ 375 files
+ nfiles = 351
+
+ people = []
+ for pnum in range(npeople):
+ people.append(Person())
+
+ measurements = []
+ for p in people:
+ for m in range(p.repeats):
+ measurements.append(Measurement(p))
+
+ nexperimenters = 7
+ experimenters = []
+ for i in range(nexperimenters):
+ experimenters.append(Datataker())
+
+ for fnum in xrange(min(len(measurements), nfiles)):
+ ex = choice(experimenters)
+ ex.addmeasurement(measurements[fnum])
+
+ os.mkdir('data')
+ os.chdir('data')
+ for ex in experimenters:
+ ex.write()
+ os.chdir('..')
+
+if __name__=='__main__':
+ sys.exit(main())
+
+++ /dev/null
-# The Shell
-
-**Material by Paul Wilson, Milad Fatenejad, Sasha Wood, and Radhika Khetani**
-
-# What is the shell? How do I access the shell?
-
-The *shell* is a program that presents a command line interface
-which allows you to control your computer using commands entered
-with a keyboard instead of controlling graphical user interfaces
-(GUIs) with a mouse/keyboard combination.
-
-Use a browser to open the tutorial on github, located at:
-
- https://github.com/USERNAME/boot-camps/tree/YYYY-MM-PLACE
-
-Click on the directory named `shell`.
-
-A *terminal* is a program you run that gives you access to the
-shell. There are many different terminal programs that vary across
-operating systems.
-
-There are many reasons to learn about the shell. In my opinion, the
-most important reasons are that:
-
-1. It is very common to encounter the shell and
- command-line-interfaces in scientific computing, so you will
- probably have to learn it eventually
-
-2. The shell is a really powerful way of interacting with your
- computer. GUIs and the shell are complementary - by knowing both
- you will greatly expand the range of tasks you can accomplish with
- your computer. You will also be able to perform many tasks more
- efficiently.
-
-The shell is just a program and there are many different shell
-programs that have been developed. The most common shell (and the one
-we will use) is called the Bourne-Again SHell (bash). Even if bash is
-not the default shell, it is usually installed on most systems and can be
-started by typing `bash` in the terminal. Many commands, especially a
-lot of the basic ones, work across the various shells but many things
-are different. I recommend sticking with bash and learning it well.
-([Here is a link for more information](http://en.wikipedia.org/wiki/Bash_(Unix_shell))
-
-To open a terminal, just single click on the "Terminal" icon on the
-Desktop.
-
-# The Example: Manipulating Experimental Data Files
-
-We will spend most of our time learning about the basics of the shell
-by manipulating some experimental data from a hearing test. To get
-the data for this test, you will need internet access. Just enter the
-command:
-
- git clone -b YYYY-MM-PLACE --single-branch git://github.com/swcarpentry/boot-camps.git
-
-This command will grab all of the data needed for this workshop from
-the internet. (We will talk about the `git` command later in the
-workshop.)
-
-# Let's get started
-
-One very basic command is `echo`. This command just prints text to
-the terminal. Try the command:
-
- echo Hello, World
-
-Then press enter. You should see the text "Hello, World" printed back
-to you. The echo command is useful for printing from a shell script,
-for displaying variables, and for generating known values to pass
-to other programs.
-
-## Moving around the file system
-
-Let's learn how to move around the file system using command line
-programs. This is really easy to do using a GUI (just click on
-things). Once you learn the basic commands, you'll see that it is
-really easy to do in the shell too.
-
-First we have to know where we are. The program `pwd` (print working
-directory) tells you where you are sitting in the directory tree. The
-command `ls` will list the files in files in the current
-directory. Directories are often called "folders" because of how they
-are represented in GUIs. Directories are just listings of files. They
-can contain other files or directories.
-
-Whenever you start up a terminal, you will start in a special
-directory called the *home* directory. Every user has their own home
-directory where they have full access to do whatever they want. In
-this case, the `pwd` command tells us that we are in the `/home/swc`
-directory. This is the home directory for the `swc` user. That is our
-user name. You can always find out your user name by entering the
-command `whoami`.
-
-## File Types
-
-When you enter the `ls` command lists the contents of the current
-directory. There are several items in the home directory, notice that
-they are all colored blue. This tells us that all of these items are
-directories as opposed to files.
-
-Lets create an empty file using the `touch` command. Enter the
-command:
-
- touch testfile
-
-Then list the contents of the directory again. You should see that a
-new entry, called `testfile`, exists. It is colored white meaning that
-it is a file, as opposed to a directory. The `touch` command just
-creates an empty file.
-
-Some terminals will not color the directory entries in this very
-convenient way. In those terminals, use `ls -F` instead of `ls`. The
-`-F` argument modifies the results so that a slash is placed at the
-end of directories. If the file is *executable* meaning that it can be
-run like a program, then a star will be placed at the end of of the
-file name.
-
-You can also use the command `ls -l` to see whether items in a
-directory are files or directories. `ls -l` gives a lot more
-information too, such as the size of the file and information about
-the owner. If the entry is a directory, then the first letter will be
-a "d". The fifth column shows you the size of the entries in
-bytes. Notice that `testfile` has a size of zero.
-
-Now, let's get rid of `testfile`. To remove a file, just enter the
-command:
-
- rm testfile
-
-The `rm` command can be used to remove files. If you enter `ls` again,
-you will see that `testfile` is gone.
-
-
-## Changing Directories
-
-Now, let's move to a different directory. The command `cd` (change
-directory) is used to move around. Let's move into the `boot-camps`
-directory. Enter the following command:
-
- cd boot-camps
-
-Use the `ls` command to see what is inside this directory. This
-directory contains all of the material for this boot camp. Now move to
-the directory containing the data for the shell tutorial:
-
- cd shell
-
-Now use the `ls` command to see what is inside this directory. You
-will see that there is an entry which is green. This means that this
-is an executable. If you use `ls -F` you will see that this file ends
-with a star.
-
-If you enter the `cd` command by itself, you will return to the home
-directory. Try this, and then navigate back to the `shell`
-directory.
-
-## Arguments
-
-Most programs take additional arguments that control their exact
-behavior. For example, `-F` and `-l` are arguments to `ls`. The `ls`
-program, like many programs, take a lot of arguments. But how do we
-know what the options are to particular commands?
-
-Most commonly used shell programs have a manual. You can access the
-manual using the `man` program. Try entering:
-
- man ls
-
-This will open the manual page for `ls`. Use the space key to go
-forward and b to go backwards. When you are done reading, just hit `q`
-to quit.
-
-Programs that are run from the shell can get extremely complicated. To
-see an example, open up the manual page for the `find` program,
-which we will use later this session. No one can possibly learn all of
-these arguments, of course. So you will probably find yourself
-referring back to the manual page frequently.
-
-* * * *
-**Short Exercise**
-
-1. Use the manual page for `ls` to guess what you would expect from
-using the arguments `-l`, '-t', '-r' at the same time.
-2. Try the following and see if you can figure out what they do, either by examining the results or consulting the manual page.
- * `ls -lS` (equivalent to `ls -l -S`)
- * `ls -lt` (equivalent to `ls -l -t`)
- * `ls -1` (that's the number one, not a letter 'ell')
-
-* * * *
-
-
-## Examining the contents of other directories
-
-By default, the `ls` commands lists the contents of the working
-directory (i.e. the directory you are in). You can always find the
-directory you are in using the `pwd` command. However, you can also
-give `ls` the names of other directories to view. Navigate to the
-home directory if you are not already there. Then enter the
-command:
-
- ls boot-camps
-
-This will list the contents of the `boot-camps` directory without
-you having to navigate there. Now enter:
-
- ls boot-camps/shell
-
-This prints the contents of `shell`. The `cd` command works in a
-similar way. Try entering:
-
- cd boot-camps/shell
-
-and you will jump directly to `shell` without having to go through
-the intermediate directory.
-
-## Full vs. Relative Paths
-
-The `cd` command takes an argument which is the directory
-name. Directories can be specified using either a *relative* path a
-full *path*. The directories on the computer are arranged into a
-hierarchy. The full path tells you where a directory is in that
-hierarchy. Navigate to the home directory. Now, enter the `pwd`
-command and you should see:
-
- /home/swc
-
-which is the full name of your home directory. This tells you that you
-are in a directory called `swc`, which sits inside a directory called
-`home` which sits inside the very top directory in the hierarchy. The
-very top of the hierarchy is a directory called `/` which is usually
-referred to as the *root directory*. So, to summarize: `swc` is a
-directory in `home` which is a directory in `/`.
-
-Now enter the following command:
-
- cd /home/swc/boot-camps/shell
-
-This jumps to `shell`. Now go back to the home directory. We saw
-earlier that the command:
-
- cd boot-camps/shell
-
-had the same effect - it took us to the `shell` directory. But,
-instead of specifying the full path
-(`/home/swc/boot-camps/shell`), we specified a *relative path*. In
-other words, we specified the path relative to our current
-directory. A full path always starts with a `/`. A relative path does
-not. You can usually use either a full path or a relative path
-depending on what is most convenient. If we are in the home directory,
-it is more convenient to just enter the relative path since it
-involves less typing.
-
-Over time, it will become easier for you to keep a mental note of the
-structure of the directories that you are using hand how to quickly
-navigate amongst them.
-
-* * * *
-**Short Exercise**
-
-Now, list the contents of the /bin directory. Do you see anything
-familiar in there?
-
-* * * *
-
-## Saving time with shortcuts, wild cards, and tab completion
-
-### Shortcuts
-
-There are some shortcuts which you should know about. Dealing with the
-home directory is very common. So, in the shell the tilde character,
-`~`, is a shortcut for your home directory. Navigate to the `shell`
-directory, then enter the command:
-
- ls ~
-
-This prints the contents of your home directory, without you having to
-type the full path. The shortcut `..` always refers to the directory
-above your current directory. Thus:
-
- ls ..
-
-prints the contents of the `/home/swc/boot-camps`. You can chain
-these together, so:
-
- ls ../../
-
-prints the contents of `/home/swc` which is your home
-directory. Finally, the special directory `.` always refers to your
-current directory. So, `ls`, `ls .`, and `ls ././././.` all do the
-same thing, they print the contents of the current directory. This may
-seem like a useless shortcut right now, but we'll see when it is
-needed in a little while.
-
-To summarize, while you are in the `shell` directory, the commands
-`ls ~`, `ls ~/.`, `ls ../../`, and `ls /home/swc` all do exactly the
-same thing. These shortcuts are not necessary, they are provided for
-your convenience.
-
-### Our data set: Cochlear Implants
-
-A cochlear implant is a small electronic device that is surgically
-implanted in the inner ear to give deaf people a sense of
-hearing. More than a quarter of a million people have them, but there
-is still no widely-accepted benchmark to measure their effectiveness.
-In order to establish a baseline for such a benchmark, our supervisor
-got teenagers with CIs to listen to audio files on their computer and
-report:
-
-1. the quietest sound they could hear
-2. the lowest and highest tones they could hear
-3. the narrowest range of frequencies they could discriminate
-
-To participate, subjects attended our laboratory and one of our lab
-techs played an audio sample, and recorded their data - when they
-first heard the sound, or first heard a difference in the sound. Each
-set of test results were written out to a text file, one set per file.
-Each participant has a unique subject ID, and a made-up subject name.
-Each experiment has a unique experiment ID. The experiment has
-collected 351 files so far.
-
-The data is a bit of a mess! There are inconsistent file names, there
-are extraneous "NOTES" files that we'd like to get rid of, and the
-data is spread across many directories. We are going to use shell
-commands to get this data into shape. By the end we would like to:
-
-1. Put all of the data into one directory called "alldata"
-
-2. Have all of the data files in there, and ensure that every file
- has a ".txt" extension
-
-3. Get rid of the extraneous "NOTES" files
-
-If we can get through this example in the available time, we will move
-onto more advanced shell topics...
-
-### Wild cards
-
-Navigate to the `~/boot-camps/shell/data/THOMAS` directory. This
-directory contains our hearing test data for THOMAS. If we type `ls`,
-we will see that there are a bunch of files which are just four digit
-numbers. By default, `ls` lists all of the files in a given
-directory. The `*` character is a shortcut for "everything". Thus, if
-you enter `ls *`, you will see all of the contents of a given
-directory. Now try this command:
-
- ls *1
-
-This lists every file that ends with a `1`. This command:
-
- ls /usr/bin/*.sh
-
-Lists every file in `/usr/bin` that ends in the characters `.sh`. And
-this command:
-
- ls *4*1
-
-lists every file in the current directory whose name contains the
-number `4`, and ends with the number `1`. There are four such files:
-`0241`, `0341`, `0431`, and `0481`.
-
-So how does this actually work? Well...when the shell (bash) sees a
-word that contains the `*` character, it automatically looks for filenames
-that match the given pattern. In this case, it identified four such
-files. Then, it replaced the `*4*1` with the list of files, separated
-by spaces. In other words, the two commands:
-
- ls *4*1
- ls 0241 0341 0431 0481
-
-are exactly identical. The `ls` command cannot tell the difference
-between these two things.
-
-* * * *
-**Short Exercise**
-
-Do each of the following using a single `ls` command without
-navigating to a different directory.
-
-1. List all of the files in `/bin` that contain the letter `a`
-2. List all of the files in `/bin` that contain the letter `a` or the letter `b`
-3. List all of the files in `/bin` that contain the letter `a` AND the letter `b`
-
-* * * *
-
-### Tab Completion
-
-Navigate to the home directory. Typing out directory names can waste a
-lot of time. When you start typing out the name of a directory, then
-hit the tab key, the shell will try to fill in the rest of the
-directory name. For example, enter:
-
- cd b<tab>
-
-The shell will fill in the rest of the directory name for
-`boot-camps`. Now enter:
-
- ls s<tab><tab>
-
-When you hit the first tab, nothing happens. The reason is that there
-are multiple directories in the home directory which start with
-`s`. Thus, the shell does not know which one to fill in. When you hit
-tab again, the shell will list the possible choices.
-
-Tab completion can also fill in the names of programs. For example,
-enter `e<tab><tab>`. You will see the name of every program that
-starts with an `e`. One of those is `echo`. If you enter `ec<tab>` you
-will see that tab completion works.
-
-## Command History
-
-You can easily access previous commands. Hit the up arrow.
-Hit it again. You can step backwards through your command history.
-The down arrow takes your forwards in the command history.
-
-^-C will cancel the command you are writing, and give you a fresh prompt.
-
-^-R will do a reverse-search through your command history. This
-is very useful.
-
-You can also review your recent commands with the `history` command. Just enter:
-
- history
-
-to see a numbered list of recent commands, including this just issues
-`history` command. You can reuse one of these commands directly by
-referring to the number of that command.
-
-If your history looked like this:
-
- 259 ls *!
- 260 ls /usr/bin/*.sh
- 261 ls *4*1
-
-then you could repeat command #260 by simply entering:
-
- !260
-
-(that's an exclamation mark).
-
-* * * *
-**Short Exercise**
-
-1. Find the line number in your history for the last exercise (listing
-files in /bin) and reissue that command.
-
-* * * *
-
-## Which program?
-
-Commands like `ls`, `rm`, `echo`, and `cd` are just ordinary programs
-on the computer. A program is just a file that you can *execute*. The
-program `which` tells you the location of a particular program. For
-example:
-
- which ls
-
-Will return "/bin/ls". Thus, we can see that `ls` is a program that
-sits inside of the `/bin` directory. Now enter:
-
- which find
-
-You will see that `find` is a program that sits inside of the
-`/usr/bin` directory.
-
-So ... when we enter a program name, like `ls`, and hit enter, how
-does the shell know where to look for that program? How does it know
-to run `/bin/ls` when we enter `ls`. The answer is that when we enter
-a program name and hit enter, there are a few standard places that the
-shell automatically looks. If it can't find the program in any of
-those places, it will print an error saying "command not found". Enter
-the command:
-
- echo $PATH
-
-This will print out the value of the `PATH` environment variable. More
-on environment variables later. Notice that a list of directories,
-separated by colon characters, is listed. These are the places the
-shell looks for programs to run. If your program is not in this list,
-then an error is printed. The shell ONLY checks in the places listed
-in the `PATH` environment variable.
-
-Navigate to the `shell` directory and list the contents. You will
-notice that there is a program (executable file) called `hello` in
-this directory. Now, try to run the program by entering:
-
- hello
-
-You should get an error saying that hello cannot be found. That is
-because the directory `/home/swc/boot-camps/shell` is not in the
-`PATH`. You can run the `hello` program by entering:
-
- ./hello
-
-Remember that `.` is a shortcut for the current working
-directory. This tells the shell to run the `hello` program which is
-located right here. So, you can run any program by entering the path
-to that program. You can run `hello` equally well by specifying:
-
- /home/swc/boot-camps/shell/hello
-
-Or by entering:
-
- ../shell/hello
-
-When there are no `/` characters, the shell assumes you want to look
-in one of the default places for the program.
-
-
-## Examining Files
-
-We now know how to switch directories, run programs, and look at the
-contents of directories, but how do we look at the contents of files?
-
-The easiest way to examine a file is to just print out all of the
-contents using the program `cat`. Enter the following command:
-
- cat ex_data.txt
-
-This prints out the contents of the `ex_data.txt` file. If you enter:
-
- cat ex_data.txt ex_data.txt
-
-It will print out the contents of `ex_data.txt` twice. `cat` just
-takes a list of file names and writes them out one after another (this
-is where the name comes from, `cat` is short for concatenate).
-
-* * * *
-**Short Exercises**
-
-1. Print out the contents of the `~/boot-camps/shell/dictionary.txt`
- file. What does this file contain?
-
-2. Without changing directories, (you should still be in `shell`),
- use one short command to print the contents of all of the files in
- the `/home/swc/boot-camps/shell/data/THOMAS` directory.
-
-* * * *
-
-`cat` is a terrific program, but when the file is really big, it can
-be annoying to use. The program, `less`, is useful for this
-case. Enter the following command:
-
- less ~/boot-camps/shell/dictionary.txt
-
-`less` opens the file, and lets you navigate through it. The commands
-are identical to the `man` program.
-
-**Some commands in `less`**
-
-| key | action |
-| ------- | ---------- |
-| "space" | to go forward |
-| "b" | to go backwarsd |
-| "g" | to go to the beginning |
-| "G" | to go to the end |
-| "q" | to quit |
-
-`less` also gives you a way of searching through files. Just hit the
-"/" key to begin a search. Enter the name of the word you would like
-to search for and hit enter. It will jump to the next location where
-that word is found. Try searching the `dictionary.txt` file for the
-word "cat". If you hit "/" then "enter", `less` will just repeat
-the previous search. `less` searches from the current location and
-works its way forward. If you are at the end of the file and search
-for the word "cat", `less` will not find it. You need to go to the
-beginning of the file and search.
-
-Remember, the `man` program actually uses `less` internally and
-therefore uses the same commands, so you can search documentation
-using "/" as well!
-
-* * * *
-**Short Exercise**
-
-Use the commands we've learned so far to figure out how to search
-in reverse while using `less`.
-
-* * * *
-
-
-## Redirection
-
-Let's turn to the experimental data from the hearing tests that we
-began with. This data is located in the `~/boot-camps/shell/data`
-directory. Each subdirectory corresponds to a particular participant
-in the study. Navigate to the `Bert` subdirectory in `data`. There
-are a bunch of text files which contain experimental data
-results. Lets print them all:
-
- cat au*
-
-Now enter the following command:
-
- cat au* > ../all_data
-
-This tells the shell to take the output from the `cat au*` command and
-dump it into a new file called `../all_data`. To verify that this
-worked, examine the `all_data` file. If `all_data` had already
-existed, we would overwritten it. So the `>` character tells the shell
-to take the output from what ever is on the left and dump it into the
-file on the right. The `>>` characters do almost the same thing,
-except that they will append the output to the file if it already
-exists.
-
-* * * *
-**Short Exercise**
-
-Use `>>`, to append the contents of all of the files whose names
-contain the number 4 in the directory:
-
- /home/swc/boot-camps/shell/data/gerdal
-
-to the existing `all_data` file. Thus, when you are done `all_data`
-should contain all of the experiment data from Bert and any
-experimental data file from gerdal with filenames that contain the
-number 4.
-
-* * * *
-
-
-## Creating, moving, copying, and removing
-
-We've created a file called `all_data` using the redirection operator
-`>`. This file is critical - it's our analysis results - so we want to
-make copies so that the data is backed up.
-Lets copy the file using the `cp` command. The `cp`
-command backs up the file. Navigate to the `data` directory and enter:
-
- cp all_data all_data_backup
-
-Now `all_data_backup` has been created as a copy of `all_data`. We can
-move files around using the command `mv`. Enter this command:
-
- mv all_data_backup /tmp/
-
-This moves `all_data_backup` into the directory `/tmp`. The directory
-`/tmp` is a special directory that all users can write to. It is a
-temporary place for storing files. Data stored in `/tmp` is
-automatically deleted when the computer shuts down.
-
-The `mv` command is also how you rename files. Since this file is so
-important, let's rename it:
-
- mv all_data all_data_IMPORTANT
-
-Now the file name has been changed to all_data_IMPORTANT. Let's delete
-the backup file now:
-
- rm /tmp/all_data_backup
-
-The `mkdir` command is used to make a directory. Just enter `mkdir`
-followed by a space, then the directory name.
-
-* * * *
-**Short Exercise**
-
-Do the following:
-
-1. Rename the `all_data_IMPORTANT` file to `all_data`.
-2. Create a directory in the `data` directory called `foo`
-3. Then, copy the `all_data` file into `foo`
-
-* * * *
-
-By default, `rm`, will NOT delete directories. You can tell `rm` to
-delete a directory using the `-r` option. Enter the following command:
-
- rm -r foo
-
-
-## Count the words
-
-The `wc` program (word count) counts the number of lines, words, and
-characters in one or more files. Make sure you are in the `data`
-directory, then enter the following command:
-
- wc Bert/* gerdal/*4*
-
-For each of the files indicated, `wc` has printed a line with three
-numbers. The first is the number of lines in that file. The second is
-the number of words. Finally, the total number of characters is
-indicated. The final line contains this information summed over all of
-the files. Thus, there were 10445 characters in total.
-
-Remember that the `Bert/*` and `gerdal/*4*` files were merged
-into the `all_data` file. So, we should see that `all_data` contains
-the same number of characters:
-
- wc all_data
-
-Every character in the file takes up one byte of disk space. Thus, the
-size of the file in bytes should also be 10445. Let's confirm this:
-
- ls -l all_data
-
-Remember that `ls -l` prints out detailed information about a file and
-that the fifth column is the size of the file in bytes.
-
-* * * *
-**Short Exercise**
-
-Figure out how to get `wc` to print the length of the longest line in
-`all_data`.
-
-* * * *
-
-## The awesome power of the Pipe
-
-Suppose I wanted to only see the total number of character, words, and
-lines across the files `Bert/*` and `gerdal/*4*`. I don't want to
-see the individual counts, just the total. Of course, I could just do:
-
- wc all_data
-
-Since this file is a concatenation of the smaller files. Sure, this
-works, but I had to create the `all_data` file to do this. Thus, I
-have wasted a precious 10445 bytes of hard disk space. We can do this
-*without* creating a temporary file, but first I have to show you two
-more commands: `head` and `tail`. These commands print the first few,
-or last few, lines of a file, respectively. Try them out on
-`all_data`:
-
- head all_data
- tail all_data
-
-The `-n` option to either of these commands can be used to print the
-first or last `n` lines of a file. To print the first/last line of the
-file use:
-
- head -n 1 all_data
- tail -n 1 all_data
-
-Let's turn back to the problem of printing only the total number of
-lines in a set of files without creating any temporary files. To do
-this, we want to tell the shell to take the output of the `wc Bert/*
-gerdal/*4*` and send it into the `tail -n 1` command. The `|`
-character (called pipe) is used for this purpose. Enter the following
-command:
-
- wc Bert/* gerdal/Data0559 | tail -n 1
-
-This will print only the total number of lines, characters, and words
-across all of these files. What is happening here? Well, `tail`, like
-many command line programs will read from the *standard input* when it
-is not given any files to operate on. In this case, it will just sit
-there waiting for input. That input can come from the user's keyboard
-*or from another program*. Try this:
-
- tail -n 2
-
-Notice that your cursor just sits there blinking. Tail is waiting for
-data to come in. Now type:
-
- French
- fries
- are
- good
-
-then CONTROL+d. You should is the lines:
-
- are
- good
-
-printed back at you. The CONTROL+d keyboard shortcut inserts an
-*end-of-file* character. It is sort of the standard way of telling the
-program "I'm done entering data". The `|` character is replaces the
-data from the keyboard with data from another command. You can string
-all sorts of commands together using the pipe.
-
-The philosophy behind these command line programs is that none of them
-really do anything all that impressive. BUT when you start chaining
-them together, you can do some really powerful things really
-efficiently. If you want to be proficient at using the shell, you must
-learn to become proficient with the pipe and redirection operators:
-`|`, `>`, `>>`.
-
-
-### A sorting example
-
-Let's create a file with some words to sort for the next example. We
-want to create a file which contains the following names:
-
- Bob
- Alice
- Diane
- Charles
-
-To do this, we need a program which allows us to create text
-files. There are many such programs, the easiest one which is
-installed on almost all systems is called `nano`. Navigate to `/tmp`
-and enter the following command:
-
- nano toBeSorted
-
-Now enter the four names as shown above. When you are done, press
-CONTROL+O to write out the file. Press enter to use the file name
-`toBeSorted`. Then press CONTROL+x to exit `nano`.
-
-When you are back to the command line, enter the command:
-
- sort toBeSorted
-
-Notice that the names are now printed in alphabetical order.
-
-* * * *
-**Short Exercise**
-
-Use the `echo` command and the append operator, `>>`, to append your
-name to the file, then sort it and make a new file called Sorted.
-
-* * * *
-
-Let's navigate back to `~/boot-camps/shell/data`. Enter the following command:
-
- wc Bert/* | sort -k 3 -n
-
-We are already familiar with what the first of these two commands
-does: it creates a list containing the number of characters, words,
-and lines in each file in the `Bert` directory. This list is then
-piped into the `sort` command, so that it can be sorted. Notice there
-are two options given to sort:
-
-1. `-k 3`: Sort based on the third column
-2. `-n`: Sort in numerical order as opposed to alphabetical order
-
-Notice that the files are sorted by the number of characters.
-
-* * * *
-**Short Exercise**
-
-1. Use the `man` command to find out how to sort the output from `wc` in
-reverse order.
-
-2. Combine the `wc`, `sort`, `head` and `tail` commands so that only the
-`wc` information for the largest file is listed
-
-Hint: To print the smallest file, use:
-
- wc Bert/* | sort -k 3 -n | head -n 1
-
-* * * *
-
-Printing the smallest file seems pretty useful. We don't want to type
-out that long command often. Let's create a simple script, a simple
-program, to run this command. The program will look at all of the
-files in the current directory and print the information about the
-smallest one. Let's call the script `smallest`. We'll use `nano` to
-create this file. Navigate to the `data` directory, then:
-
- nano smallest
-
-Then enter the following text:
-
- #!/bin/bash
- wc * | sort -k 3 -n | head -n 1
-
-Now, `cd` into the `Bert` directory and enter the command
-`../smallest`. Notice that it says permission denied. This happens
-because we haven't told the shell that this is an executable
-file. If you do `ls -l ../smallest`, it will show you the permissions on
-the left of the listing.
-
-Enter the following commands:
-
- chmod a+x ../smallest
- ../smallest
-
-The `chmod` command is used to modify the permissions of a file. This
-particular command modifies the file `../smallest` by giving all users
-(notice the `a`) permission to execute (notice the `x`) the file. If
-you enter:
-
- ls -l ../smallest
-
-You will see that the file name is green and the permissions have changed.
-Congratulations, you just created your first shell script!
-
-# Searching files
-
-You can search the contents of a file using the command `grep`. The
-`grep` program is very powerful and useful especially when combined
-with other commands by using the pipe. Navigate to the `Bert`
-directory. Every data file in this directory has a line which says
-"Range". The range represents the smallest frequency range that can be
-discriminated. Lets list all of the ranges from the tests that Bert
-conducted:
-
- grep Range *
-
-* * * *
-**Short Exercise**
-
-Create an executable script called `smallestrange` in the `data`
-directory, that is similar to the `smallest` script, but prints the
-file containing the file with the smallest Range. Use the commands
-`grep`, `sort`, and `tail` to do this.
-
-* * * *
-
-
-# Finding files
-
-The `find` program can be used to find files based on arbitrary
-criteria. Navigate to the `data` directory and enter the following
-command:
-
- find . -print
-
-This prints the name of every file or directory, recursively, starting
-from the current directory. Let's exclude all of the directories:
-
- find . -type f -print
-
-This tells `find` to locate only files. Now try these commands:
-
- find . -type f -name "*1*"
- find . -type f -name "*1*" -or -name "*2*" -print
- find . -type f -name "*1*" -and -name "*2*" -print
-
-The `find` command can acquire a list of files and perform some
-operation on each file. Try this command out:
-
- find . -type f -exec grep Volume {} \;
-
-This command finds every file starting from `.`. Then it searches each
-file for a line which contains the word "Volume". The `{}` refers to
-the name of each file. The trailing `\;` is used to terminate the
-command. This command is slow, because it is calling a new instance
-of `grep` for each item the `find` returns.
-
-A faster way to do this is to use the `xargs` command:
-
- find . -type f -print | xargs grep Volume
-
-`find` generates a list of all the files we are interested in,
-then we pipe them to `xargs`. `xargs` takes the items given to it
-and passes them as arguments to `grep`. `xargs` generally only creates
-a single instance of `grep` (or whatever program it is running).
-
-* * * *
-**Short Exercise**
-
-Navigate to the `data` directory. Use one `find` command to perform each
-of the operations listed below (except number 2, which does not
-require a `find` command):
-
-1. Find any file whose name is "NOTES" within `data` and delete it
-
-2. Create a new directory called `cleaneddata`
-
-3. Move all of the files within `data` to the `cleaneddata` directory
-
-4. Rename all of the files to ensure that they end in `.txt` (note:
- it is ok for the file name to end in `.txt.txt`
-
-Hint: If you make a mistake and need to start over just do the
-following:
-
-1. Navigate to the `shell` directory
-
-2. Delete the `data` directory
-
-3. Enter the command: `git checkout -- data` You should see that the
- data directory has reappeared in its original state
-
-**BONUS**
-
-Redo exercise 4, except rename only the files which do not already end
-in `.txt`. You will have to use the `man` command to figure out how to
-search for files which do not match a certain name.
-
-* * * *
-
-
-
-## Bonus:
-
-**backtick, xargs**: Example find all files with certain text
-
-**alias** -> rm -i
-
-**variables** -> use a path example
-
-**.bashrc**
-
-**du**
-
-**ln**
-
-**ssh and scp**
-
-**Regular Expressions**
-
-**Permissions**
-
-**Chaining commands together**
+++ /dev/null
-#!/bin/bash
-
-echo "Hello, World"
+++ /dev/null
-# Basic Shell Commands
-***
-
-## 1. Shell Basics:
-
-| Command | Definition |
-|----------------|----------------------------------------------------------------------------------------------------------------|
-| `.` | a single period refers to the current directory |
-| `..` | a double period refers to the directory immediately above the current directory |
-| `~` | refers to your home directory. _Note:_ this command does NOT work on Windows machines (Mac and Linux are okay) |
-| `cd ./dirname` | changes the current directory to the directory `dirname` |
-| `ls -F` | tells you what files and directories are in the current directory |
-| `pwd` | tells you what directory you are in (`pwd` stands for *p*rint *w*orking *d*irectory) |
-| `history` | lists previous commands you have entered. `history | less` lets you page through the list. |
-| `man` *cmd* | displays the *man*ual page for a command. |
-
-
-
-## 2. Creating Things:
-### a) How to create new files and directories..
-
-| Command | Definition |
-|-------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `mkdir ./dirname` | makes a new directory called dirname below the current directory. _Note:_ Windows users will need to use `\` instead of `/` for the path separator |
-| `nano filename` | if `filename` does not exist, `nano` creates it and opens the `nano` text editor. If the file exists, `nano` opens it. _Note:_ _(i)_ You can use a different text editor if you like. In gnome Linux, `gedit` works really well too. _(ii)_ `nano` (or `gedit`) create text files. It doesn't matter what the file extension is (or if there is one) |
-
-### b) How to delete files and directories...
-#### _Remember that deleting is forever. There is NO going back_
-
-| Command | Definition |
-|-------------------|------------------------------------------------------------------------------------------------------------------|
-| `rm ./filename` | deletes a file called `filename` from the current directory |
-| `rmdir ./dirname` | deletes the directory `dirname` from the current directory. _Note:_ `dirname` must be empty for `rmdir` to run. |
-
-### c) How to copy and rename files and directories...
-
-| Command | Definition |
-|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `mv tmp/filename .` | moves the file `filename` from the directory `tmp` to the current directory. _Note:_ _(i)_ the original `filename` in `tmp` is deleted. _(ii)_ `mv` can also be used to rename files (e.g., `mv filename newname` |
-| `cp tmp/filename .` | copies the file `filename` from the directory `tmp` to the current directory. _Note:_ _(i)_ the original file is still there |
-
-
-
-## 3. Pipes and Filters
-### a) How to use wildcards to match filenames...
-Wildcards are a shell feature that makes the command line much more powerful than any GUI file managers.
-Wildcards are particularly useful when you are looking for directories, files, or file content that can
-vary along a given dimension. These wildcards can be used with any command that accepts file names or
-text strings as arguments.
-
-#### Table of commonly used wildcards
-
-| Wildcard | Matches |
-|------------------------|------------------------------------------------|
-| `*` | zero or more characters |
-| `?` | exactly one character |
-| `[abcde]` | exactly one of the characters listed |
-| `[a-e]` | exactly one character in the given range |
-| `[!abcde]` | any character not listed |
-| `[!a-e]` | any character that is not in the given range |
-| `{software,carpentry}` | exactly one entire word from the options given |
-
-See the cheatsheet on regular expressions for more "wildcard" shortcuts.
-
-### b) How to redirect to a file and get input from a file ...
-Redirection operators can be used to redirect the ouput from a program from the display screen to a file where it is saved (or many other places too, like your printer or to another program where it can be used as input).
-
-
-| Command | Description |
-|---------|---------------------------------------------------------------------------------------------------------------------------------|
-| `>` | write `stdout` to a new file; overwrites any file with that name (e.g., `ls *.md > mardkownfiles.txt`) |
-| `>>` | append `stdout` to a previously existing file; if the file does not exist, it is created (e.g., `ls *.md >> markdownfiles.txt`) |
-| `<` | assigns the information in a file to a variable, loop, etc (e.g., `n < markdownfiles.md`) |
-
-
-
-#### b.1) How to use the output of one command as the input to another with a pipe...
-A special kind of redirection is called a pipe and is denoted by `|`.
-
-
-| Command | Description |
-|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------|
-| | | Output from one command line program can be used as input to another one (e.g. ls \*.md | head gives you the first 5 `*.md` files in your directory) |
-
-
-
-
-
-##### Example:
-
- ls *.md | head | sed -i `s/markdown/software/g`
-
-changes all the instances of the word `markdown` to `software` in the first 5 `*.md` files in your current directory.
-
-
-
-
-## 4. How to repeat operations using a loop...
-Loops assign a value in a list or counter to a variable that takes on a different value each time through the loop.
-There are 2 primary kinds of loops: `for` loops and `while` loops.
-
-### a) For loop
-For loops loop through variables in a list
-
-
- for varname in list
- do
- command 1
- command 2
- done
-
-where,
-
-* `for`, `in`, `do`, and `done` are keywords
-* `list` contains a list of values separated by spaces. e.g. `list` can be replaced by `1 2 3 4 5 6` or by `Bob Mary Sue Greg`. `list` can also be a variable:
-
---
-
- list[0]=Sam
- list[1]=Lynne
- list[2]=Dhavide
- list[3]=Trevor
- .
- .
- .
- list[n]=Mark
-
-which is referenced in the loop by:
-
- for varname in ${list[@]}
- do
- command 1
- command 2
- done
-
-
-_Note:_ Bash is zero indexed, so counting always starts at `0`, not `1`.
-
-
-### b) While Loop
-While loops loop through the commands until a condition is met. For example
-
- COUNTER=0
- while [ ${COUNTER} -lt 10 ]; do
- command 1
- command 2
- COUNTER=`expr ${COUNTER} + 1`
- done
-
-continues the loop as long as the value in the variable COUNTER is less than 10 (incremented by 1 on each iteration of the loop).
-
-* `while`, `do`, and `done` are keywords
-
-
-#### b.1) Commonly used conditional operators
-
-| Operator | Definition |
-|----------|--------------------------|
-| `-eq` | is equal to |
-| `-ne` | is not equal to |
-| `-gt` | greater than |
-| `-ge` | greater than or equal to |
-| `-lt` | less than |
-| `-le` | less than or equal to |
-
-Use `man bash` or `man test` to learn about other operators you can use.
-
-
-
-## 6. Finding Things
-### a) How to select lines matching patterns in text files...
-To find information within files, you use a command called `grep`.
-
-| Example command | Description |
-|--------------------------------|------------------------------------------------------------------------------------------------|
-| `grep [options] day haiku.txt` | finds every instance of the string `day` in the file haiku.txt and pipes it to standard output | |
-
-#### a.1) Commonly used `grep` options
-
-| | `grep` options |
-|------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `-E` | tells grep you will be using a regular expression. Enclose the regular expression in quotes. _Note:_ the power of `grep` comes from using regular expressions. Please see the regular expressions sheet for examples |
-| `-i` | makes matching case-insensitive |
-| `-n` | limits the number of lines that match to the first n matches |
-| `-v` | shows lines that do not match the pattern (inverts the match) |
-| `-w` | outputs instances where the pattern is a whole word |
-
-### b) How to find files with certain properties...
-To find file and directory names, you use a command called `find`
-
-| Example command | Description |
-|------------------|-------------|
-| `find . -type d` | `find` recursively descends the directory tree for each path listed to match the expression given in the command line with file or directory names in the search path |
-
-
-#### b.1) Commonly used `find` options
-
-| | `find` options |
-|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `-type [df]` | `d` lists directories; `f` lists files |
-| `-maxdepth n` | `find` automatically searches subdirectories. If you don't want that, specify the number of levels below the working directory you would like to search |
-| `-mindepth n` | starts `find`'s search `n` levels below the working directory |
-
-