|
@@ -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');
|
|
|
+ }
|
|
|
+}
|