001package org.biopax.paxtools.examples; 002 003import org.biopax.paxtools.controller.ModelUtils; 004import org.biopax.paxtools.io.BioPAXIOHandler; 005import org.biopax.paxtools.io.SimpleIOHandler; 006//import org.biopax.paxtools.io.sif.InteractionRule; 007//import org.biopax.paxtools.io.sif.SimpleInteractionConverter; 008import org.biopax.paxtools.model.Model; 009import org.biopax.paxtools.pattern.miner.OldFormatWriter; 010import org.biopax.paxtools.pattern.miner.SIFEnum; 011import org.biopax.paxtools.pattern.miner.SIFInteraction; 012import org.biopax.paxtools.pattern.miner.SIFSearcher; 013 014import java.io.FileInputStream; 015import java.io.FileOutputStream; 016import java.io.IOException; 017import java.io.OutputStream; 018//import java.util.Arrays; 019import java.util.Set; 020 021/** 022 * This example exports A BioPAX model to SIF. 023 * 024 * To use specific rules uncomment the rule enumeration below. 025 * 026 */ 027public final class SifnxExportExample { 028 029 public static void main(String[] args) throws IOException { 030 if (args.length != 2) { 031 System.out.println("Please run again providing arguments: " 032 + "input(BioPAX OWL file), output"); 033 System.exit(-1); 034 } 035 036 // import BioPAX from OWL file (auto-detects level) 037 BioPAXIOHandler biopaxReader = new SimpleIOHandler(); 038 Model model = biopaxReader.convertFromOWL(new FileInputStream(args[0])); 039 040// SimpleInteractionConverter sic = // add all rules 041// new SimpleInteractionConverter(SimpleInteractionConverter 042// .getRules(model.getLevel()).toArray(new InteractionRule[]{})); 043 044 /* or - use some of the rules - 045 SimpleInteractionConverter sic = null; 046 if (BioPAXLevel.L2.equals(model.getLevel())) { 047 sic = new SimpleInteractionConverter( 048 new org.biopax.paxtools.io.sif.level2.ComponentRule(), 049 new org.biopax.paxtools.io.sif.level2.ConsecutiveCatalysisRule(), 050 new org.biopax.paxtools.io.sif.level2.ControlRule(), 051 new org.biopax.paxtools.io.sif.level2.ControlsTogetherRule(), 052 new org.biopax.paxtools.io.sif.level2.ParticipatesRule()); 053 } else if (BioPAXLevel.L3.equals(model.getLevel())) { 054 sic = new SimpleInteractionConverter( 055 new org.biopax.paxtools.io.sif.level3.ComponentRule(), 056 new org.biopax.paxtools.io.sif.level3.ConsecutiveCatalysisRule(), 057 new org.biopax.paxtools.io.sif.level3.ControlRule(), 058 new org.biopax.paxtools.io.sif.level3.ControlsTogetherRule(), 059 new org.biopax.paxtools.io.sif.level3.ParticipatesRule()); 060 } else { 061 System.err.println("SIF converter does not yet support BioPAX level: " 062 + model.getLevel()); 063 System.exit(0); 064 } 065 */ 066// OutputStream edgeStream = new FileOutputStream(args[1]); 067// OutputStream nodeStream = new FileOutputStream(args[2]); 068// sic.writeInteractionsInSIFNX(model, edgeStream, nodeStream, 069// null, Arrays.asList("entity/NAME","entity/XREF"),false); 070 071 ModelUtils.mergeEquivalentInteractions(model); 072 073 SIFSearcher searcher = new SIFSearcher(SIFEnum.values()); 074// searcher.setBlacklist(blacklist); //good to have a blacklist of ubiquitous molecules 075 Set<SIFInteraction> binaryInts = searcher.searchSIF(model); 076 OutputStream out = new FileOutputStream(args[1]); 077 OldFormatWriter.write(binaryInts, out); 078 try {out.close();} catch(Throwable t) {} 079 } 080 081}