Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
  
      ngs-feature  Features.
      Copyright (c) 2014-2015 National Marrow Donor Program (NMDP)
  
      This library is free software; you can redistribute it and/or modify it
      under the terms of the GNU Lesser General Public License as published
      by the Free Software Foundation; either version 3 of the License, or (at
      your option) any later version.
 
     This library is distributed in the hope that it will be useful, but WITHOUT
     ANY WARRANTY; with out even the implied warranty of MERCHANTABILITY or
     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
     License for more details.
 
     You should have received a copy of the GNU Lesser General Public License
     along with this library;  if not, write to the Free Software Foundation,
     Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA.
 
     > http://www.gnu.org/licenses/lgpl.html
 
 */
 package org.nmdp.ngs.feature;
 
 
 import java.util.List;
 
 
 
 
 
 
 public final class VcfFile {
     public final static int BUFFER_SIZE = 2048;
   
     public final static String INFO = "INFO";
     public final static String FILTER = "FILTER";
     public final static String FORMAT = "FORMAT";
     public final static String CONTIG = "contig";
   
     public final class Iterator implements java.util.Iterator<VcfRecord> {
         private long lineNumber;
         private final InputStream stream;
         private final byte [] buffer = new byte[];
         public int bytes;
 
         public Iterator(final InputStream stream) {
              = 0;
              = 0;
             this. = stream;
         }
 
         @Override
         public boolean hasNext() {
             try {
                 return .available() == 1;
             }
             catch (IOException exception) {
                 return false;
             }
         }
 
         @Override
         public VcfRecord next() {
             try {
                  += .read();
                 return FeatureParser.parseVcfRecord(Arrays.toString(), );
             }
             catch (IOException | ParseException exception) {
                 return null;
             }
         }
 
         @Override
         public void remove() {
             // empty
         }
     }
 
     public Iterator iterator() throws IOException {
         .reset();
         return new Iterator();
     }
 
    public static enum Strictness {
        
Do not log syntax errors
        NONE,
        
Log syntax errors but do not fail
        RESEARCH,
        
Fail on syntax errors
        CLINICAL
    }
  
    public final String filename;
    public final String format;
    public final String reference;
    public final Header header;
    public final List<Metadatametadata;
    public final Strictness strictness;
    private InputStream stream;
    private final byte [] buffer = new byte[];
    private int bytes;
  
    public final static class Header {
        public final List<Stringnames;
        public Header(final List<Stringnames) {
            this. = ImmutableList.copyOf(names);
        }
    }
  
    public static class Metadata {
        public final static String ID = "ID";
        public final static String DESCRIPTION = "Description";
        public final static String INTEGER ="Integer";
        public final static String FLOAT = "Float";
        public final static String CHARACTER = "Character";
        public final static String STRING = "String";
        public final static String FLAG = "Flag";
        public enum Type {
            UNKNOWN,
            INTEGER,
            FLOAT,
            CHARACTER,
            STRING,
            FLAG
        }
        private String name;
        private String description;
        protected SimpleAnnotation annotation;
        public Metadata(final String namefinal String description) {
            this. = name;
            this. = description;
        }
    
        public Metadata(final SimpleAnnotation annotationthrows VcfFileException {
            this. = annotation;
            try {
                 = ((ArrayList<String>) this..getProperty()).get(0);
            }
            catch(NoSuchElementException exception) {
                throw new VcfFileException("missing metadata field \"" +  + "\"");
            }
            try {
                 = ((ArrayList<String>) this..getProperty()).get(0);
            }
            catch(NoSuchElementException exception) {
                throw new VcfFileException("missing metadata field \"" +  + "\"");
            }
        }
        public final String getName() {
            return ;
        }
        public final String getDescription() {
            return .replace(">""");
        }
        public final SimpleAnnotation getFullAnnotation() {
            return ;
        }
    }
    public static class Info extends VcfFile.Metadata {
        public final static String NUMBER = "Number";
        public final static String TYPE = "Type";
        private Type type;
        private Object number;
        public Info(final SimpleAnnotation annotationthrows VcfFileException {
            super(annotation);
            try {
                 = ((ArrayList<String>) this..getProperty()).get(0);
            }
            catch(NoSuchElementException exception) {
                throw new VcfFileException("missing " +  + " field \"" +  + "\"");
            }
            try {
                String argument = ((ArrayList<String>) this..getProperty()).get(0);
                switch (argument) {
                case :
                     = ...;
                    break;
                case :
                     = ...;
                    break;
                case :
                     = ...;
                    break;
                case :
                     = ...;
                    break;
                case :
                     = ...;
                    break;
                default:
                     = ...;
                    break;
                }
            }
            catch(NoSuchElementException exception) {
                throw new VcfFileException("missing " +  + " field \"" +  + "\"");
            }
        }
        public Object getNumber() {
            return ;
        }
        public Type getType() {
            return ;
        }
    }
    public final static class Filter extends VcfFile.Metadata {
        public Filter(final SimpleAnnotation annotationthrows VcfFileException {
            super(annotation);
        }
    }
    public final static class Format extends VcfFile.Info {
        public Format(final SimpleAnnotation annotationthrows VcfFileException {
            super(annotation);
        }
    }
  
    public VcfFile(final String filenamethrows IOExceptionParseException {
        this. = filename;
        this. = "UNKNOWN";
        this. = "UNKNOWN";
        this. = null;
        this. = new ArrayList<Metadata>();
         = .;
         = 0;
        this. = new FileInputStream(filename);
        if(filename.endsWith(".gz")) {
            try {
                this. = new GZIPInputStream();
            }
            finally {
                // stream.close();
            }
        }
         += .read();
        String line = new String("UTF8");
        //System.out.println("bytes = " + bytes + " line = " + line);
        while(line.startsWith("#")) {
            .add(FeatureParser.parseVcfMetadata(line));
             += .read();
            line = Arrays.toString();
            //System.out.println("bytes = " + bytes + " line = " + line);
        }
        .mark(120);
    }
New to GrepCode? Check out our FAQ X