'SO', // The name of the term. 'term_name' => 'CDS', // The unique ID (i.e. accession) of the term. 'term_accession' => '0000316', // Set to TRUE if the site admin is allowed to change the term // type. This will create form elements when editing the field instance // to allow the site admin to change the term settings above. 'term_fixed' => FALSE, ); // The default widget for this field. public static $default_widget = 'so__cds_widget'; // The default formatter for this field. public static $default_formatter = 'so__cds_formatter'; /** * @see TripalField::load() */ public function load($entity, $details = array()) { $field_name = $this->field['field_name']; $feature = $details['record']; $num_seqs = 0; $feature = chado_expand_var($feature, 'table', 'featureloc', $options); $featureloc_sequences = chado_get_featureloc_sequences($feature->feature_id, $feature->featureloc->feature_id); foreach($featureloc_sequences as $src => $attrs){ // Generate a CDS sequence if one exsits for this feature alignment. $cds_sequence = tripal_get_feature_sequences( array( 'feature_id' => $feature->feature_id, 'parent_id' => $attrs['featureloc']->srcfeature_id->feature_id, 'name' => $feature->name, 'featureloc_id' => $attrs['featureloc']->featureloc_id, ), array( // CDS are in parent-child relationships so we want to use the // sequence from the parent 'derive_from_parent' => 1, // we want to combine all CDS for this feature into a single sequence 'aggregate' => 1, // we're looking for CDS features 'sub_feature_types' => array('CDS'), 'is_html' => 0 ) ); if (count($cds_sequence) > 0) { $defline = tripal_get_fasta_defline($feature, '', $attrs['featureloc'], 'CDS', strlen($attrs['residues'])); // the tripal_get_feature_sequences() function can return multiple sequences // if a feature is aligned to multiple places. In the case of CDSs we expect // that one mRNA is only aligned to a single location on the assembly so we // can access the CDS sequence with index 0. if ($cds_sequence[0]['residues']) { $entity->{$field_name}['und'][$num_seqs++]['value'] = $defline . "\n" . $cds_sequence[0]['residues']; } } } } }