X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2Fgff%2FExonerateHelper.java;h=f522ac4796aedf246869ee1f87fc786d3aee5273;hb=eb3e681d6e82ccdd5d312d1981dfb306e7f479f0;hp=e37386177be417510aaae8d2982140258ae3c720;hpb=8f920d337154e092f5f9056ffde3cdf2735eca43;p=jalview.git diff --git a/src/jalview/io/gff/ExonerateHelper.java b/src/jalview/io/gff/ExonerateHelper.java index e373861..f522ac4 100644 --- a/src/jalview/io/gff/ExonerateHelper.java +++ b/src/jalview/io/gff/ExonerateHelper.java @@ -1,5 +1,27 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * 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 . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.io.gff; +import java.util.Locale; + import jalview.datamodel.AlignedCodonFrame; import jalview.datamodel.AlignmentI; import jalview.datamodel.MappingType; @@ -41,7 +63,7 @@ public class ExonerateHelper extends Gff2Helper * * @param seq * the sequence with which this feature is associated - * @param sf + * @param gffColumns * the sequence feature with ATTRIBUTES property containing any * additional attributes * @param align @@ -64,11 +86,11 @@ public class ExonerateHelper extends Gff2Helper try { - processGffSimilarity(set, seq, gffColumns, - align, newseqs, relaxedIdMatching); + processGffSimilarity(set, seq, gffColumns, align, newseqs, + relaxedIdMatching); } catch (IOException ivfe) { - System.err.println(ivfe); + jalview.bin.Console.errPrintln(ivfe); } /* @@ -98,8 +120,7 @@ public class ExonerateHelper extends Gff2Helper * if true allow fuzzy search for a matching target sequence * @throws IOException */ - protected void processGffSimilarity( - Map> set, + protected void processGffSimilarity(Map> set, SequenceI seq, String[] gff, AlignmentI align, List newseqs, boolean relaxedIdMatching) throws IOException @@ -146,7 +167,8 @@ public class ExonerateHelper extends Gff2Helper SequenceI mapFromSequence = seq; SequenceI mapToSequence = mappedSequence; if ((type == MappingType.NucleotideToPeptide && featureIsOnTarget) - || (type == MappingType.PeptideToNucleotide && !featureIsOnTarget)) + || (type == MappingType.PeptideToNucleotide + && !featureIsOnTarget)) { mapFromSequence = mappedSequence; mapToSequence = seq; @@ -167,7 +189,7 @@ public class ExonerateHelper extends Gff2Helper mapToSequence); /* - * exonerate GFF has the strand of the target in column 7 rather + * exonerate GFF has the strand of the target in column 7 * (differs from GFF3 which has it in the Target descriptor) */ String strand = gff[STRAND_COL]; @@ -178,7 +200,8 @@ public class ExonerateHelper extends Gff2Helper } else if (!"+".equals(strand)) { - System.err.println("Strand must be specified for alignment"); + jalview.bin.Console + .errPrintln("Strand must be specified for alignment"); return; } @@ -217,7 +240,8 @@ public class ExonerateHelper extends Gff2Helper String[] tokens = region.split(" "); if (tokens.length != 3) { - System.err.println("Malformed Align descriptor: " + region); + jalview.bin.Console + .errPrintln("Malformed Align descriptor: " + region); return null; } @@ -228,15 +252,17 @@ public class ExonerateHelper extends Gff2Helper int alignFromStart; int alignToStart; int alignCount; - try { + try + { alignFromStart = Integer.parseInt(tokens[0]); alignToStart = Integer.parseInt(tokens[1]); alignCount = Integer.parseInt(tokens[2]); - } catch (NumberFormatException nfe) { - System.err.println(nfe.toString()); + } catch (NumberFormatException nfe) + { + jalview.bin.Console.errPrintln(nfe.toString()); return null; } - + int fromStart; int fromEnd; int toStart; @@ -246,8 +272,8 @@ public class ExonerateHelper extends Gff2Helper { fromStart = alignToStart; toStart = alignFromStart; - toEnd = forwardStrand ? toStart + alignCount - 1 : toStart - - (alignCount - 1); + toEnd = forwardStrand ? toStart + alignCount - 1 + : toStart - (alignCount - 1); int toLength = Math.abs(toEnd - toStart) + 1; int fromLength = toLength * type.getFromRatio() / type.getToRatio(); fromEnd = fromStart + fromLength - 1; @@ -290,10 +316,8 @@ public class ExonerateHelper extends Gff2Helper { result = MappingType.PeptideToNucleotide; } - else if (model.contains(CODING2CODING) - || model.contains(CODING2GENOME) - || model.contains(CDNA2GENOME) - || model.contains(GENOME2GENOME)) + else if (model.contains(CODING2CODING) || model.contains(CODING2GENOME) + || model.contains(CDNA2GENOME) || model.contains(GENOME2GENOME)) { result = MappingType.NucleotideToNucleotide; } @@ -304,7 +328,7 @@ public class ExonerateHelper extends Gff2Helper * Tests whether the GFF data looks like it was generated by exonerate, and is * a format we are willing to handle * - * @param sf + * @param columns * @return */ public static boolean recognises(String[] columns) @@ -321,26 +345,29 @@ public class ExonerateHelper extends Gff2Helper // e.g. exonerate:protein2genome:local if (model != null) { - String mdl = model.toLowerCase(); + String mdl = model.toLowerCase(Locale.ROOT); if (mdl.contains(PROTEIN2DNA) || mdl.contains(PROTEIN2GENOME) - || mdl.contains(CODING2CODING) - || mdl.contains(CODING2GENOME) - || mdl.contains(CDNA2GENOME) - || mdl.contains(GENOME2GENOME)) + || mdl.contains(CODING2CODING) || mdl.contains(CODING2GENOME) + || mdl.contains(CDNA2GENOME) || mdl.contains(GENOME2GENOME)) { return true; } } - System.err.println("Sorry, I don't handle exonerate model " + model); + jalview.bin.Console + .errPrintln("Sorry, I don't handle exonerate model " + model); return false; } + /** + * An override to set feature group to "exonerate" instead of the default GFF + * source value (column 2) + */ @Override protected SequenceFeature buildSequenceFeature(String[] gff, Map> set) { - SequenceFeature sf = super.buildSequenceFeature(gff, set); - sf.setFeatureGroup("exonerate"); + SequenceFeature sf = super.buildSequenceFeature(gff, TYPE_COL, + "exonerate", set); return sf; }