[ensembl-dev] gene to coords code issue

William Spooner william.spooner at eaglegenomics.com
Fri Apr 20 09:45:21 BST 2012


Hi Sean,

You are connecting on the wrong port to useastdb. Try the following;

  mysql -h useastdb.ensembl.org -P 5306 -u anonymous

Best,

Will

On 20 Apr 2012, at 05:49, Javier Herrero wrote:

> Dear Sean
> 
> The method fetch_all_by_external_name returns a reference to an array of Bio::EnsEMBL::Gene objects. All the methods named "fetch_all_by..." return a reference to an array. The array might be empty or contain just one entry, but you will always get a reference to an array. Contrarily, all the methods named "fetch_by..." return either undef or 1 single object.
> 
> Typically, you would use a foreach loop to go through all possible returned object:
> 
> open OUT, ">$gene_file.coords";
> for my $geneid ( @unique ) {
>     chomp $geneid;
>     ensembl_coords($geneid); 
> }
>   
> sub ensembl_coords {
>   my ($id) = @_;
>  
>   my $adaptor = $registry->get_adaptor( 'Human', 'Core', 'gene' );
>  
>   my $all_genes = $adaptor->fetch_all_by_external_name($id);
> 
>   foreach my $gene (@$all_genes) {
>     $chr = $gene->seq_region_name();
>     $start = $gene->seq_region_start();
>     $end = $gene->seq_region_end();
>     print OUT join("\t", $chr,$start,$end,$id),"\n"; #I have added the original $id here
>   }
> 
> }
> 
> 
> I hope the helps
> 
> Javier
> 
> 
> 
> On 20/04/12 04:49, Sean O'Keeffe wrote:
>> Hi,
>> I've used the code below on multiple occasions to convert external gene names to chromosome coords and it worked fine.
>> However when I tried it just now I get the error for the very first gene DNAI2 and the script crashes:
>> 
>> Can't call method "seq_region_name" on unblessed reference
>> 
>> When I tried fetch_by_display_label($id) - I get:
>> 
>> Can't call method "seq_region_name" on an undefined value
>> 
>> Have I missed something?
>> Thanks for any help,
>> Sean.
>> 
>> p.s. I tried connecting to the useastdb.ensembl.org, as I'm in the states, but It gave the following (maybe the 2 issues are related):
>> 
>> DBI connect('host=useastdb.ensembl.org;port=3306','anonymous',...) failed: Can't connect to MySQL server on 'useastdb.ensembl.org' (111) at /home/sean/tools/ensembl_53/modules/Bio/EnsEMBL/Registry.pm line 1329
>> Can't call method "selectall_arrayref" on an undefined value at /home/sean/tools/ensembl_53/modules/Bio/EnsEMBL/Registry.pm line 1332.
>> 
>> ==============
>> 
>> #!/usr/bin/perl
>> 
>> use strict;
>> use lib '/home/sean/tools/ensembl_53/modules';
>> 
>> use Bio::SeqIO;
>> use Bio::Root::IO;
>> use Bio::EnsEMBL::DBSQL::BaseAdaptor;
>> use Bio::EnsEMBL::Registry;
>>  
>> my $registry = 'Bio::EnsEMBL::Registry';
>> #$registry->load_registry_from_db(-host => 'useastdb.ensembl.org',-user => 'anonymous');
>> $registry->load_registry_from_db(-host => 'ensembldb.ensembl.org',-user => 'anonymous');
>>  
>> open OUT, ">$gene_file.coords";
>> for my $geneid ( @unique ) {
>>     chomp $geneid;
>>     ($chr,$start, $end) = ensembl_coords($geneid); 
>>     print OUT join("\t", $chr,$start,$end,$geneid),"\n";
>> }
>>   
>> sub ensembl_coords {
>>   my ($id) = @_;
>>  
>>   my $adaptor = $registry->get_adaptor( 'Human', 'Core', 'gene' );
>>  
>>   my $gene = $adaptor->fetch_all_by_external_name($id);
>>   # my $gene = $adaptor->fetch_by_display_label($id);
>> 
>>   $chr = $gene->seq_region_name();
>>   $start = $gene->seq_region_start();
>>   $end = $gene->seq_region_end();
>>   return ($chr,$start,$end);
>> 
>> }
>> 
>> 
>> _______________________________________________
>> Dev mailing list    
>> Dev at ensembl.org
>> 
>> List admin (including subscribe/unsubscribe): 
>> http://lists.ensembl.org/mailman/listinfo/dev
>> 
>> Ensembl Blog: 
>> http://www.ensembl.info/
> 
> -- 
> Javier Herrero, PhD
> Ensembl Coordinator and Ensembl Compara Project Leader
> European Bioinformatics Institute (EMBL-EBI)
> Wellcome Trust Genome Campus, Hinxton
> Cambridge - CB10 1SD - UK
> 
> _______________________________________________
> Dev mailing list    Dev at ensembl.org
> List admin (including subscribe/unsubscribe): http://lists.ensembl.org/mailman/listinfo/dev
> Ensembl Blog: http://www.ensembl.info/

---
William Spooner           http://eaglegenomics.com
M:07779-663045 E:william.spooner at eaglegenomics.com 





More information about the Dev mailing list