Genetics::API::DB::Update
use Genetics::API ;
$api = new Genetics::API(DSN => {driver => "mysql", host => $Host, database => $Database}, user => $UserName, password => $Password) ;
$subject = $api->getSubject(3) ; $subject->name("Elvis") ; $api->updateSubject($subject) ;
The Genetics::API::DB packages provide an interface for the manipulation of Genperl objects in a relational database. This package contains the methods for updating objects that have previously been saved to the database. To save new objects, see Genetics::API::DB::Create.
The following describes the update behavior implemented by the methods in this package: - The data in each object field will completely replace the data in the database for that field. - Data for fields not present in an object will not be affected. - In order to delete data for a particular field, the value of that field should be set to ``DELETE''. - In order to add to existing data for a particular field, use an appropriate method in Genetics::API or handle it manually.
Examples:
To completely replace a SNPs set of Alleles: @alleles = ( {name => "A", type => "Nucleotide"}, name => "C", type => "Nucleotide"} ) ; $snp = $api->getSNP(11) ; $snp->Alleles(\@alleles) ; $api->updateSNP($snp) ;
To add an Allele to a SNP: $snp = $api->getSNP(11) ; $alleleListptr = $snp->Alleles ; push( @$alleleListptr, {name => "A", type => "Nucleotide"} ) ; $snp->Alleles($alleleListptr) ; $api->updateSNP($snp) ;
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Currently, all feedback should be sent directly to the author.
Email: mathias@genomica.com
Phone: (720) 565-4029
Address: Genomica Corporation 1745 38th Street Boulder, CO 80301
The rest of the documentation describes each of the object variables and methods. The names of internal variables and methods are preceded with an underscore (_).
strict Just to be anal vars Global variables Carp Error reporting
Exporter Make methods available to importing packages
Function : Update a Genetics::Object::Cluster object in the database. Argument : The Genetics::Object::Cluster object to be updated. Returns : 1 on success, undef otherwise. Scope : Public Comments : Cluster.clusterType cannot be modified, so this method does not touch the Cluster table.
Function : Update a Genetics::Object::Subject object in the database. Argument : The Genetics::Object::Subject object to be updated. Returns : 1 on success, undef otherwise. Scope : Public Comments : If Subject.kindredID is modified, the approprate updates are also made to KindredSubject. In other words, the reciprocal relationships Kindred->Subjects and Subject->Kindred are kept in synch.
Function : Update a Genetics::Object::Kindred object in the database. Argument : The Genetics::Object::Kindred object to be updated. Returns : 1 on success, undef otherwise. Scope : Public Comments : If the set of Subjects contained in a Kindred is modified, the approprate updates are also made to the Subject.kindredID field of each of the Subjects. In other words, the reciprocal relationships Kindred->Subjects and Subject->Kindred are kept in synch. This only applies to primary Kindreds, of course.
Function : Update a Genetics::Object::Marker object in the database. Argument : The Genetics::Object::Marker object to be updated. Returns : 1 on success, undef otherwise. Scope : Public
Function : Update a Genetics::Object::SNP object in the database. Argument : The Genetics::Object::SNP object to be updated. Returns : 1 on success, undef otherwise. Scope : Public
Function : Update a Genetics::Object::Genotype object in the database. Argument : The Genetics::Object::Genotype object to be updated. Returns : 1 on success, undef otherwise. Scope : Public
Function : Update a Genetics::Object::StudyVariable object in the database. Argument : The Genetics::Object::StudyVariable object to be updated. Returns : 1 on success, undef otherwise. Scope : Public Comments : StudyVariable.format cannot be modified.
Function : Update a Genetics::Object::Phenotype object in the database. Argument : The Genetics::Object::Phenotype object to be updated. Returns : 1 on success, undef otherwise. Scope : Public Comments :
=cut
sub updatePhenotype { my($self, $pt) = @_ ; my($id, $actualType, $sth, $active, $date, $svFormat, $valueFieldName, $aaListPtr) ; my $dbh = $self->{dbh} ;
$DEBUG and carp " ->[updatePhenotype] $pt" ;
$id = $pt->field("id") ; ( $actualType ) = $dbh->selectrow_array("select objType from Object where id = $id") ; if ( $actualType ne "Phenotype") { carp " ->[updatePhenotype] Object with ID = $id is not a Phenotype!" ; return(undef) ; } # Object $self->_updateObjAssocData($pt) ; # Phenotype if ( defined($active = $pt->field("isActive")) ) { $sth = $dbh->prepare( "update Phenotype set isActive = ? where ptID = ?" ) ; $sth->execute($active, $id) ; $sth->finish() ; } if ( defined($date = $pt->field("dateCollected")) ) { $sth = $dbh->prepare( "update Phenotype set dateCollected = ? where ptID = ?" ) ; if ($date eq "DELETE") { $sth->execute(undef, $id) ; } else { $sth->execute($date, $id) ; } $sth->finish() ; } ( $svFormat ) = $dbh->selectrow_array( "select format from StudyVariable, Phenotype where ptID = $id and Phenotype.svID = StudyVariable.studyVariableID" ) ; $valueFieldName = lc($svFormat) . "Value" ; $sth = $dbh->prepare( "update Phenotype set $valueFieldName = ? where ptID = ?" ) ; $sth->execute($pt->field("value"), $id) ; $sth->finish() ; # Phenotype AssayAttributes if ( defined ($aaListPtr = $pt->field("AssayAttrs")) ) { $self->_updateAssayAttrs($aaListPtr, "Phenotype", $id) ; }
$DEBUG and carp " ->[updatePhenotype] End." ;
return(1) ; }
Function : Update a Genetics::Object::FrequencySource object in the database. Argument : The Genetics::Object::FrequencySource object to be updated. Returns : 1 on success, undef otherwise. Scope : Public
Function : Update a Genetics::Object::HtMarkerCollection object in the database. Argument : The Genetics::Object::HtMarkerCollection object to be updated. Returns : 1 on success, undef otherwise. Scope : Public
Function : Update a Genetics::Object::Haplotype object in the database. Argument : The Genetics::Object::Haplotype object to be updated. Returns : 1 on success, undef otherwise. Scope : Public
Function : Update a Genetics::Object::DNASample object in the database. Argument : The Genetics::Object::DNASample object to be updated. Returns : 1 on success, undef otherwise. Scope : Public
Function : Update a Genetics::Object::TissueSample object in the database. Argument : The Genetics::Object::TissueSample object to be updated. Returns : 1 on success, undef otherwise. Scope : Public
Function : Update a Genetics::Object::Map object in the database. Argument : The Genetics::Object::Map object to be updated. Returns : 1 on success, undef otherwise. Scope : Public
Function : Update data in, and associated with, the Object table/object. Argument : The Genetics::Object object to be updated. Returns : 1 on success, undef otherwise. Scope : Private Called by : The various updateObjectSubClass methods. Comments : The following Object fields cannot be modified: id, objType, dateModified.
Function : Updates references between Subjects and Kindreds. Argument : A Subject ID and a Kindred ID (can be undef). Returns : N/A Scope : Private Called By : updateSubject() when Subject.kindredID is modified. Comments : This method updates the KindredSubject table based on a change to a Subject.kindredID field.
Function : Updates references between Kindreds and Subjects. Argument : A Kindred ID and an array reference to a list of Subject IDs. Returns : N/A Scope : Private Called By : updateSubject() and updateKindred(). Comments : This method updates the KindredSubject table based on a changes made to a Kindred->Subjects field. This method also updates the Subject.kindredID field of each of the relevant Subjects.
Function : Update AssayAttributes associated with a Genotype, AlleleCall or Phenotype. Arguments : Array reference to the list of AssayAttributes, scalar containing the type of object with which the AssayAttributes are associated, and another scalar containing the id of that object. Returns : N/A Scope : Private Called by : updateGenotype(), updatePhenotype(). Comments :