Changes between Version 10 and Version 11 of CreatingAnnotion


Ignore:
Timestamp:
01/12/2017 08:20:06 PM (6 years ago)
Author:
dbrentw
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CreatingAnnotion

    v10 v11  
    224224
    2252259) Create the archive that will be read by GRITS
    226   a) Populate the Scan Feature object
     226  a) Populate the Scan Feature objects
    227227{{{
    228228        protected void populateScanFeatureData(String glycanFilesPath) {
     
    236236                        scanFeatures = new ScanFeatures(); // Create new ScanFeatures object to add features to the scan if it was annotated
    237237                        scanFeatures.setScanId(scanId);
    238                         scanFeatures.setScanPeaks(new HashSet<Peak>(getTestData().getScans().get(scanId).getPeaklist()));
    239                         getTestData().getScanFeatures().put(scanId, scanFeatures);
     238                        scanFeatures.setScanPeaks(new HashSet<Peak>(getTestData().getScans().get(scanId).getPeaklist())); // set the list of peaks to the ScanFeature that are in this Scan
     239                        getTestData().getScanFeatures().put(scanId, scanFeatures); // add this new ScanFeatures object to list of ScanFeatures in the Data object (associated with this scan id)
    240240                        if(getTestData().getAnnotatedScan().get(scanId) != null) { // this scan was annotated
    241241                                for(String glycanId : getTestData().getAnnotatedScan().get(scanId)){
     
    253253        }
    254254}}}
     255  b) Write the archive file(s)
     256{{{
     257        protected void populateScanFeatureData(String glycanFilesPath, Data data) {
     258             AnnotationWriter writer = new AnnotationWriter();
     259             writer.generateScansAnnotationFiles(glycanFilesPath, data)
     260        }
     261}}}
     262
     263    1) create ZipOutputStream
     264{{{
     265        FileOutputStream ms_final = new FileOutputStream(zipPath);
     266        ZipOutputStream compressedFile = new ZipOutputStream(ms_final);
     267}}}
     268    2) Write DataHeader to compressed file
     269{{{
     270        public void writeDataHeaderToZip( DataHeader dHeader, ZipOutputStream compressedFile ) {
     271                JAXBContext jaxbDataHeaderContext = null;
     272                Marshaller jaxbDataHeaderMarshaller = null;
     273                try {
     274                        List<Class> contextList = new ArrayList<>(Arrays.asList(FilterUtils.filterClassContext));
     275                        contextList.add(FilterSetting.class);
     276                        contextList.add(DataHeader.class);
     277                        jaxbDataHeaderContext = JAXBContext.newInstance(contextList.toArray(new Class[contextList.size()]));
     278                        jaxbDataHeaderMarshaller = jaxbDataHeaderContext.createMarshaller();
     279                } catch (JAXBException e1) {
     280                        logger.error(e1.getMessage(), e1);
     281                        return;
     282                } catch ( Exception e2 ) {
     283                        logger.error(e2.getMessage(), e2);
     284                        return;
     285                }
     286                try {
     287                        jaxbDataHeaderMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
     288                        compressedFile.putNextEntry(new ZipEntry(AnnotationWriter.DATA_HEADER));
     289                        jaxbDataHeaderMarshaller.marshal(dHeader, compressedFile);
     290                } catch (IOException e1) {
     291                        logger.error(e1.getMessage(), e1);
     292                } catch (JAXBException e2) {
     293                        logger.error(e2.getMessage(), e2);
     294                } catch ( Exception ex ) {
     295                        logger.error(ex.getMessage(), ex);
     296                }
     297                try {
     298                        compressedFile.closeEntry();
     299                } catch (IOException e1) {
     300                        logger.error(e1.getMessage(), e1);
     301                } catch ( Exception ex ) {
     302                        logger.error(ex.getMessage(), ex);
     303                }
     304        }
     305}}}
     306
     307    3) Write Method object to compressed file
     308{{{
     309        public void writeMethodToZip( Method method, ZipOutputStream compressedFile ) {
     310                JAXBContext jaxbMethodContext = null;
     311                Marshaller jaxbMethodMarshaller = null;
     312                try {
     313                        List<Class> contextList = new ArrayList<>(Arrays.asList(FilterUtils.filterClassContext));
     314                        contextList.add(FilterSetting.class);
     315                        contextList.add(Method.class);
     316                        jaxbMethodContext = JAXBContext.newInstance(contextList.toArray(new Class[contextList.size()]));
     317                        jaxbMethodMarshaller = jaxbMethodContext.createMarshaller();
     318                } catch (JAXBException e1) {
     319                        logger.error(e1.getMessage(), e1);
     320                        return;
     321                } catch ( Exception e2 ) {
     322                        logger.error(e2.getMessage(), e2);
     323                        return;
     324                }
     325                try {
     326                        jaxbMethodMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
     327                        compressedFile.putNextEntry(new ZipEntry(AnnotationWriter.SETTINGS_FILE));
     328                        jaxbMethodMarshaller.marshal(method, compressedFile);
     329                } catch (IOException e1) {
     330                        logger.error(e1.getMessage(), e1);
     331                } catch (JAXBException e2) {
     332                        logger.error(e2.getMessage(), e2);
     333                } catch ( Exception ex ) {
     334                        logger.error(ex.getMessage(), ex);
     335                }
     336                try {
     337                        compressedFile.closeEntry();
     338                } catch (IOException e1) {
     339                        logger.error(e1.getMessage(), e1);
     340                } catch ( Exception ex ) {
     341                        logger.error(ex.getMessage(), ex);
     342                }               
     343        }
     344}}}
     345
     346    4) Write Data object WITHOUT ScanFeatures objects to compressed file
     347{{{
     348        public void writeDataToZip(Data data, ZipOutputStream compressedFile ) {
     349                JAXBContext jaxbDataContext = null;
     350                Marshaller jaxbDataMarshaller = null;
     351                try {
     352                        List<Class> contextList = new ArrayList<>(Arrays.asList(FilterUtils.filterClassContext));
     353                        contextList.add(FilterSetting.class);
     354                        contextList.add(Data.class);
     355                        jaxbDataContext = JAXBContext.newInstance(contextList.toArray(new Class[contextList.size()]));
     356                        jaxbDataMarshaller = jaxbDataContext.createMarshaller();
     357                } catch (JAXBException e1) {
     358                        logger.error(e1.getMessage(), e1);
     359                        return;
     360                } catch ( Exception e2 ) {
     361                        logger.error(e2.getMessage(), e2);
     362                        return;
     363                }
     364                try {
     365                        jaxbDataMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
     366                        compressedFile.putNextEntry(new ZipEntry(AnnotationWriter.DATA_FILE));
     367                        // testing not serializing the scanfeatures in the data object.
     368                        HashMap<Integer, ScanFeatures> hm = data.getScanFeatures();
     369                        data.setScanFeatures(null); // set scan features to null before writing data!
     370                        jaxbDataMarshaller.marshal(data, compressedFile);
     371                        data.setScanFeatures(hm);
     372                } catch (IOException e1) {
     373                        logger.error(e1.getMessage(), e1);
     374                } catch (JAXBException e2) {
     375                        logger.error(e2.getMessage(), e2);
     376                } catch ( Exception ex ) {
     377                        logger.error(ex.getMessage(), ex);
     378                }
     379                try {
     380                        compressedFile.closeEntry();
     381                } catch (IOException e1) {
     382                        logger.error(e1.getMessage(), e1);
     383                } catch ( Exception ex ) {
     384                        logger.error(ex.getMessage(), ex);
     385                }               
     386        }
     387}}}
     388
     389    5) Write ScanFeatures objects to compressed file
     390{{{
     391        public void writeScanFeaturesToZip(Data data, ZipOutputStream compressedFile, String glycanFilesPath ) throws Exception {
     392                JAXBContext jaxbContextAnn = null;
     393                Marshaller jaxbMarshallerAnn = null;
     394                try {
     395                        jaxbContextAnn = JAXBContext.newInstance(ScanFeatures.class);
     396                        jaxbMarshallerAnn = jaxbContextAnn.createMarshaller();
     397                } catch (JAXBException e1) {
     398                        logger.error(e1.getMessage(), e1);
     399                        return;
     400                } catch ( Exception e2 ) {
     401                        logger.error(e2.getMessage(), e2);
     402                        return;
     403                }
     404                HashMap<String,String> gogCheckerForMS1 = new HashMap<String,String>();
     405                try {
     406                        if( data.getScans() != null ) {
     407                                for(Integer scanId : data.getScans().keySet()){
     408                                        try {
     409                                                compressedFile.putNextEntry(new ZipEntry(scanId+".xml"));
     410                                                jaxbMarshallerAnn.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
     411                                                jaxbMarshallerAnn.marshal(data.getScanFeatures().get(scanId),compressedFile);
     412                                        } catch (IOException e1) {
     413                                                logger.error(e1.getMessage(), e1);
     414                                        } catch (JAXBException e2) {
     415                                                logger.error(e2.getMessage(), e2);
     416                                        } catch ( Exception ex ) {
     417                                                logger.error(ex.getMessage(), ex);
     418                                        }
     419                                        try {
     420                                                compressedFile.closeEntry();
     421                                                if(data.getAnnotatedScan().get(scanId) != null){
     422                                                        for(String gog : data.getAnnotatedScan().get(scanId)){
     423                                                                gogCheckerForMS1.put(gog, "seen");
     424                                                        }
     425                                                }
     426                                        } catch (IOException e1) {
     427                                                logger.error(e1.getMessage(), e1);
     428                                        } catch ( Exception ex ) {
     429                                                logger.error(ex.getMessage(), ex);
     430                                        }
     431                                }
     432                        }
     433                } catch ( Exception ex ) {
     434                        logger.error(ex.getMessage(), ex);
     435                        return;
     436                }
     437
     438                try {
     439                        deleteAnnotationsPerGlycan(glycanFilesPath,gogCheckerForMS1);  // clean up temporary folder of data
     440                } catch ( Exception ex ) {
     441                        logger.error(ex.getMessage(), ex);
     442                }
     443        }
     444}}}
     445
     446    6) Close compressed file
     447{{{
     448                try {
     449                        compressedFile.close();
     450                }catch(Exception ex){
     451                        logger.error("Error closing compressed file", ex);
     452                }
     453}}}