@@ -21,11 +21,13 @@ your scala project. The easiest way to do this is to use Maven to build
21
21
your scala project and just add BioJava as a dependency. For instance,
22
22
add the following to the dependencies section of your pom.xml file.
23
23
24
+ ``` xml
24
25
<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 >
28
29
</dependency >
30
+ ```
29
31
30
32
If you are using [ SBT] ( http://www.scala-sbt.org/ ) to build your Scala
31
33
project just add the following to your sbt file.
@@ -38,49 +40,51 @@ Java classes can be imported and used in scala code without
38
40
modification. For instance, here is a scala version of
39
41
< BioJava:CookBook3:PSA_DNA > .
40
42
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
+ */
46
49
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
51
54
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)
54
57
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"
62
65
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"
72
75
73
- ` val matrix = SubstitutionMatrixHelper.getNuc4_4() `
76
+ val matrix = SubstitutionMatrixHelper .getNuc4_4()
74
77
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 )
78
81
79
- ` val psa = Alignments.getPairwiseAlignment(query, target, LOCAL, gapP, matrix) `
82
+ val psa = Alignments .getPairwiseAlignment(query, target, LOCAL , gapP, matrix)
80
83
81
- ` println(psa) `
82
- ` } `
83
- ` } `
84
+ println(psa)
85
+ }
86
+ }
87
+ ```
84
88
85
89
Including ScaBio code in Java
86
90
-----------------------------
@@ -94,78 +98,85 @@ present in BioJava.
94
98
First, include the ScaBio jars and dependencies in your classpath. If
95
99
using maven this is quite simple. Add the required packages to your
96
100
pom.xml:
97
-
101
+ ``` xml
98
102
<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 >
102
106
</dependency >
107
+ ```
103
108
104
109
Scala objects and methods can now be used from Java code. To display
105
110
ScaBio's RNA secondary structure visualization too, for instance, just
106
111
call the appropriate method.
107
112
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
+ ```
113
120
114
121
Here is a more complex example to output the results of the RNA
115
122
secondary structure prediction in a simple text format.
116
123
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 ;
125
133
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);
132
140
133
- ` String topology = rnaTopologyString(solution, dp.n()); `
141
+ String topology = rnaTopologyString(solution, dp.n());
134
142
135
- ` System.out.println(s); `
136
- ` System.out.println(topology); `
137
- ` } `
143
+ System .out.println(s);
144
+ System .out.println(topology);
145
+ }
138
146
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);
147
155
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++ ) {
151
159
str.append('-' );
152
160
}
153
161
154
162
// 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
+ }
163
171
164
- ` return str.toString(); `
165
- ` } `
166
- ` } `
172
+ return str.toString();
173
+ }
174
+ }
175
+ ```
167
176
168
177
Running the code produces the following output:
169
178
170
- ` UGGGAAGGUUUUGGAACCC `
171
- ` -(((((--))((--))))) `
179
+ ```
180
+ UGGGAAGGUUUUGGAACCC
181
+ -(((((--))((--)))))
182
+ ```
0 commit comments