diff NGSrich_0.5.5/src/datastructures/AnnotationLine.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/datastructures/AnnotationLine.java	Mon Nov 21 08:12:19 2011 -0500
@@ -0,0 +1,99 @@
+package datastructures;
+
+import java.util.Scanner;
+
+public class AnnotationLine implements Comparable<Object>{
+	
+	String seqName, chrom, gene;
+	int start, end;
+	
+	public AnnotationLine(String seqName, String chrom, String gene, 
+											int start, int end){
+		this.seqName = seqName;
+		this.chrom = chrom;
+		this.gene = gene;
+		this.start = start;
+		this.end = end;
+	}
+
+	public AnnotationLine(String line){
+		Scanner s = new Scanner(line);
+		seqName = s.next();
+		this.chrom = s.next();
+		this.start = s.nextInt();
+		this.end = s.nextInt();
+		this.gene = s.next();
+	}
+	
+	public String seqName() {
+		return seqName;
+	}
+
+	public String chrom() {
+		return chrom;
+	}
+
+	public String gene() {
+		return gene;
+	}
+
+	public int start() {
+		return start;
+	}
+
+	public int end() {
+		return end;
+	}
+
+	public static AnnotationLine targetLine(String chrom, int tstart, int tend){
+		return new AnnotationLine("000\t"+chrom+"\t"+tstart+"\t"+tend+"\tdummy");
+	}
+	
+	public int compareTo(Object otherLine) {
+		AnnotationLine other = (AnnotationLine)otherLine;
+		
+		if(chrom.compareTo(other.chrom()) < 0 
+								&& !other.gene.equals("dummy"))
+			return -1;
+		else if(chrom.compareTo(other.chrom()) > 0 
+								&& !other.chrom().equals("dummy"))
+			return 1;
+		else{
+			/*
+			 * 1. Eine Region überlappt mit einem Gen, wenn einer der folgenden 
+			 * 3 Fälle eintritt:
+			 * a) Targetanfang kleiner als Genanfang und Targetende größer als 
+			 * Genende. (Gen ganz im Target enthalten)
+			 * b) Targetanfang liegt zwischen Genanfang und Genende.
+			 * c) Targetende liegt zwischen Genanfang und Genende.
+			 */
+			
+			// Für Targetsuche
+			if(this.gene().equals("dummy") && 
+					this.chrom().equals(other.chrom()) && (
+					(this.start() <= other.start() && this.end() >= other.end()) ||
+					(this.start() >= other.start() && this.start() <= other.end()) ||
+					(this.end() >= other.start() && this.end() <= other.end())
+					)	
+			)
+				return 0;
+			// Für Gensuche zu Insertzwecken.
+			else if(start < other.start())
+				return -1;
+			else if(start > other.start())
+				return 1;
+			else{
+				if(end < other.end())
+					return -1;
+				else if(end > other.end())
+					return 1;
+				else return 0;
+			}
+		}
+	}
+	
+	public String toString(){
+		return seqName +"\t" + chrom + "\t" + start + "\t" + end + "\t" + gene;
+	}
+	
+}