comparison NGSrich_0.5.5/src/middlewares/GeneExtractor.java @ 0:89ad0a9cca52 default tip

Uploaded
author pfrommolt
date Mon, 21 Nov 2011 08:12:19 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:89ad0a9cca52
1 package middlewares;
2 import java.io.File;
3 import java.io.FileNotFoundException;
4 import java.util.Scanner;
5
6 import datastructures.AVLTree;
7 import datastructures.AnnotationLine;
8 import datastructures.TargetLine;
9
10 /**
11 *
12 * Generate a AVL-Tree for fast extraction of genes (logarithmic time).
13 *
14 * @author Ali Abdallah
15 * @version 0.4.5, 14.07.2011
16 * @since jdk 1.6.0
17 *
18 */
19
20 public class GeneExtractor {
21
22 /**
23 * The path of the genome annotation file.
24 */
25 String genomeAnnotation;
26
27 /**
28 * The avl tree representing the genome annotation file.
29 */
30 AVLTree genesTree;
31
32 /**
33 * The scanner scanning the genome file.
34 */
35 Scanner s;
36
37 /**
38 * Constructs the avl-tree based on the genome annotation file.
39 * @param genomeAnnotation the genome annotation file.
40 */
41 public GeneExtractor(String genomeAnnotation) {
42 genesTree = new AVLTree();
43 this.genomeAnnotation = genomeAnnotation;
44 try {
45 s = new Scanner(new File(genomeAnnotation));
46 } catch (FileNotFoundException e) {
47 e.printStackTrace();
48 }
49 while (s.hasNextLine()) {
50 genesTree.insert(new AnnotationLine(s.nextLine()));
51 }
52 s.close();
53 }
54
55 /**
56 * Search the tree for a gene overlapping the specified target.
57 *
58 * @param tl the target line of the current target.
59 * @return the gene overlapping the specified target, if it exists and
60 * "unknown" otherwise.
61 */
62 public String extractGene(TargetLine tl) {
63 AnnotationLine a =
64 (AnnotationLine) genesTree.find(new AnnotationLine
65 ("*", tl.chrom(), "dummy", tl.start(), tl.end()));
66 return ((a != null) ? a.gene() : "unknown");
67 }
68 }