Fwd: Re: [Bioperl-l] haplotype

Jason Stajich jason at cgt.duhs.duke.edu
Wed Nov 5 07:53:19 EST 2003


Sounds good.

I would prefer the namespace to be Bio::PopGen::Haplotype as we already
have Bio::PopGen::Genotype and this seems to fit more properly into that
subclass rather than a top-level Bio:: class.

I have some unfinished code which tries to do some similar things and
builds Individuals and Genotypes from a DNA alignment.

At some point will want to try and merge these things if there is some
overlap, but happy to see your code prior to all of this.

-jason

On Wed, 5 Nov 2003, Pedro wrote:

> I forgot cc to the bioperl-list.
>
> Here is the code example.
>
> Cheers
> Pedro
>
> >Date: Wed, 5 Nov 2003 12:09:27 +0000
> >To: Ewan Birney <birney at ebi.ac.uk>
> >From: Pedro <pedro.fabre at gen.gu.se>
> >Subject: Re: [Bioperl-l] haplotype
> >Cc:
> >Bcc:
> >X-Attachments:
> >
> >Hi Ewan,
> >
> >Thanks for your email.
> >>On Wed, 5 Nov 2003, Pedro wrote:
> >>
> >>>  Dear developers,
> >>>
> >>>  I have done some work on SNP haplotypes. I have created two modules
> >>>  one to find the ht_SNP set and another one to tag the minimal set of
> >>>  an haplotype.
> >>>
> >>>  I would like to contibute to bioperl these two modules.
> >>>
> >>>  The modules could be under:
> >>>
> >>>       Bio::Haplotype::Select
> >>>       Bio::Haplotype::Tag
> >>>
> >>>  I also have stand alone examples about how the code is working and
> >>>  about what to input and what you get from the module.
> >>>
> >>
> >>It would be great if you could show a little synopsis of how a client
> >>would use objects
> >
> >
> >Select.pm
> >my $hap = Select->new($hap,$snp,$pop);
> >
> >methods:
> >
> >$hap->input_block;   # returns the input block
> >$hap->snp_ids;       # returns the snp_ids set
> >$hap->pop_freq;      # returns the population id and their frequency
> >
> >$hap->deg-snp;       # list of degenerated snps
> >$hap->snp_type;      # all snp and their types
> >$hap->no_snp;        # false snps
> >$hap->useful_snp;    # list of snps that can be used for the analysis
> >$hap->ht_type;       # selection of snps which create not redundante set
> >$hap->ht_set;        # minimal set of SNP to tag
> >$hap->snp_type_code  # every snp is converted to a numeric code.
> >                      # this is the result.
> >
> >Tag.pm
> >
> >my $tag = Tag -> new($hap);
> >
> >methods:
> >
> >$tag->input_block;   # input block
> >$tag->tag_list;      # returns list of SNP's combination.
> >$tag->tag_length;    # return the minimal number of SNPs you have to tag
> >                      # to define the block
> >
> >
> >
> >Here come the examples
> >
> >############## Call to Select.pm ##########################
> >
> >#!/usr/local/bin/perl
> >
> >use warnings;
> >use strict;
> >use Select;
> >use Util;
> >use Data::Dumper;
> >
> >my $hap = [
> >      'acgt?cact',
> >      'acgt?ca-t',
> >      'cg?tag?gc',
> >      'cactcgtgc',
> >      'cgctcgtgc',
> >      'cggtag?gc',
> >      'ac?t?cact'
> >      ];
> >
> >my $snp = [qw/s1 s2 s3 s4 s5 s6 s7 s8 s9/];
> >
> >my $pop = [
> >      [qw/ uno    1/],
> >      [qw/ dos    2/],
> >      [qw/ tres   3/],
> >      [qw/ cuatro 4/],
> >      [qw/ cinco  5/],
> >      [qw/ seis   6/],
> >      [qw/ siete  7/]
> >        ];
> >
> ># create the object
> >my $obj = Select->new($hap,$snp,$pop);
> >
> >print Dumper $obj;
> >
> >
> >#print input block
> >print "this is the input block (Haplotype) [input_block]\n";
> >foreach (@{$obj->input_block}){
> >     print "$_\n";
> >}
> >
> >print "\n",'[snp_id] return the SNP IDs list',"\n";
> >print "@{$obj->snp_ids}\n";
> >
> >print "\n",'[pop_freq] return the population frequency',"\n";
> >
> >
> >############## result for this set ##########################
> >
> >this is the input block (Haplotype) [input_block]
> >acgt?cact
> >acgt?ca-t
> >cg?tag?gc
> >cactcgtgc
> >cgctcgtgc
> >cggtag?gc
> >ac?t?cact
> >
> >[snp_id] return the SNP IDs list
> >s1 s2 s3 s4 s5 s6 s7 s8 s9
> >
> >[pop_freq] return the population frequency
> >uno     1
> >dos     2
> >tres    3
> >cuatro  4
> >cinco   5
> >seis    6
> >siete   7
> >
> >[deg_snp] if there is any degenerate SNP must be here
> >s7 s5 s3
> >
> >[ht_set] working haplotype
> >0       0       0
> >1       1       1
> >0       0       2
> >1       2       1
> >
> >[ht_type] return the list of the snp type used
> >30 57 48
> >
> >[useful_snp]
> >s1 s2 s6 s8 s9
> >
> >[snp_type_code]
> >30 57 30 48 30
> >
> >[ht_type]
> >30 57 48
> >#################################################################
> >
> >once you have the set this is the second example
> >
> >####################### taggin module ###########################
> >
> >#!/usr/local/bin/perl
> >
> >use warnings;
> >use strict;
> >use Tag;
> >use Util;
> >use Data::Dumper;
> >
> >my $hap = [
> >              [qw/0       0       0/],
> >              [qw/1       1       1/],
> >              [qw/0       0       2/],
> >              [qw/1       2       1/]
> >           ];
> >
> >my $obj = Tag -> new($hap);
> >
> >my $input      = $obj->input_block;
> >my $tag_list   = $obj->tag_list;
> >my $tag_length = $obj->tag_length;
> >
> >print "This was the input\n";
> >foreach (@$input){
> >     print "@$_\n";
> >}
> >
> >print "This is the tag list. You will need to tag the snp's on the
> >list (start from 0)\n";
> >foreach (@$tag_list){
> >     print "@$_\n";
> >}
> >
> >print "This is the tag length\n";
> >
> >print "$tag_length\n";
> >
> >###################### this is the result for this set #################
> >This was the input
> >0 0 0
> >1 1 1
> >0 0 2
> >1 2 1
> >This is the tag list. You will need to tag the snp's on the list
> >(start from 0)
> >1 2
> >This is the tag length
> >2
> >
> >########################################################################
> >
> >Do you think this information if enough?
> >
> >I know that the biological implication of multiallelic variance is
> >rare but I have taken that into account.
> >
> >
> >
> >>  > I would like also to know if there is any perl style to follow. Any
> >>>  documentation about that?
> >>
> >>In bioperl release there is biodesign.pod which gives you some hints.
> >
> >Thanks for the reference.
> >
> >>  >
> >>>  If you think this can be insteresting for bioperl, please let me know.
> >>>
> >>
> >>I am sure this would be and I would be happy to help you do conversion
> >>into bioperl style...
> >
> >Thanks once again.
> >
> >Pedro
> >
> >>
> >>
> >>>  Cheers
> >>>  Pedro
> >>>
> >>>
> >>>  _______________________________________________
> >>>  Bioperl-l mailing list
> >>>  Bioperl-l at portal.open-bio.org
> >>>  http://portal.open-bio.org/mailman/listinfo/bioperl-l
> >>>
> >>
> >>-----------------------------------------------------------------
> >>Ewan Birney. Mobile: +44 (0)7970 151230, Work: +44 1223 494420
> >><birney at ebi.ac.uk>.
> >>-----------------------------------------------------------------
>
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at portal.open-bio.org
> http://portal.open-bio.org/mailman/listinfo/bioperl-l
>

--
Jason Stajich
Duke University
jason at cgt.mc.duke.edu


More information about the Bioperl-l mailing list