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}