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.Mapping;
031
032public class TranscriptionAndTranslation {
033
034    
035    //demonstrates integration of BioJava3 transcription and translation functions
036    //and JEnsembl's retrieval and stitching together of exon sequences
037    //uses BioJava transcription engines for translation
038    //the datasource is queried to use the correct codon table if specified
039    //moving between the various axes is demonstrated
040    //i.e. Chromosome, Primary Transcript, Processed Transcript (mRNA), Translation and Protein
041    //and retrieveal of actual sequence data from these various axes
042
043    
044
045    public static void main(String[] args) throws Exception {
046
047        DBRegistry reg = DBRegistry.createRegistryForDataSource(DataSource.ENSEMBLDB);
048        DBSpecies sp = reg.getSpeciesByAlias("human");
049
050
051        //demo human gene on forward strand, results in comments are from release 68
052        DAGene brca2 = sp.getGeneByStableID("ENSG00000139618", "68");
053        //current version e.g. 74 is a little different
054        //DAGene brca2 = sp.getGeneByStableID("ENSG00000139618");
055        Mapping chromosomeMapping = brca2.getChromosomeMapping();
056        Coordinate.Strand  orientation = chromosomeMapping.getTargetCoordinates().getStrand();
057        DAChromosome chr = (DAChromosome) chromosomeMapping.getTarget();
058        Coordinate targetCoordinates = chromosomeMapping.getTargetCoordinates();
059        Coordinate sourceCoordinates = chromosomeMapping.getSourceCoordinates();
060
061        System.out.println(brca2.getType() + " " + brca2.getDisplayName() + " " + brca2.getStableID());
062        System.out.println("\t" + chr.getType() + " " + chr.getChromosomeName() + " " + targetCoordinates);
063        if (Coordinate.Strand.REVERSE_STRAND.equals(orientation)) {
064            System.out.println("\tChromosome sequence: " + targetCoordinates.getLength() + " "
065                + chr.getReverseComplementSequenceAsString(targetCoordinates.getEnd(), targetCoordinates.getEnd() - 29) + ".....");
066        } else {
067            System.out.println("\tChromosome sequence: " + targetCoordinates.getLength() + " "
068                + chr.getSequenceAsString(targetCoordinates.getStart(), targetCoordinates.getStart() + 29) + ".....");
069        }
070        System.out.println("\tDNASequence: " + brca2.getSequence().getLength() + " : "
071                + brca2.getSequenceAsString(1, 30) + ".....");
072        System.out.println("\tRNASequence: " + brca2.getRNASequence().getLength() + " : "
073                + brca2.getRNASequence().getSequenceAsString(1, 30, null) + ".....");
074        
075        /*
076        gene BRCA2 ENSG00000139618
077                chromosome 13 32889611 - 32973805 (FORWARD_STRAND)
078                Chromosome sequence: 84195 GGGCTTGTGGCGCGAGCTTCTGAAACTAGG.....
079                DNASequence: 84195 : GGGCTTGTGGCGCGAGCTTCTGAAACTAGG.....
080                RNASequence: 84195 : GGGCUUGUGGCGCGAGCUUCUGAAACUAGG.....
081        */        
082
083        System.out.println("");
084        System.out.println("Gene coordinate conversion: " + 1 + " --> " + brca2.convertToTargetPosition(1));
085        System.out.println("Gene coordinate conversion: " + -1 + " --> " + brca2.convertToTargetPosition(-1));
086        System.out.println("Gene coordinate conversion: " + 1 + " --> " + brca2.convertToTargetPosition(1));
087        System.out.println("Gene coordinate conversion: " + -10 + " --> " + brca2.convertToTargetPosition(-10));
088        System.out.println("Gene coordinate conversion: " + 100 + " --> " + brca2.convertToTargetPosition(100));
089
090        /*
091        Gene coordinate conversion: 1 --> 32889611
092        Gene coordinate conversion: -1 --> 32889610
093        Gene coordinate conversion: 1 --> 32889611
094        Gene coordinate conversion: -10 --> 32889601
095        Gene coordinate conversion: 100 --> 32889710        
096        */
097        
098        System.out.println("");
099        DATranscript canonicalTranscript = brca2.getCanonicalTranscript();
100        Mapping chromosomeMapping1 = canonicalTranscript.getChromosomeMapping();
101        DAChromosome chr1 = (DAChromosome) chromosomeMapping1.getTarget();
102        targetCoordinates = chromosomeMapping1.getTargetCoordinates();
103
104        
105
106        System.out.println("");
107        System.out.println(canonicalTranscript.getType() + " " + canonicalTranscript.getDisplayName()
108                + " " + canonicalTranscript.getStableID());
109        System.out.println("\t" + chr1.getType() + " " + chr1.getChromosomeName() + " " + targetCoordinates);
110        
111        
112         System.out.println("getAnalysisId "+canonicalTranscript.getAnalysisID());
113         System.out.println("getAnalysis "+canonicalTranscript.getAnalysis().getDisplayLabel());      
114         System.out.println("getAnalysisDescription "+canonicalTranscript.getAnalysis().getDescription());      
115         System.out.println("getCCDS "+canonicalTranscript.getCcdsID());      
116        
117        if (Coordinate.Strand.REVERSE_STRAND.equals(targetCoordinates.getStrand())) {
118            System.out.println("\tChromosome sequence: " + targetCoordinates.getLength() + " "
119                + chr.getReverseComplementSequenceAsString(targetCoordinates.getEnd(), targetCoordinates.getEnd() - 29) + ".....");
120        } else {
121            System.out.println("\tChromosome sequence: " + targetCoordinates.getLength() + " "
122                + chr.getSequenceAsString(targetCoordinates.getStart(), targetCoordinates.getStart() + 29) + ".....");
123        }    
124        System.out.println("\tDNASequence: " + canonicalTranscript.getSequence().getLength() + " : "
125                + canonicalTranscript.getSequenceAsString(1, 30) + ".....");
126        System.out.println("\tRNASequence: " + canonicalTranscript.getRNASequence().getLength() + " : "
127                + canonicalTranscript.getRNASequence().getSequenceAsString(1, 30, null) + ".....");
128        
129        
130        /*
131        transcript BRCA2-001 ENST00000380152
132                chromosome 13 32889611 - 32973347 (FORWARD_STRAND)
133                Chromosome sequence: 83737 GGGCTTGTGGCGCGAGCTTCTGAAACTAGG.....
134                DNASequence: 83737 : GGGCTTGTGGCGCGAGCTTCTGAAACTAGG.....
135                RNASequence: 83737 : GGGCUUGUGGCGCGAGCUUCUGAAACUAGG.....      
136        */
137
138        System.out.println("");
139        System.out.println("Transcript coordinate conversion: " + 1 + " --> " + canonicalTranscript.convertToTargetPosition(1));//32889611
140        System.out.println("Transcript coordinate conversion: " + -1 + " --> " + canonicalTranscript.convertToTargetPosition(-1));//32889610
141        System.out.println("Transcript coordinate conversion: " + 10 + " --> " + canonicalTranscript.convertToTargetPosition(10));//32889620
142        System.out.println("Transcript coordinate conversion: " + -10 + " --> " + canonicalTranscript.convertToTargetPosition(-10));//32889601
143        System.out.println("Transcript coordinate conversion: " + 50 + " --> " + canonicalTranscript.convertToTargetPosition(50));//32889660
144        System.out.println("Transcript coordinate conversion: " + 194 + " --> " + canonicalTranscript.convertToTargetPosition(194));//32889804
145        System.out.println("Transcript coordinate conversion: " + 948 + " --> " + canonicalTranscript.convertToTargetPosition(948));//32890558
146        System.out.println("Transcript coordinate conversion: " + 10627 + " --> " + canonicalTranscript.convertToTargetPosition(10627));//32900237
147        System.out.println("Transcript coordinate conversion: " + 39387 + " --> " + canonicalTranscript.convertToTargetPosition(39387));//32928997
148        System.out.println("Transcript coordinate conversion: " + 83737 + " --> " + canonicalTranscript.convertToTargetPosition(83737));//32973347
149
150        
151        System.out.println("");
152        Collection<DAExon> exons = canonicalTranscript.getExons();
153        System.out.println("Canonical Transcript Exons: " + exons.size());
154        //Canonical Transcript Exons: 27
155        for (DAExon exon : exons) {
156            System.out.println("\t" + exon.getRank() + ": " + exon.getChromosomeMapping().getTargetCoordinates()
157                    + " [" + exon.getChromosomeMapping().getTargetCoordinates().getLength() + "] "
158                    + exon.getSequenceAsString(1, 30) + ".... phase:" + exon.getPhase() + "/" + exon.getEndPhase());
159        }
160        
161        /*
162        1: 32889611 - 32889804 (FORWARD_STRAND) [194] GGGCTTGTGGCGCGAGCTTCTGAAACTAGG.... phase:-1/-1
163        2: 32890559 - 32890664 (FORWARD_STRAND) [106] ACTTATTTACCAAGCATTGGAGGAATATCG.... phase:-1/1
164        3: 32893214 - 32893462 (FORWARD_STRAND) [249] ATTTAGGACCAATAAGTCTTAATTGGTTTG.... phase:1/1
165        4: 32899213 - 32899321 (FORWARD_STRAND) [109] GAAGGAATGTTCCCAATAGTAGACATAAAA.... phase:1/2
166        5: 32900238 - 32900287 (FORWARD_STRAND) [50] TCCTGTTGTTCTACAATGTACACATGTAAC.... phase:2/1
167        6: 32900379 - 32900419 (FORWARD_STRAND) [41] TGGTATGTGGGAGTTTGTTTCATACACCAA.... phase:1/0
168        7: 32900636 - 32900750 (FORWARD_STRAND) [115] GGTCGTCAGACACCAAAACATATTTCTGAA.... phase:0/1
169        8: 32903580 - 32903629 (FORWARD_STRAND) [50] TCAGAAATGAAGAAGCATCTGAAACTGTAT.... phase:1/0
170        9: 32905056 - 32905167 (FORWARD_STRAND) [112] AATGTGAAAAGCTATTTTTCCAATCATGAT.... phase:0/1
171        10: 32906409 - 32907524 (FORWARD_STRAND) [1116] GATTTGGAAAAACATCAGGGAATTCATTTA.... phase:1/1
172        11: 32910402 - 32915333 (FORWARD_STRAND) [4932] GTTTATTGCATTCTTCTGTGAAAAGAAGCT.... phase:1/1
173        12: 32918695 - 32918790 (FORWARD_STRAND) [96] GAGAACCCTCAATCAAAAGAAACTTATTAA.... phase:1/1
174        13: 32920964 - 32921033 (FORWARD_STRAND) [70] GCACAATAAAAGATCGAAGATTGTTTATGC.... phase:1/2
175        14: 32928998 - 32929425 (FORWARD_STRAND) [428] CACAACTAAGGAACGTCAAGAGATACAGAA.... phase:2/1
176        15: 32930565 - 32930746 (FORWARD_STRAND) [182] ATTTAATTACAAGTCTTCAGAATGCCAGAG.... phase:1/0
177        16: 32931879 - 32932066 (FORWARD_STRAND) [188] CTGTATACGTATGGCGTTTCTAAACATTGC.... phase:0/2
178        17: 32936660 - 32936830 (FORWARD_STRAND) [171] GGCTCTGTGTGACACTCCAGGTGTGGATCC.... phase:2/2
179        18: 32937316 - 32937670 (FORWARD_STRAND) [355] ATATGATACGGAAATTGATAGAAGCAGAAG.... phase:2/0
180        19: 32944539 - 32944694 (FORWARD_STRAND) [156] ATTTCTGCTAACAGTACTCGGCCTGCTCGC.... phase:0/0
181        20: 32945093 - 32945237 (FORWARD_STRAND) [145] TGGATGGAGAAGACATCATCTGGATTATAC.... phase:0/1
182        21: 32950807 - 32950928 (FORWARD_STRAND) [122] AAAACACAACAAAACCATATTTACCATCAC.... phase:1/0
183        22: 32953454 - 32953652 (FORWARD_STRAND) [199] GGTTATTTCAGTGAAGAGCAGTTAAGAGCC.... phase:0/1
184        23: 32953887 - 32954050 (FORWARD_STRAND) [164] TTATACTGAGTATTTGGCGTCCATCATCAG.... phase:1/0
185        24: 32954144 - 32954282 (FORWARD_STRAND) [139] GTTTCAGATGAAATTTTATTTCAGATTTAC.... phase:0/1
186        25: 32968826 - 32969070 (FORWARD_STRAND) [245] GACTTGCCCCTTTCGTCTATTTGTCAGACG.... phase:1/0
187        26: 32971035 - 32971181 (FORWARD_STRAND) [147] AATATTGACATACTTTGCAATGAAGCAGAA.... phase:0/0
188        27: 32972299 - 32973347 (FORWARD_STRAND) [1049] ATGTCTTCTCCTAATTGTGAGATATATTAT.... phase:0/-1        
189        */
190
191        System.out.println("");
192        System.out.println("Primary Transcript coordinate : " + -100 + " --> Processed Transcript: "
193                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(-100));//-100
194        System.out.println("Primary Transcript coordinate : " + -1 + " --> Processed Transcript: "
195                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(-1));//-1
196        System.out.println("Primary Transcript coordinate : " + 1 + " --> Processed Transcript: "
197                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(1));//1
198        System.out.println("Primary Transcript coordinate : " + 194 + " --> Processed Transcript: "
199                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(194));//194
200        System.out.println("Primary Transcript coordinate : " + 195 + " --> Processed Transcript: "
201                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(195));//null
202        System.out.println("Primary Transcript coordinate : " + 948 + " --> Processed Transcript: "
203                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(948));//null
204        System.out.println("Primary Transcript coordinate : " + 949 + " --> Processed Transcript: "
205                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(949));//195
206        System.out.println("Primary Transcript coordinate : " + 83737 + " --> Processed Transcript: "
207                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(83737));//10930
208        System.out.println("Primary Transcript coordinate : " + 83738 + " --> Processed Transcript: "
209                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(83738));//10931
210        System.out.println("Primary Transcript coordinate : " + 837380 + " --> Processed Transcript: "
211                + canonicalTranscript.convertPrimaryToProcessedTranscriptPosition(837380));//764573
212
213        System.out.println("");
214        System.out.println("Processed Transcript coordinate : " + -100 + " --> Primary Transcript: "
215                + canonicalTranscript.convertProcessedToPrimaryTranscriptPosition(-100));//-100
216        System.out.println("Processed Transcript coordinate : " + -1 + " --> Primary Transcript: "
217                + canonicalTranscript.convertProcessedToPrimaryTranscriptPosition(-1));//-1
218        System.out.println("Processed Transcript coordinate : " + 1 + " --> Primary Transcript: "
219                + canonicalTranscript.convertProcessedToPrimaryTranscriptPosition(1));//1
220        System.out.println("Processed Transcript coordinate : " + 194 + " --> Primary Transcript: "
221                + canonicalTranscript.convertProcessedToPrimaryTranscriptPosition(194));//194
222        System.out.println("Processed Transcript coordinate : " + 195 + " --> Primary Transcript: "
223                + canonicalTranscript.convertProcessedToPrimaryTranscriptPosition(195));//949
224        System.out.println("Processed Transcript coordinate : " + 10930 + " --> Primary Transcript: "
225                + canonicalTranscript.convertProcessedToPrimaryTranscriptPosition(10930));//83737
226        System.out.println("Processed Transcript coordinate : " + 10931 + " --> Primary Transcript: "
227                + canonicalTranscript.convertProcessedToPrimaryTranscriptPosition(10931));//83738
228        System.out.println("Processed Transcript coordinate : " + 764573 + " --> Primary Transcript: "
229                + canonicalTranscript.convertProcessedToPrimaryTranscriptPosition(764573));//837380
230
231        System.out.println("");
232        System.out.println("Processed Transcript coordinate : " + -100 + " --> Chromosome: "
233                + canonicalTranscript.convertProcessedTranscriptPositionToChromosome(-100));//32889511
234        System.out.println("Processed Transcript coordinate : " + -1 + " --> Chromosome: "
235                + canonicalTranscript.convertProcessedTranscriptPositionToChromosome(-1));//32889610
236        System.out.println("Processed Transcript coordinate : " + 1 + " --> Chromosome: "
237                + canonicalTranscript.convertProcessedTranscriptPositionToChromosome(1));//32889611
238        System.out.println("Processed Transcript coordinate : " + 194 + " --> Chromosome: "
239                + canonicalTranscript.convertProcessedTranscriptPositionToChromosome(194));//32889804
240        System.out.println("Processed Transcript coordinate : " + 195 + " --> Chromosome: "
241                + canonicalTranscript.convertProcessedTranscriptPositionToChromosome(195));//32890559
242        System.out.println("Processed Transcript coordinate : " + 10930 + " --> Chromosome: "
243                + canonicalTranscript.convertProcessedTranscriptPositionToChromosome(10930));//32973347
244        System.out.println("Processed Transcript coordinate : " + 10931 + " --> Chromosome: "
245                + canonicalTranscript.convertProcessedTranscriptPositionToChromosome(10931));//32973348
246        System.out.println("Processed Transcript coordinate : " + 764573 + " --> Chromosome: "
247                + canonicalTranscript.convertProcessedTranscriptPositionToChromosome(764573));//33726990
248
249        System.out.println("");
250        
251        for (DATranscript tr: brca2.getTranscripts()) {
252            System.out.println("Transcript "+tr.getStableID() +" CCDS ID: "+tr.getCcdsID());
253        }                
254        System.out.println("Canonical Transcript " + (canonicalTranscript.isTranslated() ? "is Translated" : "not Translated"));
255        //Canonical Transcript is Translated
256        DATranslation canonicalTranslation = brca2.getCanonicalTranslation();
257
258        System.out.println("\ttranslation:" + canonicalTranslation.getStableID());
259        //      translation:ENSP00000369497
260        DAExon exon = canonicalTranslation.getFirstExon();
261
262        System.out.println("");
263        System.out.println("first translated exon (exon-" + exon.getRank() + "): " + exon.getChromosomeMapping().getTargetCoordinates()
264                + " [" + exon.getChromosomeMapping().getTargetCoordinates().getLength() + "] "
265                + exon.getSequenceAsString(1, 30) + ".... phase:" + exon.getPhase() + "/" + exon.getEndPhase());
266        System.out.println("Exon 1 coordinate conversion: " + 1 + " --> " + exon.convertToTargetPosition(1));
267        System.out.println("Exon 1 coordinate conversion: " + -1 + " --> " + exon.convertToTargetPosition(-1));
268        System.out.println("Exon 1 coordinate conversion: " + 10 + " --> " + exon.convertToTargetPosition(10));
269        System.out.println("Exon 1 coordinate conversion: " + -10 + " --> " + exon.convertToTargetPosition(-10));
270
271        /*
272        first translated exon (exon-2): 32890559 - 32890664 (FORWARD_STRAND) [106] ACTTATTTACCAAGCATTGGAGGAATATCG.... phase:-1/1
273        Exon 1 coordinate conversion: 1 --> 32890559
274        Exon 1 coordinate conversion: -1 --> 32890558
275        Exon 1 coordinate conversion: 10 --> 32890568
276        Exon 1 coordinate conversion: -10 --> 32890549        
277        */
278        
279        System.out.println("");
280        exon = canonicalTranslation.getLastExon();
281
282        System.out.println("\tlast translated exon: (exon-" + exon.getRank() + "): " + exon.getChromosomeMapping().getTargetCoordinates()
283                + " [" + exon.getChromosomeMapping().getTargetCoordinates().getLength() + "] "
284                + exon.getSequenceAsString(1, 30) + ".... phase:" + exon.getPhase() + "/" + exon.getEndPhase());
285        System.out.println("last Exon coordinate conversion: " + 1 + " --> " + exon.convertToTargetPosition(1));
286        System.out.println("last Exon coordinate conversion: " + -1 + " --> " + exon.convertToTargetPosition(-1));
287        System.out.println("last Exon coordinate conversion: " + 10 + " --> " + exon.convertToTargetPosition(10));
288        System.out.println("last Exon coordinate conversion: " + -10 + " --> " + exon.convertToTargetPosition(-10));
289
290        /*
291                last translated exon: (exon-27): 32972299 - 32973347 (FORWARD_STRAND) [1049] ATGTCTTCTCCTAATTGTGAGATATATTAT.... phase:0/-1
292        last Exon coordinate conversion: 1 --> 32972299
293        last Exon coordinate conversion: -1 --> 32972298
294        last Exon coordinate conversion: 10 --> 32972308
295        last Exon coordinate conversion: -10 --> 32972289        
296        */
297        
298        System.out.println("");
299        System.out.println("First exon  start:" + canonicalTranslation.getFirstExonStart() + " - "
300                + "Last exon end:" + canonicalTranslation.getLastExonEnd());
301        //First exon  start:40 - Last exon end:609
302
303        System.out.println("Translateable Sequence:");
304        System.out.print(canonicalTranslation.getTranslatedSequenceAsString(1, 30) + ".....  ");
305        Integer len = canonicalTranslation.getTranslatedSequenceAsString().length();
306        System.out.println(canonicalTranslation.getTranslatedSequenceAsString(len-29, len));
307        //ATGCCTATTGGATCCAAAGAGAGGCCAACA.....  GACACAATTACAACTAAAAAATATATCTAA
308        System.out.println("");
309        
310        System.out.println("PROTEIN: ");
311        System.out.print(canonicalTranslation.getProteinSequence().getSequenceAsString().subSequence(0, 30) + ".....  ");
312        len = canonicalTranslation.getProteinSequence().getSequenceAsString().length();
313        System.out.println(canonicalTranslation.getProteinSequence().getSequenceAsString().subSequence(len-8,len) );
314        //MPIGSKERPTFFEIFKTRCNKADLGPISLN.....  TITTKKYI
315        System.out.print(canonicalTranslation.getProteinSequenceAsString(1, 30) + ".....  ");
316        len = canonicalTranslation.getProteinSequence().getSequenceAsString().length();
317        System.out.println(canonicalTranslation.getProteinSequence().getSequenceAsString().subSequence(len-8,len) );
318        //MPIGSKERPTFFEIFKTRCNKADLGPISLN.....  TITTKKYI
319        System.out.println("");
320        
321        System.out.println("Translation: 1 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(1));//988
322        System.out.println("Translation: 10 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(10));//997
323        System.out.println("Translation: 100 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(100));//3636
324        System.out.println("Translation: 65 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(65));//1052
325        System.out.println("Translation: 66 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(66));//1053
326        System.out.println("Translation: 67 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(67));//1054
327        System.out.println("Translation: 68 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromBASE(68));//3604
328        
329        System.out.println("PrimaryTranscript: 988 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(988));//1
330        System.out.println("PrimaryTranscript: 997 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(997));//10
331        System.out.println("PrimaryTranscript: 3636 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(3636));//100
332        System.out.println("PrimaryTranscript: 1052 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(1052));//65
333        System.out.println("PrimaryTranscript: 1053 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(1053));//66
334        System.out.println("PrimaryTranscript: 1054 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(1054));//67
335        System.out.println("PrimaryTranscript: 1055 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(1055));//null
336        System.out.println("PrimaryTranscript: 3604 --> Translation: " + canonicalTranslation.getBasePositionFromPrimaryTranscript(3604));//68
337
338        System.out.println("");
339        
340        System.out.println("Translation: 1 -->  ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(1));//234
341        System.out.println("Translation: 10 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(10));//243
342        System.out.println("Translation: 100 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(100));//333
343        System.out.println("Translation: 65 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(65));//298
344        System.out.println("Translation: 66 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(66));//299
345        System.out.println("Translation: 67 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(67));//300
346        System.out.println("Translation: 68 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromBASE(68));//301
347        
348        System.out.println("ProcessedTranscript: 234 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(234));//1
349        System.out.println("ProcessedTranscript: 243 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(243));//10
350        System.out.println("ProcessedTranscript: 333 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(333));//100
351        System.out.println("ProcessedTranscript: 298 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(298));//65
352        System.out.println("ProcessedTranscript: 299 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(299));//66
353        System.out.println("ProcessedTranscript: 300 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(300));//67
354        System.out.println("ProcessedTranscript: 301 --> Translation: " + canonicalTranslation.getBasePositionFromProcessedTranscript(301));//68
355
356        System.out.println("");
357        
358        System.out.println("Translation: 1 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromBASE(1));//32890598
359        System.out.println("Translation: 10 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromBASE(10));//32890607
360        System.out.println("Translation: 100 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromBASE(100));//32893246
361        System.out.println("Translation: 65 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromBASE(65));//32890662
362        System.out.println("Translation: 66 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromBASE(66));//32890663
363        System.out.println("Translation: 67 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromBASE(67));//32890664
364        System.out.println("Translation: 68 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromBASE(68));//32893214
365        
366        System.out.println("Chromosome: 32890598 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32890598));//1
367        System.out.println("Chromosome: 32890607 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32890607));//10
368        System.out.println("Chromosome: 32893246 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32893246));//100
369        System.out.println("Chromosome: 32890662 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32890662));//65
370        System.out.println("Chromosome: 32890663 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32890663));//66
371        System.out.println("Chromosome: 32890664 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32890664));//67
372        System.out.println("Chromosome: 32890665 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32890665));//null
373        System.out.println("Chromosome: 32893214 --> Translation: " + canonicalTranslation.getBasePositionFromChromosome(32893214));//68
374        
375        System.out.println("");
376        
377        System.out.println("Amino Acid: 1 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromAA(1));//988 - 990 (FORWARD_STRAND)
378        System.out.println("Amino Acid: 3 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromAA(3));//994 - 996 (FORWARD_STRAND)
379        System.out.println("Amino Acid: 33 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromAA(33));//3633 - 3635 (FORWARD_STRAND)
380        System.out.println("Amino Acid: 23 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromAA(23));//1054 - 3605 (FORWARD_STRAND)
381        System.out.println("Amino Acid: 24 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromAA(24));//3606 - 3608 (FORWARD_STRAND)
382        System.out.println("Amino Acid: 25 --> PrimaryTranscript: " + canonicalTranslation.getPrimaryTranscriptPositionFromAA(25));//3609 - 3611 (FORWARD_STRAND)
383        
384        System.out.println("PrimaryTranscript: 988 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(988));//1
385        System.out.println("PrimaryTranscript: 989 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(989));//1
386        System.out.println("PrimaryTranscript: 990 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(990));//1
387        System.out.println("PrimaryTranscript: 994 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(994));//3
388        System.out.println("PrimaryTranscript: 3633 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(3633));//33
389        System.out.println("PrimaryTranscript: 1054 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(1054));//23
390        System.out.println("PrimaryTranscript: 1055 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(1055));//null
391        System.out.println("PrimaryTranscript: 3606 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(3606));//24
392        System.out.println("PrimaryTranscript: 3609 --> Amino Acid: " + canonicalTranslation.getAAPositionFromPrimaryTranscript(3609));//25
393                
394        System.out.println("");
395        
396        System.out.println("Amino Acid: 1 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromAA(1));//234 - 236 (FORWARD_STRAND)
397        System.out.println("Amino Acid: 3 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromAA(3));//240 - 242 (FORWARD_STRAND)
398        System.out.println("Amino Acid: 33 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromAA(33));//330 - 332 (FORWARD_STRAND)
399        System.out.println("Amino Acid: 23 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromAA(23));//300 - 302 (FORWARD_STRAND)
400        System.out.println("Amino Acid: 24 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromAA(24));//303 - 305 (FORWARD_STRAND)
401        System.out.println("Amino Acid: 25 --> ProcessedTranscript: " + canonicalTranslation.getProcessedTranscriptPositionFromAA(25));//306 - 308 (FORWARD_STRAND)
402        
403        System.out.println("ProcessedTranscript: 234 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(234));//1
404        System.out.println("ProcessedTranscript: 235 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(235));//1
405        System.out.println("ProcessedTranscript: 236 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(236));//1
406        System.out.println("ProcessedTranscript: 240 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(240));//3
407        System.out.println("ProcessedTranscript: 330 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(330));//33
408        System.out.println("ProcessedTranscript: 300 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(300));//23
409        System.out.println("ProcessedTranscript: 303 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(303));//24
410        System.out.println("ProcessedTranscript: 306 --> Amino Acid: " + canonicalTranslation.getAAPositionFromProcessedTranscript(306));//25
411        
412        System.out.println("");
413        
414        System.out.println("Amino Acid: 1 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromAA(1));//32890598 - 32890600 (FORWARD_STRAND)
415        System.out.println("Amino Acid: 3 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromAA(3));//32890604 - 32890606 (FORWARD_STRAND)
416        System.out.println("Amino Acid: 33 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromAA(33));//32893243 - 32893245 (FORWARD_STRAND)
417        System.out.println("Amino Acid: 23 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromAA(23));//32890664 - 32893215 (FORWARD_STRAND)
418        System.out.println("Amino Acid: 24 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromAA(24));// 32893216 - 32893218 (FORWARD_STRAND)
419        System.out.println("Amino Acid: 25 --> Chromosome: " + canonicalTranslation.getChromosomePositionFromAA(25));//32893219 - 32893221 (FORWARD_STRAND)
420
421        System.out.println("Chromosome: 32890598 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32890598));//1
422        System.out.println("Chromosome: 32890599 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32890599));//1
423        System.out.println("Chromosome: 32890600 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32890600));//1
424        System.out.println("Chromosome: 32890604 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32890604));//3
425        System.out.println("Chromosome: 32893243 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32893243));//33
426        System.out.println("Chromosome: 32890664 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32890664));//23
427        System.out.println("Chromosome: 32890665 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32890665));//null
428        System.out.println("Chromosome: 32893216 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32893216));//24
429        System.out.println("Chromosome: 32893219 --> Amino Acid: " + canonicalTranslation.getAAPositionFromChromosome(32893219));//25        
430        
431        System.out.println("");
432        
433        System.out.println("Translation\tAA\tchromosome\tbase\tcodon\tAA\tPrimaryT\tProcessedT");
434        for (Mapping m: canonicalTranslation.getTranslationMappings()) {
435            
436            int i = m.getSourceCoordinates().getStart(); 
437            System.out.print(i + "\t\t" +(i+2)/3 +"\t" + canonicalTranslation.getChromosomePositionFromBASE(i) + "\t");
438            System.out.print(canonicalTranslation.getTranslatedSequenceAsString(i, i) +"\t");
439            System.out.print(canonicalTranslation.getTranslatedSequenceAsString(3*((i+2)/3)-2, 3*((i+2)/3) )+"\t");
440            System.out.print(canonicalTranslation.getProteinSequenceAsString((i+2)/3,(i+2)/3) +"\t");
441            System.out.print(canonicalTranslation.getPrimaryTranscriptPositionFromBASE(i) + "\t\t");
442            System.out.print(canonicalTranslation.getProcessedTranscriptPositionFromBASE(i) + "\n");    
443            
444            i = m.getSourceCoordinates().getEnd(); 
445            if (i==10257){
446                System.out.print("");
447            }            
448            System.out.print(i + "\t\t" +(i+2)/3 +"\t" + canonicalTranslation.getChromosomePositionFromBASE(i) + "\t");
449            System.out.print(canonicalTranslation.getTranslatedSequenceAsString(i, i) +"\t");
450            System.out.print(canonicalTranslation.getTranslatedSequenceAsString(3*((i+2)/3)-2, 3*((i+2)/3) )+"\t");
451            System.out.print(canonicalTranslation.getProteinSequenceAsString((i+2)/3,(i+2)/3) +"\t");
452            System.out.print(canonicalTranslation.getPrimaryTranscriptPositionFromBASE(i) + "\t\t");
453            System.out.print(canonicalTranslation.getProcessedTranscriptPositionFromBASE(i) + "\n");            
454
455        }
456
457        /*
458        Translation     AA      chromosome      base    codon   AA      PrimaryT        ProcessedT
459        1               1       32890598        A       ATG     M       988             234
460        67              23      32890664        G       GAT     D       1054            300
461        68              23      32893214        A       GAT     D       3604            301
462        316             106     32893462        G       GGA     G       3852            549
463        317             106     32899213        G       GGA     G       9603            550
464        425             142     32899321        G       AGT     S       9711            658
465        426             142     32900238        T       AGT     S       10628           659
466        475             159     32900287        G       GTG     V       10677           708
467        476             159     32900379        T       GTG     V       10769           709
468        516             172     32900419        G       AAG     K       10809           749
469        517             173     32900636        G       GGT     G       11026           750
470        631             211     32900750        G       GTC     V       11140           864
471        632             211     32903580        T       GTC     V       13970           865
472        681             227     32903629        T       GCT     A       14019           914
473        682             228     32905056        A       AAT     N       15446           915
474        793             265     32905167        G       GGA     G       15557           1026
475        794             265     32906409        G       GGA     G       16799           1027
476        1909            637     32907524        G       GGT     G       17914           2142
477        1910            637     32910402        G       GGT     G       20792           2143
478        6841            2281    32915333        G       GGA     G       25723           7074
479        6842            2281    32918695        G       GGA     G       29085           7075
480        6937            2313    32918790        G       GGC     G       29180           7170
481        6938            2313    32920964        G       GGC     G       31354           7171
482        7007            2336    32921033        G       CGC     R       31423           7240
483        7008            2336    32928998        C       CGC     R       39388           7241
484        7435            2479    32929425        G       GAT     D       39815           7668
485        7436            2479    32930565        A       GAT     D       40955           7669
486        7617            2539    32930746        G       CAG     Q       41136           7850
487        7618            2540    32931879        C       CTG     L       42269           7851
488        7805            2602    32932066        G       AGG     R       42456           8038
489        7806            2602    32936660        G       AGG     R       47050           8039
490        7976            2659    32936830        G       AGA     R       47220           8209
491        7977            2659    32937316        A       AGA     R       47706           8210
492        8331            2777    32937670        G       AAG     K       48060           8564
493        8332            2778    32944539        A       ATT     I       54929           8565
494        8487            2829    32944694        G       CAG     Q       55084           8720
495        8488            2830    32945093        T       TGG     W       55483           8721
496        8632            2878    32945237        G       GAA     E       55627           8865
497        8633            2878    32950807        A       GAA     E       61197           8866
498        8754            2918    32950928        G       GAG     E       61318           8987
499        8755            2919    32953454        G       GGT     G       63844           8988
500        8953            2985    32953652        G       GTT     V       64042           9186
501        8954            2985    32953887        T       GTT     V       64277           9187
502        9117            3039    32954050        G       CCG     P       64440           9350
503        9118            3040    32954144        G       GTT     V       64534           9351
504        9256            3086    32954282        G       GGA     G       64672           9489
505        9257            3086    32968826        G       GGA     G       79216           9490
506        9501            3167    32969070        G       GAG     E       79460           9734
507        9502            3168    32971035        A       AAT     N       81425           9735
508        9648            3216    32971181        G       CTG     L       81571           9881
509        9649            3217    32972299        A       ATG     M       82689           9882
510        10257           3419    32972907        A       TAA     *       83297           10490        
511        
512        */
513    }
514}