X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FAnnotationFile.java;h=8e1730a2da8facb93aa2f252e9e50343c4cba6e7;hb=897d2c5ca66efd356f45d6357aa90fc2433f7fc2;hp=b72184bf6f26cebdff01e05bea07d443cb13e122;hpb=f71fdb6f83dfeeb61d6843553879f7d562ea405d;p=jalview.git diff --git a/src/jalview/io/AnnotationFile.java b/src/jalview/io/AnnotationFile.java index b72184b..8e1730a 100755 --- a/src/jalview/io/AnnotationFile.java +++ b/src/jalview/io/AnnotationFile.java @@ -56,6 +56,28 @@ import java.util.Vector; public class AnnotationFile { + StringBuffer text; + + SequenceI refSeq = null; + + String refSeqId = null; + + String[] StructModelHeader = null; + + long nlinesread = 0; + + String lastread = ""; + + /** + * used for resolving absolute references to resources relative to + * annotationFile location + */ + String baseUri = ""; + + private static String GRAPHLINE = "GRAPHLINE", COMBINE = "COMBINE", + STRUCTMODEL = "STRUCTMODEL", + HEADER_STRUCT_MODEL = "HEADER_STRUCT_MODEL"; + public AnnotationFile() { init(); @@ -82,7 +104,6 @@ public class AnnotationFile return newline; } - StringBuffer text; private void init() { @@ -661,9 +682,6 @@ public class AnnotationFile } } - SequenceI refSeq = null; - - String refSeqId = null; public boolean annotateAlignmentView(AlignViewportI viewport, String file, DataSourceType protocol) @@ -757,18 +775,6 @@ public class AnnotationFile return false; } - long nlinesread = 0; - - String lastread = ""; - - /** - * used for resolving absolute references to resources relative to - * annotationFile location - */ - String baseUri = ""; - - private static String GRAPHLINE = "GRAPHLINE", COMBINE = "COMBINE", - STRUCTMODEL = "STRUCTMODEL"; public boolean parseAnnotationFrom(AlignmentI al, ColumnSelection colSel, BufferedReader in) throws Exception @@ -962,12 +968,6 @@ public class AnnotationFile modified = true; continue; } - // else if (token.equalsIgnoreCase("VIEW_DEF")) - // { - // addOrSetView(al,st); - // modified = true; - // continue; - // } else if (token.equalsIgnoreCase("VIEW_SETREF")) { if (refSeq != null) @@ -1014,13 +1014,21 @@ public class AnnotationFile modified = true; continue; } + else if (token.equalsIgnoreCase(HEADER_STRUCT_MODEL)) + { + int hSize = st.countTokens(); + StructModelHeader = new String[hSize]; + for (int x = 0; x < hSize; x++) + { + StructModelHeader[x] = st.nextToken(); + } + continue; + } else if (token.equalsIgnoreCase(STRUCTMODEL)) { boolean failedtoadd = true; - // expect - // STRUCTMODEL - // <%.I.D> - // [] + // expects STRUCTMODEL + // String querySeqId = !st.hasMoreTokens() ? "" : st.nextToken(); SequenceI querySeq = al.findName(querySeqId); if (st.hasMoreTokens()) { @@ -1033,19 +1041,16 @@ public class AnnotationFile } else { - String tempId = st.nextToken(); - String fastaMapping = st.nextToken(); - String confidence = !st.hasMoreTokens() ? "" : 100 - * Double.valueOf(st.nextToken()) + ""; - String pid = !st.hasMoreTokens() ? "" : st.nextToken(); - String alignRange = !st.hasMoreTokens() ? "" : st.nextToken() - + "-" + st.nextToken(); - String otherInfo = !st.hasMoreTokens() ? "" : st.nextToken(); - String coverage = ""; - if (add_structmodel(al, querySeq, refSeq, tempId, - fastaMapping, - alignRange, coverage, - confidence, pid, otherInfo)) + int tSize = st.countTokens() + 2; + String[] rowData = new String[tSize]; + rowData[0] = querySeqId; + rowData[1] = refSeqId; + for (int x = 2; x < tSize; x++) + { + rowData[x] = st.nextToken(); + } + if (processStructModel(al, querySeq, refSeq, + StructModelHeader, rowData, baseUri)) { failedtoadd = false; } @@ -1054,9 +1059,8 @@ public class AnnotationFile if (failedtoadd) { System.err - .println("Need <%.I.D> [] as tab separated fields after" - + STRUCTMODEL - + ".\nNote: other information could be provided in html format "); + .println("Need minimum of as tab separated fields after" + + STRUCTMODEL); } else { modified = true; } @@ -1262,33 +1266,36 @@ public class AnnotationFile } /** - * resolve a structural model and generate and add an alignment sequence for - * it + * Resolve structural model to a reference sequence and register it to + * StructureSelectionManager * - * @param refSeq2 - * @param tempId - * @param urlToModel - * @param urlToPairwise + * @param al + * @param querySequence + * @param templateSeq + * @param structModelHeader + * @param structModelData * @return true if model and sequence was added */ - private boolean add_structmodel(AlignmentI al, SequenceI querySequence, + static boolean processStructModel(AlignmentI al, SequenceI querySequence, SequenceI templateSeq, - String modelFile, String fastaFile, String aRange, - String coverage, String confidence, - String pid, String otherInfo) + String[] structModelHeader, + String[] structModelData, String baseUri) { String warningMessage = null; boolean added = false; try { - String structureModelFile = resolveAbsolute(modelFile); - String fastaMappingFile = resolveAbsolute(fastaFile.replaceAll( - ".fasta.jal", ".fasta")); + String structureModelFile = resolveAbsolutePath(structModelData[2], + baseUri); + String fastaMappingFile = resolveAbsolutePath(structModelData[3], + baseUri); // System.out.println("Model File >> " + structureModelFile); // System.out.println("Fasta File >> " + fastaMappingFile); - PDBEntry phyre2PDBEntry = new PDBEntry(modelFile, null, Type.FILE, + String modelName = StructureFile.safeName(structureModelFile); + PDBEntry phyre2PDBEntry = new PDBEntry(modelName, " ", + Type.PDB, structureModelFile); - String phyre2ModelDesc = generatePhyre2InfoHTMLTable(aRange, - coverage, confidence, pid, otherInfo); + String phyre2ModelDesc = generatePhyre2InfoHTMLTable( + structModelHeader, structModelData); phyre2PDBEntry.setProperty("PHYRE2_MODEL_INFO", phyre2ModelDesc); templateSeq.getDatasetSequence().addPDBId(phyre2PDBEntry); if (querySequence != null) @@ -1312,50 +1319,47 @@ public class AnnotationFile return added; } - private String generatePhyre2InfoHTMLTable(String aRange, - String coverage, String confidence, String pid, String otherInfo) + static String generatePhyre2InfoHTMLTable(String[] structModelHeader, + String[] structModelData) { StringBuilder phyre2InfoBuilder = new StringBuilder(); - phyre2InfoBuilder.append(""); - phyre2InfoBuilder - .append(""); - if (aRange != null && !aRange.isEmpty()) - { - phyre2InfoBuilder.append(""); - } - if (coverage != null && !coverage.isEmpty()) + if (isGenerateStructInfoHtml(structModelHeader, structModelData)) { - phyre2InfoBuilder.append(""); - } - if (confidence != null && !confidence.isEmpty()) - { - phyre2InfoBuilder.append(""); + phyre2InfoBuilder.append("
Phyre2 Template Info
").append("Aligned range") - .append("").append(aRange).append("
").append("Coverage") - .append("").append(coverage).append("
").append("Confidence") - .append("").append(confidence).append("
") + .append(""); + for (int x = 4; x < structModelData.length; x++) + { + phyre2InfoBuilder.append(""); + } + phyre2InfoBuilder.append("
Phyre2 Template Info
").append(structModelHeader[x]) + .append("").append(structModelData[x]) + .append("
"); } - if (pid != null && !pid.isEmpty()) + return phyre2InfoBuilder.toString(); + } + + static boolean isGenerateStructInfoHtml(String[] header, String[] data) + { + boolean generate = true; + if (header == null || data == null) { - phyre2InfoBuilder.append("").append("%.i.d") - .append("").append(pid).append(""); + return false; } - if (otherInfo != null && !otherInfo.isEmpty()) + if (header.length < 3 || data.length < 3) { - phyre2InfoBuilder.append("").append("Other information") - .append("").append(otherInfo).append(""); + generate = false; } - phyre2InfoBuilder.append(""); - return phyre2InfoBuilder.toString(); + return generate; } - private String resolveAbsolute(String relURI) + static String resolveAbsolutePath(String relURI, String _baseUri) { if (relURI.indexOf(":/") > -1 || relURI.startsWith("/") - || "".equals(baseUri) || relURI.startsWith(baseUri)) + || "".equals(_baseUri) || relURI.startsWith(_baseUri)) { return relURI; } - return baseUri + relURI; + return _baseUri + relURI; } private void parseHideCols(ColumnSelection colSel, String nextToken)