X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FCrossRef.java;h=6c63f1c009a3078751f15f09ec02c9995f761e21;hb=b57a02c25e335d033c97f8a6bacd6b54f62bd2b6;hp=94aa5c9f6c4b663c07f2f59f469fe6b87f68ad39;hpb=f52f7b378972cc884b5d3e5cc250f89667f558f7;p=jalview.git diff --git a/src/jalview/analysis/CrossRef.java b/src/jalview/analysis/CrossRef.java index 94aa5c9..6c63f1c 100644 --- a/src/jalview/analysis/CrossRef.java +++ b/src/jalview/analysis/CrossRef.java @@ -35,15 +35,15 @@ import jalview.ws.seqfetcher.ASequenceFetcher; /** * Functions for cross-referencing sequence databases. user must first specify * if cross-referencing from protein or dna (set dna==true) - * + * * @author JimP - * + * */ public class CrossRef { /** * get the DNA or protein references for a protein or dna sequence - * + * * @param dna * @param rfs * @return @@ -91,7 +91,7 @@ public class CrossRef /** * Indirect references are references from other sequences from the dataset to * any of the direct DBRefEntrys on the given sequences. - * + * * @param dna * true if seqs are DNA seqs * @param seqs @@ -202,7 +202,7 @@ public class CrossRef } /** - * + * * @param dna * @param seqs * @return @@ -214,7 +214,7 @@ public class CrossRef } /** - * + * * @param seqs * @param dna * @param source @@ -416,7 +416,7 @@ public class CrossRef * find references to lrfs in the cross-reference set of each sequence in * dataset (that is not equal to sequenceI) Identifies matching DBRefEntry * based on source and accession string only - Map and Version are nulled. - * + * * @param sequenceI * @param lrfs * @param dataset @@ -444,7 +444,7 @@ public class CrossRef /** * search a given sequence dataset for references matching cross-references to * the given sequence - * + * * @param sequenceI * @param xrf * @param dataset @@ -463,7 +463,7 @@ public class CrossRef * TODO: generalise to different protein classifications Search dataset for * DBRefEntrys matching the given one (xrf) and add the associated sequence to * rseq. - * + * * @param sequenceI * @param xrf * @param dataset @@ -488,78 +488,81 @@ public class CrossRef return false; } List ds; - synchronized (ds=dataset.getSequences()) + synchronized (ds = dataset.getSequences()) { - for (SequenceI nxt:ds) - if (nxt != null) - { - if (nxt.getDatasetSequence() != null) - { - System.err - .println("Implementation warning: getProducts passed a dataset alignment without dataset sequences in it!"); - } - if (nxt != sequenceI && nxt != sequenceI.getDatasetSequence()) + for (SequenceI nxt : ds) + if (nxt != null) { - // check if this is the correct sequence type + if (nxt.getDatasetSequence() != null) + { + System.err + .println("Implementation warning: getProducts passed a dataset alignment without dataset sequences in it!"); + } + if (nxt != sequenceI && nxt != sequenceI.getDatasetSequence()) { - typer[0] = nxt; - boolean isDna = jalview.util.Comparison.isNucleotide(typer); - if ((direct && isDna == dna) || (!direct && isDna != dna)) + // check if this is the correct sequence type { - // skip this sequence because it is same molecule type - continue; + typer[0] = nxt; + boolean isDna = jalview.util.Comparison.isNucleotide(typer); + if ((direct && isDna == dna) || (!direct && isDna != dna)) + { + // skip this sequence because it is same molecule type + continue; + } } - } - // look for direct or indirect references in common - DBRefEntry[] poss = nxt.getDBRef(), cands = null; - if (direct) - { - cands = jalview.util.DBRefUtils.searchRefs(poss, xrf); - } - else - { - poss = CrossRef.findXDbRefs(dna, poss); // - cands = jalview.util.DBRefUtils.searchRefs(poss, xrf); - } - if (cands != null) - { - if (!rseqs.contains(nxt)) + // look for direct or indirect references in common + DBRefEntry[] poss = nxt.getDBRef(), cands = null; + if (direct) + { + cands = jalview.util.DBRefUtils.searchRefs(poss, xrf); + } + else { - rseqs.addElement(nxt); - boolean foundmap = cf != null; // don't search if we aren't given - // a codon map object - for (int r = 0; foundmap && r < cands.length; r++) + poss = CrossRef.findXDbRefs(dna, poss); // + cands = jalview.util.DBRefUtils.searchRefs(poss, xrf); + } + if (cands != null) + { + if (!rseqs.contains(nxt)) { - if (cands[r].hasMap()) + rseqs.addElement(nxt); + boolean foundmap = cf != null; // don't search if we aren't + // given + // a codon map object + for (int r = 0; foundmap && r < cands.length; r++) { - if (cands[r].getMap().getTo() != null - && cands[r].getMap().getMap().getFromRatio() != cands[r] - .getMap().getMap().getToRatio()) + if (cands[r].hasMap()) { - foundmap = true; - // get sense of map correct for adding to product alignment. - if (dna) - { - // map is from dna seq to a protein product - cf.addMap(sequenceI, nxt, cands[r].getMap().getMap()); - } - else + if (cands[r].getMap().getTo() != null + && cands[r].getMap().getMap().getFromRatio() != cands[r] + .getMap().getMap().getToRatio()) { - // map should be from protein seq to its coding dna - cf.addMap(nxt, sequenceI, cands[r].getMap().getMap() - .getInverse()); + foundmap = true; + // get sense of map correct for adding to product + // alignment. + if (dna) + { + // map is from dna seq to a protein product + cf.addMap(sequenceI, nxt, cands[r].getMap() + .getMap()); + } + else + { + // map should be from protein seq to its coding dna + cf.addMap(nxt, sequenceI, cands[r].getMap() + .getMap().getInverse()); + } } } } + // TODO: add mapping between sequences if necessary + found = true; } - // TODO: add mapping between sequences if necessary - found = true; } - } + } } - } } return found; } @@ -567,7 +570,7 @@ public class CrossRef /** * precalculate different products that can be found for seqs in dataset and * return them. - * + * * @param dna * @param seqs * @param dataset