Changeset 865

Show
Ignore:
Timestamp:
23-07-12 21:47:28 (21 months ago)
Author:
hailiang.mei@…
Message:

update logging setup & fix for alternative notations.

Location:
trunk/code/conceptwiki/imports
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/code/conceptwiki/imports/imports-common/src/main/java/nl/nbic/conceptwiki/imports/common/AbstractConceptImporter.java

    r858 r865  
    11package nl.nbic.conceptwiki.imports.common; 
    22 
     3import java.io.FileWriter; 
     4import java.io.IOException; 
     5import java.io.PrintWriter; 
     6import java.io.StringWriter; 
    37import java.util.HashSet; 
    48import java.util.Iterator; 
     
    3034import org.h2.util.StringUtils; 
    3135import org.neo4j.graphdb.Transaction; 
     36import org.neo4j.graphdb.TransactionFailureException; 
    3237import org.slf4j.Logger; 
    3338import org.slf4j.LoggerFactory; 
     
    5257     * an initial size for the tag cache. 
    5358     */ 
    54     public static final int INITIAL_TAG_CACHE_SIZE = 1000000; 
     59    public static final int INITIAL_TAG_CACHE_SIZE = 2000000; 
    5560    /** 
    5661     * Import chunk size. 
     
    130135     */ 
    131136    private Set<Concept> tagCache; 
     137     
     138    private FileWriter debugWriter; 
    132139 
    133140    /** 
     
    143150    public void start() { 
    144151        System.out.println("AbstractConceptImporter.start()"); 
     152         
     153        try { 
     154                debugWriter = new FileWriter("/tmp/swissprot_debug.log"); 
     155        } catch (IOException e) { 
     156                logger.error("Could not open debug log file to write to", e); 
     157        } 
     158         
    145159        if (reader.requiresBootstrap()) { 
    146160            processBootstrapConcepts(reader.getBootstrapConcepts()); 
    147             //FIXME is this the best way to send bootstrap concepts to the specific layer? 
     161//            //FIXME is this the best way to send bootstrap concepts to the specific layer? 
    148162            configureBootstrapConceptsAtImporter(reader.getBootstrapConcepts()); 
    149163            processBootstrapTags(reader.getBootstrapConceptTags()); 
     
    155169        processTriples(reader.getNewTriples()); 
    156170        processDeletedTriples(reader.getDeletedTriples()); 
     171         
     172        try { 
     173                debugWriter.close(); 
     174        } catch (IOException e) { 
     175                logger.warn("Could not properly close the debugwriter", e); 
     176        } 
    157177    } 
    158178     
     
    228248                 
    229249                if (!conceptUtility.changeSetIsEmpty(diffInImportBranch)) { 
    230                     conceptService.updateConcept(target.getUuid(), diffInImportBranch, importBranch); 
     250                        try { 
     251                                conceptService.updateConcept(target.getUuid(), diffInImportBranch, importBranch); 
     252                        } catch (Exception e) { 
     253                                try { 
     254                                        debugWriter.write(conceptUtility.getPreferredLabel(potentialSwissProtConcept, LANG_EN).getText() + "\n"); 
     255                                        for (Notation notation : potentialSwissProtConcept.getNotations()) { 
     256                                                debugWriter.write(notation.getCode() + "\n"); 
     257                                        }                                                
     258                                        debugWriter.write(e.getMessage()+"\n"); 
     259                                         
     260                                        final StringWriter sw = new StringWriter(); 
     261                                        final PrintWriter writer = new PrintWriter(sw); 
     262                                        e.printStackTrace(writer); 
     263                                        debugWriter.write(sw.toString() + "\n"); 
     264                                         
     265                                        debugWriter.write("-------------------\n\n"); 
     266                                        debugWriter.flush(); 
     267                                                                                 
     268                                } catch (IOException ioe) { 
     269                                        logger.warn("Could not write to debug file", ioe); 
     270                                } 
     271                        } 
     272                     
    231273                }         
    232274                 
     
    673715    private Transaction updateTransaction(final Transaction tx, final int position, final int batchSize) { 
    674716        if (position % batchSize == 0) { 
    675             finishTransaction(tx, position); 
     717                try { 
     718                        finishTransaction(tx, position); 
     719                } catch (TransactionFailureException e) { 
     720                        logger.warn("Could not commit transaction due to unknown cause", e); 
     721                        final StringWriter sw = new StringWriter(); 
     722                        final PrintWriter writer = new PrintWriter(sw); 
     723                        e.printStackTrace(writer);               
     724                } 
    676725            return startTransaction(); 
    677726        } 
  • trunk/code/conceptwiki/imports/imports-swissprot/src/main/java/nl/nbic/conceptwiki/imports/swissprot/SwissProtImporter.java

    r858 r865  
    55 
    66import java.io.IOException; 
    7 //import java.util.Date; 
     7import java.util.Date; 
    88import java.util.Iterator; 
    99import java.util.List; 
     
    2323import org.slf4j.Logger; 
    2424import org.slf4j.LoggerFactory; 
    25 //import org.springframework.context.ApplicationContext; 
    26 //import org.springframework.context.support.ClassPathXmlApplicationContext; 
     25import org.springframework.context.ApplicationContext; 
     26import org.springframework.context.support.ClassPathXmlApplicationContext; 
    2727import org.springframework.stereotype.Service; 
    2828 
     
    137137            // get the mapped UMLS concept in SwissProt branch.            
    138138             
    139             final List<Concept> umlsConcepts =  
    140                     conceptService.getConceptsByNotation(mappedUMLSID, QueryScopeImpl.FULL_SCOPE, SEARCH_LIMIT, UMLS_BRANCH); 
     139            final List<Concept> umlsConcepts = conceptService.getConceptsByNotation(mappedUMLSID, FULL_SCOPE, SEARCH_LIMIT, UMLS_BRANCH); 
    141140             
    142141            if (umlsConcepts.size() == 1) { 
     
    254253    @Override 
    255254    protected Concept getBootstrapTag(final Concept concept) { 
    256                  
    257         // hardcoded way handling UMLS gene tag and protein tag.         
     255//       
     256//      for (Notation notation : concept.getNotations()) { 
     257//              System.out.println(notation.getCode()); 
     258//      } 
     259//       
     260//      for (Label label : concept.getLabels()) { 
     261//              System.out.println(label.getText()); 
     262//      } 
     263         
     264        // hardcoded way handling UMLS gene tag and protein tag. 
    258265        if (conceptUtility.getPreferredLabel(concept, LANG_EN) != null) { 
    259266            if (PROTEIN_TYPE.equals(conceptUtility.getPreferredLabel(concept, LANG_EN).getText())) { 
     
    436443        } 
    437444         
     445//        if (count > 1) { 
     446//            throw new RuntimeException("Search with notation and tag results to more than 1 hits: " 
     447//                    + notation.getCode() + FILED_SEPARATOR + conceptUtility.getPreferredLabel(tag, LANG_EN).getText()); 
     448//        } 
     449         
    438450        if (count > 1) { 
    439             throw new RuntimeException("Search with notation and tag results to more than 1 hits: " 
    440                     + notation.getCode() + FILED_SEPARATOR + conceptUtility.getPreferredLabel(tag, LANG_EN).getText()); 
     451                return null; 
    441452        } 
    442453         
     
    506517        if (count > 1) {       
    507518            final String tagLabel = (tag == null) ? "null" : conceptUtility.getPreferredLabel(tag, LANG_EN).getText(); 
     519            System.out.println("label: " + label.getText()); 
     520            System.out.println("count: " + count); 
     521            System.out.println("branchId: " + branchId); 
     522            if (tag != null) { 
     523                System.out.println("required tag: " + tag.getUuid()); 
     524            } 
     525            for (Concept result: results) {              
     526                System.out.println("result: " + result.getUuid()); 
     527                for (Label haslabel : result.getLabels()) { 
     528                        System.out.println("haslabel: " + haslabel.getType().toString() + " : " + haslabel.getText()); 
     529                } 
     530                for (Concept hastag : result.getTags()) { 
     531                        System.out.println("hastag: " + hastag.getUuid()); 
     532                        System.out.println("hastag: " + conceptUtility.getPreferredLabel(hastag, LANG_EN).getText()); 
     533                } 
     534            } 
     535             
    508536            throw new RuntimeException("Search with label and tag results to more than 1 hits: " 
    509537                    + label.getText() + FILED_SEPARATOR + tagLabel);   
     
    689717//    } 
    690718     
    691 //    /** 
    692 //     * Main loop. 
    693 //     * @param args input arguments 
    694 //     * @throws Exception in case errors 
    695 //     */ 
    696 //    public static void main(final String[] args) throws Exception { 
    697 //        final Date date = new Date(); 
    698 //         
    699 //        final ApplicationContext ctx = new ClassPathXmlApplicationContext( 
    700 //                "nl/nbic/conceptwiki/imports/swissprot/import-swissprot-context.xml"); 
    701 //        final SwissProtImporter spImporter = (SwissProtImporter)ctx.getBean(SwissProtImporter.class); 
    702 // 
    703 //        
    704 //        final long start = date.getTime(); 
    705 //                 
    706 //        // start the import 
    707 //        spImporter.init(); 
    708 //        spImporter.start(); 
    709 //        final long end = date.getTime(); 
    710 //         
    711 //        System.out.println("started :" + start); 
    712 //        System.out.println("ended :" + end); 
    713 //         
    714 //        final String duration = Long.toString((end - start)/1000/60); 
    715 //         
    716 //        System.out.println("Done! SwissProt import finished in " + duration + " minutes."); 
    717 //    } 
     719    void test() { 
     720        Concept tag = null; 
     721        Concept resultConcept = null; 
     722        int count = 0; 
     723         
     724        String input = "ADM"; 
     725                 
     726        final List<Concept> results = conceptService.getConceptsByLabelExactMatch( 
     727                        input, FULL_SCOPE, SEARCH_LIMIT, CONCEPTWIKI_BRANCH); 
     728         
     729        for (Concept result: results) { 
     730            if (tag == null || (tag != null && result.getTags().contains(tag))) { 
     731                // when tag is undefined or the defined tag is found. 
     732                count++; 
     733                resultConcept = result; 
     734            } 
     735        } 
     736         
     737        if (count > 1) {       
     738            final String tagLabel = (tag == null) ? "null" : conceptUtility.getPreferredLabel(tag, LANG_EN).getText(); 
     739            throw new RuntimeException("Search with label and tag results to more than 1 hits: " 
     740                    + input + FILED_SEPARATOR + tagLabel);   
     741        } 
     742         
     743    } 
     744     
     745    /** 
     746     * Main loop. 
     747     * @param args input arguments 
     748     * @throws Exception in case errors 
     749     */ 
     750    public static void main(final String[] args) throws Exception { 
     751         
     752        final ApplicationContext ctx = new ClassPathXmlApplicationContext( 
     753                "nl/nbic/conceptwiki/imports/swissprot/import-swissprot-context.xml"); 
     754        final SwissProtImporter spImporter = (SwissProtImporter)ctx.getBean(SwissProtImporter.class); 
     755 
     756        final long start = new Date().getTime(); 
     757                 
     758//         start the import 
     759        spImporter.init(); 
     760        spImporter.start(); 
     761         
     762//        spImporter.test(); 
     763         
     764        final long end = new Date().getTime(); 
     765         
     766        System.out.println("started :" + start); 
     767        System.out.println("ended :" + end); 
     768         
     769        final String duration = Long.toString((end - start)/1000/60); 
     770         
     771        System.out.println("Done! SwissProt import finished in " + duration + " minutes."); 
     772    } 
    718773} 
  • trunk/code/conceptwiki/imports/imports-swissprot/src/main/java/nl/nbic/conceptwiki/imports/swissprot/SwissProtReader.java

    r858 r865  
    210210    public void setDataSource(final T dataSource) { 
    211211 
    212         System.out.println("SwissProtReader.setDataSource()"); 
     212        logger.info("SwissProtReader.setDataSource()"); 
    213213        this.dataSource = (SwissProtDataSource)dataSource; 
    214214         
     
    262262    @Override 
    263263    public Iterator<BootstrapConceptEnvelop> getBootstrapConcepts() { 
    264         System.out.println("SwissProtReader.getBootstrapConcepts()"); 
     264        logger.info("SwissProtReader.getBootstrapConcepts()"); 
    265265        return bootstrapConcepts.iterator(); 
    266266    } 
     
    268268    @Override 
    269269    public Iterator<BootstrapConceptEnvelop> getBootstrapTags() { 
    270         System.out.println("SwissProtReader.getBootstrapTags()"); 
     270        logger.info("SwissProtReader.getBootstrapTags()"); 
    271271        Iterator<BootstrapConceptEnvelop> iter = null; 
    272272         
     
    286286    @Override 
    287287    public Iterator<Concept> getDeletedConcepts() { 
    288         System.out.println("SwissProtReader.getDeletedConcepts()"); 
     288        logger.info("SwissProtReader.getDeletedConcepts()"); 
    289289        Iterator<Concept> iter = null; 
    290290         
     
    347347    @Override 
    348348    public Iterator<Concept> getNewConcepts() { 
    349         System.out.println("SwissProtReader.getNewConcepts()"); 
     349        logger.info("SwissProtReader.getNewConcepts()"); 
    350350         
    351351        Iterator<Concept> iter = null; 
     
    373373    @Override 
    374374    public Iterator<Triple> getNewTriples() { 
    375         System.out.println("SwissProtReader.getNewTriples()"); 
     375        logger.info("SwissProtReader.getNewTriples()"); 
    376376        Iterator<Triple> iter = null;         
    377377        try { 
     
    398398         
    399399        // Some bootstrap concepts should be made as tags. 
    400         final Set<BootstrapConceptEnvelop> bootstrapTags =  Sets.newHashSet(); //loadBootstrapTagsFromBoostrapConcepts(); 
     400        final Set<BootstrapConceptEnvelop> bootstrapTags =  Sets.newHashSet(); 
    401401         
    402402        final Map<String, BootstrapConceptEnvelop> bootstrapGenericProteinTags = Maps.newHashMap(); 
     
    695695//                    .build(); 
    696696        } 
    697          
     697                 
    698698        final String genericGenePreferredName = getGenericGenePreferredNameFromEntry(entry); 
    699699