diff NGSrich_0.5.5/src/middlewares/Misc.java @ 0:89ad0a9cca52 default tip

Uploaded
author pfrommolt
date Mon, 21 Nov 2011 08:12:19 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/NGSrich_0.5.5/src/middlewares/Misc.java	Mon Nov 21 08:12:19 2011 -0500
@@ -0,0 +1,206 @@
+package middlewares;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Scanner;
+
+import datastructures.ReducedReadLine;
+import datastructures.TargetLine;
+import exceptions.ChromosomeFormatException;
+import exceptions.ChromosomeNotFoundException;
+import exceptions.NullOrNegativeRangeException;
+import exceptions.RangeFormatException;
+import exceptions.RangeLimitNotFoundException;
+
+/**
+ * Miscellaneous methods for different uses.
+ * 
+ * @author Ali Abdallah
+ * @version 01.2011
+ * @since jdk 1.6.0
+ */
+public class Misc {
+
+	/**
+	 * Make the first letter big, if possible. nGSrich -> NGSrich.
+	 * 
+	 * @param s the string
+	 * @return the same string with the first letter big.
+	 */
+	public static String bigFirst(String s) {
+		return s.substring(0, 1).toUpperCase() + s.substring(1);
+	}
+
+	/**
+	 * Creates a shortcut for the file with a different file extension.
+	 * 
+	 * @param fName the original file name.
+	 * @param newExt the new extension of the file.
+	 * @param dir the directory of the mad link.
+	 * @return a link to the file fName with a different extension.
+	 */
+	public static File rename(String fName, String newExt, String dir) {
+
+		String inDirShortCut = dir + Misc.slash(dir);
+		String fShortcutName = inDirShortCut + Misc.prefix(fName) + "."
+				+ newExt;
+		Runtime r = Runtime.getRuntime();
+		try {
+			r.exec("ln -s " + fName + " " + fShortcutName);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		try {
+			Thread.sleep(100);
+		} catch (InterruptedException e) {
+			e.printStackTrace();
+		}
+		return new File(fShortcutName);
+	}
+
+	/**
+	 * @return the path of the bin directory of this software.
+	 */
+	public static String binDir() {
+		URL url = new Misc().getClass().getResource("Misc.class");
+		String path = url.toString().substring(url.toString().indexOf(":") + 1);
+		path = path.substring(0, path.lastIndexOf("/"));
+
+		return path.substring(0, path.lastIndexOf("/"));
+
+	}
+	
+	/**
+	 * @return the path of this software.
+	 */
+	public static String scriptDir() {
+		URL url = new Misc().getClass().getResource("../NGSrich.class");
+		String path = url.toString().substring(url.toString().indexOf(":") + 1);
+		path = path.substring(0, path.lastIndexOf("/"));
+		return path.substring(0, path.lastIndexOf("/")+1);
+
+	}
+	
+	public static void main(String[] args) {
+		System.out.println(scriptDir());
+	}
+
+	/**
+	 * @param path 
+	 * @return extends the path by a slash at the end, in the case it don't 
+	 * exists.
+	 */
+	public static String slash(String path) {
+		return (path.endsWith("/") ? "" : "/");
+	}
+
+	/**
+	 * @return the name of the host.
+	 */
+	public static String getHostName() {
+		Runtime rt = Runtime.getRuntime();
+		String erg = "";
+		try {
+			File f = new File("hostname.sh");
+			FileWriter fw = new FileWriter(f);
+
+			fw.write("#!/bin/bash\r\nproc=$(hostname -s).$$\r\necho $proc");
+			fw.close();
+			Process p = rt.exec("chmod 700 " + f.getAbsolutePath());
+			p = rt.exec("sh " + f.getAbsolutePath());
+
+			Scanner s = new Scanner(p.getInputStream());
+
+			while (s.hasNextLine()) {
+				erg += (s.nextLine());
+			}
+			s.close();
+
+			f.delete();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return erg;
+	}
+
+	/**
+	 * @param fileName
+	 * @return the extension of the file.
+	 */
+	public static String suffix(String fileName) {
+		return fileName.substring(fileName.lastIndexOf(".") + 1);
+	}
+
+	/**
+	 * @param fileName
+	 * @return the name of the file without the extension.
+	 */
+	public static String prefix(String fileName) {
+		return fileName.substring(fileName.lastIndexOf("/") + 1,
+				fileName.lastIndexOf("."));
+	}
+
+	/**
+	 * @param fileName
+	 * @return the directory of the specified file.
+	 */
+	public static String path(String fileName) {
+		String absolutePath = 
+						new File(fileName).getParentFile().getAbsolutePath();
+		return absolutePath+slash(absolutePath);
+	}
+
+	/**
+	 * Check if the chromosome names in the target file are a subset of the
+	 * chromosome name in the alignment file.
+	 * 
+	 * @param alignment the alignment file.
+	 * @param target the target file.
+	 * @return true if target chromosomes are a subset of alignment chromosome
+	 * and false otherwise.
+	 */
+	public static boolean areChromosomeCompatible(File alignment, File target){
+		Scanner aScan = null, tScan = null;
+		try {
+			aScan = new Scanner(alignment);
+			tScan = new Scanner(target);
+			
+			ArrayList<String> alist = new ArrayList<String>();
+			ArrayList<String> tlist = new ArrayList<String>();
+			while(aScan.hasNextLine()){
+				ReducedReadLine rl = new ReducedReadLine(aScan.nextLine());
+				if(alist.indexOf(rl.chrom())==-1)
+					alist.add(rl.chrom());
+			}
+			while(tScan.hasNextLine()){
+				TargetLine tl = new TargetLine(tScan.nextLine());
+				if(tlist.indexOf(tl.chrom())==-1)
+					tlist.add(tl.chrom());
+			}
+			for(int i = 0; i < tlist.size(); i++){
+				if(alist.indexOf(tlist.get(i))!=-1)
+					return true;
+			}			
+		} catch (FileNotFoundException e) {	
+			e.printStackTrace();
+		} catch (ChromosomeFormatException e) {
+			e.printStackTrace();
+		} catch (ChromosomeNotFoundException e) {
+			e.printStackTrace();
+		} catch (RangeFormatException e) {
+			e.printStackTrace();
+		} catch (RangeLimitNotFoundException e) {
+			e.printStackTrace();
+		} catch (NullOrNegativeRangeException e) {
+			e.printStackTrace();
+		}
+
+
+		return false;
+	}
+	
+}