MARQ 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (635) hide show
  1. data/LICENSE +20 -0
  2. data/R/CustomDS.R +80 -0
  3. data/R/GEO.R +249 -0
  4. data/R/MA.R +359 -0
  5. data/README.rdoc +29 -0
  6. data/bin/marq_config +170 -0
  7. data/install_scripts/CustomDS/Rakefile +223 -0
  8. data/install_scripts/GEO/Rakefile +258 -0
  9. data/install_scripts/GEO/platforms/GPL100.yaml +7 -0
  10. data/install_scripts/GEO/platforms/GPL1002.yaml +7 -0
  11. data/install_scripts/GEO/platforms/GPL1007.yaml +7 -0
  12. data/install_scripts/GEO/platforms/GPL101.yaml +7 -0
  13. data/install_scripts/GEO/platforms/GPL1010.yaml +7 -0
  14. data/install_scripts/GEO/platforms/GPL1073.yaml +7 -0
  15. data/install_scripts/GEO/platforms/GPL1074.yaml +4 -0
  16. data/install_scripts/GEO/platforms/GPL1090.yaml +7 -0
  17. data/install_scripts/GEO/platforms/GPL1104.yaml +7 -0
  18. data/install_scripts/GEO/platforms/GPL118.yaml +7 -0
  19. data/install_scripts/GEO/platforms/GPL1205.yaml +4 -0
  20. data/install_scripts/GEO/platforms/GPL1211.yaml +7 -0
  21. data/install_scripts/GEO/platforms/GPL1213.yaml +7 -0
  22. data/install_scripts/GEO/platforms/GPL1219.yaml +4 -0
  23. data/install_scripts/GEO/platforms/GPL1223.yaml +7 -0
  24. data/install_scripts/GEO/platforms/GPL1226.yaml +7 -0
  25. data/install_scripts/GEO/platforms/GPL1229.yaml +7 -0
  26. data/install_scripts/GEO/platforms/GPL1230.yaml +7 -0
  27. data/install_scripts/GEO/platforms/GPL1231.yaml +7 -0
  28. data/install_scripts/GEO/platforms/GPL1232.yaml +7 -0
  29. data/install_scripts/GEO/platforms/GPL1260.yaml +4 -0
  30. data/install_scripts/GEO/platforms/GPL1261.yaml +4 -0
  31. data/install_scripts/GEO/platforms/GPL127.yaml +4 -0
  32. data/install_scripts/GEO/platforms/GPL128.yaml +7 -0
  33. data/install_scripts/GEO/platforms/GPL1290.yaml +7 -0
  34. data/install_scripts/GEO/platforms/GPL1292.yaml +7 -0
  35. data/install_scripts/GEO/platforms/GPL1293.yaml +7 -0
  36. data/install_scripts/GEO/platforms/GPL1294.yaml +7 -0
  37. data/install_scripts/GEO/platforms/GPL1295.yaml +7 -0
  38. data/install_scripts/GEO/platforms/GPL13.yaml +4 -0
  39. data/install_scripts/GEO/platforms/GPL1310.yaml +7 -0
  40. data/install_scripts/GEO/platforms/GPL1313.yaml +7 -0
  41. data/install_scripts/GEO/platforms/GPL1323.yaml +7 -0
  42. data/install_scripts/GEO/platforms/GPL1331.yaml +7 -0
  43. data/install_scripts/GEO/platforms/GPL1352.yaml +4 -0
  44. data/install_scripts/GEO/platforms/GPL1355.yaml +4 -0
  45. data/install_scripts/GEO/platforms/GPL1382.yaml +7 -0
  46. data/install_scripts/GEO/platforms/GPL1387.yaml +7 -0
  47. data/install_scripts/GEO/platforms/GPL1397.yaml +4 -0
  48. data/install_scripts/GEO/platforms/GPL14.yaml +7 -0
  49. data/install_scripts/GEO/platforms/GPL1412.yaml +7 -0
  50. data/install_scripts/GEO/platforms/GPL1415.yaml +7 -0
  51. data/install_scripts/GEO/platforms/GPL1420.yaml +7 -0
  52. data/install_scripts/GEO/platforms/GPL144.yaml +7 -0
  53. data/install_scripts/GEO/platforms/GPL1449.yaml +7 -0
  54. data/install_scripts/GEO/platforms/GPL1458.yaml +7 -0
  55. data/install_scripts/GEO/platforms/GPL1523.yaml +7 -0
  56. data/install_scripts/GEO/platforms/GPL1524.yaml +7 -0
  57. data/install_scripts/GEO/platforms/GPL1528.yaml +7 -0
  58. data/install_scripts/GEO/platforms/GPL153.yaml +7 -0
  59. data/install_scripts/GEO/platforms/GPL1530.yaml +7 -0
  60. data/install_scripts/GEO/platforms/GPL1535.yaml +4 -0
  61. data/install_scripts/GEO/platforms/GPL155.yaml +7 -0
  62. data/install_scripts/GEO/platforms/GPL163.yaml +7 -0
  63. data/install_scripts/GEO/platforms/GPL168.yaml +7 -0
  64. data/install_scripts/GEO/platforms/GPL169.yaml +7 -0
  65. data/install_scripts/GEO/platforms/GPL1704.yaml +4 -0
  66. data/install_scripts/GEO/platforms/GPL1708.yaml +7 -0
  67. data/install_scripts/GEO/platforms/GPL1739.yaml +7 -0
  68. data/install_scripts/GEO/platforms/GPL1740.yaml +4 -0
  69. data/install_scripts/GEO/platforms/GPL1749.yaml +7 -0
  70. data/install_scripts/GEO/platforms/GPL177.yaml +7 -0
  71. data/install_scripts/GEO/platforms/GPL1790.yaml +7 -0
  72. data/install_scripts/GEO/platforms/GPL1792.yaml +7 -0
  73. data/install_scripts/GEO/platforms/GPL181.yaml +7 -0
  74. data/install_scripts/GEO/platforms/GPL1818.yaml +7 -0
  75. data/install_scripts/GEO/platforms/GPL1820.yaml +4 -0
  76. data/install_scripts/GEO/platforms/GPL1823.yaml +7 -0
  77. data/install_scripts/GEO/platforms/GPL1826.yaml +7 -0
  78. data/install_scripts/GEO/platforms/GPL183.yaml +7 -0
  79. data/install_scripts/GEO/platforms/GPL1831.yaml +7 -0
  80. data/install_scripts/GEO/platforms/GPL1833.yaml +7 -0
  81. data/install_scripts/GEO/platforms/GPL1872.yaml +4 -0
  82. data/install_scripts/GEO/platforms/GPL1911.yaml +7 -0
  83. data/install_scripts/GEO/platforms/GPL1914.yaml +4 -0
  84. data/install_scripts/GEO/platforms/GPL1928.yaml +7 -0
  85. data/install_scripts/GEO/platforms/GPL1942.yaml +7 -0
  86. data/install_scripts/GEO/platforms/GPL1945.yaml +7 -0
  87. data/install_scripts/GEO/platforms/GPL1964.yaml +7 -0
  88. data/install_scripts/GEO/platforms/GPL198.yaml +4 -0
  89. data/install_scripts/GEO/platforms/GPL1981.yaml +4 -0
  90. data/install_scripts/GEO/platforms/GPL200.yaml +7 -0
  91. data/install_scripts/GEO/platforms/GPL2006.yaml +7 -0
  92. data/install_scripts/GEO/platforms/GPL201.yaml +4 -0
  93. data/install_scripts/GEO/platforms/GPL2011.yaml +7 -0
  94. data/install_scripts/GEO/platforms/GPL2026.yaml +7 -0
  95. data/install_scripts/GEO/platforms/GPL205.yaml +7 -0
  96. data/install_scripts/GEO/platforms/GPL207.yaml +7 -0
  97. data/install_scripts/GEO/platforms/GPL2136.yaml +7 -0
  98. data/install_scripts/GEO/platforms/GPL220.yaml +7 -0
  99. data/install_scripts/GEO/platforms/GPL226.yaml +7 -0
  100. data/install_scripts/GEO/platforms/GPL24.yaml +4 -0
  101. data/install_scripts/GEO/platforms/GPL246.yaml +4 -0
  102. data/install_scripts/GEO/platforms/GPL247.yaml +7 -0
  103. data/install_scripts/GEO/platforms/GPL2507.yaml +4 -0
  104. data/install_scripts/GEO/platforms/GPL2529.yaml +4 -0
  105. data/install_scripts/GEO/platforms/GPL2531.yaml +7 -0
  106. data/install_scripts/GEO/platforms/GPL254.yaml +7 -0
  107. data/install_scripts/GEO/platforms/GPL2569.yaml +7 -0
  108. data/install_scripts/GEO/platforms/GPL257.yaml +7 -0
  109. data/install_scripts/GEO/platforms/GPL2598.yaml +7 -0
  110. data/install_scripts/GEO/platforms/GPL260.yaml +7 -0
  111. data/install_scripts/GEO/platforms/GPL2614.yaml +4 -0
  112. data/install_scripts/GEO/platforms/GPL2622.yaml +7 -0
  113. data/install_scripts/GEO/platforms/GPL2623.yaml +7 -0
  114. data/install_scripts/GEO/platforms/GPL2660.yaml +7 -0
  115. data/install_scripts/GEO/platforms/GPL2670.yaml +7 -0
  116. data/install_scripts/GEO/platforms/GPL2677.yaml +7 -0
  117. data/install_scripts/GEO/platforms/GPL2700.yaml +4 -0
  118. data/install_scripts/GEO/platforms/GPL2721.yaml +7 -0
  119. data/install_scripts/GEO/platforms/GPL2727.yaml +7 -0
  120. data/install_scripts/GEO/platforms/GPL273.yaml +7 -0
  121. data/install_scripts/GEO/platforms/GPL2763.yaml +7 -0
  122. data/install_scripts/GEO/platforms/GPL2824.yaml +7 -0
  123. data/install_scripts/GEO/platforms/GPL284.yaml +7 -0
  124. data/install_scripts/GEO/platforms/GPL287.yaml +4 -0
  125. data/install_scripts/GEO/platforms/GPL2872.yaml +7 -0
  126. data/install_scripts/GEO/platforms/GPL288.yaml +4 -0
  127. data/install_scripts/GEO/platforms/GPL2883.yaml +7 -0
  128. data/install_scripts/GEO/platforms/GPL289.yaml +4 -0
  129. data/install_scripts/GEO/platforms/GPL2895.yaml +4 -0
  130. data/install_scripts/GEO/platforms/GPL2897.yaml +7 -0
  131. data/install_scripts/GEO/platforms/GPL2902.yaml +7 -0
  132. data/install_scripts/GEO/platforms/GPL2987.yaml +4 -0
  133. data/install_scripts/GEO/platforms/GPL2995.yaml +7 -0
  134. data/install_scripts/GEO/platforms/GPL3039.yaml +4 -0
  135. data/install_scripts/GEO/platforms/GPL3050.yaml +7 -0
  136. data/install_scripts/GEO/platforms/GPL3084.yaml +7 -0
  137. data/install_scripts/GEO/platforms/GPL3113.yaml +7 -0
  138. data/install_scripts/GEO/platforms/GPL317.yaml +7 -0
  139. data/install_scripts/GEO/platforms/GPL319.yaml +7 -0
  140. data/install_scripts/GEO/platforms/GPL32.yaml +4 -0
  141. data/install_scripts/GEO/platforms/GPL3222.yaml +7 -0
  142. data/install_scripts/GEO/platforms/GPL3295.yaml +7 -0
  143. data/install_scripts/GEO/platforms/GPL3305.yaml +4 -0
  144. data/install_scripts/GEO/platforms/GPL3306.yaml +7 -0
  145. data/install_scripts/GEO/platforms/GPL3307.yaml +7 -0
  146. data/install_scripts/GEO/platforms/GPL333.yaml +4 -0
  147. data/install_scripts/GEO/platforms/GPL3341.yaml +7 -0
  148. data/install_scripts/GEO/platforms/GPL3349.yaml +7 -0
  149. data/install_scripts/GEO/platforms/GPL339.yaml +4 -0
  150. data/install_scripts/GEO/platforms/GPL340.yaml +4 -0
  151. data/install_scripts/GEO/platforms/GPL3408.yaml +7 -0
  152. data/install_scripts/GEO/platforms/GPL341.yaml +4 -0
  153. data/install_scripts/GEO/platforms/GPL3415.yaml +4 -0
  154. data/install_scripts/GEO/platforms/GPL3423.yaml +7 -0
  155. data/install_scripts/GEO/platforms/GPL3440.yaml +7 -0
  156. data/install_scripts/GEO/platforms/GPL3457.yaml +4 -0
  157. data/install_scripts/GEO/platforms/GPL3504.yaml +4 -0
  158. data/install_scripts/GEO/platforms/GPL3506.yaml +4 -0
  159. data/install_scripts/GEO/platforms/GPL355.yaml +7 -0
  160. data/install_scripts/GEO/platforms/GPL3558.yaml +7 -0
  161. data/install_scripts/GEO/platforms/GPL3607.yaml +7 -0
  162. data/install_scripts/GEO/platforms/GPL368.yaml +4 -0
  163. data/install_scripts/GEO/platforms/GPL3695.yaml +7 -0
  164. data/install_scripts/GEO/platforms/GPL371.yaml +7 -0
  165. data/install_scripts/GEO/platforms/GPL3834.yaml +4 -0
  166. data/install_scripts/GEO/platforms/GPL4006.yaml +7 -0
  167. data/install_scripts/GEO/platforms/GPL4055.yaml +7 -0
  168. data/install_scripts/GEO/platforms/GPL409.yaml +7 -0
  169. data/install_scripts/GEO/platforms/GPL4191.yaml +7 -0
  170. data/install_scripts/GEO/platforms/GPL4226.yaml +7 -0
  171. data/install_scripts/GEO/platforms/GPL4371.yaml +7 -0
  172. data/install_scripts/GEO/platforms/GPL4567.yaml +4 -0
  173. data/install_scripts/GEO/platforms/GPL4685.yaml +4 -0
  174. data/install_scripts/GEO/platforms/GPL483.yaml +7 -0
  175. data/install_scripts/GEO/platforms/GPL49.yaml +7 -0
  176. data/install_scripts/GEO/platforms/GPL50.yaml +7 -0
  177. data/install_scripts/GEO/platforms/GPL500.yaml +7 -0
  178. data/install_scripts/GEO/platforms/GPL507.yaml +4 -0
  179. data/install_scripts/GEO/platforms/GPL51.yaml +7 -0
  180. data/install_scripts/GEO/platforms/GPL513.yaml +7 -0
  181. data/install_scripts/GEO/platforms/GPL519.yaml +7 -0
  182. data/install_scripts/GEO/platforms/GPL52.yaml +7 -0
  183. data/install_scripts/GEO/platforms/GPL529.yaml +7 -0
  184. data/install_scripts/GEO/platforms/GPL53.yaml +7 -0
  185. data/install_scripts/GEO/platforms/GPL5356.yaml +7 -0
  186. data/install_scripts/GEO/platforms/GPL538.yaml +7 -0
  187. data/install_scripts/GEO/platforms/GPL54.yaml +7 -0
  188. data/install_scripts/GEO/platforms/GPL543.yaml +7 -0
  189. data/install_scripts/GEO/platforms/GPL544.yaml +7 -0
  190. data/install_scripts/GEO/platforms/GPL545.yaml +7 -0
  191. data/install_scripts/GEO/platforms/GPL546.yaml +7 -0
  192. data/install_scripts/GEO/platforms/GPL547.yaml +7 -0
  193. data/install_scripts/GEO/platforms/GPL549.yaml +7 -0
  194. data/install_scripts/GEO/platforms/GPL550.yaml +4 -0
  195. data/install_scripts/GEO/platforms/GPL56.yaml +7 -0
  196. data/install_scripts/GEO/platforms/GPL560.yaml +4 -0
  197. data/install_scripts/GEO/platforms/GPL564.yaml +7 -0
  198. data/install_scripts/GEO/platforms/GPL57.yaml +7 -0
  199. data/install_scripts/GEO/platforms/GPL570.yaml +4 -0
  200. data/install_scripts/GEO/platforms/GPL571.yaml +4 -0
  201. data/install_scripts/GEO/platforms/GPL576.yaml +7 -0
  202. data/install_scripts/GEO/platforms/GPL58.yaml +7 -0
  203. data/install_scripts/GEO/platforms/GPL5823.yaml +4 -0
  204. data/install_scripts/GEO/platforms/GPL59.yaml +7 -0
  205. data/install_scripts/GEO/platforms/GPL5915.yaml +4 -0
  206. data/install_scripts/GEO/platforms/GPL5947.yaml +7 -0
  207. data/install_scripts/GEO/platforms/GPL61.yaml +7 -0
  208. data/install_scripts/GEO/platforms/GPL64.yaml +7 -0
  209. data/install_scripts/GEO/platforms/GPL6419.yaml +7 -0
  210. data/install_scripts/GEO/platforms/GPL6424.yaml +7 -0
  211. data/install_scripts/GEO/platforms/GPL65.yaml +7 -0
  212. data/install_scripts/GEO/platforms/GPL6574.yaml +4 -0
  213. data/install_scripts/GEO/platforms/GPL6649.yaml +4 -0
  214. data/install_scripts/GEO/platforms/GPL67.yaml +7 -0
  215. data/install_scripts/GEO/platforms/GPL6720.yaml +7 -0
  216. data/install_scripts/GEO/platforms/GPL7054.yaml +4 -0
  217. data/install_scripts/GEO/platforms/GPL737.yaml +7 -0
  218. data/install_scripts/GEO/platforms/GPL738.yaml +7 -0
  219. data/install_scripts/GEO/platforms/GPL74.yaml +4 -0
  220. data/install_scripts/GEO/platforms/GPL75.yaml +4 -0
  221. data/install_scripts/GEO/platforms/GPL76.yaml +4 -0
  222. data/install_scripts/GEO/platforms/GPL764.yaml +7 -0
  223. data/install_scripts/GEO/platforms/GPL772.yaml +7 -0
  224. data/install_scripts/GEO/platforms/GPL782.yaml +7 -0
  225. data/install_scripts/GEO/platforms/GPL783.yaml +7 -0
  226. data/install_scripts/GEO/platforms/GPL784.yaml +7 -0
  227. data/install_scripts/GEO/platforms/GPL80.yaml +4 -0
  228. data/install_scripts/GEO/platforms/GPL81.yaml +4 -0
  229. data/install_scripts/GEO/platforms/GPL82.yaml +4 -0
  230. data/install_scripts/GEO/platforms/GPL83.yaml +4 -0
  231. data/install_scripts/GEO/platforms/GPL85.yaml +4 -0
  232. data/install_scripts/GEO/platforms/GPL86.yaml +4 -0
  233. data/install_scripts/GEO/platforms/GPL87.yaml +4 -0
  234. data/install_scripts/GEO/platforms/GPL870.yaml +7 -0
  235. data/install_scripts/GEO/platforms/GPL875.yaml +7 -0
  236. data/install_scripts/GEO/platforms/GPL884.yaml +7 -0
  237. data/install_scripts/GEO/platforms/GPL887.yaml +7 -0
  238. data/install_scripts/GEO/platforms/GPL89.yaml +4 -0
  239. data/install_scripts/GEO/platforms/GPL890.yaml +7 -0
  240. data/install_scripts/GEO/platforms/GPL891.yaml +7 -0
  241. data/install_scripts/GEO/platforms/GPL90.yaml +7 -0
  242. data/install_scripts/GEO/platforms/GPL91.yaml +4 -0
  243. data/install_scripts/GEO/platforms/GPL92.yaml +4 -0
  244. data/install_scripts/GEO/platforms/GPL920.yaml +7 -0
  245. data/install_scripts/GEO/platforms/GPL922.yaml +7 -0
  246. data/install_scripts/GEO/platforms/GPL924.yaml +7 -0
  247. data/install_scripts/GEO/platforms/GPL93.yaml +4 -0
  248. data/install_scripts/GEO/platforms/GPL96.yaml +4 -0
  249. data/install_scripts/GEO/platforms/GPL968.yaml +4 -0
  250. data/install_scripts/GEO/platforms/GPL97.yaml +4 -0
  251. data/install_scripts/GEO/platforms/GPL98.yaml +7 -0
  252. data/install_scripts/GEO/platforms/GPL981.yaml +7 -0
  253. data/install_scripts/GEO/platforms/GPL99.yaml +7 -0
  254. data/install_scripts/GEO/platforms/GPL999.yaml +7 -0
  255. data/install_scripts/GEO/series/GSE10018.yaml +61 -0
  256. data/install_scripts/GEO/series/GSE1002.yaml +135 -0
  257. data/install_scripts/GEO/series/GSE10066.yaml +31 -0
  258. data/install_scripts/GEO/series/GSE10073.yaml +19 -0
  259. data/install_scripts/GEO/series/GSE10091.yaml +15 -0
  260. data/install_scripts/GEO/series/GSE101.yaml +17 -0
  261. data/install_scripts/GEO/series/GSE10100.yaml +15 -0
  262. data/install_scripts/GEO/series/GSE10101.yaml +15 -0
  263. data/install_scripts/GEO/series/GSE10102.yaml +15 -0
  264. data/install_scripts/GEO/series/GSE10267.yaml +37 -0
  265. data/install_scripts/GEO/series/GSE10268.yaml +115 -0
  266. data/install_scripts/GEO/series/GSE10279.yaml +23 -0
  267. data/install_scripts/GEO/series/GSE103.yaml +19 -0
  268. data/install_scripts/GEO/series/GSE104.yaml +19 -0
  269. data/install_scripts/GEO/series/GSE10514.yaml +27 -0
  270. data/install_scripts/GEO/series/GSE10521.yaml +56 -0
  271. data/install_scripts/GEO/series/GSE10554.yaml +19 -0
  272. data/install_scripts/GEO/series/GSE1073.yaml +127 -0
  273. data/install_scripts/GEO/series/GSE10860.yaml +25 -0
  274. data/install_scripts/GEO/series/GSE10930.yaml +15 -0
  275. data/install_scripts/GEO/series/GSE10933.yaml +15 -0
  276. data/install_scripts/GEO/series/GSE10944.yaml +21 -0
  277. data/install_scripts/GEO/series/GSE10947.yaml +21 -0
  278. data/install_scripts/GEO/series/GSE10948.yaml +21 -0
  279. data/install_scripts/GEO/series/GSE11061.yaml +19 -0
  280. data/install_scripts/GEO/series/GSE11071.yaml +67 -0
  281. data/install_scripts/GEO/series/GSE11111.yaml +25 -0
  282. data/install_scripts/GEO/series/GSE11236.yaml +25 -0
  283. data/install_scripts/GEO/series/GSE11282.yaml +19 -0
  284. data/install_scripts/GEO/series/GSE11377.yaml +19 -0
  285. data/install_scripts/GEO/series/GSE11380.yaml +13 -0
  286. data/install_scripts/GEO/series/GSE11397.yaml +55 -0
  287. data/install_scripts/GEO/series/GSE11412.yaml +11 -0
  288. data/install_scripts/GEO/series/GSE11452.yaml +354 -0
  289. data/install_scripts/GEO/series/GSE11620.yaml +33 -0
  290. data/install_scripts/GEO/series/GSE11621.yaml +31 -0
  291. data/install_scripts/GEO/series/GSE11651.yaml +94 -0
  292. data/install_scripts/GEO/series/GSE11754.yaml +29 -0
  293. data/install_scripts/GEO/series/GSE11799.yaml +59 -0
  294. data/install_scripts/GEO/series/GSE11856.yaml +11 -0
  295. data/install_scripts/GEO/series/GSE11878.yaml +19 -0
  296. data/install_scripts/GEO/series/GSE11983.yaml +15 -0
  297. data/install_scripts/GEO/series/GSE12004.yaml +41 -0
  298. data/install_scripts/GEO/series/GSE12055.yaml +109 -0
  299. data/install_scripts/GEO/series/GSE12061.yaml +13 -0
  300. data/install_scripts/GEO/series/GSE12104.yaml +10 -0
  301. data/install_scripts/GEO/series/GSE12138.yaml +13 -0
  302. data/install_scripts/GEO/series/GSE12150.yaml +32 -0
  303. data/install_scripts/GEO/series/GSE12684.yaml +47 -0
  304. data/install_scripts/GEO/series/GSE12685.yaml +34 -0
  305. data/install_scripts/GEO/series/GSE1365.yaml +14 -0
  306. data/install_scripts/GEO/series/GSE1404.yaml +596 -0
  307. data/install_scripts/GEO/series/GSE1492.yaml +15 -0
  308. data/install_scripts/GEO/series/GSE15222.yaml +731 -0
  309. data/install_scripts/GEO/series/GSE1553.yaml +23 -0
  310. data/install_scripts/GEO/series/GSE1617.yaml +39 -0
  311. data/install_scripts/GEO/series/GSE1688.yaml +36 -0
  312. data/install_scripts/GEO/series/GSE1693.yaml +60 -0
  313. data/install_scripts/GEO/series/GSE1752.yaml +32 -0
  314. data/install_scripts/GEO/series/GSE1753.yaml +16 -0
  315. data/install_scripts/GEO/series/GSE1754.yaml +19 -0
  316. data/install_scripts/GEO/series/GSE1758.yaml +15 -0
  317. data/install_scripts/GEO/series/GSE1759.yaml +18 -0
  318. data/install_scripts/GEO/series/GSE1760.yaml +18 -0
  319. data/install_scripts/GEO/series/GSE1763.yaml +19 -0
  320. data/install_scripts/GEO/series/GSE1915.yaml +39 -0
  321. data/install_scripts/GEO/series/GSE1927.yaml +14 -0
  322. data/install_scripts/GEO/series/GSE1941.yaml +23 -0
  323. data/install_scripts/GEO/series/GSE1942.yaml +31 -0
  324. data/install_scripts/GEO/series/GSE1944.yaml +58 -0
  325. data/install_scripts/GEO/series/GSE1975.yaml +65 -0
  326. data/install_scripts/GEO/series/GSE20.yaml +24 -0
  327. data/install_scripts/GEO/series/GSE2107.yaml +14 -0
  328. data/install_scripts/GEO/series/GSE2159.yaml +31 -0
  329. data/install_scripts/GEO/series/GSE2246.yaml +157 -0
  330. data/install_scripts/GEO/series/GSE2263.yaml +57 -0
  331. data/install_scripts/GEO/series/GSE2267.yaml +155 -0
  332. data/install_scripts/GEO/series/GSE23.yaml +58 -0
  333. data/install_scripts/GEO/series/GSE2329.yaml +43 -0
  334. data/install_scripts/GEO/series/GSE2330.yaml +55 -0
  335. data/install_scripts/GEO/series/GSE2349.yaml +19 -0
  336. data/install_scripts/GEO/series/GSE2412.yaml +58 -0
  337. data/install_scripts/GEO/series/GSE2419.yaml +27 -0
  338. data/install_scripts/GEO/series/GSE2420.yaml +29 -0
  339. data/install_scripts/GEO/series/GSE2434.yaml +37 -0
  340. data/install_scripts/GEO/series/GSE2526.yaml +23 -0
  341. data/install_scripts/GEO/series/GSE2579.yaml +19 -0
  342. data/install_scripts/GEO/series/GSE2806.yaml +11 -0
  343. data/install_scripts/GEO/series/GSE2831.yaml +35 -0
  344. data/install_scripts/GEO/series/GSE2832.yaml +17 -0
  345. data/install_scripts/GEO/series/GSE29.yaml +16 -0
  346. data/install_scripts/GEO/series/GSE3006.yaml +35 -0
  347. data/install_scripts/GEO/series/GSE3043.yaml +18 -0
  348. data/install_scripts/GEO/series/GSE3122.yaml +12 -0
  349. data/install_scripts/GEO/series/GSE3130.yaml +12 -0
  350. data/install_scripts/GEO/series/GSE3151.yaml +118 -0
  351. data/install_scripts/GEO/series/GSE3160.yaml +31 -0
  352. data/install_scripts/GEO/series/GSE3190.yaml +14 -0
  353. data/install_scripts/GEO/series/GSE3205.yaml +36 -0
  354. data/install_scripts/GEO/series/GSE3206.yaml +23 -0
  355. data/install_scripts/GEO/series/GSE3315.yaml +13 -0
  356. data/install_scripts/GEO/series/GSE3335.yaml +15 -0
  357. data/install_scripts/GEO/series/GSE34.yaml +31 -0
  358. data/install_scripts/GEO/series/GSE3470.yaml +15 -0
  359. data/install_scripts/GEO/series/GSE35.yaml +80 -0
  360. data/install_scripts/GEO/series/GSE3503.yaml +19 -0
  361. data/install_scripts/GEO/series/GSE3683.yaml +83 -0
  362. data/install_scripts/GEO/series/GSE3684.yaml +19 -0
  363. data/install_scripts/GEO/series/GSE3685.yaml +31 -0
  364. data/install_scripts/GEO/series/GSE3686.yaml +63 -0
  365. data/install_scripts/GEO/series/GSE3687.yaml +83 -0
  366. data/install_scripts/GEO/series/GSE3802.yaml +19 -0
  367. data/install_scripts/GEO/series/GSE3803.yaml +19 -0
  368. data/install_scripts/GEO/series/GSE3804.yaml +19 -0
  369. data/install_scripts/GEO/series/GSE3805.yaml +19 -0
  370. data/install_scripts/GEO/series/GSE3813.yaml +9 -0
  371. data/install_scripts/GEO/series/GSE3814.yaml +71 -0
  372. data/install_scripts/GEO/series/GSE3815.yaml +75 -0
  373. data/install_scripts/GEO/series/GSE3817.yaml +13 -0
  374. data/install_scripts/GEO/series/GSE3818.yaml +15 -0
  375. data/install_scripts/GEO/series/GSE3819.yaml +13 -0
  376. data/install_scripts/GEO/series/GSE3820.yaml +61 -0
  377. data/install_scripts/GEO/series/GSE3821.yaml +55 -0
  378. data/install_scripts/GEO/series/GSE3844.yaml +11 -0
  379. data/install_scripts/GEO/series/GSE3853.yaml +31 -0
  380. data/install_scripts/GEO/series/GSE3935.yaml +12 -0
  381. data/install_scripts/GEO/series/GSE3969.yaml +14 -0
  382. data/install_scripts/GEO/series/GSE4049.yaml +80 -0
  383. data/install_scripts/GEO/series/GSE4144.yaml +9 -0
  384. data/install_scripts/GEO/series/GSE4261.yaml +59 -0
  385. data/install_scripts/GEO/series/GSE4295.yaml +63 -0
  386. data/install_scripts/GEO/series/GSE4398.yaml +50 -0
  387. data/install_scripts/GEO/series/GSE4719.yaml +76 -0
  388. data/install_scripts/GEO/series/GSE4720.yaml +78 -0
  389. data/install_scripts/GEO/series/GSE4721.yaml +14 -0
  390. data/install_scripts/GEO/series/GSE4807.yaml +67 -0
  391. data/install_scripts/GEO/series/GSE4826.yaml +39 -0
  392. data/install_scripts/GEO/series/GSE4934.yaml +23 -0
  393. data/install_scripts/GEO/series/GSE5027.yaml +31 -0
  394. data/install_scripts/GEO/series/GSE5070.yaml +25 -0
  395. data/install_scripts/GEO/series/GSE5238.yaml +31 -0
  396. data/install_scripts/GEO/series/GSE5267.yaml +55 -0
  397. data/install_scripts/GEO/series/GSE5281.yaml +492 -0
  398. data/install_scripts/GEO/series/GSE5290.yaml +24 -0
  399. data/install_scripts/GEO/series/GSE5376.yaml +107 -0
  400. data/install_scripts/GEO/series/GSE5575.yaml +13 -0
  401. data/install_scripts/GEO/series/GSE5835.yaml +25 -0
  402. data/install_scripts/GEO/series/GSE5836.yaml +37 -0
  403. data/install_scripts/GEO/series/GSE5837.yaml +37 -0
  404. data/install_scripts/GEO/series/GSE5938.yaml +187 -0
  405. data/install_scripts/GEO/series/GSE600.yaml +29 -0
  406. data/install_scripts/GEO/series/GSE6018.yaml +55 -0
  407. data/install_scripts/GEO/series/GSE6066.yaml +20 -0
  408. data/install_scripts/GEO/series/GSE6067.yaml +31 -0
  409. data/install_scripts/GEO/series/GSE6068.yaml +55 -0
  410. data/install_scripts/GEO/series/GSE6070.yaml +31 -0
  411. data/install_scripts/GEO/series/GSE6071.yaml +30 -0
  412. data/install_scripts/GEO/series/GSE6072.yaml +37 -0
  413. data/install_scripts/GEO/series/GSE6101.yaml +26 -0
  414. data/install_scripts/GEO/series/GSE6111.yaml +20 -0
  415. data/install_scripts/GEO/series/GSE6190.yaml +30 -0
  416. data/install_scripts/GEO/series/GSE6277.yaml +19 -0
  417. data/install_scripts/GEO/series/GSE6331.yaml +51 -0
  418. data/install_scripts/GEO/series/GSE6346.yaml +49 -0
  419. data/install_scripts/GEO/series/GSE6358.yaml +22 -0
  420. data/install_scripts/GEO/series/GSE6405.yaml +36 -0
  421. data/install_scripts/GEO/series/GSE6450.yaml +51 -0
  422. data/install_scripts/GEO/series/GSE6687.yaml +15 -0
  423. data/install_scripts/GEO/series/GSE6705.yaml +19 -0
  424. data/install_scripts/GEO/series/GSE6801.yaml +27 -0
  425. data/install_scripts/GEO/series/GSE6847.yaml +18 -0
  426. data/install_scripts/GEO/series/GSE6870.yaml +23 -0
  427. data/install_scripts/GEO/series/GSE7103.yaml +28 -0
  428. data/install_scripts/GEO/series/GSE7140.yaml +19 -0
  429. data/install_scripts/GEO/series/GSE7188.yaml +23 -0
  430. data/install_scripts/GEO/series/GSE7261.yaml +16 -0
  431. data/install_scripts/GEO/series/GSE7337.yaml +19 -0
  432. data/install_scripts/GEO/series/GSE7338.yaml +19 -0
  433. data/install_scripts/GEO/series/GSE7362.yaml +123 -0
  434. data/install_scripts/GEO/series/GSE7369.yaml +15 -0
  435. data/install_scripts/GEO/series/GSE7525.yaml +33 -0
  436. data/install_scripts/GEO/series/GSE7537.yaml +27 -0
  437. data/install_scripts/GEO/series/GSE7645.yaml +152 -0
  438. data/install_scripts/GEO/series/GSE7660.yaml +41 -0
  439. data/install_scripts/GEO/series/GSE7820.yaml +30 -0
  440. data/install_scripts/GEO/series/GSE79.yaml +32 -0
  441. data/install_scripts/GEO/series/GSE8035.yaml +19 -0
  442. data/install_scripts/GEO/series/GSE8088.yaml +13 -0
  443. data/install_scripts/GEO/series/GSE8089.yaml +19 -0
  444. data/install_scripts/GEO/series/GSE8111.yaml +15 -0
  445. data/install_scripts/GEO/series/GSE8237.yaml +35 -0
  446. data/install_scripts/GEO/series/GSE8326.yaml +37 -0
  447. data/install_scripts/GEO/series/GSE8399.yaml +13 -0
  448. data/install_scripts/GEO/series/GSE850.yaml +15 -0
  449. data/install_scripts/GEO/series/GSE8506.yaml +32 -0
  450. data/install_scripts/GEO/series/GSE8542.yaml +47 -0
  451. data/install_scripts/GEO/series/GSE8558.yaml +19 -0
  452. data/install_scripts/GEO/series/GSE8559.yaml +47 -0
  453. data/install_scripts/GEO/series/GSE8613.yaml +19 -0
  454. data/install_scripts/GEO/series/GSE8629.yaml +18 -0
  455. data/install_scripts/GEO/series/GSE8729.yaml +19 -0
  456. data/install_scripts/GEO/series/GSE8761.yaml +55 -0
  457. data/install_scripts/GEO/series/GSE8765.yaml +15 -0
  458. data/install_scripts/GEO/series/GSE8805.yaml +64 -0
  459. data/install_scripts/GEO/series/GSE8825.yaml +79 -0
  460. data/install_scripts/GEO/series/GSE8895.yaml +31 -0
  461. data/install_scripts/GEO/series/GSE8897.yaml +17 -0
  462. data/install_scripts/GEO/series/GSE8898.yaml +18 -0
  463. data/install_scripts/GEO/series/GSE8900.yaml +43 -0
  464. data/install_scripts/GEO/series/GSE8982.yaml +106 -0
  465. data/install_scripts/GEO/series/GSE920.yaml +20 -0
  466. data/install_scripts/GEO/series/GSE960.yaml +10 -0
  467. data/install_scripts/GEO/series/GSE961.yaml +14 -0
  468. data/install_scripts/GEO/series/GSE962.yaml +20 -0
  469. data/install_scripts/GEO/series/GSE963.yaml +14 -0
  470. data/install_scripts/GEO/series/GSE964.yaml +14 -0
  471. data/install_scripts/GEO/series/GSE965.yaml +14 -0
  472. data/install_scripts/GEO/series/GSE966.yaml +14 -0
  473. data/install_scripts/GEO/series/GSE993.yaml +9 -0
  474. data/lib/MARQ.rb +79 -0
  475. data/lib/MARQ/CustomDS.rb +99 -0
  476. data/lib/MARQ/GEO.rb +585 -0
  477. data/lib/MARQ/ID.rb +148 -0
  478. data/lib/MARQ/MADB.rb +243 -0
  479. data/lib/MARQ/annotations.rb +740 -0
  480. data/lib/MARQ/fdr.rb +177 -0
  481. data/lib/MARQ/main.rb +227 -0
  482. data/lib/MARQ/rankproduct.rb +146 -0
  483. data/lib/MARQ/score.rb +395 -0
  484. data/merb/Rakefile +35 -0
  485. data/merb/app/controllers/application.rb +2 -0
  486. data/merb/app/controllers/exceptions.rb +13 -0
  487. data/merb/app/controllers/help.rb +22 -0
  488. data/merb/app/controllers/main.rb +72 -0
  489. data/merb/app/controllers/normalize.rb +41 -0
  490. data/merb/app/controllers/results.rb +247 -0
  491. data/merb/app/controllers/series.rb +44 -0
  492. data/merb/app/helpers/global_helpers.rb +5 -0
  493. data/merb/app/helpers/main_helper.rb +5 -0
  494. data/merb/app/helpers/results_helper.rb +50 -0
  495. data/merb/app/stylesheets/marq.sass +561 -0
  496. data/merb/app/stylesheets/marq_mixins.sass +23 -0
  497. data/merb/app/stylesheets/rounded_corners.sass +35 -0
  498. data/merb/app/views/exceptions/not_acceptable.html.erb +63 -0
  499. data/merb/app/views/exceptions/not_found.html.erb +47 -0
  500. data/merb/app/views/help/_menu.html.haml +4 -0
  501. data/merb/app/views/help/index.html.haml +110 -0
  502. data/merb/app/views/help/meth.html.haml +301 -0
  503. data/merb/app/views/help/quick.html.haml +149 -0
  504. data/merb/app/views/layout/application.html.haml +27 -0
  505. data/merb/app/views/main/index.html.haml +96 -0
  506. data/merb/app/views/normalize/index.html.haml +51 -0
  507. data/merb/app/views/partials/_annotations.html.haml +37 -0
  508. data/merb/app/views/partials/_enrichment.html.haml +17 -0
  509. data/merb/app/views/partials/_experiment.html.haml +33 -0
  510. data/merb/app/views/partials/_ie.html.haml +19 -0
  511. data/merb/app/views/partials/_video.html.haml +5 -0
  512. data/merb/app/views/results/compare.html.haml +161 -0
  513. data/merb/app/views/results/error.html.haml +5 -0
  514. data/merb/app/views/results/explore_hits.html.haml +54 -0
  515. data/merb/app/views/results/images.html.haml +18 -0
  516. data/merb/app/views/results/main.html.haml +125 -0
  517. data/merb/app/views/results/wait.html.haml +10 -0
  518. data/merb/app/views/series/main.html.haml +99 -0
  519. data/merb/autotest/discover.rb +1 -0
  520. data/merb/autotest/merb.rb +149 -0
  521. data/merb/autotest/merb_rspec.rb +165 -0
  522. data/merb/config.ru +76 -0
  523. data/merb/config/environments/development.rb +15 -0
  524. data/merb/config/environments/production.rb +10 -0
  525. data/merb/config/environments/rake.rb +11 -0
  526. data/merb/config/environments/staging.rb +10 -0
  527. data/merb/config/environments/test.rb +12 -0
  528. data/merb/config/init.rb +66 -0
  529. data/merb/config/rack.rb +11 -0
  530. data/merb/config/router.rb +64 -0
  531. data/merb/doc/rdoc/generators/merb_generator.rb +1362 -0
  532. data/merb/doc/rdoc/generators/template/merb/api_grease.js +640 -0
  533. data/merb/doc/rdoc/generators/template/merb/index.html.erb +37 -0
  534. data/merb/doc/rdoc/generators/template/merb/merb.css +252 -0
  535. data/merb/doc/rdoc/generators/template/merb/merb.rb +351 -0
  536. data/merb/doc/rdoc/generators/template/merb/merb_doc_styles.css +492 -0
  537. data/merb/doc/rdoc/generators/template/merb/prototype.js +2515 -0
  538. data/merb/lib/helper.rb +452 -0
  539. data/merb/public/favicon.ico +0 -0
  540. data/merb/public/images/guide/annotations.png +0 -0
  541. data/merb/public/images/guide/compare.png +0 -0
  542. data/merb/public/images/guide/compare_page.png +0 -0
  543. data/merb/public/images/guide/download.png +0 -0
  544. data/merb/public/images/guide/genes.png +0 -0
  545. data/merb/public/images/guide/hits.png +0 -0
  546. data/merb/public/images/guide/name.png +0 -0
  547. data/merb/public/images/guide/organism.png +0 -0
  548. data/merb/public/images/guide/table.png +0 -0
  549. data/merb/public/images/loadingAnimation.gif +0 -0
  550. data/merb/public/images/logo_ARTECS.jpg +0 -0
  551. data/merb/public/images/logo_BCU.jpg +0 -0
  552. data/merb/public/images/logo_MICRO.png +0 -0
  553. data/merb/public/images/macFFBgHack.png +0 -0
  554. data/merb/public/images/merb.jpg +0 -0
  555. data/merb/public/images/meth/G.gif +0 -0
  556. data/merb/public/images/meth/MARQ.gif +0 -0
  557. data/merb/public/images/meth/PS_bottom.gif +0 -0
  558. data/merb/public/images/meth/PS_bottom_formula.gif +0 -0
  559. data/merb/public/images/meth/PS_top.gif +0 -0
  560. data/merb/public/images/meth/PS_top_formula.gif +0 -0
  561. data/merb/public/images/meth/Q.gif +0 -0
  562. data/merb/public/images/meth/Rplot.png +0 -0
  563. data/merb/public/images/meth/S_bottom.gif +0 -0
  564. data/merb/public/images/meth/S_diff.gif +0 -0
  565. data/merb/public/images/meth/S_down.gif +0 -0
  566. data/merb/public/images/meth/S_top.gif +0 -0
  567. data/merb/public/images/meth/S_up.gif +0 -0
  568. data/merb/public/images/meth/alpha.gif +0 -0
  569. data/merb/public/images/meth/beta_0.gif +0 -0
  570. data/merb/public/images/meth/beta_1.gif +0 -0
  571. data/merb/public/images/meth/d.gif +0 -0
  572. data/merb/public/images/meth/d_formula.gif +0 -0
  573. data/merb/public/images/meth/d_noabs.gif +0 -0
  574. data/merb/public/images/meth/d_range.gif +0 -0
  575. data/merb/public/images/meth/g.gif +0 -0
  576. data/merb/public/images/meth/i.gif +0 -0
  577. data/merb/public/images/meth/m.gif +0 -0
  578. data/merb/public/images/meth/p.gif +0 -0
  579. data/merb/public/images/meth/penalty.gif +0 -0
  580. data/merb/public/images/meth/q.gif +0 -0
  581. data/merb/public/images/meth/w.gif +0 -0
  582. data/merb/public/images/meth/w_formula.gif +0 -0
  583. data/merb/public/images/meth/w_weight.gif +0 -0
  584. data/merb/public/images/meth/weight.gif +0 -0
  585. data/merb/public/images/meth/weight_function.gif +0 -0
  586. data/merb/public/images/top.png +0 -0
  587. data/merb/public/images/top2.png +0 -0
  588. data/merb/public/images/wait.gif +0 -0
  589. data/merb/public/javascripts/jquery-ui.core.js +519 -0
  590. data/merb/public/javascripts/jquery-ui.hitarea.js +168 -0
  591. data/merb/public/javascripts/jquery.js +19 -0
  592. data/merb/public/javascripts/jquery.scrollTo.js +11 -0
  593. data/merb/public/javascripts/jquery.tablescroll.js +124 -0
  594. data/merb/public/javascripts/jquery.tabs.js +642 -0
  595. data/merb/public/javascripts/marq.js +51 -0
  596. data/merb/public/javascripts/marq_pages.js +504 -0
  597. data/merb/public/javascripts/thickbox.js +320 -0
  598. data/merb/public/javascripts/wz_jsgraphics.js +1108 -0
  599. data/merb/public/merb.fcgi +22 -0
  600. data/merb/public/plugins/dialog/javascripts/jquery-ui.dialog.js +44 -0
  601. data/merb/public/plugins/dialog/stylesheets/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  602. data/merb/public/plugins/dialog/stylesheets/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  603. data/merb/public/plugins/dialog/stylesheets/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  604. data/merb/public/plugins/dialog/stylesheets/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  605. data/merb/public/plugins/dialog/stylesheets/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  606. data/merb/public/plugins/dialog/stylesheets/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  607. data/merb/public/plugins/dialog/stylesheets/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  608. data/merb/public/plugins/dialog/stylesheets/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  609. data/merb/public/plugins/dialog/stylesheets/images/ui-icons_222222_256x240.png +0 -0
  610. data/merb/public/plugins/dialog/stylesheets/images/ui-icons_2e83ff_256x240.png +0 -0
  611. data/merb/public/plugins/dialog/stylesheets/images/ui-icons_454545_256x240.png +0 -0
  612. data/merb/public/plugins/dialog/stylesheets/images/ui-icons_888888_256x240.png +0 -0
  613. data/merb/public/plugins/dialog/stylesheets/images/ui-icons_cd0a0a_256x240.png +0 -0
  614. data/merb/public/plugins/dialog/stylesheets/jquery-ui.dialog.css +404 -0
  615. data/merb/public/plugins/tablesorter/images/asc.gif +0 -0
  616. data/merb/public/plugins/tablesorter/images/bg.gif +0 -0
  617. data/merb/public/plugins/tablesorter/images/blue.zip +0 -0
  618. data/merb/public/plugins/tablesorter/images/desc.gif +0 -0
  619. data/merb/public/plugins/tablesorter/javascripts/jquery.tablesorter.js +2 -0
  620. data/merb/public/plugins/tablesorter/stylesheets/jquery.tablesorter.css +39 -0
  621. data/merb/public/robots.txt +5 -0
  622. data/merb/public/stylesheets/thickbox.css +163 -0
  623. data/merb/spec/requests/main_spec.rb +7 -0
  624. data/merb/spec/requests/results_spec.rb +7 -0
  625. data/merb/spec/spec.opts +0 -0
  626. data/merb/spec/spec_helper.rb +20 -0
  627. data/merb/tasks/merb.thor/app_script.rb +31 -0
  628. data/merb/tasks/merb.thor/common.rb +68 -0
  629. data/merb/tasks/merb.thor/gem_ext.rb +125 -0
  630. data/merb/tasks/merb.thor/main.thor +150 -0
  631. data/merb/tasks/merb.thor/ops.rb +93 -0
  632. data/merb/tasks/merb.thor/utils.rb +40 -0
  633. data/tasks/install.rake +21 -0
  634. data/webservice/MARQWS.rb +167 -0
  635. metadata +798 -0
@@ -0,0 +1,148 @@
1
+ require 'MARQ'
2
+ require 'DBcache'
3
+
4
+ module ID
5
+
6
+ #DEFAULT_FORMAT_ALL = 'Entrez Gene Id'
7
+ DEFAULT_FORMAT_ALL = nil
8
+ DEFAULT_FORMATS = {}
9
+
10
+ def self.id_position(org, id)
11
+ @@supported[org] ||= Organism.supported_ids(org)
12
+ Organism.id_position(@@supported[org], id)
13
+ end
14
+
15
+
16
+ def self.DB_load(org, to = 0)
17
+ identifier_file = File.join(Rbbt.datadir,'organisms',org,'identifiers')
18
+ tablename = "ID_#{org.to_s.strip}_#{to.to_s.strip}"
19
+
20
+ if DBcache.has_table?(tablename)
21
+ DBcache.drop(tablename)
22
+ end
23
+
24
+ DBcache.create(tablename, 'CHAR(50)', ['CHAR(50)'])
25
+
26
+ require 'progress-monitor'
27
+
28
+ total_fields = Organism.supported_ids(org).length
29
+
30
+ Progress.monitor "Loading ID DB table for #{ org } - #{to}"
31
+ total_fields.times{|field|
32
+ Progress.monitor "Processing file. Field #{ field } / #{total_fields}"
33
+ File.open(identifier_file).each{|l|
34
+ next if l =~ /^#/
35
+ codes = l.chomp.split(/\t/)
36
+
37
+ native = codes[to]
38
+ next if native.nil? || native == ""
39
+
40
+ other = codes[field]
41
+ next if other.nil? || other == ""
42
+
43
+
44
+ #codes.collect{|c| c.split("|")}.flatten.compact.select{|c| c != ""}.uniq.each{|code|
45
+ other.split("|").each{|code|
46
+ begin
47
+ DBcache.fast_add(tablename, code.downcase, [native])
48
+ rescue
49
+ puts $!.message
50
+ end
51
+ }
52
+ }
53
+ }
54
+ end
55
+
56
+ def self.translate_DB(org, genes, options = {})
57
+ to = options[:to] || DEFAULT_FORMATS[org] || DEFAULT_FORMAT_ALL
58
+
59
+ if to
60
+ to = id_position(org, to)
61
+ else
62
+ to = 0
63
+ end
64
+
65
+ tablename = "ID_#{org.to_s.strip}_#{to.to_s.strip}"
66
+ DB_load(org, to) unless DBcache.has_table?(tablename)
67
+ genes = genes.collect{|gene| gene.strip.downcase}
68
+ DBcache.load(tablename, genes).values_at(*genes).collect{|gene| gene.first if gene}
69
+ end
70
+
71
+ def self.translate_index(org, genes, options = {})
72
+ genes = genes.collect{|gene| gene.strip if gene}
73
+ to = options[:to] || DEFAULT_FORMATS[org] || DEFAULT_FORMAT_ALL
74
+ from = options[:from]
75
+ @indexes ||= {}
76
+ if @indexes[org.to_s + to.to_s + from.to_s].nil?
77
+ puts "Loading #{ org }"
78
+ options = {}
79
+ options[:other] = [from] if from
80
+ options[:native] = to if to
81
+ options[:case_sensitive] = false
82
+
83
+ @indexes[org.to_s + to.to_s + from.to_s] = Organism.id_index(org, options)
84
+ end
85
+
86
+ index = @indexes[org.to_s + to.to_s + from.to_s]
87
+
88
+ return genes.collect{|code|
89
+ code.nil? || code == "" ? nil : index[code]
90
+ }
91
+ end
92
+
93
+ @@supported = {}
94
+ def self.translate_grep(org, genes, options = {})
95
+ to = options[:to] || DEFAULT_FORMATS[org] || DEFAULT_FORMAT_ALL
96
+ from = options[:from]
97
+
98
+ options = {}
99
+ options[:extra] = [id_position(org, from)] if from
100
+ options[:native] = id_position(org,to) if to
101
+ options[:case_sensitive] ||= false
102
+
103
+ genes = genes.collect{|gene| gene.strip if gene}
104
+ genes = genes.collect{|gene| gene.downcase} unless options[:case_sensitive]
105
+
106
+ #genes_re = '\(^\|[' + "\t" + '|]\)' + genes.join('\|') + '\($\|[' + "\t" + '|]\)'
107
+ #cmd = "cat #{File.join(Rbbt.datadir,'organisms',org,'identifiers')}|grep -i '#{genes_re}'"
108
+ genes_re = '(?:^|[\t\|])(?:' + genes.join('|') + ')(?:$|[\t\|])'
109
+ cmd = "cat #{File.join(Rbbt.datadir,'organisms',org,'identifiers')}|ruby -lne 'puts $_ if $_ =~ /#{genes_re}/i'"
110
+
111
+ index = Index.index(IO::popen(cmd), options)
112
+
113
+ index.values_at(*genes)
114
+
115
+ end
116
+
117
+
118
+ def self.AILUN_translate(platform, genes)
119
+ index = Open.to_hash("ftp://ailun.stanford.edu/ailun/annotation/geo/#{platform}.annot.gz", :fix => proc{|l| l.match(/^(.*?)\t(.*?)\t.*/); $1.downcase + "\t" + $2 })
120
+ index.values_at(*genes.collect{|code| code.strip.downcase}).collect{|v| v.nil? ? nil : v.first.first}
121
+ end
122
+
123
+ class << self
124
+ alias_method :translate, :translate_DB
125
+ end
126
+
127
+ end
128
+
129
+ if __FILE__ == $0
130
+ require 'benchmark'
131
+
132
+
133
+ Organism.all.each{|org|
134
+ ID.DB_load(org)
135
+ }
136
+
137
+
138
+ #num = 4000
139
+
140
+ #genes = File.open(Rbbt.datadir + '/organisms/human/identifiers').collect{|l| l.split("\t")[2] }.select{|c| c != ""}[1000,num]
141
+
142
+ #trans = nil
143
+ #puts Benchmark.measure{
144
+ # trans = ID.translate('human', genes)
145
+ #}
146
+ #p trans
147
+ #
148
+ end
@@ -0,0 +1,243 @@
1
+ require 'MARQ'
2
+ require 'MARQ/GEO'
3
+ require 'MARQ/CustomDS'
4
+
5
+ module MADB
6
+ module CustomDS
7
+
8
+ def self.save(dataset)
9
+ prefix = Object::CustomDS.path(dataset)
10
+
11
+ codes = File.open(prefix + '.codes').collect{|l| l.chomp.downcase}
12
+
13
+ DBcache.save(dataset + '_codes', codes)
14
+
15
+ experiments = File.open(prefix + '.experiments').collect{|l| l.chomp}
16
+ orders = File.open(prefix + '.orders').collect{|l| values = l.chomp.split(/\t/).collect{|v| v == "NA" ? nil : v.to_i };}
17
+
18
+ data = {}
19
+ codes.each_with_index{|code,i|
20
+ data[code.to_sym] = orders[i]
21
+ }
22
+ case
23
+ when codes.length < 65535
24
+ type = "SMALLINT UNSIGNED"
25
+ when codes.length < 16777215
26
+ type = "MEDIUMIN UNSIGNED"
27
+ else
28
+ type = "INT UNSIGNED"
29
+ end
30
+
31
+ puts "Saving #{ dataset }"
32
+ DBcache.save(dataset + '_experiments', experiments)
33
+ DBcache.save(dataset, data, [type] * orders.first.length)
34
+
35
+ return unless Object::CustomDS::has_cross_platform?(dataset)
36
+ dataset = dataset + '_cross_platform'
37
+ prefix = Object::CustomDS.path(dataset)
38
+
39
+ codes = File.open(prefix + '.codes').collect{|l| l.chomp.downcase}
40
+
41
+ DBcache.save(dataset + '_codes', codes)
42
+
43
+ experiments = File.open(prefix + '.experiments').collect{|l| l.chomp}
44
+ orders = File.open(prefix + '.orders').collect{|l| values = l.chomp.split(/\t/).collect{|v| v == "NA" ? nil : v.to_i };}
45
+
46
+ data = {}
47
+ codes.each_with_index{|code,i|
48
+ data[code.to_sym] = orders[i]
49
+ }
50
+ case
51
+ when codes.length < 65535
52
+ type = "SMALLINT UNSIGNED"
53
+ when codes.length < 16777215
54
+ type = "MEDIUMIN UNSIGNED"
55
+ else
56
+ type = "INT UNSIGNED"
57
+ end
58
+
59
+ puts "Saving #{ dataset }"
60
+ DBcache.save(dataset + '_experiments', experiments)
61
+ DBcache.save(dataset, data, [type] * orders.first.length)
62
+ nil
63
+ end
64
+
65
+ def self.positions(dataset, genes)
66
+ return [{},[]] if genes.empty?
67
+ genes = genes.collect{|gene| gene.downcase.strip}
68
+
69
+ platform_entries = platform_entries(dataset + '_codes').to_f
70
+
71
+ data = {}
72
+ matched = []
73
+
74
+ gene_positions = DBcache.load(dataset, genes)
75
+ matched ||= gene_positions.keys
76
+
77
+ experiments = DBcache.load(dataset + '_experiments').sort{|a,b|
78
+ a[0].to_i <=> b[0].to_i
79
+ }.collect{|p|
80
+ Object::GEO::clean(dataset) + ": " + p[1].first
81
+ }
82
+
83
+
84
+ matched = (matched + gene_positions.keys).uniq
85
+ scale = (0..experiments.length - 1).collect{|i|
86
+ rows = DBcache.num_rows(dataset, "C#{i}");
87
+ if rows > 0
88
+ platform_entries / rows
89
+ else
90
+ nil
91
+ end
92
+ }
93
+
94
+ gene_x_experiment = gene_positions.values
95
+
96
+ experiment_x_gene = gene_x_experiment.transpose
97
+
98
+ experiments.each_with_index{|experiment, i|
99
+ next if scale[i].nil? || experiment_x_gene[i].nil?
100
+ values = experiment_x_gene[i].collect{|v| v.nil? ? nil : (v.to_f * scale[i]).to_i}
101
+ data[experiment] = values
102
+ }
103
+
104
+ [data, matched]
105
+ end
106
+
107
+ def self.platform_entries(platform)
108
+ DBcache.num_rows(platform)
109
+ end
110
+ end
111
+
112
+
113
+
114
+
115
+
116
+ module GEO
117
+
118
+ require 'progress-monitor'
119
+ def self.saveGPL(platform)
120
+ datasets = Object::GEO.platform_datasets(platform).sort
121
+ return if datasets.empty?
122
+
123
+ puts "Saving #{ platform }, #{datasets.length} datasets"
124
+
125
+ codes = File.open(File.join(Object::GEO.platform_path(platform),'codes')).collect{|l| l.chomp.downcase}
126
+
127
+ DBcache.save(platform, codes)
128
+
129
+ Progress.monitor("Saving #{ platform }")
130
+ datasets.sort.each{|dataset|
131
+ path = Object::GEO.dataset_path(dataset)
132
+ experiments = File.open(path + '.experiments').collect{|l| l.chomp}
133
+ orders = File.open(path + '.orders').collect{|l| values = l.chomp.split(/\t/).collect{|v| v == "NA" ? nil : v.to_i };}
134
+
135
+ data = {}
136
+ codes.each_with_index{|code,i|
137
+ data[code.to_sym] = orders[i]
138
+ }
139
+ case
140
+ when codes.length < 65535
141
+ type = "SMALLINT UNSIGNED"
142
+ when codes.length < 16777215
143
+ type = "MEDIUMINT UNSIGNED"
144
+ else
145
+ type = "INT UNSIGNED"
146
+ end
147
+
148
+ DBcache.save(dataset + '_experiments', experiments)
149
+ DBcache.save(dataset, data, [type] * orders.first.length)
150
+ }
151
+
152
+
153
+ return unless File.exist?(File.join(Object::GEO.platform_path(platform),'cross_platform'))
154
+ codes = File.open(File.join(Object::GEO.platform_path(platform),'cross_platform')).collect{|l| l.chomp.downcase}
155
+
156
+ DBcache.save(platform + '_cross_platform', codes)
157
+
158
+ Progress.monitor("Saving #{ platform }")
159
+ datasets.sort.each{|dataset|
160
+ path = Object::GEO.dataset_path(dataset)
161
+ next unless File.exists?(path + '_cross_platform.experiments')
162
+ experiments = File.open(path + '_cross_platform.experiments').collect{|l| l.chomp}
163
+ orders = File.open(path + '_cross_platform.orders').collect{|l| values = l.chomp.split(/\t/).collect{|v| v == "NA" ? nil : v.to_i };}
164
+
165
+ data = {}
166
+ codes.each_with_index{|code,i|
167
+ data[code.to_sym] = orders[i]
168
+ }
169
+
170
+ case
171
+ when codes.length < 65535
172
+ type = "SMALLINT UNSIGNED"
173
+ when codes.length < 16777215
174
+ type = "MEDIUMIN UNSIGNED"
175
+ else
176
+ type = "INT UNSIGNED"
177
+ end
178
+
179
+
180
+ DBcache.save(dataset + '_cross_platform_experiments', experiments)
181
+ DBcache.save(dataset + '_cross_platform', data, [type] * orders.first.length)
182
+ }
183
+ end
184
+
185
+ def self.positions(platform, genes)
186
+ return [{},[]] if genes.empty?
187
+ genes = genes.collect{|gene| gene.downcase.strip}
188
+
189
+ datasets = Object::GEO.platform_datasets(platform).sort
190
+ platform_entries = platform_entries(platform).to_f
191
+
192
+ data = {}
193
+ matched = nil
194
+
195
+ datasets.each{|dataset|
196
+ dataset += '_cross_platform' if Object::GEO::is_cross_platform?(platform)
197
+ gene_positions = DBcache.load(dataset, genes)
198
+ matched ||= gene_positions.keys
199
+
200
+ experiments = DBcache.load(dataset + '_experiments').sort{|a,b|
201
+ a[0].to_i <=> b[0].to_i
202
+ }.collect{|p|
203
+ Object::GEO::clean(dataset) + ": " + p[1].first
204
+ }
205
+
206
+ scale = (0..experiments.length - 1).collect{|i|
207
+ rows = DBcache.num_rows(dataset, "C#{i}");
208
+ if rows > 0
209
+ platform_entries / rows
210
+ else
211
+ nil
212
+ end
213
+ }
214
+
215
+ gene_x_experiment = gene_positions.values
216
+
217
+ experiment_x_gene = gene_x_experiment.transpose
218
+
219
+ experiments.each_with_index{|experiment, i|
220
+ next if scale[i].nil? || experiment_x_gene[i].nil?
221
+ values = experiment_x_gene[i].collect{|v| v.nil? ? nil : (v.to_f * scale[i]).to_i}
222
+ data[experiment] = values
223
+ }
224
+ }
225
+
226
+ [data, matched]
227
+ end
228
+
229
+ def self.platform_entries(platform)
230
+ DBcache.num_rows(platform)
231
+ end
232
+ end
233
+
234
+ end
235
+
236
+ if __FILE__ == $0
237
+ #CustomDS::datasets('sgd').each{|d| MADB::CustomDS::save(d)}
238
+
239
+ require 'pp'
240
+ pp MADB::GEO::positions('GPL91_cross_platform', %w(2778))[0].select{|k,v| k =~ /GDS989/}.sort
241
+ #p MADB::CustomDS::positions("HaploidData",%w( YMR261c YDL140c YIL122w YPL093w YHR211w YDL142c YHR106w YOR103c YDR233c YLR181c yomeman))
242
+ #p MADB::CustomDS::positions("HaploidData_cross_platform",%w( S000002685 S000001149 S000003068 S000003153 S000003355 S000000127 S000004444 S000004875 S000001702 S000005843 S000000862))
243
+ end
@@ -0,0 +1,740 @@
1
+ require 'inline'
2
+ require 'net/http'
3
+ require 'uri'
4
+ require 'MARQ'
5
+ require 'rbbt/bow/dictionary'
6
+ require 'MARQ/fdr'
7
+
8
+ module Annotations
9
+ class << self
10
+ inline do |builder|
11
+ builder.c_raw <<-EOC
12
+
13
+ /**
14
+ * Compute log(k!)
15
+ * @param k The value k.
16
+ * @return The result.
17
+ */
18
+ double lFactorial(double k)
19
+ {
20
+ double r = 0;
21
+ int i;
22
+ for(i=2 ; i<=(int)k ; i++)
23
+ {
24
+ r = r + (double)(log((double)i));
25
+ }
26
+ return r;
27
+ }
28
+
29
+
30
+
31
+ /**
32
+ * Compute the log(binom(n,k))
33
+ * @param n The number of possible items.
34
+ * @param k The number of selected items.
35
+ * @return The result.
36
+ */
37
+ double lBinom(double n, double k)
38
+ {
39
+ long i;
40
+ double r = 0;
41
+
42
+ if(n > n-k){
43
+ k = n-k;
44
+ }
45
+
46
+ for(i = (long)n ; i> (n-k) ; i--)
47
+ {
48
+ r = r + log((double)i);
49
+ }
50
+
51
+ r = r - lFactorial(k);
52
+
53
+ return r;
54
+ }
55
+ EOC
56
+
57
+ builder.c <<-EOC
58
+ /**
59
+ * * Compute the Hypergeometric accumulated value.
60
+ * * @param total => total size
61
+ * * @param support => total support
62
+ * * @param list => selected list size,
63
+ * * @param found => support
64
+ * * @return The result
65
+ * */
66
+ double hypergeometric(double total, double support, double list, double found)
67
+ {
68
+ double other = total - support;
69
+
70
+ double top = list;
71
+ if(support < list){
72
+ top = support;
73
+ }
74
+
75
+ double log_n_choose_k = lBinom(total,list);
76
+
77
+ double lfoo = lBinom(support,top) + lBinom(other, list-top);
78
+
79
+ double sum = 0;
80
+ int i;
81
+ for (i = (int)top; i >= found; i-- )
82
+ {
83
+ sum = sum + exp(lfoo - log_n_choose_k);
84
+ if ( i > found)
85
+ {
86
+ lfoo = lfoo + log(i / (support - i+1)) + log( (other - list + i) / (list-i+1) );
87
+ }
88
+ }
89
+ return sum;
90
+ }
91
+ EOC
92
+ end
93
+ end
94
+
95
+ def self.exp2gds(experiment)
96
+ experiment =~ /(.*?):/
97
+ $1
98
+ end
99
+
100
+ def self.compare(a,b)
101
+ case
102
+ when a[:pvalue] < b[:pvalue]
103
+ -1
104
+ when a[:pvalue] > b[:pvalue]
105
+ 1
106
+ when a[:pvalue] == b[:pvalue]
107
+ b[:score].abs <=> a[:score].abs
108
+ end
109
+ end
110
+
111
+ RANK_SIZE_BINS = %w(1 2 3 4 5 7 10 15 20 30 40 50 65 80 100 125 150 175 200 250 300 350 400 450 500 600 700 800 900 1000 1500 2000 2500 3000)
112
+
113
+ def self.enrichment_rank(annotations, ranks, options = {})
114
+ dict_options = {
115
+ :dict_options => {:low => 0, :hi => 0.5, :limit => 100000}
116
+ }.merge(options)[:dict_options]
117
+ positions = {}
118
+ found_datasets = []
119
+
120
+ dict = Dictionary::TF_IDF.new
121
+ ranks.each_with_index{|experiment, rank|
122
+ info = annotations[experiment]
123
+
124
+ dataset_terms = info[:dataset]
125
+ signature_terms = info[:signature]
126
+
127
+ dataset = exp2gds experiment
128
+
129
+ terms = signature_terms
130
+ terms += dataset_terms
131
+
132
+ term_count = {}
133
+ terms.each{|term|
134
+ term_count[term] ||= 0
135
+ term_count[term] += 1
136
+ }
137
+ dict.add(term_count)
138
+ }
139
+
140
+ best = dict.best(dict_options).keys
141
+
142
+ found_datasets = []
143
+ ranks.each_with_index{|experiment, rank|
144
+ info = annotations[experiment]
145
+
146
+ dataset_terms = info[:dataset]
147
+ signature_terms = info[:signature]
148
+
149
+ dataset = exp2gds experiment
150
+
151
+ terms = signature_terms
152
+
153
+ if ! found_datasets.include? dataset
154
+ terms += dataset_terms
155
+ found_datasets << dataset
156
+ end
157
+
158
+ terms.uniq.each{|term|
159
+ next if not best.include? term
160
+ positions[term] ||= []
161
+ positions[term] << rank
162
+ }
163
+ }
164
+
165
+ scores = []
166
+
167
+
168
+ sizes = {}
169
+ RANK_SIZE_BINS.each{|size| sizes[size.to_i] = []}
170
+
171
+
172
+ # For each term compute the rank score. Also, place it in the closest size
173
+ # bin for the permutations.
174
+ best.each_with_index{|term, pos|
175
+ if positions[term]
176
+ list = positions[term]
177
+
178
+ # place it on the size bin
179
+ found = false
180
+ sizes.keys.sort.each_with_index{|size,i|
181
+ next if found
182
+ if list.length < size
183
+ found = true
184
+ sizes[sizes.keys.sort[i-1]] << pos
185
+ end
186
+ }
187
+ sizes[sizes.keys.sort.last] << pos if !found
188
+
189
+ scores << Score::score(list, ranks.length, 0)[:score]
190
+ else # it has no score
191
+ scores << nil
192
+ end
193
+ }
194
+
195
+ info = {}
196
+
197
+ # Go through all the size bins, run the permutations and assign the pvalues
198
+ # to all terms in the bin.
199
+ sizes.keys.each{|size|
200
+ next if size == 1
201
+ next if sizes[size].empty?
202
+
203
+ # This are the actual scores for the terms in the bin
204
+ sub_list_scores = sizes[size].collect{|pos| scores[pos] || 0}
205
+
206
+ # Compute the pvalues for all the terms in the bin. The size of the
207
+ # permutation list is that of the bin
208
+ pvalues = Score::pvalues(sub_list_scores, size, 0, ranks.length)
209
+
210
+ # Save the information from the terms, score, hits, and pvalues.
211
+ sizes[size].zip(pvalues).each{|p|
212
+ pos = p[0]
213
+ pvalue = p[1]
214
+ score = scores[pos]
215
+ next if score < 0
216
+
217
+ term = best[pos]
218
+ hits = positions[term].nil? ? 0 : positions[term].length
219
+
220
+ info[term] = {:score => score, :hits => hits, :pvalue => pvalue}
221
+ }
222
+ }
223
+
224
+ info
225
+ end
226
+
227
+ def self.enrichment_hypergeometric(annotations, relevant, options)
228
+ dict_options = {
229
+ :dict_options => {:low => 0, :hi => 0.5, :limit => 100000}
230
+ }.merge(options)[:dict_options]
231
+ positions = {}
232
+ found_datasets = []
233
+
234
+ dict = Dictionary::TF_IDF.new
235
+ ranks.each_with_index{|experiment, rank|
236
+ info = annotations[experiment]
237
+
238
+ dataset_terms = info[:dataset]
239
+ signature_terms = info[:signature]
240
+
241
+ dataset = exp2gds experiment
242
+
243
+ terms = signature_terms
244
+ terms += dataset_terms
245
+
246
+ term_count = {}
247
+ terms.each{|term|
248
+ term_count[term] ||= 0
249
+ term_count[term] += 1
250
+ }
251
+ dict.add(term_count)
252
+ }
253
+
254
+ best = dict.best(dict_options).keys
255
+
256
+ terms = {}
257
+ found_datasets = []
258
+ annotations.each{|experiment, info|
259
+ dataset_terms = info[:dataset]
260
+ signature_terms = info[:signature]
261
+
262
+ dataset = exp2gds experiment
263
+
264
+ signature_terms.each{|term|
265
+ next if ! best.include? term
266
+ terms[term] ||= {:relevant => 0, :total => 0}
267
+ terms[term][:total] += 1
268
+ terms[term][:relevant] += 1 if relevant.include? experiment
269
+ }
270
+
271
+ next if found_datasets.include? dataset
272
+ found_datasets << dataset
273
+
274
+ dataset_terms.each{|term|
275
+ next if ! best.include? term
276
+ terms[term] ||= {:relevant => 0, :total => 0}
277
+ terms[term][:total] += 1
278
+ terms[term][:relevant] += 1 if relevant.include? experiment
279
+ }
280
+ }
281
+
282
+
283
+ total = annotations.keys.length
284
+ list = relevant.length
285
+
286
+ terms.each{|term, info|
287
+ info[:pvalue] = Annotations.hypergeometric(total,info[:total],list, info[:relevant])
288
+ }
289
+
290
+ terms
291
+ end
292
+
293
+
294
+
295
+ def self.annotations(scores, type, pvalue = 0.05, algorithm = :rank)
296
+ annot = {}
297
+ relevant = []
298
+
299
+ dict_options = {}
300
+ if type == "Words"
301
+ dict_options = {:low => 0, :hi => 0.05, :limit => 100000}
302
+ else
303
+ dict_options = {:low => 0, :hi => 0.5, :limit => 100000}
304
+ end
305
+
306
+ case
307
+ when type =~ /^(.*)_direct$/
308
+ side = :direct
309
+ type = $1
310
+ when type =~ /^(.*)_inverse$/
311
+ side = :inverse
312
+ type = $1
313
+ end
314
+
315
+
316
+ terms_cache = {}
317
+ scores.each{|experiment, info|
318
+ dataset = experiment.match(/^(.*?): /)[1]
319
+ name = $'.strip
320
+ case
321
+ when side.nil?
322
+ term_file = File.join(MARQ.datadir, MARQ.platform_type(dataset).to_s , 'annotations',type, dataset)
323
+ when side == :direct && info[:score] > 0 || side == :inverse && info[:score] < 0
324
+ term_file = File.join(MARQ.datadir, MARQ.platform_type(dataset).to_s , 'annotations',type + '_up', dataset)
325
+ else
326
+ term_file = File.join(MARQ.datadir, MARQ.platform_type(dataset).to_s , 'annotations',type + '_down', dataset)
327
+ end
328
+
329
+ if File.exist? term_file
330
+ terms_cache[term_file] ||= YAML::load(File.open(term_file))
331
+ terms = terms_cache[term_file]
332
+ annot[experiment] = {:dataset => (terms[:dataset] || []), :signature => (terms[name] || [])}
333
+ else
334
+ annot[experiment] = {:dataset => [], :signature => []}
335
+ end
336
+
337
+ relevant << experiment if info[:pvalue] <= pvalue
338
+ }
339
+
340
+ if algorithm == :rank
341
+ ranks = scores.sort{|a,b| compare(a[1],b[1]) }.collect{|p| p[0]}
342
+ terms = enrichment_rank(annot, ranks, dict_options)
343
+ else
344
+ terms = enrichment_hypergeometric(annot, relevant, dict_options)
345
+ end
346
+
347
+ merged_annotations = {}
348
+ annot.each{|key, info|
349
+ merged_annotations[key] = info[:dataset] + info[:signature]
350
+ }
351
+ [merged_annotations, terms]
352
+ end
353
+
354
+ module GO
355
+ module Genecodis
356
+ ORGS = {
357
+ 'sgd' => 'Sc' ,
358
+ 'rgd' => 'Rn' ,
359
+ 'mgi' => 'Mm' ,
360
+ 'pombe' => 'Sp' ,
361
+ 'cgd' => 'Ca' ,
362
+ 'human' => 'Hs' ,
363
+ 'tair' => 'At' ,
364
+ 'worm' => 'Ce' ,
365
+ }
366
+
367
+ FIELDS = %w(Id Items S TS Hyp Hyp_c Genes).collect{|f| f.downcase.to_sym}
368
+
369
+ module WS
370
+ def self.driver
371
+ require 'soap/wsdlDriver'
372
+ wsdl_url = File.join('http://genecodis.dacya.ucm.es/static/wsdl/genecodisWS.wsdl')
373
+ driver = SOAP::WSDLDriverFactory.new(wsdl_url).create_rpc_driver
374
+ driver
375
+ end
376
+
377
+ def self.analysis(org, list)
378
+ puts "GO for #{ org } #{list.length} genes"
379
+
380
+ gc_org = ORGS[org.to_s]
381
+ return [] if gc_org.nil?
382
+
383
+ job_id = driver.analyze(gc_org,2,0,-1,3,list,%w(GO_Biological_Process ),[])
384
+
385
+
386
+ while (stat = driver.status(job_id)) == 1
387
+ sleep 1
388
+ end
389
+
390
+ if stat < 0
391
+ return []
392
+ else
393
+ lines = driver.results(job_id).collect{|l| l.chomp}
394
+ lines.shift
395
+ lines.collect{|l| Hash[*FIELDS.zip(l.chomp.split(/\t/)).flatten]}
396
+ end
397
+ rescue
398
+ puts $!.message
399
+ puts $!.backtrace
400
+ end
401
+ end
402
+
403
+ module Local
404
+
405
+ def self.analysis(org,list, slim = false)
406
+ require 'genecodis'
407
+
408
+ gc_org = ORGS[org.to_s]
409
+ if slim
410
+ groups = ['GOSlim_Process']
411
+ else
412
+ groups = ['GO_Biological_Process']
413
+ end
414
+
415
+ job_id = Object::Genecodis.analyze(gc_org,2,0,-1,3,list,groups,nil)
416
+ return [] if job_id.nil?
417
+
418
+ while (stat = Object::Genecodis.status(job_id)) == 1
419
+ sleep 0.5
420
+ end
421
+
422
+ if stat < 0
423
+ return []
424
+ else
425
+ res = Object::Genecodis.results(job_id)
426
+ return [] if res.nil?
427
+ lines = res.collect{|l| l.chomp}
428
+ lines.shift
429
+ lines.collect{|l| Hash[*FIELDS.zip(l.chomp.split(/\t/)).flatten]}
430
+ end
431
+ rescue
432
+ puts $!.message
433
+ puts $!.backtrace
434
+ end
435
+ end
436
+ end
437
+
438
+ def self.get_genes_nth(dataset, num_genes)
439
+ path = MARQ.dataset_path(dataset)
440
+
441
+ experiments = File.open(path + '.experiments').collect{|l| l.chomp.strip}
442
+ genes = File.open(path + '.codes').collect{|l| l.chomp.strip}
443
+ total_genes = genes.length
444
+
445
+ genes_up = {}
446
+ genes_down = {}
447
+ experiments.each{|exp| genes_up[exp] = []; genes_down[exp] = []}
448
+
449
+ File.open(path + '.orders').each_with_index{|l, i|
450
+ values = l.chomp.split(/\t/)
451
+ experiments.zip(values).each{|p|
452
+ name = p.first
453
+ value = p.last
454
+ next if p.last == "NA"
455
+ genes_up[name] << genes[i] if value.to_i < num_genes
456
+ genes_down[name] << genes[i] if value.to_i > total_genes - num_genes
457
+ }
458
+ }
459
+
460
+ {:up => genes_up, :down => genes_down}
461
+ end
462
+
463
+ def self.get_genes(dataset, options = {})
464
+ fdr, cut_off, folds, do_folds, nth_genes = {
465
+ :fdr => false,
466
+ :cut_off => 0.05,
467
+ :folds => 2.5,
468
+ :do_folds => true,
469
+ :nth_genes => 0,
470
+ }.merge(options).values_at(:fdr, :cut_off, :folds, :do_folds, :nth_genes)
471
+
472
+ if nth_genes > 0
473
+ return get_genes_nth(dataset, nth_genes)
474
+ end
475
+
476
+
477
+ path = MARQ.dataset_path(dataset)
478
+
479
+ experiments = File.open(path + '.experiments').collect{|l| l.chomp.strip}
480
+ genes = File.open(path + '.codes').collect{|l| l.chomp.strip}
481
+
482
+
483
+ experiments_ts = experiments.select{|exp| exp !~ /\[ratio\]/}
484
+ experiments_fold = experiments.select{|exp| exp =~ /\[ratio\]/}
485
+
486
+ experiments_fold = [] if ! do_folds
487
+
488
+ values_up = {}
489
+ values_down = {}
490
+ experiments.each{|exp| values_up[exp] = []; values_down[exp] = []}
491
+
492
+ File.open(path + '.pvalues').each_with_index{|l, i|
493
+ values = l.chomp.split(/\t/)
494
+ experiments_ts.zip(values).each{|p|
495
+ name = p.first
496
+ value = p.last == "NA" ? 1.0 : p.last.to_f
497
+ values_up[name] << (value > 0 ? value : 1.0)
498
+ values_down[name] << (value < 0 ? - value : 1.0)
499
+ }
500
+ }
501
+
502
+ File.open(path + '.logratios').each_with_index{|l, i|
503
+ values = l.chomp.split(/\t/)
504
+ experiments.zip(values).each{|p|
505
+ name = p.first
506
+ next unless experiments_fold.include? name
507
+ value = p.last == "NA" ? 0 : p.last.to_f
508
+ values_up[name] << (p.last > 0 ? value : 0)
509
+ values_down[name] << (p.last < 0 ? - value : 0)
510
+ }
511
+ }
512
+
513
+ genes_up = {}
514
+ genes_down = {}
515
+
516
+ threshold = cut_off
517
+ values_up.each{|experiment, values|
518
+ genes_up[experiment] = []
519
+ if experiments_ts.include? experiment
520
+ if fdr
521
+ threshold = FDR.step_up(values.sort, cut_off)
522
+ next if threshold == 0.0
523
+ end
524
+ values.each_with_index{|value, i| genes_up[experiment] << genes[i] if value < threshold}
525
+ elsif experiment_fold.include? experiment
526
+ values.each_with_index{|value, i| genes_up[experiment] << genes[i] if value < folds}
527
+ end
528
+ }
529
+ values_down.each{|experiment, values|
530
+ genes_down[experiment] = []
531
+ if experiments_ts.include? experiment
532
+ if fdr
533
+ threshold = FDR.step_up(values.sort, cut_off)
534
+ next if threshold == 0.0
535
+ end
536
+ values.each_with_index{|value, i| genes_down[experiment] << genes[i] if value < threshold}
537
+ elsif experiment_fold.include? experiment
538
+ values.each_with_index{|value, i| genes_down[experiment] << genes[i] if value < folds}
539
+ end
540
+ }
541
+
542
+
543
+ {:up => genes_up, :down => genes_down}
544
+ end
545
+
546
+ def self.get_genes_old(dataset, cut_off = 0.1, fdr = false)
547
+
548
+ path = MARQ.dataset_path(dataset)
549
+
550
+ experiments = File.open(path + '.experiments').collect{|l| l.chomp.strip}.select{|name| !name.match(/\[ratio\]/)}
551
+ genes = File.open(path + '.codes').collect{|l| l.chomp.strip}
552
+
553
+
554
+ values_up = {}
555
+ values_down = {}
556
+ experiments.each{|exp| values_up[exp] = []; values_down[exp] = []}
557
+
558
+
559
+ if File.exist?(path + '.pvalues')
560
+ File.open(path + '.pvalues').each_with_index{|l, i|
561
+ values = l.chomp.split(/\t/)
562
+ experiments.zip(values).each{|p|
563
+ value = p.last == "NA" ? 1.0 : p.last.to_f
564
+ values_up[p.first] << (value > 0 ? value : 1.0)
565
+ values_down[p.first] << (value < 0 ? - value : 1.0)
566
+ }
567
+ }
568
+ end
569
+
570
+ genes_up = {}
571
+ genes_down = {}
572
+
573
+ threshold = cut_off
574
+ values_up.each{|experiment, values|
575
+ genes_up[experiment] = []
576
+ if fdr
577
+ threshold = FDR.step_up(values.sort, cut_off)
578
+ next if threshold == 0.0
579
+ end
580
+ values.each_with_index{|value, i| genes_up[experiment] << genes[i] if value < threshold}
581
+ }
582
+ values_down.each{|experiment, values|
583
+ genes_down[experiment] = []
584
+ if fdr
585
+ threshold = FDR.step_up(values.sort, cut_off)
586
+ next if threshold == 0.0
587
+ end
588
+ values.each_with_index{|value, i| genes_down[experiment] << genes[i] if value < threshold}
589
+ }
590
+
591
+
592
+ {:up => genes_up, :down => genes_down}
593
+ end
594
+ end
595
+ module UMLS
596
+ SEMANTIC_TYPES="T020,T100,T116,T123,T023,T118,T043,T049,T103,T200,T060,T047,T203,T126,T050,T131,T125,T129,T037,T197,T191,T114,T110,T167,T024"
597
+
598
+ def self.OBA(text)
599
+
600
+ res = Net::HTTP.post_form(URI.parse('http://rest.bioontology.org/obs_hibernate/annotator'),
601
+ {
602
+ 'longestOnly'=> true,
603
+ 'wholeWordOnly'=> true,
604
+ 'withDefaultStopWords' => true,
605
+ 'scored' => true,
606
+ 'ontologiesToExpand' => 'null',
607
+ 'ontologiesToKeepInResult' => "",
608
+ 'levelMax' => 0,
609
+ 'levelMin' => 0,
610
+ 'textToAnnotate' => text.gsub(/\s/,' '),
611
+ 'semanticTypes' => SEMANTIC_TYPES,
612
+ 'mappingTypes' => 'null',
613
+ 'format' => 'tabDelimited'
614
+ })
615
+
616
+ res.body.collect{|l| l.split(/\t/)}.select{|v| v[0].to_i > 0}.collect{|v| v[2].sub(/\W*NOS/,'').downcase}.select{|w| w !~ /^\d+$/}.sort.uniq
617
+ end
618
+
619
+ end
620
+
621
+
622
+ end
623
+
624
+
625
+
626
+ if __FILE__ == $0
627
+ require 'pp'
628
+
629
+
630
+
631
+ exit
632
+ #Annotations::GO::Genecodis::Local.init
633
+
634
+ #genes = Annotations::GO::get_genes('GDS1916')
635
+ #genes[:up].each{|exp, genes|
636
+ # puts exp
637
+ # p Annotations::GO::Genecodis::Local.analysis('mgi', genes)
638
+ #}
639
+ #exit
640
+ #res = Annotations::GO::get_genes('GDS948')
641
+ #res[:down].each{|exp, values| puts "#{ exp }\t#{ values.length }"}
642
+
643
+ texts = []
644
+ texts << <<-EOT
645
+
646
+ Analysis of femurs and tibias of growth hormone (GH) deficient animals at 6
647
+ and 24 hours following treatment with 4 mg/kg body weight GH. Results provide
648
+ insight into the insulin-like growth factor-I dependent and independent
649
+ pathways that mediate the action of GH in bone.
650
+
651
+ EOT
652
+ texts << <<-EOT
653
+
654
+ Comparison of total transcription profiles for temperature-sensitive TOR2
655
+ mutant strain SH121 to its isogenic wild type counterpart SH100. Results
656
+ indicate that TOR2 inactivation leads to enhanced transcription of
657
+ Gcn4-controlled target genes.
658
+
659
+
660
+ EOT
661
+ texts << <<-EOT
662
+
663
+ Analysis of tissue specimens representing benign nevus, atypical nevus,
664
+ melanoma in situ, vertical growth phase (VGP) melanoma, and metastatic growth
665
+ phase (MGP) melanoma. Results identify expression signatures that distinguish
666
+ benign and atypical nevi and melanomas in situ from VGPs and MGPs.
667
+
668
+
669
+ EOT
670
+ texts << <<-EOT
671
+
672
+ Analysis of estrogen receptor (ER)-positive MCF7 breast cancer cells up to 48
673
+ hours following treatment with estradiol (E2). ERs facilitate the
674
+ transcriptional effects of hormones. These results, together with ChIP-PET
675
+ results, suggest potential correlations between ER binding and gene
676
+ regulation.
677
+
678
+ EOT
679
+ texts << <<-EOT
680
+
681
+
682
+ Analysis of anaerobic chemostat cultures of Saccharomyces cerevisae exposed
683
+ to one of several weak organic acids. Weak organic acids are used as
684
+ preservatives in food and beverages. Yeasts are able to proliferate at the
685
+ maximum legal dosage of such preservatives.
686
+
687
+ EOT
688
+ texts << <<-EOT
689
+
690
+ Zucker diabetic fatty model of type 2 diabetes: various insulin-sensitive
691
+ tissues Analysis of adipose, skeletal muscle, and liver tissues of Zucker
692
+ diabetic fatty animals at pre-diabetic and diabetic stages. ZDF animals have
693
+ a mutated leptin receptor. Results provide insight into the molecular
694
+ mechanisms responsible for insulin resistance and progression to type 2
695
+ diabetes.
696
+
697
+ EOT
698
+ texts << <<-EOT
699
+
700
+ Strain differences in copper sulfate Each strain was grown overnight then
701
+ diluted in fresh rich media. After three hours strains were again rediluted
702
+ into either rich media or rich media supplemented with copper sulfate. After
703
+ another three hours cultures were sampled, cells lysed and flash frozen using
704
+ liquid nitrogen. RNA was extrated using hot phenol-chloroform, reverse
705
+ transcripbed using amino-allyle dUTP and labelled with either Cy3 or Cy5
706
+ flourescent dye. Each hybridization is of a single sample compared to a
707
+ reference pool contructed from all the strains with the same treatment.
708
+ Labelled probe were hybridized to DNA microarrays spotted with 6144 70 bp
709
+ oligonucleotides obtained from Qiagen-Operon. After an overnight
710
+ hybridization, microarrays were scanned using a GenePix 4000A scanner and
711
+ spot intensities extracted using GenePix 4.0 software. Bad spots were flagged
712
+ based on the image.
713
+
714
+
715
+ EOT
716
+ texts << <<-EOT
717
+
718
+ MyD88-deficient macrophage response to lipopolysaccharide and E. coli (dye swap)
719
+ Analysis of MyD88 null mutant macrophages treated with LPS or live E. coli.
720
+ MyD88 transduces cell signaling events downstream of Toll-like receptors, a
721
+ key component of host defense. Results suggest most of the host response to
722
+ endotoxin or live bacteria is actually regulated independently of MyD88.
723
+
724
+
725
+ EOT
726
+ texts.reverse.each{|text|
727
+ puts "\n\n--------------\n"
728
+ puts "Text: "
729
+ puts "\n" + text.strip + "\n\n\n"
730
+ puts "Annotations: "
731
+ puts
732
+ puts Annotations::UMLS::OBA(text).join(", ")
733
+ }
734
+
735
+ #
736
+
737
+ #puts Annotations.hypergeometric(2000,100,100,2)
738
+ #p Annotations::GO::annotate(MARQ.platform_organism('GDS1365'),genes[:up].collect.first.last[1..100])
739
+ end
740
+