private void readData(File dataFile) {
			Scanner s = makeScanner(dataFile);
			try { // in case the input doesn't match the specification
				while (s.hasNextDouble()) { // while there is another row of
											// values
					Double[] values = new Double[NumChannels];
					for (int channel = 0; channel < NumChannels; channel++) {
						values[channel] = s.nextDouble(); // read all data
					}
					int condition = s.nextInt(); // read condition for this row
					if (!Conditions.contains(condition))
						Conditions.add(condition); // store condition number
					for (int channel = 1; channel <= NumChannels; channel++) {
						for (Group g : GroupList) {
							if (g.hasChannel(channel)) {
								g.addValue(values[channel - 1], condition);
							}
						}
					}
				}
			} catch (InputMismatchException e) {
				localError(e.getMessage());
			} catch (Exception e) {
				localError("unknown problem reading data: " + e.getMessage());
			} finally {
				s.close(); // scanner must be closed to signal it's okay to
							// close its underlying stream
			}
		}