function tripal_cv_obo_process_term
2.x tripal_cv.obo_loader.inc | tripal_cv_obo_process_term($term, $defaultcv, $is_relationship = 0, &$newcvs, $default_db) |
1.x obo_loader.inc | tripal_cv_obo_process_term($term, $defaultcv, $is_relationship = 0, &$newcvs, $default_db) |
Uses the provided term array to add/update information to Chado about the term including the term, dbxref, synonyms, properties, and relationships.
@is_relationship Set to 1 if this term is a relationship term @default_db The name of the default database.
Parameters
$term: An array representing the cvterm.
$defaultcv: The name of the default controlled vocabulary
Related topics
2 calls to tripal_cv_obo_process_term()
- tripal_cv_obo_load_typedefs in tripal_cv/
includes/ tripal_cv.obo_loader.inc - OBO files are divided into a typedefs terms section and vocabulary terms section. This function loads the typedef terms from the OBO.
- tripal_cv_obo_process_terms in tripal_cv/
includes/ tripal_cv.obo_loader.inc - OBO files are divided into a typedefs section and a terms section. This function loads the typedef terms from the OBO.
File
- tripal_cv/
includes/ tripal_cv.obo_loader.inc, line 762 - Functions to aid in loading ontologies into the chado cv module
Code
function tripal_cv_obo_process_term($term, $defaultcv, $is_relationship = 0, &$newcvs, $default_db) {
// make sure we have a namespace for this term
if (!array_key_exists('namespace', $term) and !($defaultcv or $defaultcv == '')) {
tripal_cv_obo_quiterror("Cannot add the term: no namespace defined. " . $term['id'][0]);
}
// construct the term array for sending to the tripal_cv_add_cvterm function
// for adding a new cvterm
$t = array();
$t['id'] = $term['id'][0];
$t['name'] = $term['name'][0];
if (array_key_exists('def', $term)) {
$t['definition'] = $term['def'][0];
}
if (array_key_exists('subset', $term)) {
$t['subset'] = $term['subset'][0];
}
if (array_key_exists('namespace', $term)) {
$t['namespace'] = $term['namespace'][0];
}
if (array_key_exists('is_obsolete', $term)) {
$t['is_obsolete'] = $term['is_obsolete'][0];
}
$t['cv_name'] = $defaultcv;
$t['is_relationship'] = $is_relationship;
$t['db_name'] = $default_db;
// add the cvterm
$cvterm = tripal_insert_cvterm($t, array('update_existing' => TRUE));
if (!$cvterm) {
tripal_cv_obo_quiterror("Cannot add the term " . $term['id'][0]);
}
if (array_key_exists('namespace', $term)) {
$newcvs[$term['namespace'][0]] = $cvterm->cv_id;
}
// now handle other properites
if (array_key_exists('is_anonymous', $term)) {
//print "WARNING: unhandled tag: is_anonymous\n";
}
if (array_key_exists('alt_id', $term)) {
foreach ($term['alt_id'] as $alt_id) {
if (!tripal_cv_obo_add_cvterm_dbxref($cvterm, $alt_id)) {
tripal_cv_obo_quiterror("Cannot add alternate id $alt_id");
}
}
}
if (array_key_exists('subset', $term)) {
//print "WARNING: unhandled tag: subset\n";
}
// add synonyms for this cvterm
if (array_key_exists('synonym', $term)) {
if (!tripal_cv_obo_add_synonyms($term, $cvterm)) {
tripal_cv_obo_quiterror("Cannot add synonyms");
}
}
// reformat the deprecated 'exact_synonym, narrow_synonym, and broad_synonym'
// types to be of the v1.2 standard
if (array_key_exists('exact_synonym', $term) or array_key_exists('narrow_synonym', $term) or array_key_exists('broad_synonym', $term)) {
if (array_key_exists('exact_synonym', $term)) {
foreach ($term['exact_synonym'] as $synonym) {
$new = preg_replace('/^\s*(\".+?\")(.*?)$/', '$1 EXACT $2', $synonym);
$term['synonym'][] = $new;
}
}
if (array_key_exists('narrow_synonym', $term)) {
foreach ($term['narrow_synonym'] as $synonym) {
$new = preg_replace('/^\s*(\".+?\")(.*?)$/', '$1 NARROW $2', $synonym);
$term['synonym'][] = $new;
}
}
if (array_key_exists('broad_synonym', $term)) {
foreach ($term['broad_synonym'] as $synonym) {
$new = preg_replace('/^\s*(\".+?\")(.*?)$/', '$1 BROAD $2', $synonym);
$term['synonym'][] = $new;
}
}
if (!tripal_cv_obo_add_synonyms($term, $cvterm)) {
tripal_cv_obo_quiterror("Cannot add/update synonyms");
}
}
// add the comment to the cvtermprop table
if (array_key_exists('comment', $term)) {
$comments = $term['comment'];
$j = 0;
foreach ($comments as $comment) {
if (!tripal_cv_obo_add_cvterm_prop($cvterm, 'comment', $comment, $j)) {
tripal_cv_obo_quiterror("Cannot add/update cvterm property");
}
$j++;
}
}
// add any other external dbxrefs
if (array_key_exists('xref', $term)) {
foreach ($term['xref'] as $xref) {
if (!tripal_cv_obo_add_cvterm_dbxref($cvterm, $xref)) {
tripal_cv_obo_quiterror("Cannot add/update cvterm database reference (dbxref).");
}
}
}
if (array_key_exists('xref_analog', $term)) {
foreach ($term['xref_analog'] as $xref) {
if (!tripal_cv_obo_add_cvterm_dbxref($cvterm, $xref)) {
tripal_cv_obo_quiterror("Cannot add/update cvterm database reference (dbxref).");
}
}
}
if (array_key_exists('xref_unk', $term)) {
foreach ($term['xref_unk'] as $xref) {
if (!tripal_cv_obo_add_cvterm_dbxref($cvterm, $xref)) {
tripal_cv_obo_quiterror("Cannot add/update cvterm database reference (dbxref).");
}
}
}
// add is_a relationships for this cvterm
if (array_key_exists('is_a', $term)) {
foreach ($term['is_a'] as $is_a) {
if (!tripal_cv_obo_add_relationship($cvterm, $defaultcv, 'is_a', $is_a, $is_relationship, $default_db)) {
tripal_cv_obo_quiterror("Cannot add relationship is_a: $is_a");
}
}
}
if (array_key_exists('intersection_of', $term)) {
//print "WARNING: unhandled tag: intersection_of\n";
}
if (array_key_exists('union_of', $term)) {
//print "WARNING: unhandled tag: union_on\n";
}
if (array_key_exists('disjoint_from', $term)) {
//print "WARNING: unhandled tag: disjoint_from\n";
}
if (array_key_exists('relationship', $term)) {
foreach ($term['relationship'] as $value) {
$rel = preg_replace('/^(.+?)\s.+?$/', '\1', $value);
$object = preg_replace('/^.+?\s(.+?)$/', '\1', $value);
if (!tripal_cv_obo_add_relationship($cvterm, $defaultcv, $rel, $object, $is_relationship, $default_db)) {
tripal_cv_obo_quiterror("Cannot add relationship $rel: $object");
}
}
}
if (array_key_exists('replaced_by', $term)) {
//print "WARNING: unhandled tag: replaced_by\n";
}
if (array_key_exists('consider', $term)) {
//print "WARNING: unhandled tag: consider\n";
}
if (array_key_exists('use_term', $term)) {
//print "WARNING: unhandled tag: user_term\n";
}
if (array_key_exists('builtin', $term)) {
//print "WARNING: unhandled tag: builtin\n";
}
return 1;
}