public function add( IdStack $idPath, $record ) { $objectId = $this->objectIdFetcher->fetch( $idPath->getKeyStack() ); $linkAttributeId = $this->determineAttributeId( $idPath, "URL", $record->linkAttribute ); $linkValue = $record->link; $label = $linkValue->linkLabel; $url = $linkValue->linkURL; if ( $linkAttributeId != 0 && $url != "" ) { addLinkAttributeValue( $objectId, $linkAttributeId, $this->validateURL( $url ), $label ); } }
protected function addComments( SwissProtEntry $entry, $definedMeaningId, $proteinMeaningId, $organismSpeciesMeaningId ) { foreach ( $entry->comments as $key => $comment ) { $commentType = strtoupper( $comment->type ); $comment->text = trim( $comment->text ); // f.) Information in the attribute 'caution' is imported but it many times doesn’t // make sense due to the fact it refers to References (in the SP entry) that are // not shown in wikiproteins, therefore it should NOT be imported presently. if ( $commentType == "CAUTION" ) continue; // ignore // create definedMeaning for SP comment type $attributeMeaningId = $this->getOrCreateAttributeMeaningId( $comment->type ); // initialize text value $textValue = ""; $normalProcessing = true; // link comments with the appropriate definedMeaning(defined by Chrisi and Erik) // we have to create relation between comment and its aspect // all comments have the relation 'has aspect' switch ( $commentType ) { // j.) the comments with the topic, SUBCELLULAR LOCATION and TISSUE SPECIFICITY // need to be tagged with the attribute 'Localization Aspects' case "SUBCELLULAR LOCATION": case "TISSUE SPECIFICITY": break; // k.) the comments with the topic, CATALYTIC ACTIVITY, COFACTOR, FUNCTION, DISEASE, // ENZYME REGULATION, INDUCTION, INTERACTION, PATHWAY, RNA EDITING, and // DEVELOPMENTAL STAGE need to be tagged with the attribute 'Functional Aspects' case "CATALYTIC ACTIVITY": case "COFACTOR": case "FUNCTION": case "DISEASE": case "ENZYME REGULATION": case "INDUCTION": case "INTERACTION": case "PATHWAY": case "RNA EDITING": // add INTERACTION comment parameters if ( $commentType == "INTERACTION" && count( $comment->children ) == 2 ) { if ( $comment->children[0]->att_intactId == $comment->children[1]->att_intactId ) { $textValue .= "with Self (accepted by Swiss-Prot);"; // build URL $comment->url = "http://www.ebi.ac.uk/intact/search/do/search?binary=" . $comment->children[0]->att_intactId . "," . $comment->children[0]->att_intactId; } else { if ( $comment->children[1]->label == "" ) $textValue .= "with -"; else $textValue .= "with " . $comment->children[1]->label; $textValue .= " (accepted by Swiss-Prot);"; $comment->url = "http://www.ebi.ac.uk/intact/search/do/search?binary=" . $comment->children[0]->att_intactId . "," . $comment->children[1]->att_intactId; } } // ignore other parameters of INTERACTION comment if ( $commentType == "INTERACTION" ) $comment->text = ""; break; // l.) the comments with the topic, ALTERNATIVE PRODUCTS, DOMAIN, PTM, // POLYMORPHISM, SIMILARITY, MASS SPECTROMETRY, and SUBUNIT need to be tagged // with the attribute 'Structural Aspects' case "ALTERNATIVE PRODUCTS": foreach ( $comment->isoforms as $isoform ) { $isoformId = $this->addIsoform( $entry, $definedMeaningId, $proteinMeaningId, $organismSpeciesMeaningId, $isoform ); addRelation( $definedMeaningId, $this->alternativeProductId, $isoformId ); } break; case "SIMILARITY": if ( startsWith( $comment->text, "Belongs to the " ) ) { $family = trim( substr( $comment->text, strlen( "Belongs to the " ) ) ); $familyId = $this->addSimilarityFamily( $family ); addRelation( $definedMeaningId, $this->conceptualPartOfId, $familyId ); $normalProcessing = false; } else if ( startsWith( $comment->text, "Contains " ) ) { $domain = trim( substr( $comment->text, strlen( "Contains " ) ) ); while ( $domain[0] >= "0" && $domain[0] <= "9" ) $domain = substr( $domain, 1 ); $domain = trim( $domain ); $domainId = $this->addSimilarityFamily( $domain ); addRelation( $definedMeaningId, $this->consistsOfId, $domainId ); $normalProcessing = false; } break; case "DOMAIN": case "PTM": case "POLYMORPHISM": case "MASS SPECTROMETRY": case "SUBUNIT": // add mass SPECTROMETRY to text value if ( $comment->mass != "" ) $textValue .= $comment->mass . " is the determined molecular weight; "; // add method of MASS SPECTROMETRY to text value if ( $comment->method != "" ) { $textValue .= $comment->method . " is the ionization method; "; } // add error of MASS SPECTROMETRY to text value if ( $comment->error != "" ) { $textValue .= $comment->error . " is the accuracy or error range of the MW measurement; "; } // add position of MASS SPECTROMETRY to text value if ( $commentType == "MASS SPECTROMETRY" && count( $comment->children ) > 0 ) $textValue .= $comment->children[0]->position . " is the part of the protein sequence entry that corresponds to the molecular weight;"; // ignore note of MASS SPECTROMETRY comment if ( $commentType == "MASS SPECTROMETRY" ) $comment->text = ""; break; // m.) the comments with the topic, ALLERGEN, PHARMACEUTICAL, BIOTECHNOLOGY, // TOXIC DOSE, and BIOPHYSICOCHEMICAL PROPERTIES need to be tagged with the // attribute 'Pharmaceutical Aspects' case "ALLERGEN": case "PHARMACEUTICAL": case "BIOTECHNOLOGY": case "TOXIC DOSE": case "BIOPHYSICOCHEMICAL PROPERTIES": if ( $commentType == "BIOPHYSICOCHEMICAL PROPERTIES" ) { // add Kinetic parameters to text value if ( count( $comment->children ) > 0 ) { $textValue .= "Kinetic parameters:("; if ( $comment->children[0]->km != "" ) $textValue .= "KM=" . $comment->children[0]->km . "; "; if ( $comment->children[0]->vMax != "" ) $textValue .= "Vmax=" . $comment->children[0]->vMax; $textValue .= "); "; } // add phDependence parameter if ( $comment->phDependence != "" ) $textValue .= "pH dependence: " . $comment->phDependence . "; "; // add temperatureDependence parameter if ( $comment->temperatureDependence != "" ) $textValue .= "temperature dependence: " . $comment->temperatureDependence . ";"; } break; // o.) the comments with the topic, WEB RESOURCE or ONLINE INFORMATION needs to // be tagged with the attribute 'External Information' case "ONLINE INFORMATION": // add comment name to text value $label = ""; if ( $comment->name != "" ) $label .= $comment->name; // add 'NOTE' child text to link label if ( $comment->note != "" ) { if ( $label != "" ) $label .= ", "; $label .= $comment->note; } if ( $comment->text != "" ) { $textValue = $comment->text; if ( $comment->status != "" ) $textValue .= " (" . $comment->status . ")"; $idToAddLinkTo = addTextAttributeValue( $definedMeaningId, $attributeMeaningId, $textValue ); } else $idToAddLinkTo = $definedMeaningId; addLinkAttributeValue( $idToAddLinkTo, $this->onlineInformationId, $comment->url, $label ); $normalProcessing = false; break; // n.) the comments with the topic, MISCELLANEOUS and CAUTION need to be tagged // with the attribute 'Other Aspects' case "DEVELOPMENTAL STAGE": case "MISCELLANEOUS": case "CAUTION": default: break; } if ( $normalProcessing ) { // add comment text to text value if ( $textValue != "" && ( $comment->text != "" || $comment->status != "" ) ) $textValue .= " TEXT="; if ( $comment->text != "" ) $textValue .= $comment->text; // add comment status to text value if ( $comment->status != "" ) $textValue .= " (" . $comment->status . ")"; if ( $textValue != "" ) { // add the comment fields as text attributes to the entry $textAttributeValueId = addTextAttributeValue( $definedMeaningId, $attributeMeaningId, $textValue ); // add the comment URL as URL attribute to the entry and link URL attribute with text attribute if ( $comment->url != "" ) addLinkAttributeValue( $textAttributeValueId, $this->onlineInformationId, $comment->url ); } } } }