package org.biojava.nbio.genome.parsers.twobit; import java.io.File; /** A facade that makes it easier to work with a 2bit file. * * Created by yana on 3/27/17. */ public class TwoBitFacade { private TwoBitParser twoBitParser = null; /** * Reads a genome from a locally stored .2bit file. * * @param file the File to a .2bit file. */ public TwoBitFacade(File file) throws Exception { twoBitParser = new TwoBitParser(file); } /** * Closes .2bit file twoBitParser. */ public void close() throws Exception { if (twoBitParser != null) twoBitParser.close(); } /** Sets a chromosome for TwoBitParser. * * @param chr The chromosome name (e.g. chr21) */ public void setChromosome(String chr) throws Exception { if ( twoBitParser == null){ } twoBitParser.close(); String[] names = twoBitParser.getSequenceNames(); for(int i=0;i<names.length;i++) { if ( names[i].equalsIgnoreCase(chr) ) { twoBitParser.setCurrentSequence(names[i]); break; } } } /** Extract a sequence from a chromosome, using chromosomal coordinates * * @param chromosomeName * @param start * @param end * @return the DNASequence from the requested coordinates. * @throws Exception */ public String getSequence(String chromosomeName, int start, int end) throws Exception { twoBitParser.close(); twoBitParser.setCurrentSequence(chromosomeName); return twoBitParser.loadFragment(start,end-start); } }