Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package dl.tmp;
  
  import java.io.FileReader;
  
  
 public class CheckNamesAgainstInChIs {
 
 	private static Integer numberOfThreads = null;
 	private static String fileName = "C:/My Documents/OPSIN/TrainingSets/Compound_00000001_00010000.namesandinchisLexiChem1.8.txt";
 	public static String delimiter = "\t";
 	public static NameToInchi nti;
 	
 	public static void main(String[] argsthrows Exception {
 		if ( == null){
 		}
 		 = new NameToInchi();//instantiates the name2structure singleton but with added parseToInChI method
 
 		for (int i = 0; i < i++) {
 			threads.add(new CheckNameAgainstInChI());
 		}
 		
 		long start = System.currentTimeMillis();
 		int correctInchis = 0;
 		int incorrectInchis = 0;
 		int totalNames = 0;
 		try {
 			String line = null;
 			while ((line = input.readLine()) != null) {
 				totalNames++;
 				mainLoop: while (true){
 					for (int i = 0; i < threads.size(); i++) {
 						CheckNameAgainstInChI potentialIdleThread = threads.get(i);
 						if (potentialIdleThread.complete != null){//thread has already been used
 							if (potentialIdleThread.complete){
 								t = threads.remove(i);
 								if (t.referenceInChI != null){
 									if (t.opsinInChI != null){
 										String cleanedOpsinInchi = InchiPruner.mainAndChargeLayers(t.opsinInChI);
 										String cleanedReferenceInchi = InchiPruner.mainAndChargeLayers(t.referenceInChI);
 										if (cleanedOpsinInchi.equals(cleanedReferenceInchi)){
 											correctInchis++;
 										} else {
 											incorrectInchis++;
 											..println(t.lineNumber + "(incorrect)");
 										}
 									} else {
 										//System.out.println(t.lineNumber);
 										//failed to parse
 									}
 								}
 								else{
 									..print("Reference InChI not present on line: " + t.lineNumber +"!");
 								}
 								t.setLineString(linetotalNames);
 								break mainLoop;
 							}
 						}
 						else{
 							t = threads.remove(i);
 							t.setLineString(linetotalNames);
 							t.start();
 							break mainLoop;
 						}
 					}
 					Thread.sleep(0, 100);
 				}
 				threads.add(t);
 			}
 			for (CheckNameAgainstInChI t : threads) {//collect any remaining results and kill the threads
 				while (!t.complete){
 					Thread.sleep(1);
 				}
 				if (t.referenceInChI != null){
 					if (t.opsinInChI != null){
 						String cleanedOpsinInchi = InchiPruner.mainAndChargeLayers(t.opsinInChI);
 						String cleanedReferenceInchi = InchiPruner.mainAndChargeLayers(t.referenceInChI);
 						if (cleanedOpsinInchi.equals(cleanedReferenceInchi)){
 							correctInchis++;
 						} else {
 							incorrectInchis++;
 							..println(t.lineNumber + "(incorrect)");
 						}
 					} else {
 						//System.out.println(t.lineNumber);
 						//failed to parse
 					}
 				}
 				else{
 					..print("Reference InChI not present on line: " + t.lineNumber +"!");
 				}
 				t.complete = null;
			}
			..println(totalNames +" names were inputted, resulting in " + correctInchis + " correct INCHIs and " + incorrectInchis + " incorrect Inchis" );
finally {
			input.close();
		}
		long elapsedTimeMillis = System.currentTimeMillis()-start;
		..println(elapsedTimeMillis);
		..println(correctInchis + incorrectInchis);
	}
class CheckNameAgainstInChI extends Thread {
    String line;
    int lineNumber;
    Boolean complete = null;
    
    public void setLineString(String lineint lineNumber) {
    	this. = line;
    	this. = lineNumber;
    	 = null;
    	 = null;
    	 = false;
    }
    public void run() {
    	while( != null){
			if (lineArray.length < 2){
			}
			else{
				 = lineArray[1];
			}
			 = true;
			while ( !=null && ){
				try {
					Thread.sleep(0, 100);
catch (InterruptedException e) {
					throw new RuntimeException("Thread unexpectedly interrupted");
				}
			}
		}
    }
New to GrepCode? Check out our FAQ X