package jalview.io; import jalview.analysis.AAFrequency; import jalview.analysis.Conservation; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.Annotation; import jalview.datamodel.ProfilesI; import jalview.datamodel.SequenceI; public class AnnotationUtil { public static AlignmentAnnotation getConsensusAnnotationFromFile( String file) { AlignmentI alignment = readAlignmentFile(file); // AlignFrame af = new AlignFrame(alignment, 5, 5); // af.setVisible(false); // AlignmentAnnotation consensus = af.getViewport() // .getAlignmentConsensusAnnotation(); // af.dispose(); // System.out.println(consensus); SequenceI[] alignmentSeqs = alignment.getSequencesArray(); int width = alignment.getWidth(); long nseq = alignmentSeqs.length; boolean ignoreGapsConsensus = true; boolean showSequenceLogo = false; AlignmentAnnotation consensusAnnotation = new AlignmentAnnotation( "Consensus", "PID", new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH); consensusAnnotation.hasText = true; consensusAnnotation.autoCalculated = true; alignment.addAnnotation(consensusAnnotation); ProfilesI hconsensus = AAFrequency.calculate(alignmentSeqs, width, 0, width, true); AAFrequency.completeConsensus(consensusAnnotation, hconsensus, hconsensus.getStartColumn(), hconsensus.getEndColumn() + 1, ignoreGapsConsensus, showSequenceLogo, nseq); System.out.println(">>>>> Consensus Annotation : " + consensusAnnotation); return consensusAnnotation; } public static AlignmentAnnotation getConservationAnnotationFromFile( String file, SequenceI seqRef) { AlignmentAnnotation conservationAnnotation = null; int foundAnnotCount = seqRef.getAnnotation().length; if (seqRef != null && foundAnnotCount < 3) { AlignmentI alignment = readAlignmentFile("/Users/tcnofoegbu/Desktop/query.jal"); // AlignmentI alignment = readAlignmentFile(file); // ColumnSelection cs = new ColumnSelection(); // SequenceI querySeq = alignment.getSequenceAt(0); // cs.hideInsertionsFor(querySeq); // AlignViewport av = new AlignViewport(alignment); // av.setColumnSelection(cs); // // alignment = av.getAlignment(); int alWidth = alignment.getWidth(); int ConsPercGaps = 25; AlignmentAnnotation quality = new AlignmentAnnotation("Quality", "Alignment Quality based on Blosum62 scores", new Annotation[1], 0f, 11f, AlignmentAnnotation.BAR_GRAPH); quality.hasText = true; quality.autoCalculated = true; conservationAnnotation = new AlignmentAnnotation("Conservation", "PID", new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH); conservationAnnotation.hasText = true; conservationAnnotation.autoCalculated = true; alignment.addAnnotation(conservationAnnotation); Conservation cons = Conservation.calculateConservation("All", alignment.getSequences(), 0, alWidth - 1, false, ConsPercGaps, quality != null); cons.completeAnnotations(conservationAnnotation, quality, 0, alWidth); System.out.println(">>>"); conservationAnnotation.createSequenceMapping(seqRef, 1, true); seqRef.addAlignmentAnnotation(conservationAnnotation); // conservationAnnotation.createSequenceMapping( // seqRef.getDatasetSequence(), 1, true); // seqRef.getDatasetSequence().addAlignmentAnnotation( // conservationAnnotation); } return conservationAnnotation; } private static AlignmentI readAlignmentFile(String f) { System.out.println("Reading file: " + f); try { FormatAdapter rf = new FormatAdapter(); DataSourceType protocol = AppletFormatAdapter.checkProtocol(f); AlignmentI al = rf.readFile(f, protocol, new IdentifyFile().identify(f, protocol)); return al; } catch (Exception e) { e.printStackTrace(); } return null; } public static void main(String[] args) { // getConservationAnnotationFromFile("http://www.sbg.bio.ic.ac.uk/phyre2/phyre2_output/cd1b897af035cdf5/query.jal"); getConsensusAnnotationFromFile("http://www.sbg.bio.ic.ac.uk/phyre2/phyre2_output/cd1b897af035cdf5/query.jal"); } }