public static void main(String[] args) throws Exception{
			
			Object[] all_Docs;
			ReadDataFile rin;
			ContextPCANGramsRepresentation contextPCARepNGrams;
			HashMap<String,Integer> corpusInt=new HashMap<String,Integer>();
			ContextPCANGramsRun contextPCARunNGrams;
			ContextPCANGramsWriter woutNGrams;
			Object[] matrices=new Object[3];
			long numTokens;
			
			Options opt=new Options(args);
			if(opt.algorithm==null){
				System.out.println("WARNING: YOU NEED TO SPECIFY A VALID ALGORITHM NAME AS algorithm:");
			}
			if(opt.numGrams ==2 && !opt.typeofDecomp.equals("WvsR")){
				System.out.println("WARNING: WITH BIGRAMS YOU CAN ONLY RUN W vs R; FOR OTHER VARIANTS E.G W vs [L R] TRY 3 OR 5 GRAMS");
				System.exit(0);
			}
			
			if(opt.trainUnlab){
				System.out.println("+++Inducing Context PCA Embedddings from n-grams data+++\n");
				rin=new ReadDataFile(opt);
				if (opt.depbigram){
					corpusInt= rin.convertAllDocsIntNGrams();
					rin.readAllDocsNGrams();
					all_Docs=rin.getAllDocsNGrams();
				}
				else{
					corpusInt= rin.convertAllDocsIntNGramsSingleVocab();
					rin.readAllDocsNGramsSingleVocab();
					all_Docs=rin.getAllDocsNGrams();
				}
				rin.serializeCorpusIntMapped();
				numTokens=rin.getNumTokens();
				rin.serializeCorpusIntMappedContext();
				contextPCARepNGrams= new ContextPCANGramsRepresentation(opt, numTokens,rin, all_Docs);
				contextPCARunNGrams=new ContextPCANGramsRun(opt,contextPCARepNGrams);
				contextPCARunNGrams.serializeContextPCANGramsRun();
				matrices=deserializeContextPCANGramsRun(opt);

				woutNGrams=new ContextPCANGramsWriter(opt,all_Docs.length,matrices,rin);
				woutNGrams.writeEigenDict();
				woutNGrams.writeEigContextVectors();
				
				if (opt.randomBaseline){
					woutNGrams.writeEigenDictRandom();
					woutNGrams.writeEigContextVectorsRandom();
				}
				
				System.out.println("+++Context PCA NGrams Embedddings Induced+++\n");
			}

			
		}