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,585 @@
1
+ require 'MARQ'
2
+ require 'rbbt/util/open'
3
+ require 'rbbt/sources/organism'
4
+ require 'rsruby'
5
+
6
+ module GEO
7
+
8
+ CACHE_DIR = File.join(MARQ.cachedir,'GEO')
9
+ FileUtils.mkdir_p CACHE_DIR unless File.exists? CACHE_DIR
10
+
11
+ GEO_SOFT="http://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?targ=self&view=full&form=text&acc="
12
+ def self.get_soft(item)
13
+ item = item.strip
14
+ cache_file = File.join(CACHE_DIR, item + '.soft')
15
+ if File.exist?( cache_file )
16
+ File.open(cache_file).read
17
+ else
18
+ content = Open.read(GEO_SOFT + item, :nocache => true)
19
+ fout = File.open(cache_file,'w')
20
+ fout.write content
21
+ fout.close
22
+ content
23
+ end
24
+ end
25
+
26
+ #{{{ Eutils
27
+ module Eutils
28
+ def self.organism_platforms(org)
29
+ name = Organism.name(org)
30
+ Open.read("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term=\"#{name}\"[Organism:exp]+AND+%22gpl%22[Filter]&retmax=10000").
31
+ scan(/<Id>(\d+?)<\/Id>/).collect{|id| id.first}.collect{|id| "GPL#{id.sub(/^100*/,'')}"}
32
+ end
33
+
34
+ def self.GPL_datasets(platform)
35
+ Open.read("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term=#{platform}[Accession]&retmax=2000").
36
+ scan(/<Id>(\d+?)<\/Id>/).collect{|id| id.first}.select{|id| !id.match(/^(1|2)000/) }.collect{|id| "GDS#{id}"}
37
+ end
38
+
39
+ def self.GSE_dataset?(gse)
40
+ Open.read("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=geo&term=#{gse}[Accession]&retmax=2000").
41
+ match(/<Id>(\d+?)<\/Id>/) != nil
42
+ end
43
+
44
+ end
45
+
46
+
47
+
48
+ #{{{ Helper functions
49
+
50
+
51
+ def self.consecutive?(ids)
52
+ ids.collect{|id| id.to_i}.sort[0..19] == (1..20).to_a
53
+ end
54
+
55
+ def self.numerical?(ids)
56
+ ids.compact.select{|id| ! id.match(/^\d+$/)}.uniq.length < ids.length.to_f / 10
57
+ end
58
+
59
+ def self.dna_sequence?(ids)
60
+ ids.compact.select{|id| ! id.strip.match(/^[ATCG]+$/i)}.empty?
61
+ end
62
+
63
+
64
+ ID_FIX = {
65
+ :mgi_unigene => proc{|gene| if gene then gene.match(/^Mm./) ? gene : "Mm." + gene end},
66
+ :human_unigene => proc{|gene| if gene then gene.match(/^Hs./) ? gene : "Hs." + gene end},
67
+ }
68
+
69
+ @@formats = {}
70
+ def self.guessIds(genes,org, name = nil)
71
+ @@formats[org] ||= Organism.id_formats(org)
72
+ if consecutive?(genes) || dna_sequence?(genes) || (numerical?(genes) && (name.nil? || !name.match(/entrez/i)))
73
+ id = nil
74
+ else
75
+ fix = ID_FIX[(org + "_" + name.downcase).to_sym] if name
76
+ if fix
77
+ genes = genes.collect{|gene| fix.call(gene)}
78
+ end
79
+ id = Organism.guessIdFormat(@@formats[org], genes)
80
+ end
81
+
82
+ id
83
+ end
84
+
85
+ @@r = nil
86
+ def self.r
87
+ if @@r.nil?
88
+ RSRuby.instance.source(MARQ.rootdir + '/R/MA.R')
89
+ RSRuby.instance.source(MARQ.rootdir + '/R/GEO.R')
90
+ @@r = RSRuby.instance
91
+ end
92
+ @@r
93
+ end
94
+
95
+
96
+ #{{{ Process
97
+
98
+ def self.get_GPL(name, prefix, id_field = nil)
99
+ r.GEO_GPL_process(name, prefix, id_field, CACHE_DIR)
100
+ end
101
+
102
+ def self.get_GDS(name, prefix, id_field = nil, id_file = nil)
103
+ r.GEO_GDS_process(name, prefix, id_field, id_file, CACHE_DIR)
104
+ end
105
+
106
+ def self.get_GSE(gsms, conditions, do_log, prefix, id_file = nil, fields= nil, title = nil, description = nil)
107
+ r.GEO_GSE_process(gsms, conditions, prefix, do_log, id_file, fields, title, description, CACHE_DIR)
108
+ end
109
+
110
+ def self.GSE_info(series)
111
+ soft = get_soft(series)
112
+ raise "SOFT file error" if soft !~ /!/
113
+
114
+ if match = soft.scan(/!Series_platform_id\s*=?\s*(.*)/)
115
+ platform = match.flatten.collect{|p| p.strip}
116
+ else
117
+ raise "No Platform information"
118
+ end
119
+
120
+ if soft.match(/!Series_title \s*=?\s*(.*)/)
121
+ title = $1
122
+ else
123
+ raise "No Title information"
124
+ end
125
+
126
+ if soft.match(/!Series_summary \s*=?\s*(.*)/)
127
+ matches = soft.scan(/!Series_summary \s*=?\s*(.*)/).to_a
128
+ description = matches.collect{|m| m.to_s.strip.sub(/!Series_summary \s*=?\s*/,'')}.join("\n")
129
+ else
130
+ raise "No Summary information"
131
+ end
132
+
133
+ if soft.match(/!Series_sample_id \s*=?\s*(.*)/)
134
+ matches = soft.scan(/!Series_sample_id \s*=?\s*(.*)/).to_a
135
+ samples = matches.collect{|m| m.to_s.strip.sub(/!Series_sample_id \s*=?\s*/,'')}
136
+ else
137
+ raise "No Summary information"
138
+ end
139
+
140
+ {
141
+ :platform => platform.join("_"),
142
+ :description =>description.strip,
143
+ :title => title.strip,
144
+ :samples => samples,
145
+ }
146
+ end
147
+
148
+ def self.GSM_info(array)
149
+ soft = get_soft(array)
150
+
151
+ if soft.match(/!Sample_title\s*=?\s*(.*)/)
152
+ title = $1
153
+ else
154
+ raise "No Title information"
155
+ end
156
+
157
+
158
+ if soft.match(/!Sample_description \s*=?\s*(.*)/)
159
+ description = $1
160
+ else
161
+ raise "No Description information"
162
+ end
163
+
164
+ {
165
+
166
+ :description =>description.strip,
167
+ :title => title.strip,
168
+ }
169
+ end
170
+
171
+ def self.GPL_id_fields(platform)
172
+ soft = get_soft(platform)
173
+ data = soft.split(/!platform_table_begin/s)[1].collect{|l| l.chomp.split(/\t/)}
174
+ data.shift
175
+ data.shift
176
+ end
177
+
178
+ def self.GPL_info(platform)
179
+ if !File.exist?(File.join(MARQ.datadir, 'GEO', 'platforms',"#{platform}.yaml")) &&
180
+ !File.exist?(File.join(MARQ.datadir, 'GEO', 'platforms',"#{platform}.skip"))
181
+ begin
182
+ if platform =~ /_/
183
+ organism = GPL_info(platform.match(/(.*?)_/)[1])[:organism]
184
+
185
+ info = {
186
+ :organism => organism,
187
+ :title => "Merged platforms #{ platform }",
188
+ }
189
+ return info
190
+ end
191
+ soft = get_soft(platform)
192
+
193
+
194
+ raise "SOFT file error" if soft !~ /!/
195
+
196
+ organisms = soft.scan(/!Platform_organism\s*=\s*(.*)/).collect{|v| v.first.strip}
197
+
198
+ if organisms.empty?
199
+ raise "No Organism information"
200
+ else
201
+ # This might happen actually GPL2529
202
+ organisms.delete('Schizosaccharomyces pombe') if organisms.include?('Saccharomyces cerevisiae')
203
+ org_name = organisms.first
204
+ end
205
+
206
+
207
+ title = ""
208
+ if soft.match(/!Platform_title\s*=\s*(.*)/)
209
+ title = $1
210
+ end
211
+
212
+ org = Organism.name2org(org_name)
213
+ raise "Organism not identified" if org.nil?
214
+
215
+ if soft.match(/!platform_table_begin/)
216
+ data = soft.split(/!platform_table_begin/s)[1].collect{|l| l.chomp.split(/\t/)}
217
+ data.shift
218
+ names = data.shift
219
+ total = data.first.length
220
+ genes = data.sort_by{ rand }[1..1000].collect{|v| v.first}
221
+
222
+ id = guessIds(genes,org, names.first)
223
+ other = nil
224
+ other_pos = 0
225
+ other_count = 0
226
+ other_name = 0
227
+ if id.nil?
228
+ (1..total - 1).to_a.each{|num|
229
+ genes = data.collect{|v| v[num]}
230
+ other = guessIds(genes,org, name = names[num])
231
+
232
+ if other && other[1] > other_count
233
+ other_pos = num
234
+ other_count = other[1]
235
+ other_name = names[num]
236
+ end
237
+ }
238
+ end
239
+ else
240
+ raise "Soft file incomplete"
241
+ end
242
+
243
+ info = {:organism => org, :BioMart_ID => id ? id.first : nil, :title => title }
244
+ info[:other_ID_field] = [other_pos + 1, other_name] if other_pos > 0
245
+
246
+
247
+ Open.write(File.join(MARQ.datadir, 'GEO', 'platforms',"#{platform}.yaml"), info.to_yaml)
248
+ rescue Exception
249
+ puts $!.message
250
+ puts $!.backtrace
251
+ Open.write(File.join(MARQ.datadir, 'GEO', 'platforms',"#{platform}.skip"), $!.message)
252
+ end
253
+ end
254
+
255
+ raise "Platform info for #{ platform } is not available and could not be automatically produced." if File.exist?(File.join(MARQ.datadir, 'GEO', 'platforms',"#{platform}.skip"))
256
+
257
+ YAML::load(File.open(File.join(MARQ.datadir, 'GEO', 'platforms',"#{platform}.yaml")))
258
+ end
259
+
260
+ def self.GDS_info(name)
261
+ begin
262
+ title, description = Open.read(dataset_path(name) + '.description').split(/\n--\n/).values_at(0,1)
263
+ {:title => title.strip, :description => description.strip}
264
+ rescue Exception
265
+ puts $!.message
266
+ {:title => "" , :description => "" }
267
+ end
268
+
269
+ end
270
+
271
+
272
+ #{{{ Misc Info
273
+
274
+ def self.clean(name)
275
+ name.sub(/_cross_platform/,'') if name
276
+ end
277
+
278
+ def self.platform_path(platform)
279
+ File.join(MARQ.datadir, "GEO/#{clean(platform)}")
280
+ end
281
+
282
+ def self.dataset_path(dataset, platform = nil)
283
+ if platform
284
+ return Dir.glob(File.join(platform_path(clean(platform)),"/*/#{ dataset }")).first.match(/(.*)\./)[1]
285
+ else
286
+ files = Dir.glob(File.join(MARQ.datadir, "GEO/GPL*/*/#{ dataset }.*"))
287
+ if files.any?
288
+ return files.first.match(/(.*)\./)[1]
289
+ else
290
+ return ""
291
+ end
292
+ end
293
+ end
294
+
295
+ def self.is_cross_platform?(dataset)
296
+ dataset =~ /_cross_platform/
297
+ end
298
+
299
+ def self.has_cross_platform?(dataset = nil, platform = nil)
300
+ platform = clean(platform)
301
+ raise "Dataset #{ dataset } not found" if dataset && dataset_path(dataset, platform).nil?
302
+ raise "Platform #{ platform } not found" if platform && platform_path(platform).nil?
303
+ if dataset
304
+ File.exists?(dataset_path(dataset, platform) + "_cross_platform.orders")
305
+ else
306
+ Dir.glob(File.join(platform_path(platform), '*', '*_cross_platform.orders')).any?
307
+ end
308
+ end
309
+
310
+
311
+ def self.platform_datasets(platform)
312
+ Dir.glob(File.join(platform_path(platform),"*/*.orders")).collect{|f| File.basename(f).sub(/.orders$/,'')}.select{|d| !is_cross_platform?(d)}
313
+ end
314
+
315
+ def self.dataset_platform(dataset)
316
+ dataset_path(dataset).match(/(GPL\d+)/)
317
+ $1
318
+ end
319
+
320
+ def self.organism_platforms(organism)
321
+ Dir.glob(File.join(MARQ.datadir, "GEO/GPL*")).collect{|f|
322
+ File.basename(f)
323
+ }.select{|platform|
324
+ GPL_info(platform)[:organism] == organism &&
325
+ platform_datasets(platform).any?
326
+ }
327
+ end
328
+
329
+ #{{{ Processing
330
+
331
+ def self.process_GDS(dataset, platform, field = nil)
332
+ puts "Processing GDS #{ dataset }. Platform #{ platform }"
333
+
334
+ puts "-- Original"
335
+ prefix = File.join(platform_path(platform), 'GDS', dataset.to_s)
336
+ GEO.get_GDS(dataset, prefix, field, nil)
337
+
338
+ # Was there an error?
339
+ if File.exist?(prefix + '.skip')
340
+ FileUtils.cp(prefix + '.skip', prefix + '_cross_platform.skip')
341
+ return
342
+ end
343
+
344
+ if File.exist?(File.join(platform,'cross_platform'))
345
+ puts "-- Translated to cross_platform format"
346
+ GEO.get_GDS(dataset, prefix + '_cross_platform', field, File.join(platform_path(platform), 'translations'))
347
+ end
348
+ end
349
+
350
+ # Rearange the lines of a file with the given order
351
+ def self.rearange(order, file, missing = "NA")
352
+ orig_lines = File.open(file).collect
353
+ return if orig_lines.empty?
354
+ columns = orig_lines.first.split(/\t/).length
355
+
356
+ lines = Array.new(order.length)
357
+
358
+ orig_lines.each_with_index{|l,i|
359
+ next if l.nil? || order[i].nil?
360
+ lines[order[i]] = l.chomp
361
+ }
362
+
363
+ lines = lines.collect{|l| l || [missing]*columns*"\t"}
364
+
365
+ fout = File.open(file, 'w')
366
+ fout.write(lines.join("\n"))
367
+ fout.close
368
+ end
369
+
370
+ # Fix possible discrepancies in ids between series and platforms
371
+ def self.fix_GSE_ids(platform_codes_file, prefix)
372
+ platform_codes = File.open(platform_codes_file).collect{|l| l.chomp}
373
+ platform_order = {}
374
+
375
+ platform_codes.each_with_index{|code, i|
376
+ platform_order[code] = i
377
+ }
378
+
379
+ series_codes = File.open(prefix + '.codes').collect{|l| l.chomp}
380
+
381
+ platform_positions = platform_order.values_at(*series_codes)
382
+
383
+ # Fill with nil for missing positions
384
+ platform_positions[platform_codes.length] ||= nil
385
+
386
+ %w(codes t logratios orders pvalues).each{|ext|
387
+ rearange(platform_positions, prefix + '.' + ext)
388
+ }
389
+
390
+ Open.write(prefix + '.swap', platform_positions.join("\n"))
391
+ end
392
+
393
+
394
+
395
+ def self.process_GSE(series, info)
396
+ return if Dir.glob(File.join(info[:platform], 'GSE', series) + '.*').any?
397
+
398
+ gsms = []
399
+ conditions = {}
400
+ info[:arrays].each{|gsm, cond|
401
+ gsms << gsm
402
+ cond.each{|condition, value|
403
+ conditions[condition] ||= []
404
+ conditions[condition] << value
405
+ }
406
+ }
407
+ platform = info[:platform]
408
+ do_log = nil
409
+ do_log = !info[:log2] if info[:log2]
410
+ fields = info[:fields]
411
+
412
+ puts "Processing GSE #{ series }. Platform #{ platform }"
413
+
414
+ prefix = File.join(platform_path(platform), 'GSE', series.to_s)
415
+ puts "-- Original"
416
+ GEO.get_GSE(gsms, conditions, do_log, prefix, nil, fields, info[:title], info[:description])
417
+
418
+ # Was there an error?
419
+ if File.exist?(prefix + '.skip')
420
+ FileUtils.cp(prefix + '.skip', prefix + '_cross_platform.skip')
421
+ return
422
+ end
423
+
424
+ if platform =~ /_/
425
+ FileUtils.cp(prefix + '.codes', File.join(platform_path(platform),'codes'))
426
+ codes = Open.read(File.join(platform_path(platform), 'codes')).collect{|l| l.chomp}
427
+ organism = GEO::GPL_info(platform.match(/(.*?)_/)[1])[:organism]
428
+ translations = ID.translate(organism, codes)
429
+ Open.write(File.join(platform_path(platform), 'translations'), translations.collect{|v| v || "NO MATCH"}.join("\n"))
430
+ Open.write(File.join(platform_path(platform), 'cross_platform'), translations.compact.sort.uniq.join("\n"))
431
+ else
432
+ # Are the codes of the series equivalent to the ones in the platform?
433
+ if File.open(File.join(platform_path(platform),'codes')).collect{|l| l.chomp} != File.open(prefix + '.codes').collect{|l| l.chomp}
434
+ fix_GSE_ids(File.join(platform_path(platform), 'codes'),prefix);
435
+ end
436
+ end
437
+
438
+
439
+ if File.exist?(File.join(platform,'translations'))
440
+ FileUtils.cp(File.join(platform,'translations'), prefix + '.translations')
441
+ if File.exist?(prefix + '.swap')
442
+ orders = Open.read(prefix + '.swap').collect{|l| l.chomp}
443
+ inverse_orders = Array.new(orders.length)
444
+ orders.each_with_index{|pos,i|
445
+ next if pos !~ /\d/
446
+ inverse_orders[pos.to_i] = i
447
+ }
448
+ rearange(inverse_orders, prefix + '.translations', "NO MATCH")
449
+ end
450
+ puts "-- Translated to cross_platform format"
451
+ GEO.get_GSE(gsms, conditions, do_log, prefix + '_cross_platform', prefix + '.translations',fields, info[:title], info[:description])
452
+ fix_GSE_ids(File.join(platform_path(platform), 'cross_platform'),prefix + '_cross_platform');
453
+ FileUtils.rm(prefix + '.translations') if File.exist?(prefix + '.translations')
454
+ end
455
+ FileUtils.rm(prefix + '.swap') if File.exist?(prefix + '.swap')
456
+ end
457
+
458
+ def self.process_platform(platform)
459
+ path = platform_path(platform)
460
+ return if File.exist? path
461
+
462
+ if platform =~ /_/
463
+ FileUtils.mkdir(path)
464
+ FileUtils.mkdir(path + '/GSE')
465
+ FileUtils.mkdir(path + '/GDS')
466
+ return
467
+ end
468
+
469
+ info = GEO::GPL_info(platform)
470
+ organism = info[:organism]
471
+
472
+ field = info[:other_ID_field]
473
+ id = info[:BioMart_ID]
474
+ org = info[:organism]
475
+ field = nil if field == ""
476
+ id = nil if id == ""
477
+
478
+
479
+ puts "Processing Platform #{ platform }"
480
+ [platform,
481
+ File.join(platform_path(platform), 'GDS'),
482
+ File.join(platform_path(platform), 'GSE'),
483
+ ].each{|d|
484
+ FileUtils.mkdir d unless File.exist? d
485
+ }
486
+
487
+ get_GPL(platform, platform_path(platform), nil)
488
+ FileUtils.mv platform_path(platform) + '.codes', File.join(platform_path(platform), 'codes')
489
+
490
+
491
+ # AILUN translations
492
+ codes = Open.read(File.join(platform_path(platform), 'codes')).collect{|l| l.chomp}
493
+ ailun = ID.AILUN_translate(platform, codes)
494
+ Open.write(File.join(platform_path(platform), 'ailun'), ailun.collect{|v| v || "NO MATCH"}.join("\n")) if ailun.compact.length > codes.length.to_f / 10
495
+
496
+ # BioMart translations
497
+ biomart = []
498
+ if id || field
499
+ if id
500
+ codes = Open.read(File.join(platform_path(platform), 'codes')).collect{|l| l.chomp}
501
+ else
502
+ if field
503
+ get_GPL(platform, platform_path(platform), field[0])
504
+ FileUtils.mv platform_path(platform) + '.codes', File.join(platform_path(platform), 'other')
505
+ end
506
+
507
+ fix = ID_FIX[(organism + "_" + field[1].downcase).to_sym]
508
+ codes = Open.read(File.join(platform_path(platform), 'other')).collect{|l|
509
+ code = l.chomp
510
+ code = fix.call(code) if fix
511
+ code
512
+ }
513
+ end
514
+
515
+ biomart = ID.translate(organism, codes)
516
+ Open.write(File.join(platform_path(platform), 'biomart'), biomart.collect{|v| v || "NO MATCH"}.join("\n")) if biomart.compact.length > codes.length.to_f / 10
517
+ end
518
+
519
+ # Select Best and save
520
+ translations = []
521
+ if ailun.compact.uniq.length > biomart.compact.uniq.length
522
+ id_type = ID::DEFAULT_FORMATS[organism] || ID::DEFAULT_FORMAT_ALL || id || field || "Entrez Gene Id"
523
+ if id_type.to_s !~ /Entrez/i
524
+ translations = ID.translate(org,ailun.collect{|gene| gene || "NO MATCH"})
525
+ else
526
+ translations = ailun
527
+ end
528
+ else
529
+ translations = biomart
530
+ end
531
+
532
+ if translations.compact.length > codes.length.to_f / 10
533
+ Open.write(File.join(platform_path(platform), 'translations'), translations.collect{|v| v || "NO MATCH"}.join("\n"))
534
+ Open.write(File.join(platform_path(platform), 'cross_platform'), translations.compact.sort.uniq.join("\n"))
535
+ end
536
+
537
+ end
538
+
539
+
540
+ def self.process_platform_datasets(platform, force = false)
541
+ raise "Platform #{ platform } not ready" unless File.exist? platform_path(platform)
542
+
543
+ info = YAML::load(File.open(File.join(MARQ.datadir, "GEO/platforms/#{platform}.yaml")))
544
+
545
+ datasets = GEO::Eutils::GPL_datasets(platform)
546
+ datasets.each{|dataset|
547
+ next if Dir.glob(File.join(platform_path(platform), 'GDS', dataset) + '.*').any? && ! force
548
+ process_GDS(dataset, platform, nil)
549
+ }
550
+ end
551
+
552
+ end
553
+
554
+ if __FILE__ == $0
555
+
556
+ p GEO.GPL_info('GPL920_GPL927')
557
+ p GEO.GPL_id_fields('GPL920')
558
+ puts GEO.GSE_info('GSE962')
559
+ puts GEO.GSE_info('GSE8982')
560
+ puts GEO::Eutils.GSE_dataset?('GSE8982')
561
+ puts GEO::Eutils.GSE_dataset?('GSE962')
562
+
563
+ exit
564
+
565
+ #puts GEO::dataset_path('GDS1103').inspect
566
+ #puts GEO::dataset_platform('GDS1103').inspect
567
+
568
+ # puts GEO.dataset_path('GDS2931')
569
+ # puts GEO.platform_datasets('GPL91')
570
+ # puts GEO.platform_datasets('GPL91').select{|d| GEO.has_cross_platform?(d)}
571
+ #
572
+ # gpls = Open.read('ftp://ftp.ncbi.nih.gov/pub/geo/DATA/supplementary/PLATFORMS.txt').collect{|l|
573
+ # l.chomp.split.first
574
+ # }
575
+ #
576
+ # %w(GPL85).each{|gpl|
577
+ # puts gpl
578
+ # puts GEO::GPL_info(gpl).inspect if gpl =~ /GPL/
579
+ # }
580
+ #
581
+ #puts GEO::GSM_info('GSM70604').inspect
582
+
583
+ p GEO::Eutils.organism_platforms('human')
584
+
585
+ end