[Bioperl-l] Bio::Seq::SequenceTrace and Bio::SeqIO::scf

Chad Matsalla chad at dieselwurks.com
Tue Jan 28 17:46:40 EST 2003


Some time ago, I trolled for feelings about having an object that models
a sequence trace. The information that would be in this object would
mimic the information available in a scf "Sequence Chromatogram File" as
found on the staden site here:

I have committed a module: Bio::Seq::SequenceTrace that does this. It
inherits from Bio::Seq::SeqWithQuality because that seemed to fit. It
also inherits from Bio::Seq::TraceI which was the starting point in my
development of the methods required.

I have also committed rather thorough tests in t/sequencetrace.t that
illustrate the ways in which I intended for people to use this object.

A primary reason for me to develop this was because I have a need to
take a slice of an SCF and write that as a new SCF. This is achieved
through the use of
Bio::Seq::SequenceTrace->sub_trace_object($start,$end) which can then be
passed into SeqIO::scf->write_seq.

The creation of the SequenceTrace object required that SeqIO::scf be
rewritten.  I gladly did this because the old module was somewhat...
clunky. It now features decoupled procedures and little reliance on the
$self->{} constructs I was fond of at the time.

Here is some example code for reading in an scf, taking a slice of that
scf, and writing it out:

$out_scf = Bio::SeqIO->new('-verbose' => 1,
                  '-file' => ">write_scf_subtrace.scf",
                  '-format' => 'scf');
$in_scf_v3 = Bio::SeqIO->new('-file' => Bio::Root::IO->catfile
                    '-format' => 'scf',
                    '-verbose' => $verbose);
$v3 = $in_scf_v3->next_seq();
my $sub_v3 = $v3->sub_trace_object(5,50);
          -target   =>   $sub_v3

Here is some sample code for creating a SequenceTrace object with a
SeqWithQuality, asking the SequenceTrace object to synthesize false
traces for that quality, and then writing out the synthetic trace:

$swq = Bio::Seq::SeqWithQuality->new(-seq=>'ATCGATCGAA',
                         -qual=>"10 20 30 40 50 20 10 30 40 50",

my $trace = Bio::Seq::SequenceTrace->new(
                         -swq =>   $swq);

               -target   =>   $trace,
               -MACH          =>   'CSM sequence-o-matic 5000',
               -TPSW          =>   'trace processing software',
               -BCSW          =>   'basecalling software',
               -DATF          =>   'AM_Version=2.00',
               -DATN          =>   'a22c.alf',
               -CONV          =>   'Bioperl-scf.pm');

If anybody has any comments, I would of course be glad to hear them. In
the meantime, this system works! I have been using it for about a week
now and it seems to be reliable.

Chad Matsalla

More information about the Bioperl-l mailing list