X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FSequenceFeature.java;h=6eeba2fbbb60119c53a7f2bfca4b464fe5076ee1;hb=refs%2Fheads%2Fpatch%2FJAL-3561_JAL-3660_fileformatexport_CLI;hp=2dd9cf0d44442e12b3822fed20e61ee1b10f65fe;hpb=3b3c59cfa50e942d2fa5b367b7117cade9459ce7;p=jalview.git diff --git a/src/jalview/datamodel/SequenceFeature.java b/src/jalview/datamodel/SequenceFeature.java index 2dd9cf0..6eeba2f 100755 --- a/src/jalview/datamodel/SequenceFeature.java +++ b/src/jalview/datamodel/SequenceFeature.java @@ -20,13 +20,6 @@ */ package jalview.datamodel; -import jalview.datamodel.features.FeatureAttributeType; -import jalview.datamodel.features.FeatureAttributes; -import jalview.datamodel.features.FeatureLocationI; -import jalview.datamodel.features.FeatureSourceI; -import jalview.datamodel.features.FeatureSources; -import jalview.util.StringUtils; - import java.util.Comparator; import java.util.LinkedHashMap; import java.util.Map; @@ -35,6 +28,13 @@ import java.util.SortedMap; import java.util.TreeMap; import java.util.Vector; +import jalview.datamodel.features.FeatureAttributeType; +import jalview.datamodel.features.FeatureAttributes; +import jalview.datamodel.features.FeatureLocationI; +import jalview.datamodel.features.FeatureSourceI; +import jalview.datamodel.features.FeatureSources; +import jalview.util.StringUtils; + /** * A class that models a single contiguous feature on a sequence. If flag * 'contactFeature' is true, the start and end positions are interpreted instead @@ -586,13 +586,17 @@ public class SequenceFeature implements FeatureLocationI } /** - * Answers an html-formatted report of feature details + * Answers an html-formatted report of feature details. If parameter + * {@code mf} is not null, the feature is a virtual linked feature, and + * details included both the original location and the mapped location + * (CDS/peptide). * * @param seqName + * @param mf * * @return */ - public String getDetailsReport(String seqName) + public String getDetailsReport(String seqName, MappedFeatures mf) { FeatureSourceI metadata = FeatureSources.getInstance() .getSource(source); @@ -600,9 +604,26 @@ public class SequenceFeature implements FeatureLocationI StringBuilder sb = new StringBuilder(128); sb.append("
"); sb.append(""); - sb.append(String.format(ROW_DATA, "Location", seqName, + String name = mf == null ? seqName : mf.getLinkedSequenceName(); + sb.append(String.format(ROW_DATA, "Location", name, begin == end ? begin : begin + (isContactFeature() ? ":" : "-") + end)); + + String consequence = ""; + if (mf != null) + { + int[] beginRange = mf.getMappedPositions(begin, begin); + int[] endRange = mf.getMappedPositions(end, end); + int from = beginRange[0]; + int to = endRange[endRange.length - 1]; + String s = mf.isFromCds() ? "Peptide Location" : "Coding location"; + sb.append(String.format(ROW_DATA, s, seqName, from == to ? from + : from + (isContactFeature() ? ":" : "-") + to)); + if (mf.isFromCds()) + { + consequence = mf.findProteinVariants(this); + } + } sb.append(String.format(ROW_DATA, "Type", type, "")); String desc = StringUtils.stripHtmlTags(description); sb.append(String.format(ROW_DATA, "Description", desc, "")); @@ -615,6 +636,12 @@ public class SequenceFeature implements FeatureLocationI sb.append(String.format(ROW_DATA, "Group", featureGroup, "")); } + if (!consequence.isEmpty()) + { + sb.append(String.format(ROW_DATA, "Consequence", + "Translated by Jalview", consequence)); + } + if (otherDetails != null) { TreeMap ordered = new TreeMap<>(