function tripal_cv_obo_add_synonyms
2.x tripal_cv.obo_loader.inc | tripal_cv_obo_add_synonyms($term, $cvterm) |
1.x obo_loader.inc | tripal_cv_obo_add_synonyms($term, $cvterm) |
Related topics
1 call to tripal_cv_obo_add_synonyms()
- tripal_cv_obo_process_term in tripal_cv/
includes/ obo_loader.inc
File
- tripal_cv/
includes/ obo_loader.inc, line 722 - Tripal Ontology Loader
Code
function tripal_cv_obo_add_synonyms($term, $cvterm) {
// make sure we have a 'synonym_type' vocabulary
$syncv = tripal_cv_add_cv('synonym_type', 'A vocabulary added by the Tripal CV module OBO loader for storing synonym types.');
// now add the synonyms
if (array_key_exists('synonym', $term)) {
foreach ($term['synonym'] as $synonym) {
// separate out the synonym definition and the synonym type
$def = preg_replace('/^\s*"(.*)"\s*.*$/', '\1', $synonym);
// the scope will be 'EXACT', etc...
$scope = drupal_strtolower(preg_replace('/^.*"\s+(.*?)\s+.*$/', '\1', $synonym));
if (!$scope) { // if no scope then default to 'exact'
$scope = 'exact';
}
// make sure the synonym type exists in the 'synonym_type' vocabulary
$values = array(
'name' => $scope,
'cv_id' => array(
'name' => 'synonym_type',
),
);
$options = array('statement_name' => 'sel_cvterm_nacv', 'is_updlicate' => 1);
$results = tripal_core_chado_select('cvterm', array('*'), $values, $options);
// if it doesn't exist then add it
if (!$results) {
// build a 'term' object so we can add the missing term
$term = array(
'name' => $scope,
'id' => "internal:$scope",
'definition' => '',
'is_obsolete' => 0,
);
$syntype = tripal_cv_add_cvterm($term, $syncv->name, 0, 1);
if (!$syntype) {
tripal_cv_obo_quiterror("Cannot add synonym type: internal:$scope");
}
}
else {
$syntype = $results[0];
}
// make sure the synonym doesn't already exists
$values = array(
'cvterm_id' => $cvterm->cvterm_id,
'synonym' => $def
);
$options = array('statement_name' => 'sel_cvtermsynonym_cvsy');
$results = tripal_core_chado_select('cvtermsynonym', array('*'), $values, $options);
if (count($results) == 0) {
$values = array(
'cvterm_id' => $cvterm->cvterm_id,
'synonym' => $def,
'type_id' => $syntype->cvterm_id
);
$options = array(
'statement_name' => 'ins_cvtermsynonym_cvsy',
'return_record' => FALSE
);
$success = tripal_core_chado_insert('cvtermsynonym', $values, $options);
if (!$success) {
tripal_cv_obo_quiterror("Failed to insert the synonym for term: $name ($def)");
}
}
// now add the dbxrefs for the synonym if we have a comma in the middle
// of a description then this will cause problems when splitting os lets
// just change it so it won't mess up our splitting and then set it back
// later.
/**
$synonym = preg_replace('/(".*?),\s(.*?")/','$1,_$2',$synonym);
$dbxrefs = preg_split("/, /",preg_replace('/^.*\[(.*?)\]$/','\1',$synonym));
foreach ($dbxrefs as $dbxref) {
$dbxref = preg_replace('/,_/',", ",$dbxref);
if ($dbxref) {
tripal_cv_obo_add_cvterm_dbxref($syn,$dbxref);
}
}
*/
}
}
return TRUE;
}