if not options.input:
        optparser.error("No input file defined")
    if not options.output:
        optparser.error("No output file defined")
    if not options.dictionary:
        optparser.error("No dictionary file defined")
    return options, args


if __name__=="__main__":
    options, args = getOptions()
    f = gzip.GzipFile(options.dictionary, 'r')
    dictionary = readDictionaryMapping(f)
    f.close()
    f = gzip.GzipFile(options.input, 'r')
    documents = GraphMatrices.readInstances(f)
    instances = GraphMatrices.buildAMFromFullSentences(documents, MatrixBuilders.buildAdjacencyMatrix, settings, options.parser, options.tokenizer)
    f.close()
    f = gzip.GzipFile(options.output,'w')
    datavector = []
    identities = []
    for document in instances.itervalues():
        for sentence in document.itervalues():
            for identity, instance in sentence.iteritems():
                identities.append(identity)
                datavector.append(instance)
    outputs = [x[2] for x in datavector]
    datavector = [(x[0], x[1]) for x in datavector]
    datavector = GraphMatrices.LinearizeGraphs(datavector, dictionary, options.mode)
    for id, output, features in zip(identities, outputs, datavector):
        keys = features.keys()