diff --git a/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java b/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java index 7842656943fdbf6ba77612a3cfebe50bd28250e3..418c67d4dedf8657e92044a6265d16bf5c5d3492 100644 --- a/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java +++ b/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java @@ -2210,17 +2210,30 @@ public class ChadoTransactionManager } else featureloc.setPhase(null); - - if(gffFeature.getQualifierByName("isFminPartial") != null) + + final RangeVector ranges = gffFeature.getLocation().getRanges(); + boolean firstSeg = true; + boolean lastSeg = true; + if(ranges.size() > 1) // define if first/last segment + { + firstSeg = false; + lastSeg = false; + if(range_new.getStart() == gffFeature.getFirstBase()) + firstSeg = true; + if(range_new.getEnd() == gffFeature.getLastBase()) + lastSeg = true; + } + + if(firstSeg && gffFeature.getQualifierByName("isFminPartial") != null) featureloc.setFminPartial(true); else featureloc.setFminPartial(false); - if(gffFeature.getQualifierByName("isFmaxPartial") != null) + if(lastSeg && gffFeature.getQualifierByName("isFmaxPartial") != null) featureloc.setFmaxPartial(true); else featureloc.setFmaxPartial(false); - + return featureloc; }