Bio::Affymetrix::CDF
Probeset
| Bio::Affymetrix::CDF::Probeset- an Affymetrix probeset in an CDF file
 | 
| No package variables defined. | 
| use Bio::Affymetrix::CDF;
 # Parse the CDF file
 
 my $cdf=new CDF();
 
 $cdf->parse_from_file("foo.cdf");
 
 # Print out all of the probeset names on this chip type
 
 my $probeset=$chp->probesets()->[0];
 
 FINISH ME HERE
 
 | 
| The Affymetrix microarray system produces files in a variety offormats. If this means nothing to you, these modules are probably not
 for you :). After these modules have parsed a CDF file, the resulting
 Bio::Affymetrix::CDF file contains a list of
 Bio::Affmetrix::CDF::Probeset objects. This allows you look at the
 details of the probeset.
 
 You can only get probe-level information if you have parsed the CDFobject with probe-level parsing turned on.
 
 | 
Methods description
  Arg [1]    : Bio::Affymetrix::CDF object $probelist
  Example    : my $cdf=$ps->probes()
  Description: Get/set CDF object this probeset belongs to.
  Returntype : Bio::Affymetrix::CDF object
  Exceptions : none
  Caller     : general
  Arg [1]    : 	boolean $sense (optional)
  Example    : 	if ($ps->is_sense()) { .... }
  Description: 	Returns true when this is a sense (rather than
anti-sense) probeset
  Returntype : boolean
  Exceptions : none
  Caller     : general
  Arg [0]    : 	integer
  Example    : none
  Description: Get/set mutation_type. If this is a genotyping probe
set, 0=substitution, 1=insertion, 2=deletion
  Returntype : integer
  Exceptions : none
  Caller     : general
  Arg [1]    : string
  Example    : my $name=$ps->name()
  Description: Get/set name of probeset
  Returntype : string
  Exceptions : none
  Caller     : general
  Arg [0]    : none
  Example    : my $cdf=new Bio::Affymetrix::CDF::Probeset();
  Description: constructor for Bio::Affymetrix::CDF::Probeset
object. You probably do not want to make these objects yourself yet, however.
  Returntype : new Bio::Affmetrix::CDF object
  Exceptions : none
  Caller     : general
  Arg [0]    : 	none
  Example    : 	my $probepairs=$ps->original_num_probepairs()
  Description: 	Get the number of probepairs in this probeset
  Returntype : integer
  Exceptions : none
  Caller     : general
  Arg [0]    : 	none
  Example    : 	my $probepairs=$ps->original_num_probes()
  Description: 	Get the number of probes in this probeset
  Returntype : integer
  Exceptions : none
  Caller     : general
  Arg [1]    : arrayref $probelist
  Example    : my @probes=$ps->probes()
  Description: Get/set list of probes making up this array. Only available if
with probes mode is used.
  Returntype : reference to array of Bio::Affymetrix::CDF::Probe objects
  Exceptions : none
  Caller     : general
  Arg [1]    : 	string $unit_name (optional)
  Example    : 	my $unit_name=$ps->unit_name()
  Description: 	Always NONE for expression arrays
  Returntype : string
  Exceptions : none
  Caller     : general
  Arg [0]    : 	none
  Example    : 	my $probepairs=$ps->unit_number()
  Description: 	Get the unit number of this probeset (a unique number
assigned to each probe in the CDF file but otherwise meaningless)
  Returntype : integer
  Exceptions : none
  Caller     : general
Methods code
sub CDF
 {    my $self=shift;
    if (my $q=shift) {
	$self->{"CDF"}=$q;
    }
    return $self->{"CDF"};}
sub _parse_from_filehandle
 {    my $self=shift;
    my $fh=shift;
    $self->{"FH"}=$fh;
    ## Handle trivia from unit header
    my $i;
    while (defined($i=<$fh>) && (!($i=~/^\[.*\]$/o))) {
	if ($i=~/^([^=]+)=(.*)$/o) { 
	    my $name=$1;
	    my $value=$2;
	    if (uc $name eq "NAME") {
		$self->{"UNITNAME"}=$value;
	    } elsif (uc $name eq "DIRECTION") {
		$self->{"SENSE"}=($value==1);
	    } else {
		$self->{uc $name}=$value;
	    }
	}
    }
    ## Block section
    while (defined($i=<$fh>) && (!($i=~/^\[.*\]$/o))) {
	if ($i=~/^([^=]+)=(.*)$/o) { 
	    my $name=$1;
	    my $value=$2;
	    if ($self->{"probemode"}&&$name=~/Cell\d+/o) {
		my $h= new Bio::Affymetrix::CDF::Probe();
		my @s=split /\t/,$value;
		$h->{"NAME"}=$name;
		$h->{"X"}=$s[0];
		$h->{"Y"}=$s[1];
		$h->{"PROBE"}=$s[2];
		$h->{"EXPOS"}=$s[5];
		$h->{"POS"}=$s[6];
		$h->{"PBASE"}=$s[8];
		$h->{"ATOM"}=$s[9];
		$h->{"INDEX"}=$s[10];
		
		push @{$self->{"PROBES"}},$h;
	    } elsif (uc $name eq "NAME") {
		$self->{"NAME"}=$value;
	    }
	}
    }
    return $i;}
sub is_sense
 {    my $self=shift;
    if (my $q=shift) {
	$self->{"SENSE"}=$q;
    }
    return $self->{"SENSE"};}
sub mutation_type
 {    my $self=shift;
    if (my $q=shift) {
	$self->{"MUTATIONTYPE"}=$q;
    }
    return $self->{"MUTATIONTYPE"};}
sub name
 {    my $self=shift;
    if (my $q=shift) {
	$self->{"NAME"}=$q;
    }
    return $self->{"NAME"};}
sub new
 {    my $class=shift;
    my $q=shift;
    my $self={};
    $self->{"probemode"}=0;
    bless $self,$class;
    return $self;}
sub original_num_probepairs
 {    my $self=shift;
    return $self->{"NUMATOMS"};}
sub original_num_probes
 {    my $self=shift;
    return $self->{"NUMCELLS"};}
sub original_number_blocks
 {    my $self=shift;
    return $self->{"NUMBERBLOCKS"};}
sub probes
 {    my $self=shift;
    if (!$self->{"probemode"}) {
	die "Probes is not available when not in probemode";
    }
    if (my $q=shift) {
	$self->{"PROBES"}=$q;
    }
    return $self->{"PROBES"};}
sub unit_name
 {    my $self=shift;
    
    if (my $q=shift) {
	$self->{"UNITNAME"}=$q;
    }
    
    return $self->{"UNITNAME"};}
sub unit_number
 {    my $self=shift;
    return $self->{"UNITNUMBER"};}
sub unit_type
 {    my $self=shift;
    if (my $q=shift) {
	if ($q eq "CustomSeq") {
	    $self->{"UNITTYPE"}=1;
	} elsif ($q eq "genotyping") {
	    $self->{"UNITTYPE"}=2;
	} elsif ($q eq "expression") {
	    $self->{"UNITTYPE"}=3;
	} elsif ($q eq "tag/GenFlex") {
	    $self->{"UNITTYPE"}=7;
	} else {
	    die "Not a valid unit type";
	}
    }
    if ($self->{"UNITTYPE"}==1) {
	return "CustomSeq";
    } elsif ($self->{"UNITTYPE"}==2) {
	return "genotyping";
    } elsif ($self->{"UNITTYPE"}==3) {
	return "expression";
    } elsif ($self->{"UNITTYPE"}==7) {
	return "tag/GenFlex";
    }}
General documentation
| COPYRIGHT | top | 
| This module is free software. You can copy or redistribute it under the same terms as Perl itself.
 | 
| AUTHORS | top | 
|     Nick James (nick at arabidopsis.info)
 
 David J Craigon (david at arabidopsis.info)
 
 Nottingham Arabidopsis Stock Centre, University of Nottingham.
 
 |