123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839 |
- <?php
- require_once "parse_blast_XML.inc";
- function tripal_analysis_blast_init(){
-
- drupal_add_css(drupal_get_path('theme', 'tripal').'/css/tripal_analysis_blast.css');
- drupal_add_js(drupal_get_path('theme', 'tripal').'/js/tripal_analysis_blast.js');
- }
- function tripal_analysis_blast_menu() {
-
- $items['tripal_top_blast'] = array(
- 'path' => 'top_blast',
- 'title' => t('Blast Hits'),
- 'page callback' => 'tripal_get_feature_blast_results_ajax',
- 'page arguments' => array(1,2,3),
- 'access arguments' => array('access content'),
- 'type' => MENU_CALLBACK
- );
-
- $items['admin/tripal/tripal_analysis/tripal_blast_regex/%'] = array(
- 'title' => t('Blast Regex'),
- 'page callback' => 'tripal_get_blast_regex',
- 'page arguments' => array(4),
- 'access arguments' => array('administer site configuration'),
- 'type' => MENU_CALLBACK
- );
- $items['tripal_blast_report'] = array(
- 'title' => t('Homology Report'),
- 'page callback' => 'tripal_get_blast_report',
- 'page arguments' => array(1,2,3,4,5),
- 'access arguments' => array('access chado_analysis_blast content'),
- 'type' => MENU_CALLBACK,
- 'file' => 'tripal_analysis_blast_htmlreport.inc'
- );
- return $items;
- }
- function tripal_analysis_blast_nodeapi(&$node, $op, $teaser, $page) {
- switch ($op) {
- case 'view':
-
- $types_to_show = variable_get('tripal_analysis_blast_setting',
- array('chado_feature'));
-
- if (!in_array($node->type, $types_to_show, TRUE)) {
- break;
- }
-
- if (!$teaser && $node->feature->feature_id) {
- if($node->build_mode == NODE_BUILD_SEARCH_INDEX){
- $node->content['tripal_analysis_blast_index_version'] = array(
- '#value' => theme('tripal_analysis_blast_results_index_version',$node),
- '#weight' => 8,
- );
- } else {
- if(strcmp($node->type,'chado_feature')==0){
-
- $node->content['tripal_feature_blast_results'] = array(
- '#value' => theme('tripal_feature_blast_results', $node),
- '#weight' => 8
- );
- }
- }
- }
- }
- }
- function tripal_analysis_blast_theme () {
- return array(
- 'tripal_analysis_blast_results_index_version' => array (
- 'arguments' => array('node'),
- ),
- 'tripal_feature_blast_results' => array(
- 'arguments' => array('node'=> null),
- 'template' => 'tripal_feature_blast_results',
- )
- );
- }
- function tripal_get_feature_blast_results_ajax($feature_id, $db_id, $max){
- $sql = "SELECT nid FROM {chado_feature} WHERE feature_id = %d";
- $nid = db_fetch_object(db_query($sql,$feature_id));
- $node = node_load($nid->nid);
-
- $node->db_id = $db_id;
- $node->max = $max;
-
- drupal_json(array('update' => theme('tripal_feature_blast_results',$node)));
- }
- function tripal_analysis_blast_preprocess_tripal_feature_blast_results(&$variables){
- $feature = $variables['node']->feature;
- $db_id = $variables['node']->db_id;
-
- $max = 10;
- if(isset($variables['node']->max)){
- $max = $variables['node']->max;
- }
- $blast_results = tripal_get_feature_blast_results($feature->feature_id, $db_id, $max);
- $variables['tripal_analysis_blast']['blast_results_list'] = $blast_results;
- }
- function theme_tripal_analysis_blast_results_index_version ($node) {
- $feature = $node->feature;
- $content = tripal_get_blast_results_index_version($feature->feature_id);
- return $content;
- }
- function tripal_get_feature_blast_results($feature_id, $db_id, $max){
-
-
-
-
- $sql = "SELECT AP.value AS apvalue, AFP.value AS afpvalue, AF.analysis_id AS aid
- FROM {analysisfeatureprop} AFP
- INNER JOIN {analysisfeature} AF ON AF.analysisfeature_id = AFP.analysisfeature_id
- INNER JOIN {analysisprop} AP ON AP.analysis_id = AF.analysis_id
- INNER JOIN {cvterm} CVT on AFP.type_id = CVT.cvterm_id
- INNER JOIN {cv} CV on CVT.cv_id = CV.cv_id
- WHERE AF.feature_id = %d AND CV.name = '%s' AND
- CVT.name = '%s' AND AP.value like '%|%' ";
- $previous_db = tripal_db_set_active('chado');
- $result = db_query($sql, $feature_id,'tripal','analysis_blast_output_iteration_hits');
- tripal_db_set_active($previous_db);
-
- $blast_obj_array = array ();
- $blast_obj_counter = 0;
- while ($analysisfeatureprop = db_fetch_object($result)) {
-
-
-
- $blastsettings = explode("|", $analysisfeatureprop->apvalue);
-
-
- if(count($blastsettings) != 3){
- continue;
- }
- if(!$blastsettings[0]){
- continue;
- }
- $att_db_id = $blastsettings[0];
-
- $previous_db = tripal_db_set_active('chado');
- $sql = "SELECT analysis_id AS aid, name, to_char(timeexecuted, 'MM-DD-YYYY') AS time
- FROM {analysis}
- WHERE analysis_id = %d";
- $analysis = db_fetch_object(db_query($sql, $analysisfeatureprop->aid));
- tripal_db_set_active($previous_db);
-
- $previous_db = tripal_db_set_active('chado');
- $sql = "SELECT * FROM {db} WHERE db_id=%d";
- $db = db_fetch_object(db_query($sql, $att_db_id));
- tripal_db_set_active($previous_db);
-
-
-
- if(!$db_id or ($db_id and $att_db_id == $db_id)) {
- $blast_obj = tripal_analysis_blast_get_result_object($analysisfeatureprop->afpvalue,$db,$max,$feature_id, $analysis);
- $blast_obj->analysis = $analysis;
- $blast_obj_array [$blast_obj_counter] = $blast_obj;
- $blast_obj_counter ++;
- }
- }
- return $blast_obj_array;
- }
- function tripal_get_blast_results_index_version ($feature_id){
-
-
- $previous_db = tripal_db_set_active('chado');
- $sql = "SELECT CVT.cvterm_id FROM {cvterm} CVT ".
- "INNER JOIN cv ON cv.cv_id = CVT.cv_id ".
- "WHERE CVT.name = 'analysis_blast_output_iteration_hits' ".
- "AND CV.name = 'tripal'";
- $type_id = db_result(db_query($sql));
-
-
- $sql = "SELECT AP.value AS apvalue, AFP.value AS afpvalue, AF.analysis_id AS aid
- FROM {analysisfeatureprop} AFP
- INNER JOIN analysisfeature AF ON AF.analysisfeature_id = AFP.analysisfeature_id
- INNER JOIN analysisprop AP ON AP.analysis_id = AF.analysis_id
- WHERE feature_id = %d
- AND AFP.type_id = %d ";
- $result = db_query($sql, $feature_id, $type_id);
- tripal_db_set_active($previous_db);
-
- while ($analysisfeatureprop = db_fetch_object($result)) {
-
- $previous_db = tripal_db_set_active('chado');
- $sql = "SELECT analysis_id AS aid, name, to_char(timeexecuted, 'MM-DD-YYYY') AS time
- FROM {analysis} WHERE analysis_id = %d";
- $analysis = db_fetch_object(db_query($sql, $analysisfeatureprop->aid));
- tripal_db_set_active($previous_db);
- $blastsettings = explode("|", $analysisfeatureprop->apvalue);
- $att_db_id = $blastsettings [0];
-
- $previous_db = tripal_db_set_active('chado');
- $sql = "SELECT * FROM {db} WHERE db_id=%d";
- $db = db_fetch_object(db_query($sql, $att_db_id));
- tripal_db_set_active($previous_db);
-
- $max = 10;
- $content .= parse_NCBI_Blast_XML_index_version($analysisfeatureprop->afpvalue,$db,$max,$feature_id,$ajax, $analysis);
-
- }
- return $content;
- }
- function tripal_analysis_blast_get_settings() {
-
- $options = node_get_types('names');
-
- $allowedoptions ['chado_feature'] = "Show blast results on feature pages";
- $form['description'] = array(
- '#type' => 'item',
- '#value' => t("Most chado features were analyzed by blast against major sequence databases. This option allows user to display the blast analysis results. Please read user manual for storage and display of blast files. Check the box to enable the analysis results. Uncheck to disable it."),
- '#weight' => 0,
- );
- $form['tripal_analysis_blast_setting'] = array(
- '#type' => 'checkboxes',
- '#options' => $allowedoptions,
- '#default_value' => variable_get('tripal_analysis_blast_setting',
- array('chado_feature')),
- );
- $form['blast_parser'] = array(
- '#title' => t('Blast Parser Settings'),
- '#type' => 'fieldset',
- '#description' => t('Configure parsers for showing blast results. Each database is '.
- 'allowed to have one xml parser.'),
- '#weight' => 10
- );
- $previous_db = tripal_db_set_active('chado');
-
- $sql = 'SELECT db_id, name FROM {db} ORDER BY lower(name)';
- $results = db_query ($sql);
- $blastdbs = array();
- while ($db = db_fetch_object($results)){
- $blastdbs[$db->db_id] = $db->name;
- }
- $form['db_options'] = array(
- '#type' => 'value',
- '#value' => $blastdbs
- );
- $form['blast_parser']['blastdb'] = array(
- '#title' => t('Database'),
- '#type' => 'select',
- '#description' => t('The database used for the blast analysis.'),
- '#options' => $form['db_options']['#value'],
- '#attributes' => array(
- 'onChange' => "return tripal_update_regex(this)",
- )
- );
- $form['blast_parser']['displayname'] = array(
- '#title' => t('Title for the blast analysis'),
- '#type' => 'textfield',
- );
- $form['blast_parser']['gb_style_parser'] = array(
- '#title' => t('Use Genebank style parser. This will clear all regular expression settings for the selected database.'),
- '#type' => 'checkbox',
- '#attributes' => array(
- 'onClick' => "return tripal_set_genbank_style(this)",
- )
- );
- $form['blast_parser']['hit_id'] = array(
- '#title' => t('Regular expression for Hit Name'),
- '#type' => 'textfield',
- );
- $form['blast_parser']['hit_def'] = array(
- '#title' => t('Regular expression for Hit Description'),
- '#type' => 'textfield',
- );
- $form['blast_parser']['hit_accession'] = array(
- '#title' => t('Regular expression for Hit Accession'),
- '#type' => 'textfield',
- );
- $form['blast_parser']['button'] = array(
- '#type' => 'submit',
- '#value' => t('Save settings')
- );
- tripal_db_set_active($previous_db);
- $settings->form = $form;
- $settings->title = "Tripal Blast";
- return $settings;
- }
- function tripal_get_blast_regex ($db_id) {
- $sql = "SELECT * FROM {tripal_analysis_blast} WHERE db_id = %d";
- $blast_regexs = db_fetch_object(db_query($sql, $db_id));
- drupal_json(array(
- 'name' => $blast_regexs->displayname,
- 'genbank_style' => $blast_regexs->genbank_style,
- 'reg1' => $blast_regexs->regex_hit_id,
- 'reg2' => $blast_regexs->regex_hit_def,
- 'reg3' => $blast_regexs->regex_hit_accession)
- );
- }
- function tripal_analysis_blast_node_info() {
- $nodes = array();
- $nodes['chado_analysis_blast'] = array(
- 'name' => t('Analysis: Blast'),
- 'module' => 'chado_analysis_blast',
- 'description' => t('A blast analysis from the chado database'),
- 'has_title' => FALSE,
- 'title_label' => t('Analysis: Blast'),
- 'has_body' => FALSE,
- 'body_label' => t('Blast Analysis Description'),
- 'locked' => TRUE
- );
- return $nodes;
- }
- function chado_analysis_blast_form ($node){
-
-
- $form = chado_analysis_form($node);
-
- $blast = $node->analysis->tripal_analysis_blast;
- $blastdb = $blast->blastdb;
- $blastfile = $blast->blastfile;
- $blastparameters = $blast->blastparameters;
- $query_re = $blast->query_re;
- $query_type = $blast->query_type;
- $query_uniquename = $blast->query_uniquename;
-
- $form['blast'] = array(
- '#title' => t('Blast Settings'),
- '#type' => 'fieldset',
- '#description' => t('Specific Settings for Blast Analysis.'),
- '#collapsible' => TRUE,
- '#attributes' => array('id' => 'blast-extra-settings'),
- '#weight' => 11
- );
- $previous_db = tripal_db_set_active('chado');
-
- $sql = 'SELECT db_id, name FROM {db} ORDER BY lower(name)';
- $results = db_query ($sql);
- tripal_db_set_active($previous_db);
- $blastdbs = array();
- while ($db = db_fetch_object($results)){
- $blastdbs[$db->db_id] = $db->name;
- }
- $form['db_options'] = array(
- '#type' => 'value',
- '#value' => $blastdbs
- );
- $form['blast']['blastdb'] = array(
- '#title' => t('Database'),
- '#type' => 'select',
- '#description' => t('The database used for the blast analysis. If the database does not appear in this list, please add it.'),
- '#options' => $form['db_options']['#value'],
- '#default_value' => $blastdb,
- );
- $form['blast']['blastfile'] = array(
- '#title' => t('Blast XML File/Directory: (if you input a directory without the tailing slash, all xml files in the directory will be loaded)'),
- '#type' => 'textfield',
- '#description' => t('The xml output file generated by blast in full path.'),
- '#default_value' => $blastfile,
- );
- $form['blast']['blastfile_ext'] = array(
- '#title' => t('Blast XML file extension'),
- '#type' => 'textfield',
- '#description' => t('If a directory is provide for the blast file setting above, then a file extension can be provided here. Files with this extension in the directory will be parsed. If no extension is provided then files with a .xml extension will be parsed within the directory. Please provide the extension without the preceeding period (e.g. "out" rather than ".out"'),
- '#default_value' => $blastfile_ext,
- );
- $form['blast']['no_parsed'] = array(
- '#title' => t('Number of hits to be parsed'),
- '#type' => 'textfield',
- '#description' => t("The number of hits to be parsed. Tripal will parse only top 10 hits if you input '10'' in this field."),
- '#default_value' => 'all',
- );
- $form['blast']['query_re'] = array(
- '#title' => t('Query Name RE'),
- '#type' => 'textfield',
- '#description' => t('Enter the regular expression that will extract the '.
- 'feature name from the query line in the blast results. This should be '.
- 'the same as the definition line in the query FASTA file. This option is '.
- 'is only required when the query does not identically match a feature '.
- 'in the database.'),
- '#default_value' => $query_re,
- );
- $form['blast']['query_type'] = array(
- '#title' => t('Query Type'),
- '#type' => 'textfield',
- '#description' => t('Please enter the Sequence Ontology term that describes '.
- 'the query sequences used for blasting. This is only necessary if two '.
- 'or more sequences have the same name.'),
- '#default_value' => $query_type,
- );
- $form['blast']['query_uniquename'] = array(
- '#title' => t('Use Unique Name'),
- '#type' => 'checkbox',
- '#description' => t('Select this checboxk if the query name in the blast file '.
- 'matches the uniquename of the feature. By default, the blast results will '.
- 'mapped to the "name" of the feature.'),
- '#default_value' => $query_uniquename,
- );
- $form['blast']['blastparameters'] = array(
- '#title' => t('Parameters'),
- '#type' => 'textfield',
- '#description' => t('The parameters for running the blast analysis.'),
- '#default_value' => $blastparameters,
- );
-
- $form['blast']['blastjob'] = array(
- '#type' => 'checkbox',
- '#title' => t('Submit a job to parse the xml output into analysisfeatureprop table'),
- '#description' => t('Note: features associated with the blast results must '.
- 'exist in chado before parsing the file. Otherwise, blast '.
- 'results that cannot be linked to a feature will be '.
- 'discarded. '),
- '#default_value' => $blastjob
- );
-
- $form['blast']['blastbesthit'] = array(
- '#type' => 'checkbox',
- '#title' => t('Submit a job to generate a "best hits" report.'),
- '#description' => t('Note: the checkbox above must also be selected.'),
- '#default_value' => $blastbesthit
- );
-
- return $form;
- }
- function chado_analysis_blast_validate($node, &$form){
-
-
-
-
-
-
- if($node->nid){
-
-
-
-
- }
- else{
-
-
- if($node->analysis_id){
-
-
-
- }
- else{
-
-
-
-
-
-
-
- $sql = "SELECT analysis_id ".
- "FROM {analysis} ".
- "WHERE program='%s'".
- "AND programversion='%s'".
- "AND sourcename='%s'";
- $previous_db = tripal_db_set_active('chado');
- $analysis_id = db_result(db_query($sql, $node->program, $node->programversion, $node->sourcename));
- tripal_db_set_active($previous_db);
-
- if($analysis_id){
-
-
-
-
-
- $sql = "SELECT nid FROM {chado_analysis} ".
- "WHERE analysis_id = %d";
- $node_id = db_result(db_query($sql, $analysis_id));
- if($node_id){
-
-
-
-
- $error = 'This analysis already exists in the chado database (analysis id ';
- $error .= $analysis_id.') and has been synchronized ';
- $error .= 'with drupal. See node '.$node_id.' if you wish to update that analysis. ';
- $error .= ' For a new analysis, please select a unique primary key ';
- $error .= '(primary key consists of sourcename, program and programversion).';
- form_set_error('sourcename', t($error));
- }
-
- else{
-
-
-
-
- $error = 'This analysis already exists in the chado database (analysis id ';
- $error .= $analysis_id.') but has not been synchronized ';
- $error .= 'with drupal. See the tripal admin pages to synchronize. ';
- $error .= ' For a new analysis, please select a unique primary key ';
- $error .= '(primary key consists of sourcename, program and programversion).';
- form_set_error('sourcename', t($error));
- }
- }
- }
- }
- }
- function chado_analysis_blast_load($node){
-
- $additions = chado_analysis_load($node);
-
- $analysis = $additions->analysis;
- $analysis_id = $analysis->analysis_id;
- $blast_settings = tripal_analysis_get_property($analysis->analysis_id,'analysis_blast_settings');
- $blastdb = tripal_analysis_get_property($analysis->analysis_id,'analysis_blast_blastdb');
- $blastfile = tripal_analysis_get_property($analysis->analysis_id,'analysis_blast_blastfile');
- $blastparameters = tripal_analysis_get_property($analysis->analysis_id,'analysis_blast_blastparameters');
- $no_parsed = tripal_analysis_get_property($analysis->analysis_id,'analysis_blast_no_parsed');
- $query_re = tripal_analysis_get_property($analysis->analysis_id,'analysis_blast_query_re');
- $query_type = tripal_analysis_get_property($analysis->analysis_id,'analysis_blast_query_type');
- $query_uniquename= tripal_analysis_get_property($analysis->analysis_id,'analysis_blast_query_uniquename');
- $blastfile_ext = tripal_analysis_get_property($analysis->analysis_id,'analysis_blast_blastfile_ext');
- $analysis->tripal_analysis_blast->blastdb = $blastdb->value;
- $analysis->tripal_analysis_blast->blastfile = $blastfile->value;
- $analysis->tripal_analysis_blast->blastparameters = $blastparameters->value;
- $analysis->tripal_analysis_blast->no_parsed = $no_parsed->value;
- $analysis->tripal_analysis_blast->query_re = $query_re->value;
- $analysis->tripal_analysis_blast->query_type = $query_type->value;
- $analysis->tripal_analysis_blast->query_uniquename= $query_uniquename->value;
- $analysis->tripal_analysis_blast->blastfile_ext = $blastfile_ext->value;
-
-
- $select = array('db_id' => $blastdb->value);
- $analysis->tripal_analysis_blast->db = tripal_core_generate_chado_var('db',$select);
-
-
- if(count($blast_settings)>0){
- $prop_values = explode ("|", $blast_settings->value);
- $analysis->tripal_analysis_blast->blastdb = $prop_values[0];
- $analysis->tripal_analysis_blast->blastfile = $prop_values[1];
- $analysis->tripal_analysis_blast->blastparameters = $prop_values[2];
- }
- return $additions;
- }
- function chado_analysis_blast_insert($node){
-
- chado_analysis_insert($node);
-
- tripal_analysis_insert_property($node->analysis->analysis_id,'analysis_type','tripal_analysis_blast');
-
- tripal_analysis_insert_property($node->analysis_id,'analysis_blast_blastdb',$node->blastdb);
- tripal_analysis_insert_property($node->analysis_id,'analysis_blast_blastfile',$node->blastfile);
- tripal_analysis_insert_property($node->analysis_id,'analysis_blast_blastparameters',$node->blastparameters);
- tripal_analysis_insert_property($node->analysis_id,'analysis_blast_no_parsed',$node->no_parsed);
- tripal_analysis_insert_property($node->analysis_id,'analysis_blast_query_re',$node->query_re);
- tripal_analysis_insert_property($node->analysis_id,'analysis_blast_query_type',$node->query_type);
- tripal_analysis_insert_property($node->analysis_id,'analysis_blast_query_uniquename',$node->query_uniquename);
- tripal_analysis_insert_property($node->analysis_id,'analysis_blast_blastfile_ext',$node->blastfile_ext);
-
-
- chado_analysis_blast_submit_jobs($node);
- }
- function chado_analysis_blast_update($node){
-
- chado_analysis_update($node);
-
- tripal_analysis_update_property($node->analysis_id,'analysis_type','tripal_analysis_blast',1);
- tripal_analysis_update_property($node->analysis_id,'analysis_blast_blastdb',$node->blastdb,1);
- tripal_analysis_update_property($node->analysis_id,'analysis_blast_blastfile',$node->blastfile,1);
- tripal_analysis_update_property($node->analysis_id,'analysis_blast_blastparameters',$node->blastparameters,1);
- tripal_analysis_update_property($node->analysis_id,'analysis_blast_no_parsed',$node->no_parsed,1);
- tripal_analysis_update_property($node->analysis_id,'analysis_blast_query_re',$node->query_re,1);
- tripal_analysis_update_property($node->analysis_id,'analysis_blast_query_type',$node->query_type,1);
- tripal_analysis_update_property($node->analysis_id,'analysis_blast_query_uniquename',$node->query_uniquename,1);
- tripal_analysis_update_property($node->analysis_id,'analysis_blast_blastfile_ext',$node->blastfile_ext,1);
-
- $old = tripal_analysis_get_property($node->analysis_id,'analysis_blast_settings');
- if(count($old) > 0){
- tripal_analysis_delete_property($node->analysis_id,'analysis_blast_settings');
- }
-
- chado_analysis_blast_submit_jobs($node);
- }
- function chado_analysis_blast_submit_jobs($node){
- global $user;
-
- if($node->blastjob) {
- $job_args = array($analysis_id,
- $node->blastdb,
- $node->blastfile,
- $node->no_parsed,
- $node->blastfile_ext,
- $node->query_re,
- $node->query_type,
- $node->query_uniquename
- );
- if (is_readable($node->blastfile)) {
- tripal_add_job("Parse blast: $node->blastfile",'tripal_analysis_blast',
- 'tripal_analysis_blast_parseXMLFile', $job_args, $user->uid);
- } else {
- drupal_set_message("Can not open blast output file. Job not scheduled.");
- }
- }
-
- if($node->blastbesthit) {
- $j_args[0] = $analysis_id;
- tripal_add_job("Parse best hit: $node->blastfile",'tripal_analysis_blast',
- 'tripal_analysis_blast_parse_best_hit', $j_args, $user->uid);
- }
-
- }
- function chado_analysis_blast_delete($node){
-
-
- $sql_drupal = "SELECT analysis_id ".
- "FROM {chado_analysis} ".
- "WHERE nid = %d ".
- "AND vid = %d";
- $analysis_id = db_result(db_query($sql_drupal, $node->nid, $node->vid));
-
- $sql_del = "DELETE FROM {chado_analysis} ".
- "WHERE nid = %d ".
- "AND vid = %d";
- db_query($sql_del, $node->nid, $node->vid);
- $sql_del = "DELETE FROM {node} ".
- "WHERE nid = %d ".
- "AND vid = %d";
- db_query($sql_del, $node->nid, $node->vid);
- $sql_del = "DELETE FROM {node_revisions} ".
- "WHERE nid = %d ".
- "AND vid = %d";
- db_query($sql_del, $node->nid, $node->vid);
-
- $previous_db = tripal_db_set_active('chado');
- $sql = "SELECT analysisfeature_id FROM {analysisfeature} WHERE analysis_id=%d";
- $results = db_query($sql, $analysis_id);
- while ($af = db_fetch_object($results)) {
- db_query("DELETE FROM {analysisfeatureprop} WHERE analysisfeature_id = %d", $af->analysisfeature_id);
- }
- db_query("DELETE FROM {analysisfeature} WHERE analysis_id = %d", $analysis_id);
- db_query("DELETE FROM {analysisprop} WHERE analysis_id = %d", $analysis_id);
- db_query("DELETE FROM {analysis} WHERE analysis_id = %d", $analysis_id);
- tripal_db_set_active($previous_db);
- }
- function chado_analysis_blast_view ($node, $teaser = FALSE, $page = FALSE) {
-
-
- if (!$teaser) {
- $node = node_prepare($node, $teaser);
-
-
- $time = $node->timeexecuted;
- if(is_array($time)){
- $month = $time['month'];
- $day = $time['day'];
- $year = $time['year'];
- $timestamp = $year.'-'.$month.'-'.$day;
- $node->timeexecuted = $timestamp;
- }
-
-
- if (preg_match("/.*\|.*\|.*/",$node->blastdb)) {
- $prop_values = explode("|", $node->blastdb);
- $node->blastdb = $prop_values[0];
- $node->blastfile = $prop_values[1];
- $node->blastparameters = $prop_values[2];
- }
- }
- return $node;
- }
- function tripal_analysis_blast_perm(){
- return array(
- 'access chado_analysis_blast content',
- 'create chado_analysis_blast content',
- 'delete chado_analysis_blast content',
- 'edit chado_analysis_blast content',
- );
- }
- function chado_analysis_blast_access($op, $node, $account){
- if ($op == 'create') {
- return user_access('create chado_analysis_blast content', $account);
- }
- if ($op == 'update') {
- if (user_access('edit chado_analysis_blast content', $account)) {
- return TRUE;
- }
- }
- if ($op == 'delete') {
- if (user_access('delete chado_analysis_blast content', $account)) {
- return TRUE;
- }
- }
- if ($op == 'view') {
- if (user_access('access chado_analysis_blast content', $account)) {
- return TRUE;
- }
- }
- return FALSE;
- }
|