X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fstructures%2Fmodels%2FAAStructureBindingModel.java;h=b9dc58d0ad9e76b7ebf58270be8a52d2ad1fd8b2;hb=refs%2Fheads%2Fpatch%2FJAL-2694_maptoallchainsworkaround;hp=a3c4beb79af2b8a9250a211f15130312fa40a5e9;hpb=f4d531c14c933d33377556506adb70980fffda9e;p=jalview.git diff --git a/src/jalview/structures/models/AAStructureBindingModel.java b/src/jalview/structures/models/AAStructureBindingModel.java index a3c4beb..b9dc58d 100644 --- a/src/jalview/structures/models/AAStructureBindingModel.java +++ b/src/jalview/structures/models/AAStructureBindingModel.java @@ -72,9 +72,9 @@ public abstract class AAStructureBindingModel private SequenceI[][] sequence; /* - * array of target chains for sequences - tied to pdbentry and sequence[] + * array of list of target chains for sequences - tied to pdbentry and sequence[] */ - private String[][] chains; + private List[][] chains; /* * datasource protocol for access to PDBEntrylatest @@ -162,21 +162,30 @@ public abstract class AAStructureBindingModel * final count of chain mappings discovered */ int chainmaps = 0; - String[][] newchains = new String[pdbEntry.length][]; + // JBPNote: JAL-2693 - this should be a list of chain mappings per + // [pdbentry][sequence] + List[][] newchains = new List[pdbEntry.length][]; int pe = 0; for (PDBEntry pdb : pdbEntry) { SequenceI[] seqsForPdb = sequence[pe]; if (seqsForPdb != null) { - newchains[pe] = new String[seqsForPdb.length]; + newchains[pe] = new List[seqsForPdb.length]; int se = 0; for (SequenceI asq : seqsForPdb) { - String chain = (chains != null && chains[pe] != null) + List chain = (chains != null && chains[pe] != null) ? chains[pe][se] : null; - SequenceI sq = asq.getDatasetSequence(); + if (chain == null) + { + chain = new ArrayList<>(); + } + newchains[pe][se] = chain; + + SequenceI sq = (asq.getDatasetSequence() == null) ? asq + : asq.getDatasetSequence(); if (sq.getAllPDBEntries() != null) { for (PDBEntry pdbentry : sq.getAllPDBEntries()) @@ -187,14 +196,12 @@ public abstract class AAStructureBindingModel String chaincode = pdbentry.getChainCode(); if (chaincode != null && chaincode.length() > 0) { - chain = chaincode; + newchains[pe][se].add(chaincode); chainmaps++; - break; } } } } - newchains[pe][se] = chain; se++; } pe++; @@ -256,7 +263,7 @@ public abstract class AAStructureBindingModel return sequence; } - public String[][] getChains() + public List[][] getChains() { return chains; } @@ -277,7 +284,7 @@ public abstract class AAStructureBindingModel this.sequence = sequence; } - protected void setChains(String[][] chains) + protected void setChains(List[][] chains) { this.chains = chains; } @@ -351,12 +358,11 @@ public abstract class AAStructureBindingModel new Object[] { Integer.valueOf(pe).toString() })); } - final String nullChain = "TheNullChain"; - List s = new ArrayList(); - List c = new ArrayList(); + List s = new ArrayList<>(); + List> c = new ArrayList<>(); if (getChains() == null) { - setChains(new String[getPdbCount()][]); + setChains(new List[getPdbCount()][]); } if (getSequence()[pe] != null) { @@ -371,14 +377,14 @@ public abstract class AAStructureBindingModel } else { - c.add(nullChain); + c.add(new ArrayList()); } } else { if (tchain != null && tchain.length > 0) { - c.add(nullChain); + c.add(new ArrayList()); } } } @@ -390,7 +396,12 @@ public abstract class AAStructureBindingModel s.add(seq[i]); if (tchain != null && i < tchain.length) { - c.add(tchain[i] == null ? nullChain : tchain[i]); + List clist = new ArrayList(); + c.add(clist); + if (tchain[i] != null) + { + clist.add(tchain[i]); + } } } } @@ -398,14 +409,7 @@ public abstract class AAStructureBindingModel getSequence()[pe] = tmp; if (c.size() > 0) { - String[] tch = c.toArray(new String[c.size()]); - for (int i = 0; i < tch.length; i++) - { - if (tch[i] == nullChain) - { - tch[i] = null; - } - } + List[] tch = c.toArray(new List[c.size()]); getChains()[pe] = tch; } else @@ -422,8 +426,8 @@ public abstract class AAStructureBindingModel public synchronized PDBEntry[] addSequenceAndChain(PDBEntry[] pdbe, SequenceI[][] seq, String[][] chns) { - List v = new ArrayList(); - List rtn = new ArrayList(); + List v = new ArrayList<>(); + List rtn = new ArrayList<>(); for (int i = 0; i < getPdbCount(); i++) { v.add(getPdbEntry(i)); @@ -448,7 +452,7 @@ public abstract class AAStructureBindingModel { // expand the tied sequence[] and string[] arrays SequenceI[][] sqs = new SequenceI[getPdbCount()][]; - String[][] sch = new String[getPdbCount()][]; + List[][] sch = new List[getPdbCount()][]; System.arraycopy(getSequence(), 0, sqs, 0, getSequence().length); System.arraycopy(getChains(), 0, sch, 0, this.getChains().length); setSequence(sqs);