| WWW-Search-DrugBank documentation | Contained in the WWW-Search-DrugBank distribution. |
WWW::Search::DrugBank - Access DrugBank's database of pharmaceuticals
use WWW::Search;
my $search = new WWW::Search('DrugBank');
my @ids = qw/ APRD00109 APRD00189 APRD00849 /;
$search->native_query( \@ids );
while( my $drug = $search->next_result ) {
printf "Generic name: %s\n", $drug->{generic_name};
printf "Melting point: %s\n", $drug->{melting_point};
printf "CAS registry number: %s\n", $drug->{cas_registry_number};
printf "PubChem compound ID: %s\n", $drug->{pubchem_id}->{compound};
printf "PubChem substance ID: %s\n", $drug->{pubchem_id}->{substance};
print "\n";
# ... etc.
}
This module provides a programmatic way of scouring DrugBank (http://redpoll.pharmacy.ualberta.ca/drugbank/), the University of Alberta project that maintains a database of a wide range of pharmaceuticals.
If you are unfamiliar with the WWW::Search interface, see the synopsis
for an example of how you might use this module. As its first
argument, the "native_query" method accepts either a DrugBank
accession number or a reference to an array of such numbers. Results
returned by the "next_result" method (named $drug above) are
WWW::SearchResult objects containing data about the target drug. Each
result contains the following fields.
$value = $prot->{drug_target_1_gene_sequence};
Corresponds to the 'Drug Target 1 Gene Sequence' field.
$value = $prot->{drug_target_1_general_function};
Corresponds to the 'Drug Target 1 General Function' field.
$value = $prot->{drug_target_1_locus};
Corresponds to the 'Drug Target 1 Locus' field.
$value = $prot->{drug_target_1_molecular_weight};
Corresponds to the 'Drug Target 1 Molecular Weight' field.
$value = $prot->{drug_target_1_name};
Corresponds to the 'Drug Target 1 Name' field.
$value = $prot->{drug_target_1_number_of_residues};
Corresponds to the 'Drug Target 1 Number of Residues' field.
$value = $prot->{drug_target_1_pdb_id};
Corresponds to the 'Drug Target 1 PDB ID' field.
$value = $prot->{drug_target_1_pathway};
Corresponds to the 'Drug Target 1 Pathway' field.
$value = $prot->{drug_target_1_pfam_domain_function};
Corresponds to the 'Drug Target 1 Pfam Domain Function' field.
$value = $prot->{drug_target_1_protein_sequence};
Corresponds to the 'Drug Target 1 Protein Sequence' field.
$value = $prot->{drug_target_1_reaction};
Corresponds to the 'Drug Target 1 Reaction' field.
$value = $prot->{drug_target_1_references};
Corresponds to the 'Drug Target 1 References' field.
$value = $prot->{drug_target_1_snps};
Corresponds to the 'Drug Target 1 SNPs' field.
$value = $prot->{drug_target_1_signals};
Corresponds to the 'Drug Target 1 Signals' field.
$value = $prot->{drug_target_1_specific_function};
Corresponds to the 'Drug Target 1 Specific Function' field.
$value = $prot->{drug_target_1_swissprot_id};
Corresponds to the 'Drug Target 1 SwissProt ID' field.
$value = $prot->{drug_target_1_synonyms};
Corresponds to the 'Drug Target 1 Synonyms' field.
$value = $prot->{drug_target_1_theoretical_pi};
Corresponds to the 'Drug Target 1 Theoretical pI' field.
$value = $prot->{drug_target_1_transmembrane_regions};
Corresponds to the 'Drug Target 1 Transmembrane Regions' field.
$value = $prot->{drug_target_2_3d_structure_image};
Corresponds to the 'Drug Target 2 3D Structure Image' field.
$value = $prot->{drug_target_2_3d_structure_text};
Corresponds to the 'Drug Target 2 3D Structure Text' field.
$value = $prot->{drug_target_2_cellular_location};
Corresponds to the 'Drug Target 2 Cellular Location' field.
$value = $prot->{drug_target_2_chromosome_location};
Corresponds to the 'Drug Target 2 Chromosome Location' field.
$value = $prot->{drug_target_2_essentiality};
Corresponds to the 'Drug Target 2 Essentiality' field.
$value = $prot->{drug_target_2_go_classification};
Corresponds to the 'Drug Target 2 GO Classification' field.
$value = $prot->{drug_target_2_genbank_id_gene};
Corresponds to the 'Drug Target 2 GenBank ID Gene' field.
$value = $prot->{drug_target_2_genbank_id_protein};
Corresponds to the 'Drug Target 2 GenBank ID Protein' field.
$value = $prot->{drug_target_2_gene_name};
Corresponds to the 'Drug Target 2 Gene Name' field.
$value = $prot->{drug_target_2_gene_sequence};
Corresponds to the 'Drug Target 2 Gene Sequence' field.
$value = $prot->{drug_target_2_general_function};
Corresponds to the 'Drug Target 2 General Function' field.
$value = $prot->{drug_target_2_locus};
Corresponds to the 'Drug Target 2 Locus' field.
$value = $prot->{drug_target_2_molecular_weight};
Corresponds to the 'Drug Target 2 Molecular Weight' field.
$value = $prot->{drug_target_2_name};
Corresponds to the 'Drug Target 2 Name' field.
$value = $prot->{drug_target_2_number_of_residues};
Corresponds to the 'Drug Target 2 Number of Residues' field.
$value = $prot->{drug_target_2_pdb_id};
Corresponds to the 'Drug Target 2 PDB ID' field.
$value = $prot->{drug_target_2_pathway};
Corresponds to the 'Drug Target 2 Pathway' field.
$value = $prot->{drug_target_2_pfam_domain_function};
Corresponds to the 'Drug Target 2 Pfam Domain Function' field.
$value = $prot->{drug_target_2_protein_sequence};
Corresponds to the 'Drug Target 2 Protein Sequence' field.
$value = $prot->{drug_target_2_reaction};
Corresponds to the 'Drug Target 2 Reaction' field.
$value = $prot->{drug_target_2_references};
Corresponds to the 'Drug Target 2 References' field.
$value = $prot->{drug_target_2_snps};
Corresponds to the 'Drug Target 2 SNPs' field.
$value = $prot->{drug_target_2_signals};
Corresponds to the 'Drug Target 2 Signals' field.
$value = $prot->{drug_target_2_specific_function};
Corresponds to the 'Drug Target 2 Specific Function' field.
$value = $prot->{drug_target_2_swissprot_id};
Corresponds to the 'Drug Target 2 SwissProt ID' field.
$value = $prot->{drug_target_2_synonyms};
Corresponds to the 'Drug Target 2 Synonyms' field.
$value = $prot->{drug_target_2_theoretical_pi};
Corresponds to the 'Drug Target 2 Theoretical pI' field.
$value = $prot->{drug_target_2_transmembrane_regions};
Corresponds to the 'Drug Target 2 Transmembrane Regions' field.
$value = $prot->{drug_type};
$value = $prot->{type};
Corresponds to the 'Drug Type' field.
$value = $prot->{fda_label};
Corresponds to the 'FDA Label' field.
$value = $prot->{genbank_id};
Corresponds to the 'GenBank ID' field.
$value = $prot->{generic_name};
$value = $prot->{name};
Corresponds to the 'Generic Name' field.
$value = $prot->{h2o_solubility};
Corresponds to the 'H2O Solubility' field.
$value = $prot->{het_id};
Corresponds to the 'HET ID' field.
$value = $prot->{half_life};
Corresponds to the 'Half Life' field.
$value = $prot->{inchi_identifier};
$value = $prot->{inchi_id};
Corresponds to the 'InChi Identifier' field.
$value = $prot->{indication};
Corresponds to the 'Indication' field.
$value = $prot->{interactions};
Corresponds to the 'Interactions' field.
$value = $prot->{kegg_compound_id};
Corresponds to the 'KEGG Compound ID' field.
$value = $prot->{last_update};
Corresponds to the 'Last Update' field.
$value = $prot->{logp};
$value = $prot->{hydrophobicity};
Corresponds to the 'LogP/Hydrophobicity' field.
$value = $prot->{mol_file_image};
Corresponds to the 'MOL File Image' field.
$value = $prot->{mol_file_text};
Corresponds to the 'MOL File Text' field.
$value = $prot->{mass_spectrum};
Corresponds to the 'Mass Spectrum' field.
$value = $prot->{material_safety_data_sheet};
$value = $prot->{msds};
Corresponds to the 'Material Safety Data Sheet (MSDS)' field.
$value = $prot->{mechanism_of_action};
Corresponds to the 'Mechanism of Action' field.
$value = $prot->{melting_point};
Corresponds to the 'Melting Point' field.
$value = $prot->{molecular_weight};
Corresponds to the 'Molecular Weight' field.
$value = $prot->{nmr_spectrum};
Corresponds to the 'NMR Spectrum' field.
$value = $prot->{organisms_affected};
Corresponds to the 'Organisms Affected' field.
$value = $prot->{pdb_experimental_id};
Corresponds to the 'PDB Experimental ID' field.
$value = $prot->{pdb_file_calculated_image};
Corresponds to the 'PDB File Calculated Image' field.
$value = $prot->{pdb_file_calculated_text};
Corresponds to the 'PDB File Calculated Text' field.
$value = $prot->{pdb_file_experimental_image};
Corresponds to the 'PDB File Experimental Image' field.
$value = $prot->{pdb_file_experimental_text};
Corresponds to the 'PDB File Experimental Text' field.
$value = $prot->{patient_information};
Corresponds to the 'Patient Information' field.
$value = $prot->{pharmgkb_id};
Corresponds to the 'PharmGKB ID' field.
$value = $prot->{pharmacology};
Corresponds to the 'Pharmacology' field.
$value = $prot->{phase_1_metabolizing_enzyme};
Corresponds to the 'Phase 1 Metabolizing Enzyme' field.
$value = $prot->{phase_1_metabolizing_enzyme_sequence};
Corresponds to the 'Phase 1 Metabolizing Enzyme Sequence' field.
$value = $prot->{phase_1_metabolizing_enzyme_swissprot_id};
Corresponds to the 'Phase 1 Metabolizing Enzyme SwissProt ID' field.
$value = $prot->{protein_binding};
$value = $prot->{protein_bound};
Corresponds to the 'Protein Binding' field.
$value = $prot->{pubchem_id};
Corresponds to the 'PubChem ID' field.
$value = $prot->{rxlist_link};
Corresponds to the 'RxList Link' field.
$value = $prot->{sdf_file};
Corresponds to the 'SDF File' field.
$value = $prot->{smiles_string};
Corresponds to the 'Smiles String' field.
$value = $prot->{state};
Corresponds to the 'State' field.
$value = $prot->{swissprot_id};
Corresponds to the 'SwissProt ID' field.
$value = $prot->{synthesis_reference};
Corresponds to the 'Synthesis Reference' field.
$value = $prot->{toxicity};
Corresponds to the 'Toxicity' field.
$value = $prot->{pka};
$value = $prot->{isoelectric_point};
Corresponds to the 'pKa/Isoelectric Point' field.
David Iberri, <diberri at cpan.org>
Please report any bugs or feature requests to
bug-www-drugbank at rt.cpan.org, or through the web interface at
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=WWW-Search-DrugBank.
I will be notified, and then you'll automatically be notified of progress on
your bug as I make changes.
You can find documentation for this module with the perldoc command.
perldoc WWW::Search::DrugBank
You can also look for information at:
http://rt.cpan.org/NoAuth/Bugs.html?Dist=WWW-Search-DrugBank
Copyright 2006 David Iberri, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| WWW-Search-DrugBank documentation | Contained in the WWW-Search-DrugBank distribution. |
package WWW::Search::DrugBank; use base 'WWW::Search'; use warnings; use strict; our $VERSION = '0.03'; use WWW::SearchResult; use XML::LibXML; use HTML::TreeBuilder; use HTML::Entities; use URI;
sub native_setup_search { my( $self, $query ) = @_; my @ids = ref $query eq 'ARRAY' ? @$query : ( $query ); $self->{_ids} = \@ids; $self->{_idx} = 0; $self->user_agent(1); } sub native_retrieve_some { my $self = shift; my $id = $self->{_ids}->[$self->{_idx}++] or return; my $url = $self->_url($id); $self->{_current_url} = $url; my $html = $self->_fetch_data($url) or return; my $parser = new XML::LibXML(); my $doc = $parser->parse_html_string( $html ) or return; my %data = ( ); my $fields = $self->_fields; while( my( $label, $field ) = each %$fields ) { my $value = $self->_field_value($doc, $label); $data{$_} = $value foreach @{ $field->{fields} }; } return undef unless $data{accession_number}; my $hit = new WWW::SearchResult(); $hit->{$_} = $data{$_} for keys %data; $hit->url( $url ); push @{$self->{cache}}, $hit; $self->{_current_url} = undef; return 1; } sub _field_value { my( $self, $doc, $field ) = @_; my $xpath = sprintf '//td[.="%s"]/following-sibling::td[position()=1]', $field; my $node = ($doc->findnodes($xpath))[0]; return undef unless $node; my $value = $node->to_literal; $value = $self->_parse_pubchem_id($node) if $field eq 'PubChem ID'; $value = $self->_parse_synonyms($node) if $field eq 'Brand Names/Synonyms'; $value = $self->_parse_url($node) if $self->_fields->{$field}->{has_url}; $value = $self->_parse_category($node) if $field eq 'Drug Category'; $value = $self->_parse_reference($node) if $field eq 'Drug Reference'; $value = $self->_parse_na($value); return $value; } sub _parse_reference { my( $self, $node ) = @_; return [ map { $self->_parse_url($_) } $node->findnodes('ul/li') ]; } sub _parse_category { my( $self, $node ) = @_; my @cats = $node->findnodes('ul/li'); my %categories = ( categories => [], atc => {} ); my @atc = ( ); foreach my $cat ( @cats ) { if( $cat->to_literal =~ /ATC\:(\w+)/ ) { my $atc_code = $1; my $atc_url = $self->_parse_url($cat); push @atc, { code => $atc_code, url => $atc_url }; } else { push @{ $categories{categories} }, $self->_trim($cat->to_literal); } } $categories{atc} = \@atc; return \%categories; } sub _parse_url { my( $self, $node ) = @_; return URI->new($self->_trim( $node->findvalue('a/@href') ))->abs($self->{_current_url})->as_string; } sub _trim { my( $self, $text ) = @_; $text =~ s/^\s+//s; $text =~ s/\s+$//s; return $text; } sub _parse_synonyms { my( $self, $node ) = @_; my @synonyms = map { $self->_trim($_) } map { $_->to_literal } $node->findnodes('ol/li'); return \@synonyms; } sub _parse_pubchem_id { my( $self, $node ) = @_; my @ids = map { $_->to_literal } $node->findnodes('a'); return { substance => $ids[0], compound => $ids[1] }; } sub _parse_na { my( $self, $value ) = @_; $value = $value ? $self->_trim($value) : ''; return $value eq 'Not Available' ? undef : $value; } sub _fetch_data { my( $self, $url ) = @_; my $res = $self->user_agent->get($url); return unless $res->is_success; my $html = $res->content; my $tree = new HTML::TreeBuilder(); $tree->parse($html); foreach my $node ( $tree->look_down( _tag => '~text' ) ) { my $text = defined $node->attr('text') ? $node->attr('text') : ''; encode_entities($text); $node->attr( text => $text ); } $html = $tree->as_HTML( undef, '', {} ); $tree->delete(); return $html; } sub _url { my( $self, $id ) = @_; return sprintf 'http://www.drugbank.ca/cgi-bin/getCard.cgi?CARD=%s.txt', $id; } sub _fields { { 'Creation Date' => { fields => [ 'creation_date' ], has_url => 0 }, 'Last Update' => { fields => [ 'last_update' ], has_url => 0 }, 'Accession Number' => { fields => [ 'accession_number' ], has_url => 0 }, 'Secondary Accession Number' => { fields => ['accession_number', 'secondary_accession_number' ], has_url => 0 }, 'Primary Accession Number' => { fields => [ 'accession_number', 'primary_accession_number' ], has_url => 0 }, 'Name' => { fields => [ 'generic_name', 'name' ], has_url => 0 }, 'Brand Names/Synonyms' => { fields => [ 'brand_names', 'synonyms' ], has_url => 0 }, 'Brand Name Mixtures' => { fields => [ 'brand_name_mixtures' ], has_url => 0 }, 'Chemical IUPAC Name' => { fields => [ 'chemical_iupac_name', 'iupac_name' ], has_url => 0 }, 'Chemical Formula' => { fields => [ 'chemical_formula', 'formula' ], has_url => 0 }, 'Chemical Structure' => { fields => [ 'chemical_structure', 'structure' ], has_url => 0 }, 'CAS Registry Number' => { fields => [ 'cas_registry_number', 'cas_id' ], has_url => 0 }, 'InChi Identifier' => { fields => [ 'inchi_identifier', 'inchi_id' ], has_url => 0 }, 'KEGG Compound ID' => { fields => [ 'kegg_compound_id' ], has_url => 0 }, 'PubChem ID' => { fields => [ 'pubchem_id' ], has_url => 0 }, 'ChEBI ID' => { fields => [ 'chebi_id' ], has_url => 0 }, 'PharmGKB ID' => { fields => [ 'pharmgkb_id' ], has_url => 0 }, 'HET ID' => { fields => [ 'het_id' ], has_url => 0 }, 'SwissProt ID' => { fields => [ 'swissprot_id' ], has_url => 0 }, 'GenBank ID' => { fields => [ 'genbank_id' ], has_url => 0 }, 'Drug ID Number [DIN]' => { fields => [ 'drug_id_number', 'drug_id', 'din' ], has_url => 0 }, 'RxList Link' => { fields => [ 'rxlist_link' ], has_url => 0 }, 'FDA Label' => { fields => [ 'fda_label' ], has_url => 0 }, 'Material Safety Data Sheet (MSDS)' => { fields => [ 'material_safety_data_sheet', 'msds' ], has_url => 0 }, 'Synthesis Reference' => { fields => [ 'synthesis_reference' ], has_url => 0 }, 'Molecular Weight' => { fields => [ 'molecular_weight' ], has_url => 0 }, 'Melting Point' => { fields => [ 'melting_point' ], has_url => 0 }, 'H2O Solubility' => { fields => [ 'h2o_solubility' ], has_url => 0 }, 'State' => { fields => [ 'state' ], has_url => 0 }, 'LogP/Hydrophobicity' => { fields => [ 'logp', 'hydrophobicity' ], has_url => 0 }, 'pKa/Isoelectric Point' => { fields => [ 'pka', 'isoelectric_point' ], has_url => 0 }, 'NMR Spectrum' => { fields => [ 'nmr_spectrum' ], has_url => 0 }, 'Mass Spectrum' => { fields => [ 'mass_spectrum' ], has_url => 0 }, 'MOL File Image' => { fields => [ 'mol_file_image' ], has_url => 0 }, 'MOL File Text' => { fields => [ 'mol_file_text' ], has_url => 1 }, 'SDF File' => { fields => [ 'sdf_file' ], has_url => 1 }, 'PDB File Calculated Image' => { fields => [ 'pdb_file_calculated_image' ], has_url => 0 }, 'PDB File Calculated Text' => { fields => [ 'pdb_file_calculated_text' ], has_url => 1 }, 'PDB Experimental ID' => { fields => [ 'pdb_experimental_id' ], has_url => 0 }, 'PDB File Experimental Text' => { fields => [ 'pdb_file_experimental_text' ], has_url => 1 }, 'PDB File Experimental Image' => { fields => [ 'pdb_file_experimental_image' ], has_url => 0 }, 'Smiles String' => { fields => [ 'smiles_string' ], has_url => 0 }, 'Drug Type' => { fields => [ 'drug_type', 'type' ], has_url => 0 }, 'Drug Category' => { fields => [ 'drug_category', 'category' ], has_url => 0 }, 'Indication' => { fields => [ 'indication' ], has_url => 0 }, 'Pharmacology' => { fields => [ 'pharmacology' ], has_url => 0 }, 'Mechanism of Action' => { fields => [ 'mechanism_of_action' ], has_url => 0 }, 'Absorption' => { fields => [ 'absorption' ], has_url => 0 }, 'Toxicity' => { fields => [ 'toxicity' ], has_url => 0 }, 'Protein Binding' => { fields => [ 'protein_binding', 'protein_bound' ], has_url => 0 }, 'Biotransformation' => { fields => [ 'biotransformation' ], has_url => 0 }, 'Half Life' => { fields => [ 'half_life' ], has_url => 0 }, 'Dosage Forms' => { fields => [ 'dosage_forms' ], has_url => 0 }, 'Patient Information' => { fields => [ 'patient_information' ], has_url => 1 }, 'Interactions' => { fields => [ 'interactions' ], has_url => 1 }, 'Contraindications' => { fields => [ 'contraindications' ], has_url => 1 }, 'Drug Reference' => { fields => [ 'drug_reference' ], has_url => 0 }, 'Organisms Affected' => { fields => [ 'organisms_affected' ], has_url => 0 }, 'Phase 1 Metabolizing Enzyme' => { fields => [ 'phase_1_metabolizing_enzyme' ], has_url => 0 }, 'Phase 1 Metabolizing Enzyme Sequence' => { fields => [ 'phase_1_metabolizing_enzyme_sequence' ], has_url => 0 }, 'Phase 1 Metabolizing Enzyme SwissProt ID' => { fields => [ 'phase_1_metabolizing_enzyme_swissprot_id' ], has_url => 0 }, 'Drug Target 1 Name' => { fields => [ 'drug_target_1_name' ], has_url => 0 }, 'Drug Target 1 Gene Name' => { fields => [ 'drug_target_1_gene_name' ], has_url => 0 }, 'Drug Target 1 Synonyms' => { fields => [ 'drug_target_1_synonyms' ], has_url => 0 }, 'Drug Target 1 Protein Sequence' => { fields => [ 'drug_target_1_protein_sequence' ], has_url => 0 }, 'Drug Target 1 Number of Residues' => { fields => [ 'drug_target_1_number_of_residues' ], has_url => 0 }, 'Drug Target 1 Molecular Weight' => { fields => [ 'drug_target_1_molecular_weight' ], has_url => 0 }, 'Drug Target 1 Theoretical pI' => { fields => [ 'drug_target_1_theoretical_pi' ], has_url => 0 }, 'Drug Target 1 GO Classification' => { fields => [ 'drug_target_1_go_classification' ], has_url => 0 }, 'Drug Target 1 General Function' => { fields => [ 'drug_target_1_general_function' ], has_url => 0 }, 'Drug Target 1 Specific Function' => { fields => [ 'drug_target_1_specific_function' ], has_url => 0 }, 'Drug Target 1 Pathway' => { fields => [ 'drug_target_1_pathway' ], has_url => 0 }, 'Drug Target 1 Reaction' => { fields => [ 'drug_target_1_reaction' ], has_url => 0 }, 'Drug Target 1 Pfam Domain Function' => { fields => [ 'drug_target_1_pfam_domain_function' ], has_url => 0 }, 'Drug Target 1 Signals' => { fields => [ 'drug_target_1_signals' ], has_url => 0 }, 'Drug Target 1 Transmembrane Regions' => { fields => [ 'drug_target_1_transmembrane_regions' ], has_url => 0 }, 'Drug Target 1 Essentiality' => { fields => [ 'drug_target_1_essentiality' ], has_url => 0 }, 'Drug Target 1 GenBank ID Protein' => { fields => [ 'drug_target_1_genbank_id_protein' ], has_url => 0 }, 'Drug Target 1 SwissProt ID' => { fields => [ 'drug_target_1_swissprot_id' ], has_url => 0 }, 'Drug Target 1 PDB ID' => { fields => [ 'drug_target_1_pdb_id' ], has_url => 0 }, 'Drug Target 1 3D Structure Text' => { fields => [ 'drug_target_1_3d_structure_text' ], has_url => 0 }, 'Drug Target 1 3D Structure Image' => { fields => [ 'drug_target_1_3d_structure_image' ], has_url => 0 }, 'Drug Target 1 Cellular Location' => { fields => [ 'drug_target_1_cellular_location' ], has_url => 0 }, 'Drug Target 1 Gene Sequence' => { fields => [ 'drug_target_1_gene_sequence' ], has_url => 0 }, 'Drug Target 1 GenBank ID Gene' => { fields => [ 'drug_target_1_genbank_id_gene' ], has_url => 0 }, 'Drug Target 1 Chromosome Location' => { fields => [ 'drug_target_1_chromosome_location' ], has_url => 0 }, 'Drug Target 1 Locus' => { fields => [ 'drug_target_1_locus' ], has_url => 0 }, 'Drug Target 1 SNPs' => { fields => [ 'drug_target_1_snps' ], has_url => 0 }, 'Drug Target 1 References' => { fields => [ 'drug_target_1_references' ], has_url => 0 }, 'Drug Target 2 Name' => { fields => [ 'drug_target_2_name' ], has_url => 0 }, 'Drug Target 2 Gene Name' => { fields => [ 'drug_target_2_gene_name' ], has_url => 0 }, 'Drug Target 2 Synonyms' => { fields => [ 'drug_target_2_synonyms' ], has_url => 0 }, 'Drug Target 2 Protein Sequence' => { fields => [ 'drug_target_2_protein_sequence' ], has_url => 0 }, 'Drug Target 2 Number of Residues' => { fields => [ 'drug_target_2_number_of_residues' ], has_url => 0 }, 'Drug Target 2 Molecular Weight' => { fields => [ 'drug_target_2_molecular_weight' ], has_url => 0 }, 'Drug Target 2 Theoretical pI' => { fields => [ 'drug_target_2_theoretical_pi' ], has_url => 0 }, 'Drug Target 2 GO Classification' => { fields => [ 'drug_target_2_go_classification' ], has_url => 0 }, 'Drug Target 2 General Function' => { fields => [ 'drug_target_2_general_function' ], has_url => 0 }, 'Drug Target 2 Specific Function' => { fields => [ 'drug_target_2_specific_function' ], has_url => 0 }, 'Drug Target 2 Pathway' => { fields => [ 'drug_target_2_pathway' ], has_url => 0 }, 'Drug Target 2 Reaction' => { fields => [ 'drug_target_2_reaction' ], has_url => 0 }, 'Drug Target 2 Pfam Domain Function' => { fields => [ 'drug_target_2_pfam_domain_function' ], has_url => 0 }, 'Drug Target 2 Signals' => { fields => [ 'drug_target_2_signals' ], has_url => 0 }, 'Drug Target 2 Transmembrane Regions' => { fields => [ 'drug_target_2_transmembrane_regions' ], has_url => 0 }, 'Drug Target 2 Essentiality' => { fields => [ 'drug_target_2_essentiality' ], has_url => 0 }, 'Drug Target 2 GenBank ID Protein' => { fields => [ 'drug_target_2_genbank_id_protein' ], has_url => 0 }, 'Drug Target 2 SwissProt ID' => { fields => [ 'drug_target_2_swissprot_id' ], has_url => 0 }, 'Drug Target 2 PDB ID' => { fields => [ 'drug_target_2_pdb_id' ], has_url => 0 }, 'Drug Target 2 3D Structure Text' => { fields => [ 'drug_target_2_3d_structure_text' ], has_url => 0 }, 'Drug Target 2 3D Structure Image' => { fields => [ 'drug_target_2_3d_structure_image' ], has_url => 0 }, 'Drug Target 2 Cellular Location' => { fields => [ 'drug_target_2_cellular_location' ], has_url => 0 }, 'Drug Target 2 Gene Sequence' => { fields => [ 'drug_target_2_gene_sequence' ], has_url => 0 }, 'Drug Target 2 GenBank ID Gene' => { fields => [ 'drug_target_2_genbank_id_gene' ], has_url => 0 }, 'Drug Target 2 Chromosome Location' => { fields => [ 'drug_target_2_chromosome_location' ], has_url => 0 }, 'Drug Target 2 Locus' => { fields => [ 'drug_target_2_locus' ], has_url => 0 }, 'Drug Target 2 SNPs' => { fields => [ 'drug_target_2_snps' ], has_url => 0 }, 'Drug Target 2 References' => { fields => [ 'drug_target_2_references' ], has_url => 0 }, } }
1;