X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FMapping.java;h=b6b4c966c65967dae3a53037b59bc50f6407cd7f;hb=28a00b99bbd8f25fd894d5941149f2e1a45ed0f2;hp=e54b53ec1e9917a8da23c3aa789903c99743105e;hpb=385e63c78d289d4beae9c1ad2b187c0ea311ffbc;p=jalview.git diff --git a/src/jalview/datamodel/Mapping.java b/src/jalview/datamodel/Mapping.java index e54b53e..b6b4c96 100644 --- a/src/jalview/datamodel/Mapping.java +++ b/src/jalview/datamodel/Mapping.java @@ -1,3 +1,20 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6) + * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with Jalview. If not, see . + */ package jalview.datamodel; import java.util.Vector; @@ -219,6 +236,11 @@ public class Mapping if (map != null) { int[] frange = map.locateInFrom(f.getBegin(), f.getEnd()); + if (frange == null) + { + // JBPNote - this isprobably not the right thing to doJBPHack + return null; + } SequenceFeature[] vf = new SequenceFeature[frange.length / 2]; for (int i = 0, v = 0; i < frange.length; i += 2, v++) { @@ -226,7 +248,7 @@ public class Mapping vf[v].setBegin(frange[i]); vf[v].setEnd(frange[i + 1]); if (frange.length > 2) - vf[v].setDescription(f.getDescription() + "\nPart " + v); + vf[v].setDescription(f.getDescription() + "\nPart " + (v + 1)); } return vf; } @@ -342,7 +364,8 @@ public class Mapping for (int vc = 0; vc < viscontigs.length; vc += 2) { // find a mapped range in this visible region - int[] mpr = locateMappedRange(1+viscontigs[vc], viscontigs[vc + 1]-1); + int[] mpr = locateMappedRange(1 + viscontigs[vc], + viscontigs[vc + 1] - 1); if (mpr != null) { for (int m = 0; m < mpr.length; m += 2) @@ -358,49 +381,58 @@ public class Mapping } } } - int[] from = new int[fromRange.size()*2]; - int[] to = new int[toRange.size()*2]; + int[] from = new int[fromRange.size() * 2]; + int[] to = new int[toRange.size() * 2]; int[] r; - for (int f=0,fSize=fromRange.size(); f Protein exon map and a range of visContigs + * trite test of the intersectVisContigs method for a simple DNA -> Protein + * exon map and a range of visContigs */ - MapList fk = new MapList(new int[] { 1,6,8,13,15,23}, new int[] { 1,7}, 3, 1); + MapList fk = new MapList(new int[] + { 1, 6, 8, 13, 15, 23 }, new int[] + { 1, 7 }, 3, 1); Mapping m = new Mapping(fk); - Mapping m_1 = m.intersectVisContigs(new int[] {fk.getFromLowest(), fk.getFromHighest()}); - Mapping m_2 = m.intersectVisContigs(new int[] {1,7,11,20}); - System.out.println(""+m_1.map.getFromRanges()); - - + Mapping m_1 = m.intersectVisContigs(new int[] + { fk.getFromLowest(), fk.getFromHighest() }); + Mapping m_2 = m.intersectVisContigs(new int[] + { 1, 7, 11, 20 }); + System.out.println("" + m_1.map.getFromRanges()); + } + /** * get the sequence being mapped to - if any + * * @return null or a dataset sequence */ public SequenceI getTo() { return to; } + /** * set the dataset sequence being mapped to if any + * * @param tto */ public void setTo(SequenceI tto) @@ -408,7 +440,9 @@ public class Mapping to = tto; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.lang.Object#finalize() */ protected void finalize() throws Throwable @@ -417,5 +451,5 @@ public class Mapping to = null; super.finalize(); } - + }