X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2FMCview%2FPDBfile.java;h=302f3b22e9bafc1fa3b9958c237dc4b757d64088;hb=7ab5d6b0ba5fec1ea4a4239e79c476d841622485;hp=4fc88141cff64812809c1c38911fb422a269d79a;hpb=1889827c44c51f6353fe8619e5d44b421158af23;p=jalview.git diff --git a/src/MCview/PDBfile.java b/src/MCview/PDBfile.java index 4fc8814..302f3b2 100755 --- a/src/MCview/PDBfile.java +++ b/src/MCview/PDBfile.java @@ -61,7 +61,7 @@ public class PDBfile extends jalview.io.AlignFile id = safeName(getDataName()); chains = new Vector(); - ArrayList rna=new ArrayList(), prot=new ArrayList(); + ArrayList rna = new ArrayList(), prot = new ArrayList(); PDBChain tmpchain; String line = null; boolean modelFlag = false; @@ -161,8 +161,10 @@ public class PDBfile extends jalview.io.AlignFile PDBEntry entry = new PDBEntry(); entry.setId(id); entry.setProperty(new Hashtable()); - if (((PDBChain)chains.elementAt(i)).id!=null) { - entry.getProperty().put("CHAIN", ((PDBChain)chains.elementAt(i)).id); + if (((PDBChain) chains.elementAt(i)).id != null) + { + entry.getProperty().put("CHAIN", + ((PDBChain) chains.elementAt(i)).id); } if (inFile != null) { @@ -178,52 +180,63 @@ public class PDBfile extends jalview.io.AlignFile // maintain reference to // dataset seqs.addElement(chainseq); - if(isRNA(chainseq)==true) - { - rna.add(chainseq); - } else { - prot.add(chainseq); - } - + if (isRNA(chainseq) == true) + { + rna.add(chainseq); + } + else + { + prot.add(chainseq); + } + AlignmentAnnotation[] chainannot = chainseq.getAnnotation(); - + if (chainannot != null) { for (int ai = 0; ai < chainannot.length; ai++) { - + chainannot[ai].visible = VisibleChainAnnotation; annotations.addElement(chainannot[ai]); } } } - if (rna.size()>0) - try { - processPdbFileWithAnnotate3d(rna); - } catch (Exception x) - { - System.err.println("Exceptions when dealing with RNA in pdb file"); - x.printStackTrace(); - - }; - if (prot.size()>0) - try { - processPdbFileWithJmol(prot); - } catch (Exception x) - { - System.err.println("Exceptions when dealing with RNA in pdb file"); - x.printStackTrace(); - - }; - if (prot.size()>0) - try { - processPdbFileWithJmol(prot); - } catch (Exception x) - { - System.err.println("Exceptions when dealing with RNA in pdb file"); - x.printStackTrace(); - - }; + if (rna.size() > 0) + try + { + processPdbFileWithAnnotate3d(rna); + } catch (Exception x) + { + System.err + .println("Exceptions when dealing with RNA in pdb file"); + x.printStackTrace(); + + } + ; + if (prot.size() > 0) + try + { + processPdbFileWithJmol(prot); + } catch (Exception x) + { + System.err + .println("Exceptions when dealing with RNA in pdb file"); + x.printStackTrace(); + + } + ; + if (prot.size() > 0) + try + { + processPdbFileWithJmol(prot); + } catch (Exception x) + { + System.err + .println("Exceptions when dealing with RNA in pdb file"); + x.printStackTrace(); + + } + ; } catch (OutOfMemoryError er) { System.out.println("OUT OF MEMORY LOADING PDB FILE"); @@ -237,94 +250,125 @@ public class PDBfile extends jalview.io.AlignFile } } } - private void processPdbFileWithJmol(ArrayList prot) throws Exception + + private void processPdbFileWithJmol(ArrayList prot) + throws Exception { - try { + try + { Class cl = Class.forName("jalview.ext.jmol.PDBFileWithJmol"); - if (cl!=null) + if (cl != null) { - Object jmf = cl.getConstructor(new Class[] {FileParse.class}).newInstance(new Object[] {new FileParse(getDataName(),type)}); - Alignment al = new Alignment((SequenceI[]) cl.getMethod("getSeqsAsArray", new Class[] {}).invoke(jmf)); - cl.getMethod("addAnnotations",new Class[] {Alignment.class}).invoke(jmf, al); + Object jmf = cl.getConstructor(new Class[] + { FileParse.class }).newInstance(new Object[] + { new FileParse(getDataName(), type) }); + Alignment al = new Alignment((SequenceI[]) cl.getMethod( + "getSeqsAsArray", new Class[] + {}).invoke(jmf)); + cl.getMethod("addAnnotations", new Class[] + { Alignment.class }).invoke(jmf, al); replaceMatchingSeqsWith(prot, al, AlignSeq.PEP); } } catch (ClassNotFoundException q) - {} - } - private void processPdbFileWithAnnotate3d(ArrayList rna) throws Exception { -// System.out.println("this is a PDB format and RNA sequence"); - // note: we use reflection here so that the applet can compile and run without the HTTPClient bits and pieces needed for accessing Annotate3D web service - try { - Class cl = Class.forName("jalview.ws.jws1.Annotate3D"); - if (cl!=null) { - // TODO: use the PDB ID of the structure if one is available, to save bandwidth and avoid uploading the whole structure to the service - Object annotate3d = cl.getConstructor(new Class[] {}).newInstance(new Object[] {}); - AlignmentI al = ((AlignmentI) cl.getMethod("getRNAMLFor", new Class[] { FileParse.class}).invoke(annotate3d, new Object[] { new FileParse(getDataName(),type)})); - replaceMatchingSeqsWith(rna, al, AlignSeq.DNA); } + } + + private void processPdbFileWithAnnotate3d(ArrayList rna) + throws Exception + { + // System.out.println("this is a PDB format and RNA sequence"); + // note: we use reflection here so that the applet can compile and run + // without the HTTPClient bits and pieces needed for accessing Annotate3D + // web service + try + { + Class cl = Class.forName("jalview.ws.jws1.Annotate3D"); + if (cl != null) + { + // TODO: use the PDB ID of the structure if one is available, to save + // bandwidth and avoid uploading the whole structure to the service + Object annotate3d = cl.getConstructor(new Class[] + {}).newInstance(new Object[] + {}); + AlignmentI al = ((AlignmentI) cl.getMethod("getRNAMLFor", + new Class[] + { FileParse.class }).invoke(annotate3d, new Object[] + { new FileParse(getDataName(), type) })); + replaceMatchingSeqsWith(rna, al, AlignSeq.DNA); + } } catch (ClassNotFoundException x) { - //ignore classnotfounds - occurs in applet - }; + // ignore classnotfounds - occurs in applet + } + ; } - private void replaceMatchingSeqsWith(ArrayList ochains, AlignmentI al, String dnaOrProtein) + + private void replaceMatchingSeqsWith(ArrayList ochains, + AlignmentI al, String dnaOrProtein) { - if (al!=null && al.getHeight()>0) + if (al != null && al.getHeight() > 0) { - ArrayList matches=new ArrayList(); - ArrayList aligns=new ArrayList(); - - for (SequenceI sq:ochains) + ArrayList matches = new ArrayList(); + ArrayList aligns = new ArrayList(); + + for (SequenceI sq : ochains) { - SequenceI bestm=null; - AlignSeq bestaseq=null; - int bestscore=0; - for (SequenceI msq:al.getSequences()) + SequenceI bestm = null; + AlignSeq bestaseq = null; + int bestscore = 0; + for (SequenceI msq : al.getSequences()) { - AlignSeq aseq = AlignSeq.doGlobalNWAlignment(msq, sq, dnaOrProtein); - if (bestm==null || aseq.getMaxScore()>bestscore) + AlignSeq aseq = AlignSeq.doGlobalNWAlignment(msq, sq, + dnaOrProtein); + if (bestm == null || aseq.getMaxScore() > bestscore) { - bestscore=aseq.getMaxScore(); - bestaseq= aseq; - bestm=msq; + bestscore = aseq.getMaxScore(); + bestaseq = aseq; + bestm = msq; } } - System.out.println("Best Score for "+(matches.size()+1)+" :"+bestscore); + System.out.println("Best Score for " + (matches.size() + 1) + " :" + + bestscore); matches.add(bestm); aligns.add(bestaseq); al.deleteSequence(bestm); } - for (int p=0,pSize=seqs.size();p-1) + if ((q = ochains.indexOf(sp)) > -1) { - seqs.set(p, sq=matches.get(q)); + seqs.set(p, sq = matches.get(q)); sq.setName(sp.getName()); sq.setDescription(sp.getDescription()); sq.transferAnnotation(sp, aligns.get(q).getMappingFromS1(false)); - int inspos=-1; - for (int ap=0;ap