001/**
002 * Copyright (C) 2010-2015 The Roslin Institute <contact andy.law@roslin.ed.ac.uk>
003 *
004 * This file is part of JEnsembl: a Java API to Ensembl data sources developed by the
005 * Bioinformatics Group at The Roslin Institute, The Royal (Dick) School of
006 * Veterinary Studies, University of Edinburgh.
007 *
008 * Project hosted at: http://jensembl.sourceforge.net
009 *
010 * This is free software: you can redistribute it and/or modify
011 * it under the terms of the GNU General Public License (version 3) as published by
012 * the Free Software Foundation.
013 *
014 * This software is distributed in the hope that it will be useful,
015 * but WITHOUT ANY WARRANTY; without even the implied warranty of
016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
017 * GNU General Public License for more details.
018 *
019 * You should have received a copy of the GNU General Public License
020 * in this software distribution. If not, see: http://opensource.org/licenses/gpl-3.0.html
021 */
022package uk.ac.roslin.ensembl.demo;
023
024import java.util.Collection;
025import uk.ac.roslin.ensembl.config.DBConnection.DataSource;
026import uk.ac.roslin.ensembl.dao.database.DBRegistry;
027import uk.ac.roslin.ensembl.dao.database.DBSpecies;
028import uk.ac.roslin.ensembl.datasourceaware.core.*;
029import uk.ac.roslin.ensembl.model.Coordinate;
030import uk.ac.roslin.ensembl.model.Coordinate.Strand;
031import uk.ac.roslin.ensembl.model.Mapping;
032
033public class TranscriptionAndTranslationReverse {
034
035    
036    //demonstrates integration of BioJava3 transcription and translation functions
037    //and JEnsembl's retrieval and stitching together of exon sequences
038    //uses BioJava transcription engines for translation
039    //the datasource is queried to use the correct codon table if specified
040    //moving between the various axes is demonstrated
041    //i.e. Chromosome, Primary Transcript, Processed Transcript (mRNA), Translation and Protein
042    //and retrieveal of actual sequence data from these various axes
043
044    
045
046    public static void main(String[] args) throws Exception {
047
048        DBRegistry reg = DBRegistry.createRegistryForDataSource(DataSource.ENSEMBLDB);
049        DBSpecies sp = reg.getSpeciesByAlias("human");
050
051
052        //demo human gene on reverse strand, results in comments are from release 68
053        DAGene zar1l = sp.getGeneByStableID("ENSG00000189167", "68");
054        //current v74 transcript is vastly adifferent
055        //DAGene zar1l = sp.getGeneByStableID("ENSG00000189167");
056        Mapping chromosomeMapping = zar1l.getChromosomeMapping();
057        
058        Strand  orientation = chromosomeMapping.getTargetCoordinates().getStrand();
059
060        DAChromosome chr = (DAChromosome) chromosomeMapping.getTarget();
061        Coordinate targetCoordinates = chromosomeMapping.getTargetCoordinates();
062        Coordinate sourceCoordinates = chromosomeMapping.getSourceCoordinates();
063
064        System.out.println(zar1l.getType() + " " + zar1l.getDisplayName() + " " + zar1l.getStableID());
065        System.out.println("\t" + chr.getType() + " " + chr.getChromosomeName() + " " + targetCoordinates);
066        
067        if (Strand.REVERSE_STRAND.equals(orientation)) {
068            System.out.println("\tChromosome sequence: " + targetCoordinates.getLength() + " "
069                + chr.getReverseComplementSequenceAsString(targetCoordinates.getEnd(), targetCoordinates.getEnd() - 29) + ".....");
070        } else {
071            System.out.println("\tChromosome sequence: " + targetCoordinates.getLength() + " "
072                + chr.getSequenceAsString(targetCoordinates.getStart(), targetCoordinates.getStart() + 29) + ".....");
073        }
074        System.out.println("\tDNASequence: " + zar1l.getSequence().getLength() + " : "
075                + zar1l.getSequenceAsString(1, 30) + ".....");
076        System.out.println("\tRNASequence: " + zar1l.getRNASequence().getLength() + " : "
077                + zar1l.getRNASequence().getSequenceAsString(1, 30, null) + ".....");
078        
079        /*
080        gene ZAR1L ENSG00000189167
081            chromosome 13 32877837 - 32889481 (REVERSE_STRAND)
082            Chromosome sequence: 11645 AGTATCTGACCGAATAAAGCGGGAGCTGGA.....
083            DNASequence: 11645 : AGTATCTGACCGAATAAAGCGGGAGCTGGA.....
084            RNASequence: 11645 : AGUAUCUGACCGAAUAAAGCGGGAGCUGGA.....
085        */        
086
087        System.out.println("");
088        System.out.println("Gene coordinate conversion: " + 1 + " --> " + zar1l.convertToTargetPosition(1));
089        System.out.println("Gene coordinate conversion: " + -1 + " --> " + zar1l.convertToTargetPosition(-1));
090        System.out.println("Gene coordinate conversion: " + 1 + " --> " + zar1l.convertToTargetPosition(1));
091        System.out.println("Gene coordinate conversion: " + -10 + " --> " + zar1l.convertToTargetPosition(-10));
092        System.out.println("Gene coordinate conversion: " + 100 + " --> " + zar1l.convertToTargetPosition(100));
093
094        /*
095        Gene coordinate conversion: 1 --> 32889481
096        Gene coordinate conversion: -1 --> 32889482
097        Gene coordinate conversion: 1 --> 32889481
098        Gene coordinate conversion: -10 --> 32889491
099        Gene coordinate conversion: 100 --> 32889382      
100        */
101        
102        System.out.println("");
103        DATranscript canonicalTranscript = zar1l.getCanonicalTranscript();
104        Mapping chromosomeMapping1 = canonicalTranscript.getChromosomeMapping();
105        DAChromosome chr1 = (DAChromosome) chromosomeMapping1.getTarget();
106        targetCoordinates = chromosomeMapping1.getTargetCoordinates();
107
108                
109
110        System.out.println("");
111        System.out.println(canonicalTranscript.getType() + " " + canonicalTranscript.getDisplayName()
112                + " " + canonicalTranscript.getStableID());
113        System.out.println("\t" + chr1.getType() + " " + chr1.getChromosomeName() + " " + targetCoordinates);
114        System.out.println("getCCDS "+canonicalTranscript.getCcdsID());  
115        
116        if (Strand.REVERSE_STRAND.equals(targetCoordinates.getStrand())) {
117            System.out.println("\tChromosome sequence: " + targetCoordinates.getLength() + " "
118                + chr.getReverseComplementSequenceAsString(targetCoordinates.getEnd(), targetCoordinates.getEnd() - 29) + ".....");
119        } else {
120            System.out.println("\tChromosome sequence: " + targetCoordinates.getLength() + " "
121                + chr.getSequenceAsString(targetCoordinates.getStart(), targetCoordinates.getStart() + 29) + ".....");
122        }        
123        System.out.println("\tDNASequence: " + canonicalTranscript.getSequence().getLength() + " : "
124                + canonicalTranscript.getSequenceAsString(1, 30) + ".....");
125        System.out.println("\tRNASequence: " + canonicalTranscript.getRNASequence().getLength() + " : "
126                + canonicalTranscript.getRNASequence().getSequenceAsString(1, 30, null) + ".....");
127        
128        
129        /*
130        transcript ZAR1L-001 ENST00000345108
131                chromosome 13 32877837 - 32886091 (REVERSE_STRAND)
132                Chromosome sequence: 8255 TTAGACTGCGCCTGAGCACCTGAGAGCGGA.....
133                DNASequence: 8255 : TTAGACTGCGCCTGAGCACCTGAGAGCGGA.....
134                RNASequence: 8255 : UUAGACUGCGCCUGAGCACCUGAGAGCGGA.....  
135        */
136
137        System.out.println("");
138        System.out.println("Transcript coordinate conversion: " + 1 + " --> " + canonicalTranscript.convertToTargetPosition(1));//32886091
139        System.out.println("Transcript coordinate conversion: " + -1 + " --> " + canonicalTranscript.convertToTargetPosition(-1));//32886092
140        System.out.println("Transcript coordinate conversion: " + 50 + " --> " + canonicalTranscript.convertToTargetPosition(50));//32886042
141        System.out.println("Transcript coordinate conversion: " + 654 + " --> " + canonicalTranscript.convertToTargetPosition(654));//32885438
142        System.out.println("Transcript coordinate conversion: " + 655 + " --> " + canonicalTranscript.convertToTargetPosition(655));//32885437
143        System.out.println("Transcript coordinate conversion: " + 8255 + " --> " + canonicalTranscript.convertToTargetPosition(8255));//32877837
144        System.out.println("Transcript coordinate conversion: " + 8256 + " --> " + canonicalTranscript.convertToTargetPosition(8256));//32877836
145
146        
147        System.out.println("");
148        Collection<DAExon> exons = canonicalTranscript.getExons();
149        System.out.println("Canonical Transcript Exons: " + exons.size());
150        //Canonical Transcript Exons: 4
151        for (DAExon exon : exons) {
152            System.out.println("\t" + exon.getRank() + ": " + exon.getChromosomeMapping().getTargetCoordinates()
153                    + " [" + exon.getChromosomeMapping().getTargetCoordinates().getLength() + "] "
154                    + exon.getSequenceAsString(1, 30) + ".... phase:" + exon.getPhase() + "/" + exon.getEndPhase());
155        }
156        
157        /*
158        1: 32885409 - 32886091 (REVERSE_STRAND) [683] TTAGACTGCGCCTGAGCACCTGAGAGCGGA.... phase:-1/0
159        2: 32884776 - 32884868 (REVERSE_STRAND) [93] TTTTTGGAACCAAAATATGGCTATTTCCAC.... phase:0/0
160        3: 32882823 - 32882897 (REVERSE_STRAND) [75] GTTTATTTCAAACAACTCTGTTGTAAATGC.... phase:0/0
161        4: 32877837 - 32878159 (REVERSE_STRAND) [323] ACCTGCTCAAAGTCTCATTGTTCCTGTCCT.... phase:0/-1
162        */
163
164        System.out.println("");
165        System.out.println("Primary Transcript coordinate : " + -100 + " --> Processed Transcript: "
166                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(-100));//-100
167        System.out.println("Primary Transcript coordinate : " + -1 + " --> Processed Transcript: "
168                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(-1));//-1
169        System.out.println("Primary Transcript coordinate : " + 1 + " --> Processed Transcript: "
170                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(1));//1
171        System.out.println("Primary Transcript coordinate : " + 683 + " --> Processed Transcript: "
172                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(683));//683
173        System.out.println("Primary Transcript coordinate : " + 684 + " --> Processed Transcript: "
174                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(684));//null
175        System.out.println("Primary Transcript coordinate : " + 1223 + " --> Processed Transcript: "
176                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(1223));//null
177        System.out.println("Primary Transcript coordinate : " + 1224 + " --> Processed Transcript: "
178                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(1224));//684
179        System.out.println("Primary Transcript coordinate : " + 8255 + " --> Processed Transcript: "
180                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(8255));//1174
181        System.out.println("Primary Transcript coordinate : " + 8256 + " --> Processed Transcript: "
182                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(8256));//1175
183
184        System.out.println("");
185        System.out.println("Processed Transcript coordinate : " + -100 + " --> Primary Transcript: "
186                + canonicalTranscript.convertProcessedToPrimaryTranscriptPosition(-100));//-100
187        System.out.println("Processed Transcript coordinate : " + -1 + " --> Primary Transcript: "
188                + canonicalTranscript.convertProcessedToPrimaryTranscriptPosition(-1));//-1
189        System.out.println("Processed Transcript coordinate : " + 1 + " --> Primary Transcript: "
190                + canonicalTranscript.convertProcessedToPrimaryTranscriptPosition(1));//1
191        System.out.println("Processed Transcript coordinate : " + 683 + " --> Primary Transcript: "
192                + canonicalTranscript.convertProcessedToPrimaryTranscriptPosition(683));//683
193        System.out.println("Processed Transcript coordinate : " + 684 + " --> Primary Transcript: "
194                + canonicalTranscript.convertProcessedToPrimaryTranscriptPosition(684));//1224
195        
196        System.out.println("Processed Transcript coordinate : " + 1174 + " --> Primary Transcript: "
197                + canonicalTranscript.convertProcessedToPrimaryTranscriptPosition(1174));//8255
198        System.out.println("Processed Transcript coordinate : " + 1175 + " --> Primary Transcript: "
199                + canonicalTranscript.convertProcessedToPrimaryTranscriptPosition(1175));//8256
200
201
202        System.out.println("");
203        System.out.println("Processed Transcript coordinate : " + -100 + " --> Chromosome: "
204                + canonicalTranscript.convertProcessedTranscriptPositionToChromosome(-100));//32886191
205        System.out.println("Processed Transcript coordinate : " + -1 + " --> Chromosome: "
206                + canonicalTranscript.convertProcessedTranscriptPositionToChromosome(-1));//32886191
207        System.out.println("Processed Transcript coordinate : " + 1 + " --> Chromosome: "
208                + canonicalTranscript.convertProcessedTranscriptPositionToChromosome(1));//32886191
209        System.out.println("Processed Transcript coordinate : " + 683 + " --> Chromosome: "
210                + canonicalTranscript.convertProcessedTranscriptPositionToChromosome(683));//32885409
211        System.out.println("Processed Transcript coordinate : " + 684 + " --> Chromosome: "
212                + canonicalTranscript.convertProcessedTranscriptPositionToChromosome(684));//32884868
213        System.out.println("Processed Transcript coordinate : " + 1174 + " --> Chromosome: "
214                + canonicalTranscript.convertProcessedTranscriptPositionToChromosome(1174));//32877837
215        System.out.println("Processed Transcript coordinate : " + 1175 + " --> Chromosome: "
216                + canonicalTranscript.convertProcessedTranscriptPositionToChromosome(1175));//32877836
217
218        System.out.println("");
219        System.out.println("Canonical Transcript " + (canonicalTranscript.isTranslated() ? "is Translated" : "not Translated"));
220        //Canonical Transcript is Translated
221        DATranslation canonicalTranslation = zar1l.getCanonicalTranslation();
222
223        System.out.println("\ttranslation:" + canonicalTranslation.getStableID());
224        //      translation:ENSP00000344616
225        DAExon exon = canonicalTranslation.getFirstExon();
226
227        System.out.println("");
228        System.out.println("first translated exon (exon-" + exon.getRank() + "): " + exon.getChromosomeMapping().getTargetCoordinates()
229                + " [" + exon.getChromosomeMapping().getTargetCoordinates().getLength() + "] "
230                + exon.getSequenceAsString(1, 30) + ".... phase:" + exon.getPhase() + "/" + exon.getEndPhase());
231        System.out.println("Exon 1 coordinate conversion: " + 1 + " --> " + exon.convertToTargetPosition(1));
232        System.out.println("Exon 1 coordinate conversion: " + -1 + " --> " + exon.convertToTargetPosition(-1));
233        System.out.println("Exon 1 coordinate conversion: " + 10 + " --> " + exon.convertToTargetPosition(10));
234        System.out.println("Exon 1 coordinate conversion: " + -10 + " --> " + exon.convertToTargetPosition(-10));
235
236        /*
237        first translated exon (exon-1): 32885409 - 32886091 (REVERSE_STRAND) [683] TTAGACTGCGCCTGAGCACCTGAGAGCGGA.... phase:-1/0
238        Exon 1 coordinate conversion: 1 --> 32886091
239        Exon 1 coordinate conversion: -1 --> 32886092
240        Exon 1 coordinate conversion: 10 --> 32886082
241        Exon 1 coordinate conversion: -10 --> 32886101     
242        */
243        
244        System.out.println("");
245        exon = canonicalTranslation.getLastExon();
246
247        System.out.println("last translated exon: (exon-" + exon.getRank() + "): " + exon.getChromosomeMapping().getTargetCoordinates()
248                + " [" + exon.getChromosomeMapping().getTargetCoordinates().getLength() + "] "
249                + exon.getSequenceAsString(1, 30) + ".... phase:" + exon.getPhase() + "/" + exon.getEndPhase());
250        System.out.println("last Exon coordinate conversion: " + 1 + " --> " + exon.convertToTargetPosition(1));
251        System.out.println("last Exon coordinate conversion: " + -1 + " --> " + exon.convertToTargetPosition(-1));
252        System.out.println("last Exon coordinate conversion: " + 10 + " --> " + exon.convertToTargetPosition(10));
253        System.out.println("last Exon coordinate conversion: " + -10 + " --> " + exon.convertToTargetPosition(-10));
254
255        /*
256        last translated exon: (exon-4): 32877837 - 32878159 (REVERSE_STRAND) [323] ACCTGCTCAAAGTCTCATTGTTCCTGTCCT.... phase:0/-1
257        last Exon coordinate conversion: 1 --> 32878159
258        last Exon coordinate conversion: -1 --> 32878160
259        last Exon coordinate conversion: 10 --> 32878150
260        last Exon coordinate conversion: -10 --> 32878169      
261        */
262        
263        System.out.println("");
264        System.out.println("First exon  start:" + canonicalTranslation.getFirstExonStart() + " - "
265                + "Last exon end:" + canonicalTranslation.getLastExonEnd());
266        //First exon  start:30 - Last exon end:144
267
268        System.out.println("Translateable Sequence:");
269        System.out.print(canonicalTranslation.getTranslatedSequenceAsString(1, 30) + ".....  ");
270        Integer len = canonicalTranslation.getTranslatedSequenceAsString().length();
271        System.out.println(canonicalTranslation.getTranslatedSequenceAsString(len-29, len));
272        //ATGGAGCGCTTTGTCCGTGTTCCCTATGGC.....  AATATTTACAGCTTTAAATATGTGATGTGA
273        System.out.println("");
274        
275        System.out.println("PROTEIN: ");
276        System.out.print(canonicalTranslation.getProteinSequence().getSequenceAsString().subSequence(0, 30) + ".....  ");
277        len = canonicalTranslation.getProteinSequence().getSequenceAsString().length();
278        System.out.println(canonicalTranslation.getProteinSequence().getSequenceAsString().subSequence(len-8,len) );
279        //MERFVRVPYGLYQGYGSTVPLGQPGLSGHK.....  IYSFKYVM
280        System.out.print(canonicalTranslation.getProteinSequenceAsString(1, 30) + ".....  ");
281        len = canonicalTranslation.getProteinSequence().getSequenceAsString().length();
282        System.out.println(canonicalTranslation.getProteinSequence().getSequenceAsString().subSequence(len-8,len) );
283        //MERFVRVPYGLYQGYGSTVPLGQPGLSGHK.....  IYSFKYVM
284        System.out.println("");
285        
286        System.out.println("Translation: 1 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(1));//30
287        System.out.println("Translation: 10 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(10));//39
288        System.out.println("Translation: 100 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(100));//129
289        System.out.println("Translation: 654 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(654));//683
290        System.out.println("Translation: 655 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(655));//1224
291        System.out.println("Translation: 747 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(747));//1316
292        System.out.println("Translation: 748 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(748));//3195
293        System.out.println("Translation: 963 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(963));//3195
294        System.out.println("Translation: 966 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(966));//3195
295        System.out.println("Translation: 967 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(967));//3195
296        System.out.println("Translation: 1145 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(1145));//8255
297        System.out.println("Translation: 1146 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(1146));//8256
298        
299        System.out.println("PrimaryTranscript: 1 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(1));//null
300        System.out.println("PrimaryTranscript: 29 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(29));//null
301        System.out.println("PrimaryTranscript: 30 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(30));//1
302        System.out.println("PrimaryTranscript: 683 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(683));//654
303        System.out.println("PrimaryTranscript: 684 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(684));//null
304        System.out.println("PrimaryTranscript: 1223 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(1223));//null
305        System.out.println("PrimaryTranscript: 1224 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(1224));//655
306        System.out.println("PrimaryTranscript: 1316 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(1316));//747
307        System.out.println("PrimaryTranscript: 1317 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(1317));//null
308        System.out.println("PrimaryTranscript: 8073 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(8073));//963
309        System.out.println("PrimaryTranscript: 8076 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(8076));//966
310        System.out.println("PrimaryTranscript: 8077 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(8077));//null
311        System.out.println("PrimaryTranscript: 8255 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(8255));//null
312        System.out.println("PrimaryTranscript: 8256 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(8256));//null
313
314        System.out.println("");
315        
316        System.out.println("Translation: -30 -->  ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(-30));//-1
317        System.out.println("Translation: -1 -->  ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(-1));//29
318        System.out.println("Translation: 1 -->  ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(1));//30
319        System.out.println("Translation: 10 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(10));//39
320        System.out.println("Translation: 100 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(100));//129
321        System.out.println("Translation: 654 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(654));//683
322        System.out.println("Translation: 655 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(655));//684
323        System.out.println("Translation: 747 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(747));//776
324        System.out.println("Translation: 748 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(748));//777
325        System.out.println("Translation: 966 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(966));//995
326        System.out.println("Translation: 967 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(967));//996
327        
328        System.out.println("ProcessedTranscript: -1 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(-1));//null
329        System.out.println("ProcessedTranscript: 1 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(1));//null
330        System.out.println("ProcessedTranscript: 30 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(30));//1
331        System.out.println("ProcessedTranscript: 683 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(683));//654
332        System.out.println("ProcessedTranscript: 684 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(684));//655
333        System.out.println("ProcessedTranscript: 776 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(776));//747
334        System.out.println("ProcessedTranscript: 777 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(777));//748
335        System.out.println("ProcessedTranscript: 995 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(995));//966
336        System.out.println("ProcessedTranscript: 996 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(996));//null
337
338        System.out.println("");
339        
340        System.out.println("Translation: -1 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromBASE(-1));//32886063
341        System.out.println("Translation: 1 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromBASE(1));//32886062
342        System.out.println("Translation: 654 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromBASE(654));//32885409
343        System.out.println("Translation: 655 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromBASE(655));//32884868
344        System.out.println("Translation: 747 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromBASE(747));//32884776
345        System.out.println("Translation: 748 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromBASE(748));//32882897
346        System.out.println("Translation: 966 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromBASE(966));//32878016
347        System.out.println("Translation: 967 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromBASE(967));//32878015
348        
349        System.out.println("Chromosome: 32886063 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32886063));//null
350        System.out.println("Chromosome: 32886062 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32886062));//1
351        System.out.println("Chromosome: 32885409 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32885409));//654
352        System.out.println("Chromosome: 32884868 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32884868));//655
353        System.out.println("Chromosome: 32884776 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32884776));//747
354        System.out.println("Chromosome: 32882897 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32882897));//748
355        System.out.println("Chromosome: 32878016 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32878016));//966
356        System.out.println("Chromosome: 32878015 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32878015));//null
357        
358        System.out.println("");
359        
360        System.out.println("Amino Acid: 1 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromAA(1));//30 - 32 (REVERSE_STRAND)
361        System.out.println("Amino Acid: 218 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromAA(218));// 681 - 683 (REVERSE_STRAND)
362        System.out.println("Amino Acid: 219 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromAA(219));//  1224 - 1226 (REVERSE_STRAND)
363        System.out.println("Amino Acid: 249 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromAA(249));// 1314 - 1316 (REVERSE_STRAND)
364        System.out.println("Amino Acid: 250 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromAA(250));// 3195 - 3197 (REVERSE_STRAND)
365        System.out.println("Amino Acid: 274 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromAA(274));//3267 - 3269 (REVERSE_STRAND)
366        System.out.println("Amino Acid: 275 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromAA(275));// 7933 - 7935 (REVERSE_STRAND)
367        System.out.println("Amino Acid: 321 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromAA(321));// 8071 - 8073 (REVERSE_STRAND)
368        System.out.println("Amino Acid: 322 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromAA(322));//8074 - 8076 (REVERSE_STRAND)
369
370        
371        System.out.println("PrimaryTranscript: 30 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(30));//1
372        System.out.println("PrimaryTranscript: 31 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(31));//1
373        System.out.println("PrimaryTranscript: 32 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(32));//1
374        System.out.println("PrimaryTranscript: 36 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(36));//3
375        System.out.println("PrimaryTranscript: 654 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(683));//218
376        System.out.println("PrimaryTranscript: 655 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(684));//null
377        System.out.println("PrimaryTranscript: 1223 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(1223));//null
378        System.out.println("PrimaryTranscript: 1224 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(1224));//219
379        System.out.println("PrimaryTranscript: 8073 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(8073));//321
380        System.out.println("PrimaryTranscript: 8076 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(8076));//322
381        System.out.println("PrimaryTranscript: 8077 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(8077));//null
382                
383        System.out.println("");
384        
385        System.out.println("Amino Acid: 1 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromAA(1));//30 - 32 (REVERSE_STRAND)
386        System.out.println("Amino Acid: 218 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromAA(218));// 681 - 683 (REVERSE_STRAND)
387        System.out.println("Amino Acid: 219 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromAA(219));// 684 - 686 (REVERSE_STRAND)
388        System.out.println("Amino Acid: 321 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromAA(321));// 990 - 992 (REVERSE_STRAND)
389        System.out.println("Amino Acid: 322 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromAA(322));// 993 - 995 (REVERSE_STRAND)
390
391        System.out.println("ProcessedTranscript: 1 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(1));//null
392        System.out.println("ProcessedTranscript: 30 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(30));//1
393        System.out.println("ProcessedTranscript: 681 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(681));//218
394        System.out.println("ProcessedTranscript: 682 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(682));//218
395        System.out.println("ProcessedTranscript: 683 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(683));//218
396        System.out.println("ProcessedTranscript: 684 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(684));//219
397        System.out.println("ProcessedTranscript: 685 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(685));//219
398        System.out.println("ProcessedTranscript: 686 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(686));//219
399        System.out.println("ProcessedTranscript: 990 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(990));//321
400        System.out.println("ProcessedTranscript: 991 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(991));//321
401        System.out.println("ProcessedTranscript: 992 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(992));//321
402        System.out.println("ProcessedTranscript: 993 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(993));//322
403        System.out.println("ProcessedTranscript: 994 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(994));//322
404        System.out.println("ProcessedTranscript: 995 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(995));//322
405        System.out.println("ProcessedTranscript: 996 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(996));//null
406
407        
408        System.out.println("");
409        
410        System.out.println("Amino Acid: 1 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromAA(1));// 32886060 - 32886062 (REVERSE_STRAND)
411        System.out.println("Amino Acid: 218 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromAA(218));// 32885409 - 32885411 (REVERSE_STRAND)
412        System.out.println("Amino Acid: 219 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromAA(219));// 32884866 - 32884868 (REVERSE_STRAND)
413        System.out.println("Amino Acid: 321 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromAA(321));// 32878019 - 32878021 (REVERSE_STRAND)
414        System.out.println("Amino Acid: 322 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromAA(322));// 32878016 - 32878018 (REVERSE_STRAND)
415
416        System.out.println("Chromosome: 32886059 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32886059));//2
417        System.out.println("Chromosome: 32886060 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32886060));//1
418        System.out.println("Chromosome: 32886061 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32886061));//1
419        System.out.println("Chromosome: 32886062 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32886062));//1
420        System.out.println("Chromosome: 32886063 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32886063));//null
421        
422        System.out.println("Chromosome: 32885408 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32885408));//null
423        System.out.println("Chromosome: 32885409 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32885409));//218
424        System.out.println("Chromosome: 32885411 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32885411));//218
425        
426        System.out.println("Chromosome: 32884865 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32884865));//220
427        System.out.println("Chromosome: 32884866 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32884866));//219
428        System.out.println("Chromosome: 32884868 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32884868));//219
429        System.out.println("Chromosome: 32884869 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32884869));//null
430        
431        System.out.println("Chromosome: 32878019 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32878019));//321
432        System.out.println("Chromosome: 32878018 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32878018));//322
433        System.out.println("Chromosome: 32878015 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32878015));//null
434   
435        
436        System.out.println("");
437        
438        System.out.println("Translation\tAA\tchromosome\tbase\tcodon\tAA\tPrimaryT\tProcessedT");
439        for (Mapping m: canonicalTranslation.getTranslationMappings()) {
440            
441            int i = m.getSourceCoordinates().getStart(); 
442            System.out.print(i + "\t\t" +(i+2)/3 +"\t" + canonicalTranslation.getChromosomePositionFromBASE(i) + "\t");
443            System.out.print(canonicalTranslation.getTranslatedSequenceAsString(i, i) +"\t");
444            System.out.print(canonicalTranslation.getTranslatedSequenceAsString(3*((i+2)/3)-2, 3*((i+2)/3) )+"\t");
445            System.out.print(canonicalTranslation.getProteinSequenceAsString((i+2)/3,(i+2)/3) +"\t");
446            System.out.print(canonicalTranslation.getPrimaryTranscriptPositionFromBASE(i) + "\t\t");
447            System.out.print(canonicalTranslation.getProcessedTranscriptPositionFromBASE(i) + "\n");    
448            
449            i = m.getSourceCoordinates().getEnd(); 
450            if (i==10257){
451                System.out.print("");
452            }            
453            System.out.print(i + "\t\t" +(i+2)/3 +"\t" + canonicalTranslation.getChromosomePositionFromBASE(i) + "\t");
454            System.out.print(canonicalTranslation.getTranslatedSequenceAsString(i, i) +"\t");
455            System.out.print(canonicalTranslation.getTranslatedSequenceAsString(3*((i+2)/3)-2, 3*((i+2)/3) )+"\t");
456            System.out.print(canonicalTranslation.getProteinSequenceAsString((i+2)/3,(i+2)/3) +"\t");
457            System.out.print(canonicalTranslation.getPrimaryTranscriptPositionFromBASE(i) + "\t\t");
458            System.out.print(canonicalTranslation.getProcessedTranscriptPositionFromBASE(i) + "\n");            
459
460        }
461
462        /*
463        Translation     AA      chromosome      base    codon   AA      PrimaryT        ProcessedT
464        1               1       32886062        A       ATG     M       30              30
465        654             218     32885409        G       CAG     Q       683             683
466        655             219     32884868        T       TTT     F       1224            684
467        747             249     32884776        G       AAG     K       1316            776
468        748             250     32882897        G       GTT     V       3195            777
469        822             274     32882823        G       CAG     Q       3269            851
470        823             275     32878159        A       ACC     T       7933            852
471        966             322     32878016        A       TGA     *       8076            995  
472        */
473    }
474}