PageRenderTime 46ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/Prohits/analyst/import_NS_data_from_other_project.php

http://prohits.googlecode.com/
PHP | 407 lines | 358 code | 20 blank | 29 comment | 49 complexity | a8c69f1f06a029df478927bc8a46b848 MD5 | raw file
  1. <?
  2. /***********************************************************************
  3. Copyright 2010 Gingras and Tyers labs,
  4. Samuel Lunenfeld Research Institute, Mount Sinai Hospital.
  5. Licensed under the Apache License, Version 2.0 (the "License");
  6. you may not use this file except in compliance with the License.
  7. You may obtain a copy of the License at
  8. http://www.apache.org/licenses/LICENSE-2.0
  9. Unless required by applicable law or agreed to in writing, software
  10. distributed under the License is distributed on an "AS IS" BASIS,
  11. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. See the License for the specific language governing permissions and
  13. limitations under the License.
  14. *************************************************************************/
  15. $theaction = '';
  16. $order_by = '';
  17. $GeneID = '';
  18. $msg = '';
  19. $frm_BaitGeneID = '';
  20. $frm_BaitORF = '';
  21. $frm_BaitGene = '';
  22. $frm_TaxID = '';
  23. $frm_NS_group_id = '';
  24. $option = 0;
  25. //-------------------------
  26. $frm_save_type = '';
  27. $frm_group_name_s = '';
  28. $frm_group_name_t = '';
  29. $frm_other_project = '';
  30. $frm_other_NS = '';
  31. $DB_index = '';
  32. $script = "import_NS_data_from_other_project.php";
  33. // --------------------------
  34. require("../common/site_permission.inc.php");
  35. require("../common/common_fun.inc.php");
  36. require("common_functions.inc.php");
  37. require_once("../msManager/is_dir_file.inc.php");
  38. /*echo "<pre>";
  39. print_r($request_arr);
  40. echo "</pre>";*/
  41. $NS_Dir = STORAGE_FOLDER."Prohits_Data/Non_Specific/";
  42. $NS_data_dir = $NS_Dir."NS_data/";
  43. if(!_is_dir($NS_data_dir)) _mkdir_path($NS_data_dir);
  44. $projectID_DBname_arr = get_projectID_DBname_pair($PROHITSDB);
  45. $HITS_DB_obj_arr = array();
  46. foreach($HITS_DB as $DB_name_val){
  47. $HITS_DB_obj_arr[$DB_name_val] = new mysqlDB($DB_name_val);
  48. }
  49. $NSarr_others = array();
  50. $other_NS_id_fname_array = array();
  51. if($frm_other_project){
  52. $DB_index = $projectID_DBname_arr[$frm_other_project];
  53. $HITS_DB_obj = new mysqlDB($HITS_DB[$DB_index]);
  54. $SQL = "SELECT `ID`,`Name`,`FileName`,`UserID`,`Date` FROM `ExpBackGroundSet` WHERE `ProjectID`='$frm_other_project'";
  55. $NSarr_others = $HITS_DB_obj->fetchAll($SQL);
  56. foreach($NSarr_others as $others_val){
  57. $other_NS_id_fname_array[$others_val['ID']] = $others_val['FileName'];
  58. }
  59. /*echo "<pre>";
  60. print_r($NSarr_others);
  61. print_r($other_NS_id_fname_array);
  62. echo "</pre>";*/
  63. }
  64. if($theaction == "insert"){
  65. if($frm_save_type == "new"){
  66. $SQL = "INSERT INTO `ExpBackGroundSet` SET
  67. `Name`='$frm_group_name_t',
  68. `ProjectID`='$AccessProjectID',
  69. `UserID`='$AccessUserID',
  70. `Date`='".@date("Y-m-d")."'";
  71. if(!$frm_group_name_s = $HITSDB->insert($SQL)){
  72. echo "db insert problem";
  73. exit;
  74. }
  75. $fileName = "P".$AccessProjectID."_G".$frm_group_name_s."_".$frm_group_name_t.".txt";
  76. $SQL = "UPDATE `ExpBackGroundSet` SET
  77. `FileName`='$fileName'
  78. WHERE ID= '$frm_group_name_s'";
  79. if(!$ret = $HITSDB->execute($SQL)){
  80. echo "db update problem";
  81. exit;
  82. }
  83. }else{
  84. $SQL = "SELECT `ID`,`FileName` FROM `ExpBackGroundSet` WHERE `ID`='$frm_group_name_s'";
  85. if(!$tmpArr = $HITSDB->fetch($SQL)){
  86. echo "db fetch problem";
  87. exit;
  88. }
  89. $fileName = $tmpArr['FileName'];
  90. $frm_group_name_s = $tmpArr['ID'];
  91. }
  92. $dataFileFullName = $NS_data_dir.$fileName;
  93. $Append_file_name = $other_NS_id_fname_array[$frm_NS_group_id];
  94. $Append_file_Full_name = $NS_data_dir.$Append_file_name;
  95. //echo "\$Append_file_Full_name=$Append_file_Full_name<br>";
  96. //echo "\$dataFileFullName=$dataFileFullName<br>";
  97. if($frm_save_type != "new"){
  98. $tmpStr = file_get_contents($dataFileFullName);
  99. $tmpStr = trim($tmpStr);
  100. $tmpStr_2 = file_get_contents($Append_file_Full_name);
  101. $tmpStr_2 = trim($tmpStr_2);
  102. if($tmpStr && $tmpStr_2){
  103. $tmpArr = explode(',',$tmpStr);
  104. $tmpArr_2 = explode(',',$tmpStr_2);
  105. $merged_arr = array_merge($tmpArr, $tmpArr_2);
  106. $new_arr = array_unique($merged_arr);
  107. $new_str = implode(",",$new_arr);
  108. if(!$NS_data_handle = fopen($dataFileFullName, "w")){
  109. echo "Cannot open file $new_full_file_name";
  110. exit;
  111. }
  112. fwrite($NS_data_handle, $new_str);
  113. }elseif($tmpStr_2){
  114. if(!copy($Append_file_Full_name, $dataFileFullName)){
  115. echo "failed to copy $file...\n";
  116. exit;
  117. }
  118. }
  119. }else{
  120. if(!copy($Append_file_Full_name, $dataFileFullName)){
  121. echo "failed to copy $file...\n";
  122. exit;
  123. }
  124. }
  125. ?>
  126. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  127. <html>
  128. <head>
  129. <title>Untitled</title>
  130. </head>
  131. <script language=javascript>
  132. function passvalue(){
  133. theFile = "./mng_set_non_specific.php?order_by=GeneName&filterID=12&frm_TaxID=9606&frm_NS_group_id=<?=$frm_group_name_s?>";
  134. opener.window.open(theFile,"_top");
  135. window.close();
  136. }
  137. </script>
  138. <body onload="passvalue();">
  139. </body>
  140. </html>
  141. <?
  142. exit;
  143. }
  144. if(!$order_by) $order_by = "GeneName";
  145. $bgcolor = "#f3eee2";
  146. $bgcolordark = "#9d9d9d";
  147. $user_id_name_arr = get_users_ID_Name($PROHITSDB);
  148. $project_id_name_arr = get_project_id_name_arr();
  149. $exist_user_accessed_projects_arr = array();
  150. $SQL = "SELECT `ProjectID` FROM `ProPermission` WHERE `UserID`='$AccessUserID'";
  151. $tmp_ProPermission_arr = $PROHITSDB->fetchAll($SQL);
  152. if($tmp_ProPermission_arr){
  153. $user_accessed_projects_arr = array();
  154. foreach($tmp_ProPermission_arr as $tmp_ProPermission_val){
  155. if($tmp_ProPermission_val['ProjectID'] == $AccessProjectID) continue;
  156. array_push($user_accessed_projects_arr, $tmp_ProPermission_val['ProjectID']);
  157. }
  158. $user_accessed_projects_str = implode(",", $user_accessed_projects_arr);
  159. $SQL = "SELECT `ProjectID`
  160. FROM `ExpBackGroundSet`
  161. WHERE `ProjectID` IN ($user_accessed_projects_str)
  162. GROUP BY `ProjectID`";
  163. foreach($HITS_DB_obj_arr as $DB_link){
  164. $tmp_arr = $DB_link->fetchAll($SQL);
  165. foreach($tmp_arr as $tmp_val){
  166. array_push($exist_user_accessed_projects_arr, $tmp_val['ProjectID']);
  167. }
  168. }
  169. }
  170. $SQL = "SELECT `ID`,`Name`,`FileName`,`UserID`,`Date` FROM `ExpBackGroundSet` WHERE `ProjectID`='$AccessProjectID'";
  171. $NSarr_this = $HITSDB->fetchAll($SQL);
  172. ?>
  173. <html>
  174. <head>
  175. <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
  176. <link rel="stylesheet" type="text/css" href="./site_style.css">
  177. <link rel="stylesheet" href="../common/javascript/jquery.cluetip.css" type="text/css" />
  178. <!--script language="Javascript" src="site_no_right_click.inc.js"></script-->
  179. <script language="Javascript" src="../common/javascript/site_javascript.js"></script>
  180. <script src="../common/javascript/jquery-1.3.2.min.js" type="text/javascript"></script>
  181. <script src="../common/javascript/jquery.cluetip.js" type="text/javascript"></script>
  182. <script src="../common/javascript/prohits.cluetip.js" type="text/javascript"></script>
  183. <title>Prohits</title>
  184. </head>
  185. <BODY onload='dis_item();'>
  186. <script language=javascript>
  187. var groupNameArr = new Array();
  188. <?
  189. $j = 0;
  190. foreach($NSarr_this as $value){
  191. ?>
  192. groupNameArr[<?=$j++?>] = '<?=$value['Name']?>';
  193. <?}?>
  194. function dis_item(){
  195. var theForm = document.NS_form;
  196. var radio_obj = theForm.frm_save_type;
  197. if(radio_obj[0].checked == true){
  198. theForm.frm_group_name_t.disabled = false;
  199. theForm.frm_group_name_s.disabled=true;
  200. }else if(radio_obj[1].checked == true){
  201. theForm.frm_group_name_t.disabled = true;
  202. theForm.frm_group_name_s.disabled = false;
  203. }
  204. }
  205. function change_object(){
  206. var theForm = document.NS_form;
  207. theForm.theaction.value = 'change_object';
  208. theForm.submit();
  209. }
  210. function change_group(){
  211. var theForm = document.NS_form;
  212. theForm.theaction.value = 'change_group';
  213. theForm.submit();
  214. }
  215. function process_file(){
  216. var theForm = document.NS_form;
  217. var radio_obj = theForm.frm_save_type;
  218. if(radio_obj[0].checked == false && radio_obj[1].checked == false){
  219. alert('Please select [Add as new] or [Append to existing].');
  220. return false;
  221. }else if(radio_obj[0].checked == true){
  222. if(!onlyAlphaNumerics(theForm.frm_group_name_t.value, 7)){
  223. alert("Only characters \"%+-_A-Za-z0-9\(\)\.:\" and spaces are allowed.");
  224. return false;
  225. }
  226. for(var i=0; i<groupNameArr.length; i++){
  227. if(groupNameArr[i] == theForm.frm_group_name_t.value){
  228. alert("The set name is already exist. Please give another name.");
  229. return false;
  230. }
  231. }
  232. }else if(radio_obj[1].checked == true){
  233. if(theForm.frm_group_name_s.value == ''){
  234. alert('Please select a existing group.');
  235. return false;
  236. }
  237. }
  238. theForm.theaction.value = 'insert';
  239. theForm.submit();
  240. }
  241. </script>
  242. <center>
  243. <form id="NS_form" name="NS_form" method=post action="<?echo $PHP_SELF;?>">
  244. <input type=hidden name=theaction value=''>
  245. <input type=hidden name=DB_index value='<?=$DB_index?>'>
  246. <table border=0 width=100% cellspacing="1" cellpadding=0 bgcolor='#a0a7c5' width=100%>
  247. <tr>
  248. <td valign=top align=center bgcolor="white" width=100%>
  249. <table border="0" cellpadding="0" cellspacing="0" width="90%">
  250. <tr>
  251. <td><br><span class=pop_header_text>Non-specific (background)</span>&nbsp;&nbsp;import from other project<br><hr size=1></td>
  252. </tr>
  253. <tr>
  254. <td align="center" valign=top nowrap width="100%">
  255. <table border="0" cellpadding="1" cellspacing="1" width="100%" bgcolor="white">
  256. <tr bgcolor="<?echo $bgcolor;?>">
  257. <td>
  258. <div class=middle_bold>Projects:&nbsp;</div>
  259. </td>
  260. <td>
  261. <select name="frm_other_project" onchange="javascript: change_object();">
  262. <option value="">----Select a project----<br>
  263. <?
  264. foreach($exist_user_accessed_projects_arr as $value){
  265. echo"<option value='".$value."' ".(($frm_other_project==$value)?'selected':'').">".$project_id_name_arr[$value];
  266. }
  267. ?>
  268. </select>
  269. </td>
  270. <td>
  271. <div class=middle_bold>Non-specific Set:</div>
  272. </td>
  273. <td>
  274. <select name="frm_NS_group_id" onchange="javascript: change_group();">
  275. <option value="">----Select a group----<br>
  276. <?
  277. foreach($NSarr_others as $value){
  278. if(!_is_file($NS_data_dir."/".$value['FileName'])) continue;
  279. echo"<option value='".$value['ID']."' ".(($frm_NS_group_id==$value['ID'])?'selected':'').">".$value['Name'];
  280. }
  281. ?>
  282. </select>
  283. </td>
  284. </tr>
  285. <tr bgcolor="<?echo $bgcolor;?>">
  286. <td valign=top nowrap rowspan=2><div class=middle_bold>Set Name: </b></div></td>
  287. <td colspan=3>
  288. <div class=middle>
  289. <input type='radio' name='frm_save_type' value="new" <?=($frm_save_type=="new")?'checked':''?> onClick="javascript: dis_item();">Add as new<?echo str_repeat("&nbsp;",15);?>
  290. <input type='text' name='frm_group_name_t' size="39" maxlength="50" value="<?=$frm_group_name_t?>" >
  291. </div>
  292. </td>
  293. </tr>
  294. <tr bgcolor="<?echo $bgcolor;?>">
  295. <td colspan=3>
  296. <div class=middle>
  297. <input type='radio' name='frm_save_type' value="appand" <?=($frm_save_type=="appand")?'checked':''?> onClick="javascript: dis_item();">Append to existing</font>&nbsp;&nbsp;&nbsp;
  298. <select name="frm_group_name_s">
  299. <option value="">----Select a group----<br>
  300. <?
  301. foreach($NSarr_this as $value){
  302. if(!_is_file($NS_data_dir."/".$value['FileName'])) continue;
  303. echo"<option value='".$value['ID']."' ".(($frm_group_name_s==$value['ID'])?'selected':'').">".$value['Name'];
  304. }
  305. ?>
  306. </select>
  307. </div>
  308. </td>
  309. </tr>
  310. <?if($theaction == 'change_group' && $frm_NS_group_id){;?>
  311. <tr bgcolor="<?echo $bgcolor;?>">
  312. <td colspan=5 align=right>
  313. <input type="button" value=" Import " onClick="javascript: process_file()">
  314. </td>
  315. </tr>
  316. <tr><td>&nbsp;</td></tr>
  317. <tr>
  318. <td align="center" valign=top colspan=6>
  319. <DIV STYLE="display: block;border: #a0a7c5 solid 1px">
  320. <table border="0" cellpadding="0" cellspacing="1" width="100%">
  321. <tr bgcolor="">
  322. <td width="" height="25" bgcolor="<?echo $bgcolordark;?>" align=center>
  323. <div class=tableheader>GeneID</div>
  324. </td>
  325. <td width="" bgcolor="<?echo $bgcolordark;?>" align=center onwrap>
  326. <div class=tableheader>GeneName</div>
  327. </td>
  328. <td width="" bgcolor="<?echo $bgcolordark;?>" align=center nowrap>
  329. <div class=tableheader>Gene Alias</div>
  330. </td>
  331. <td width="" bgcolor="<?echo $bgcolordark;?>" align=center>
  332. <div class=tableheader>Links</div>
  333. </td>
  334. <?if($USER->Type == "Admin" && $theaction != 'addnew' && $script != "import_NS_data_from_other_project.php"){
  335. $option = 1;
  336. ?>
  337. <td width="" bgcolor="<?echo $bgcolordark;?>" align=center>
  338. <div class=tableheader>Option</div>
  339. </td>
  340. <?}?>
  341. </tr>
  342. <?
  343. $proteinDB = new mysqlDB(PROHITS_PROTEINS_DB, HOSTNAME, USERNAME, DBPASSWORD);
  344. get_NS_geneID_other_project($NSfilteIDarr,$frm_NS_group_id,$DB_index);
  345. $NSlistAarr = array_unique($NSfilteIDarr);
  346. $genePropertyArr = array();
  347. $ENSgenePropertyArr = array();
  348. get_gene_property($genePropertyArr,$ENSgenePropertyArr,$NSlistAarr,'value');
  349. $geneArr = array();
  350. $ENSgeneArr = array();
  351. $indexArr = array();
  352. sort_print_filter_table($genePropertyArr,$ENSgenePropertyArr,$order_by,$option);
  353. }
  354. ?>
  355. </table>
  356. </DIV>
  357. </form><br>
  358. </td>
  359. </tr>
  360. </table>
  361. </td></tr>
  362. </table>
  363. <a href="javascript: window.close();" class=button>[Close Window]</a>
  364. </body>
  365. </html>
  366. <?
  367. function get_NS_geneID_other_project(&$NSfilteIDarr,$groupID,$DB_index){
  368. if(!$groupID) return;
  369. global $HITS_DB;
  370. global $HITS_DB_obj_arr;
  371. global $NS_data_dir;
  372. $tmpGroupArr = array();
  373. $SQL = "SELECT `ID`, `FileName` FROM `ExpBackGroundSet` WHERE `ID`='$groupID'";
  374. //echo $SQL;
  375. $NSarr = $HITS_DB_obj_arr[$HITS_DB[$DB_index]]->fetch($SQL);
  376. //print_r($NSarr);
  377. if($NSarr['FileName']){
  378. $NSfileFullName = $NS_data_dir.$NSarr['FileName'];
  379. $NSgeneIDstr = @trim(($NSfileFullName));
  380. $tmpArr = explode(",",$NSgeneIDstr);
  381. $NSfilteIDarr = $tmpArr;
  382. }
  383. }
  384. ?>