public static void launch(String f,String type,int upstream,boolean withContig){
		System.out.println("Reading taxonomy list..");
		ArrayList<Integer> taxList = new ArrayList<Integer>();
		try{
			BufferedReader br = new BufferedReader(new FileReader(f));
			String line = br.readLine();
			while (line!=null) {
				if (!line.trim().equals("")) {
					int taxa = Integer.parseInt(line);
					taxList.add(taxa);
					System.out.println(taxa);
				}
				line = br.readLine();
			}
			br.close();	
		}
		catch (IOException e) {
			System.out.println("IO EXCEPTION READING "+f);
			e.printStackTrace();
			System.exit(0);
		}

		System.out.println("Loading "+type+" data..");
		
		COGLoader loader = new COGLoader(type);		
		try {
			loader.loadMembers(taxList);
		} catch (SQLException e) {
			System.out.println("FAILED TO LOAD "+type+" DATA");
			e.printStackTrace();
			System.exit(0);
		}
				
		System.out.println("ALL "+type+" NUMBER FOR SPECIFIED TAXONOMIES: "+loader.cogs.size());
		System.out.println("SCAFFOLDS NUMBER:" + loader.scaffolds.size());
		System.out.println("TAXONOMIES NUMBER:" + loader.taxonomies.size());
		for (Iterator<Integer> iterator = loader.taxonomies.iterator(); iterator.hasNext();) {
			System.out.println(iterator.next());			
		}	
		
		int MAX_PROCESSORS_NUMBER = 24;
		int processorsNumber = Runtime.getRuntime().availableProcessors();
		System.out.println("processors number:"+processorsNumber);
		int threadNumber = Math.min(processorsNumber, MAX_PROCESSORS_NUMBER);
		
		System.out.println("Loading loading "+type+" fastas..");
		String dir = "MO_"+type;
		loader.writeCOGs(threadNumber, dir,type,upstream);
		
		if (withContig){
			System.out.println("Loading corresponding contigs..");
			loader.writeContigs(threadNumber, "MO_Contig");
		}
	}