/usr/share/doc/neobio/html/src-html/neobio/alignment/BasicScoringScheme.html is in neobio 0.0.20030929-1.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 | <HTML>
<BODY BGCOLOR="white">
<PRE>
<FONT color="green">001</FONT> /*<a name="line.1"></a>
<FONT color="green">002</FONT> * BasicScoringScheme.java<a name="line.2"></a>
<FONT color="green">003</FONT> *<a name="line.3"></a>
<FONT color="green">004</FONT> * Copyright 2003 Sergio Anibal de Carvalho Junior<a name="line.4"></a>
<FONT color="green">005</FONT> *<a name="line.5"></a>
<FONT color="green">006</FONT> * This file is part of NeoBio.<a name="line.6"></a>
<FONT color="green">007</FONT> *<a name="line.7"></a>
<FONT color="green">008</FONT> * NeoBio is free software; you can redistribute it and/or modify it under the terms of<a name="line.8"></a>
<FONT color="green">009</FONT> * the GNU General Public License as published by the Free Software Foundation; either<a name="line.9"></a>
<FONT color="green">010</FONT> * version 2 of the License, or (at your option) any later version.<a name="line.10"></a>
<FONT color="green">011</FONT> *<a name="line.11"></a>
<FONT color="green">012</FONT> * NeoBio is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;<a name="line.12"></a>
<FONT color="green">013</FONT> * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR<a name="line.13"></a>
<FONT color="green">014</FONT> * PURPOSE. See the GNU General Public License for more details.<a name="line.14"></a>
<FONT color="green">015</FONT> *<a name="line.15"></a>
<FONT color="green">016</FONT> * You should have received a copy of the GNU General Public License along with NeoBio;<a name="line.16"></a>
<FONT color="green">017</FONT> * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,<a name="line.17"></a>
<FONT color="green">018</FONT> * Boston, MA 02111-1307, USA.<a name="line.18"></a>
<FONT color="green">019</FONT> *<a name="line.19"></a>
<FONT color="green">020</FONT> * Proper attribution of the author as the source of the software would be appreciated.<a name="line.20"></a>
<FONT color="green">021</FONT> *<a name="line.21"></a>
<FONT color="green">022</FONT> * Sergio Anibal de Carvalho Junior mailto:sergioanibaljr@users.sourceforge.net<a name="line.22"></a>
<FONT color="green">023</FONT> * Department of Computer Science http://www.dcs.kcl.ac.uk<a name="line.23"></a>
<FONT color="green">024</FONT> * King's College London, UK http://www.kcl.ac.uk<a name="line.24"></a>
<FONT color="green">025</FONT> *<a name="line.25"></a>
<FONT color="green">026</FONT> * Please visit http://neobio.sourceforge.net<a name="line.26"></a>
<FONT color="green">027</FONT> *<a name="line.27"></a>
<FONT color="green">028</FONT> * This project was supervised by Professor Maxime Crochemore.<a name="line.28"></a>
<FONT color="green">029</FONT> *<a name="line.29"></a>
<FONT color="green">030</FONT> */<a name="line.30"></a>
<FONT color="green">031</FONT> <a name="line.31"></a>
<FONT color="green">032</FONT> package neobio.alignment;<a name="line.32"></a>
<FONT color="green">033</FONT> <a name="line.33"></a>
<FONT color="green">034</FONT> /**<a name="line.34"></a>
<FONT color="green">035</FONT> * This class implements a basic scoring scheme. At least three parameters must be<a name="line.35"></a>
<FONT color="green">036</FONT> * provided to the constructor: the reward for a match (a substitution of equal<a name="line.36"></a>
<FONT color="green">037</FONT> * characters), the penalty for a mismatch (a substitution of different characters) and<a name="line.37"></a>
<FONT color="green">038</FONT> * the cost of a gap (an insertion or deletion of a character). Note that it only supports<a name="line.38"></a>
<FONT color="green">039</FONT> * an additive gap cost function.<a name="line.39"></a>
<FONT color="green">040</FONT> *<a name="line.40"></a>
<FONT color="green">041</FONT> * <P>Although the match reward is expected to be a positive value, and the mismatch<a name="line.41"></a>
<FONT color="green">042</FONT> * penalty and the gap cost are expected to be negative, no attempt is made to enforce<a name="line.42"></a>
<FONT color="green">043</FONT> * these behaviour.</P><a name="line.43"></a>
<FONT color="green">044</FONT> *<a name="line.44"></a>
<FONT color="green">045</FONT> * @author Sergio A. de Carvalho Jr.<a name="line.45"></a>
<FONT color="green">046</FONT> */<a name="line.46"></a>
<FONT color="green">047</FONT> public class BasicScoringScheme extends ScoringScheme<a name="line.47"></a>
<FONT color="green">048</FONT> {<a name="line.48"></a>
<FONT color="green">049</FONT> /**<a name="line.49"></a>
<FONT color="green">050</FONT> * The reward for a match (a substitution of equal characters).<a name="line.50"></a>
<FONT color="green">051</FONT> */<a name="line.51"></a>
<FONT color="green">052</FONT> protected int match_reward;<a name="line.52"></a>
<FONT color="green">053</FONT> <a name="line.53"></a>
<FONT color="green">054</FONT> /**<a name="line.54"></a>
<FONT color="green">055</FONT> * The penalty for a mismatch (a substitution of different characters).<a name="line.55"></a>
<FONT color="green">056</FONT> */<a name="line.56"></a>
<FONT color="green">057</FONT> protected int mismatch_penalty;<a name="line.57"></a>
<FONT color="green">058</FONT> <a name="line.58"></a>
<FONT color="green">059</FONT> /**<a name="line.59"></a>
<FONT color="green">060</FONT> * The cost of a gap (an insertion or deletion of a character).<a name="line.60"></a>
<FONT color="green">061</FONT> */<a name="line.61"></a>
<FONT color="green">062</FONT> protected int gap_cost;<a name="line.62"></a>
<FONT color="green">063</FONT> <a name="line.63"></a>
<FONT color="green">064</FONT> /**<a name="line.64"></a>
<FONT color="green">065</FONT> * The maximum absolute score that this scoring scheme can return, which is the<a name="line.65"></a>
<FONT color="green">066</FONT> * maximum absolute value among <CODE>match_reward</CODE>,<a name="line.66"></a>
<FONT color="green">067</FONT> * <CODE>mismatch_penalty</CODE> and <CODE>gap_cost</CODE>.<a name="line.67"></a>
<FONT color="green">068</FONT> */<a name="line.68"></a>
<FONT color="green">069</FONT> protected int max_absolute_score;<a name="line.69"></a>
<FONT color="green">070</FONT> <a name="line.70"></a>
<FONT color="green">071</FONT> /**<a name="line.71"></a>
<FONT color="green">072</FONT> * Creates a new instance of a basic scoring scheme with the specified values of<a name="line.72"></a>
<FONT color="green">073</FONT> * match reward, mismatch penalty and gap cost. The case of characters is significant<a name="line.73"></a>
<FONT color="green">074</FONT> * when subsequently computing their score.<a name="line.74"></a>
<FONT color="green">075</FONT> *<a name="line.75"></a>
<FONT color="green">076</FONT> * @param match_reward reward for a substitution of equal characters<a name="line.76"></a>
<FONT color="green">077</FONT> * @param mismatch_penalty penalty for a substitution of different characters<a name="line.77"></a>
<FONT color="green">078</FONT> * @param gap_cost cost of an insertion or deletion of any character<a name="line.78"></a>
<FONT color="green">079</FONT> */<a name="line.79"></a>
<FONT color="green">080</FONT> public BasicScoringScheme (int match_reward, int mismatch_penalty, int gap_cost)<a name="line.80"></a>
<FONT color="green">081</FONT> {<a name="line.81"></a>
<FONT color="green">082</FONT> this (match_reward, mismatch_penalty, gap_cost, true);<a name="line.82"></a>
<FONT color="green">083</FONT> }<a name="line.83"></a>
<FONT color="green">084</FONT> <a name="line.84"></a>
<FONT color="green">085</FONT> /**<a name="line.85"></a>
<FONT color="green">086</FONT> * Creates a new instance of basic scoring scheme with the specified values of<a name="line.86"></a>
<FONT color="green">087</FONT> * match reward, mismatch penalty and gap cost. If <CODE>case_sensitive</CODE> is<a name="line.87"></a>
<FONT color="green">088</FONT> * <CODE>true</CODE>, the case of characters is significant when subsequently<a name="line.88"></a>
<FONT color="green">089</FONT> * computing their score; otherwise the case is ignored.<a name="line.89"></a>
<FONT color="green">090</FONT> *<a name="line.90"></a>
<FONT color="green">091</FONT> * @param match_reward reward for a substitution of equal characters<a name="line.91"></a>
<FONT color="green">092</FONT> * @param mismatch_penalty penalty for a substitution of different characters<a name="line.92"></a>
<FONT color="green">093</FONT> * @param gap_cost cost of an insertion or deletion of any character<a name="line.93"></a>
<FONT color="green">094</FONT> * @param case_sensitive <CODE>true</CODE> if the case of characters must be<a name="line.94"></a>
<FONT color="green">095</FONT> * significant, <CODE>false</CODE> otherwise<a name="line.95"></a>
<FONT color="green">096</FONT> */<a name="line.96"></a>
<FONT color="green">097</FONT> public BasicScoringScheme (int match_reward, int mismatch_penalty, int gap_cost,<a name="line.97"></a>
<FONT color="green">098</FONT> boolean case_sensitive)<a name="line.98"></a>
<FONT color="green">099</FONT> {<a name="line.99"></a>
<FONT color="green">100</FONT> super(case_sensitive);<a name="line.100"></a>
<FONT color="green">101</FONT> <a name="line.101"></a>
<FONT color="green">102</FONT> this.match_reward = match_reward;<a name="line.102"></a>
<FONT color="green">103</FONT> this.mismatch_penalty = mismatch_penalty;<a name="line.103"></a>
<FONT color="green">104</FONT> this.gap_cost = gap_cost;<a name="line.104"></a>
<FONT color="green">105</FONT> <a name="line.105"></a>
<FONT color="green">106</FONT> // store the maximum absolute score that this scoring scheme can return,<a name="line.106"></a>
<FONT color="green">107</FONT> // which is the maximum absolute value among match_reward, mismatch_penalty<a name="line.107"></a>
<FONT color="green">108</FONT> // and gap_cost<a name="line.108"></a>
<FONT color="green">109</FONT> if (Math.abs(match_reward) >= Math.abs(mismatch_penalty))<a name="line.109"></a>
<FONT color="green">110</FONT> if (Math.abs(match_reward) >= Math.abs(gap_cost))<a name="line.110"></a>
<FONT color="green">111</FONT> this.max_absolute_score = Math.abs(match_reward);<a name="line.111"></a>
<FONT color="green">112</FONT> else<a name="line.112"></a>
<FONT color="green">113</FONT> this.max_absolute_score = Math.abs(gap_cost);<a name="line.113"></a>
<FONT color="green">114</FONT> else<a name="line.114"></a>
<FONT color="green">115</FONT> if (Math.abs(mismatch_penalty) >= Math.abs(gap_cost))<a name="line.115"></a>
<FONT color="green">116</FONT> this.max_absolute_score = Math.abs(mismatch_penalty);<a name="line.116"></a>
<FONT color="green">117</FONT> else<a name="line.117"></a>
<FONT color="green">118</FONT> this.max_absolute_score = Math.abs(gap_cost);<a name="line.118"></a>
<FONT color="green">119</FONT> }<a name="line.119"></a>
<FONT color="green">120</FONT> <a name="line.120"></a>
<FONT color="green">121</FONT> /**<a name="line.121"></a>
<FONT color="green">122</FONT> * Returns the score of a substitution of character <CODE>a</CODE> for character<a name="line.122"></a>
<FONT color="green">123</FONT> * <CODE>b</CODE> according to this scoring scheme. It is <CODE>match_reward</CODE><a name="line.123"></a>
<FONT color="green">124</FONT> * if <CODE>a</CODE> equals <CODE>b</CODE>, <CODE>mismatch_penalty</CODE> otherwise.<a name="line.124"></a>
<FONT color="green">125</FONT> *<a name="line.125"></a>
<FONT color="green">126</FONT> * @param a first character<a name="line.126"></a>
<FONT color="green">127</FONT> * @param b second character<a name="line.127"></a>
<FONT color="green">128</FONT> * @return <CODE>match_reward</CODE> if <CODE>a</CODE> equals <CODE>b</CODE>,<a name="line.128"></a>
<FONT color="green">129</FONT> * <CODE>mismatch_penalty</CODE> otherwise.<a name="line.129"></a>
<FONT color="green">130</FONT> */<a name="line.130"></a>
<FONT color="green">131</FONT> public int scoreSubstitution (char a, char b)<a name="line.131"></a>
<FONT color="green">132</FONT> {<a name="line.132"></a>
<FONT color="green">133</FONT> if (isCaseSensitive())<a name="line.133"></a>
<FONT color="green">134</FONT> if (a == b)<a name="line.134"></a>
<FONT color="green">135</FONT> return match_reward;<a name="line.135"></a>
<FONT color="green">136</FONT> else<a name="line.136"></a>
<FONT color="green">137</FONT> return mismatch_penalty;<a name="line.137"></a>
<FONT color="green">138</FONT> else<a name="line.138"></a>
<FONT color="green">139</FONT> if (Character.toLowerCase(a) == Character.toLowerCase(b))<a name="line.139"></a>
<FONT color="green">140</FONT> return match_reward;<a name="line.140"></a>
<FONT color="green">141</FONT> else<a name="line.141"></a>
<FONT color="green">142</FONT> return mismatch_penalty;<a name="line.142"></a>
<FONT color="green">143</FONT> }<a name="line.143"></a>
<FONT color="green">144</FONT> <a name="line.144"></a>
<FONT color="green">145</FONT> /**<a name="line.145"></a>
<FONT color="green">146</FONT> * Always returns <CODE>gap_cost</CODE> for the insertion of any character.<a name="line.146"></a>
<FONT color="green">147</FONT> *<a name="line.147"></a>
<FONT color="green">148</FONT> * @param a the character to be inserted<a name="line.148"></a>
<FONT color="green">149</FONT> * @return <CODE>gap_cost</CODE><a name="line.149"></a>
<FONT color="green">150</FONT> */<a name="line.150"></a>
<FONT color="green">151</FONT> public int scoreInsertion (char a)<a name="line.151"></a>
<FONT color="green">152</FONT> {<a name="line.152"></a>
<FONT color="green">153</FONT> return gap_cost;<a name="line.153"></a>
<FONT color="green">154</FONT> }<a name="line.154"></a>
<FONT color="green">155</FONT> <a name="line.155"></a>
<FONT color="green">156</FONT> /**<a name="line.156"></a>
<FONT color="green">157</FONT> * Always returns <CODE>gap_cost</CODE> for the deletion of any character.<a name="line.157"></a>
<FONT color="green">158</FONT> *<a name="line.158"></a>
<FONT color="green">159</FONT> * @param a the character to be deleted<a name="line.159"></a>
<FONT color="green">160</FONT> * @return <CODE>gap_cost</CODE><a name="line.160"></a>
<FONT color="green">161</FONT> */<a name="line.161"></a>
<FONT color="green">162</FONT> public int scoreDeletion (char a)<a name="line.162"></a>
<FONT color="green">163</FONT> {<a name="line.163"></a>
<FONT color="green">164</FONT> return gap_cost;<a name="line.164"></a>
<FONT color="green">165</FONT> }<a name="line.165"></a>
<FONT color="green">166</FONT> <a name="line.166"></a>
<FONT color="green">167</FONT> /**<a name="line.167"></a>
<FONT color="green">168</FONT> * Returns the maximum absolute score that this scoring scheme can return for any<a name="line.168"></a>
<FONT color="green">169</FONT> * substitution, deletion or insertion, which is the maximum absolute value among<a name="line.169"></a>
<FONT color="green">170</FONT> * <CODE>match_reward</CODE>, <CODE>mismatch_penalty</CODE> and<a name="line.170"></a>
<FONT color="green">171</FONT> * <CODE>gap_cost</CODE>.<a name="line.171"></a>
<FONT color="green">172</FONT> *<a name="line.172"></a>
<FONT color="green">173</FONT> * @return the maximum absolute value among <CODE>match_reward</CODE>,<a name="line.173"></a>
<FONT color="green">174</FONT> * <CODE>mismatch_penalty</CODE> and <CODE>gap_cost</CODE>.<a name="line.174"></a>
<FONT color="green">175</FONT> */<a name="line.175"></a>
<FONT color="green">176</FONT> public int maxAbsoluteScore ()<a name="line.176"></a>
<FONT color="green">177</FONT> {<a name="line.177"></a>
<FONT color="green">178</FONT> return max_absolute_score;<a name="line.178"></a>
<FONT color="green">179</FONT> }<a name="line.179"></a>
<FONT color="green">180</FONT> <a name="line.180"></a>
<FONT color="green">181</FONT> /**<a name="line.181"></a>
<FONT color="green">182</FONT> * Tells whether this scoring scheme supports partial matches, which it does not.<a name="line.182"></a>
<FONT color="green">183</FONT> *<a name="line.183"></a>
<FONT color="green">184</FONT> * @return always return <CODE>false</CODE><a name="line.184"></a>
<FONT color="green">185</FONT> */<a name="line.185"></a>
<FONT color="green">186</FONT> public boolean isPartialMatchSupported ()<a name="line.186"></a>
<FONT color="green">187</FONT> {<a name="line.187"></a>
<FONT color="green">188</FONT> return false;<a name="line.188"></a>
<FONT color="green">189</FONT> }<a name="line.189"></a>
<FONT color="green">190</FONT> <a name="line.190"></a>
<FONT color="green">191</FONT> /**<a name="line.191"></a>
<FONT color="green">192</FONT> * Returns a String representation of this scoring scheme.<a name="line.192"></a>
<FONT color="green">193</FONT> *<a name="line.193"></a>
<FONT color="green">194</FONT> * @return a String representation of this scoring scheme<a name="line.194"></a>
<FONT color="green">195</FONT> */<a name="line.195"></a>
<FONT color="green">196</FONT> public String toString ()<a name="line.196"></a>
<FONT color="green">197</FONT> {<a name="line.197"></a>
<FONT color="green">198</FONT> return "Basic scoring scheme: match reward = " + match_reward +<a name="line.198"></a>
<FONT color="green">199</FONT> ", mismatch penalty = " + mismatch_penalty + ", gap cost = " + gap_cost;<a name="line.199"></a>
<FONT color="green">200</FONT> }<a name="line.200"></a>
<FONT color="green">201</FONT> }<a name="line.201"></a>
</PRE>
</BODY>
</HTML>
|