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 024 025import org.biojava3.core.sequence.DNASequence; 026import org.biojava3.core.sequence.Strand; 027import org.biojava3.core.sequence.compound.NucleotideCompound; 028import org.biojava3.core.sequence.template.Sequence; 029import org.biojava3.core.sequence.template.SequenceView; 030import org.biojava3.core.sequence.views.ComplementSequenceView; 031import org.biojava3.core.sequence.views.ReversedSequenceView; 032import uk.ac.roslin.ensembl.datasourceaware.core.DADNASequence; 033 034/** 035 * 036 * @author paterson 037 */ 038public class DNASequences { 039 040 //JEnsembl Datasource Aware DNA Sequences extends org.biojava3.core.sequence.DNASequence 041 // but with modified behavious specified by implementing uk.ac.roslin.ensembl.model.core.DNASequence 042 043 //here we look at basic sequence functions of DADNASequences whish are not actually datasource aware 044 //use of BioJava STRAND is deprecated, Jensembl works in a Positive context unles methods specify 'ReverseComplement' 045 046 047 public static void main(String[] args) throws Exception { 048 049 050 DADNASequence seq = new DADNASequence("AAAAACCCCGGGTT"); 051 052 System.out.println("seq.toString(): " + seq.toString()); 053 System.out.println("seq.getSequenceAsString(): " + seq.getSequenceAsString()); 054 System.out.println("seq.getReverseComplementSequenceAsString(): " + seq.getReverseComplementSequenceAsString()); 055 056 System.out.println("seq.getSequenceAsString(1, 14, Strand.POSITIVE): " + seq.getSequenceAsString(1, 14, Strand.POSITIVE)); 057 System.out.println("seq.getSequenceAsString(1, 14): " + seq.getSequenceAsString(1, 14)); 058 System.out.println("seq.getSequenceAsString(11, 14, Strand.POSITIVE): " + seq.getSequenceAsString(11, 14, Strand.POSITIVE)); 059 System.out.println("seq.getSequenceAsString(11, 14): " + seq.getSequenceAsString(11, 14)); 060 System.out.println("seq.getSequenceAsString(1, 14, Strand.NEGATIVE): " + seq.getSequenceAsString(1, 14, Strand.NEGATIVE)); 061 System.out.println("seq.getReverseComplementSequenceAsString(1, 14): " + seq.getReverseComplementSequenceAsString(1, 14)); 062 System.out.println("seq.getSequenceAsString(11, 14, Strand.NEGATIVE): " + seq.getSequenceAsString(11, 14, Strand.NEGATIVE)); 063 System.out.println("seq.getReverseComplementSequenceAsString(11, 14): " + seq.getReverseComplementSequenceAsString(11, 14)); 064 System.out.println("seq.getReverseComplement().getSequenceAsString(): " + seq.getReverseComplement().getSequenceAsString()); 065 066 067 068 System.out.println("seq.getReverseComplementSequenceAsString(4, 13): "+seq.getReverseComplementSequenceAsString(4, 13)); 069 System.out.println("(new DNASequence(seq.getSubSequence(4, 13).getSequenceAsString())).getReverseComplement().getSequenceAsString(): "+ 070 (new DNASequence(seq.getSubSequence(4, 13).getSequenceAsString())).getReverseComplement().getSequenceAsString()); 071 System.out.println("seq.getReverseComplement().getSequenceAsString().substring(seq.getBioEnd() - 13, seq.getBioEnd() - 4 + 1): "+ 072 seq.getReverseComplement().getSequenceAsString().substring(seq.getBioEnd() - 13, seq.getBioEnd() - 4 + 1)); 073 074 //Andy Yates suggestion - I could wrap this in a method 075 076 Sequence<NucleotideCompound> subseq4_13 = seq.getSubSequence(4, 13); 077 Sequence<NucleotideCompound> revComp = new ReversedSequenceView<NucleotideCompound>(new ComplementSequenceView<NucleotideCompound>(subseq4_13)); 078 System.out.println("revComp.getSequenceAsString() " + revComp.getSequenceAsString()); 079 080 SequenceView rev = seq.getReverseComplement(); 081 String revStr = rev.getSequenceAsString(); 082 System.out.println("revStr: " + revStr); 083 084 DNASequence subseq = new DNASequence(seq.getSequenceAsString(11, 14)); 085 System.out.println("" + subseq.getReverseComplement().getSequenceAsString()); 086 087 try { 088 System.out.println("seq.getReverseComplement().getSubSequence(1,4).getSequenceAsString(): " 089 + seq.getReverseComplement().getSubSequence(1, 4).getSequenceAsString()); 090 } catch (Exception e) { 091 } 092 093 094 095 String nuc = "aacccggggtttttMKYRNWSVBDHACTGmkyrnwsvbdh"; 096 097 System.out.println("sequence initialised with: " + nuc); 098 099 DADNASequence myseq = new DADNASequence(nuc); 100 101 System.out.println("myseq.getSequenceAsString(): " + myseq.getSequenceAsString()); 102 System.out.println("myseq.getReverseComplementSequenceAsString(): " + myseq.getReverseComplementSequenceAsString()); 103 System.out.println("myseq.getSequenceAsString(2,5): " + myseq.getSequenceAsString(2, 5, Strand.POSITIVE)); 104 System.out.println("myseq.getReverseComplementSequenceAsString(2,5): " + myseq.getReverseComplementSequenceAsString(2, 5)); 105 106 DADNASequence aseq = new DADNASequence(); 107 108 109 System.out.println("seqlength: " + aseq.getDBSeqLength()); 110 System.out.println("biobegin: " + aseq.getBioBegin()); 111 System.out.println("bioend: " + aseq.getBioEnd()); 112 System.out.println("length: " + aseq.getLength()); 113 114 115 System.out.println("\n\n*****************************\n* COMPLETED FUNCTIONAL TEST *\n*****************************\n"); 116 117 } 118}