X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FCommands.java;h=7a6e3ac9b2cea03c1fe157bfb64143b0620a9c04;hb=7057bdc72cbd324a4316f445118b509db4880499;hp=0c34a164c540ae9393511749c2fbc1282379bd4c;hpb=d1acebdf5841982b3825f95d7c9ea09a48f586ad;p=jalview.git diff --git a/src/jalview/bin/Commands.java b/src/jalview/bin/Commands.java index 0c34a16..7a6e3ac 100644 --- a/src/jalview/bin/Commands.java +++ b/src/jalview/bin/Commands.java @@ -1,6 +1,7 @@ package jalview.bin; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -13,8 +14,9 @@ import java.util.Map; import jalview.analysis.AlignmentUtils; import jalview.api.AlignmentViewPanel; import jalview.bin.ArgParser.Arg; -import jalview.bin.ArgParser.ArgValues; -import jalview.bin.ArgParser.SubVal; +import jalview.bin.ArgParser.ArgValue; +import jalview.bin.ArgParser.ArgValuesMap; +import jalview.bin.ArgParser.SubVals; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.SequenceI; @@ -30,6 +32,7 @@ import jalview.io.FileFormatI; import jalview.io.FileLoader; import jalview.io.HtmlSvgOutput; import jalview.io.IdentifyFile; +import jalview.schemes.AnnotationColourGradient; import jalview.structure.StructureImportSettings; import jalview.structure.StructureImportSettings.TFType; import jalview.structure.StructureSelectionManager; @@ -37,6 +40,7 @@ import jalview.util.HttpUtils; import jalview.util.MessageManager; import jalview.util.Platform; import jalview.ws.dbsources.EBIAlfaFold; +import mc_view.PDBChain; public class Commands { @@ -62,7 +66,6 @@ public class Commands { for (String id : argParser.linkedIds()) { - Console.debug("##### id=" + id); Commands cmds = new Commands(); if (id == null) { @@ -106,14 +109,14 @@ public class Commands protected void processUnlinked(String id) { - Map m = argParser.linkedArgs(id); + ArgValuesMap avm = new ArgValuesMap(argParser.linkedArgs(id)); processLinked(id); } protected void processLinked(String id) { - Map m = argParser.linkedArgs(id); + ArgValuesMap avm = new ArgValuesMap(argParser.linkedArgs(id)); /* // script to execute after all loading is completed one way or another @@ -125,14 +128,15 @@ public class Commands FileFormatI format = null; DataSourceType protocol = null; */ - if (ArgParser.getArgValues(m, Arg.OPEN) != null) + if (avm.hasValue(Arg.OPEN)) { long progress = -1; boolean first = true; AlignFrame af; - for (String openFile : ArgParser.getValues(m, Arg.OPEN)) + for (ArgValue av : avm.getArgValueList(Arg.OPEN)) { + String openFile = av.getValue(); if (openFile == null) continue; @@ -212,13 +216,13 @@ public class Commands // get kind of temperature factor annotation StructureImportSettings.TFType tempfacType = TFType.DEFAULT; - if ((!ArgParser.getBoolean(m, Arg.NOTEMPFAC)) - && ArgParser.getArgValues(m, Arg.TEMPFAC) != null) + if ((!avm.getBoolean(Arg.NOTEMPFAC)) && avm.hasValue(Arg.TEMPFAC)) { try { - tempfacType = StructureImportSettings.TFType.valueOf(ArgParser - .getValue(m, Arg.TEMPFAC).toUpperCase(Locale.ROOT)); + tempfacType = StructureImportSettings.TFType + .valueOf(avm.getArgValue(Arg.TEMPFAC).getValue() + .toUpperCase(Locale.ROOT)); Console.debug("Obtained Temperature Factor type of '" + tempfacType + "'"); } catch (IllegalArgumentException e) @@ -251,18 +255,24 @@ public class Commands format); // wrap alignment? - if (ArgParser.getBoolean(m, Arg.WRAP)) + if (avm.getBoolean(Arg.WRAP)) { af.getCurrentView().setWrapAlignment(true); } + // colour aligment? + if (avm.hasValue(Arg.COLOUR)) + { + af.changeColour_actionPerformed(avm.getValue(Arg.COLOUR)); + } + // change alignment frame title - if (ArgParser.getValue(m, Arg.TITLE) != null) - af.setTitle(ArgParser.getValue(m, Arg.TITLE)); + if (avm.hasValue(Arg.TITLE)) + af.setTitle(avm.getValue(Arg.TITLE)); /* hacky approach to hiding the annotations */ // show secondary structure annotations? - if (ArgParser.getBoolean(m, Arg.SSANNOTATION)) + if (avm.getBoolean(Arg.SSANNOTATION)) { // do this better (annotation types?) AlignmentUtils.showOrHideSequenceAnnotations( @@ -272,7 +282,7 @@ public class Commands } // show temperature factor annotations? - if (ArgParser.getBoolean(m, Arg.NOTEMPFAC)) + if (avm.getBoolean(Arg.NOTEMPFAC)) { // do this better (annotation types?) List hideThese = new ArrayList<>(); @@ -287,13 +297,13 @@ public class Commands if (showTemperatureFactor) */ { - if (ArgParser.getValue(m, Arg.TEMPFAC_LABEL) != null) + if (avm.hasValue(Arg.TEMPFAC_LABEL)) { AlignmentAnnotation aa = AlignmentUtils .getFirstSequenceAnnotationOfType( af.getCurrentView().getAlignment(), AlignmentAnnotation.LINE_GRAPH); - String label = ArgParser.getValue(m, Arg.TEMPFAC_LABEL); + String label = avm.getValue(Arg.TEMPFAC_LABEL); if (aa != null) { aa.label = label; @@ -327,8 +337,7 @@ public class Commands af.getCurrentView().addFile(new File(openFile), format); } - System.out - .println("Command " + Arg.OPEN + " executed successfully!"); + Console.debug("Command " + Arg.OPEN + " executed successfully!"); } if (first) // first=true means nothing opened @@ -338,9 +347,6 @@ public class Commands Console.error("Could not open any files in headless mode"); System.exit(1); } - // TOREMOVE COMMENT - // @Ben assumed this was the GUI version of above, rather then the - // first==false state else { Console.warn("No more files to open"); @@ -351,62 +357,16 @@ public class Commands } - // load a pAE file if given - if (ArgParser.getValues(m, Arg.PAEMATRIX) != null) - { - AlignFrame af = afMap.get(id); - if (af != null) - { - for (String val : ArgParser.getValues(m, Arg.PAEMATRIX)) - { - SubVal subVal = ArgParser.getSubVal(val); - File paeFile = new File(subVal.content); - String structId = "structid".equals(subVal.keyName) - ? subVal.keyValue - : null; - if (subVal.notSet()) - { - // take structid from pdbfilename - } - if ("structfile".equals(subVal.keyName)) - { - EBIAlfaFold.addAlphaFoldPAEToStructure( - af.getCurrentView().getAlignment(), paeFile, - subVal.index, subVal.keyValue, false); - } - else if ("structid".equals(subVal.keyName)) - { - EBIAlfaFold.addAlphaFoldPAEToStructure( - af.getCurrentView().getAlignment(), paeFile, - subVal.index, subVal.keyValue, true); - } - else - { - EBIAlfaFold.addAlphaFoldPAEToSequence( - af.getCurrentView().getAlignment(), paeFile, - subVal.index, - "seqid".equals(subVal.keyName) ? subVal.keyValue - : null); - // required to readjust the height and position of the pAE - // annotation - } - for (AlignmentViewPanel ap : af.getAlignPanels()) - { - ap.adjustAnnotationHeight(); - } - } - } - } - // open the structure (from same PDB file or given PDBfile) - if (!ArgParser.getBoolean(m, Arg.NOSTRUCTURE)) + if (!avm.getBoolean(Arg.NOSTRUCTURE)) { AlignFrame af = afMap.get(id); - if (ArgParser.getArgValues(m, Arg.STRUCTURE) != null) + if (avm.hasValue(Arg.STRUCTURE)) { - for (String val : ArgParser.getValues(m, Arg.STRUCTURE)) + for (ArgValue av : avm.getArgValueList(Arg.STRUCTURE)) { - SubVal subId = new SubVal(val); + String val = av.getValue(); + SubVals subId = new SubVals(val); SequenceI seq = getSpecifiedSequence(af, subId); if (seq == null) { @@ -417,9 +377,10 @@ public class Commands continue; } File structureFile = null; - if (subId.content != null && subId.content.length() != 0) + if (subId.getContent() != null + && subId.getContent().length() != 0) { - structureFile = new File(subId.content); + structureFile = new File(subId.getContent()); Console.debug("Using structure file (from argument) '" + structureFile.getAbsolutePath() + "'"); } @@ -456,11 +417,86 @@ public class Commands } } } + + // load a pAE file if given + if (avm.hasValue(Arg.PAEMATRIX)) + { + AlignFrame af = afMap.get(id); + if (af != null) + { + for (ArgValue av : avm.getArgValueList(Arg.PAEMATRIX)) + { + String val = av.getValue(); + SubVals subVals = ArgParser.getSubVals(val); + File paeFile = new File(subVals.getContent()); + String paePath = null; + try + { + paePath = paeFile.getCanonicalPath(); + } catch (IOException e) + { + paePath = paeFile.getAbsolutePath(); + Console.warn( + "Problem with the PAE file path: '" + paePath + "'"); + } + String structId = subVals.get("structid"); + if (subVals.notSet()) + { + // take structid from pdbfilename + } + if (subVals.has("structfile")) + { + Console.info("***** Attaching paeFile '" + paePath + "' to " + + "structfile=" + subVals.get("structfile")); + EBIAlfaFold.addAlphaFoldPAEToStructure( + af.getCurrentView().getAlignment(), paeFile, + subVals.getIndex(), subVals.get("structfile"), false); + } + else if (subVals.has("structid")) + { + Console.info("***** Attaching paeFile '" + paePath + "' to " + + "structid=" + subVals.get("structid")); + EBIAlfaFold.addAlphaFoldPAEToStructure( + af.getCurrentView().getAlignment(), paeFile, + subVals.getIndex(), subVals.get("structid"), true); + } + else + { + Console.debug("***** Attaching paeFile '" + paePath + + "' to sequence index " + subVals.getIndex()); + EBIAlfaFold.addAlphaFoldPAEToSequence( + af.getCurrentView().getAlignment(), paeFile, + subVals.getIndex(), null); + // required to readjust the height and position of the pAE + // annotation + } + for (AlignmentViewPanel ap : af.getAlignPanels()) + { + ap.adjustAnnotationHeight(); + } + } + } + } + + boolean doShading = avm.getBoolean(Arg.TEMPFAC_SHADING); + if (doShading) + { + AlignFrame af = afMap.get(id); + for (AlignmentAnnotation aa : af.alignPanel.getAlignment() + .findAnnotation(PDBChain.class.getName().toString())) + { + AnnotationColourGradient acg = new AnnotationColourGradient(aa, + af.alignPanel.av.getGlobalColourScheme(), 0); + acg.setSeqAssociated(true); + af.changeColour(acg); + Console.info("Changed colour " + acg.toString()); + } + } } protected void processImages(String id) { - Map m = argParser.linkedArgs(id); + ArgValuesMap avm = new ArgValuesMap(argParser.linkedArgs(id)); AlignFrame af = afMap.get(id); if (af == null) @@ -469,17 +505,18 @@ public class Commands return; } - if (ArgParser.getValues(m, Arg.IMAGE) != null) + if (avm.hasValue(Arg.IMAGE)) { - for (String val : ArgParser.getValues(m, Arg.IMAGE)) + for (ArgValue av : avm.getArgValueList(Arg.IMAGE)) { - SubVal subVal = new SubVal(val); + String val = av.getValue(); + SubVals subVal = new SubVals(val); String type = "png"; // default - String fileName = subVal.content; + String fileName = subVal.getContent(); File file = new File(fileName); - if ("type".equals(subVal.keyName)) + if (subVal.has("type")) { - type = subVal.keyValue; + type = subVal.get("type"); } else if (fileName != null) { @@ -518,16 +555,17 @@ public class Commands } } - private SequenceI getSpecifiedSequence(AlignFrame af, SubVal subId) + private SequenceI getSpecifiedSequence(AlignFrame af, SubVals subId) { AlignmentI al = af.getCurrentView().getAlignment(); - if (-1 < subId.index && subId.index < al.getSequences().size()) + if (-1 < subId.getIndex() + && subId.getIndex() < al.getSequences().size()) { - return al.getSequenceAt(subId.index); + return al.getSequenceAt(subId.getIndex()); } - else if ("id".equals(subId.keyName)) + else if (subId.has("seqid")) { - return al.findName(subId.keyValue); + return al.findName(subId.get("seqid")); } return null; }