if __name__ == '__main__':
  opt, _ = parseArguments()
  if opt.directory is None:
    print 'Need directory, use -d or --dir'
    exit()
  if opt.outfile is None:
    print 'Need output file, use -o or --outfile'
    exit()

  print 'Loading data...'
  files, filenames = or_util.getExtFiles('.npz', opt.directory)
  data = map(lambda f: or_util.loadFile(f), files)

  print 'Extracting features...'
  features = map(lambda d: or_features.flattenFeatures(d, channels=(0,1)), data)
  features = map(lambda d: or_ml.samplePerc(d, 0.005), features)
  labels = or_ml.generateLabels(features)

  X = np.concatenate(features)
  y = np.concatenate(labels)
  C = len(data)
  N = len(y)

  print 'Training... ( N =', N, ')'
  shuffler = cross_validation.ShuffleSplit(N, 1, 0.1)
  for train_idx, test_idx in shuffler:
    X_train = X[train_idx,:]
    X_test = X[test_idx,:]
    y_train = y[train_idx]
    y_test = y[test_idx]
 def classifyPlastic(self, img):
   hs = or_features.flattenFeatures([img], channels=(0,1))
   p = or_ml.mostFrequent(self.plasticTable[hs[:,1],hs[:,0]])
   predictedClass = self.plasticClasses[p]
   return predictedClass