code: public static Analysis readAnalysis(final Reader reader) throws IOException {
          checkNotNull(reader);
          try {
              JAXBContext context = JAXBContext.newInstance(Analysis.class);
              Unmarshaller unmarshaller = context.createUnmarshaller();
              SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
              URL commonSchemaURL = SraReader.class.getResource("/org/nmdp/ngs/sra/xsd/SRA.common.xsd");
              URL analysisSchemaURL = SraReader.class.getResource("/org/nmdp/ngs/sra/xsd/SRA.analysis.xsd");
              Schema schema = schemaFactory.newSchema(new StreamSource[] { new StreamSource(commonSchemaURL.toString()), new StreamSource(analysisSchemaURL.toString()) });
              unmarshaller.setSchema(schema);
              return (Analysis) unmarshaller.unmarshal(reader);
          }
          catch (JAXBException | SAXException e) {
              throw new IOException("could not unmarshal Analysis", e);
          }
      }
docs: Read an analysis from the specified reader.
  
  @param reader reader, must not be null
  @return an analysis read from the specified reader
  @throws IOException if an I/O error occurs