| 
					
				 | 
			
			
				@@ -0,0 +1,506 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<?php 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Interface for downloading feature sequences 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * The page allowing users to download feature sequences 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @ingroup tripal_feature 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function tripal_feature_seq_extract_download() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (!array_key_exists('tripal_feature_seq_extract', $_SESSION)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    drupal_goto('find/sequences'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $genus      = $_SESSION['tripal_feature_seq_extract']['genus']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $species    = $_SESSION['tripal_feature_seq_extract']['species']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $analysis   = $_SESSION['tripal_feature_seq_extract']['analysis']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $ftype      = $_SESSION['tripal_feature_seq_extract']['ftype']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $fnames     = $_SESSION['tripal_feature_seq_extract']['fnames']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $upstream   = $_SESSION['tripal_feature_seq_extract']['upstream']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $downstream = $_SESSION['tripal_feature_seq_extract']['downstream']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $format     = $_SESSION['tripal_feature_seq_extract']['format']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $use_parent = $_SESSION['tripal_feature_seq_extract']['use_parent']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $aggregate  = $_SESSION['tripal_feature_seq_extract']['aggregate']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $agg_types  = $_SESSION['tripal_feature_seq_extract']['agg_types']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Split the sub features and remove any surrounding white space 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $agg_types = preg_split("/[\n|,]/", $agg_types); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  for ($i = 0; $i < count($agg_types); $i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $agg_types[$i] = trim($agg_types[$i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  header('Content-Type: text; utf-8'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if ($ftype == 'polypeptide') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    header('Content-Disposition: attachment; filename="sequences.fna"'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    header('Content-Disposition: attachment; filename="sequences.fnn"'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $seqs = tripal_get_bulk_feature_sequences(array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'genus' => $genus, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'species' => $species, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'analysis_name' => $analysis, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'type' => $ftype, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'feature_name' => $fnames['items_array'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'upstream' => $upstream, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'downstream' => $downstream, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'output_format' => $format, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'derive_from_parent' => $use_parent, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'aggregate' => $aggregate, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'sub_feature_types' => $agg_types, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'width' => 60 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  )); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (count($seqs) == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    print ">No sequences found that match the criteria."; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  foreach ($seqs as $seq) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    print ">" . $seq['defline'] . "\r\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    print $seq['residues'] . "\r\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Form to choose which features to extract sequence for 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @ingroup tripal_feature 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function tripal_feature_seq_extract_form($form, &$form_state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['#true'] = TRUE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Intialize the defaults 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $dgenus      = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $dspecies    = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $danalysis   = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $dftype      = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $dfnames     = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $dupstream   = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $ddownstream = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $duse_parent = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $daggregate  = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $dagg_types  = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (array_key_exists('tripal_feature_seq_extract', $_SESSION)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dgenus      = $_SESSION['tripal_feature_seq_extract']['genus']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dspecies    = $_SESSION['tripal_feature_seq_extract']['species']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $danalysis   = $_SESSION['tripal_feature_seq_extract']['analysis']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dftype      = $_SESSION['tripal_feature_seq_extract']['ftype']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dfnames     = $_SESSION['tripal_feature_seq_extract']['fnames']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dupstream   = $_SESSION['tripal_feature_seq_extract']['upstream']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $ddownstream = $_SESSION['tripal_feature_seq_extract']['downstream']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $duse_parent = $_SESSION['tripal_feature_seq_extract']['use_parent']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $daggregate  = $_SESSION['tripal_feature_seq_extract']['aggregate']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dagg_types  = $_SESSION['tripal_feature_seq_extract']['agg_types']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // we want to allow the query string to provide values for the form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (array_key_exists('fnames', $_GET) and $_GET['fnames']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dfnames = $_GET['fnames']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (array_key_exists('genus', $_GET) and $_GET['genus']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dgenus = $_GET['genus']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (array_key_exists('species', $_GET) and $_GET['species']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dspecies = $_GET['species']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (array_key_exists('ftype', $_GET) and $_GET['ftype']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dftype = $_GET['ftype']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (array_key_exists('analysis', $_GET) and $_GET['analysis']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $danalysis = $_GET['analysis']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (array_key_exists('upstream', $_GET) and $_GET['upstream']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dupstream = $_GET['upstream']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (array_key_exists('downstream', $_GET) and $_GET['downstream']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $ddownstream = $_GET['downstream']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (array_key_exists('use_parent', $_GET) and $_GET['use_parent']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $duse_parent = $_GET['use_parent']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (array_key_exists('aggregate', $_GET) and $_GET['aggregate']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $daggregate = $_GET['aggregate']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (array_key_exists('agg_types', $_GET) and $_GET['agg_types']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dagg_types = $_GET['agg_types']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // get defaults from the form state 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (array_key_exists('values', $form_state)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dgenus      = $form_state['values']['genus']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dspecies    = $form_state['values']['species']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $danalysis   = $form_state['values']['analysis']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dftype      = $form_state['values']['ftype']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dfnames     = $form_state['values']['fnames']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dupstream   = $form_state['values']['upstream']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $ddownstream = $form_state['values']['downstream']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dformat     = $form_state['values']['format']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $duse_parent = $form_state['values']['use_parent']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $daggregate  = $form_state['values']['aggregate']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dagg_types  = $form_state['values']['agg_types']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Because we're using Tripal's file_upload_combo form element we 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // need to allow the form to upload files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['#attributes']['enctype'] = 'multipart/form-data'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['#method'] = 'POST'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['description'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#markup' => t('Use this form to retrieve sequences in FASTA format.') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $sql = " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    SELECT DISTINCT genus 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    FROM {organism} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ORDER BY genus 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $results = chado_query($sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $genus = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $genus[] = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  while ($organism = $results->fetchObject()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $genus[$organism->genus] = $organism->genus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['genus'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#title'         => t('Genus'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#type'          => 'select', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#options'       => $genus, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#default_value' => $dgenus, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#multiple'      => FALSE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#description'   => t('The organism\'s genus. If specified, features for all organism with this genus will be retrieved.'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#ajax' => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'callback'    => 'tripal_feature_seq_extract_form_ajax_callback', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'wrapper' => 'tripal-feature-seq-extract-form', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'event'   => 'change', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'method'  => 'replace', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $species = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $species[] = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if ($dgenus) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $sql = " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      SELECT DISTINCT species 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      FROM {organism} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      WHERE genus = :genus 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ORDER BY species 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $results = chado_query($sql, array(':genus' => $dgenus)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    while ($organism = $results->fetchObject()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $species[$organism->species] = $organism->species; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['species'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#title'         => t('Species'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#type'          => 'select', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#options'       => $species, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#default_value' => $dspecies, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#multiple'      => FALSE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#description'   => t('The organism\'s species name. If specified, features for all organisms with this species will be retrieved.  Please first select a genus'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#ajax' => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'callback'    => 'tripal_feature_seq_extract_form_ajax_callback', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'wrapper' => 'tripal-feature-seq-extract-form', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'event'   => 'change', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'method'  => 'replace', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $analyses = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $analyses[] = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if ($dgenus) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $sql = " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      SELECT DISTINCT A.analysis_id, A.name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      FROM {analysis_organism} AO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        INNER JOIN {analysis} A ON A.analysis_id = AO.analysis_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        INNER JOIN {organism} O ON O.organism_id = AO.organism_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      WHERE O.genus = :genus 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $args = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $args[':genus'] = $dgenus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if ($dspecies) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $sql .= " AND O.species = :species "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $args[':species'] = $dspecies; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $sql .=" ORDER BY A.name "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $results = chado_query($sql, $args); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    while ($analysis = $results->fetchObject()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $analyses[$analysis->name] = $analysis->name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['analysis'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#title'         => t('Analyses'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#type'          => 'select', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#options'       => $analyses, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#default_value' => $danalysis, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#multiple'      => FALSE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#description'  => t('You can limit sequences by the analyses to which it was derived or was used. If specified, only features associated with the specific analysis will be retrieved.'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $ftype = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $ftype[] = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if ($dgenus) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $sql = " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      SELECT DISTINCT OFC.cvterm_id, OFC.feature_type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      FROM {organism_feature_count} OFC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      WHERE OFC.genus = :genus 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $args = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $args['genus'] = $dgenus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if ($dspecies) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $sql .= " AND OFC.species = :species"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $args['species'] = $dspecies; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $sql .= " ORDER BY OFC.feature_type "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $results = chado_query($sql, $args); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    while ($type = $results->fetchObject()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $ftype[$type->feature_type] = $type->feature_type; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['ftype'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#title'         => t('Feature Type'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#type'          => 'select', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#options'       => $ftype, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#multiple'      => FALSE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#default_value' => $dftype, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#description'   => t('The type of feature to retrieve (e.g. mRNA). All 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        features that match this type will be retrieved.'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['fnames'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#title'         => t('Feature Name'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#type'          => 'file_upload_combo', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#default_value' => $dfnames, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#description'   => t('The names of the features to retrieve. Separate each 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         with a new line or comma. Leave blank to retrieve all features 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        matching other criteria.'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#rows'          => 8 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['upstream'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#title'         => t('Upstream Bases'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#type'          => 'textfield', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#description'   => t('A numeric value specifying the number of upstream 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         bases to include. Only works if the feature is aligned to a larger 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         sequence.'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#default_value' => $dupstream, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#size'          => 5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['downstream'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#title'         => t('Downstream Bases'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#type'          => 'textfield', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#description'   => t('A numeric value specifying the number of downstream 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bases to incldue.  Only works if the feature is aligned to a larger 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sequence.'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#default_value' => $ddownstream, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#size'          => 5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['advanced'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#type' => 'fieldset', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#title' => 'Advanced', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#collapsible' => TRUE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#collapsed' => TRUE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['advanced']['use_parent'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#title'         => t('Use Parent'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#type'          => 'checkbox', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#default_value' => $duse_parent, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#description'   => t('Check this box to retrieve the sequence from the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        parent in an alignment rather than the feature itself. This is useful 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if the same feature is aligned to multiple parents and you would like 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        to retrieve the underlying sequence from each parent.'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['advanced']['aggregate'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#title'         => t('Aggregate'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#type'          => 'checkbox', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#default_value' => $daggregate, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#description'   => t('Check this box to aggregate sub features into a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        single sequence.  This is useful, for example, for obtaining CDS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sequence from an mRNA. Rather than retrieve the mRNA sequence, the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sub features of the mRNA will be aggregated and that will be returned.') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['advanced']['agg_types'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#title'         => t('Types to aggregate'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#type'          => 'textarea', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#default_value' => $dagg_types, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#description'   => t('Set this argument to the type of children to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        aggregate.  This is useful in the case where a gene has exons, CDSs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        and UTRs.  In this case, you may only want to aggregate CDSs and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        exclude exons.  If you want to aggregate both CDSs and UTRs you 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        could specify both.  Please place each type on a new line.') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['retrieve_btn'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#type' => 'submit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#name' => 'retrieve', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#value' => 'Retrieve Sequences', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (user_access('administer tripal')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $notice = tripal_set_message("Administrators, the " . 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        l('organism_feature_count', 'admin/tripal/schema/mviews') . " and " . 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        l('analysis_organism', 'admin/tripal/schema/mviews') . " materialized 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        views must be populated before using this form.  Those views should be re-populated 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        when new data is added.", TRIPAL_NOTICE, array('return_html' => TRUE)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['#prefix'] = '<div id="tripal-feature-seq-extract-form">'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['#suffix'] = $notice . '</div>'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return $form; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Theme the Form to choose which features to extract sequence for 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @ingroup tripal_feature 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function theme_tripal_feature_seq_extract_form(&$variables) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form = $variables['form']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $headers = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $rows = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    0 => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      array('data' => drupal_render($form['description']), 'colspan' => 3), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    1 => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      drupal_render($form['genus']), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      drupal_render($form['species']) , 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      drupal_render($form['ftype']), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    2 => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      array('data' => drupal_render($form['analysis']), 'colspan' => 3), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //drupal_render($form['format']), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    3 => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      array('data' =>  drupal_render($form['fnames']), 'colspan' => 2), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      drupal_render($form['upstream']) . 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      drupal_render($form['downstream']) . 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      drupal_render($form['format']), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    4 => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'data' =>  drupal_render($form['advanced']), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'colspan' => 3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    5 => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'data' =>  drupal_render($form['retrieve_btn']) . drupal_render($form['reset_btn']), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'colspan' => 3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $table_vars = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'header' => $headers, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'rows' => $rows, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'attributes' => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'id' => 'tripal-feature-seq-extract-form-table', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'border' => '0' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'sticky' => FALSE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'colgroups' => array(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'empty' => '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form['rendered_form'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#type' => 'item', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#markup' => theme('table', $table_vars), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return drupal_render_children($form); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Ajax function which returns the form via ajax 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function tripal_feature_seq_extract_form_ajax_callback($form, &$form_state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return $form; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Validate the extract sequence form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @ingroup tripal_feature 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function tripal_feature_seq_extract_form_validate($form, &$form_state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $genus      = $form_state['values']['genus']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $species    = $form_state['values']['species']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $analysis   = $form_state['values']['analysis']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $ftype      = $form_state['values']['ftype']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $fnames     = $form_state['values']['fnames']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $upstream   = $form_state['values']['upstream']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $downstream = $form_state['values']['downstream']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $use_parent = $form_state['values']['use_parent']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $aggregate  = $form_state['values']['aggregate']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $agg_types  = $form_state['values']['agg_types']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if ($upstream and !preg_match('/^\d+$/', $upstream)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    form_set_error('upstream', 'Please enter a positive numeric value for the upstream bases'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   if ($downstream and !preg_match('/^\d+$/', $downstream)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    form_set_error('downstream', 'Please enter a positive numeric value for the downstream bases'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (!$genus and !$species and !$ftype and !$fnames) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    form_set_error('', 'Please provide a feature name, a feature type or a genus.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if ($ftype == 'polypeptide' and $upstream) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    form_set_error('upstream', 'When the sequence type is protein the upstream value must be unset.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if ($ftype == 'polypeptide' and $downstream) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    form_set_error('downstream', 'When the sequence type is protein the downstream value must be unset.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if ($ftype == 'polypeptide' and $use_parent) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    form_set_error('use_parent', 'When the sequence type is protein the "Use Parent" option must not be set.'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Submit the extract sequence form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @ingroup tripal_feature 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function tripal_feature_seq_extract_form_submit($form, &$form_state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $genus      = $form_state['values']['genus']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $species    = $form_state['values']['species']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $analysis   = $form_state['values']['analysis']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $ftype      = $form_state['values']['ftype']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $fnames     = $form_state['values']['fnames']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $upstream   = $form_state['values']['upstream']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $downstream = $form_state['values']['downstream']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $use_parent = $form_state['values']['use_parent']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $aggregate  = $form_state['values']['aggregate']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $agg_types  = $form_state['values']['agg_types']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // we must use the parent sequence if the user has selected 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // the upstream, downstream or to aggregate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if ($upstream or $downstream or $aggregate) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $use_parent = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if ($form_state['clicked_button']['#name'] == 'retrieve') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $_SESSION['tripal_feature_seq_extract']['genus']      = $genus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $_SESSION['tripal_feature_seq_extract']['species']    = $species; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $_SESSION['tripal_feature_seq_extract']['analysis']   = $analysis; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $_SESSION['tripal_feature_seq_extract']['ftype']      = $ftype; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $_SESSION['tripal_feature_seq_extract']['fnames']     = $fnames; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $_SESSION['tripal_feature_seq_extract']['upstream']   = $upstream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $_SESSION['tripal_feature_seq_extract']['downstream'] = $downstream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $_SESSION['tripal_feature_seq_extract']['format']     = 'fasta_txt'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $_SESSION['tripal_feature_seq_extract']['use_parent'] = $use_parent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $_SESSION['tripal_feature_seq_extract']['aggregate']  = $aggregate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $_SESSION['tripal_feature_seq_extract']['agg_types']  = $agg_types; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $_SESSION['tripal_feature_seq_extract']['download']   = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    drupal_goto('find/sequences/download'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |