NAME

Probeset - A module to handle Affymetrix probes and store informations. This module follow the Class::Struct OO-Perl structure, implements AUTOLOAD. To use some methods you need to feed your object with required informations (coming from AffyDB and mySQL tables).


SYNOPSIS

        use Probeset;
        my $obj= Probeset -> new (
                probe_id     => "1443133_at",
                chipcode     => "ET_U133A"
        );
        print "PROBE ID: ", $obj-> get_probe_id, "\n";
        print "CHIPCODE", $obj-> get_chipcode, "\n";
        
        $obj -> set_organism("");
        $obj -> set_affy_date("1/1/2005");
        
        my $obj2 = $obj -> clone (
                probe_id      => "3334567_at",
                chipcode      => "GZ_U122B",
        )
        
        print "\n\nCount is ", Probeset -> get_count(), "\n\n";


ABSTRACT

This perl library uses perl5 objects to make it easy to create and query a Probeset object. Probeset.pm is a class to handle probesets of a genechip. It support objects construction, objects cloning, read/write permissions of the attributes, attributes required and attributes no init (can't be initialized after a cloning of the first object). This package defines a hash structure to store and use information about a probeset. Using a AffyDB.pm you can create and query a mySQL database, with Probeset.pm you recall this informations and use it. With methods make_absolute_map and make_cdna_absolute_map you can cross information coming from: Affymetrix, Ludwing Institute of cancer research and UCSC exon maps to retrive target sequences absolute positions on the genome and generate original data about ProbePairs position.


DESCRIPTION

CONSTRUCTOR AND INITIALIZATION

version
        use Probeset;
        print $VERSION;

Display current Module Version

new

        use Probeset;
        $obj = Probeset -> new (...)

Create a new object with two arguments:


        probe_id
        chipcode
        [ any other optional argument ]

Attributes are checked and initialized one by one. A check id made to verify attribute permission.

clone

        use Probeset;
        $obj = Probeset -> clone ($obj_temp);

Clone an esistent object, mantain only the attributes with init permission

autoload
Accessors under AUTOLOAD take place of definitions as sub get_attribute {...} or sub set_attribute{...} Install accessor definition in the symbol table How AUTOLOAD work: *{$VAR} give access to the symbol definition table so, the first time that method is called we call AUTOLOAD, the second time that the method get_name is called AUTOLOAD isn't called cause get_name is saved in the symbol table.

get and set

        use Probeset;
        $obj -> get_probe_id();
        $obj -> set_seq_src("GENBANK");

Get and Set methods depens by AUTOLOAD. AUTOLOAD verify is we want access or change data and make check on your request. After this step you retrive informations (get) or set information in the hash (set)

DESTROY
Just clean up memory and decrement Counter of objects.

MAPPING METHODS

make_absolute_map
In order to use this method, you need to feed this object with information relatives to locations, exon_count and exon/intron structure of the RefSeq. Script example:
use AffyDB;
use Probeset;

New AffyDB connection

my $affydb = AffyDB -> new (

        mysql       => 'affy:localhost',
        chip        => "$chipcode",
        refseqcode  => "$refseq_code"

);
my $probeset_name      = '1007_s_at';

New Probeset object

my $probeset  = Probeset -> new ( 

        probeset_id => $probeset_name, 
        chipcode => $chipcode

);

Take informations from AffyDB

my @locations     = $affydb -> get_locations($probeset_name);
my @targets       = $affydb -> get_distinct_licr($probeset_name);

SET infos in my object as reference to an array

$probeset -> set_locations(\@locations);
$probeset -> set_licr_info(\@targets);

LOOP for every REFSEQ

for (my $n = 0; $n<=$#targets; $n++) {
	
	my @refseq_map    = $affydb -> get_refseq_map ($targets[$n][0]);
	$probeset -> make_absolute_map ($targets[$n][0], @refseq_map);
	
}

ATTRIBUTES AND ARGUMENTS

List of all the attributes that came from AFFI with def value and permissions read/write/requiredi/noinit You can add attributes in his hash without change the code. First value is the default value. Second value stock permissions and type we can have a SCALAR or an ANONYMOUS ARRAY or an HASH as value.

my %_attribute_properties = (
	
	_probeset_id        => [ '????'    ,   'read.required'            ], # Single Probeset ID
	_chipcode           => [ '????'    ,   'read.required'            ], # Chip small name as into mysql table (ABBR)
	_genechip           => [ '????'    ,   'read.write'               ], # Genechip complete name
	_organism           => [ '????'    ,   'read.write'               ], # Organism
	_affy_date          => [ '????'    ,   'read.write'               ], # Annotation date 
	_public_id          => [ '????'    ,   'read.write.noinit'        ], # Public_id from affy tables
	_seq_type           => [ '????'    ,   'read.write.noinit'        ], # Affy seq_type
	_seq_src            => [ '????'    ,   'read.write.noinit'        ], # Affy seq_source
	_trans_id           => [ '????'    ,   'read.write.noinit'        ], # Affy Cluster Transcript ID 
	_target_des         => [ '????'    ,   'read.write.noinit'        ], # U48705 /FEATURE=mRNA /DEFINITION=HSU48705 Human receptor tyrosine kinase DDR gene, complete cds
	_arch_unigene       => [ '????'    ,   'read.write.noinit'        ], # Original unigene ID
	_description        => [ '????'    ,   'read.write.noinit'        ], # Probe method annotation description
	_cluster            => [ '????'    ,   'read.write.noinit'        ], # ID of the transcripts sed to annotate the probeset
	_assignments        => [ '????'    ,   'read.write.noinit'        ], # mRNA assignments
	_notes              => [ '????'    ,   'read.write.noinit'        ], # Annotation Notes
	_affy_align         => [ ['????']  ,   'read.write.noinit.array'  ], # alignments from affy format (VERSION: | ALIGNMENTS: | OVERLAPS: )
	_affy_note          => [ ['????']  ,   'read.write.noinit.array'  ], # annotation affymetrix format (PUBLIC ID: | header: value)
	_affy_func          => [ ['????']  ,   'read.write.noinit.array'  ], # functional annotation from affymetrix
	_probes             => [ ['????']  ,   'read.write.noinit.array'  ], # List of probes id with X and Y and oligo (probe_id | X: |Y: |oligo)
	_locations          => [ ['????']  ,   'read.write.noinit.array'  ], # List of matching positions with licr_id and strands (set_id | probe | licr_id | position | strand )
	_cdna_locations     => [ ['????']  ,   'read.write.noinit.array'  ], # List of matching locations with cDNA licr id 
	_licr_info          => [ ['????']  ,   'read.write.noinit.array'  ], # List of  DISTINCT licr matching ID for this probe_set (licr_id | seq_type | gene_symbol | unigene | band)
	_cdna_licr_info     => [ ['????']  ,   'read.write.noinit.array'  ], # List of DISTINCT cDNA matching this probeset
	_refseqposition     => [ { }       ,   'read.write.noinit.hash'   ], # RefSeq position on the genome (REFSEQ_ID => Chromosome| strand| TxStart| TxEnd| CdsStart| CdsEnd)
	_cdnaposition       => [ { }       ,   'read.write.noinit.hash'   ], # Cdna Position on the Genome (REFSEQ_ID => Chromosome| strand| TxStart| TxEnd| CdsStart| CdsEnd)
	_exons_map          => [ { }       ,   'read.write.noinit.hash'   ], # exon map created from method make_exon_map
	_cdna_map           => [ { }       ,   'read.write.noinit.hash'   ], # exon map or blocks for cDNA
	_exons_num          => [ { }       ,   'read.write.noinit.hash'   ], # Number of exons for every licr_id as ARRAY 
	_cdna_exons_num     => [ { }       ,   'read.write.noinit.hash'   ], # Number of exons (blocks) for cDNA
	_abs_locations      => [ { }       ,   'read.write.noinit.hash'   ], # List of Probes locations over chromosome () per ogni REFSEQ
	_cdna_abs_locations => [ { }       ,   'read.write.noinit.hash'   ]  # List of ProbePairs locations over Chr for cDNA
	
);

EXPORT

1.10


SEE ALSO

AffyDB.pm

http://bio.ifom-ieo-campus.it/splicy


AUTHOR

Rambaldi, <davide.rambaldi@ifom-ieo-campus.it>


COPYRIGHT AND LICENSE

Copyright 2005 by Rrambaldi

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.