Genetics::API::Analysis::Linkage
# The following code runs a full Genehunter genome scan using two different # disease models: use Genetics::API ;
$api = new Genetics::API(DSN => {driver => "mysql", host => $Host, database => $Database}, user => $UserName, password => $Password) ;
# Kindreds $kindredCluster = $api->getObject({TYPE => "Cluster", NAME => "Bpall two generations"}) ; @kindreds = $api->getClusterContents($kindredCluster, 1) ; # Allele FrequencySource: $bpall = $api->getObject({TYPE => "Cluster", NAME => "Bpall"}) ; # StudyVariables: $bp = $api->getObject({TYPE => "StudyVariable", NAME => "BP"}) ; $bpup = $api->getObject({TYPE => "StudyVariable", NAME => "BPUP"}) ; @studyVars = ($bp, $bpup) ; $lcd = $api->getObject({TYPE => "StudyVariable", NAME => "AoO Dom LC"}) ;
@chromosomes = qw(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 XY) ; foreach $chr (@chromosomes) { $markerCluster = $api->getObject({TYPE => "Cluster", NAME => "Chr$chr Markers"}) ; @markers = $api->getClusterContents($markerCluster, 1) ; $map = $api->getObject({TYPE => "Map", NAME => "Marshfield Chr$chr Map"}) ;
foreach $sv (@studyVars) { $svName = $sv->name() ; $runName = $chr . $svName ; $api->runGenehunter( KINDREDS => \@kindreds, MARKERS => \@markers, MAP => $map, ALLELETYPE => "Size", AFS => $bpall, TRAIT => $sv, LC => $lcd, SETUPFILENAME => "$runName.setup", PHOTOFILENAME => "$runName.out", DATFILENAME => "$runName.dat", PEDFILENAME => "$runName.pre", ANALYSIS => "BOTH", SINGLEPOINT => "off", OFFEND => "5.0", INCREMENT => "step 3", MAXBITS => 18, ) ; } }
This package contains methods relating to the use of data contained in GenPerl objects in genetic linkage analyses. Generally speaking, this means reading and writing linkage format pedigree and locus files, and/or running programs such as genehunter, etc.
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 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 : Write LINKAGE format pedigree and locus files. Arguments : A hash of parameters as follows KINDREDS => Array pointer to a list of Kindred objects. These define the Subjects being analyzed. Required, for obvious reasons. MARKERS => Array pointer to a list of Marker objects. These define the Markers being analyzed. Required, for obvious reasons. ALLELETYPE => String containing the allele type of the alleles to be used. Optional. Default value is Code. AFS => Array pointer to a list of Subject or Kindred objects, or a single Cluster (Kindred or Subject) object. The source for allele frequencies. Optional. If not provided, the input Kindreds will be used EXTAFS => A FrequencySource object. The source for allele frequencies. Optional. If not provided, the input Kindreds will be used TRAIT => A StudyVariable object. The trait locus being analyzed. The category of this StudyVariable must be DynamicAffectionStatus or StaticAffectionStatus. Optional. LC => A StudyVariable object. This StudyVariable defines the liability classes to be used with the trait locus being analyzed. The category of this StudyVariable must be StaticLiabilityClass. Optional. QTLS => Array pointer to a list of StudyVariable objects. QTLs to be analyzed. Optional. MAP => A Map object. This Map will be used to order the markers. Also, the distances will be used. Right now, every input Marker MUST be on the Map and there MUST NOT be any markers on the map that are not being analyzed. Optional. DATFILE => Filehandle reference. The filehandle to which the locus file will be written. Optional. If not provided, STDOUT will be used. PEDFILE => Filehandle reference. The filehandle to which the pedigree file will be written. Optional. If not provided, STDOUT will be used. MARKERDELIM => Scalar containint the string to be used to delimit marker names in the locus file. Optional. If not provided, # is used. RENUMBER => Boolean. Optional. If not provided, alleles are NOT re- numbered. Returns : N/A Scope : Public Called by : Comments : To Do: support for X-linked data support for dynamic trait loci support for dynamic liability classes support for QTLs
Function : Run a Genehunter analysis Arguments : A hash of parameters as follows KINDREDS => Array pointer to a list of Kindred objects. These define the Subjects being analyzed. Required, for obvious reasons. MARKERS => Array pointer to a list of Marker objects. These define the Markers being analyzed. Required, for obvious reasons. AFS => Array pointer to a list of Subject or Kindred objects, or a single Cluster (Kindred or Subject) object. The source for allele frequencies. Optional. If not provided, the input Kindreds will be used EXTAFS => A FrequencySource object. The source for allele frequencies. Optional. If not provided, the input Kindreds will be used TRAIT => A StudyVariable object. The trait locus being analyzed. The category of this StudyVariable must be AffectionStatus or StaticAffectionStatus. Optional. LC => A StudyVariable object. This StudyVariable defines the liability classes to be used with the trait locus being analyzed. The category of this StudyVariable must be StaticLiabilityClass. Optional. DATFILENAME => A name to be used for the locus file. Required. PEDFILENAME => A name to be used for the pedigree file. Required. PHOTOFILENAME => A name to be used for the photo file. Optional. FILESONLY => Boolean. If true, only write files. Optional, defaults to false. Returns : N/A Scope : Public Comments :
Function : Write "LINKAGE format" pedigree and locus files for use by KEM. Arguments : A hash of parameters as follows SUBJECTS => Array pointer to a list of Kindred objects. These define the Subjects being analyzed. Required, for obvious reasons. MARKERS => Array pointer to a list of Marker objects. These define the Markers being analyzed. Required, for obvious reasons. DISTANCES => Array pointer to a list of distances bewtween the Markers. ALLELETYPE => String containing the allele type of the alleles to be used. Optional. Default value is Code. DATFILE => Filehandle reference. The filehandle to which the locus file will be written. Optional. If not provided, STDOUT will be used. PEDFILE => Filehandle reference. The filehandle to which the pedigree file will be written. Optional. If not provided, STDOUT will be used. Returns : A hash, keyed on marker names that maps the codes (used in the output files) to the allele names of the markers. The hash has the following structure: markerNames => code2alleleName hash references Scope : Public Called by : Comments : Alleles have to be re-numbered for KEM. Markers and distances are used in their input order.
Function : Process K-EM output, as descibed below. Arguments : A file handle reference to a K-EM output file, an array reference to the list of markers used in the analysis, and a hash reference to the hash mapping allele codes to names (as returned by writeKEMFiles()). Returns : An array. the first element is a scalar containing the best log liklihood of the K-EM run. The rest of the elements are hash pointers containing processed results. The structure of the referenced hashes is: $htResult{name} = Ht number $htResult{freq} = float $htResult{ht} = array reference to a list of allele names Example : @kemResults = processKemResults(\@snps, \%poNameCode2Allele) ; Scope : Public Class Method Comments : Converts codes in K-EM output file back into allele names
Function : Arguments : Returns : Example : printProcessedKemResults(%kemResults) Scope : Public Class Method Comments :
Function : Format processed K-EM results as HTML Arguments : An array of hash references as returned by processKemResults() Returns : Scalar text string containing HTML Example : $html = htmlizeKemResults(@processedKemResults) Scope : Public Class Method Comments :
Function : Order markers and generate distances based on a Map object. Arguments : An array reference to a list of input Markers/SNPs, a Map, and two array reference to be populated with the ordered markers and distances, respecitvely. Returns : N/A Example : $api->orderMarkersWithMap(\@snps, undef, \@orderedSnps, \@distances) ; Scope : Public Instance Method Comments : This is used inconjunction with runKEM(). This is basically a stub method right now. It populates to ordered list with a copy of the input list and populates the distance list with 0.1s.
Function : Renumber alleles into consecutive integers Arguments : A Marker or SNP object and a string containing an allele type. Returns : A reference to a hash with the following structure: %hash = (alleleName => code) Scope : Private instance method Called by : writeLinkageFiles(). Comments :
Function : See below Arguments : A hash of with the following structure: markerNames => alleleName2code hash references Returns : A hash of with the following structure: markerNames => code2alleleName hash references Example : %poName_c2a = _reverseRenum(%poName_a2c) Scope : Private Class Method Comments : This is needed because the linkage file writing routines need to keep track of allele->code mapping, but they need to return code->allele mappings.
Function : Verify that a StudyVariable may be used as a trait locus. Arguments : A StudyVariable object and two pointers to flag variables used in writeLinkageFiles(). Returns : N/A Scope : Private class method Called by : writeLinkageFiles() Comments : The fisrt flag pointer is to the trait flag; it is set to 1 if the input StudyVariable may be used for static liability class definition and assignments. The second flag pointer is to the liability class flag. It is set to 2 if the input StudyVariable may be used for dynamic liability class definition and assignments.
Function : Verify that a StudyVariable may be used for static liability class definition and assignments. Arguments : A StudyVariable object a pointer to a flag variable used in writeLinkageFiles(). Returns : Scope : Private class method Called by : writeLinkageFiles() Comments : The flag pointer is to the the liability class flag. It is set to 1 if the input StudyVariable may be used for static liability class definition and assignments.
Function : Verify that StudyVariable(s) may be used as QTL varibales in a linkage analysis. Arguments : N/A Returns : N/A Scope : Private class method Called by : writeLinkageFiles() Comments : Not implemented.
Function : Order markers and generate distances for linkage analysis. Arguments : An array reference to a list of input Markers/SNPs, a Map Returns : N/A Scope : Private class method Called by : writeLinkageFiles() Comments : There does not have to be a Map object. If there is not the marker order used is that of the input list and all distances are set to 0.1. If there are input Markers/SNPs that are not on the Map, they are included in the analysis after the ordered Markers/SNPs with all distances are set to 0.1.
NB. This does not yet deal with the following: - markers on the map that are not in the input set - global map order (it may never do this) - map distance units other than Theta or cM (it may never do this)