PK CpC< META-INF/PK BpC<6##META-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 11.3-b02 (Sun Microsystems Inc.) Main-Class: BaumWelchLearner.MHMMotif Class-Path: lib/biojava-1.30-jdk14.jar lib/BlastObject.jar lib/colt.ja r lib/MyHMM.jar X-COMMENT: Main-Class will be added automatically by build PK CpC<AbInitioQuery/PK ApC<BaumWelchLearner/PK CpC<BaumWelchLearner/Parameters/PK CpC<"BaumWelchLearner/Parameters/Linux/PK CpC<'BaumWelchLearner/Parameters/Prediction/PK CpC< BlastParsers/PK CpC<BlastParsers/Parameters/PK @pC< Distributed/PK CpC<Distributed/Client/PK ApC<Distributed/Client/Compute/PK CpC<Distributed/Engine/PK CpC<Distributed/Threads/PK ApC< HTMLquery/PK ApC<Interpolations/PK BpC<MicroarrayAnalysis/PK BpC<MicroarrayAnalysis/Parameters/PK @pC<MyHMMParallel/PK CpC<MyHMMParallel/distributions/PK CpC<MyHMMParallel/jahmm/PK BpC<.MyHMMParallel/jahmm/WithEmptyStatesConversion/PK CpC</MyHMMParallel/jahmm/WithEmptyStatesExperiments/PK CpC<MyHMMParallel/jahmm/learn/PK CpC<MyHMMParallel/jahmm/toolbox/PK CpC<ServiceRoutines/PK CpC< SpliceScanII/PK CpC<SpliceScanII/Parameters/PK ApC< SpliceScanII/Parameters/Sensors/PK CpC<-SpliceScanII/Parameters/Sensors/splicemodels/PK CpC<:SpliceScanII/Parameters/Sensors/splicemodels/GCsensorData/PK CpC<UCSCsequencing/PK CpC<UCSCsequencing/Parameters/PK ApC()VCodeLineNumberTableLocalVariableTablethis"LAbInitioQuery/ExonScanOutlinerLL;handleStartTagoTag InnerClassesJ(Ljavax/swing/text/html/HTML$Tag;Ljavax/swing/text/MutableAttributeSet;I)Vtag Ljavax/swing/text/html/HTML$Tag; attributes&Ljavax/swing/text/MutableAttributeSet;positionI handleEndTag$(Ljavax/swing/text/html/HTML$Tag;I)V handleText([CI)VnextLjava/lang/String;itheLinestLjava/util/StringTokenizer;fLServiceRoutines/Fragment;theTextlines headerHittext[CgetMap()Ljava/lang/Object; SourceFileExonScanOutlinerLL.java &' $%!BlastObject/ConvertibleLinkedList "# p3java/lang/String &q rs tsjava/util/StringTokenizer &u vw xs------- yz {z*** NO EXONS PREDICTED *** |z () ServiceRoutines/FragmentExon }~   AbInitioQuery/ExonScanOutlinerLL!AbInitioQuery/GenericHTMLOutlinerjavax/swing/text/html/HTML$TagPRE([C)Vtrim()Ljava/lang/String; toLowerCase'(Ljava/lang/String;Ljava/lang/String;)V hasMoreTokens()Z nextToken startsWith(Ljava/lang/String;)ZendsWithequalsIgnoreCasesetType(Ljava/lang/String;)Vjava/lang/IntegerparseInt(Ljava/lang/String;)IsetStart(I)VsetEndjava/lang/Double parseDouble(Ljava/lang/String;)DsetScore(D)Vadd(Ljava/lang/Object;)Zjavax/swing/text/html/HTML! !"#$%&'(K***Y) * +,-1(Y +*)  ** +, 23 45 6789(O +*)  !*  +, 23 67:;( *Y+ N Y- :6: 6 » Y :Y:6 O:   0 '       *W<)r-./"0%1-346H8K9N;V<f>s?|ABCDEFHIKLBQRTW*p ?<= T>7 4?=sv@A|mBCD="EA%F%+,GH67IJ(/*)[* +,KL0 .n/ PK ApC()VCodeLineNumberTableLocalVariableTablethis!LAbInitioQuery/GenScanOutlinerLL;handleStartTag}Tag InnerClassesJ(Ljavax/swing/text/html/HTML$Tag;Ljavax/swing/text/MutableAttributeSet;I)Vtag Ljavax/swing/text/html/HTML$Tag; attributes&Ljavax/swing/text/MutableAttributeSet;positionI handleEndTag$(Ljavax/swing/text/html/HTML$Tag;I)V handleText([CI)VnextLjava/lang/String;itheLinestLjava/util/StringTokenizer;fLServiceRoutines/Fragment;theTextlinestext[CgetMap()Ljava/lang/Object; SourceFileGenScanOutlinerLL.java ./ +, -,!BlastObject/ConvertibleLinkedList )* ~; ;java/lang/String . java/util/StringTokenizer . init intrterm ServiceRoutines/Fragment -   InitIntrTermExon AbInitioQuery/GenScanOutlinerLL!AbInitioQuery/GenericHTMLOutlinerjavax/swing/text/html/HTML$TagPRESTRONG([C)Vtrim()Ljava/lang/String; toLowerCase'(Ljava/lang/String;Ljava/lang/String;)V hasMoreTokens()Z nextTokenindexOf(Ljava/lang/String;)IsetType(Ljava/lang/String;)VequalsIgnoreCase(Ljava/lang/String;)Zjava/lang/IntegerparseIntsetStart(I)VsetEndjava/lang/Double parseDouble(Ljava/lang/String;)DsetScore(D)VgetTypeadd(Ljava/lang/Object;)Zjavax/swing/text/html/HTML!'()*+,-,./0T****Y1 2 34590l+ *+*12*34:;<=>?@A0b+ *+*1%&'2 34:;>?BC0. 2*-*& Y+ N Y-::л Y:Y:6m:   P @:@ '    E!"!#!$%*&W*&W1~89:);1<8=Y?\AiBrC}DEFGIJKMNOPQRCWYZ[$]._1c2f ]DE urF?8GEiHIrJKLE)MI2342NO2>?PQ0/*1g2 34RS8 6|7 PK BpC<@{{$AbInitioQuery/GenScanOutlinerLL.javapackage AbInitioQuery; import ServiceRoutines.*; import BlastObject.*; import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.text.html.parser.*; import java.io.*; import java.net.*; import java.util.*; public class GenScanOutlinerLL extends GenericHTMLOutliner { private ConvertibleLinkedList map; private boolean insidePre = false; private boolean insideStrong = false; /** * Read from input stream */ public GenScanOutlinerLL() { map = new ConvertibleLinkedList(); } /** * Example of the start tag handler */ public void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes, int position) { if(tag == HTML.Tag.PRE) insidePre = true; else if(tag == HTML.Tag.STRONG) insideStrong = true; } /** * Example of an end tag handler */ public void handleEndTag(HTML.Tag tag, int position) { if(tag == HTML.Tag.PRE) insidePre = false; else if(tag == HTML.Tag.STRONG) insideStrong = false; } /** * Handle the text within the tag *Gn.Ex Type S .Begin ...End .Len Fr Ph I/Ac Do/T CodRg P.... Tscr.. * ----- ---- - ------ ------ ---- -- -- ---- ---- ----- ----- ------ * 1.01 Init + 2282 2298 17 1 2 56 94 26 0.511 -0.20 * 1.02 Intr + 2845 2990 146 1 2 83 105 155 0.686 17.14 * 1.03 Intr + 3463 3553 91 2 1 64 55 222 0.997 16.05 * 1.04 Intr + 3753 3880 128 0 2 77 62 169 0.967 14.03 * 1.05 Intr + 4040 4119 80 0 2 110 64 126 0.964 12.17 * 1.06 Intr + 4216 4428 213 0 0 74 44 300 0.378 23.64 * 1.07 Intr + 6279 6365 87 2 0 81 81 162 0.628 15.46 * 1.08 Term + 7220 7423 204 1 0 61 47 130 0.740 3.89 * 1.09 PlyA + 7728 7733 6 -1.75 */ public void handleText(char[] text, int position) { if(insidePre && insideStrong) { String theText = new String(text).trim().toLowerCase(); StringTokenizer lines = new StringTokenizer(theText,"\n"); while(lines.hasMoreTokens()) { String theLine = lines.nextToken(); if(theLine.indexOf("init") == -1 && theLine.indexOf("intr") == -1 && theLine.indexOf("term") == -1) continue; StringTokenizer st = new StringTokenizer(theLine," "); Fragment f = new Fragment(); for(int i = 0; st.hasMoreTokens(); i++) { String next = st.nextToken(); if(i == 1) f.setType(next); else if(i == 2) { // Strand must be positive if(next.equalsIgnoreCase("-")) { f = null; break; } } else if(i == 3) { f.setStart(Integer.parseInt(next)); } else if(i == 4) { f.setEnd(Integer.parseInt(next)); } else if(i == 11) { f.setScore(Double.parseDouble(next)); } } // Add the fragment into map if(f != null) { // Decorate with Donors if(f.getType().equalsIgnoreCase("Init") || f.getType().equalsIgnoreCase("Intr") || f.getType().equalsIgnoreCase("Term")) { f.setType("Exon"); map.add(f); } else continue; map.add(f); } } // System.out.println(theLine); } return; } public Object getMap() { return map; } } /* * Attributes for HTML tags HTML.Attribute.ACTION HTML.Attribute.ALIGN HTML.Attribute.ALINK HTML.Attribute.ALT HTML.Attribute.ARCHIVE HTML.Attribute.BACKGROUND HTML.Attribute.BGCOLOR HTML.Attribute.BORDER HTML.Attribute.CELLPADDING HTML.Attribute.CELLSPACING HTML.Attribute.CHECKED HTML.Attribute.CLASS HTML.Attribute.CLASSID HTML.Attribute.CLEAR HTML.Attribute.CODE HTML.Attribute.CODEBASE HTML.Attribute.CODETYPE HTML.Attribute.COLOR HTML.Attribute.COLS HTML.Attribute.COLSPAN HTML.Attribute.COMMENT HTML.Attribute.COMPACT HTML.Attribute.CONTENTNNSpliceOutliner HTML.Attribute.COORDS HTML.Attribute.DATA HTML.Attribute.DECLARE HTML.Attribute.DIR HTML.Attribute.DUMMY HTML.Attribute.ENCTYPE HTML.Attribute.ENDTAG HTML.Attribute.FACE HTML.Attribute.FRAMEBORDER HTML.Attribute.HALIGN HTML.Attribute.HEIGHT HTML.Attribute.HREF HTML.Attribute.HSPACE HTML.Attribute.HTTPEQUIV HTML.Attribute.ID HTML.Attribute.ISMAP HTML.Attribute.LANG HTML.Attribute.LANGUAGE HTML.Attribute.LINK HTML.Attribute.LOWSRC HTML.Attribute.MARGINHEIGHT HTML.Attribute.MARGINWIDTH HTML.Attribute.MAXLENGTH HTML.Attribute.METHOD HTML.Attribute.MULTIPLE HTML.Attribute.N HTML.Attribute.NAME HTML.Attribute.NOHREF HTML.Attribute.NORESIZE HTML.Attribute.NOSHADE HTML.Attribute.NOWRAP HTML.Attribute.PROMPT HTML.Attribute.REL HTML.Attribute.REV HTML.Attribute.ROWS HTML.Attribute.ROWSPAN HTML.Attribute.SCROLLING HTML.Attribute.SELECTED HTML.Attribute.SHAPE HTML.Attribute.SHAPES HTML.Attribute.SIZE HTML.Attribute.SRC HTML.Attribute.STANDBY HTML.Attribute.START HTML.Attribute.STYLE HTML.Attribute.TARGET HTML.Attribute.TEXT HTML.Attribute.TITLE HTML.Attribute.TYPE HTML.Attribute.USEMAP HTML.Attribute.VALIGN HTML.Attribute.VALUE HTML.Attribute.VALUETYPE HTML.Attribute.VERSION HTML.Attribute.VLINK HTML.Attribute.VSPACE HTML.Attribute.WIDTH */ /* * Html tags HTML.Tag.A HTML.Tag.ADDRESS HTML.Tag.APPLET HTML.Tag.AREA HTML.Tag.B HTML.Tag.BASE HTML.Tag.BASEFONT HTML.Tag.BIG HTML.Tag.BLOCKQUOTE HTML.Tag.BODY HTML.Tag.BR HTML.Tag.CAPTION HTML.Tag.CENTER HTML.Tag.CITE HTML.Tag.CODE HTML.Tag.DD HTML.Tag.DFN HTML.Tag.DIR HTML.Tag.DIV HTML.Tag.DL HTML.Tag.DT HTML.Tag.EM HTML.Tag.FONT HTML.Tag.FORM HTML.Tag.FRAME HTML.Tag.FRAMESET HTML.Tag.H1 HTML.Tag.H2 HTML.Tag.H3 HTML.Tag.H4 HTML.Tag.H5 HTML.Tag.H6 HTML.Tag.HEAD HTML.Tag.HR HTML.Tag.HTML HTML.Tag.I HTML.Tag.IMG HTML.Tag.INPUT HTML.Tag.ISINDEX HTML.Tag.KBD HTML.Tag.LI HTML.Tag.LINK HTML.Tag.MAP HTML.Tag.MENU HTML.Tag.META HTML.Tag.NOFRAMES HTML.Tag.OBJECT HTML.Tag.OL HTML.Tag.OPTION HTML.Tag.P HTML.Tag.PARAM HTML.Tag.PRE HTML.Tag.SAMP HTML.Tag.SCRIPT HTML.Tag.SELECT HTML.Tag.SMALL HTML.Tag.STRIKE HTML.Tag.S HTML.Tag.STRONG HTML.Tag.STYLE HTML.Tag.SUB HTML.Tag.SUP HTML.Tag.TABLE HTML.Tag.TD HTML.Tag.TEXTAREA HTML.Tag.TH HTML.Tag.TR HTML.Tag.TT HTML.Tag.U HTML.Tag.UL HTML.Tag.VAR HTML.Tag.IMPLIED HTML.Tag.COMMENT */ PK @pC()VCodeLineNumberTableLocalVariableTablethis#LAbInitioQuery/GenericHTMLOutliner;process/(Ljava/io/InputStreamReader;)Ljava/lang/Object;eLjava/lang/Exception;inLjava/io/InputStreamReader;parser:Parser InnerClasses,Ljavax/swing/text/html/HTMLEditorKit$Parser;getMap()Ljava/lang/Object;handleStartTag<TagJ(Ljavax/swing/text/html/HTML$Tag;Ljavax/swing/text/MutableAttributeSet;I)V handleEndTag$(Ljavax/swing/text/html/HTML$Tag;I)V handleText([CI)V SourceFileGenericHTMLOutliner.java AbInitioQuery/ParserGetter => ?@java/lang/Exception A"java/lang/IllegalArgumentException'Something went wrong with the web query B !!AbInitioQuery/GenericHTMLOutlinerC2javax/swing/text/html/HTMLEditorKit$ParserCallbackParserCallback*javax/swing/text/html/HTMLEditorKit$ParserDjavax/swing/text/html/HTML$Tag getParser.()Ljavax/swing/text/html/HTMLEditorKit$Parser;parseH(Ljava/io/Reader;Ljavax/swing/text/html/HTMLEditorKit$ParserCallback;Z)VprintStackTrace(Ljava/lang/String;)V#javax/swing/text/html/HTMLEditorKitjavax/swing/text/html/HTML! /*  )YM,+*N-Y *   $*))  !"%&'()*+7 #;$ 79 PK CpC<Ȝ&AbInitioQuery/GenericHTMLOutliner.javapackage AbInitioQuery; import javax.swing.text.*; import javax.swing.text.html.*; import java.io.*; public abstract class GenericHTMLOutliner extends HTMLEditorKit.ParserCallback { /** * Read from input stream */ public GenericHTMLOutliner() { } /** * Process certain input stream */ public Object process(InputStreamReader in) { HTMLEditorKit.Parser parser = (new ParserGetter()).getParser(); try { parser.parse(in, this, true); } catch (Exception e) { e.printStackTrace(); throw new IllegalArgumentException("Something went wrong with the web query"); } return getMap(); } public abstract Object getMap(); /** * Example of the start tag handler */ public abstract void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes, int position); /** * Example of an end tag handler */ public abstract void handleEndTag(HTML.Tag tag, int position); /** * Handle the text within the tag */ public abstract void handleText(char[] text, int position); } /* * Attributes for HTML tags HTML.Attribute.ACTION HTML.Attribute.ALIGN HTML.Attribute.ALINK HTML.Attribute.ALT HTML.Attribute.ARCHIVE HTML.Attribute.BACKGROUND HTML.Attribute.BGCOLOR HTML.Attribute.BORDER HTML.Attribute.CELLPADDING HTML.Attribute.CELLSPACING HTML.Attribute.CHECKED HTML.Attribute.CLASS HTML.Attribute.CLASSID HTML.Attribute.CLEAR HTML.Attribute.CODE HTML.Attribute.CODEBASE HTML.Attribute.CODETYPE HTML.Attribute.COLOR HTML.Attribute.COLS HTML.Attribute.COLSPAN HTML.Attribute.COMMENT HTML.Attribute.COMPACT HTML.Attribute.CONTENT HTML.Attribute.COORDS HTML.Attribute.DATA HTML.Attribute.DECLARE HTML.Attribute.DIR HTML.Attribute.DUMMY HTML.Attribute.ENCTYPE HTML.Attribute.ENDTAG HTML.Attribute.FACE HTML.Attribute.FRAMEBORDER HTML.Attribute.HALIGN HTML.Attribute.HEIGHT HTML.Attribute.HREF HTML.Attribute.HSPACE HTML.Attribute.HTTPEQUIV HTML.Attribute.ID HTML.Attribute.ISMAP HTML.Attribute.LANG HTML.Attribute.LANGUAGE HTML.Attribute.LINK HTML.Attribute.LOWSRC HTML.Attribute.MARGINHEIGHT HTML.Attribute.MARGINWIDTH HTML.Attribute.MAXLENGTH HTML.Attribute.METHOD HTML.Attribute.MULTIPLE HTML.Attribute.N HTML.Attribute.NAME HTML.Attribute.NOHREF HTML.Attribute.NORESIZE HTML.Attribute.NOSHADE HTML.Attribute.NOWRAP HTML.Attribute.PROMPT HTML.Attribute.REL HTML.Attribute.REV HTML.Attribute.ROWS HTML.Attribute.ROWSPAN HTML.Attribute.SCROLLING HTML.Attribute.SELECTED HTML.Attribute.SHAPE HTML.Attribute.SHAPES HTML.Attribute.SIZE HTML.Attribute.SRC HTML.Attribute.STANDBY HTML.Attribute.START HTML.Attribute.STYLE HTML.Attribute.TARGET HTML.Attribute.TEXT HTML.Attribute.TITLE HTML.Attribute.TYPE HTML.Attribute.USEMAP HTML.Attribute.VALIGN HTML.Attribute.VALUE HTML.Attribute.VALUETYPE HTML.Attribute.VERSION HTML.Attribute.VLINK HTML.Attribute.VSPACE HTML.Attribute.WIDTH */ /* * Html tags HTML.Tag.A HTML.Tag.ADDRESS HTML.Tag.APPLET HTML.Tag.AREA HTML.Tag.B HTML.Tag.BASE HTML.Tag.BASEFONT HTML.Tag.BIG HTML.Tag.BLOCKQUOTE HTML.Tag.BODY HTML.Tag.BR HTML.Tag.CAPTION HTML.Tag.CENTER HTML.Tag.CITE HTML.Tag.CODE HTML.Tag.DD HTML.Tag.DFN HTML.Tag.DIR HTML.Tag.DIV HTML.Tag.DL HTML.Tag.DT HTML.Tag.EM HTML.Tag.FONT HTML.Tag.FORM HTML.Tag.FRAME HTML.Tag.FRAMESET HTML.Tag.H1 HTML.Tag.H2 HTML.Tag.H3 HTML.Tag.H4 HTML.Tag.H5 HTML.Tag.H6 HTML.Tag.HEAD HTML.Tag.HR HTML.Tag.HTML HTML.Tag.I HTML.Tag.IMG HTML.Tag.INPUT HTML.Tag.ISINDEX HTML.Tag.KBD HTML.Tag.LI HTML.Tag.LINK HTML.Tag.MAP HTML.Tag.MENU HTML.Tag.META HTML.Tag.NOFRAMES HTML.Tag.OBJECT HTML.Tag.OL HTML.Tag.OPTION HTML.Tag.P HTML.Tag.PARAM HTML.Tag.PRE HTML.Tag.SAMP HTML.Tag.SCRIPT HTML.Tag.SELECT HTML.Tag.SMALL HTML.Tag.STRIKE HTML.Tag.S HTML.Tag.STRONG HTML.Tag.STYLE HTML.Tag.SUB HTML.Tag.SUP HTML.Tag.TABLE HTML.Tag.TD HTML.Tag.TEXTAREA HTML.Tag.TH HTML.Tag.TR HTML.Tag.TT HTML.Tag.U HTML.Tag.UL HTML.Tag.VAR HTML.Tag.IMPLIED HTML.Tag.COMMENT */ PK @pC<|; AbInitioQuery/ParserGetter.class1  ()VCodeLineNumberTableLocalVariableTablethisLAbInitioQuery/ParserGetter; getParserParser InnerClasses.()Ljavax/swing/text/html/HTMLEditorKit$Parser; SourceFileParserGetter.java  AbInitioQuery/ParserGetter#javax/swing/text/html/HTMLEditorKit*javax/swing/text/html/HTMLEditorKit$Parser!/*   /*     PK ApCL(Ljava/lang/String;[[Ljava/lang/String;LAbInitioQuery/GenericHTMLOutliner;)VCodeLineNumberTableLocalVariableTableiurlLjava/net/URL;urlConnLjava/net/URLConnection;boundaryLjava/lang/String;outLjava/io/DataOutputStream;contentinputLjava/io/InputStreamReader;eLjava/lang/Exception;this)LAbInitioQuery/QuerySiteMultipartEncoded;siteform[[Ljava/lang/String; htmlParser writeParamS(Ljava/lang/String;Ljava/lang/String;Ljava/io/DataOutputStream;Ljava/lang/String;)Vnamevalue writeFile amountReadfisLjava/io/FileInputStream;fLjava/io/File;filePathprocess(Ljava/io/InputStreamReader;)Vin getResultMap()Ljava/lang/Object;()V SourceFileQuerySiteMultipartEncoded.java Ku AB java/net/URL K  *-------------------------------18788734234 Content-Typejava/lang/StringBuildermultipart/form-data; boundary= java/io/DataOutputStream K--  parameter defile he-- u ujava/io/InputStreamReader K opjava/lang/Exception  IOException:  "java/lang/IllegalArgumentExceptionWeb query has crashed! &Content-Disposition: form-data; name=""  -- "; filename="" *content-type: application/octet-stream  java/io/File java/io/FileInputStream IJ  o CD'AbInitioQuery/QuerySiteMultipartEncodedjava/lang/Object(Ljava/lang/String;)VopenConnection()Ljava/net/URLConnection;java/net/URLConnection setDoInput(Z)V setDoOutput setUseCachesappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;setRequestProperty'(Ljava/lang/String;Ljava/lang/String;)VgetOutputStream()Ljava/io/OutputStream;(Ljava/io/OutputStream;)V writeBytesjava/lang/StringequalsIgnoreCase(Ljava/lang/String;)ZflushclosegetInputStream()Ljava/io/InputStream;(Ljava/io/InputStream;)Vjava/lang/SystemerrLjava/io/PrintStream; getMessagejava/io/PrintStreamprintlnexists()Zread([B)Iwrite([BII)V!AbInitioQuery/GenericHTMLOutliner/(Ljava/io/InputStreamReader;)Ljava/lang/Object;!?@ABCDEFGHIJKLM6 &**-Y+:: : Y  Y:: Y 6 ,U ,N, 22, 22, 22$, 22, 22, 22 Y !: * " #,:% Y &'()Y*+ $Nv  &#,%0(K,Y.]0v234562:<=@CFLIJK%MOz yVPF QRST0UVYWX]YV Z[ '\]&^_&`V&ab&cB deMO,,, Y -*.,+, Y /-:%0(>A$NTU"V'W>XNYO4C \]OfVOgVOWXOUV heM~ ,,, Y -*1+2,34Y+5:6J7Y+8:9Y:9:6 ç,9;ç :<, Y /-:%0(Tgzjwzzz$NB`a+c1d;eCfMhTi^jdkjmtnprstOR^iFM=jk;flm \]fVnVWXUVopME **+=>N z {O ^_ q[rsM/*>NO ^_tuM! 9N vwPK ApC< &,AbInitioQuery/QuerySiteMultipartEncoded.javapackage AbInitioQuery; import java.io.*; import java.net.*; public class QuerySiteMultipartEncoded { GenericHTMLOutliner outliner; private Object map; static final int BUFF_SIZE = 1024; static final byte[] buffer = new byte[BUFF_SIZE]; /** * The constructor takes TreeMap representing form */ public QuerySiteMultipartEncoded(String site, String [][] form, GenericHTMLOutliner htmlParser) { outliner = htmlParser; try { URL url; URLConnection urlConn; // URL of CGI-Bin script. url = new URL(site); // URL connection channel. urlConn = url.openConnection(); // Let the run-time system (RTS) know that we want input. urlConn.setDoInput(true); // Let the RTS know that we want to do output. urlConn.setDoOutput(true); // No caching, we want the real thing. urlConn.setUseCaches(false); String boundary = "-------------------------------18788734234"; // Specify the content type. urlConn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); // Send POST output. DataOutputStream out = new DataOutputStream(urlConn.getOutputStream()); String content = ""; out.writeBytes("--" + boundary); for(int i = 0; form != null && i < form.length; i++) { if(form[i][2].equalsIgnoreCase("parameter")) { writeParam(form[i][0], form[i][1], out, boundary); } else if(form[i][2].equalsIgnoreCase("file")) { writeFile(form[i][0], form[i][1], out, boundary); } } // This is the way we close a form out.writeBytes("--\r\n"); out.flush(); out.close(); // Get response data. InputStreamReader input = new InputStreamReader(urlConn.getInputStream()); // Here we do processing process(input); // Do something here input.close(); } catch (Exception e) { System.err.println("IOException: " + e.getMessage()); throw new IllegalArgumentException("Web query has crashed!"); } } /** * Here we add parameter */ private static void writeParam(String name, String value, DataOutputStream out, String boundary) { try { out.writeBytes("\r\n"); out.writeBytes("Content-Disposition: form-data; name=\"" + name + "\"\r\n\r\n"); out.writeBytes(value); out.writeBytes("\r\n" + "--" + boundary); } catch (Exception e) { System.err.println(e.toString()); } } /** * Here we send a file */ private static void writeFile(String name, String filePath, DataOutputStream out, String boundary) { try { out.writeBytes("\r\n"); out.writeBytes("Content-Disposition: form-data; name=\"" + name + "\"; filename=\"" + filePath + "\"\r\n"); out.writeBytes("content-type: application/octet-stream" + "\r\n\r\n"); File f = new File(filePath); if(f.exists()) { FileInputStream fis = new FileInputStream(filePath); while (true) { synchronized (buffer) { int amountRead = fis.read(buffer); if (amountRead == -1) { break; } out.write(buffer, 0, amountRead); } } fis.close(); } out.writeBytes("\r\n" + "--" + boundary); } catch (Exception e) { System.err.println(e.toString()); } } /** * Here the processing happens */ public void process(InputStreamReader in) { map = outliner.process(in); } /** * Return generic object that contains results */ public Object getResultMap() { return map; } } PK @pCL(Ljava/lang/String;[[Ljava/lang/String;LAbInitioQuery/GenericHTMLOutliner;)VCodeLineNumberTableLocalVariableTableiIurlLjava/net/URL;urlConnLjava/net/URLConnection;printoutLjava/io/BufferedWriter;contentLjava/lang/String;inputLjava/io/InputStreamReader;me Ljava/net/MalformedURLException;ioeLjava/io/IOException;this#LAbInitioQuery/QuerySiteURLEncoded;siteform[[Ljava/lang/String; htmlParserprocess(Ljava/io/InputStreamReader;)Vin getResultMap()Ljava/lang/Object; SourceFileQuerySiteURLEncoded.java 8 45 java/net/URL 8   Content-Type!application/x-www-form-urlencoded java/io/BufferedWriterjava/io/OutputStreamWriter 8 8java/lang/StringBuilder =UTF-8 &  java/io/InputStreamReader 8 STjava/net/MalformedURLException MalformedURLException:  "java/lang/IllegalArgumentExceptionWeb query has crashed!java/io/IOException IOException:  S 67!AbInitioQuery/QuerySiteURLEncodedjava/lang/Object()V(Ljava/lang/String;)VopenConnection()Ljava/net/URLConnection;java/net/URLConnection setDoInput(Z)V setDoOutput setUseCachessetRequestProperty'(Ljava/lang/String;Ljava/lang/String;)VgetOutputStream()Ljava/io/OutputStream;(Ljava/io/OutputStream;)V(Ljava/io/Writer;)Vappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;java/net/URLEncoderencode8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;toString()Ljava/lang/String;java/lang/StringequalsIgnoreCase(Ljava/lang/String;)Zlength()I substring(II)Ljava/lang/String;writeflushclosegetInputStream()Ljava/io/InputStream;(Ljava/io/InputStream;)Vjava/lang/SystemerrLjava/io/PrintStream;-(Ljava/lang/Object;)Ljava/lang/StringBuilder;java/io/PrintStreamprintln getMessage!AbInitioQuery/GenericHTMLOutliner/(Ljava/io/InputStreamReader;)Ljava/lang/Object;!23456789:> ***-Y+::  Y Y::6,B,;Y,22,22:d: Y!":*#$R:&Y'()*Y+,:&Y./)*Y+, % -;r  "&%,(5+J-N.\/.13458;>JBCDGHI)K<z QC=>?@ABJCDNEF GH$IJ'KL*MN*OF*PQ*R5ST:E **+01; Q R< MN UHVW:/*1;X< MNXYPK BpC<;  &AbInitioQuery/QuerySiteURLEncoded.javapackage AbInitioQuery; import BlastObject.*; import java.awt.*; import java.applet.*; import java.io.*; import java.util.*; import java.net.*; public class QuerySiteURLEncoded { GenericHTMLOutliner outliner; private Object map; /** * The constructor takes TreeMap representing form */ QuerySiteURLEncoded(String site, String [][] form, GenericHTMLOutliner htmlParser) { outliner = htmlParser; try { URL url; URLConnection urlConn; // URL of CGI-Bin script. url = new URL(site); // URL connection channel. urlConn = url.openConnection(); // Let the run-time system (RTS) know that we want input. urlConn.setDoInput(true); // Let the RTS know that we want to do output. urlConn.setDoOutput(true); // No caching, we want the real thing. urlConn.setUseCaches(false); // Specify the content type. urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // Send POST output. BufferedWriter printout = new BufferedWriter(new OutputStreamWriter(urlConn.getOutputStream())); String content = ""; for(int i = 0; form != null && i < form.length; i++) { content += form[i][0] + "=" + URLEncoder.encode(form[i][1], "UTF-8") + "&"; } if(!content.equalsIgnoreCase(""))content = content.substring(0,content.length() - 1); printout.write(content); printout.flush(); printout.close(); // Get response data. InputStreamReader input = new InputStreamReader(urlConn.getInputStream()); // Here we do processing process(input); // Do something here input.close(); } catch (MalformedURLException me) { System.err.println("MalformedURLException: " + me); throw new IllegalArgumentException("Web query has crashed!"); } catch (IOException ioe) { System.err.println("IOException: " + ioe.getMessage()); throw new IllegalArgumentException("Web query has crashed!"); } } /** * Here the processing happens */ public void process(InputStreamReader in) { map = outliner.process(in); } /** * Return generic object that contains results */ public Object getResultMap() { return map; } } PK @pC()VCodeLineNumberTableLocalVariableTablethis$LAbInitioQuery/SpliceScanIIOutliner;handleStartTag}Tag InnerClassesJ(Ljavax/swing/text/html/HTML$Tag;Ljavax/swing/text/MutableAttributeSet;I)Vtag Ljavax/swing/text/html/HTML$Tag; attributes&Ljavax/swing/text/MutableAttributeSet;positionI handleEndTag$(Ljavax/swing/text/html/HTML$Tag;I)V handleText([CI)VnextLjava/lang/String;itheLinestLjava/util/StringTokenizer;fLServiceRoutines/Fragment;theTextlines headerHittext[CgetMap()Ljava/lang/Object; SourceFileSpliceScanIIOutliner.java -. +,BlastObject/ConvertibleRBTree )* ~:java/lang/String - java/util/StringTokenizer - PREDICTION FOR EXON LOCATED AT ServiceRoutines/FragmentExon   Donor - Acceptor "AbInitioQuery/SpliceScanIIOutliner!AbInitioQuery/GenericHTMLOutlinerjavax/swing/text/html/HTML$TagPRE([C)Vtrim()Ljava/lang/String; toLowerCase'(Ljava/lang/String;Ljava/lang/String;)V hasMoreTokens()Z nextToken toUpperCase startsWith(Ljava/lang/String;)ZsetType(Ljava/lang/String;)Vjava/lang/IntegerparseInt(Ljava/lang/String;)IsetStart(I)VsetEndjava/lang/Double parseDouble(Ljava/lang/String;)DsetScore(D)VgetTypeequalsIgnoreCasegetEnd()IgetScore()D(Ljava/lang/String;IIID)Vadd(Ljava/lang/Object;)ZgetStartjavax/swing/text/html/HTML!'()*+,-./K***Y0 1 2348/Y +*0  1* 23 9: ;< =>?@/O +*0  !1  23 9: =>AB/B 8*3Y+ N Y- :6 : 6 ƻ Y :Y:6 G:   '      dH*Y !!!"#$W*Y%&&&"#$W*$W0 -./"0%1-346A7D8G;L<O?_@bCoDxFGHIJKLNOGTUVW*Y4[7^1p 7CD LE> 4FDoGHxIJ!KD"LH%M,8238NO8=>PQ//*0b1 23RS7 5|6 PK ApC<{'AbInitioQuery/SpliceScanIIOutliner.javapackage AbInitioQuery; import BlastObject.*; import ServiceRoutines.Fragment; import javax.swing.text.*; import javax.swing.text.html.*; import java.util.*; public class SpliceScanIIOutliner extends GenericHTMLOutliner { private ConvertibleRBTree map; private boolean insidePre = false; /** * Read from input stream */ public SpliceScanIIOutliner() { map = new ConvertibleRBTree(); } /** * Example of the start tag handler */ public void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes, int position) { if(tag == HTML.Tag.PRE) insidePre = true; } /** * Example of an end tag handler */ public void handleEndTag(HTML.Tag tag, int position) { if(tag == HTML.Tag.PRE) insidePre = false; } /** PREDICTION FOR >>>SIGNALS0<<< EXON LOCATED AT 379 - 489 HAS LOD SCORE -5.89 NORMALIZED 0.41 EXON LOCATED AT 379 - 595 HAS LOD SCORE -12.49 NORMALIZED 0.03 EXON LOCATED AT 379 - 627 HAS LOD SCORE -8.50 NORMALIZED 0.18 */ public void handleText(char[] text, int position) { if(insidePre) { String theText = new String(text).trim().toLowerCase(); StringTokenizer lines = new StringTokenizer(theText,"\n"); boolean headerHit = false; while(lines.hasMoreTokens()) { String theLine = lines.nextToken(); // Was header hit? if(theLine.toUpperCase().startsWith("PREDICTION FOR")) { headerHit = true; continue; } if (!headerHit) { continue; } if(!theLine.trim().toUpperCase().startsWith("EXON LOCATED AT")) { continue; } StringTokenizer st = new StringTokenizer(theLine," \t"); Fragment f = new Fragment(); f.setType("Exon"); for(int i = 0; st.hasMoreTokens(); i++) { String next = st.nextToken(); if(i == 3) { f.setStart(Integer.parseInt(next)); } else if(i == 5) { f.setEnd(Integer.parseInt(next)); } else if(i == 11) { f.setScore(Double.parseDouble(next)); } } // Add the fragment into map if(f != null) { if(f.getType().equalsIgnoreCase("Exon")) { map.add(new Fragment("Donor", f.getEnd(), f.getEnd(), f.getEnd(), f.getScore())); map.add(new Fragment("Acceptor", f.getStart(), f.getStart(), f.getStart(), f.getScore())); } else continue; map.add(f); } } // System.out.println(theLine); } return; } public Object getMap() { return map; } } /* * Attributes for HTML tags HTML.Attribute.ACTION HTML.Attribute.ALIGN HTML.Attribute.ALINK HTML.Attribute.ALT HTML.Attribute.ARCHIVE HTML.Attribute.BACKGROUND HTML.Attribute.BGCOLOR HTML.Attribute.BORDER HTML.Attribute.CELLPADDING HTML.Attribute.CELLSPACING HTML.Attribute.CHECKED HTML.Attribute.CLASS HTML.Attribute.CLASSID HTML.Attribute.CLEAR HTML.Attribute.CODE HTML.Attribute.CODEBASE HTML.Attribute.CODETYPE HTML.Attribute.COLOR HTML.Attribute.COLS HTML.Attribute.COLSPAN HTML.Attribute.COMMENT HTML.Attribute.COMPACT HTML.Attribute.CONTENTNNSpliceOutliner HTML.Attribute.COORDS HTML.Attribute.DATA HTML.Attribute.DECLARE HTML.Attribute.DIR HTML.Attribute.DUMMY HTML.Attribute.ENCTYPE HTML.Attribute.ENDTAG HTML.Attribute.FACE HTML.Attribute.FRAMEBORDER HTML.Attribute.HALIGN HTML.Attribute.HEIGHT HTML.Attribute.HREF HTML.Attribute.HSPACE HTML.Attribute.HTTPEQUIV HTML.Attribute.ID HTML.Attribute.ISMAP HTML.Attribute.LANG HTML.Attribute.LANGUAGE HTML.Attribute.LINK HTML.Attribute.LOWSRC HTML.Attribute.MARGINHEIGHT HTML.Attribute.MARGINWIDTH HTML.Attribute.MAXLENGTH HTML.Attribute.METHOD HTML.Attribute.MULTIPLE HTML.Attribute.N HTML.Attribute.NAME HTML.Attribute.NOHREF HTML.Attribute.NORESIZE HTML.Attribute.NOSHADE HTML.Attribute.NOWRAP HTML.Attribute.PROMPT HTML.Attribute.REL HTML.Attribute.REV HTML.Attribute.ROWS HTML.Attribute.ROWSPAN HTML.Attribute.SCROLLING HTML.Attribute.SELECTED HTML.Attribute.SHAPE HTML.Attribute.SHAPES HTML.Attribute.SIZE HTML.Attribute.SRC HTML.Attribute.STANDBY HTML.Attribute.START HTML.Attribute.STYLE HTML.Attribute.TARGET HTML.Attribute.TEXT HTML.Attribute.TITLE HTML.Attribute.TYPE HTML.Attribute.USEMAP HTML.Attribute.VALIGN HTML.Attribute.VALUE HTML.Attribute.VALUETYPE HTML.Attribute.VERSION HTML.Attribute.VLINK HTML.Attribute.VSPACE HTML.Attribute.WIDTH */ /* * Html tags HTML.Tag.A HTML.Tag.ADDRESS HTML.Tag.APPLET HTML.Tag.AREA HTML.Tag.B HTML.Tag.BASE HTML.Tag.BASEFONT HTML.Tag.BIG HTML.Tag.BLOCKQUOTE HTML.Tag.BODY HTML.Tag.BR HTML.Tag.CAPTION HTML.Tag.CENTER HTML.Tag.CITE HTML.Tag.CODE HTML.Tag.DD HTML.Tag.DFN HTML.Tag.DIR HTML.Tag.DIV HTML.Tag.DL HTML.Tag.DT HTML.Tag.EM HTML.Tag.FONT HTML.Tag.FORM HTML.Tag.FRAME HTML.Tag.FRAMESET HTML.Tag.H1 HTML.Tag.H2 HTML.Tag.H3 HTML.Tag.H4 HTML.Tag.H5 HTML.Tag.H6 HTML.Tag.HEAD HTML.Tag.HR HTML.Tag.HTML HTML.Tag.I HTML.Tag.IMG HTML.Tag.INPUT HTML.Tag.ISINDEX HTML.Tag.KBD HTML.Tag.LI HTML.Tag.LINK HTML.Tag.MAP HTML.Tag.MENU HTML.Tag.META HTML.Tag.NOFRAMES HTML.Tag.OBJECT HTML.Tag.OL HTML.Tag.OPTION HTML.Tag.P HTML.Tag.PARAM HTML.Tag.PRE HTML.Tag.SAMP HTML.Tag.SCRIPT HTML.Tag.SELECT HTML.Tag.SMALL HTML.Tag.STRIKE HTML.Tag.S HTML.Tag.STRONG HTML.Tag.STYLE HTML.Tag.SUB HTML.Tag.SUP HTML.Tag.TABLE HTML.Tag.TD HTML.Tag.TEXTAREA HTML.Tag.TH HTML.Tag.TR HTML.Tag.TT HTML.Tag.U HTML.Tag.UL HTML.Tag.VAR HTML.Tag.IMPLIED HTML.Tag.COMMENT */ PK @pC<1  *AbInitioQuery/SpliceScanIIOutlinerLL.class1 (T 'UV T 'W 5XY Z [ \]^ _ ` a bc defg Th i jk l m no p q rs t u v wx yz{map#LBlastObject/ConvertibleLinkedList; insidePreZ()VCodeLineNumberTableLocalVariableTablethis&LAbInitioQuery/SpliceScanIIOutlinerLL;handleStartTag}Tag InnerClassesJ(Ljavax/swing/text/html/HTML$Tag;Ljavax/swing/text/MutableAttributeSet;I)Vtag Ljavax/swing/text/html/HTML$Tag; attributes&Ljavax/swing/text/MutableAttributeSet;positionI handleEndTag$(Ljavax/swing/text/html/HTML$Tag;I)V handleText([CI)VnextLjava/lang/String;itheLinestLjava/util/StringTokenizer;fLServiceRoutines/Fragment;theTextlines headerHittext[CgetMap()Ljava/lang/Object; SourceFileSpliceScanIIOutlinerLL.java -. +,!BlastObject/ConvertibleLinkedList )* ~:java/lang/String - java/util/StringTokenizer - PREDICTION FOR EXON LOCATED AT ServiceRoutines/FragmentExon   Donor - Acceptor $AbInitioQuery/SpliceScanIIOutlinerLL!AbInitioQuery/GenericHTMLOutlinerjavax/swing/text/html/HTML$TagPRE([C)Vtrim()Ljava/lang/String; toLowerCase'(Ljava/lang/String;Ljava/lang/String;)V hasMoreTokens()Z nextToken toUpperCase startsWith(Ljava/lang/String;)ZsetType(Ljava/lang/String;)Vjava/lang/IntegerparseInt(Ljava/lang/String;)IsetStart(I)VsetEndjava/lang/Double parseDouble(Ljava/lang/String;)DsetScore(D)VgetTypeequalsIgnoreCasegetEnd()IgetScore()D(Ljava/lang/String;IIID)Vadd(Ljava/lang/Object;)ZgetStartjavax/swing/text/html/HTML!'()*+,-./K***Y0 1 2348/Y +*0  1* 23 9: ;< =>?@/O +*0  !1  23 9: =>AB/B 8*3Y+ N Y- :6 : 6 ƻ Y :Y:6 G:   '      dH*Y !!!"#$W*Y%&&&"#$W*$W0 -./"0%1-346A7D8G;L<O?_@bCoDxFGHIJKLNOGTUVW*Y4[7^1p 7CD LE> 4FDoGHxIJ!KD"LH%M,8238NO8=>PQ//*0b1 23RS7 5|6 PK ApC<󁝽)AbInitioQuery/SpliceScanIIOutlinerLL.javapackage AbInitioQuery; import BlastObject.*; import ServiceRoutines.Fragment; import javax.swing.text.*; import javax.swing.text.html.*; import java.util.*; public class SpliceScanIIOutlinerLL extends GenericHTMLOutliner { private ConvertibleLinkedList map; private boolean insidePre = false; /** * Read from input stream */ public SpliceScanIIOutlinerLL() { map = new ConvertibleLinkedList(); } /** * Example of the start tag handler */ public void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes, int position) { if(tag == HTML.Tag.PRE) insidePre = true; } /** * Example of an end tag handler */ public void handleEndTag(HTML.Tag tag, int position) { if(tag == HTML.Tag.PRE) insidePre = false; } /** PREDICTION FOR >>>SIGNALS0<<< EXON LOCATED AT 379 - 489 HAS LOD SCORE -5.89 NORMALIZED 0.41 EXON LOCATED AT 379 - 595 HAS LOD SCORE -12.49 NORMALIZED 0.03 EXON LOCATED AT 379 - 627 HAS LOD SCORE -8.50 NORMALIZED 0.18 */ public void handleText(char[] text, int position) { if(insidePre) { String theText = new String(text).trim().toLowerCase(); StringTokenizer lines = new StringTokenizer(theText,"\n"); boolean headerHit = false; while(lines.hasMoreTokens()) { String theLine = lines.nextToken(); // Was header hit? if(theLine.toUpperCase().startsWith("PREDICTION FOR")) { headerHit = true; continue; } if (!headerHit) { continue; } if(!theLine.trim().toUpperCase().startsWith("EXON LOCATED AT")) { continue; } StringTokenizer st = new StringTokenizer(theLine," \t"); Fragment f = new Fragment(); f.setType("Exon"); for(int i = 0; st.hasMoreTokens(); i++) { String next = st.nextToken(); if(i == 3) { f.setStart(Integer.parseInt(next)); } else if(i == 5) { f.setEnd(Integer.parseInt(next)); } else if(i == 11) { f.setScore(Double.parseDouble(next)); } } // Add the fragment into map if(f != null) { if(f.getType().equalsIgnoreCase("Exon")) { map.add(new Fragment("Donor", f.getEnd(), f.getEnd(), f.getEnd(), f.getScore())); map.add(new Fragment("Acceptor", f.getStart(), f.getStart(), f.getStart(), f.getScore())); } else continue; map.add(f); } } // System.out.println(theLine); } return; } public Object getMap() { return map; } } /* * Attributes for HTML tags HTML.Attribute.ACTION HTML.Attribute.ALIGN HTML.Attribute.ALINK HTML.Attribute.ALT HTML.Attribute.ARCHIVE HTML.Attribute.BACKGROUND HTML.Attribute.BGCOLOR HTML.Attribute.BORDER HTML.Attribute.CELLPADDING HTML.Attribute.CELLSPACING HTML.Attribute.CHECKED HTML.Attribute.CLASS HTML.Attribute.CLASSID HTML.Attribute.CLEAR HTML.Attribute.CODE HTML.Attribute.CODEBASE HTML.Attribute.CODETYPE HTML.Attribute.COLOR HTML.Attribute.COLS HTML.Attribute.COLSPAN HTML.Attribute.COMMENT HTML.Attribute.COMPACT HTML.Attribute.CONTENTNNSpliceOutliner HTML.Attribute.COORDS HTML.Attribute.DATA HTML.Attribute.DECLARE HTML.Attribute.DIR HTML.Attribute.DUMMY HTML.Attribute.ENCTYPE HTML.Attribute.ENDTAG HTML.Attribute.FACE HTML.Attribute.FRAMEBORDER HTML.Attribute.HALIGN HTML.Attribute.HEIGHT HTML.Attribute.HREF HTML.Attribute.HSPACE HTML.Attribute.HTTPEQUIV HTML.Attribute.ID HTML.Attribute.ISMAP HTML.Attribute.LANG HTML.Attribute.LANGUAGE HTML.Attribute.LINK HTML.Attribute.LOWSRC HTML.Attribute.MARGINHEIGHT HTML.Attribute.MARGINWIDTH HTML.Attribute.MAXLENGTH HTML.Attribute.METHOD HTML.Attribute.MULTIPLE HTML.Attribute.N HTML.Attribute.NAME HTML.Attribute.NOHREF HTML.Attribute.NORESIZE HTML.Attribute.NOSHADE HTML.Attribute.NOWRAP HTML.Attribute.PROMPT HTML.Attribute.REL HTML.Attribute.REV HTML.Attribute.ROWS HTML.Attribute.ROWSPAN HTML.Attribute.SCROLLING HTML.Attribute.SELECTED HTML.Attribute.SHAPE HTML.Attribute.SHAPES HTML.Attribute.SIZE HTML.Attribute.SRC HTML.Attribute.STANDBY HTML.Attribute.START HTML.Attribute.STYLE HTML.Attribute.TARGET HTML.Attribute.TEXT HTML.Attribute.TITLE HTML.Attribute.TYPE HTML.Attribute.USEMAP HTML.Attribute.VALIGN HTML.Attribute.VALUE HTML.Attribute.VALUETYPE HTML.Attribute.VERSION HTML.Attribute.VLINK HTML.Attribute.VSPACE HTML.Attribute.WIDTH */ /* * Html tags HTML.Tag.A HTML.Tag.ADDRESS HTML.Tag.APPLET HTML.Tag.AREA HTML.Tag.B HTML.Tag.BASE HTML.Tag.BASEFONT HTML.Tag.BIG HTML.Tag.BLOCKQUOTE HTML.Tag.BODY HTML.Tag.BR HTML.Tag.CAPTION HTML.Tag.CENTER HTML.Tag.CITE HTML.Tag.CODE HTML.Tag.DD HTML.Tag.DFN HTML.Tag.DIR HTML.Tag.DIV HTML.Tag.DL HTML.Tag.DT HTML.Tag.EM HTML.Tag.FONT HTML.Tag.FORM HTML.Tag.FRAME HTML.Tag.FRAMESET HTML.Tag.H1 HTML.Tag.H2 HTML.Tag.H3 HTML.Tag.H4 HTML.Tag.H5 HTML.Tag.H6 HTML.Tag.HEAD HTML.Tag.HR HTML.Tag.HTML HTML.Tag.I HTML.Tag.IMG HTML.Tag.INPUT HTML.Tag.ISINDEX HTML.Tag.KBD HTML.Tag.LI HTML.Tag.LINK HTML.Tag.MAP HTML.Tag.MENU HTML.Tag.META HTML.Tag.NOFRAMES HTML.Tag.OBJECT HTML.Tag.OL HTML.Tag.OPTION HTML.Tag.P HTML.Tag.PARAM HTML.Tag.PRE HTML.Tag.SAMP HTML.Tag.SCRIPT HTML.Tag.SELECT HTML.Tag.SMALL HTML.Tag.STRIKE HTML.Tag.S HTML.Tag.STRONG HTML.Tag.STYLE HTML.Tag.SUB HTML.Tag.SUP HTML.Tag.TABLE HTML.Tag.TD HTML.Tag.TEXTAREA HTML.Tag.TH HTML.Tag.TR HTML.Tag.TT HTML.Tag.U HTML.Tag.UL HTML.Tag.VAR HTML.Tag.IMPLIED HTML.Tag.COMMENT */ PK @pC< \f4 4 &AbInitioQuery/SpliceScanOutliner.class1 N OP N Q ,RS TU VW XY Z[ \ ]^_ ` a bc d ef ghi N j k l mno insidePREZmap#LBlastObject/ConvertibleLinkedList;()VCodeLineNumberTableLocalVariableTablethis"LAbInitioQuery/SpliceScanOutliner;handleStartTagqTag InnerClassesJ(Ljavax/swing/text/html/HTML$Tag;Ljavax/swing/text/MutableAttributeSet;I)Vtag Ljavax/swing/text/html/HTML$Tag; attributes&Ljavax/swing/text/MutableAttributeSet;positionI handleEndTag$(Ljavax/swing/text/html/HTML$Tag;I)V handleText([CI)VtheLineLjava/lang/String;elem[Ljava/lang/String;weightDtype coordinatefLServiceRoutines/Fragment;theTextlinesLjava/util/StringTokenizer;text[CsgetMap()Ljava/lang/Object; SourceFileSpliceScanOutliner.java $% !!BlastObject/ConvertibleLinkedList "# r1java/lang/String $sDEBUGt uvw xyz {| }~ ~java/util/StringTokenizer $ ~\s=>\s   ServiceRoutines/Fragment |  AbInitioQuery/SpliceScanOutliner!AbInitioQuery/GenericHTMLOutlinerjavax/swing/text/html/HTML$TagPRE([C)VBlastObject/ParametersXMLgetBooleanFeature(Ljava/lang/String;)Zjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vtrim()Ljava/lang/String; toLowerCase'(Ljava/lang/String;Ljava/lang/String;)V hasMoreTokens()Z nextTokensplit'(Ljava/lang/String;)[Ljava/lang/String;java/lang/Double parseDouble(Ljava/lang/String;)Djava/lang/IntegerparseInt(Ljava/lang/String;)IsetTypesetSignalCenter(I)VsetScore(D)Vadd(Ljava/lang/Object;)Zjavax/swing/text/html/HTML! !"#$%&K***Y' ( )*+/&] +*' "(* )* 01 23 4567&S +*'() +(  )* 01 4589&w Y+N* - Y+ :Y:Y::292: 26 Y:      * W'J1 457/8<:D;N<W=`>f?o@xABCDEG(z NI:;W@<=`7>?f1@; o(A5 xBC /kD;<^EF)*GH45 I;JK&/*'J( )*LM. ,p- PK ApC\\s"); double weight = Double.parseDouble(elem[4]); String type = elem[1]; int coordinate = Integer.parseInt(elem[2]); Fragment f = new Fragment(); f.setType(type); f.setSignalCenter(coordinate); f.setScore(weight); map.add(f); } } } public Object getMap() { return map; } } /* * Attributes for HTML tags HTML.Attribute.ACTION HTML.Attribute.ALIGN HTML.Attribute.ALINK HTML.Attribute.ALT HTML.Attribute.ARCHIVE HTML.Attribute.BACKGROUND HTML.Attribute.BGCOLOR HTML.Attribute.BORDER HTML.Attribute.CELLPADDING HTML.Attribute.CELLSPACING HTML.Attribute.CHECKED HTML.Attribute.CLASS HTML.Attribute.CLASSID HTML.Attribute.CLEAR HTML.Attribute.CODE HTML.Attribute.CODEBASE HTML.Attribute.CODETYPE HTML.Attribute.COLOR HTML.Attribute.COLS HTML.Attribute.COLSPAN HTML.Attribute.COMMENT HTML.Attribute.COMPACT HTML.Attribute.CONTENT HTML.Attribute.COORDS HTML.Attribute.DATA HTML.Attribute.DECLARE HTML.Attribute.DIR HTML.Attribute.DUMMY HTML.Attribute.ENCTYPE HTML.Attribute.ENDTAG HTML.Attribute.FACE HTML.Attribute.FRAMEBORDER HTML.Attribute.HALIGN HTML.Attribute.HEIGHT HTML.Attribute.HREF HTML.Attribute.HSPACE HTML.Attribute.HTTPEQUIV HTML.Attribute.ID HTML.Attribute.ISMAP HTML.Attribute.LANG HTML.Attribute.LANGUAGE HTML.Attribute.LINK HTML.Attribute.LOWSRC HTML.Attribute.MARGINHEIGHT HTML.Attribute.MARGINWIDTH HTML.Attribute.MAXLENGTH HTML.Attribute.METHOD HTML.Attribute.MULTIPLE HTML.Attribute.N HTML.Attribute.NAME HTML.Attribute.NOHREF HTML.Attribute.NORESIZE HTML.Attribute.NOSHADE HTML.Attribute.NOWRAP HTML.Attribute.PROMPT HTML.Attribute.REL HTML.Attribute.REV HTML.Attribute.ROWS HTML.Attribute.ROWSPAN HTML.Attribute.SCROLLING HTML.Attribute.SELECTED HTML.Attribute.SHAPE HTML.Attribute.SHAPES HTML.Attribute.SIZE HTML.Attribute.SRC HTML.Attribute.STANDBY HTML.Attribute.START HTML.Attribute.STYLE HTML.Attribute.TARGET HTML.Attribute.TEXT HTML.Attribute.TITLE HTML.Attribute.TYPE HTML.Attribute.USEMAP HTML.Attribute.VALIGN HTML.Attribute.VALUE HTML.Attribute.VALUETYPE HTML.Attribute.VERSION HTML.Attribute.VLINK HTML.Attribute.VSPACE HTML.Attribute.WIDTH */ /* * Html tags HTML.Tag.A HTML.Tag.ADDRESS HTML.Tag.APPLET HTML.Tag.AREA HTML.Tag.B HTML.Tag.BASE HTML.Tag.BASEFONT HTML.Tag.BIG HTML.Tag.BLOCKQUOTE HTML.Tag.BODY HTML.Tag.BR HTML.Tag.CAPTION HTML.Tag.CENTER HTML.Tag.CITE HTML.Tag.CODE HTML.Tag.DD HTML.Tag.DFN HTML.Tag.DIR HTML.Tag.DIV HTML.Tag.DL HTML.Tag.DT HTML.Tag.EM HTML.Tag.FONT HTML.Tag.FORM HTML.Tag.FRAME HTML.Tag.FRAMESET HTML.Tag.H1 HTML.Tag.H2 HTML.Tag.H3 HTML.Tag.H4 HTML.Tag.H5 HTML.Tag.H6 HTML.Tag.HEAD HTML.Tag.HR HTML.Tag.HTML HTML.Tag.I HTML.Tag.IMG HTML.Tag.INPUT HTML.Tag.ISINDEX HTML.Tag.KBD HTML.Tag.LI HTML.Tag.LINK HTML.Tag.MAP HTML.Tag.MENU HTML.Tag.META HTML.Tag.NOFRAMES HTML.Tag.OBJECT HTML.Tag.OL HTML.Tag.OPTION HTML.Tag.P HTML.Tag.PARAM HTML.Tag.PRE HTML.Tag.SAMP HTML.Tag.SCRIPT HTML.Tag.SELECT HTML.Tag.SMALL HTML.Tag.STRIKE HTML.Tag.S HTML.Tag.STRONG HTML.Tag.STYLE HTML.Tag.SUB HTML.Tag.SUP HTML.Tag.TABLE HTML.Tag.TD HTML.Tag.TEXTAREA HTML.Tag.TH HTML.Tag.TR HTML.Tag.TT HTML.Tag.U HTML.Tag.UL HTML.Tag.VAR HTML.Tag.IMPLIED HTML.Tag.COMMENT */ PK ApC<3޸uuBaumWelchLearner/MHMMotif.class1                  ?333333?ٙ?QR?ה5 y?@  ?陙    F I K I  I     V X I X X  _        F  G   G   ! " #$ %&&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop q _rs Ft  u Fv Gw Gx? y Gz F{ F|}\ F~ F F F     F| F G F F F  F  G  ?   F??zG{   .v        F G F  Z F  @@      e e e e  V V  r @I  @                         K observations#LBlastObject/ConvertibleLinkedList; observationA*LMyHMMParallel/jahmm/ObservationCharacter; observationC observationG observationT observationXfwLjava/io/FileWriter;MAX_MOTIF_SIZEI ConstantValue MIN_VARIATIOND PARBOX_ASPECTDIRECTORY_FOR_GRAPHICSLjava/lang/String;BEFOREAFTER()VCodeLineNumberTableLocalVariableTablethisLBaumWelchLearner/MHMMotif;generateObservationsidirectoryMixturesfiles[Ljava/lang/String; makeSlide?([D[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)V snFormatterLjava/util/Formatter;stLjava/util/StringTokenizer;file fileBefore fileAftergraphicsAspectvAspecthAspectmixing[Dnames namesBefore namesAftercountermakeConvolutionHistograms6(LMyHMMParallel/jahmm/OpdfMixture;Ljava/lang/String;)VemissionCjmatchlengthobs"[LMyHMMParallel/jahmm/Observation;sbLjava/lang/StringBuffer;pLjava/util/regex/Pattern;mLjava/util/regex/Matcher;samplehmmLMyHMMParallel/jahmm/OpdfHmm; counterBefore counterAfter componentfstreamoutLjava/io/BufferedWriter;eLjava/lang/Exception;fileName splitName betterNamemix!LMyHMMParallel/jahmm/OpdfMixture;numberToGeneratesizemaxmin sampledSizes[[[I componentsMyHMMParallel/jahmm/Opdf;minimumFilledArraySizegenerateHMMMotifs(Ljava/lang/String;I)VstatemotifmotifsGenerated motifSizeepsNameshistogramsBeforehistogramsAfter slideCountersensorLMyHMMParallel/jahmm/Opdf;generatedMotifs[[Ljava/lang/String; writeLogoFile(([Ljava/lang/String;Ljava/lang/String;)Vqs1LHTMLquery/QuerySiteMultipartEncodedRecordResult;motifssequenceformtreeLBlastObject/ConvertibleRBTree; getSensorSize(LMyHMMParallel/jahmm/Opdf;)IgetHmm.(Ljava/lang/String;)LMyHMMParallel/jahmm/Opdf;dom LMyHMMParallel/jahmm/DOM_parser; mixtureModelmakeConvolutionChain!(ID)LMyHMMParallel/jahmm/OpdfHmm;s#LMyHMMParallel/distributions/State; probSameStatechainmodifyStateNames2(LMyHMMParallel/jahmm/OpdfHmm;Ljava/lang/String;)Vindex namePrefixproductionVersion/([[LMyHMMParallel/jahmm/ObservationCharacter;)V random_motifbeforeConvolutionafterConvolution,[[LMyHMMParallel/jahmm/ObservationCharacter;convolutionSize markerSizebeforeafter afterMarkermotifSensorSize motifSensormotifSensorHmmmotifTotalSignal random_motifs[LMyHMMParallel/jahmm/OpdfHmm;mixturebarrier$Ljava/util/concurrent/CyclicBarrier;productionVersionExonDefinitionmixturePreAcceptormixtureAcceptor mixtureExon mixtureDonormixturePostDonor exonModelexonModelMixturebuildExonModelS(LMyHMMParallel/jahmm/OpdfMixture;LMyHMMParallel/jahmm/OpdfHmm;Ljava/lang/String;)Vstates$[LMyHMMParallel/distributions/State;nameinitialmixingProportions cllInitial cllMarkers finalStateinitialsmarkerslearnMixtureDistributedZ(LMyHMMParallel/jahmm/OpdfMixture;[[LMyHMMParallel/jahmm/Observation;Ljava/lang/String;I)DcurrentTimeMillisJround#[[LMyHMMParallel/jahmm/Observation;fileOut iterationsaprioriResponsibilities oldTimeMillisoldLogLikelihoodinterval learnMixturecreateContainingDirectory(Ljava/lang/String;)V sourceFileauxLjava/io/File;pathdirwriteMixtureToFile[(LMyHMMParallel/jahmm/OpdfMixture;[[LMyHMMParallel/jahmm/Observation;IDLjava/lang/String;)DxLjava/io/IOException; logLikelihood buildInitHmm (I)LMyHMMParallel/jahmm/OpdfHmm;tofromopdfHmmchancescalculateLikelihoodG(LMyHMMParallel/jahmm/OpdfMixture;[[LMyHMMParallel/jahmm/Observation;)DdataSet makeMarkermarkerfinishprocess trimStarttrimEnd startIndexendIndexekses[C+[LMyHMMParallel/jahmm/ObservationCharacter;hmmSizemain([Ljava/lang/String;)V parameterobjLjava/lang/Object;argshrm Exceptions SourceFile MHMMotif.java !BlastObject/ConvertibleLinkedList files_to_generate_directory files_to_generate java/lang/StringBuilder  / !" # $ \onlySlide*{ %}{& 'q \begin{tabular}{cc}? % after \\: \hline or \cline{col1-col2} \cline{col3-col4} ...java/util/Formatter%.3fjava/lang/Object () (*java/util/StringTokenizer\/ + ,- ."convolution_size /0  & \parbox[c]{ 1 \linewidth}{ \includegraphics[width=\linewidth, height= \linewidth]{Images/PromoterElements}}} \\\includegraphics[width= \end{tabular})number_of_convolution_samples_to_generateconvolution_sample_lengthconvolution_histogram_maxconvolution_histogram_min 23MyHMMParallel/jahmm/OpdfHmm4 56 78java/lang/StringBuffer(MyHMMParallel/jahmm/ObservationCharacter 9 :Y+; <= >?@ A- B" CZ+java/io/FileWriter qjava/io/BufferedWriter D E Fq Gjava/lang/Exception H$Error: I"/\\. JK_.m clear all;load ; array = min = max = for j = 1:(size(array,2) / 2) & before = array(:,1 + 2 * (j - 1)); % after = array(:,2 + 2 * (j - 1)); 3 %%%%%%%%%%%% Make Before histogram %%%%%%%%%%%%  [Y X] = hist(before,30);  bar(X,Y/sum(before),'r');  xlim([min, max]);  ylim([0 upper_histogram_limit LM]);  eval(['print -depsc .b.' int2str(j - 1) '.eps;']); 2 %%%%%%%%%%%% Make After histogram %%%%%%%%%%%%  [Y X] = hist(after,30); & bar(X,Y(end:-1:1)/sum(after),'r'); .a.' int2str(j - 1) '.eps;']); end ,-MyHMMParallel/jahmm/OpdfMixture NOnumber_of_motifs_to_generate ,PQ YZ [ R0before_convolution!MyHMMParallel/jahmm/OpdfCharacter S Tafter_convolution motif_size U"java/lang/IllegalArgumentException;Please check expected motif size to generate, which is now This should HMM!java/lang/String..eps.dat.b..dat.a. !" .dat (This should be the Mixture of HMM Model! aligned_fileformatEPS logowidth18 logoheight5 logounitscmcommand Create LogokindAUTOfirstnum1 logostartlogoendsmallsamplecorrectiononsymbolsperline32res96 res_unitsppi antialiastitlebarbitsyaxis yaxis_labelbitsxaxis xaxis_labelshowendsshrink0.5 fineprintticbits colorschemeDEFAULTsymbol1KRHcolor1greenrgb1symbol2DEcolor2bluergb2symbol3AVLIPWFMcolor3redrgb3symbol4color4blackrgb4symbol5color5purplergb5symbol6color6orangergb6symbol7color7rgb7color0rgb0/HTMLquery/QuerySiteMultipartEncodedRecordResult logo_server V W,Since web query has crashed, we repeat it...MyHMMParallel/jahmm/DOM_parser XY Z \ [\ ]^ _\ ` ab_initial c0 d ef ghfinal_final marker_sizeprob_same_state 12 78 } after_marker |} ij k\before_convolution_final motif_initial ]l motif_finalafter_convolution_initialafter_convolution_finalafter_marker_initial mbOriginal signal system:number_of_motifsSYMMETRIC_INITIATION no pq ro stu ~4 vw xy z{ |b }o ~DOWNLOAD_FROM_FILE hmm_file_in"java/util/concurrent/CyclicBarrier  " distributed hmm_file_out.xmlnumber_of_iterations cd odpre_acceptor_mixtureacceptor_mixture exon_mixture donor_mixturepost_donor_mixturepreAcc WXAccExonDonpostDon \MyHMMParallel/jahmm/Opdf!MyHMMParallel/distributions/State [:]]_before_marker]_after_marker ]_final q ] 5write_interval_in_iterations e Iteration #  took  sec. qDEBUG with likelihood:   wx  java/io/File " - -Can't create the directory:  .dist.xml pq'  \n"); fw.write("\n"); fw.write("\n"); fw.write("\n"); fw.write("\n"); fw.write("\n"); fw.write("\n"); fw.write("\n"); fw.write("\n"); fw.write(mix.toXML()); fw.close(); } catch (IOException x) { System.err.println(x.getMessage()); x.printStackTrace(); System.exit(1); } return logLikelihood; } return oldLogLikelihood; } /** * Initial guess for the Baum-Welch algorithm */ static OpdfHmm buildInitHmm(int size) { OpdfHmm opdfHmm = new OpdfHmm(4 * size); // Randomly initialize initial probabilities double[] chances = SimpleMatrix.normalize(new double[]{ Math.random() * 50 + 1, Math.random() * 50 + 1, Math.random() * 50 + 1, Math.random() * 50 + 1 }); opdfHmm.getHmm().states[0].initial = chances[0]; opdfHmm.getHmm().states[1].initial = chances[1]; opdfHmm.getHmm().states[2].initial = chances[2]; opdfHmm.getHmm().states[3].initial = chances[3]; int counter = 0; for (int i = 0; i < size; i++) { opdfHmm.getHmm().states[counter].outputFreeze = true; opdfHmm.getHmm().states[counter++].opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{1.0, 0.0, 0.0, 0.0, 0.0}); opdfHmm.getHmm().states[counter].outputFreeze = true; opdfHmm.getHmm().states[counter++].opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{0.0, 1.0, 0.0, 0.0, 0.0}); opdfHmm.getHmm().states[counter].outputFreeze = true; opdfHmm.getHmm().states[counter++].opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{0.0, 0.0, 1.0, 0.0, 0.0}); opdfHmm.getHmm().states[counter].outputFreeze = true; opdfHmm.getHmm().states[counter++].opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{0.0, 0.0, 0.0, 1.0, 0.0}); } // Randomly initialize transition matrix for (int i = 0; i < size - 1; i++) { for (int from = i * 4; from < i * 4 + 4; from++) { chances = SimpleMatrix.normalize(new double[]{Math.random() * 50 + 1, Math.random() * 50 + 1, Math.random() * 50 + 1, Math.random() * 50 + 1}); counter = 0; for (int to = i * 4 + 4; to < i * 4 + 8; to++) { opdfHmm.getHmm().addTransition(from, to, chances[counter++]); } } } opdfHmm.getHmm().states[opdfHmm.getHmm().states.length - 4].isEndState = true; opdfHmm.getHmm().states[opdfHmm.getHmm().states.length - 3].isEndState = true; opdfHmm.getHmm().states[opdfHmm.getHmm().states.length - 2].isEndState = true; opdfHmm.getHmm().states[opdfHmm.getHmm().states.length - 1].isEndState = true; opdfHmm.makeStochasticFixNames(); return opdfHmm; } /** * This function calculates likelihood of mixture given learning set */ static double calculateLikelihood(OpdfMixture mixture, Observation[][] dataSet) { double logLikelihood = 0.0; for (int i = 0; i < dataSet.length; i++) { logLikelihood += mixture.lnProbability(dataSet[i]); } return logLikelihood; } /** * Make convolution chain */ OpdfHmm makeMarker(int size) { // So called before convolution network // Convolution network OpdfHmm marker = new OpdfHmm(size + 2); // Allocate initial probabilities marker.getHmm().states[0].initial = 1.0; // This is convolution of SIZE states State s; for (int i = 1; i < marker.getHmm().states.length - 1; i++) { s = marker.getHmm().states[i]; s.outputFreeze = true; s.opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{0.0, 0.0, 0.0, 0.0, 1.0}); } // Intermediate transition matrix for (int i = 0; i < marker.getHmm().states.length - 1; i++) { marker.getHmm().addTransition(i, i + 1, 1.0); } // End state is the last one marker.getHmm().states[marker.getHmm().states.length - 1].isEndState = true; // Finalize HMM cooking marker.makeStochasticFixNames(); marker = marker.convertToHmm(); return marker; } /** * Finish processing of data points and send it to processing */ public void finish() { if (ParametersXML.getBooleanFeature("exon_definition_model_construct")) { productionVersionExonDefinition((ObservationCharacter[][]) observations.buildArray()); } else { productionVersion((ObservationCharacter[][]) observations.buildArray()); } } /** * Process a data point */ public void process(String sequence) { int trimStart = ParametersXML.getIntegerFeature("trim_start"); int trimEnd = ParametersXML.getIntegerFeature("trim_end"); if (sequence.length() > trimStart + trimEnd) { sequence = sequence.substring(trimStart, sequence.length() - trimEnd); } else { return; } String motif = sequence.toUpperCase(); int startIndex = ParametersXML.getIntegerFeature("motif_index_start"); int endIndex = ParametersXML.getIntegerFeature("motif_index_end"); startIndex = (startIndex < 0) ? 0 : startIndex; endIndex = (endIndex < 0) ? sequence.length() : endIndex; if (motif.length() < endIndex) { return; } motif = motif.substring(startIndex, endIndex); // Sticky marker char[] ekses = new char[ParametersXML.getIntegerFeature("marker_size")]; Arrays.fill(ekses, 'X'); String marker = new String(ekses); motif += marker; ObservationCharacter[] obs = new ObservationCharacter[motif.length()]; for (int i = 0; i < obs.length; i++) { if (motif.charAt(i) == 'A') { obs[i] = observationA; } else if (motif.charAt(i) == 'C') { obs[i] = observationC; } else if (motif.charAt(i) == 'G') { obs[i] = observationG; } else if (motif.charAt(i) == 'T') { obs[i] = observationT; } else if (motif.charAt(i) == 'X') { obs[i] = observationX; } else { System.err.println("This character in the learning set is not a nucleotide: " + motif.charAt(i)); return; } } int hmmSize = ParametersXML.getIntegerFeature("motif_size") + 2 * ParametersXML.getIntegerFeature("convolution_size") + ParametersXML.getIntegerFeature("marker_size"); if (obs.length < hmmSize) { return; } if (observations.size() < ParametersXML.getIntegerFeature("max_learning_set_size")) { observations.add(obs); } } static public void main(String[] args) throws java.io.IOException { if (args.length < 1) { System.err.println("\tUsage: java BaumWelchLearner.MHMMotif [-parameter value]\n"); System.exit(1); } new ParametersXML(args[0]); for (int i = 0; i < args.length; i++) { if (args[i].startsWith("-")) { String parameter = args[i].substring(1); Object obj = ParametersXML.getFeature(parameter); try { if (obj instanceof Integer) { ParametersXML.putValue(parameter, "int", args[i + 1]); } else if (obj instanceof Double) { ParametersXML.putValue(parameter, "double", args[i + 1]); } else if (obj instanceof Boolean) { ParametersXML.putValue(parameter, "boolean", args[i + 1]); } else if (obj instanceof String) { ParametersXML.putValue(parameter, "String", args[i + 1]); } else if (obj instanceof Character) { ParametersXML.putValue(parameter, "char", args[i + 1]); } i++; } catch (Exception e) { e.printStackTrace(); System.err.println("Parameter " + parameter + " has illegal value."); System.err.println("Please consult file of parameters for proper type or value"); System.exit(1); } } } MHMMotif hrm = new MHMMotif(); if (ParametersXML.getBooleanFeature("generative_mode_active")) { System.out.println("Generating emissions out of Markov chain provided...\n"); hrm.generateObservations(); } else { System.out.println("Learning the mixture of Hidden Markov Models based in input sequences provided...\n"); hrm.getSequences(); } System.out.println("I am done!!!"); } } PK @pC =? @AB VCD XEF IGH XI XJK  LM _NOPQ RSTUVWXYZ[\]^_`abc 2defghijkl Dmn op Fq rs tu vwx y tz{| }~ C Dr  _ 4 C  F t t? r t F F F F F F  ?+jg     :    ?333333 @I   D    D D D D D     2C   2 !" D D#$ K%& observations#LBlastObject/ConvertibleLinkedList; observationA*LMyHMMParallel/jahmm/ObservationCharacter; observationC observationG observationT observationXfwLjava/io/FileWriter;MAX_MOTIF_SIZEI ConstantValue PARBOX_ASPECTDDIRECTORY_FOR_GRAPHICSLjava/lang/String;BEFOREAFTER()VCodeLineNumberTableLocalVariableTablethis*LBaumWelchLearner/MHMMotifModelPrediction;generateObservationsidirectoryMixturesfiles[Ljava/lang/String; makeSlide?([D[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)V snFormatterLjava/util/Formatter;stLjava/util/StringTokenizer;file fileBefore fileAftergraphicsAspectvAspecthAspectmixing[Dnames namesBefore namesAftercountermakeConvolutionHistograms6(LMyHMMParallel/jahmm/OpdfMixture;Ljava/lang/String;)VemissionCjmatchlengthobs"[LMyHMMParallel/jahmm/Observation;sbLjava/lang/StringBuffer;pLjava/util/regex/Pattern;mLjava/util/regex/Matcher;samplehmmLMyHMMParallel/jahmm/OpdfHmm; counterBefore counterAfter componentfstreamoutLjava/io/BufferedWriter;eLjava/lang/Exception;fileName splitName betterNamemix!LMyHMMParallel/jahmm/OpdfMixture;numberToGeneratesizemaxmin sampledSizes[[[I componentsMyHMMParallel/jahmm/Opdf;minimumFilledArraySizegenerateHMMMotifs(Ljava/lang/String;I)VstatemotifmotifsGenerated motifSizeepsNameshistogramsBeforehistogramsAfter slideCountersensorLMyHMMParallel/jahmm/Opdf;generatedMotifs[[Ljava/lang/String; writeLogoFile(([Ljava/lang/String;Ljava/lang/String;)Vqs1LHTMLquery/QuerySiteMultipartEncodedRecordResult;motifssequenceformtreeLBlastObject/ConvertibleRBTree; getSensorSize(LMyHMMParallel/jahmm/Opdf;)IgetHmm.(Ljava/lang/String;)LMyHMMParallel/jahmm/Opdf;dom LMyHMMParallel/jahmm/DOM_parser; mixtureModelmakeConvolutionChain!(ID)LMyHMMParallel/jahmm/OpdfHmm;s#LMyHMMParallel/distributions/State; probSameStatechainmodifyStateNames2(LMyHMMParallel/jahmm/OpdfHmm;Ljava/lang/String;)Vindex namePrefixproductionVersion/([[LMyHMMParallel/jahmm/ObservationCharacter;)VkrealfakevectorprobabilityIsTrue,[[LMyHMMParallel/jahmm/ObservationCharacter;positivenegative priorForTrue priorForFalse counterTrue counterFalse buildInitHmm (I)LMyHMMParallel/jahmm/OpdfHmm;tofromopdfHmmchancescalculateLikelihoodG(LMyHMMParallel/jahmm/OpdfMixture;[[LMyHMMParallel/jahmm/Observation;)DmixturedataSet#[[LMyHMMParallel/jahmm/Observation; logLikelihood makeMarkermarkerfinishprocess(Ljava/lang/String;)V trimStarttrimEnd startIndexendIndex+[LMyHMMParallel/jahmm/ObservationCharacter;hmmSizemain([Ljava/lang/String;)V parameterobjLjava/lang/Object;argshrm Exceptions' SourceFileMHMMotifModelPrediction.java `a!BlastObject/ConvertibleLinkedList JKfiles_to_generate_directory ()files_to_generate *+java/lang/StringBuilder ,-/ ./ 0 1 \onlySlide*{ ,2}{3 4 \begin{tabular}{cc}? % after \\: \hline or \cline{col1-col2} \cline{col3-col4} ...java/util/Formatter%.3fjava/lang/Object 56 7java/util/StringTokenizer\/ `8 9: ;/convolution_size <=  & \parbox[c]{ ,> \linewidth}{ \includegraphics[width=\linewidth, height= \linewidth]{Images/PromoterElements}}} \\\includegraphics[width= \end{tabular})number_of_convolution_samples_to_generateconvolution_sample_lengthconvolution_histogram_maxconvolution_histogram_min ?@MyHMMParallel/jahmm/OpdfHmmA BC DEjava/lang/StringBuffer(MyHMMParallel/jahmm/ObservationCharacter F ,GY+H IJ KLM N: O/ PZ+java/io/FileWriter `java/io/BufferedWriter `Q ,R S Tajava/lang/Exception U1Error: V//\\. WX_.m clear all;load ; array = min = max = for j = 1:(size(array,2) / 2) & before = array(:,1 + 2 * (j - 1)); % after = array(:,2 + 2 * (j - 1)); 3 %%%%%%%%%%%% Make Before histogram %%%%%%%%%%%%  [Y X] = hist(before,30);  bar(X,Y/sum(before),'r');  xlim([min, max]);  ylim([0 upper_histogram_limit YZ]);  eval(['print -depsc .b.' int2str(j - 1) '.eps;']); 2 %%%%%%%%%%%% Make After histogram %%%%%%%%%%%%  [Y X] = hist(after,30); & bar(X,Y(end:-1:1)/sum(after),'r'); .a.' int2str(j - 1) '.eps;']); end MyHMMParallel/jahmm/OpdfMixture [\number_of_motifs_to_generate ]^ _`a b[ c=before_convolution!MyHMMParallel/jahmm/OpdfCharacter `d eafter_convolution motif_size ,f"java/lang/IllegalArgumentException;Please check expected motif size to generate, which is now This should HMM!java/lang/String..eps.dat.b..dat.a. (This should be the Mixture of HMM Model! aligned_fileformatEPS logowidth18 logoheight5 logounitscmcommand Create LogokindAUTOfirstnum1 logostartlogoendsmallsamplecorrectiononsymbolsperline32res96 res_unitsppi antialiastitlebarbitsyaxis yaxis_labelbitsxaxis xaxis_labelshowendsshrink0.5 fineprintticbits colorschemeDEFAULTsymbol1KRHcolor1greenrgb1symbol2DEcolor2bluergb2symbol3AVLIPWFMcolor3redrgb3symbol4color4blackrgb4symbol5color5purplergb5symbol6color6orangergb6symbol7color7rgb7color0rgb0/HTMLquery/QuerySiteMultipartEncodedRecordResult logo_server `g ha,Since web query has crashed, we repeat it...iMyHMMParallel/jahmm/DOM_parser jk `l Y mn op qn ra st_initialinitial u= v wx yzfinal_finalhmm_file_in_positive"java/util/concurrent/CyclicBarrier {|hmm_file_in_negative} ~       l True is:   False is:  With accuracy %     trim_starttrim_end  /motif_index_startmotif_index_end4XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX marker_size  LM NM OM PM QM8This character in the learning set is not a nucleotide: Pmax_testing_set_size O Usage: java BaumWelchLearner.MHMMotif [-parameter value] BlastObject/ParametersXML-  zjava/lang/Integerint java/lang/Doubledoublejava/lang/BooleanbooleanStringjava/lang/Characterchar Parameter  has illegal value.:Please consult file of parameters for proper type or value(BaumWelchLearner/MHMMotifModelPrediction a I am done!!! `'ServiceRoutines/GenericLineByLineReaderjava/io/IOExceptiongetStringFeature&(Ljava/lang/String;)Ljava/lang/String; getFeature&(Ljava/lang/String;)Ljava/lang/Object;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;java/lang/SystemLjava/io/PrintStream;(I)Ljava/lang/StringBuilder;java/io/PrintStreamprintlnvalueOf(D)Ljava/lang/Double;<(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;'(Ljava/lang/String;Ljava/lang/String;)V hasMoreTokens()Z nextTokengetIntegerFeature(Ljava/lang/String;)I(D)Ljava/lang/StringBuilder; getComponents()[LMyHMMParallel/jahmm/Opdf;java/util/Arraysfill([II)Vgenerate%(I)[LMyHMMParallel/jahmm/Observation; character(C)Ljava/lang/StringBuffer;java/util/regex/Patterncompile-(Ljava/lang/String;)Ljava/util/regex/Pattern;matcher3(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;java/util/regex/Matcherfindgroup()I(Ljava/io/Writer;)V,(Ljava/lang/String;)Ljava/lang/StringBuffer;writecloseerr getMessagesplit'(Ljava/lang/String;)[Ljava/lang/String;getDoubleFeature(Ljava/lang/String;)DgetMix()[D#()LMyHMMParallel/distributions/Hmm;MyHMMParallel/distributions/Hmmstates$[LMyHMMParallel/distributions/State;!MyHMMParallel/distributions/StatenameindexOf([C[D)Vopdf(C)Ljava/lang/StringBuilder;;(Ljava/lang/String;[[Ljava/lang/String;Ljava/lang/String;)VprintStackTraceMyHMMParallel/jahmm/OpdfgetOpdf()LMyHMMParallel/jahmm/Opdf;(I)V outputFreezeZ addTransition-(IID)LMyHMMParallel/distributions/Transition; isEndStatemakeStochasticFixNames convertToHmm()LMyHMMParallel/jahmm/OpdfHmm;getHmmStateIndex changeName setInitial(Ljava/lang/String;D)VgetName(I)Ljava/lang/String; setBarrier'(Ljava/util/concurrent/CyclicBarrier;)Vjava/lang/Mathlog(D)D lnProbability%([LMyHMMParallel/jahmm/Observation;)D(MyHMMParallel/distributions/SimpleMatrix logSumExp([D)DexpisNaN(D)Zprint(Ljava/lang/Object;)Vexitrandom()D normalize([D)[D buildArray()Ljava/lang/Object; substring(II)Ljava/lang/String; toUpperCasecharAt(I)Cadd(Ljava/lang/Object;)Z startsWith(Ljava/lang/String;)ZputValue9(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V getSequences(C)V!DI JK LM NM OM PM QMRSTUVWXYV3Z[V:\UV]^UV_`abB**Yc,-.d efgab?L M>,'* Y +  ,2 ٱc457887>:d**hU?ef9i[-jklmbg- Y  ` 6+Y:Y+1SWY,2::  !: Y-2::  !: Y2::  !: "9 + "9 $++ $9 +&9  (k9 g*g,o9./ Y 0 1 2 356 7 58 59 :   ; 7  59 :   ; 7 58 59 :   < S Y 0 1 2 356 =  59 :   < >;c"B!C)D1E;FDGZJiKlLtM~PQRSVWXY\^_`abcfhjkpEt$u,vdDnoipqlr[ s[ at[ JuY vYwY4hU-ef-xy-zk-{k-|k-}U~b N?/>: :@/6A/6B/6+CD: +C: E6 6   )  2F:   22G  22G666 H:IYJ:6)22KL6MWNO:PQ:R1S:T6  22OUO:PQ:R1S:T6  22Ö́" 6  6 ջVY,W: XY Y: 6 IYJ:6 J Y  22.Z  22.[W d Z[W Y P \ ]IYJ:6 > Y dZ d[W d Z[W Y P \ ]IYJ:6 > Y `Z `[W d Z[W Y P \ ] ^": ` Y a  b Y,c: d:   !:  ef:d:6Md$ Y  2 g : Y  2 :VY Y    h W:XYY:IYJ:i[W Y j  k [W Y l 2 k [W Y m k [W Y n k [W\[Wo[Wp[Wq[W\[Wr[Ws[Wt[Wu[W Y v wx5y [W Y z  { [W\[W|[W}[W~[Wu[W Y v wx5y [W Y z   [W[WP]^": ` Y a  b w_ad_cw|} ~!(/<BFQ[fqtw  '.5CRU[bfmqw 'JT\b~ (2;?JTu9X`hp x     +JR\a df!d-.U$[U.$[5UzU[ tUwUI.U OUnUCUCUmS b  BRhUEpq  A[ ;&k?"[Sf efr[~U wi[jjk!cU(\U/UU<H BB F>U bl *+N::-f-::/6C:C:6   2Fw 2F: 6     2|  2*  2YYYUYR>  2'  2YYZUYR _6 6 6 /6  H:d:6L2;2KL6X'Y Z Y  :T 2 S  /  hY Y  U Y l: : : 6  }  Y +    S  Y +    S  Y +    S* 2  2  Yc7() *,-.#/*081?2J3U4_5p6789:5? @ABD!E%F0G8H;JHK]LsFyOPQSTVWY[\2`abcde@fbgpcvnyoqdbU H+(QU!%[_g  U U }U UBU U Z*LU?7k k k efr[U~ xuxybdN6+$ Y - +2 \ N2 YYSY-SYSSYYSYdSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSY YSYdSYSSY YSYdSYSSY YSYSYSSY YSYSYSSY YSYSYSSYYSYSYSSYYSYSYSSYYSYdSYSSYYSYdSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYdSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYdSYSSYYSYSYSSYYSYSYSSY YSYdSYSSY!YSYSYSSY"YSYSYSSY#YSYdSYSSY$YSYdSYSSY%YSYSYSSY&YSYdSYSSY'YSYdSYSSY(YSYSYSSY)YSYdSYSSY*YSYdSYSSY+YSYSYSSY,YSYdSYSSY-YSYdSYSSY.YSYSYSSY/YSYdSYSSY0YSYSYSSY1YSYdSYSS::Y,::`ݱ_c6 wx y(x.|d\ (hUefk[[*'b!=+WNd _c d*hU!ef!b`Y+M,N-c d*efr[ b FY`:26dq2:YYAUYCUYGUYTUYXUYRYRYRYRYR(W6d`(gWd2:c> -:@dH:a~hU(hUefUY  b* Y +  ** Y +  =>*dE*1*"* Y + g * Y +  *c& 57Gd d*9PU[7r}Ub*"*M,Y*N-Y9g966 6  + ,+ 2 c9  -+ 2 c9 Y RY R:  g 9 /6+ 2+ 22\   Y 5      `o5  *cb(49?E O!_"o#~$&'('*+./13 !5dU_Y oY ~yYHhU "ef"(9Y?YBUEU b һFYhLYkcRYkcRYkcRYkcRM+2,1+2,1+2,1+2,1>6a+2+2YYAUYCUYGUYTUYXUYRYRYRYRYR+2+2YYAUYCUYGUYTUYXUYRYRYRYRYR+2+2YYAUYCUYGUYTUYXUYRYRYRYRYR+2+2YYAUYCUYGUYTUYXUYRYRYRYRYR6dh6h`nYkcRYkcRYkcRYkcRM>h`6h`+,1W߄y++d2++d2++d2++d2++c ; >BDQE`FoG~IJKLMN5OBPQRJVWX:Y<ZP[bZhWnVt`abcegdRdhUD$UvUhUU ByR}UbwI6+(*+2 cI(cno pord*hUYbV ƻFY`M,26,dW,2N--YYAUYCUYGUYTUYXUYRYRYRYRYR6,d,`W,,d2,,M,c:{ ~*5:x~d>5IchU$hUefU ab@**c d efb t/= />+T`++Td!L+":#/6$/66 +T6!:%&/!: Y   :TK:6   'A (S 'C )Si 'G *SR 'T +S; 'X ,S$` Y -  ' a/./h`&/`6  *.// *0Wc"'(.6>K[fu34:PXYisdp hU teft[mUfU.F[6>U>6Uu[P$U b*`12Y*23W<**245*26M,N-7,8*`29X-:,;*`29B-<,=*`29,-,>*`29-?,@*`297:` Y A , B `C9DYEL+FG?_cz&2:?FU\krd>2:[? hUkfabe=KYAH(KYCH)KYGH*KYTH+KYXH,c# $%$&0'PK ApC< e}e}-BaumWelchLearner/MHMMotifModelPrediction.java/* * Copyright (c) 2007, Tchourbanov Alexander. * * This file is part of MHMMotif package. * MHMMotif is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * MHMMotif is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Jahmm; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package BaumWelchLearner; import java.io.*; import MyHMMParallel.jahmm.*; import MyHMMParallel.distributions.*; import ServiceRoutines.*; import BlastObject.*; import HTMLquery.*; import java.util.*; import java.util.regex.*; import java.util.concurrent.CyclicBarrier; public class MHMMotifModelPrediction extends GenericLineByLineReader { private ConvertibleLinkedList observations; private static ObservationCharacter observationA = new ObservationCharacter('A'); private static ObservationCharacter observationC = new ObservationCharacter('C'); private static ObservationCharacter observationG = new ObservationCharacter('G'); private static ObservationCharacter observationT = new ObservationCharacter('T'); private static ObservationCharacter observationX = new ObservationCharacter('X'); // File writer FileWriter fw; static final int MAX_MOTIF_SIZE = 150; MHMMotifModelPrediction() { observations = new ConvertibleLinkedList(); } /** * Here we generate observations for certain HMM file */ void generateObservations() { String directoryMixtures = ParametersXML.getStringFeature("files_to_generate_directory"); String[] files = (String[]) ParametersXML.getFeature("files_to_generate"); for (int i = 0; i < files.length; i++) { this.generateHMMMotifs(directoryMixtures + "/" + files[i], i); } } static final double PARBOX_ASPECT = 0.8; static final String DIRECTORY_FOR_GRAPHICS = "Images/PromoterElements"; /** * Here we make slide for prosper presentation engine */ void makeSlide(double[] mixing, String[] names, String[] namesBefore, String[] namesAfter, int counter) { System.out.println("\\onlySlide*{" + (counter + 1) + "}{"); System.out.println("\t\\begin{tabular}{cc}"); System.out.println("\t\t% after \\\\: \\hline or \\cline{col1-col2} \\cline{col3-col4} ..."); for (int i = 0; i < mixing.length; i++) { Formatter snFormatter = new Formatter(); snFormatter.format("%.3f", mixing[i]); // Extract main logo StringTokenizer st = new StringTokenizer(names[i], "\\/"); String file = null; while (st.hasMoreTokens()) { file = st.nextToken(); } st = new StringTokenizer(namesBefore[i], "\\/"); String fileBefore = null; while (st.hasMoreTokens()) { fileBefore = st.nextToken(); } st = new StringTokenizer(namesAfter[i], "\\/"); String fileAfter = null; while (st.hasMoreTokens()) { fileAfter = st.nextToken(); } double graphicsAspect = 0.6; if (mixing.length <= 2) { graphicsAspect = 0.6; } else if (mixing.length > 2 && mixing.length < 6) { graphicsAspect = 0.4; } else if (mixing.length >= 6) { graphicsAspect = 0.38; } double vAspect = graphicsAspect * (0.1 / 0.38); // Locked relationship double hAspect = (1.0 - graphicsAspect - 0.05) / 2.0; if (ParametersXML.getIntegerFeature("convolution_size") > 0) { System.out.println("\t\t" + snFormatter.toString() + " & \\parbox[c]{" + PARBOX_ASPECT + "\\linewidth}{" + "\n\t\t\t\\includegraphics[width=" + hAspect + "\\linewidth, height=" + vAspect + "\\linewidth]{" + DIRECTORY_FOR_GRAPHICS + "/" + fileBefore + "}" + "\n\t\t\t\\includegraphics[width=" + graphicsAspect + "\\linewidth]{" + DIRECTORY_FOR_GRAPHICS + "/" + file + "}" + "\n\t\t\t\\includegraphics[width=" + hAspect + "\\linewidth, height=" + vAspect + "\\linewidth]{" + DIRECTORY_FOR_GRAPHICS + "/" + fileAfter + "}} \\\\"); } else { System.out.println("\t\t" + snFormatter.toString() + " & \\parbox[c]{" + PARBOX_ASPECT + "\\linewidth}{" + "\\includegraphics[width=" + graphicsAspect + "\\linewidth]{" + DIRECTORY_FOR_GRAPHICS + "/" + file + "}} \\\\"); } } System.out.println("\t\\end{tabular}"); System.out.println("}"); } static final int BEFORE = 0; static final int AFTER = 1; void makeConvolutionHistograms(OpdfMixture mix, String file) { int numberToGenerate = ParametersXML.getIntegerFeature("number_of_convolution_samples_to_generate"); String directoryMixtures = ParametersXML.getStringFeature("files_to_generate_directory"); String[] files = (String[]) ParametersXML.getFeature("files_to_generate"); int size = ParametersXML.getIntegerFeature("convolution_sample_length"); int max = ParametersXML.getIntegerFeature("convolution_histogram_max"); int min = ParametersXML.getIntegerFeature("convolution_histogram_min"); int[][][] sampledSizes = new int[mix.getComponents().length][2][numberToGenerate]; Opdf[] components = mix.getComponents(); int minimumFilledArraySize = Integer.MAX_VALUE; for (int component = 0; component < components.length; component++) { OpdfHmm hmm = (OpdfHmm) components[component]; Arrays.fill(sampledSizes[component][BEFORE], -1); Arrays.fill(sampledSizes[component][AFTER], -1); int counterBefore = 0; int counterAfter = 0; for (int sample = 0; sample < numberToGenerate; sample++) { Observation[] obs = hmm.generate(size); StringBuffer sb = new StringBuffer(); for (int j = 0; j < obs.length; j++) { if (obs[j] == null) { continue; } char emission = ((ObservationCharacter) obs[j]).character; sb.append(emission); } // Before convolution Pattern p = Pattern.compile("Y+"); Matcher m = p.matcher(sb.toString()); while (m.find()) { // Get the matching string String match = m.group(); int length = match.length(); if (length > min && length < max) { sampledSizes[component][BEFORE][counterBefore++] = length; } } // After convolution p = Pattern.compile("Z+"); m = p.matcher(sb.toString()); while (m.find()) { // Get the matching string String match = m.group(); int length = match.length(); if (length > min && length < max) { sampledSizes[component][AFTER][counterAfter++] = length; } } } if (minimumFilledArraySize > counterBefore) { minimumFilledArraySize = counterBefore; } if (minimumFilledArraySize > counterAfter) { minimumFilledArraySize = counterAfter; } } // Write generated sequences to file try { // Create file FileWriter fstream = new FileWriter(file); BufferedWriter out = new BufferedWriter(fstream); for (int sample = 0; sample < minimumFilledArraySize; sample++) { StringBuffer sb = new StringBuffer(); for (int component = 0; component < components.length; component++) { sb.append(sampledSizes[component][BEFORE][sample] + "\t" + sampledSizes[component][AFTER][sample]); if (component < components.length - 1) { sb.append("\t"); } } out.write(sb.toString() + "\n"); } // This is made for histogram normalization StringBuffer sb = new StringBuffer(); for (int component = 0; component < components.length; component++) { sb.append((min - 1) + "\t" + (min - 1)); if (component < components.length - 1) { sb.append("\t"); } } out.write(sb.toString() + "\n"); sb = new StringBuffer(); for (int component = 0; component < components.length; component++) { sb.append((max + 1) + "\t" + (max + 1)); if (component < components.length - 1) { sb.append("\t"); } } out.write(sb.toString() + "\n"); out.close(); } catch (Exception e) {//Catch exception if any System.err.println("Error: " + e.getMessage()); } // Here we write to disk Matlab program to process the file try { // Create file StringTokenizer st = new StringTokenizer(file, "/\\"); String fileName = ""; while (st.hasMoreTokens()) { fileName = st.nextToken(); } // Meke it Matlab compatible String[] splitName = fileName.split("\\."); String betterName = ""; for (int i = 0; i < splitName.length; i++) { if (i < splitName.length - 1) { betterName += splitName[i] + "_"; } else { betterName += splitName[i]; } } FileWriter fstream = new FileWriter(ParametersXML.getStringFeature("files_to_generate_directory") + "/" + betterName + ".m"); BufferedWriter out = new BufferedWriter(fstream); StringBuffer sb = new StringBuffer(); sb.append("clear all;"); sb.append("load " + fileName + ";\n"); sb.append("array = " + splitName[0] + ";\n"); sb.append("min = " + min + ";\n"); sb.append("max = " + max + ";\n"); sb.append("\n"); sb.append("for j = 1:(size(array,2) / 2)\n"); sb.append(" before = array(:,1 + 2 * (j - 1));\n"); sb.append(" after = array(:,2 + 2 * (j - 1));\n"); sb.append("\n"); sb.append(" %%%%%%%%%%%% Make Before histogram %%%%%%%%%%%%\n"); sb.append(" [Y X] = hist(before,30);\n"); sb.append(" bar(X,Y/sum(before),'r');\n"); sb.append(" xlim([min, max]);\n"); sb.append(" ylim([0 " + ParametersXML.getDoubleFeature("upper_histogram_limit") + "]);\n"); sb.append(" eval(['print -depsc " + fileName + ".b.' int2str(j - 1) '.eps;']);\n"); sb.append("\n"); sb.append(" %%%%%%%%%%%% Make After histogram %%%%%%%%%%%%\n"); sb.append(" [Y X] = hist(after,30);\n"); sb.append(" bar(X,Y(end:-1:1)/sum(after),'r');\n"); sb.append(" xlim([min, max]);\n"); sb.append(" ylim([0 " + ParametersXML.getDoubleFeature("upper_histogram_limit") + "]);\n"); sb.append(" eval(['print -depsc " + fileName + ".a.' int2str(j - 1) '.eps;']);\n"); sb.append("end\n"); out.write(sb.toString()); out.close(); } catch (Exception e) {//Catch exception if any System.err.println("Error: " + e.getMessage()); } } /** * This method is used to generate HMM motifs */ void generateHMMMotifs(String file, int slideCounter) { // Now we download sensor... Opdf sensor = getHmm(file); String[][] generatedMotifs = null; double[] mixing = null; if (sensor instanceof OpdfMixture) { OpdfMixture mix = (OpdfMixture) sensor; mixing = mix.getMix(); int numberToGenerate = ParametersXML.getIntegerFeature("number_of_motifs_to_generate"); generatedMotifs = new String[mix.getComponents().length][numberToGenerate]; Opdf[] components = mix.getComponents(); for (int component = 0; component < components.length; component++) { if (components[component] instanceof OpdfHmm) { OpdfHmm hmm = (OpdfHmm) components[component]; for (int state = 0; state < hmm.getHmm().states.length; state++) { if (hmm.getHmm().states[state].name.indexOf("motif") == -1) { if (hmm.getHmm().states[state].name.indexOf("before_convolution") != -1) { hmm.getHmm().states[state].opdf = new OpdfCharacter(new char[]{'Y'}, new double[]{1.0}); } else if (hmm.getHmm().states[state].name.indexOf("after_convolution") != -1) { hmm.getHmm().states[state].opdf = new OpdfCharacter(new char[]{'Z'}, new double[]{1.0}); } } } int size = MAX_MOTIF_SIZE; int motifsGenerated = 0; int counter = 0; int motifSize = ParametersXML.getIntegerFeature("motif_size"); while (true) { Observation[] obs = hmm.generate(size); String motif = ""; for (int j = 0; j < obs.length; j++) { if (obs[j] == null) { continue; } char emission = ((ObservationCharacter) obs[j]).character; if (emission != 'X' && emission != 'Y' && emission != 'Z') { motif += emission; } } if (motif.length() == motifSize) { generatedMotifs[component][motifsGenerated] = motif; motifsGenerated++; } if (motifsGenerated >= numberToGenerate) { break; } if (counter++ > numberToGenerate * 10) { throw new IllegalArgumentException("Please check expected motif size to generate, which is now " + motifSize); } } } else { throw new IllegalArgumentException("This should HMM!"); } } String[] epsNames = new String[mixing.length]; String[] histogramsBefore = new String[mixing.length]; String[] histogramsAfter = new String[mixing.length]; for (int component = 0; component < generatedMotifs.length; component++) { epsNames[component] = file + "." + component + ".eps"; histogramsBefore[component] = file + ".dat.b." + component + ".eps"; histogramsAfter[component] = file + ".dat.a." + component + ".eps"; writeLogoFile(generatedMotifs[component], epsNames[component]); } //makeSlide(mixing, epsNames, histogramsBefore, histogramsAfter, slideCounter); // Generate convolution histograms //if(ParametersXML.getIntegerFeature("convolution_size") > 0) makeConvolutionHistograms(mix, file + ".dat"); } else { throw new IllegalArgumentException("This should be the Mixture of HMM Model!"); } } /** * Here we are given bunch of motif logos to write to a file. */ void writeLogoFile(String[] motifs, String fileName) { String sequence = ""; for (int i = 0; i < motifs.length; i++) { sequence += motifs[i] + "\n"; } String[][] form = { {"sequence", sequence, "parameter"}, {"aligned_file", "", "file"}, {"format", "EPS", "parameter"}, {"logowidth", "18", "parameter"}, {"logoheight", "5", "parameter"}, {"logounits", "cm", "parameter"}, {"command", "Create Logo", "parameter"}, {"kind", "AUTO", "parameter"}, {"firstnum", "1", "parameter"}, {"logostart", "", "parameter"}, {"logoend", "", "parameter"}, {"smallsamplecorrection", "on", "parameter"}, {"symbolsperline", "32", "parameter"}, {"res", "96", "parameter"}, {"res_units", "ppi", "parameter"}, {"antialias", "on", "parameter"}, {"title", "", "parameter"}, {"barbits", "", "parameter"}, {"yaxis", "on", "parameter"}, {"yaxis_label", "bits", "parameter"}, {"xaxis", "on", "parameter"}, {"xaxis_label", "", "parameter"}, {"showends", "on", "parameter"}, {"shrink", "0.5", "parameter"}, {"fineprint", "on", "parameter"}, {"ticbits", "1", "parameter"}, {"colorscheme", "DEFAULT", "parameter"}, {"symbol1", "KRH", "parameter"}, {"color1", "green", "parameter"}, {"rgb1", "", "parameter"}, {"symbol2", "DE", "parameter"}, {"color2", "blue", "parameter"}, {"rgb2", "", "parameter"}, {"symbol3", "AVLIPWFM", "parameter"}, {"color3", "red", "parameter"}, {"rgb3", "", "parameter"}, {"symbol4", "", "parameter"}, {"color4", "black", "parameter"}, {"rgb4", "", "parameter"}, {"symbol5", "", "parameter"}, {"color5", "purple", "parameter"}, {"rgb5", "", "parameter"}, {"symbol6", "", "parameter"}, {"color6", "orange", "parameter"}, {"rgb6", "", "parameter"}, {"symbol7", "", "parameter"}, {"color7", "black", "parameter"}, {"rgb7", "", "parameter"}, {"color0", "black", "parameter"}, {"rgb0", "", "parameter"} }; // Query online - if tool crashes then recycle ConvertibleRBTree tree = null; while (true) { try { QuerySiteMultipartEncodedRecordResult qs = new QuerySiteMultipartEncodedRecordResult(ParametersXML.getStringFeature("logo_server"), form, fileName); } catch (Exception e) { e.printStackTrace(); System.err.println("Since web query has crashed, we repeat it..."); continue; } break; } } /** * Find out size of a sensor */ int getSensorSize(Opdf sensor) { for (int i = 1; i < MAX_MOTIF_SIZE; i++) { try { sensor.generate(i); } catch (Exception e) { return i - 1; } } return MAX_MOTIF_SIZE; } /** * Gets HMM from file */ public Opdf getHmm(String file) { DOM_parser dom = new DOM_parser(file); Opdf mixtureModel = dom.getOpdf(); return mixtureModel; } /** * Make convolution chain */ OpdfHmm makeConvolutionChain(int size, double probSameState) { /********************************************************************/ // So called convolution network // Convolution network OpdfHmm chain = new OpdfHmm(size + 2); // Allocate initial probabilities chain.getHmm().states[0].initial = 1.0; // This is convolution of SIZE states State s; for (int i = 1; i < chain.getHmm().states.length - 1; i++) { s = chain.getHmm().states[i]; // s.transitionsFreeze = true; s.outputFreeze = true; s.opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{0.25, 0.25, 0.25, 0.25, 0.0}); chain.getHmm().addTransition(i, i, probSameState); } // Intermediate transition matrix for (int i = 0; i < chain.getHmm().states.length - 1; i++) { chain.getHmm().addTransition(i, i + 1, 1.0 - probSameState); } // End state is the last one chain.getHmm().states[chain.getHmm().states.length - 1].isEndState = true; // Finalize HMM cooking chain.makeStochasticFixNames(); chain = chain.convertToHmm(); return chain; } /** * This method renames states according to certain name */ public static void modifyStateNames(OpdfHmm hmm, String namePrefix) { hmm.changeName(namePrefix + "_initial", hmm.getHmmStateIndex("initial")); hmm.setInitial(namePrefix + "_initial", 1.0); int counter = 0; for (int index = 0; index < hmm.getHmm().states.length - 1; index++) { if (hmm.getName(index).indexOf("initial") == -1 && hmm.getName(index).indexOf("final") == -1) { hmm.changeName(namePrefix + "_" + counter++, index); } } hmm.changeName(namePrefix + "_final", hmm.getHmmStateIndex("final")); } /** * This is production version for finding motifs in * pre-acceptors and post-donor regions */ private void productionVersion(ObservationCharacter[][] obs) { // Download file from pre-existing record OpdfMixture positive = (OpdfMixture) getHmm(ParametersXML.getStringFeature("hmm_file_in_positive")); positive.setBarrier(new CyclicBarrier(1)); OpdfMixture negative = (OpdfMixture) getHmm(ParametersXML.getStringFeature("hmm_file_in_negative")); negative.setBarrier(new CyclicBarrier(1)); // double priorForTrue = (double) 8415 / (double) (8415 + 179438); // double priorForFalse = (double) 179438 / (double) (8415 + 179438); double priorForTrue = 0.0234; double priorForFalse = 1.0-priorForTrue; int counterTrue = 0, counterFalse = 0; for (int i = 0; i < obs.length; i++) { double real = Math.log(priorForTrue) + positive.lnProbability(obs[i]); double fake = Math.log(priorForFalse) + negative.lnProbability(obs[i]); double[] vector = {real, fake}; double probabilityIsTrue = Math.exp(real - SimpleMatrix.logSumExp(vector)); if(Double.isNaN(probabilityIsTrue)) { for(int k = 0; k < obs[i].length; k++) { System.out.print(obs[i][k]); } System.out.print("\n"); System.exit(1); } if (probabilityIsTrue > 0.3) { counterTrue++; } else { counterFalse++; } System.out.println(probabilityIsTrue + " True is: " + counterTrue + " " + " False is: " + counterFalse + " With accuracy " + (double) counterTrue / (double) (counterTrue + counterFalse) + "%"); } } /** * Initial guess for the Baum-Welch algorithm */ static OpdfHmm buildInitHmm(int size) { OpdfHmm opdfHmm = new OpdfHmm(4 * size); // Randomly initialize initial probabilities double[] chances = SimpleMatrix.normalize(new double[]{ Math.random() * 50 + 1, Math.random() * 50 + 1, Math.random() * 50 + 1, Math.random() * 50 + 1 }); opdfHmm.getHmm().states[0].initial = chances[0]; opdfHmm.getHmm().states[1].initial = chances[1]; opdfHmm.getHmm().states[2].initial = chances[2]; opdfHmm.getHmm().states[3].initial = chances[3]; int counter = 0; for (int i = 0; i < size; i++) { opdfHmm.getHmm().states[counter].outputFreeze = true; opdfHmm.getHmm().states[counter++].opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{1.0, 0.0, 0.0, 0.0, 0.0}); opdfHmm.getHmm().states[counter].outputFreeze = true; opdfHmm.getHmm().states[counter++].opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{0.0, 1.0, 0.0, 0.0, 0.0}); opdfHmm.getHmm().states[counter].outputFreeze = true; opdfHmm.getHmm().states[counter++].opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{0.0, 0.0, 1.0, 0.0, 0.0}); opdfHmm.getHmm().states[counter].outputFreeze = true; opdfHmm.getHmm().states[counter++].opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{0.0, 0.0, 0.0, 1.0, 0.0}); } // Randomly initialize transition matrix for (int i = 0; i < size - 1; i++) { for (int from = i * 4; from < i * 4 + 4; from++) { chances = SimpleMatrix.normalize(new double[]{Math.random() * 50 + 1, Math.random() * 50 + 1, Math.random() * 50 + 1, Math.random() * 50 + 1}); counter = 0; for (int to = i * 4 + 4; to < i * 4 + 8; to++) { opdfHmm.getHmm().addTransition(from, to, chances[counter++]); } } } opdfHmm.getHmm().states[opdfHmm.getHmm().states.length - 4].isEndState = true; opdfHmm.getHmm().states[opdfHmm.getHmm().states.length - 3].isEndState = true; opdfHmm.getHmm().states[opdfHmm.getHmm().states.length - 2].isEndState = true; opdfHmm.getHmm().states[opdfHmm.getHmm().states.length - 1].isEndState = true; opdfHmm.makeStochasticFixNames(); return opdfHmm; } /** * This function calculates likelihood of mixture given learning set */ static double calculateLikelihood(OpdfMixture mixture, Observation[][] dataSet) { double logLikelihood = 0.0; for (int i = 0; i < dataSet.length; i++) { logLikelihood += mixture.lnProbability(dataSet[i]); } return logLikelihood; } /** * Make convolution chain */ OpdfHmm makeMarker(int size) { // So called before convolution network // Convolution network OpdfHmm marker = new OpdfHmm(size + 2); // Allocate initial probabilities marker.getHmm().states[0].initial = 1.0; // This is convolution of SIZE states State s; for (int i = 1; i < marker.getHmm().states.length - 1; i++) { s = marker.getHmm().states[i]; s.outputFreeze = true; s.opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{0.0, 0.0, 0.0, 0.0, 1.0}); } // Intermediate transition matrix for (int i = 0; i < marker.getHmm().states.length - 1; i++) { marker.getHmm().addTransition(i, i + 1, 1.0); } // End state is the last one marker.getHmm().states[marker.getHmm().states.length - 1].isEndState = true; // Finalize HMM cooking marker.makeStochasticFixNames(); marker = marker.convertToHmm(); return marker; } /** * Finish processing of data points and send it to processing */ public void finish() { productionVersion((ObservationCharacter[][]) observations.buildArray()); } /** * Process a data point */ public void process(String sequence) { int trimStart = ParametersXML.getIntegerFeature("trim_start"); int trimEnd = ParametersXML.getIntegerFeature("trim_end"); if (sequence.length() > trimStart + trimEnd) { sequence = sequence.substring(trimStart, sequence.length() - trimEnd); } else { return; } String motif = sequence.toUpperCase(); // String temp = motif.substring(motif.length()/2) + motif.substring(0,motif.length()/2); // motif = temp; int startIndex = ParametersXML.getIntegerFeature("motif_index_start"); int endIndex = ParametersXML.getIntegerFeature("motif_index_end"); startIndex = (startIndex < 0) ? 0 : startIndex; endIndex = (endIndex < 0) ? sequence.length() : endIndex; motif = motif.substring(startIndex, endIndex); // Sticky marker String marker = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX".substring(0, ParametersXML.getIntegerFeature("marker_size")); motif += marker; ObservationCharacter[] obs = new ObservationCharacter[motif.length()]; for (int i = 0; i < obs.length; i++) { if (motif.charAt(i) == 'A') { obs[i] = observationA; } else if (motif.charAt(i) == 'C') { obs[i] = observationC; } else if (motif.charAt(i) == 'G') { obs[i] = observationG; } else if (motif.charAt(i) == 'T') { obs[i] = observationT; } else if (motif.charAt(i) == 'X') { obs[i] = observationX; } else { System.err.println("This character in the learning set is not a nucleotide: " + motif.charAt(i)); return; } } int hmmSize = ParametersXML.getIntegerFeature("motif_size") + 2 * ParametersXML.getIntegerFeature("convolution_size") + ParametersXML.getIntegerFeature("marker_size"); if (obs.length < hmmSize) { return; } if (observations.size() < ParametersXML.getIntegerFeature("max_testing_set_size")) { observations.add(obs); } } static public void main(String[] args) throws java.io.IOException { if (args.length < 1) { System.err.println("\tUsage: java BaumWelchLearner.MHMMotif [-parameter value]\n"); System.exit(1); } new ParametersXML(args[0]); for (int i = 0; i < args.length; i++) { if (args[i].startsWith("-")) { String parameter = args[i].substring(1); Object obj = ParametersXML.getFeature(parameter); try { if (obj instanceof Integer) { ParametersXML.putValue(parameter, "int", args[i + 1]); } else if (obj instanceof Double) { ParametersXML.putValue(parameter, "double", args[i + 1]); } else if (obj instanceof Boolean) { ParametersXML.putValue(parameter, "boolean", args[i + 1]); } else if (obj instanceof String) { ParametersXML.putValue(parameter, "String", args[i + 1]); } else if (obj instanceof Character) { ParametersXML.putValue(parameter, "char", args[i + 1]); } i++; } catch (Exception e) { e.printStackTrace(); System.err.println("Parameter " + parameter + " has illegal value."); System.err.println("Please consult file of parameters for proper type or value"); System.exit(1); } } } MHMMotifModelPrediction hrm = new MHMMotifModelPrediction(); hrm.getSequences(); System.out.println("I am done!!!"); } } PK ApC<⃘XX4BaumWelchLearner/MHMMotifModelPredictionBetter.class1 S  N = ! ="u#  $% & N' ()* +, -./01 23 D4 567 8 9 :?333333?ٙ?QR?ה5 y?@; =<= &>?陙 ?@ABCDEFGHIJKL MN OP FQR IS KT IUV WX I& WY Z[ Z\ ]^_ V`a Xbc Ide Xf Xgh (ij _klmn opqrstuvwxyz{|}~ = N  F       ` N|  _ Q `  F  ?   F F F F F F  ?       @I    N N         !" #$ %& %'( ') * N+ ,-./012 34 5 N6 N7 N8 N9 N:;< (=> =`? @ AB =CDEFGHIJKLMN N NOP KQR observations#LBlastObject/ConvertibleLinkedList; observationA*LMyHMMParallel/jahmm/ObservationCharacter; observationC observationG observationT observationXfwLjava/io/FileWriter;MAX_MOTIF_SIZEI ConstantValue PARBOX_ASPECTDDIRECTORY_FOR_GRAPHICSLjava/lang/String;BEFOREAFTER()VCodeLineNumberTableLocalVariableTablethis0LBaumWelchLearner/MHMMotifModelPredictionBetter;generateObservationsidirectoryMixturesfiles[Ljava/lang/String; makeSlide?([D[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)V snFormatterLjava/util/Formatter;stLjava/util/StringTokenizer;file fileBefore fileAftergraphicsAspectvAspecthAspectmixing[Dnames namesBefore namesAftercountermakeConvolutionHistograms6(LMyHMMParallel/jahmm/OpdfMixture;Ljava/lang/String;)VemissionCjmatchlengthobs"[LMyHMMParallel/jahmm/Observation;sbLjava/lang/StringBuffer;pLjava/util/regex/Pattern;mLjava/util/regex/Matcher;samplehmmLMyHMMParallel/jahmm/OpdfHmm; counterBefore counterAfter componentfstreamoutLjava/io/BufferedWriter;eLjava/lang/Exception;fileName splitName betterNamemix!LMyHMMParallel/jahmm/OpdfMixture;numberToGeneratesizemaxmin sampledSizes[[[I componentsMyHMMParallel/jahmm/Opdf;minimumFilledArraySizegenerateHMMMotifs(Ljava/lang/String;I)VstatemotifmotifsGenerated motifSizeepsNameshistogramsBeforehistogramsAfter slideCountersensorLMyHMMParallel/jahmm/Opdf;generatedMotifs[[Ljava/lang/String; writeLogoFile(([Ljava/lang/String;Ljava/lang/String;)Vqs1LHTMLquery/QuerySiteMultipartEncodedRecordResult;motifssequenceformtreeLBlastObject/ConvertibleRBTree; getSensorSize(LMyHMMParallel/jahmm/Opdf;)IgetHmm.(Ljava/lang/String;)LMyHMMParallel/jahmm/Opdf;dom LMyHMMParallel/jahmm/DOM_parser; mixtureModelmakeConvolutionChain!(ID)LMyHMMParallel/jahmm/OpdfHmm;s#LMyHMMParallel/distributions/State; probSameStatechainmodifyStateNames2(LMyHMMParallel/jahmm/OpdfHmm;Ljava/lang/String;)Vindex namePrefixproductionVersion/([[LMyHMMParallel/jahmm/ObservationCharacter;)VrealfakevectorprobabilityIsTrue,[[LMyHMMParallel/jahmm/ObservationCharacter;positivenegative priorForTrue priorForFalse counterTrue counterFalse buildInitHmm (I)LMyHMMParallel/jahmm/OpdfHmm;tofromopdfHmmchancescalculateLikelihoodG(LMyHMMParallel/jahmm/OpdfMixture;[[LMyHMMParallel/jahmm/Observation;)DmixturedataSet#[[LMyHMMParallel/jahmm/Observation; logLikelihood makeMarkermarkerfinishprocess4(LBlastObject/ConvertibleRBTree;Ljava/lang/String;)VsignalsprocessForExonBodiesTestSetacceptorCoordinateintron donorSignalsLjava/util/TreeMap;acceptorSignals setAcceptorLjava/util/Set; itAcceptorLjava/util/Iterator;frgsServiceRoutines/Fragment;LocalVariableTypeTableBLjava/util/TreeMap;$Ljava/util/Set;)Ljava/util/Iterator;(Ljava/lang/String;)V trimStarttrimEnd startIndexendIndexhmmSizeconvertToObservations?(Ljava/lang/String;)[LMyHMMParallel/jahmm/ObservationCharacter;+[LMyHMMParallel/jahmm/ObservationCharacter;main([Ljava/lang/String;)V parameterobjLjava/lang/Object;argshrm ExceptionsS SourceFile"MHMMotifModelPredictionBetter.java jk!BlastObject/ConvertibleLinkedList TUfiles_to_generate_directory TUfiles_to_generate VWjava/lang/StringBuilder XY/ Z[ \ ] \onlySlide*{ X^}{_ ` \begin{tabular}{cc}? % after \\: \hline or \cline{col1-col2} \cline{col3-col4} ...java/util/Formatter%.3fjava/lang/Object ab cjava/util/StringTokenizer\/ jd ef g[convolution_size hi  & \parbox[c]{ Xj \linewidth}{ \includegraphics[width=\linewidth, height= \linewidth]{Images/PromoterElements}}} \\\includegraphics[width= \end{tabular})number_of_convolution_samples_to_generateconvolution_sample_lengthconvolution_histogram_maxconvolution_histogram_min klMyHMMParallel/jahmm/OpdfHmmm no pqjava/lang/StringBuffer(MyHMMParallel/jahmm/ObservationCharacter r XsY+t uv wxy zf {[ |Z+java/io/FileWriter jjava/io/BufferedWriter j} X~  kjava/lang/Exception ]Error: [/\\. _.m clear all;load ; array = min = max = for j = 1:(size(array,2) / 2) & before = array(:,1 + 2 * (j - 1)); % after = array(:,2 + 2 * (j - 1)); 3 %%%%%%%%%%%% Make Before histogram %%%%%%%%%%%%  [Y X] = hist(before,30);  bar(X,Y/sum(before),'r');  xlim([min, max]);  ylim([0 upper_histogram_limit ]);  eval(['print -depsc .b.' int2str(j - 1) '.eps;']); 2 %%%%%%%%%%%% Make After histogram %%%%%%%%%%%%  [Y X] = hist(after,30); & bar(X,Y(end:-1:1)/sum(after),'r'); .a.' int2str(j - 1) '.eps;']); end MyHMMParallel/jahmm/OpdfMixture number_of_motifs_to_generate   e ibefore_convolution!MyHMMParallel/jahmm/OpdfCharacter j after_convolution motif_size X"java/lang/IllegalArgumentException;Please check expected motif size to generate, which is now This should HMM!java/lang/String..eps.dat.b..dat.a. (This should be the Mixture of HMM Model! aligned_fileformatEPS logowidth18 logoheight5 logounitscmcommand Create LogokindAUTOfirstnum1 logostartlogoendsmallsamplecorrectiononsymbolsperline32res96 res_unitsppi antialiastitlebarbitsyaxis yaxis_labelbitsxaxis xaxis_labelshowendsshrink0.5 fineprintticbits colorschemeDEFAULTsymbol1KRHcolor1greenrgb1symbol2DEcolor2bluergb2symbol3AVLIPWFMcolor3redrgb3symbol4color4blackrgb4symbol5color5purplergb5symbol6color6orangergb6symbol7color7rgb7color0rgb0/HTMLquery/QuerySiteMultipartEncodedRecordResult logo_server j k,Since web query has crashed, we repeat it...MyHMMParallel/jahmm/DOM_parser  j c    k _initialinitial i   final_finalhmm_file_in_positive"java/util/concurrent/CyclicBarrier hmm_file_in_negative     True is:   False is:  With accuracy %      [  [ [    f java/lang/Integer |     trim_starttrim_endmotif_index_startmotif_index_end4XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX marker_size |max_testing_set_size  VW XW YW ZW [W8This character in the learning set is not a nucleotide: O Usage: java BaumWelchLearner.MHMMotif [-parameter value] BlastObject/ParametersXML-  int java/lang/Doubledoublejava/lang/BooleanbooleanStringjava/lang/Characterchar Parameter  has illegal value.:Please consult file of parameters for proper type or value.BaumWelchLearner/MHMMotifModelPredictionBetter k I am done!!! j&ServiceRoutines/GenericGIGOFastaReaderjava/io/IOExceptiongetStringFeature&(Ljava/lang/String;)Ljava/lang/String; getFeature&(Ljava/lang/String;)Ljava/lang/Object;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;java/lang/SystemLjava/io/PrintStream;(I)Ljava/lang/StringBuilder;java/io/PrintStreamprintlnvalueOf(D)Ljava/lang/Double;<(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;'(Ljava/lang/String;Ljava/lang/String;)V hasMoreTokens()Z nextTokengetIntegerFeature(Ljava/lang/String;)I(D)Ljava/lang/StringBuilder; getComponents()[LMyHMMParallel/jahmm/Opdf;java/util/Arraysfill([II)Vgenerate%(I)[LMyHMMParallel/jahmm/Observation; character(C)Ljava/lang/StringBuffer;java/util/regex/Patterncompile-(Ljava/lang/String;)Ljava/util/regex/Pattern;matcher3(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;java/util/regex/Matcherfindgroup()I(Ljava/io/Writer;)V,(Ljava/lang/String;)Ljava/lang/StringBuffer;writecloseerr getMessagesplit'(Ljava/lang/String;)[Ljava/lang/String;getDoubleFeature(Ljava/lang/String;)DgetMix()[D#()LMyHMMParallel/distributions/Hmm;MyHMMParallel/distributions/Hmmstates$[LMyHMMParallel/distributions/State;!MyHMMParallel/distributions/StatenameindexOf([C[D)Vopdf(C)Ljava/lang/StringBuilder;;(Ljava/lang/String;[[Ljava/lang/String;Ljava/lang/String;)VprintStackTraceMyHMMParallel/jahmm/OpdfgetOpdf()LMyHMMParallel/jahmm/Opdf;(I)V outputFreezeZ addTransition-(IID)LMyHMMParallel/distributions/Transition; isEndStatemakeStochasticFixNames convertToHmm()LMyHMMParallel/jahmm/OpdfHmm;getHmmStateIndex changeName setInitial(Ljava/lang/String;D)VgetName(I)Ljava/lang/String; setBarrier'(Ljava/util/concurrent/CyclicBarrier;)Vjava/lang/Mathlog(D)D lnProbability%([LMyHMMParallel/jahmm/Observation;)D(MyHMMParallel/distributions/SimpleMatrix logSumExp([D)Dexprandom()D normalize([D)[D buildArray()Ljava/lang/Object;BlastObject/ConvertibleRBTreeServiceRoutines/FragmentgetTypeequalsIgnoreCase(Ljava/lang/String;)Z getSequence toUpperCase$MyHMMParallel/jahmm/ObservationDonor makeSignals'(Ljava/lang/String;)Ljava/util/TreeMap;'MyHMMParallel/jahmm/ObservationAcceptorjava/util/TreeMapkeySet()Ljava/util/Set; java/util/Setiterator()Ljava/util/Iterator;java/util/IteratorhasNextnextintValue substring(II)Ljava/lang/String;add(Ljava/lang/Object;)ZcharAt(I)Cexit startsWithputValue9(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V getSequences(C)V!NS TU VW XW YW ZW [W\]^_`abc`3de`:f_`gh_`ijklB**Ym./0n opqkl?L M>,'* Y +  ,2 ٱm679:89><n**r_?op9se-tuvwlg- Y  ` 6+Y:Y+1SWY,2::  !: Y-2::  !: Y2::  !: "9 + "9 $++ $9 +&9  (k9 g*g,o9./ Y 0 1 2 356 7 58 59 :   ; 7  59 :   ; 7 58 59 :   < S Y 0 1 2 356 =  59 :   < >;m"D!E)F1G;HDIZLiMlNtO~RSTUXYZ[^`abcdehjlmrGv$w,xnDxyiz{l|e }e a~e Jc cc4r_-op--u-u-u-_l N?/>: :@/6A/6B/6+CD: +C: E6 6   )  2F:   22G  22G666 H:IYJ:6)22KL6MWNO:PQ:R1S:T6  22OUO:PQ:R1S:T6  22Ö́" 6  6 ջVY,W: XY Y: 6 IYJ:6 J Y  22.Z  22.[W d Z[W Y P \ ]IYJ:6 > Y dZ d[W d Z[W Y P \ ]IYJ:6 > Y `Z `[W d Z[W Y P \ ] ^": ` Y a  b Y,c: d:   !:  ef:d:6Md$ Y  2 g : Y  2 :VY Y    h W:XYY:IYJ:i[W Y j  k [W Y l 2 k [W Y m k [W Y n k [W\[Wo[Wp[Wq[W\[Wr[Ws[Wt[Wu[W Y v wx5y [W Y z  { [W\[W|[W}[W~[Wu[W Y v wx5y [W Y z   [W[WP]^": ` Y a  b w_ad_mw~ !(/<BFQ[fqtw  '.5CRU[bfmqw 'JT\b~ (2;?JTu9X` h p x   +JR\a"df!#n-._$e_.$e5_z_[ t_w_I._ O_n_C_C_m] b  BRr_Ez{  Ae ;&u?"e]f op|e~_ wsejtu!c_(\_/U_<H BB F>_ ll *+N::-f-::/6C:C:6   2Fw 2F: 6     2|  2*  2YYYUYR>  2'  2YYZUYR _6 6 6 /6  H:d:6L2;2KL6X'Y Z Y  :T 2 S  /  hY Y  U Y l: : : 6  }  Y +    S  Y +    S  Y +    S* 2  2  Ym7*+ ,./0#1*283?4J5U6_7p89:;<7A BCDF!G%H0I8J;LHM]NsHyQRSUVXY[]^4bcdefg@hbipevpyqsnb_ H+(Q_!%e_g  _ _ _ _B_ _ Z*L_?7u u u op|e_~ xuldN6+$ Y - +2 \ N2 YYSY-SYSSYYSYdSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSY YSYdSYSSY YSYdSYSSY YSYSYSSY YSYSYSSY YSYSYSSYYSYSYSSYYSYSYSSYYSYdSYSSYYSYdSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYdSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYSYSSYYSYdSYSSYYSYSYSSYYSYSYSSY YSYdSYSSY!YSYSYSSY"YSYSYSSY#YSYdSYSSY$YSYdSYSSY%YSYSYSSY&YSYdSYSSY'YSYdSYSSY(YSYSYSSY)YSYdSYSSY*YSYdSYSSY+YSYSYSSY,YSYdSYSSY-YSYdSYSSY.YSYSYSSY/YSYdSYSSY0YSYSYSSY1YSYdSYSS::Y,::`ݱ_m6 yz {(z.~n\ (r_opuee*'l!=+WNd _m n*r_!op!l`Y+M,N-m n*op|e l FY`:26dq2:YYAUYCUYGUYTUYXUYRYRYRYRYR(W6d`(gWd2:m> -:@nH:a~r_(r_op_c  l* Y +  ** Y +  =>*dE*1*"* Y + g * Y +  *m& 57Gd  n*9P_e7r_l*M,Y*N-Y9966 6  + ,+ 2 c9  -+ 2 c9 Y RY R:  g 9   Y 5      `o5  ^mJ(49>!D"N#^$n%}&'(*,".n ^c nxc }i\cGr_ op(9c>cA_D_ l һFYhLYkcRYkcRYkcRYkcRM+2,1+2,1+2,1+2,1>6a+2+2YYAUYCUYGUYTUYXUYRYRYRYRYR+2+2YYAUYCUYGUYTUYXUYRYRYRYRYR+2+2YYAUYCUYGUYTUYXUYRYRYRYRYR+2+2YYAUYCUYGUYTUYXUYRYRYRYRYR6dh6h`nYkcRYkcRYkcRYkcRM>h`6h`+,1W߄y++d2++d2++d2++d2++m 4 7B=Q>`?o@~BCDEFG5HBIJKCOPQ:R<SPTbShPnOtYZ[\^`nRdr_D$_v_r__ BR_lwI6+(*+2 cI(mgh ihkn*r_clV ƻFY`M,26,dW,2N--YYAUYCUYGUYTUYXUYRYRYRYRYR6,d,`W,,d2,,M,m:t w{*|5}:~x{~n>5Icr_$r_op_ kl@**m n oplI*+,m n opel +N6--2p-2 :!:":#:$:  %< &'(6 * d )*:  * +W: yh_mF %18?FOYh{n {  h'_ 1ae8Z?SFLOC r_ope *8Z?SFLOC l ,/=-/>+T`++Td)L+ :./6//66 +T6):01/): Y   :**:/./h`1/`6  *23/ *+WmR'(.6>K[funf ope_ _.e6 _> _u]e?) _  l+TKM>,+4A ,5So+4C ,6S\+4G ,7SI+4T ,8S6+4X ,9S#` Y : +4x,mB#-6@ I S \ f on* r_ope l*`;<=Y*2>W<**2?@*2AM,N-',B*`2CX-D,E*`2CB-F,G*`2C,-,H*`2C-I,J*`2C7:` Y K , L `M<9NYOL+PQ?_mz&2 :!?#F$U%\&k'r()*+,.4/01238:<=n>2:e? r_upkle=KYAR5KYCR6KYGR7KYTR8KYXR9m% &'$(0)PK ApC 2 && mixing.length < 6) { graphicsAspect = 0.4; } else if (mixing.length >= 6) { graphicsAspect = 0.38; } double vAspect = graphicsAspect * (0.1 / 0.38); // Locked relationship double hAspect = (1.0 - graphicsAspect - 0.05) / 2.0; if (ParametersXML.getIntegerFeature("convolution_size") > 0) { System.out.println("\t\t" + snFormatter.toString() + " & \\parbox[c]{" + PARBOX_ASPECT + "\\linewidth}{" + "\n\t\t\t\\includegraphics[width=" + hAspect + "\\linewidth, height=" + vAspect + "\\linewidth]{" + DIRECTORY_FOR_GRAPHICS + "/" + fileBefore + "}" + "\n\t\t\t\\includegraphics[width=" + graphicsAspect + "\\linewidth]{" + DIRECTORY_FOR_GRAPHICS + "/" + file + "}" + "\n\t\t\t\\includegraphics[width=" + hAspect + "\\linewidth, height=" + vAspect + "\\linewidth]{" + DIRECTORY_FOR_GRAPHICS + "/" + fileAfter + "}} \\\\"); } else { System.out.println("\t\t" + snFormatter.toString() + " & \\parbox[c]{" + PARBOX_ASPECT + "\\linewidth}{" + "\\includegraphics[width=" + graphicsAspect + "\\linewidth]{" + DIRECTORY_FOR_GRAPHICS + "/" + file + "}} \\\\"); } } System.out.println("\t\\end{tabular}"); System.out.println("}"); } static final int BEFORE = 0; static final int AFTER = 1; void makeConvolutionHistograms(OpdfMixture mix, String file) { int numberToGenerate = ParametersXML.getIntegerFeature("number_of_convolution_samples_to_generate"); String directoryMixtures = ParametersXML.getStringFeature("files_to_generate_directory"); String[] files = (String[]) ParametersXML.getFeature("files_to_generate"); int size = ParametersXML.getIntegerFeature("convolution_sample_length"); int max = ParametersXML.getIntegerFeature("convolution_histogram_max"); int min = ParametersXML.getIntegerFeature("convolution_histogram_min"); int[][][] sampledSizes = new int[mix.getComponents().length][2][numberToGenerate]; Opdf[] components = mix.getComponents(); int minimumFilledArraySize = Integer.MAX_VALUE; for (int component = 0; component < components.length; component++) { OpdfHmm hmm = (OpdfHmm) components[component]; Arrays.fill(sampledSizes[component][BEFORE], -1); Arrays.fill(sampledSizes[component][AFTER], -1); int counterBefore = 0; int counterAfter = 0; for (int sample = 0; sample < numberToGenerate; sample++) { Observation[] obs = hmm.generate(size); StringBuffer sb = new StringBuffer(); for (int j = 0; j < obs.length; j++) { if (obs[j] == null) { continue; } char emission = ((ObservationCharacter) obs[j]).character; sb.append(emission); } // Before convolution Pattern p = Pattern.compile("Y+"); Matcher m = p.matcher(sb.toString()); while (m.find()) { // Get the matching string String match = m.group(); int length = match.length(); if (length > min && length < max) { sampledSizes[component][BEFORE][counterBefore++] = length; } } // After convolution p = Pattern.compile("Z+"); m = p.matcher(sb.toString()); while (m.find()) { // Get the matching string String match = m.group(); int length = match.length(); if (length > min && length < max) { sampledSizes[component][AFTER][counterAfter++] = length; } } } if (minimumFilledArraySize > counterBefore) { minimumFilledArraySize = counterBefore; } if (minimumFilledArraySize > counterAfter) { minimumFilledArraySize = counterAfter; } } // Write generated sequences to file try { // Create file FileWriter fstream = new FileWriter(file); BufferedWriter out = new BufferedWriter(fstream); for (int sample = 0; sample < minimumFilledArraySize; sample++) { StringBuffer sb = new StringBuffer(); for (int component = 0; component < components.length; component++) { sb.append(sampledSizes[component][BEFORE][sample] + "\t" + sampledSizes[component][AFTER][sample]); if (component < components.length - 1) { sb.append("\t"); } } out.write(sb.toString() + "\n"); } // This is made for histogram normalization StringBuffer sb = new StringBuffer(); for (int component = 0; component < components.length; component++) { sb.append((min - 1) + "\t" + (min - 1)); if (component < components.length - 1) { sb.append("\t"); } } out.write(sb.toString() + "\n"); sb = new StringBuffer(); for (int component = 0; component < components.length; component++) { sb.append((max + 1) + "\t" + (max + 1)); if (component < components.length - 1) { sb.append("\t"); } } out.write(sb.toString() + "\n"); out.close(); } catch (Exception e) {//Catch exception if any System.err.println("Error: " + e.getMessage()); } // Here we write to disk Matlab program to process the file try { // Create file StringTokenizer st = new StringTokenizer(file, "/\\"); String fileName = ""; while (st.hasMoreTokens()) { fileName = st.nextToken(); } // Meke it Matlab compatible String[] splitName = fileName.split("\\."); String betterName = ""; for (int i = 0; i < splitName.length; i++) { if (i < splitName.length - 1) { betterName += splitName[i] + "_"; } else { betterName += splitName[i]; } } FileWriter fstream = new FileWriter(ParametersXML.getStringFeature("files_to_generate_directory") + "/" + betterName + ".m"); BufferedWriter out = new BufferedWriter(fstream); StringBuffer sb = new StringBuffer(); sb.append("clear all;"); sb.append("load " + fileName + ";\n"); sb.append("array = " + splitName[0] + ";\n"); sb.append("min = " + min + ";\n"); sb.append("max = " + max + ";\n"); sb.append("\n"); sb.append("for j = 1:(size(array,2) / 2)\n"); sb.append(" before = array(:,1 + 2 * (j - 1));\n"); sb.append(" after = array(:,2 + 2 * (j - 1));\n"); sb.append("\n"); sb.append(" %%%%%%%%%%%% Make Before histogram %%%%%%%%%%%%\n"); sb.append(" [Y X] = hist(before,30);\n"); sb.append(" bar(X,Y/sum(before),'r');\n"); sb.append(" xlim([min, max]);\n"); sb.append(" ylim([0 " + ParametersXML.getDoubleFeature("upper_histogram_limit") + "]);\n"); sb.append(" eval(['print -depsc " + fileName + ".b.' int2str(j - 1) '.eps;']);\n"); sb.append("\n"); sb.append(" %%%%%%%%%%%% Make After histogram %%%%%%%%%%%%\n"); sb.append(" [Y X] = hist(after,30);\n"); sb.append(" bar(X,Y(end:-1:1)/sum(after),'r');\n"); sb.append(" xlim([min, max]);\n"); sb.append(" ylim([0 " + ParametersXML.getDoubleFeature("upper_histogram_limit") + "]);\n"); sb.append(" eval(['print -depsc " + fileName + ".a.' int2str(j - 1) '.eps;']);\n"); sb.append("end\n"); out.write(sb.toString()); out.close(); } catch (Exception e) {//Catch exception if any System.err.println("Error: " + e.getMessage()); } } /** * This method is used to generate HMM motifs */ void generateHMMMotifs(String file, int slideCounter) { // Now we download sensor... Opdf sensor = getHmm(file); String[][] generatedMotifs = null; double[] mixing = null; if (sensor instanceof OpdfMixture) { OpdfMixture mix = (OpdfMixture) sensor; mixing = mix.getMix(); int numberToGenerate = ParametersXML.getIntegerFeature("number_of_motifs_to_generate"); generatedMotifs = new String[mix.getComponents().length][numberToGenerate]; Opdf[] components = mix.getComponents(); for (int component = 0; component < components.length; component++) { if (components[component] instanceof OpdfHmm) { OpdfHmm hmm = (OpdfHmm) components[component]; for (int state = 0; state < hmm.getHmm().states.length; state++) { if (hmm.getHmm().states[state].name.indexOf("motif") == -1) { if (hmm.getHmm().states[state].name.indexOf("before_convolution") != -1) { hmm.getHmm().states[state].opdf = new OpdfCharacter(new char[]{'Y'}, new double[]{1.0}); } else if (hmm.getHmm().states[state].name.indexOf("after_convolution") != -1) { hmm.getHmm().states[state].opdf = new OpdfCharacter(new char[]{'Z'}, new double[]{1.0}); } } } int size = MAX_MOTIF_SIZE; int motifsGenerated = 0; int counter = 0; int motifSize = ParametersXML.getIntegerFeature("motif_size"); while (true) { Observation[] obs = hmm.generate(size); String motif = ""; for (int j = 0; j < obs.length; j++) { if (obs[j] == null) { continue; } char emission = ((ObservationCharacter) obs[j]).character; if (emission != 'X' && emission != 'Y' && emission != 'Z') { motif += emission; } } if (motif.length() == motifSize) { generatedMotifs[component][motifsGenerated] = motif; motifsGenerated++; } if (motifsGenerated >= numberToGenerate) { break; } if (counter++ > numberToGenerate * 10) { throw new IllegalArgumentException("Please check expected motif size to generate, which is now " + motifSize); } } } else { throw new IllegalArgumentException("This should HMM!"); } } String[] epsNames = new String[mixing.length]; String[] histogramsBefore = new String[mixing.length]; String[] histogramsAfter = new String[mixing.length]; for (int component = 0; component < generatedMotifs.length; component++) { epsNames[component] = file + "." + component + ".eps"; histogramsBefore[component] = file + ".dat.b." + component + ".eps"; histogramsAfter[component] = file + ".dat.a." + component + ".eps"; writeLogoFile(generatedMotifs[component], epsNames[component]); } //makeSlide(mixing, epsNames, histogramsBefore, histogramsAfter, slideCounter); // Generate convolution histograms //if(ParametersXML.getIntegerFeature("convolution_size") > 0) makeConvolutionHistograms(mix, file + ".dat"); } else { throw new IllegalArgumentException("This should be the Mixture of HMM Model!"); } } /** * Here we are given bunch of motif logos to write to a file. */ void writeLogoFile(String[] motifs, String fileName) { String sequence = ""; for (int i = 0; i < motifs.length; i++) { sequence += motifs[i] + "\n"; } String[][] form = { {"sequence", sequence, "parameter"}, {"aligned_file", "", "file"}, {"format", "EPS", "parameter"}, {"logowidth", "18", "parameter"}, {"logoheight", "5", "parameter"}, {"logounits", "cm", "parameter"}, {"command", "Create Logo", "parameter"}, {"kind", "AUTO", "parameter"}, {"firstnum", "1", "parameter"}, {"logostart", "", "parameter"}, {"logoend", "", "parameter"}, {"smallsamplecorrection", "on", "parameter"}, {"symbolsperline", "32", "parameter"}, {"res", "96", "parameter"}, {"res_units", "ppi", "parameter"}, {"antialias", "on", "parameter"}, {"title", "", "parameter"}, {"barbits", "", "parameter"}, {"yaxis", "on", "parameter"}, {"yaxis_label", "bits", "parameter"}, {"xaxis", "on", "parameter"}, {"xaxis_label", "", "parameter"}, {"showends", "on", "parameter"}, {"shrink", "0.5", "parameter"}, {"fineprint", "on", "parameter"}, {"ticbits", "1", "parameter"}, {"colorscheme", "DEFAULT", "parameter"}, {"symbol1", "KRH", "parameter"}, {"color1", "green", "parameter"}, {"rgb1", "", "parameter"}, {"symbol2", "DE", "parameter"}, {"color2", "blue", "parameter"}, {"rgb2", "", "parameter"}, {"symbol3", "AVLIPWFM", "parameter"}, {"color3", "red", "parameter"}, {"rgb3", "", "parameter"}, {"symbol4", "", "parameter"}, {"color4", "black", "parameter"}, {"rgb4", "", "parameter"}, {"symbol5", "", "parameter"}, {"color5", "purple", "parameter"}, {"rgb5", "", "parameter"}, {"symbol6", "", "parameter"}, {"color6", "orange", "parameter"}, {"rgb6", "", "parameter"}, {"symbol7", "", "parameter"}, {"color7", "black", "parameter"}, {"rgb7", "", "parameter"}, {"color0", "black", "parameter"}, {"rgb0", "", "parameter"} }; // Query online - if tool crashes then recycle ConvertibleRBTree tree = null; while (true) { try { QuerySiteMultipartEncodedRecordResult qs = new QuerySiteMultipartEncodedRecordResult(ParametersXML.getStringFeature("logo_server"), form, fileName); } catch (Exception e) { e.printStackTrace(); System.err.println("Since web query has crashed, we repeat it..."); continue; } break; } } /** * Find out size of a sensor */ int getSensorSize(Opdf sensor) { for (int i = 1; i < MAX_MOTIF_SIZE; i++) { try { sensor.generate(i); } catch (Exception e) { return i - 1; } } return MAX_MOTIF_SIZE; } /** * Gets HMM from file */ public Opdf getHmm(String file) { DOM_parser dom = new DOM_parser(file); Opdf mixtureModel = dom.getOpdf(); return mixtureModel; } /** * Make convolution chain */ OpdfHmm makeConvolutionChain(int size, double probSameState) { /********************************************************************/ // So called convolution network // Convolution network OpdfHmm chain = new OpdfHmm(size + 2); // Allocate initial probabilities chain.getHmm().states[0].initial = 1.0; // This is convolution of SIZE states State s; for (int i = 1; i < chain.getHmm().states.length - 1; i++) { s = chain.getHmm().states[i]; // s.transitionsFreeze = true; s.outputFreeze = true; s.opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{0.25, 0.25, 0.25, 0.25, 0.0}); chain.getHmm().addTransition(i, i, probSameState); } // Intermediate transition matrix for (int i = 0; i < chain.getHmm().states.length - 1; i++) { chain.getHmm().addTransition(i, i + 1, 1.0 - probSameState); } // End state is the last one chain.getHmm().states[chain.getHmm().states.length - 1].isEndState = true; // Finalize HMM cooking chain.makeStochasticFixNames(); chain = chain.convertToHmm(); return chain; } /** * This method renames states according to certain name */ public static void modifyStateNames(OpdfHmm hmm, String namePrefix) { hmm.changeName(namePrefix + "_initial", hmm.getHmmStateIndex("initial")); hmm.setInitial(namePrefix + "_initial", 1.0); int counter = 0; for (int index = 0; index < hmm.getHmm().states.length - 1; index++) { if (hmm.getName(index).indexOf("initial") == -1 && hmm.getName(index).indexOf("final") == -1) { hmm.changeName(namePrefix + "_" + counter++, index); } } hmm.changeName(namePrefix + "_final", hmm.getHmmStateIndex("final")); } /** * This is production version for finding motifs in * pre-acceptors and post-donor regions */ private void productionVersion(ObservationCharacter[][] obs) { // Download file from pre-existing record OpdfMixture positive = (OpdfMixture) getHmm(ParametersXML.getStringFeature("hmm_file_in_positive")); positive.setBarrier(new CyclicBarrier(1)); OpdfMixture negative = (OpdfMixture) getHmm(ParametersXML.getStringFeature("hmm_file_in_negative")); negative.setBarrier(new CyclicBarrier(1)); // double priorForTrue = (double) 8415 / (double) (8415 + 179438); // double priorForFalse = (double) 179438 / (double) (8415 + 179438); double priorForTrue = 0.5; double priorForFalse = 0.5; int counterTrue = 0, counterFalse = 0; for (int i = 0; i < obs.length; i++) { double real = Math.log(priorForTrue) + positive.lnProbability(obs[i]); double fake = Math.log(priorForFalse) + negative.lnProbability(obs[i]); double[] vector = {real, fake}; double probabilityIsTrue = Math.exp(real - SimpleMatrix.logSumExp(vector)); if (probabilityIsTrue > 0.5) { counterTrue++; } else { counterFalse++; } System.out.println(probabilityIsTrue + " True is: " + counterTrue + " " + " False is: " + counterFalse + " With accuracy " + (double) counterTrue / (double) (counterTrue + counterFalse) + "%"); } } /** * Initial guess for the Baum-Welch algorithm */ static OpdfHmm buildInitHmm(int size) { OpdfHmm opdfHmm = new OpdfHmm(4 * size); // Randomly initialize initial probabilities double[] chances = SimpleMatrix.normalize(new double[]{ Math.random() * 50 + 1, Math.random() * 50 + 1, Math.random() * 50 + 1, Math.random() * 50 + 1 }); opdfHmm.getHmm().states[0].initial = chances[0]; opdfHmm.getHmm().states[1].initial = chances[1]; opdfHmm.getHmm().states[2].initial = chances[2]; opdfHmm.getHmm().states[3].initial = chances[3]; int counter = 0; for (int i = 0; i < size; i++) { opdfHmm.getHmm().states[counter].outputFreeze = true; opdfHmm.getHmm().states[counter++].opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{1.0, 0.0, 0.0, 0.0, 0.0}); opdfHmm.getHmm().states[counter].outputFreeze = true; opdfHmm.getHmm().states[counter++].opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{0.0, 1.0, 0.0, 0.0, 0.0}); opdfHmm.getHmm().states[counter].outputFreeze = true; opdfHmm.getHmm().states[counter++].opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{0.0, 0.0, 1.0, 0.0, 0.0}); opdfHmm.getHmm().states[counter].outputFreeze = true; opdfHmm.getHmm().states[counter++].opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{0.0, 0.0, 0.0, 1.0, 0.0}); } // Randomly initialize transition matrix for (int i = 0; i < size - 1; i++) { for (int from = i * 4; from < i * 4 + 4; from++) { chances = SimpleMatrix.normalize(new double[]{Math.random() * 50 + 1, Math.random() * 50 + 1, Math.random() * 50 + 1, Math.random() * 50 + 1}); counter = 0; for (int to = i * 4 + 4; to < i * 4 + 8; to++) { opdfHmm.getHmm().addTransition(from, to, chances[counter++]); } } } opdfHmm.getHmm().states[opdfHmm.getHmm().states.length - 4].isEndState = true; opdfHmm.getHmm().states[opdfHmm.getHmm().states.length - 3].isEndState = true; opdfHmm.getHmm().states[opdfHmm.getHmm().states.length - 2].isEndState = true; opdfHmm.getHmm().states[opdfHmm.getHmm().states.length - 1].isEndState = true; opdfHmm.makeStochasticFixNames(); return opdfHmm; } /** * This function calculates likelihood of mixture given learning set */ static double calculateLikelihood(OpdfMixture mixture, Observation[][] dataSet) { double logLikelihood = 0.0; for (int i = 0; i < dataSet.length; i++) { logLikelihood += mixture.lnProbability(dataSet[i]); } return logLikelihood; } /** * Make convolution chain */ OpdfHmm makeMarker(int size) { // So called before convolution network // Convolution network OpdfHmm marker = new OpdfHmm(size + 2); // Allocate initial probabilities marker.getHmm().states[0].initial = 1.0; // This is convolution of SIZE states State s; for (int i = 1; i < marker.getHmm().states.length - 1; i++) { s = marker.getHmm().states[i]; s.outputFreeze = true; s.opdf = new OpdfCharacter(new char[]{'A', 'C', 'G', 'T', 'X'}, new double[]{0.0, 0.0, 0.0, 0.0, 1.0}); } // Intermediate transition matrix for (int i = 0; i < marker.getHmm().states.length - 1; i++) { marker.getHmm().addTransition(i, i + 1, 1.0); } // End state is the last one marker.getHmm().states[marker.getHmm().states.length - 1].isEndState = true; // Finalize HMM cooking marker.makeStochasticFixNames(); marker = marker.convertToHmm(); return marker; } /** * Finish processing of data points and send it to processing */ public void finish() { productionVersion((ObservationCharacter[][]) observations.buildArray()); } public void process(ConvertibleRBTree signals, String sequence) { processForExonBodiesTestSet(signals, sequence); } /** * This method produces test set of exons and pseudo exons * @param signals * @param sequence */ public void processForExonBodiesTestSet(ConvertibleRBTree signals, String sequence) { Fragment[] frgs = (Fragment[]) signals.buildArray(); for (int i = 0; i < frgs.length; i++) { if (frgs[i].getType().equalsIgnoreCase("intron")) { String intron = frgs[i].getSequence().toUpperCase(); TreeMap donorSignals = ObservationDonor.makeSignals(intron); TreeMap acceptorSignals = ObservationAcceptor.makeSignals(intron); // Detect and output the the pseudo-exons Set setAcceptor = acceptorSignals.keySet(); Iterator itAcceptor = setAcceptor.iterator(); while (itAcceptor.hasNext()) { int acceptorCoordinate = itAcceptor.next().intValue(); try { Observation [] obs = convertToObservations(intron.substring(acceptorCoordinate - 150, acceptorCoordinate)); if(obs != null) observations.add(obs); } catch (Exception e) { } } } } // ConvertibleLinkedList cll = new ConvertibleLinkedList(); // for(int i = 0; i < frgs.length; i++) { // if(frgs[i].getType().equalsIgnoreCase("exon")) { // cll.add(frgs[i]); // } // } // // Fragment_sp [] aux = (Fragment_sp []) cll.buildArray(); // for(int i = 1; i < aux.length - 1; i++) { // if(aux[i].getSequence().length() < 350) { // System.out.println(aux[i].getSequence().toUpperCase()); // } // } // if(true) return; // Here we get true exonic assemblies // ConvertibleLinkedList cll = new ConvertibleLinkedList(); // for(int i = 0; i < frgs.length - 3; i++) { // if(frgs[i].getType().equalsIgnoreCase("intron") && // frgs[i + 1].getType().equalsIgnoreCase("exon") && // frgs[i + 2].getType().equalsIgnoreCase("intron")) { // try { // String intronBefore = frgs[i].getSequence().toUpperCase(); // String exon = frgs[i + 1].getSequence().toUpperCase(); // String intronAfter = frgs[i + 2].getSequence().toUpperCase(); // if(exon.length() < 350 && exon.length() > 20) { // cll.add(intronBefore.substring(intronBefore.length() - 150) + exon + intronAfter.substring(0,150)); // } // } catch(Exception e) {} // } // } // // String [] aux = (String []) cll.buildArray(); // for(int i = 0; aux != null && i < aux.length; i++) { // try { // TreeMap acceptorSignals = ObservationAcceptor.makeSignals(aux[i].substring(150 - 20, 150 + 3)); // TreeMap donorSignals = ObservationDonor.makeSignals(aux[i].substring(aux[i].length() - 150 - 3, aux[i].length() - 150 + 6)); // // double probA = acceptorSignals.get(new Integer(20)).probability(); // double probD = donorSignals.get(new Integer(5)).probability(); // System.out.println(probA + probD); // // } catch(Exception e) {} // } // if(true) return; // Here we get true exonic assemblies // ConvertibleLinkedList cll = new ConvertibleLinkedList(); // for(int i = 0; i < frgs.length - 3; i++) { // if(frgs[i].getType().equalsIgnoreCase("intron") && // frgs[i + 1].getType().equalsIgnoreCase("exon") && // frgs[i + 2].getType().equalsIgnoreCase("intron")) { // try { // String intronBefore = frgs[i].getSequence().toUpperCase(); // String exon = frgs[i + 1].getSequence().toUpperCase(); // String intronAfter = frgs[i + 2].getSequence().toUpperCase(); // if(exon.length() < 350 && exon.length() > 20) { // cll.add(intronBefore.substring(intronBefore.length() - 150) + exon + intronAfter.substring(0,150)); // } // } catch(Exception e) {} // } // } // // String [] aux = (String []) cll.buildArray(); // for(int i = 0; aux != null && i < aux.length; i++) { // try { // String auxS = "X" + aux[i].substring(0,150 - 20) // + "XX" + aux[i].substring(150 - 20, 150 + 3) // + "XX" + aux[i].substring(150 + 3, aux[i].length() - 150 - 3) // + "XX" + aux[i].substring(aux[i].length() - 150 - 3, aux[i].length() - 150 + 6) // + "XX" + aux[i].substring(aux[i].length() - 150 + 6) + "X"; // System.out.println(auxS); // } catch(Exception e) {} // } // if(true) return; // Here we get true exonic assemblies // ConvertibleLinkedList cll = new ConvertibleLinkedList(); // for(int i = 0; i < frgs.length - 3; i++) { // if(frgs[i].getType().equalsIgnoreCase("intron") && // frgs[i + 1].getType().equalsIgnoreCase("exon") && // frgs[i + 2].getType().equalsIgnoreCase("intron")) { // try { // String intronBefore = frgs[i].getSequence().toUpperCase(); // String exon = frgs[i + 1].getSequence().toUpperCase(); // String intronAfter = frgs[i + 2].getSequence().toUpperCase(); // if(exon.length() < 350 && exon.length() > 20) { // cll.add(intronBefore.substring(intronBefore.length() - 150) + exon + intronAfter.substring(0,150)); // } // } catch(Exception e) {} // } // } // // String [] aux = (String []) cll.buildArray(); // for(int i = 0; aux != null && i < aux.length; i++) { // try { // String auxS = "X" + aux[i].substring(0,150 - 20) // + "XX" + aux[i].substring(150 - 20, 150 + 3) // + "XX" + aux[i].substring(150 + 3, aux[i].length() - 150 - 3) // + "XX" + aux[i].substring(aux[i].length() - 150 - 3, aux[i].length() - 150 + 6) // + "XX" + aux[i].substring(aux[i].length() - 150 + 6) + "X"; // System.out.println(auxS); // } catch(Exception e) {} // } // if(true) return; // Here we collect pseudo-exons // for (int i = 0; i < frgs.length; i++) { // if (frgs[i].getType().equalsIgnoreCase("intron")) { // String intron = frgs[i].getSequence().toUpperCase(); // TreeMap donorSignals = ObservationDonor.makeSignals(intron); // TreeMap acceptorSignals = ObservationAcceptor.makeSignals(intron); // // Detect and output the the pseudo-exons // Set setDonor = donorSignals.keySet(); // Iterator itDonor = setDonor.iterator(); // while(itDonor.hasNext()) { // int donorCoordinate = itDonor.next().intValue() - 2; // Set setAcceptor = acceptorSignals.keySet(); // Iterator itAcceptor = setAcceptor.iterator(); // while(itAcceptor.hasNext()) { // int acceptorCoordinate = itAcceptor.next().intValue(); // if(acceptorCoordinate > donorCoordinate) break; // // if(acceptorCoordinate < donorCoordinate && donorCoordinate - acceptorCoordinate < 350 && donorCoordinate - acceptorCoordinate > 20) { // System.out.println(intron.substring(acceptorCoordinate, donorCoordinate)); // } // } // } // } // } // Here we collect pseudo post-exonic entries // for (int i = 0; i < frgs.length; i++) { // if (frgs[i].getType().equalsIgnoreCase("intron")) { // String intron = frgs[i].getSequence().toUpperCase(); // TreeMap donorSignals = ObservationDonor.makeSignals(intron); // TreeMap acceptorSignals = ObservationAcceptor.makeSignals(intron); // // Detect and output the the pseudo-exons // Set setDonor = donorSignals.keySet(); // Iterator itDonor = setDonor.iterator(); // while (itDonor.hasNext()) { // int donorCoordinate = itDonor.next().intValue() - 2; // try { // System.out.println(intron.substring(donorCoordinate, donorCoordinate + 150)); // } catch(Exception e) { // continue; // } // } // } // } // // Here we collect pseudo-donors // for (int i = 0; i < frgs.length; i++) { // if (frgs[i].getType().equalsIgnoreCase("intron")) { // String intron = frgs[i].getSequence().toUpperCase(); // TreeMap donorSignals = ObservationDonor.makeSignals(intron); // TreeMap acceptorSignals = ObservationAcceptor.makeSignals(intron); // // Detect and output the the pseudo-exons // Set setDonor = donorSignals.keySet(); // Iterator itDonor = setDonor.iterator(); // while(itDonor.hasNext()) { // ObservationDonor df = donorSignals.get(itDonor.next()); // System.out.println(df.getMotif()); // } // } // } // // if(true) return; // // Here we collect pseudo-acceptors // for (int i = 0; i < frgs.length; i++) { // if (frgs[i].getType().equalsIgnoreCase("intron")) { // String intron = frgs[i].getSequence().toUpperCase(); // TreeMap acceptorSignals = ObservationAcceptor.makeSignals(intron); // // Detect and output the the pseudo-exons // Set setAcceptor = acceptorSignals.keySet(); // Iterator itAcceptor = setAcceptor.iterator(); // while(itAcceptor.hasNext()) { // ObservationAcceptor af = acceptorSignals.get(itAcceptor.next()); // System.out.println(af.getMotif()); // } // } // } // // if(true) return; // // Here we collect pseudo-exonic assemblies // for (int i = 0; i < frgs.length; i++) { // if (frgs[i].getType().equalsIgnoreCase("intron")) { // String intron = frgs[i].getSequence().toUpperCase(); // TreeMap donorSignals = ObservationDonor.makeSignals(intron); // TreeMap acceptorSignals = ObservationAcceptor.makeSignals(intron); // // Detect and output the the pseudo-exons // Set setDonor = donorSignals.keySet(); // Iterator itDonor = setDonor.iterator(); // while(itDonor.hasNext()) { // int donorCoordinate = itDonor.next().intValue() - 2; // Set setAcceptor = acceptorSignals.keySet(); // Iterator itAcceptor = setAcceptor.iterator(); // while(itAcceptor.hasNext()) { // int acceptorCoordinate = itAcceptor.next().intValue(); // if(acceptorCoordinate > donorCoordinate) break; // // if(acceptorCoordinate < donorCoordinate && // donorCoordinate - acceptorCoordinate < 350 && // donorCoordinate - acceptorCoordinate > 20 && // (donorSignals.get(new Integer(donorCoordinate + 2)).probability() + // acceptorSignals.get(new Integer(acceptorCoordinate)).probability() > 0.2)) { // try { // String pseudoExon = intron.substring(acceptorCoordinate - 150, donorCoordinate + 150); // String assy = "X" + pseudoExon.substring(0,150 - 20) // + "XX" + pseudoExon.substring(150 - 20, 150 + 3) // + "XX" + pseudoExon.substring(150 + 3, pseudoExon.length() - 150 - 3) // + "XX" + pseudoExon.substring(pseudoExon.length() - 150 - 3, pseudoExon.length() - 150 + 6) // + "XX" + pseudoExon.substring(pseudoExon.length() - 150 + 6) + "X"; // System.out.println(assy); // } catch(Exception e) {} // } // } // } // } // } // // if(true) return; // Here we assess the number of pseudo-exons vs true exons // String wholeSequence = ""; // int exonsCount = 0; // int pseudoExonsCount = 0; // // for (int i = 1; i < frgs.length - 1; i++) { // if (frgs[i].getType().equalsIgnoreCase("exon")) { // exonsCount++; // } // } // // for (int i = 0; i < frgs.length; i++) { // wholeSequence += frgs[i].getSequence().toUpperCase(); // } // // TreeMap donorSignals = ObservationDonor.makeSignals(wholeSequence); // TreeMap acceptorSignals = ObservationAcceptor.makeSignals(wholeSequence); // // Detect and output the the pseudo-exons // Set setDonor = donorSignals.keySet(); // Iterator itDonor = setDonor.iterator(); // while (itDonor.hasNext()) { // int donorCoordinate = itDonor.next().intValue() - 2; // Set setAcceptor = acceptorSignals.keySet(); // Iterator itAcceptor = setAcceptor.iterator(); // while (itAcceptor.hasNext()) { // int acceptorCoordinate = itAcceptor.next().intValue(); // if (acceptorCoordinate > donorCoordinate) { // break; // } // // // Here sum of donor and acceptor probabilities // // should be more than 0.05 for all the exons // // and more than 0.2 for 1% of exons to be lost in the // // prediction. // if (acceptorCoordinate < donorCoordinate && // donorCoordinate - acceptorCoordinate < 350 && // donorCoordinate - acceptorCoordinate > 20 && // (donorSignals.get(new Integer(donorCoordinate + 2)).probability() + // acceptorSignals.get(new Integer(acceptorCoordinate)).probability() > 0.2)) { // pseudoExonsCount++; // } // } // } // double frac = (double) exonsCount / (double) pseudoExonsCount; // if(pseudoExonsCount > exonsCount) System.out.println("The number of true exons is " + exonsCount + " vs. pseudo exons " + (pseudoExonsCount - exonsCount) + " with ratio " + frac); // // if(true) return; } /** * Process a data point */ public void process(String sequence) { int trimStart = ParametersXML.getIntegerFeature("trim_start"); int trimEnd = ParametersXML.getIntegerFeature("trim_end"); if (sequence.length() > trimStart + trimEnd) { sequence = sequence.substring(trimStart, sequence.length() - trimEnd); } else { return; } String motif = sequence.toUpperCase(); // String temp = motif.substring(motif.length()/2) + motif.substring(0,motif.length()/2); // motif = temp; int startIndex = ParametersXML.getIntegerFeature("motif_index_start"); int endIndex = ParametersXML.getIntegerFeature("motif_index_end"); startIndex = (startIndex < 0) ? 0 : startIndex; endIndex = (endIndex < 0) ? sequence.length() : endIndex; motif = motif.substring(startIndex, endIndex); // Sticky marker String marker = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX".substring(0, ParametersXML.getIntegerFeature("marker_size")); motif += marker; Observation[] obs = convertToObservations(motif); int hmmSize = ParametersXML.getIntegerFeature("motif_size") + 2 * ParametersXML.getIntegerFeature("convolution_size") + ParametersXML.getIntegerFeature("marker_size"); if (obs.length < hmmSize) { return; } if (obs != null && observations.size() < ParametersXML.getIntegerFeature("max_testing_set_size")) { observations.add(obs); } } ObservationCharacter[] convertToObservations(String motif) { ObservationCharacter[] obs = new ObservationCharacter[motif.length()]; for (int i = 0; i < obs.length; i++) { if (motif.charAt(i) == 'A') { obs[i] = observationA; } else if (motif.charAt(i) == 'C') { obs[i] = observationC; } else if (motif.charAt(i) == 'G') { obs[i] = observationG; } else if (motif.charAt(i) == 'T') { obs[i] = observationT; } else if (motif.charAt(i) == 'X') { obs[i] = observationX; } else { System.err.println("This character in the learning set is not a nucleotide: " + motif.charAt(i)); return null; } } return obs; } static public void main(String[] args) throws java.io.IOException { if (args.length < 1) { System.err.println("\tUsage: java BaumWelchLearner.MHMMotif [-parameter value]\n"); System.exit(1); } new ParametersXML(args[0]); for (int i = 0; i < args.length; i++) { if (args[i].startsWith("-")) { String parameter = args[i].substring(1); Object obj = ParametersXML.getFeature(parameter); try { if (obj instanceof Integer) { ParametersXML.putValue(parameter, "int", args[i + 1]); } else if (obj instanceof Double) { ParametersXML.putValue(parameter, "double", args[i + 1]); } else if (obj instanceof Boolean) { ParametersXML.putValue(parameter, "boolean", args[i + 1]); } else if (obj instanceof String) { ParametersXML.putValue(parameter, "String", args[i + 1]); } else if (obj instanceof Character) { ParametersXML.putValue(parameter, "char", args[i + 1]); } i++; } catch (Exception e) { e.printStackTrace(); System.err.println("Parameter " + parameter + " has illegal value."); System.err.println("Please consult file of parameters for proper type or value"); System.exit(1); } } } MHMMotifModelPredictionBetter hrm = new MHMMotifModelPredictionBetter(); hrm.getSequences(); System.out.println("I am done!!!"); } } PK CpC false false false ./Results/CassetteExons8x20x2000/casetteExons.100.xml ./Results/CassetteExons8x20x2000/casetteExons ./LearningSets/EBIcasetteExons.zip http://weblogo.berkeley.edu/logo.cgi ./Results/CassetteExons8x20x2000 casetteExons.30.xml 3000 500000 300 120 3 0.005 -1 -1 3 3 1000 1 0.9 false 3 20 8 131 10 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local compute-0-15.local compute-0-16.local compute-0-18.local compute-0-19.local compute-0-20.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK ApC false false false ./Results/TrueExons8x20x2000/TrueExons.99.xml ./Results/TrueExons8x20x2000/TrueExons ./LearningSets/Exons.zip http://weblogo.berkeley.edu/logo.cgi ./Results/TrueExons8x20x2000/ TrueExons.99.xml 3000 500000 300 120 3 0.005 -1 -1 3 3 2000 1 0.9 false 3 20 8 131 10 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-3.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK BpCBaumWelchLearner/Parameters/Linux/MHMMotifESEfakeExonLinux.xml false false false ./Results/FakeExons/FakeExons.99.xml ./Results/FakeExons/FakeExons ./LearningSets/pseudoExons.zip http://weblogo.berkeley.edu/logo.cgi ./Results/FakeExons/ FakeExons.99.xml 3000 500000 300 120 3 0.005 -1 -1 3 3 2000 1 0.9 false 3 20 8 131 10 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-3.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK ApC<(ѲNNABaumWelchLearner/Parameters/Linux/MHMMotifExonicAssemblyLinux.xml false false true ./BestModelsSoFar/TruePreAcceptor8x15x2000/preAcceptorISEs.xml.100.dist.xml ./BestModelsSoFar/TrueAcceptorModel/TrueAcceptors.xml.95.dist.xml ./BestModelsSoFar/TrueExons8x20x2000Conv3minus3/TrueExons.xml.120.dist.xml ./BestModelsSoFar/TrueDonorModel/TrueDonors.xml.70.dist.xml ./BestModelsSoFar/TruePostDonor8x15x2000conv3/postDonorISEs.xml.100.dist.xml false ./Results/TrueExonicAssembly/TrueExonicAssembly.99.xml ./Results/TrueExonicAssembly/TrueExonicAssembly ./LearningSets/TrueExonicAssamblies.zip http://weblogo.berkeley.edu/logo.cgi ./Results/TrueExonicAssembly/ TrueExons.99.xml 3000 500000 300 120 3 0.005 -1 -1 3 3 5000 0 0.9 false 3 20 8 131 10 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-3.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local2 compute-0-1.local2 compute-0-2.local2 compute-0-3.local2 compute-0-4.local2 compute-0-5.local2 compute-0-6.local2 compute-0-7.local2 compute-0-8.local2 compute-0-9.local2 compute-0-10.local2 compute-0-11.local2 compute-0-12.local2 compute-0-13.local2 compute-0-14.local2 compute-0-15.local2 compute-0-16.local2 compute-0-17.local2 compute-0-18.local2 compute-0-19.local2 compute-0-20.local2 PK BpC<[[?BaumWelchLearner/Parameters/Linux/MHMMotifISEacceptorsLinux.xml false false false ./Results/TruePreAcceptor8x15x2000/preAcceptorISEs.10.xml ./Results/TruePreAcceptor8x15x2000/preAcceptorISEs ./LearningSets/preAcceptors10000.zip http://weblogo.berkeley.edu/logo.cgi ./Results/TruePreAcceptor8x15x2000 preAcceptorISEs.70.xml 3000 500000 300 120 3 0.005 -1 -1 0 20 2000 1 0.9 true 3 15 8 101 20 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-3.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK BpC<[[<BaumWelchLearner/Parameters/Linux/MHMMotifISEdonorsLinux.xml false false false ./Results/TruePostDonor8x15x2000conv3/postDonorISEs.10.xml ./Results/TruePostDonor8x15x2000conv3/postDonorISEs ./LearningSets/postDonors10000.zip http://weblogo.berkeley.edu/logo.cgi ./Results/TruePostDonor8x15x4000conv3 postDonorISEs.40.xml 3000 500000 300 120 3 0.005 -1 -1 6 0 2000 1 0.9 true 3 15 8 101 20 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-3.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK ApC<H\\CBaumWelchLearner/Parameters/Linux/MHMMotifISEfakeAcceptorsLinux.xml false false false ./Results/FakePreAcceptor8x15x2000/preAcceptorISEs.10.xml ./Results/FakePreAcceptor8x15x2000/preAcceptorISEs ./LearningSets/pseudoPreAcceptors.zip http://weblogo.berkeley.edu/logo.cgi ./Results/FakePreAcceptor8x15x2000 preAcceptorISEs.30.xml 3000 500000 300 120 3 0.005 -1 -1 0 20 2000 1 0.9 true 3 15 8 101 20 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-3.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK CpC<$!\\@BaumWelchLearner/Parameters/Linux/MHMMotifISEfakeDonorsLinux.xml false false false ./Results/FakePostDonor8x15x1000conv3/postDonorISEs.10.xml ./Results/FakePostDonor8x15x1000conv3/postDonorISEs ./LearningSets/pseudoPostDonors.zip http://weblogo.berkeley.edu/logo.cgi ./Results/FakePostDonor8x15x1000conv3 postDonorISEs.30.xml 3000 500000 300 120 3 0.005 -1 -1 6 0 2000 1 0.9 true 3 15 8 101 20 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-3.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK ApC<lUAA@BaumWelchLearner/Parameters/Linux/MHMMotifLearnAcceptorLinux.xml false false false ./Results/TrueAcceptorModel/TrueAcceptors.99.xml ./Results/TrueAcceptorModel/TrueAcceptors ./LearningSets/TrueAcceptors.zip http://weblogo.berkeley.edu/logo.cgi ./Results/TrueAcceptorModel TrueAcceptors.99.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 179076 0 0.9 true 0 4 23 101 5 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-3.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK BpC<??=BaumWelchLearner/Parameters/Linux/MHMMotifLearnDonorLinux.xml false false false ./Results/TrueDonorModel/TrueDonors.xml ./Results/TrueDonorModel/TrueDonors ./LearningSets/TrueDonors.zip http://weblogo.berkeley.edu/logo.cgi ./Results/TrueDonorModel/TrueDonors TrueDonors.99.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 179079 0 0.9 true 0 16 9 101 5 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-3.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK CpC<_`AADBaumWelchLearner/Parameters/Linux/MHMMotifLearnFakeAcceptorLinux.xml false false false ./Results/FakeAcceptorModel/FakeAcceptors.99.xml ./Results/FakeAcceptorModel/FakeAcceptors ./LearningSets/FakeAcceptors.zip http://weblogo.berkeley.edu/logo.cgi ./Results/FakeAcceptorModel FakeAcceptors.99.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 179076 0 0.9 true 0 4 23 101 5 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-3.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK ApC<>??ABaumWelchLearner/Parameters/Linux/MHMMotifLearnFakeDonorLinux.xml false false false ./Results/TrueDonorModel/FakeDonors.xml ./Results/FakeDonorModel/FakeDonors ./LearningSets/FakeDonors.zip http://weblogo.berkeley.edu/logo.cgi ./Results/FakeDonorModel/FakeDonors FakeDonors.99.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 179079 0 0.9 true 0 16 9 101 5 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-3.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK CpC false false false false ./Results/PseudoAcceptorModel/PseudoAcceptors.99.xml ./Results/PseudoAcceptorModel/PseudoAcceptors ./LearningSets/PseudoAcceptors.zip http://weblogo.berkeley.edu/logo.cgi ./Results/PseudoAcceptorModel PseudoAcceptors.99.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 50000 0 0.9 true 0 4 23 101 5 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-3.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local ComputeOpdf1 ComputeOpdf2 ssombc.local1 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK BpC<{DCBaumWelchLearner/Parameters/Linux/MHMMotifLearnPseudoDonorLinux.xml false false false false ./Results/PseudoDonorModel/PseudoDonors.xml ./Results/PseudoDonorModel/PseudoDonors ./LearningSets/PseudoDonors.zip http://weblogo.berkeley.edu/logo.cgi ./Results/PseudoDonorModel Pseudodonors.99.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 50000 0 0.9 true 0 16 9 101 5 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-3.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local ComputeOpdf1 ComputeOpdf2 ssombc.local1 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK ApC<9BaumWelchLearner/Parameters/MHMMotifESEcassetterExons.xml true false D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results/casetteExons.100.xml D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results/casetteExons D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject/LearningSets/EBIcasetteExons.zip http://weblogo.berkeley.edu/logo.cgi D:\Working\OurProjects\SNPprojectAutismn\ResultsLinux\CassetteExons8x20x2000 casetteExons.xml.120.dist.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 1000 1 0.9 false 3 20 8 151 5 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local compute-0-15.local compute-0-16.local compute-0-18.local compute-0-19.local compute-0-20.local ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK ApC true D:\SensorLearning\HumanMouseCombo.zip false D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results/exons.100.xml D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results/exons D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject/LearningSets/Exons.zip http://weblogo.berkeley.edu/logo.cgi D:\Working\OurProjects\SNPprojectAutismn\ResultsLinux\TrueExons8x20x2000Conv1minus3 TrueExons.xml.120.dist.xml 3000 500000 300 120 3 0.005 -1 -1 3 3 2000 1 0.9 false 3 20 8 151 5 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local compute-0-15.local compute-0-16.local compute-0-18.local compute-0-19.local compute-0-20.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK CpC false false D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results/pseudoExons.5.xml D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results/pseudoExons D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject/LearningSets/pseudoExons.zip http://weblogo.berkeley.edu/logo.cgi D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results pseudoExons.20.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 2000 1 0.9 false 3 20 8 101 5 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local compute-0-15.local compute-0-16.local compute-0-18.local compute-0-19.local compute-0-20.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK CpC<ɟ΁116BaumWelchLearner/Parameters/MHMMotifExonicAssembly.xml false false true D:/Working/OurProjects/SNPprojectAutismn/BestModelsSoFar/TruePreAcceptor8x15x2000/preAcceptorISEs.xml.100.dist.xml D:/Working/OurProjects/SNPprojectAutismn/BestModelsSoFar/TrueAcceptorModel/TrueAcceptors.xml.95.dist.xml D:/Working/OurProjects/SNPprojectAutismn/BestModelsSoFar/TrueExons8x20x2000Conv3minus3/TrueExons.xml.120.dist.xml D:/Working/OurProjects/SNPprojectAutismn/BestModelsSoFar/TrueDonorModel/TrueDonors.xml.70.dist.xml D:/Working/OurProjects/SNPprojectAutismn/BestModelsSoFar/TruePostDonor8x15x2000conv3/postDonorISEs.xml.100.dist.xml false D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results/exons.100.xml D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results/exons D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\LearningSets\TrueExonicAssamblies.zip http://weblogo.berkeley.edu/logo.cgi D:\Working\OurProjects\SNPprojectAutismn\ResultsLinux\TrueExons8x20x1300 TrueExons.xml.120.dist.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 10 0 0.9 false 3 20 8 151 10 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local compute-0-15.local compute-0-16.local compute-0-18.local compute-0-19.local compute-0-20.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK ApC<ո4BaumWelchLearner/Parameters/MHMMotifISEacceptors.xml true false D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results\PostDonor\BestSoFar.xml D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results/postDonorESEs D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject/LearningSets/postDonors10000.zip http://weblogo.berkeley.edu/logo.cgi D:\Working\OurProjects\SNPprojectAutismn\BestModelsSoFar\FakePreAcceptor8x15x2000 preAcceptorISEs.xml.100.dist.xml 3000 500000 300 120 3 0.005 6 150 2000 1 0.9 true 3 15 8 100 5 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local compute-0-15.local compute-0-16.local compute-0-18.local compute-0-19.local compute-0-20.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK ApC<@71BaumWelchLearner/Parameters/MHMMotifISEdonors.xml true false D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results\PostDonor\BestSoFar.xml D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results/postDonorESEs D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject/LearningSets/postDonors10000.zip http://weblogo.berkeley.edu/logo.cgi D:\Working\OurProjects\SNPprojectAutismn\ResultsLinux\TruePostDonor8x15x2000conv3 postDonorISEs.xml.60.dist.xml 3000 500000 300 120 3 0.005 6 150 2000 1 0.9 true 3 15 8 100 5 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local compute-0-15.local compute-0-16.local compute-0-18.local compute-0-19.local compute-0-20.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK CpC<O,FF7BaumWelchLearner/Parameters/MHMMotifISEpseudoDonors.xml true false D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results/postPseudoDonorISEs.80.xml D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results/postPseudoDonorISEs D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject/LearningSets/pseudoPostDonors.zip http://weblogo.berkeley.edu/logo.cgi D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results postPseudoDonorISEs.80.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 2000 1 0.9 true 3 15 8 100 5 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local compute-0-15.local compute-0-16.local compute-0-18.local compute-0-19.local compute-0-20.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK CpC false false D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/src/BaumWelchLearner/Results/acceptorSplitFourParts.12.xml D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/src/BaumWelchLearner/Results/acceptorSplitFourParts D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/src/BaumWelchLearner/LearningSets/TrueAcceptors.zip http://weblogo.berkeley.edu/logo.cgi D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/src/BaumWelchLearner/Results acceptorSplitTwoParts.0.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 8465 0 0.9 true 0 4 23 101 15 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local compute-0-15.local compute-0-16.local compute-0-18.local compute-0-19.local compute-0-20.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK CpC<"xx2BaumWelchLearner/Parameters/MHMMotifLearnDonor.xml false false false false false D:/AutismProject/ExonModelProject/Results/donorClusteredFive.4.xml D:/AutismProject/ExonModelProject/Results/donorClusteredFive D:/AutismProject/ExonModelProject/LearningSets/TrueDonors.zip http://weblogo.berkeley.edu/logo.cgi D:/AutismProject/ExonModelProject/BaumWelchLearner/Results donorClusteredFive.1.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 2000 0 0.9 true 0 5 9 100 1 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local compute-0-15.local compute-0-16.local compute-0-18.local compute-0-19.local compute-0-20.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK ApC< true false D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/Results/donorClusteredFifteen.30.xml D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/Results/TrueDonorModel D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/LearningSets/TrueDonors.zip http://weblogo.berkeley.edu/logo.cgi D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/Results/ donorClusteredTwo.65.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 8415 0 0.9 true 0 2 9 100 1 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local compute-0-15.local compute-0-16.local compute-0-18.local compute-0-19.local compute-0-20.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK CpC false false D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/src/BaumWelchLearner/Results/acceptorSplitFourPartsFake.12.xml D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/src/BaumWelchLearner/Results/acceptorSplitFourPartsFake D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/src/BaumWelchLearner/LearningSets/FakeAcceptors.zip http://weblogo.berkeley.edu/logo.cgi D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/src/BaumWelchLearner/Results acceptorSplitTwoParts.0.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 8465 0 0.9 true 0 4 23 100 1 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local compute-0-15.local compute-0-16.local compute-0-18.local compute-0-19.local compute-0-20.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK ApC false false D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/Results/donorClusteredFifteenFake.99.xml D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results\FakeDonorModel D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/LearningSets/FakeDonors.zip http://weblogo.berkeley.edu/logo.cgi D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/Results donorClusteredFifteenFake.99.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 8415 0 0.9 true 0 15 9 100 1 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local compute-0-15.local compute-0-16.local compute-0-18.local compute-0-19.local compute-0-20.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK CpC false false ./BaumWelchLearner/Results/TATAfishing_100_130.10.xml ./BaumWelchLearner/Results/TATAfishing_100_130 ./BaumWelchLearner/LearningSets/HumanPromotersMinus140Plus10.zip http://weblogo.berkeley.edu/logo.cgi ./BaumWelchLearner/Results TATAfishing_100_130.1.xml 3000 500000 300 30 3 0.01 100 130 0 0 2000 1 0.9 true 3 8 8 600 1 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local compute-0-15.local compute-0-16.local compute-0-18.local compute-0-19.local compute-0-20.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK ApC<[ QQ<BaumWelchLearner/Parameters/MHMMotifPseudoExonicAssembly.xml false false true D:\Working\OurProjects\SNPprojectAutismn\BestModelsSoFar\PseudoPreAcceptor8x15x2000\preAcceptorISEs.xml.100.dist.xml D:\Working\OurProjects\SNPprojectAutismn\BestModelsSoFar\PseudoAcceptorModel\PseudoAcceptors.xml.100.dist.xml D:\Working\OurProjects\SNPprojectAutismn\BestModelsSoFar\PseudoExons8x20x2000Conv3minus3\FakeExons.xml.90.dist.xml D:\Working\OurProjects\SNPprojectAutismn\BestModelsSoFar\PseudoDonorModel\PseudoDonors.xml.100.dist.xml D:\Working\OurProjects\SNPprojectAutismn\BestModelsSoFar\PseudoPostDonor8x15x2000conv3\postDonorISEs.xml.100.dist.xml false D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results/exons.100.xml D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\Results/pseudoExonicAssembly D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\LearningSets\PseudoExonicAssemblies.zip http://weblogo.berkeley.edu/logo.cgi D:\Working\OurProjects\SNPprojectAutismn\ResultsLinux\TrueExons8x20x1300 TrueExons.xml.120.dist.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 10 0 0.9 false 3 20 8 151 10 ssombc.local compute-0-0.local compute-0-1.local compute-0-2.local compute-0-4.local compute-0-5.local compute-0-6.local compute-0-7.local compute-0-8.local compute-0-9.local compute-0-10.local compute-0-11.local compute-0-12.local compute-0-13.local compute-0-15.local compute-0-16.local compute-0-18.local compute-0-19.local compute-0-20.local ComputeOpdf1 ComputeOpdf2 ssombc.local2 compute-0-0.local1 compute-0-1.local1 compute-0-2.local1 compute-0-3.local1 compute-0-4.local1 compute-0-5.local1 compute-0-6.local1 compute-0-7.local1 compute-0-8.local1 compute-0-9.local1 compute-0-10.local1 compute-0-11.local1 compute-0-12.local1 compute-0-13.local1 compute-0-14.local1 compute-0-15.local1 compute-0-16.local1 compute-0-17.local1 compute-0-18.local1 compute-0-19.local1 compute-0-20.local1 PK CpC true D:\Working\OurProjects\SNPprojectAutismn\ResultsLinux\CassetteExons8x20x2000\casetteExons.xml.120.dist.xml D:\Working\OurProjects\SNPprojectAutismn\ResultsLinux\TrueExons8x20x1300\TrueExons.xml.120.dist.xml D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\LearningSets\Exons.zip http://weblogo.berkeley.edu/logo.cgi D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/src/BaumWelchLearner/Results/ donorClusteredTwo.65.xml 3000 500000 300 120 3 0.005 -1 -1 3 3 8415 1 0.9 0 20 9 100 1 PK ApC true D:\Working\OurProjects\SNPprojectAutismn\ResultsLinux\TrueExons8x20x2000Conv2minus3_3000\TrueExons.xml.120.dist.xml D:\Working\OurProjects\SNPprojectAutismn\ResultsLinux\FakeExons8x20x2000Conv2minus3_3000\FakeExons.xml.90.dist.xml D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\LearningSets\TrueExonsTest.txt http://weblogo.berkeley.edu/logo.cgi D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/src/BaumWelchLearner/Results/ donorClusteredTwo.65.xml 3000 500000 300 120 3 0.005 -1 -1 3 3 8415 1 0.9 0 20 9 100 1 PK CpC<]!PBaumWelchLearner/Parameters/Prediction/MHMMotifModelPredictionExonicAssembly.xml true D:\Working\OurProjects\SNPprojectAutismn\BestModelsSoFar\TrueExonicAssembly\trueExonicModel.xml D:\Working\OurProjects\SNPprojectAutismn\BestModelsSoFar\PseudoExonicAssembly\pseudoExonicModel.xml D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\LearningSets\TrueExonicAssemblies.zip http://weblogo.berkeley.edu/logo.cgi D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/src/BaumWelchLearner/Results/ donorClusteredTwo.65.xml 3000 500000 300 120 3 0.005 -1 -1 0 0 10000 0 0.9 0 20 9 100 1 PK ApC true D:\Working\OurProjects\SNPprojectAutismn\ResultsLinux\TruePostDonor8x15x2000conv3\postDonorISEs.xml.100.dist.xml D:\Working\OurProjects\SNPprojectAutismn\ResultsLinux\FakePostDonor8x15x2000conv3\postDonorISEs.xml.100.dist.xml D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\LearningSets\postDonorsTest.txt http://weblogo.berkeley.edu/logo.cgi D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/src/BaumWelchLearner/Results/ donorClusteredTwo.65.xml 3000 500000 300 120 3 0.005 6 -1 0 0 8415 1 0.9 0 20 9 100 1 PK ApC<ќ]  NBaumWelchLearner/Parameters/Prediction/MHMMotifModelPredictionPreAcceptors.xml false D:\Working\OurProjects\SNPprojectAutismn\BestModelsSoFar\TruePreAcceptor8x15x2000\preAcceptorISEs.xml.100.dist.xml D:\Working\OurProjects\SNPprojectAutismn\BestModelsSoFar\FakePreAcceptor8x15x2000\preAcceptorISEs.xml.100.dist.xml D:\Working\OurProjects\SNPprojectAutismn\MHMMproject\ExonModelProject\LearningSets\preAcceptorsTest.txt http://weblogo.berkeley.edu/logo.cgi D:/Working/OurProjects/SNPprojectAutismn/MHMMproject/ExonModelProject/src/BaumWelchLearner/Results/ donorClusteredTwo.65.xml 3000 500000 300 120 3 0.005 -1 -1 0 20 8415 1 0.9 0 20 9 100 1 PK @pC<]v +BlastParsers/AlternativeSplicingEvent.class1n K L M N O PQ PR S TUV K WX YZ[\] ^_`a bcde referenceBPES LBlastParsers/BLATpredictedExon;fromASE'LBlastParsers/AlternativeSplicingEvent;toASEalternativeStartIalternativeEnd eventType CASSETTE_EXON ConstantValue EXON_ISOFORMINTRON_RETENTIONMUTUAL_EXCLUSIVE_EXONS(I)VCodeLineNumberTableLocalVariableTablethissetAlternativeStart(I)ZgetAlternativeStart()IsetAlternativeEndgetAlternativeEnd getAseFrom)()LBlastParsers/AlternativeSplicingEvent;getAseTogetReferenceBPES"()LBlastParsers/BLATpredictedExon; setAseFrom*(LBlastParsers/AlternativeSplicingEvent;)VsetAseTosetReferenceBPES#(LBlastParsers/BLATpredictedExon;)V getEventTypetoString()Ljava/lang/String;sLjava/lang/String; SourceFileAlternativeSplicingEvent.java .f !" #" $" g h7 i7  java/lang/StringBuilder jk Cassete exon EF Exon isoformIntron retentionMutual exclusive exons (alt. start jl) (alt. end  referencing jm%BlastParsers/AlternativeSplicingEventjava/lang/Objectjava/io/Serializable()VBlastParsers/BLATpredictedExon getHitEnd getHitStartappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;(I)Ljava/lang/StringBuilder;-(Ljava/lang/Object;)Ljava/lang/StringBuilder;!  !"#"$"%"&'("&)*"&+,"&- ./0T****123$"450T* *1 !"$23!"670/*1(2 3850T* *1, -.023#"970/*142 3:;0/*182 3<;0/* 1<2 3=>0/*1@2 3?@0>*+1 DE23A@0>*+ 1 HI23 BC0>*+1 LM23D70/*1P2 3EF0W L* Y +  L]* Y +  L>* Y +  L* Y +  L*& Y +  * L+*# Y +  * L Y +  *L+1>TV W!X)Y@ZH[_\g]{_`abde23GHIJPK CpC<:Y< *BlastParsers/AlternativeSplicingEvent.java/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package BlastParsers; import java.io.Serializable; /** * * @author atchourbanov */ public class AlternativeSplicingEvent implements Serializable { private BLATpredictedExon referenceBPES; // Here we form double-linked list for the complex events private AlternativeSplicingEvent fromASE; private AlternativeSplicingEvent toASE; private int alternativeStart = -1, alternativeEnd = -1; private int eventType; static final int CASSETTE_EXON = 0; static final int EXON_ISOFORM = 1; static final int INTRON_RETENTION = 2; static final int MUTUAL_EXCLUSIVE_EXONS = 3; public AlternativeSplicingEvent(int eventType) { this.eventType = eventType; } public boolean setAlternativeStart(int alternativeStart) { // Sanity check if (alternativeStart < referenceBPES.getHitEnd()) { this.alternativeStart = alternativeStart; return true; } return false; } public int getAlternativeStart() { return alternativeStart; } public boolean setAlternativeEnd(int alternativeEnd) { if (alternativeEnd > referenceBPES.getHitStart()) { this.alternativeEnd = alternativeEnd; return true; } return false; } public int getAlternativeEnd() { return alternativeEnd; } public AlternativeSplicingEvent getAseFrom() { return fromASE; } public AlternativeSplicingEvent getAseTo() { return toASE; } public BLATpredictedExon getReferenceBPES() { return this.referenceBPES; } public void setAseFrom(AlternativeSplicingEvent fromASE) { this.fromASE = fromASE; } public void setAseTo(AlternativeSplicingEvent toASE) { this.toASE = toASE; } public void setReferenceBPES(BLATpredictedExon referenceBPES) { this.referenceBPES = referenceBPES; } public int getEventType() { return eventType; } public String toString() { String s = ""; if (eventType == CASSETTE_EXON) { s += "Cassete exon"; } else if (eventType == EXON_ISOFORM) { s += "Exon isoform"; } else if (eventType == INTRON_RETENTION) { s += "Intron retention"; } else if (eventType == MUTUAL_EXCLUSIVE_EXONS) { s += "Mutual exclusive exons"; } if (alternativeStart != -1) { s += " (alt. start " + alternativeStart + ")"; } else if (alternativeEnd != -1) { s += " (alt. end " + alternativeEnd + ")"; } s += " referencing " + referenceBPES; return s; } } PK ApC/(IIIIZDLjava/lang/String;Ljava/lang/String;II)VCodeLineNumberTableLocalVariableTablethis LBlastParsers/BLATpredictedExon;setAlternativeSplicingEvent*(LBlastParsers/AlternativeSplicingEvent;)V eventsNewevent'LBlastParsers/AlternativeSplicingEvent;getAlternativeSplicingEvent*()[LBlastParsers/AlternativeSplicingEvent; intersects"([LBlastParsers/ChromosomeMatch;)Zihsps[LBlastParsers/ChromosomeMatch; getMedian()ItoString()Ljava/lang/String;sgetQueryLengthgetChromosomeLengthgetQuerySequenceNamegetHitSequenceName getQueryStart getQueryEnd getHitStart getHitEnd()Z getHspScore()D SourceFileBLATpredictedExon.java .p !" #" $" %" &' ()   *" +" ,-%BlastParsers/AlternativeSplicingEventq rs tujava/lang/StringBuilder( vw vx - ) <-> () vy CDBlastParsers/BLATpredictedExonBlastParsers/ChromosomeMatchjava/io/Serializable()Vjava/lang/System arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)V compareTo(Ljava/lang/Object;)Iappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;(I)Ljava/lang/StringBuilder;(D)Ljava/lang/StringBuilder;!  !"#"$"%"&'()*"+",-./0  Z**** d`* d`****** * * 1>#% &') **-/.5/;0A1G2M3S4Y52p Z34Z!"Z#"Z$"Z%"Z&'Z()ZZ  Z*" Z+" 560=* * Y+S )* ` M* ,* ,,d+S*, 189;!<0=7><@2 !7-=34=89:;0/* 1C2 34<=0j=+*+21GHIGL2 >"34?@AB06 **dl1P2  34CD0LLY*****L+1TUJV2L34IEFB0/* 1Z2 34GB0/* 1^2 34HD0/*1b2 34ID0/* 1f2 34JB0/*1j2 34KB0/*1n2 34LB0/*1r2 34MB0/*1v2 34&N0/*1z2 34OP0/*1~2 34QRPK CpC (" + hitStart + " - " + hitEnd + ") " + hspScore; return s; } public int getQueryLength() { return queryLength; } public int getChromosomeLength() { return hitLength; } public String getQuerySequenceName() { return querySequenceName; } public String getHitSequenceName() { return hitSequenceName; } public int getQueryStart() { return queryStart; } public int getQueryEnd() { return queryEnd; } public int getHitStart() { return hitStart; } public int getHitEnd() { return hitEnd; } public boolean isComplement() { return isComplement; } public double getHspScore() { return hspScore; } } PK @pC<#>jQQ"BlastParsers/ChromosomeMatch.class1   ()VCodeLineNumberTableLocalVariableTablethisLBlastParsers/ChromosomeMatch; getHitStart()I getHitEndgetChromosomeLength compareTo(Ljava/lang/Object;)IoLjava/lang/Object;rival SourceFileChromosomeMatch.java BlastParsers/ChromosomeMatch  java/lang/Objectjava/lang/Comparable! /*    X+M*,* ,*,&*,*,*,*,&*,*,*,*,&*,*,*,*,&*,*,*,*, 6 !# O#Q'}*.169<>   PK ApC= rival.getHitStart() && this.getHitStart() <= rival.getHitEnd() && this.getHitEnd() >= rival.getHitStart() && this.getHitEnd() <= rival.getHitEnd()) return 0; // Case 2 HSP is inside this // ************************** this // ******** hsp else if(this.getHitStart() <= rival.getHitStart() && this.getHitStart() <= rival.getHitEnd() && this.getHitEnd() >= rival.getHitStart() && this.getHitEnd() >= rival.getHitEnd()) return 0; // Case 3 HSP is before this and intersects // ************************** HSP // ********************** this else if(this.getHitStart() >= rival.getHitStart() && this.getHitStart() <= rival.getHitEnd() && this.getHitEnd() >= rival.getHitStart() && this.getHitEnd() >= rival.getHitEnd()) return 0; // Case 4 This is before HSP and intersects // ************************** this // ********************** HSP else if(this.getHitStart() <= rival.getHitStart() && this.getHitStart() <= rival.getHitEnd() && this.getHitEnd() >= rival.getHitStart() && this.getHitEnd() <= rival.getHitEnd()) return 0; // No intersection has been found so far else if(this.getHitStart() > rival.getHitStart()) return 1; else return -1; } } PK @pC<=  (BlastParsers/MutationsBlastHandler.class1V * +, *- ./0 12 34 56 7 89: ; < = >?@ABresultsLBlastObject/ConvertibleRBTree;"(LBlastObject/ConvertibleRBTree;)VCodeLineNumberTableLocalVariableTablethis$LBlastParsers/MutationsBlastHandler;process(LBlastObject/QueryResult;)VqrLBlastObject/QueryResult;rbp LBlastObject/seq/ReadBLASTParse;bss[LBlastObject/BlastSequence; SourceFileMutationsBlastHandler.java C BlastObject/seq/ReadBLASTParse HIT_GET_TYPED EFURLG HI J!DATABASE K!FASTA L!M NOQUERY_GET_TYPE P! Q! R!S TU"BlastParsers/MutationsBlastHandlerjava/lang/ObjectBlastObject/QueryHandler()VBlastObject/ParametersXMLgetStringFeature&(Ljava/lang/String;)Ljava/lang/String;java/lang/StringequalsIgnoreCase(Ljava/lang/String;)Z hitUrlDBParsehitPostgresDBParsehitFastaDBParseBlastObject/QueryResultgetScoreSortedSequences()[LBlastObject/BlastSequence;queryUrlDBParsequeryPostgresDBParsequeryFastaDBParseBlastObject/ConvertibleRBTreeadd(Ljava/lang/Object;)Z!F **+    !YM ,+ *  ,+  ,+ +N ,+*  ,+ ,+*+WB* 2!?"D&I(V)^*k+s,-01*"#$%IF&'()PK ApC<B'BlastParsers/MutationsBlastHandler.java/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package BlastParsers; import BlastObject.*; import BlastObject.seq.*; /** * This is auxiliary query handler */ public class MutationsBlastHandler implements QueryHandler { public ConvertibleRBTree results; public MutationsBlastHandler(ConvertibleRBTree results) { this.results = results; } public void process(QueryResult qr) { // Read the sequences from the database ReadBLASTParse rbp = new ReadBLASTParse(); // Get the sequences of mRNA (first in the array) and // other DNA sequences with E lower than THRESHOLDE // Read the sequences as a side effect to the query results if (ParametersXML.getStringFeature("HIT_GET_TYPE").equalsIgnoreCase("URL")) { rbp.hitUrlDBParse(qr); } else if (ParametersXML.getStringFeature("HIT_GET_TYPE").equalsIgnoreCase("DATABASE")) { rbp.hitPostgresDBParse(qr); } else if (ParametersXML.getStringFeature("HIT_GET_TYPE").equalsIgnoreCase("FASTA")) { rbp.hitFastaDBParse(qr); } // Read the sequences as a side effect to the query results BlastSequence [] bss = qr.getScoreSortedSequences(); if (ParametersXML.getStringFeature("QUERY_GET_TYPE").equalsIgnoreCase("URL")) { rbp.queryUrlDBParse(qr); } else if (ParametersXML.getStringFeature("QUERY_GET_TYPE").equalsIgnoreCase("DATABASE")) { rbp.queryPostgresDBParse(qr); } else if (ParametersXML.getStringFeature("QUERY_GET_TYPE").equalsIgnoreCase("FASTA")) { rbp.queryFastaDBParse(qr); } results.add(qr); } } PK @pC< hh'BlastParsers/MutationsBlastParser.class1 8 ! "# $ %& '  () *+, *-./ (01 23  456  78  9  :; < = >?@ #2AB &2 %C DE *F (GH >I J K %LMN 3OPQ 6ORS 9OTU VW XYgZ[\]^_s`a J Jbc Jde O If Ighi Tjk Sl m no pq prs tu _vw Bx _yz _{ J|} _~ 2 J S  2 2 2{ 2~ v S v v v v _ B v v B _           v?zG{  2 B J _     2 # F   B B      L j % l      _  _ _ _  _  _       2     L L 6j F F  L #L B  2         B d       B   _ 2     !2 B! "@X #$%&'() *+ *,- 2.  / _01ACCEPTABLE_AVERAGE_IDENTITYD ConstantValueACCEPTABLE_SNP_IDENTITY@WCONTEXTIoOutputFileStreamLjava/io/BufferedWriter;resultsLBlastObject/ConvertibleRBTree;exonCoordinatesMapLjava/util/TreeMap; SignatureOLjava/util/TreeMap;CHANGE_OF_EXISTING_EXONCOMMON_BOUNDARY_CHANGE CRYPTIC_EXONEXON_DISAPPEARMINIMUM_CHANGE_POSSIBLE()VCodeLineNumberTableLocalVariableTablethis#LBlastParsers/MutationsBlastParser;main([Ljava/lang/String;)V inputSourceLorg/xml/sax/InputSource;xLjava/io/FileNotFoundException;Ljava/io/IOException;Lorg/xml/sax/SAXException;oParserLorg/xml/sax/XMLReader;oHandlerLorg/xml/sax/ContentHandler; oQueryHandlerLBlastObject/QueryHandler;oInputFileStreamLjava/io/FileInputStream;args[Ljava/lang/String;oInputLjava/lang/String;oOutputoModeparserMutationsprocessExonScan/(Ljava/lang/String;)[LServiceRoutines/Fragment;qs)LAbInitioQuery/QuerySiteMultipartEncoded;eLjava/lang/Exception;sequence experimentform[[Ljava/lang/String;tree#LBlastObject/ConvertibleLinkedList;$processForSplicingDifferenceExonScanfLServiceRoutines/Fragment;i startShifted endShiftedj exonChange%[[LBlastObject/ConvertibleLinkedList;startend localExonslocalExonsArrayServiceRoutines/Fragment; senseNatural senseMutantexonsPredicted[[LServiceRoutines/Fragment;changeDetectedZkey container(LBlastParsers/MutationsChangesContainer;bpes![LBlastParsers/BLATpredictedExon;minmax isComplement existingExonsexistingExonsArrayitLjava/util/Iterator;LocalVariableTypeTable(Ljava/util/Iterator;(processForSplicingDifferenceSpliceScanII.detectIfDisapperingExonIntersectsWithAnnotated([[LServiceRoutines/Fragment;[LServiceRoutines/Fragment;ILBlastParsers/MutationsChangesContainer;[[LBlastObject/ConvertibleLinkedList;)V matchDetectedr2r queryLocationbpesLktokenoldStartoldEndr1theStrongestDisappearingExon*detectIfCrypticExonIntersectsWithAnnotatedtheStrongestExonToAppear,detectChangesInExonsOverlappingWithAnnotateddetectChangesInAnnotatedExons getSequencesnextstLjava/util/StringTokenizer;fisbrLjava/io/BufferedReader;linetLjava/lang/Throwable; fileNameReadmap writeFasta'(Ljava/lang/String;Ljava/lang/String;)VfstreamLjava/io/FileWriter;bwfileOutfastaprocessForMutationshitNamehsps[LBlastObject/HighScoringPair; queryNamequeryDescription sequences[LBlastObject/BlastSequence; queryResults[LBlastObject/QueryResult;writeSerializedObject+(Ljava/lang/String;Ljava/io/Serializable;)VLjava/io/File;diroutLjava/io/FileOutputStream; compressedLjava/io/OutputStream;sLjava/io/ObjectOutputStream; outputFileobjectLjava/io/Serializable; readObject&(Ljava/lang/String;)Ljava/lang/Object;in decompressedLjava/io/InputStream;Ljava/io/ObjectInputStream; sourceFilefileLjava/lang/Object;getQuerySequencesFromFasta/([LBlastObject/QueryResult;Ljava/lang/String;)VzipEntryLjava/util/zip/ZipEntry;Ljava/util/Enumeration;zipFileLjava/util/zip/ZipFile;qrgetQuerySequencesFromFastaIS2([LBlastObject/QueryResult;Ljava/io/InputStream;)V matcherISLjava/util/regex/Matcher;issbLjava/lang/StringBuffer; accession patternIDLjava/util/regex/Pattern; removeSpaces&(Ljava/lang/String;)Ljava/lang/String;seqarr allTogethergetSequencesFromFasta(Ljava/lang/String;)VgetSequencesFromFastaIS(Ljava/io/InputStream;)VebiIdopenFile,(Ljava/lang/String;)Ljava/io/BufferedReader;frLjava/io/FileReader; ExceptionsloadASDalignment sourceFileASDfilesdirASDalignmentsdirectoryASDalignmentsprocessSim4ASDalignments-(Ljava/io/BufferedReader;Ljava/lang/String;)Vsplt rnaExonStart rnaExonEnd dnaExonStart dnaExonEndidentityhsp LBlastParsers/BLATpredictedExon;record bodyParsename1name2crbt totalIdentity queryLength hitLengthputItIntoMapASDF(Ljava/lang/String;Ljava/lang/String;LBlastObject/ConvertibleRBTree;)VputBpesReferenceASD4(LBlastObject/ConvertibleRBTree;Ljava/lang/String;)VbpesLoc SourceFileMutationsBlastParser.java OPread_from_serialized_tree_file 23serialized_tree_file 4 java/util/TreeMap FG5 678 9P>Usage: java SpliceScanII.SNPsBlastParser 9 For Example: n java SpliceScanII.SNPsBlastParser D:/Working/ExonModelProject/src/SpliceScanII/Parameters/SNPsBlastParser.xml :;BlastObject/ParametersXML O!BlastParsers/MutationsBlastParser INPUT_FILE OUTPUT_FILE.org/biojava/bio/program/sax/BlastLikeSAXParser <PBlastObject/BlastObjectHandlerBlastObject/ConvertibleRBTree DE"BlastParsers/MutationsBlastHandler O= >?@ >Ajava/io/FileInputStreamjava/io/BufferedWriterjava/io/FileWriter OB BCorg/xml/sax/InputSource O 7 ( `a Ib- ca) comp. X Id Exon => ( ea fa) <=> ()ServiceRoutines/Fragment ghExon i j; k; lm nH oa pa qa rs tH******************************Locally annotated exons Exon  - >test u v mn >test_mutant     fasta_file SpliceScanII/SpliceScanII_GC output_data_file n wx M@5 There is a change in annotated exon potential here:  yH Mutation  |: z{ deletes the annotated exon  with the score I|; deletes the exon sharing one boundary with annotated exon ! causes the exon to disappear in }H where the score was L@H causes cryptic exon to appear sharing one boundary with annotated exon " causes cryptic exon to appear in ~ ; changes the exon sharing one boundary with annotated exon  where the exon score changes -> K@ changes the annotated exon J@ java/io/File Ojava/io/BufferedReaderjava/io/InputStreamReader O H HEXON LOCATED AT 3java/util/StringTokenizer O X H ] GC EXON LOCATED ATjava/lang/Throwable QUERY_FASTA_FILE  H H  H     H   HIT_FASTA_FILE  P  H X Xjava/io/FileOutputStreamjava/util/zip/GZIPOutputStream Ojava/io/ObjectOutputStream  Pjava/util/zip/GZIPInputStreamjava/io/ObjectInputStream N.fa 3.fasta.txt .zipjava/util/zip/ZipFile  X Njava/util/zip/ZipEntry .gzjava/lang/StringBuffer>MUT\d+ >  3  X H r I |   >ENSG\d{11} java/io/FileReaderdirectory_ASD_alignments X  In directory / Process file ...  "java/lang/IllegalArgumentException5This must be a directory containing ASD alignments... H a seq1 seq1 = |, | seq2 seq2 = |, |  (complement) -()% a1Was not able to parse the Sim4 coordinate record! BlastParsers/BLATpredictedExon O  java/lang/ObjectgetBooleanFeature(Ljava/lang/String;)ZgetStringFeaturejava/lang/SystemerrLjava/io/PrintStream;java/io/PrintStreamprintlnexit(I)V setModeLazy"(LBlastObject/ConvertibleRBTree;)VsetContentHandler(LBlastObject/QueryHandler;)Vorg/xml/sax/XMLReader(Lorg/xml/sax/ContentHandler;)V(Ljava/io/Writer;)Vparse(Lorg/xml/sax/InputSource;)V terminateclose getMessage()Ljava/lang/String;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;toStringL(Ljava/lang/String;[[Ljava/lang/String;LAbInitioQuery/GenericHTMLOutliner;)V getResultMap()Ljava/lang/Object;printStackTrace buildArraykeySet()Ljava/util/Set; java/util/Setiterator()Ljava/util/Iterator;java/util/IteratorhasNext()Zget&(Ljava/lang/Object;)Ljava/lang/Object;getMutationDescriptionindexOf(Ljava/lang/String;)IgetBPESs#()[LBlastParsers/BLATpredictedExon; getHitStart()I(I)Ljava/lang/StringBuilder; getHitEnd(Z)Ljava/lang/StringBuilder; getQueryStart getQueryEndadd(Ljava/lang/Object;)ZsetTypesetStartsetEndsetScore(D)VgetReferenceDNAsequencelengthgetStartgetEnd substring(II)Ljava/lang/String;getMutantNucsOnlyBlastObject/BlastSequence makeFastagetScore()DgetQuerySequenceNamesplit'(Ljava/lang/String;)[Ljava/lang/String;(D)Ljava/lang/StringBuilder;getEBIidjava/lang/Mathabs(D)D(Ljava/io/File;)V(Ljava/io/Reader;)VreadLine toUpperCase startsWith hasMoreTokens nextTokenjava/lang/IntegerparseIntjava/lang/Double parseDouble(Ljava/lang/String;)DwriteBlastObject/QueryResult getQueryNamegetQueryDescriptiongetScoreSortedSequences()[LBlastObject/BlastSequence; getHitNameput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;setEBIidsetMutationReferencesetMutationDescriptiongetQuerySequencesetQuerySequencegetRnaSortedHSPs ()[LBlastObject/HighScoringPair; setHighestHSP (LBlastObject/HighScoringPair;)V getParentexistsmkdirs(Ljava/io/OutputStream;)V writeObject(Ljava/lang/Object;)VflushendsWithentries()Ljava/util/Enumeration;java/util/EnumerationhasMoreElements nextElementgetInputStream/(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;java/util/regex/Patterncompile-(Ljava/lang/String;)Ljava/util/regex/Pattern;matcher3(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;equalsIgnoreCasejava/util/regex/Matcherfindgroup(I)Ljava/lang/String;,(Ljava/lang/String;)Ljava/lang/StringBuffer;setReferenceDNAsequence isDirectorylist()[Ljava/lang/String;trimsize countTokensprint/(IIIIZDLjava/lang/String;Ljava/lang/String;II)VsetBPESs$([LBlastParsers/BLATpredictedExon;)V!8 9:;&<:;=?@;A BC DEFGHI J@ K@ L@ M@N:;OPQd****Y R:; <>)@S *TU VWQ [LMN*%    Y*2WY:LMY:Y:YY :!"#Y+$:%Y&Y,'()*Y+: ,-  ./0)1,2 T: , 4 ,5 8: , 7 ,8 : , : ,; <=>?3 6'9R2CDEF GHI"J*K.O9QBSJVPYV^__gapczdektuwxyz|}~   $')4<@HMUZS ,XY Z[  Z\ )Z] _^_p`abcde[fgYhiWjiUkiBlUmnQJ@MAYBYCSYDSYESSYBYFSYDSYESSYBYGSYDSYESSYBYHSY+SYESSN:IYJYK,LMLN-OYPQ:RS::U V WXXbTR. _bSH opqrTUsiti_UuvbRwxyPQ*YZL+[+\BM,JYK]L,LN *,^_N-`ab-c:,JYKdL-efgL-hfiL2jkN l6m66SYn:6   2j6,JYKoL 2pfgL 2qfrL 2sfgL 2tfuLN vYw:  xW yz  2s{  2t| } 2s  2s6 2t  2t6 2s  2s6 2t  2t6 WXX: -~-ed6  6 -h`6  -~ -~6 SYn: 6  l  d  2 d`6  2 d`6:/vYw: xWyz{|}  WXX: -~ d :- d :a, , 6 A 9,JYKL 2fL 2fN , SYn:*JYKLLNxW*JYKLLNxWW:6wd:6,622SYnS*  -*  -*  -*  -,RNS  9ERU[`c&.5BOUbly *9GJS[bi p v|  "7#X&e'h0m2y45654;>ADGHS$&z{ |@ *L}@9=~@S#z{n|@ C|@ @|1|@yh@ @  x X Ii:iDxe|hy iE[C@?@<3x TU   PQ*YZL+[ +\BM,JYK]L,LN *,^_N-`ab-c:,JYKdL-efgL-hfiL2jkN l6m66SYn:6   2j6,JYKoL 2pfgL 2qfrL 2sfgL 2tfuLN vYw:  xW yz  2s{  2t| } 2s  2s6 2t  2t6 2s  2s6 2t  2t6 WXX: U-~N-ed6  6 -h`6  -~ -~6 SYn: 6  l  d  2 d`6  2 d`6:/vYw: xWyz{|}  WXX: - d :-~ d :a, , 6 A 9,JYKL 2fL 2fN , SYn:*JYKLLNY*xW*JYKLLNY*xWW:6wd:6,622SYnS*  -*  -*  -*  -R^WK LM O9QETRUUX[Y`Zc\_`acegik&l.m5nBoOpUrbsluyvxy{|e *9GJS[bipv| 6ETtS$&z{ |@ *L}@9=~@S#z{n|@ C|@ @1|@hA@ .@  x  itiDx|y iE[}@y@vmxW TU   Qa6:6++6 +2 +26 6 +2D +2:+2 2+2 2+2 2+2 26  W+2 2F2d2+2 2xW+2 2:+2 2 +2 2: E1, 6`d6 `d6 6 , ,, 2, 2: c: 6 l d 2s Q 2t DJYKL 2LL 2pfgL 2qfLN: ,JYKL`2LL LLN 6, 2, 2!, 2, 2: c: 6   2s  2t iJYKL 2LL 2pfgL 2qfLN: JYK LL fgL fN: p,JYKL`2LL LLN 6 U,JYKL`2LLLL fgL fLN R.(+?mpv - 0 7 Ga %(/?Y ! $%`(S.H@ + |@ @:n@0i 7 2@(i / @ uj@ _@ aTUaaa@aa^@[{Q6:6++6 +2 +26 6 +2D +2:+2 2+2 2+2 2+2 26  W+2 2F2d2+2 2xW+2 2:+2 2 +2 2: E1, 6`d6 `d6 6 ,* ,#, 2, 2!, 2, 2: c: 6   2s  2t iJYKL 2LL 2pfgL 2qfLN: JYK LL fgL fN: p,JYKL`2LL LLN 6 U,JYKL`2LLLL fgL fLN R%+,-.(/+0?1m3p0v6789:;.-BCDEFGHKLNMUNeOPQNT&U)G/X4Y\S.H|@ + @ @X@Ni U +@ @ @ TU@@{QeE66+=+66+2&+26 +2  +2+22+2 2+22+2 2+22+2 26 , ,+22, 2+22, 2++22, 2f+22, 2R+22`d6 +22`d6 : c:62s 2t iJYKL2LL2pfgL2qfLN: JYK LL fgL fN: p+22+2 2gs, ,JYKL`2LL LL+22L+2 2N 2d2+2 2xW S لűRf_bc%d9ehiopqrst1urvsz{|},h2d8c>bDS @?@ /@ ,i %@ (@ *|@>@ETUEEE@EEB@Q=66++6+2+26 +2 +2+22+2 2+22+2 2+22+2 26 , ,+22, 2f+22, 2R+22`d6 +22`d6 : c:62s v2t iJYKL2LL2pfgL2qfLN: JYK LL fgL fN: p+22+2 2gs, ,JYKL`2LL LL+22L+2 2N 2d2+2 2xW { Rf%9 Jou S@?@ /@ ,i %@ (@ |@@TU@@nQ aSYnM#YY+NYY-:Y:~Y:vYw:yz6™G:  Ķ{' Ķ|  Ŷ} ,xWpƶcY:vYw:yz6™H:  Ķ{( Ķ|  Ŷ} ,xWǧ N-,WXXJMR))4ANW^ipv &06;BEJMNRVSp7i aL|@NkWbz{8i M|@lcz{2e)!1iNaTUaiYxQ+&Y+'N%Y-(:,1 N-U!TR&  !"&*S>  C"qr+TU+i+iPQ L*+͸=+++2N+2:+2:62:*-_YӶW*-^_*-^_-*-^_*-^_+2ض2:6  *-^_ 2ۧ?*ܸ***߱R^ #*2:JT d t   Sf @ Ti&=@*i2i:|@TU Q$fY+NY-: WY+:Y:Y:, N-Y\6RB+ ,-.$1.293D4J5O6T7Y<\8]:a;e=S\ PzC.+9 D]Z\fTUfif QMY*LM+0#Y+NY-:Y:M- N-U, ?BTR:G H LMO%P0R6S;T?ZBWCXGYK\SH$e%0CZrMi D BQY,, ,*+#YY,i,9Y,N-::*+-ߧ*, Y#YY,N*+- N-6RBde2f;gDhTi`jkknl{mnspqrtSR` J$qD*q\TUiQ YY,N:Y:::-Y:u_:26  +(+ 2 + 2*    :Y:W26+(+2 +2*   -ǧ:U'TRv|}~'1<EJTcsySz M,|@ EP,|@ qrTUii'Q4+MN6,JYK-L,2LNN-R ,2S4#|@4TU4i,g (iQI++ +*#YY+d+5Y+M,N--:*,)+Y#YY+M*, M,6RB1:CQ\fivSH\ H!qC&q\TUiQ 3YY+MNY:::,YN--:Y*YZ:[A\B: * ^_:   * ^_  :Y:n-WdY*YZ:[A\B:*^_:   *^_ ,ǧ:U&$'TR#&/9AFT^j{  $').2Sj/i {i THAw/ii H) qr3TU3#!ii& THHQZY*LY+M,R S i 3PQZLY+M,,N,JYKL+LN 6-TJYK+LL-2LN:,JYKL-2LLN * !Y"# L+UTRF6@]# !"%SH].i9Xz@ugiqrTUQv 6::6Y:9 6 6 +YN-$N- OJ% %o& *(6::6Y:9 6 6 -)#-*:  2: 26 u-+#-,:  2: 26 K- $   6 --  6 Y-.:  / 01 ø6 ø6 ø6 ø6 øć9 c9 2Y  3:4W~+DZR7/02 34567"9+:0=??WAaFdGiHnIqKzM}NOQSTUVWYZ[\]_cdfghjk"n/o9pBqEtOuYvcwmxxyz~Sg g OU @YK @cA @m7 @x, :/u TUi(ii iE: @ "@ TQ_-% *-,5RS*TUiiEQ]+66N*YZ:[<\B:*^_:, *^_-7R&  #/@IY\SH/*i@i]TU]E]i RD DPQ5R456 7PK CpC<Û&BlastParsers/MutationsBlastParser.java/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package BlastParsers; /* * GIGOgene development code * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. If you do not have a copy, * see: * * http://www.gnu.org/copyleft/lesser.html * * Copyright for this code is held jointly by Churbanov Alexander. * These should be listed in @author doc comments. * * */ import AbInitioQuery.ExonScanOutlinerLL; import AbInitioQuery.QuerySiteMultipartEncoded; import org.xml.sax.ContentHandler; import org.xml.sax.XMLReader; import org.xml.sax.InputSource; import java.io.*; import BlastObject.*; import ServiceRoutines.Fragment; import SpliceScanII.SpliceScanII_GC; import java.util.Enumeration; import java.util.Iterator; import java.util.StringTokenizer; import java.util.TreeMap; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import org.biojava.bio.program.sax.BlastLikeSAXParser; public class MutationsBlastParser { public static final double ACCEPTABLE_AVERAGE_IDENTITY = 99.0; public static final double ACCEPTABLE_SNP_IDENTITY = 95.0; public static final int CONTEXT = 900; public static BufferedWriter oOutputFileStream; private static ConvertibleRBTree results; TreeMap exonCoordinatesMap; private static int CHANGE_OF_EXISTING_EXON = 0; private static int COMMON_BOUNDARY_CHANGE = 1; private static int CRYPTIC_EXON = 2; private static int EXON_DISAPPEAR = 3; static final double MINIMUM_CHANGE_POSSIBLE = 0.02; MutationsBlastParser() { if (ParametersXML.getBooleanFeature("read_from_serialized_tree_file")) { exonCoordinatesMap = (TreeMap) readObject(ParametersXML.getStringFeature("serialized_tree_file")); } else { exonCoordinatesMap = new TreeMap(); } } public static void main(String[] args) { String oInput = null; String oOutput = null; String oMode = null; if (args.length < 1) { System.err.println(); System.err.println("Usage: java SpliceScanII.SNPsBlastParser \n"); System.err.println("For Example: "); System.err.println("\tjava SpliceScanII.SNPsBlastParser D:/Working/ExonModelProject/src/SpliceScanII/Parameters/SNPsBlastParser.xml"); System.exit(1); } // Read run-time parameters from a file new ParametersXML(args[0]); MutationsBlastParser parserMutations = new MutationsBlastParser(); if (!ParametersXML.getBooleanFeature("read_from_serialized_tree_file")) { //Read the names of the genes we are interested in // BLASTN file to read oInput = ParametersXML.getStringFeature("INPUT_FILE"); // FASTA file to write oOutput = ParametersXML.getStringFeature("OUTPUT_FILE"); /** * Create a SAX Parser */ XMLReader oParser = (XMLReader) new BlastLikeSAXParser(); ((BlastLikeSAXParser) oParser).setModeLazy(); ContentHandler oHandler = (ContentHandler) new BlastObjectHandler(); results = new ConvertibleRBTree(); QueryHandler oQueryHandler = new MutationsBlastHandler(results); ((BlastObjectHandler) oHandler).setContentHandler(oQueryHandler); /* * Give the parser a reference to the ContentHandler * so that it can send SAX2 mesagges. */ oParser.setContentHandler(oHandler); //Parsing using ByteSteam as InputSource // Open file and read all lines from file sequentially FileInputStream oInputFileStream; BufferedReader oContents; try { // create input stream oInputFileStream = new FileInputStream(oInput); oOutputFileStream = new BufferedWriter(new FileWriter(oOutput)); InputSource inputSource = new InputSource(oInputFileStream); System.out.println("Now we collect information on SNPs from the BLASTN result..."); oParser.parse(inputSource); ((BlastObjectHandler) oHandler).terminate(); parserMutations.processForMutations(); oOutputFileStream.close(); System.out.println("I am done!!!"); } catch (java.io.FileNotFoundException x) { System.out.println(x.getMessage()); System.out.println("Couldn't open file"); System.exit(0); } catch (java.io.IOException x) { System.out.println(x.getMessage()); System.out.println("I/O Problem!"); System.exit(0); } catch (org.xml.sax.SAXException x) { System.out.println(x.getMessage()); System.out.println("Sax parser problems!"); System.exit(0); } } // Post process the changes induced by the mutations if (ParametersXML.getBooleanFeature("predict_with_splice_scan_II")) { parserMutations.processForSplicingDifferenceSpliceScanII(); } if (ParametersXML.getBooleanFeature("predict_with_exon_scan")) { parserMutations.processForSplicingDifferenceExonScan(); } } /** * Process the ExonScan program output * http://genes.mit.edu/exonscan/ */ Fragment[] processExonScan(String sequence) { String experiment = "EXON_SCAN"; String[][] form = { {"ESE", "on", "Parameter"}, {"ESS", "on", "Parameter"}, {"GGG", "on", "Parameter"}, {"sequence", sequence, "Parameter"}}; // Query online - if tool crashes then recycle ConvertibleLinkedList tree = null; while (true) { try { QuerySiteMultipartEncoded qs = new QuerySiteMultipartEncoded(ParametersXML.getStringFeature(experiment + "_SERVER"), form, new ExonScanOutlinerLL()); tree = (ConvertibleLinkedList) qs.getResultMap(); } catch (Exception e) { e.printStackTrace(); System.err.println("Since web query has crashed, we repeat it..."); continue; } break; } return (Fragment[]) tree.buildArray(); } private void processForSplicingDifferenceExonScan() { Iterator it = exonCoordinatesMap.keySet().iterator(); while (it.hasNext()) { String key = it.next(); System.out.println("\nProcess for sequence " + key); MutationsChangesContainer container = exonCoordinatesMap.get(key); // Not interested in non-internal exon changes if (container.getMutationDescription().indexOf(":Yes") != -1) { continue; } BLATpredictedExon[] bpes = container.getBPESs(); if (bpes == null) { continue; } System.out.println("Point of Mutation => (" + container.getHitStart() + "-" + container.getHitEnd() + ") comp. " + bpes[0].isComplement()); int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; boolean isComplement = false; ConvertibleLinkedList existingExons = new ConvertibleLinkedList(); for (int i = 0; bpes != null && i < bpes.length; i++) { isComplement = bpes[i].isComplement(); System.out.println("\tExon => (" + bpes[i].getQueryStart() + "-" + bpes[i].getQueryEnd() + ") <=> (" + bpes[i].getHitStart() + "-" + bpes[i].getHitEnd() + ")"); Fragment f = new Fragment(); existingExons.add(f); f.setType("Exon"); f.setStart(bpes[i].getHitStart()); f.setEnd(bpes[i].getHitEnd()); f.setScore(1.0); if (bpes[i].getHitStart() > max) { max = bpes[i].getHitStart(); } if (bpes[i].getHitEnd() > max) { max = bpes[i].getHitEnd(); } if (bpes[i].getHitStart() < min) { min = bpes[i].getHitStart(); } if (bpes[i].getHitEnd() < min) { min = bpes[i].getHitEnd(); } } Fragment[] existingExonsArray = (Fragment[]) existingExons.buildArray(); // Check if it is inside the gene if (!isComplement && container.getReferenceDNAsequence() != null) { int start = container.getHitStart() - CONTEXT; if (start < 1) { start = 1; } int end = container.getHitEnd() + CONTEXT; if (end > container.getReferenceDNAsequence().length()) { end = container.getReferenceDNAsequence().length(); } ConvertibleLinkedList localExons = new ConvertibleLinkedList(); for (int i = 0; existingExonsArray != null && i < existingExonsArray.length; i++) { int startShifted = existingExonsArray[i].getStart() - start + 1; int endShifted = existingExonsArray[i].getEnd() - start + 1; if (endShifted < 1 || startShifted > 2 * CONTEXT) { continue; } Fragment f = new Fragment(); localExons.add(f); f.setType("Exon"); f.setStart(startShifted); f.setEnd(endShifted); f.setScore(1.0); } Fragment[] localExonsArray = (Fragment[]) localExons.buildArray(); String senseNatural = container.getReferenceDNAsequence().substring(start - 1, end); String senseMutant = container.getMutantNucsOnly().substring(start - 1, end); // No mutant to look at if (senseMutant == null) { continue; } System.out.println("******************************"); System.out.println("Locally annotated exons"); for (int i = 0; localExonsArray != null && i < localExonsArray.length; i++) { System.out.println("\tExon " + localExonsArray[i].getStart() + " - " + localExonsArray[i].getEnd()); } System.out.println("******************************"); /***********************************************************/ // Here we make a polymorphic prediction ConvertibleLinkedList results = new ConvertibleLinkedList(); //writeFasta("D:/DBASS5seqs/" + container.getMutationReference() + ".fa", ">" + container.getMutationDescription().split(" |:")[0] + "\n" + BlastSequence.makeFasta(senseNatural) + // ">" + container.getMutationDescription().split(" |:")[0] + "_mut\n" + BlastSequence.makeFasta(senseMutants[0])); results.add(processExonScan(">test\n" + BlastSequence.makeFasta(senseNatural))); results.add(processExonScan(">test_mutant\n" + BlastSequence.makeFasta(senseMutant))); /***********************************************************/ Fragment[][] exonsPredicted = (Fragment[][]) results.buildArray(); boolean changeDetected = false; // There are three types of events in hierarchy // (1) Change of potential of existing exon // (2) Change of potential of an exon sharing the // boundary with existing one. // (3) Creation of the cryptic exon. // (4) Exon disappear. if (exonsPredicted != null) { ConvertibleLinkedList[][] exonChange = new ConvertibleLinkedList[4][exonsPredicted.length - 1]; for (int i = 0; i < exonChange.length; i++) { for (int j = 0; j < exonChange[i].length; j++) { exonChange[i][j] = new ConvertibleLinkedList(); } } // Check if the annotated exons change detectChangesInAnnotatedExons(exonsPredicted, localExonsArray, start, container, exonChange); // Check if exon overlapping with the annotated changes detectChangesInExonsOverlappingWithAnnotated(exonsPredicted, localExonsArray, start, container, exonChange); // Here the cryptic exon is created detectIfCrypticExonIntersectsWithAnnotated(exonsPredicted, localExonsArray, start, container, exonChange); // Here an exon gets destroyed detectIfDisapperingExonIntersectsWithAnnotated(exonsPredicted, localExonsArray, start, container, exonChange); } } } } private void processForSplicingDifferenceSpliceScanII() { Iterator it = exonCoordinatesMap.keySet().iterator(); while (it.hasNext()) { String key = it.next(); System.out.println("\nProcess for sequence " + key); MutationsChangesContainer container = exonCoordinatesMap.get(key); // Not interested in non-internal exon changes if (container.getMutationDescription().indexOf(":Yes") != -1) { continue; } BLATpredictedExon[] bpes = container.getBPESs(); if (bpes == null) { continue; } System.out.println("Point of Mutation => (" + container.getHitStart() + "-" + container.getHitEnd() + ") comp. " + bpes[0].isComplement()); // Find the range of the gene here at the DNA level int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; boolean isComplement = false; ConvertibleLinkedList existingExons = new ConvertibleLinkedList(); for (int i = 0; bpes != null && i < bpes.length; i++) { isComplement = bpes[i].isComplement(); System.out.println("\tExon => (" + bpes[i].getQueryStart() + "-" + bpes[i].getQueryEnd() + ") <=> (" + bpes[i].getHitStart() + "-" + bpes[i].getHitEnd() + ")"); Fragment f = new Fragment(); existingExons.add(f); f.setType("Exon"); f.setStart(bpes[i].getHitStart()); f.setEnd(bpes[i].getHitEnd()); f.setScore(1.0); if (bpes[i].getHitStart() > max) { max = bpes[i].getHitStart(); } if (bpes[i].getHitEnd() > max) { max = bpes[i].getHitEnd(); } if (bpes[i].getHitStart() < min) { min = bpes[i].getHitStart(); } if (bpes[i].getHitEnd() < min) { min = bpes[i].getHitEnd(); } } // The list of annotated exons Fragment[] existingExonsArray = (Fragment[]) existingExons.buildArray(); // Check if it is inside the gene and Ensembl DNA // is non-compelement here if (!isComplement && container.getReferenceDNAsequence() != null) { int start = container.getHitStart() - CONTEXT; if (start < 1) { start = 1; } int end = container.getHitEnd() + CONTEXT; if (end > container.getReferenceDNAsequence().length()) { end = container.getReferenceDNAsequence().length(); } // Here we shift coordinated to local // and identify the subset of annotated exons // falling in our area of interest. ConvertibleLinkedList localExons = new ConvertibleLinkedList(); for (int i = 0; existingExonsArray != null && i < existingExonsArray.length; i++) { int startShifted = existingExonsArray[i].getStart() - start + 1; int endShifted = existingExonsArray[i].getEnd() - start + 1; if (endShifted < 1 || startShifted > 2 * CONTEXT) { continue; } Fragment f = new Fragment(); localExons.add(f); f.setType("Exon"); f.setStart(startShifted); f.setEnd(endShifted); f.setScore(1.0); } Fragment[] localExonsArray = (Fragment[]) localExons.buildArray(); String senseMutant = container.getMutantNucsOnly().substring(start - 1, end); String senseNatural = container.getReferenceDNAsequence().substring(start - 1, end); // No mutants to look at if (senseMutant == null) { continue; } System.out.println("******************************"); System.out.println("Locally annotated exons"); for (int i = 0; localExonsArray != null && i < localExonsArray.length; i++) { System.out.println("\tExon " + localExonsArray[i].getStart() + " - " + localExonsArray[i].getEnd()); } System.out.println("******************************"); // Here we make a polymorphic prediction ConvertibleLinkedList results = new ConvertibleLinkedList(); writeFasta(ParametersXML.getStringFeature("fasta_file"), ">test\n" + BlastSequence.makeFasta(senseNatural)); //writeFasta("D:/DBASS5seqs/" + container.getMutationReference() + ".fa", ">" + container.getMutationDescription().split(" |:")[0] + "\n" + BlastSequence.makeFasta(senseNatural) + // ">" + container.getMutationDescription().split(" |:")[0] + "_mut\n" + BlastSequence.makeFasta(senseMutants[0])); (new SpliceScanII_GC()).getSequences(ParametersXML.getStringFeature("fasta_file")); results.add(getSequences(ParametersXML.getStringFeature("output_data_file"))); writeFasta(ParametersXML.getStringFeature("fasta_file"), ">test_mutant\n" + BlastSequence.makeFasta(senseMutant)); (new SpliceScanII_GC()).getSequences(ParametersXML.getStringFeature("fasta_file")); results.add(getSequences(ParametersXML.getStringFeature("output_data_file"))); Fragment[][] exonsPredicted = (Fragment[][]) results.buildArray(); boolean changeDetected = false; // There are three types of events in hierarchy // (1) Change of potential of existing exon // (2) Change of potential of an exon sharing the // boundary with existing one. // (3) Creation of the cryptic exon. // (4) Exon disappear. if (exonsPredicted != null) { ConvertibleLinkedList[][] exonChange = new ConvertibleLinkedList[4][exonsPredicted.length - 1]; for (int i = 0; i < exonChange.length; i++) { for (int j = 0; j < exonChange[i].length; j++) { exonChange[i][j] = new ConvertibleLinkedList(); } } // Check if the annotated exons change detectChangesInAnnotatedExons(exonsPredicted, localExonsArray, start, container, exonChange); // Check if exon overlapping with the annotated changes detectChangesInExonsOverlappingWithAnnotated(exonsPredicted, localExonsArray, start, container, exonChange); // Here the cryptic exon is created detectIfCrypticExonIntersectsWithAnnotated(exonsPredicted, localExonsArray, start, container, exonChange); // Here an exon gets destroyed detectIfDisapperingExonIntersectsWithAnnotated(exonsPredicted, localExonsArray, start, container, exonChange); } } } } void detectIfDisapperingExonIntersectsWithAnnotated(Fragment[][] exonsPredicted, Fragment[] localExonsArray, int start, MutationsChangesContainer container, ConvertibleLinkedList[][] exonChange) { int r1 = 0; // Here we would like to know if disappearing exon // intersects with the existing annotation and we need // to pick the strongest one. // Here the exon disappears Fragment theStrongestDisappearingExon = null; for (int r2 = 1; exonsPredicted != null && r2 < exonsPredicted.length; r2++) { for (int i = 0; exonsPredicted[r1] != null && i < exonsPredicted[r1].length; i++) { boolean matchDetected = false; for (int j = 0; exonsPredicted[r2] != null && j < exonsPredicted[r2].length; j++) { if (exonsPredicted[r1][i].getStart() == exonsPredicted[r2][j].getStart() && exonsPredicted[r1][i].getEnd() == exonsPredicted[r2][j].getEnd()) { matchDetected = true; } } if (!matchDetected && exonsPredicted[r1][i].getScore() > MINIMUM_CHANGE_POSSIBLE) { exonChange[EXON_DISAPPEAR][r2 - 1].add(exonsPredicted[r1][i]); if (theStrongestDisappearingExon == null) { theStrongestDisappearingExon = exonsPredicted[r1][i]; } else if (exonsPredicted[r1][i].getScore() > theStrongestDisappearingExon.getScore()) { theStrongestDisappearingExon = exonsPredicted[r1][i]; } } } } // Post Process exon deletion if (theStrongestDisappearingExon != null) { System.out.println("\nThere is a change in annotated exon potential here:\n"); boolean token = false; int oldStart = theStrongestDisappearingExon.getStart() + start - 1; int oldEnd = theStrongestDisappearingExon.getEnd() + start - 1; for (int k = 0; localExonsArray != null && k < localExonsArray.length; k++) { // The annotated exon disappears if (theStrongestDisappearingExon.getStart() == localExonsArray[k].getStart() && theStrongestDisappearingExon.getEnd() == localExonsArray[k].getEnd()) { String queryLocation = null; BLATpredictedExon[] bpesL = container.getBPESs(); for (int r = 0; bpesL != null && r < bpesL.length; r++) { if (bpesL[r].getHitStart() == oldStart && bpesL[r].getHitEnd() == oldEnd) { queryLocation = " " + bpesL[r].getQuerySequenceName() + " " + bpesL[r].getQueryStart() + "-" + bpesL[r].getQueryEnd() + " "; } } System.out.println("Mutation " + container.getMutationDescription().split(" |:")[0] + " deletes the annotated exon " + queryLocation + " with the score " + theStrongestDisappearingExon.getScore()); token = true; } else if ((theStrongestDisappearingExon.getStart() != localExonsArray[k].getStart() && theStrongestDisappearingExon.getEnd() == localExonsArray[k].getEnd()) || (theStrongestDisappearingExon.getStart() == localExonsArray[k].getStart() && theStrongestDisappearingExon.getEnd() != localExonsArray[k].getEnd())) { String queryLocation = null; BLATpredictedExon[] bpesL = container.getBPESs(); for (int r = 0; bpesL != null && r < bpesL.length; r++) { if (bpesL[r].getHitStart() == oldStart || bpesL[r].getHitEnd() == oldEnd) { queryLocation = " " + bpesL[r].getQuerySequenceName() + " " + bpesL[r].getQueryStart() + "-" + bpesL[r].getQueryEnd() + " "; queryLocation += " " + oldStart + "-" + oldEnd; } } System.out.println("Mutation " + container.getMutationDescription().split(" |:")[0] + " deletes the exon sharing one boundary with annotated exon " + queryLocation + " with the score " + theStrongestDisappearingExon.getScore()); token = true; } } if (!token) { System.out.println("Mutation " + container.getMutationDescription().split(" |:")[0] + " causes the exon to disappear in " + container.getEBIid() + " " + oldStart + "-" + oldEnd + " where the score was " + theStrongestDisappearingExon.getScore()); } } } void detectIfCrypticExonIntersectsWithAnnotated(Fragment[][] exonsPredicted, Fragment[] localExonsArray, int start, MutationsChangesContainer container, ConvertibleLinkedList[][] exonChange) { int r1 = 0; Fragment theStrongestExonToAppear = null; for (int r2 = 1; exonsPredicted != null && r2 < exonsPredicted.length; r2++) { for (int j = 0; exonsPredicted[r2] != null && j < exonsPredicted[r2].length; j++) { boolean matchDetected = false; f