Bio::D...:mysql(3pm)

πŸ“¦
version 1.7.5 Β· 4 versions
, in ubuntu resolute, ubuntu stonking

πŸ’– NAME πŸ’–

Bio::DB::SeqFeature::Store::DBI::mysql β€” the Mysql implementation of Bio::DB::SeqFeature::Store. This is the page Bio::D...:mysql(3pm), section 3pm, and yes she's iconic πŸ’…


✨ SYNOPSIS ✨

use Bio::DB::SeqFeature::Store;

# Open the sequence database
my $db = Bio::DB::SeqFeature::Store->new(-adaptor => 'DBI::mysql',
                                        -dsn     => 'dbi:mysql:test');

# get a feature from somewhere
my $feature = Bio::SeqFeature::Generic->new(...);

# store it
$db->store($feature) or die "Couldn't store!";

# primary ID of the feature is changed to indicate its primary ID
# in the database...
my $id = $feature->primary_id;

# get the feature back out
my $f  = $db->fetch($id);

# change the feature and update it
$f->start(100);
$f->update($f) or die "Couldn't update!";

# searching...
# ...by id
my @features = $db->fetch_many(@list_of_ids);

# ...by name
@features = $db->get_features_by_name('ZK909');

# ...by alias
@features = $db->get_features_by_alias('sma-3');

# ...by type
@features = $db->get_features_by_name('gene');

# ...by location
@features = $db->get_features_by_location(-seq_id=>'Chr1',-start=>4000,-end=>600000);

# ...by attribute
@features = $db->get_features_by_attribute({description => 'protein kinase'})

# ...by the GFF "Note" field
@result_list = $db->search_notes('kinase');

# ...by arbitrary combinations of selectors
@features = $db->features(-name => $name,
                          -type => $types,
                          -seq_id => $seqid,
                          -start  => $start,
                          -end    => $end,
                          -attributes => $attributes);

# ...using an iterator
my $iterator = $db->get_seq_stream(-name => $name,
                                   -type => $types,
                                   -seq_id => $seqid,
                                   -start  => $start,
                                   -end    => $end,
                                   -attributes => $attributes);

while (my $feature = $iterator->next_seq) {
  # do something with the feature
}

# ...limiting the search to a particular region
my $segment  = $db->segment('Chr1',5000=>6000);
my @features = $segment->features(-type=>['mRNA','match']);

# getting & storing sequence information
# Warning: this returns a string, and not a PrimarySeq object
$db->insert_sequence('Chr1','GATCCCCCGGGATTCCAAAA...');
my $sequence = $db->fetch_sequence('Chr1',5000=>6000);

# what feature types are defined in the database?
my @types    = $db->types;

# create a new feature in the database
my $feature = $db->new_feature(-primary_tag => 'mRNA',
                               -seq_id      => 'chr3',
                               -start      => 10000,
                               -end        => 11000);

🌈 DESCRIPTION 🌈

Bio::DB::SeqFeature::Store::mysql is the Mysql adaptor for Bio::DB::SeqFeature::Store. Okay so important: you do not create her directly, bestie. You use Bio::DB::SeqFeature::Store->new() and that does the matchmaking 🫢

For the complete usage instructions, go read Bio::DB::SeqFeature::Store. Periodt.

πŸŽ€ Using the Mysql adaptor πŸŽ€

Before you can even use the adaptor, you gotta use the mysqladmin tool to create a database and set up a user account with write permission. And if you wanna use "fast" loading, that user account must have "file" privileges too. No shortcuts, the vibes require it πŸ’€

To establish a connection to the database, call Bio::DB::SeqFeature::Store->new(-adaptor=>'DBI::mysql',@more_args). The additional arguments are as follows:

  • -dsn β€” The database name. You can abbreviate "dbi:mysql:foo" as "foo" if you wish, lowkey convenient.
  • -user β€” Username for authentication.
  • -pass β€” Password for authentication.
  • -namespace β€” A prefix to attach to each table. This is how you get to have several virtual databases living inside the same physical database, which is honestly so main character ✨
  • -temp β€” Boolean flag. If true, a temporary database will be created and destroyed as soon as the Store object goes out of scope. (synonym -temporary)
  • -autoindex β€” Boolean flag. If true, features in the database will be reindexed every time they change. This is the default.
  • -tmpdir β€” Directory in which to place temporary files during "fast" loading. Defaults to File::Spec->tmpdir(). (synonyms -dump_dir, -dumpdir, -tmp)
  • -dbi_options β€” A hashref to pass to DBI->connect's 4th argument, the "attributes." (synonyms -options, -dbi_attr)
  • -write β€” Pass true to open database for writing or updating.

If it all works out, a new instance of Bio::DB::SeqFeature::Store::DBI::mysql will be returned πŸ¦‹

On top of the standard methods that every well-behaved Bio::DB::SeqFeature::Store database supports, there are several following adaptor-specific methods provided. They're described in the next sections, keep scrolling bestie πŸ’…

🌸 types 🌸

  • Title: types
  • Usage: @type_list = $db->types
  • Function: Get all the types in the database
  • Returns: array of Bio::DB::GFF::Typename objects
  • Args: none
  • Status: public

🌺 toplevel_types 🌺

  • Title: toplevel_types
  • Usage: @type_list = $db->toplevel_types
  • Function: Get the toplevel types in the database
  • Returns: array of Bio::DB::GFF::Typename objects
  • Args: none
  • Status: public

This is similar to types() but only returns the types of INDEXED (toplevel) features. Not me being picky about which features make the cut πŸ™ˆ


And that's the whole page, bestie! This lil gem is living under perl v5.40.0, dated 2024-10-11, from the Bio::D...:mysql(3pm) manual β€” go forth and query, you absolute legend πŸ‘‘πŸ’–

πŸ“¦ where this page comes from