From: Jim Procter Date: Mon, 16 Nov 2015 17:36:20 +0000 (+0000) Subject: JAL-1950 group hits by architecture X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=053c5f25f135f0eeeb60acad625b246dc66e75fc;p=jalview.git JAL-1950 group hits by architecture --- diff --git a/src/jalview/ws/ebi/HmmerJSONProcessor.java b/src/jalview/ws/ebi/HmmerJSONProcessor.java index 0aee45f..d0f3c18 100644 --- a/src/jalview/ws/ebi/HmmerJSONProcessor.java +++ b/src/jalview/ws/ebi/HmmerJSONProcessor.java @@ -4,10 +4,13 @@ import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.Annotation; import jalview.datamodel.SequenceFeature; +import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.io.FileParse; import java.io.IOException; +import java.util.HashMap; +import java.util.Map; import org.json.simple.JSONArray; import org.json.simple.JSONObject; @@ -158,12 +161,13 @@ public class HmmerJSONProcessor hitseq.addAlignmentAnnotation(eval); alipp.createSequenceMapping(hitseq, hitseq.getStart(), false); hitseq.addAlignmentAnnotation(alipp); + String arch; hitseq.addSequenceFeature(new SequenceFeature( "Pfam Domain Architecture", (hmmrhit.get("archindex")) - + " " - + (String) hmmrhit.get("arch"), 0, 0, Integer - .valueOf((String) hmmrhit.get("archScore")), + + " " + (arch = (String) hmmrhit.get("arch")), 0, + 0, Integer.valueOf((String) hmmrhit.get("archScore")), "HMMER3")); + addArchGroup(hitseq, arch); alipp.setScore(Double.valueOf("" + dhit.get("bitscore"))); alipp.adjustForAlignment(); resultAl.addAnnotation(pval); @@ -182,6 +186,28 @@ public class HmmerJSONProcessor System.err.println("Warn - multiple matches for json hit " + sname + "/" + alisqfrom + "-" + alisqto); } + // look for other sequences represented by this hit and create + } + } + + Map groups = new HashMap(); + + private void addArchGroup(SequenceI seqToAdd, String groupNam) + { + SequenceGroup sg = groups.get(groupNam); + if (sg == null) + { + sg = new SequenceGroup(); + sg.setName(groupNam); + sg.addSequence(seqToAdd, false); + sg.setStartRes(0); + sg.setEndRes(resultAl.getWidth() - 1); + groups.put(groupNam, sg); + resultAl.addGroup(sg); + } + else + { + sg.addSequence(seqToAdd, false); } }