@@ -21,11 +21,13 @@ your scala project. The easiest way to do this is to use Maven to build
2121your scala project and just add BioJava as a dependency. For instance,
2222add the following to the dependencies section of your pom.xml file.
2323
24+ ``` xml
2425<dependency >
25- ` ` <groupId >` org.biojava ` </groupId >
26- ` ` <artifactId >` biojava3-core ` </artifactId >
27- ` ` <version >` 3.0.6 ` </version >
26+ <groupId >org.biojava</groupId >
27+ <artifactId >biojava3-core</artifactId >
28+ <version >3.0.6</version >
2829</dependency >
30+ ```
2931
3032If you are using [ SBT] ( http://www.scala-sbt.org/ ) to build your Scala
3133project just add the following to your sbt file.
@@ -38,49 +40,51 @@ Java classes can be imported and used in scala code without
3840modification. For instance, here is a scala version of
3941< BioJava:CookBook3:PSA_DNA > .
4042
41- ` /** `
42- ` * Demo of using BioJava from scala code. Performs a simple sequence alignment. `
43- ` * `
44- ` * This shows off a few nice scala features, such as implicit methods `
45- ` */ `
43+ ``` scala
44+ /**
45+ * Demo of using BioJava from scala code. Performs a simple sequence alignment.
46+ *
47+ * This shows off a few nice scala features, such as implicit methods
48+ */
4649
47- ` import org.biojava3.alignment.{Alignments,SimpleGapPenalty,SubstitutionMatrixHelper} `
48- ` import org.biojava3.alignment.Alignments.PairwiseSequenceAlignerType.LOCAL `
49- ` import org.biojava3.core.sequence.DNASequence `
50- ` import org.biojava3.core.sequence.compound.AmbiguityDNACompoundSet `
50+ import org.biojava3.alignment.{Alignments ,SimpleGapPenalty ,SubstitutionMatrixHelper }
51+ import org.biojava3.alignment.Alignments .PairwiseSequenceAlignerType .LOCAL
52+ import org.biojava3.core.sequence.DNASequence
53+ import org.biojava3.core.sequence.compound.AmbiguityDNACompoundSet
5154
52- ` object PSA_DNA { `
53- ` implicit def str2DNA(seq: String) = new DNASequence(seq,AmbiguityDNACompoundSet.getDNACompoundSet) `
55+ object PSA_DNA {
56+ implicit def str2DNA(seq: String ) = new DNASequence (seq,AmbiguityDNACompoundSet .getDNACompoundSet)
5457
55- ` def main(args: Array[String]) { `
56- ` // Note implicit cast from strings to DNASequence `
57- ` val target: DNASequence = "CACGTTTCTTGTGGCAGCTTAAGTTTGAATGTCATTTCTTCAATGGGACGGA"+ `
58- ` "GCGGGTGCGGTTGCTGGAAAGATGCATCTATAACCAAGAGGAGTCCGTGCGCTTCGACAGC"+ `
59- ` "GACGTGGGGGAGTACCGGGCGGTGACGGAGCTGGGGCGGCCTGATGCCGAGTACTGGAACA"+ `
60- ` "GCCAGAAGGACCTCCTGGAGCAGAGGCGGGCCGCGGTGGACACCTACTGCAGACACAACTA"+ `
61- ` "CGGGGTTGGTGAGAGCTTCACAGTGCAGCGGCGAG" `
58+ def main(args: Array [String ]) {
59+ // Note implicit cast from strings to DNASequence
60+ val target: DNASequence = " CACGTTTCTTGTGGCAGCTTAAGTTTGAATGTCATTTCTTCAATGGGACGGA" +
61+ " GCGGGTGCGGTTGCTGGAAAGATGCATCTATAACCAAGAGGAGTCCGTGCGCTTCGACAGC" +
62+ " GACGTGGGGGAGTACCGGGCGGTGACGGAGCTGGGGCGGCCTGATGCCGAGTACTGGAACA" +
63+ " GCCAGAAGGACCTCCTGGAGCAGAGGCGGGCCGCGGTGGACACCTACTGCAGACACAACTA" +
64+ " CGGGGTTGGTGAGAGCTTCACAGTGCAGCGGCGAG"
6265
63- ` val query: DNASequence = "ACGAGTGCGTGTTTTCCCGCCTGGTCCCCAGGCCCCCTTTCCGTCCTCAGGAA"+ `
64- ` "GACAGAGGAGGAGCCCCTCGGGCTGCAGGTGGTGGGCGTTGCGGCGGCGGCCGGTTAAGGT"+ `
65- ` "TCCCAGTGCCCGCACCCGGCCCACGGGAGCCCCGGACTGGCGGCGTCACTGTCAGTGTCTT"+ `
66- ` "CTCAGGAGGCCGCCTGTGTGACTGGATCGTTCGTGTCCCCACAGCACGTTTCTTGGAGTAC"+ `
67- ` "TCTACGTCTGAGTGTCATTTCTTCAATGGGACGGAGCGGGTGCGGTTCCTGGACAGATACT"+ `
68- ` "TCCATAACCAGGAGGAGAACGTGCGCTTCGACAGCGACGTGGGGGAGTTCCGGGCGGTGAC"+ `
69- ` "GGAGCTGGGGCGGCCTGATGCCGAGTACTGGAACAGCCAGAAGGACATCCTGGAAGACGAG"+ `
70- ` "CGGGCCGCGGTGGACACCTACTGCAGACACAACTACGGGGTTGTGAGAGCTTCACCGTGCA"+ `
71- ` "GCGGCGAGACGCACTCGT" `
66+ val query: DNASequence = " ACGAGTGCGTGTTTTCCCGCCTGGTCCCCAGGCCCCCTTTCCGTCCTCAGGAA" +
67+ " GACAGAGGAGGAGCCCCTCGGGCTGCAGGTGGTGGGCGTTGCGGCGGCGGCCGGTTAAGGT" +
68+ " TCCCAGTGCCCGCACCCGGCCCACGGGAGCCCCGGACTGGCGGCGTCACTGTCAGTGTCTT" +
69+ " CTCAGGAGGCCGCCTGTGTGACTGGATCGTTCGTGTCCCCACAGCACGTTTCTTGGAGTAC" +
70+ " TCTACGTCTGAGTGTCATTTCTTCAATGGGACGGAGCGGGTGCGGTTCCTGGACAGATACT" +
71+ " TCCATAACCAGGAGGAGAACGTGCGCTTCGACAGCGACGTGGGGGAGTTCCGGGCGGTGAC" +
72+ " GGAGCTGGGGCGGCCTGATGCCGAGTACTGGAACAGCCAGAAGGACATCCTGGAAGACGAG" +
73+ " CGGGCCGCGGTGGACACCTACTGCAGACACAACTACGGGGTTGTGAGAGCTTCACCGTGCA" +
74+ " GCGGCGAGACGCACTCGT"
7275
73- ` val matrix = SubstitutionMatrixHelper.getNuc4_4() `
76+ val matrix = SubstitutionMatrixHelper .getNuc4_4()
7477
75- ` val gapP = new SimpleGapPenalty() `
76- ` gapP.setOpenPenalty(5) `
77- ` gapP.setExtensionPenalty(2) `
78+ val gapP = new SimpleGapPenalty ()
79+ gapP.setOpenPenalty(5 )
80+ gapP.setExtensionPenalty(2 )
7881
79- ` val psa = Alignments.getPairwiseAlignment(query, target, LOCAL, gapP, matrix) `
82+ val psa = Alignments .getPairwiseAlignment(query, target, LOCAL , gapP, matrix)
8083
81- ` println(psa) `
82- ` } `
83- ` } `
84+ println(psa)
85+ }
86+ }
87+ ```
8488
8589Including ScaBio code in Java
8690-----------------------------
@@ -94,78 +98,85 @@ present in BioJava.
9498First, include the ScaBio jars and dependencies in your classpath. If
9599using maven this is quite simple. Add the required packages to your
96100pom.xml:
97-
101+ ``` xml
98102<dependency >
99- ` ` <groupId >` net.gumbix ` </groupId >
100- ` ` <artifactId >` scabio-demo ` </artifactId >
101- ` ` <version >` 0.1-SNAPSHOT ` </version >
103+ <groupId >net.gumbix</groupId >
104+ <artifactId >scabio-demo</artifactId >
105+ <version >0.1-SNAPSHOT</version >
102106</dependency >
107+ ```
103108
104109Scala objects and methods can now be used from Java code. To display
105110ScaBio's RNA secondary structure visualization too, for instance, just
106111call the appropriate method.
107112
108- ` public class RNAStruct2DViewer { `
109- ` public static void main(String[] args) { `
110- ` net.gumbix.bioinf.struct.RNAStruct2DViewer.main(args); `
111- ` } `
112- ` } `
113+ ``` scala
114+ public class RNAStruct2DViewer {
115+ public static void main(String [] args) {
116+ net.gumbix.bioinf.struct.RNAStruct2DViewer .main(args);
117+ }
118+ }
119+ ```
113120
114121Here is a more complex example to output the results of the RNA
115122secondary structure prediction in a simple text format.
116123
117- ` import java.util.List; `
118- ` import net.gumbix.bioinf.struct.AbstractNussinov; `
119- ` import net.gumbix.bioinf.struct.NussinovDecision; `
120- ` import net.gumbix.bioinf.struct.NussinovEnergy; `
121- ` import net.gumbix.bioinf.struct.NussinovState; `
122- ` import net.gumbix.dynpro.Idx; `
123- ` import net.gumbix.dynpro.PathEntry; `
124- ` import scala.collection.JavaConversions; `
124+ ``` scala
125+ import java.util.List ;
126+ import net.gumbix.bioinf.struct.AbstractNussinov ;
127+ import net.gumbix.bioinf.struct.NussinovDecision ;
128+ import net.gumbix.bioinf.struct.NussinovEnergy ;
129+ import net.gumbix.bioinf.struct.NussinovState ;
130+ import net.gumbix.dynpro.Idx ;
131+ import net.gumbix.dynpro.PathEntry ;
132+ import scala.collection.JavaConversions ;
125133
126- ` public class RNAStructPredictor { `
127- ` public static void main(String[] args) { `
128- ` String s = "UGGGAAGGUUUUGGAACCC"; `
129- ` AbstractNussinov dp = new NussinovEnergy(s); `
130- ` Idx idx = new Idx(0, dp.n()-1); `
131- ` scala.collection.immutable.List ` <PathEntry<NussinovDecision >` > solution = dp.solution(idx); `
134+ public class RNAStructPredictor {
135+ public static void main(String [] args) {
136+ String s = " UGGGAAGGUUUUGGAACCC" ;
137+ AbstractNussinov dp = new NussinovEnergy (s);
138+ Idx idx = new Idx (0 , dp.n()- 1 );
139+ scala.collection.immutable.List <PathEntry <NussinovDecision>> solution = dp.solution(idx);
132140
133- ` String topology = rnaTopologyString(solution, dp.n()); `
141+ String topology = rnaTopologyString(solution, dp.n());
134142
135- ` System.out.println(s); `
136- ` System.out.println(topology); `
137- ` } `
143+ System .out.println(s);
144+ System .out.println(topology);
145+ }
138146
139- ` /** `
140- ` * Get a topology string for the given RNA secondary structure prediction `
141- ` * @param s The solved RNA secondary structure from ScaBio `
142- ` * @return A string of '(', ')', and '-' giving the paired RNA residues `
143- ` */ `
144- ` public static String rnaTopologyString(scala.collection.immutable.List ` <PathEntry<NussinovDecision >` > s,int len) { `
145- ` //Wrap scala list as a Java collection for ease of use `
146- ` List ` <PathEntry<NussinovDecision >` > solution = JavaConversions.seqAsJavaList(s); `
147+ /* *
148+ * Get a topology string for the given RNA secondary structure prediction
149+ * @param s The solved RNA secondary structure from ScaBio
150+ * @return A string of '(', ')', and '-' giving the paired RNA residues
151+ */
152+ public static String rnaTopologyString(scala.collection.immutable.List <PathEntry <NussinovDecision>> s,int len) {
153+ // Wrap scala list as a Java collection for ease of use
154+ List <PathEntry <NussinovDecision>> solution = JavaConversions .seqAsJavaList(s);
147155
148- ` // All nucleotides are initially unpaired `
149- ` StringBuffer str = new StringBuffer(len); `
150- ` for(int i=0;i ` <len;i++) {
156+ // All nucleotides are initially unpaired
157+ StringBuffer str = new StringBuffer (len);
158+ for (int i= 0 ;i< len;i++ ) {
151159 str.append('-' );
152160 }
153161
154162 // Assign parentheses for paired nucleotides
155- for(PathEntry<NussinovDecision>` entry : solution) {`
156- ` NussinovDecision decision = entry.decision(); `
157- ` if( decision.move() == NussinovState.PAIR() ) { // focus on nucleotide pairs `
158- ` Idx pair = decision.idx(); // stores indices of the bound pair `
159- ` str.setCharAt(pair.i(), '('); `
160- ` str.setCharAt(pair.j(), ')'); `
161- ` } `
162- ` } `
163+ for (PathEntry <NussinovDecision > entry : solution) {
164+ NussinovDecision decision = entry.decision();
165+ if ( decision.move() == NussinovState .PAIR () ) { // focus on nucleotide pairs
166+ Idx pair = decision.idx(); // stores indices of the bound pair
167+ str.setCharAt(pair.i(), '(' );
168+ str.setCharAt(pair.j(), ')' );
169+ }
170+ }
163171
164- ` return str.toString(); `
165- ` } `
166- ` } `
172+ return str.toString();
173+ }
174+ }
175+ ```
167176
168177Running the code produces the following output:
169178
170- ` UGGGAAGGUUUUGGAACCC `
171- ` -(((((--))((--))))) `
179+ ```
180+ UGGGAAGGUUUUGGAACCC
181+ -(((((--))((--)))))
182+ ```
0 commit comments