bio-chembl 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +19 -6
- data/VERSION +1 -1
- data/bio-chembl.gemspec +2 -3
- data/lib/bio-chembl/assay.rb +34 -17
- data/lib/bio-chembl/bioactivity.rb +53 -23
- data/lib/bio-chembl/chembl.rb +5 -1
- data/lib/bio-chembl/chemblid.rb +65 -38
- data/lib/bio-chembl/compound.rb +40 -44
- data/lib/bio-chembl/datamodel.rb +3 -2
- data/lib/bio-chembl/rest_client.rb +77 -22
- data/lib/bio-chembl/target.rb +34 -15
- data/test/test_bio-chembl-chemblid.rb +41 -8
- data/test/test_bio-chembl-chemblid.sh +1 -2
- metadata +4 -5
- data/lib/bio-chembl/rest_api_server.rb +0 -40
    
        data/README.md
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            # bio-chembl
         | 
| 2 2 |  | 
| 3 | 
            -
            [](http://travis-ci.org/nakao/bio-chembl)
         | 
| 4 4 |  | 
| 5 5 | 
             
            [ChEMBL REST Web Service API](https://www.ebi.ac.uk/chembldb/ws) client, parser and container classes. 
         | 
| 6 6 |  | 
| @@ -8,27 +8,32 @@ REST API address | |
| 8 8 |  | 
| 9 9 | 
             
            ```ruby
         | 
| 10 10 | 
             
                BioChEMBL::REST::ChEMBL_URI.status
         | 
| 11 | 
            -
                 #=> " | 
| 11 | 
            +
                 #=> "https://www.ebi.ac.uk/chemblws/status/" 
         | 
| 12 12 | 
             
                BioChEMBL::REST::ChEMBL_URI.compounds("CHEMBL1") 
         | 
| 13 | 
            -
                 #=> " | 
| 13 | 
            +
                 #=> "https://www.ebi.ac.uk/chemblws/compounds/CHEMBL1"
         | 
| 14 14 | 
             
                BioChEMBL::REST::ChEMBL_URI.targets("CHEMBL2477") 
         | 
| 15 | 
            -
                 #=> " | 
| 15 | 
            +
                 #=> "https://www.ebi.ac.uk/chemblws/targets/CHEMBL2477"
         | 
| 16 16 | 
             
                BioChEMBL::REST::ChEMBL_URI.assays("CHEMBL1217643") 
         | 
| 17 | 
            -
                 #=> " | 
| 17 | 
            +
                 #=> "https://www.ebi.ac.uk/chemblws/assays/CHEMBL1217643"
         | 
| 18 18 | 
             
            ```
         | 
| 19 19 |  | 
| 20 20 | 
             
            Get data in XML
         | 
| 21 | 
            +
             | 
| 21 22 | 
             
            ```ruby     
         | 
| 22 23 | 
             
                api = BioChEMBL::REST.new
         | 
| 23 24 | 
             
                compound = api.compounds("CHEMBL1")
         | 
| 24 25 | 
             
                targst   = api.targets("CHEMBL2477")
         | 
| 25 26 | 
             
                assay    = api.assays("CHEMBL1217643")
         | 
| 26 27 | 
             
            ```
         | 
| 28 | 
            +
             | 
| 27 29 | 
             
            Check the server status
         | 
| 30 | 
            +
             | 
| 28 31 | 
             
            ```ruby
         | 
| 29 32 | 
             
               BioChEMBL::REST.up? #=> true/false
         | 
| 30 33 | 
             
            ```   
         | 
| 34 | 
            +
             | 
| 31 35 | 
             
            REST API client, parser and container: BioChEMBL::Compound
         | 
| 36 | 
            +
             | 
| 32 37 | 
             
            ```ruby
         | 
| 33 38 | 
             
                cpd = BioChEMBL::Compound.find("CHEMBL1")
         | 
| 34 39 | 
             
                cpd.chemblId #=> "CHEMBL1"
         | 
| @@ -44,7 +49,9 @@ REST API client, parser and container: BioChEMBL::Compound | |
| 44 49 | 
             
                xml = BioChEMBL::REST.new.compounds("CHEMBL1") 
         | 
| 45 50 | 
             
                cpd = BioChEMBL::Compound.parse_xml(xml)
         | 
| 46 51 | 
             
            ```
         | 
| 52 | 
            +
             | 
| 47 53 | 
             
            REST API client, parser and container: BioChEMBL::Target
         | 
| 54 | 
            +
             | 
| 48 55 | 
             
            ```ruby       
         | 
| 49 56 | 
             
                target = BioChEMBL::Target.find("CHEMBL1785")
         | 
| 50 57 | 
             
                target.chemblId #=> "CHEMBL1785"
         | 
| @@ -62,7 +69,9 @@ REST API client, parser and container: BioChEMBL::Target | |
| 62 69 | 
             
                xml = BioChEMBL::REST.new.targets("CHEMBL1785")     
         | 
| 63 70 | 
             
                target = BioChEMBL::Target.parse_xml(xml)
         | 
| 64 71 | 
             
            ```
         | 
| 72 | 
            +
             | 
| 65 73 | 
             
            REST API client, parser and container: BioChEMBL::Assay
         | 
| 74 | 
            +
             | 
| 66 75 | 
             
            ```ruby   
         | 
| 67 76 | 
             
                assay = BioChEMBL::Assay.find("CHEMBL1217643")
         | 
| 68 77 | 
             
                assay.chemblId #=> "CHEMBL1217643"
         | 
| @@ -76,6 +85,7 @@ REST API client, parser and container: BioChEMBL::Assay | |
| 76 85 | 
             
            ```
         | 
| 77 86 |  | 
| 78 87 | 
             
            Parser and container: BioChEMBL::Bioactivity
         | 
| 88 | 
            +
             | 
| 79 89 | 
             
            ```ruby
         | 
| 80 90 | 
             
                cpd.bioactivities[0].parent_compound.chemblId
         | 
| 81 91 | 
             
                target.bioactivities[0].target.chemblId
         | 
| @@ -85,6 +95,7 @@ Parser and container: BioChEMBL::Bioactivity | |
| 85 95 | 
             
            ```
         | 
| 86 96 |  | 
| 87 97 | 
             
            Getting Started with Ruby
         | 
| 98 | 
            +
             | 
| 88 99 | 
             
            ```ruby
         | 
| 89 100 | 
             
                require 'bio-chembl'
         | 
| 90 101 | 
             
                # 1. Use UniProt accession to get target details
         | 
| @@ -140,6 +151,7 @@ Getting Started with Ruby | |
| 140 151 | 
             
            	  puts "  #{assay.assayDescription}"
         | 
| 141 152 | 
             
            	end
         | 
| 142 153 | 
             
            ```
         | 
| 154 | 
            +
             | 
| 143 155 | 
             
            Note: this software is under active development!
         | 
| 144 156 |  | 
| 145 157 | 
             
            ## Installation
         | 
| @@ -171,8 +183,9 @@ The BioRuby community is on IRC server: irc.freenode.org, channel: #bioruby. | |
| 171 183 | 
             
            * BioChEMBL::Compound#image method to get the image in png.
         | 
| 172 184 | 
             
            * BioChEMBL::Target.find_by_refesq method.
         | 
| 173 185 | 
             
            * JSON output support (parser and address).
         | 
| 174 | 
            -
            * ChEMBL RDF  | 
| 186 | 
            +
            * ChEMBL RDF integration.
         | 
| 175 187 | 
             
            * Local REST API server with local ChEMBL database.
         | 
| 188 | 
            +
            * Connect Bioactivity#reference to external IDs (PubMed ID/DOI/CiteXplore)
         | 
| 176 189 |  | 
| 177 190 | 
             
            ## Cite
         | 
| 178 191 |  | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.1. | 
| 1 | 
            +
            0.1.3
         | 
    
        data/bio-chembl.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{bio-chembl}
         | 
| 8 | 
            -
              s.version = "0.1. | 
| 8 | 
            +
              s.version = "0.1.3"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Mitsuteru Nakao"]
         | 
| 12 | 
            -
              s.date = %q{2012-07- | 
| 12 | 
            +
              s.date = %q{2012-07-23}
         | 
| 13 13 | 
             
              s.description = %q{BioRuby plugin for ChEMBL REST API Client, Parser and Container classes}
         | 
| 14 14 | 
             
              s.email = %q{mitsuteru.nakao@gmail.com}
         | 
| 15 15 | 
             
              s.extra_rdoc_files = [
         | 
| @@ -34,7 +34,6 @@ Gem::Specification.new do |s| | |
| 34 34 | 
             
                "lib/bio-chembl/chemblid.rb",
         | 
| 35 35 | 
             
                "lib/bio-chembl/compound.rb",
         | 
| 36 36 | 
             
                "lib/bio-chembl/datamodel.rb",
         | 
| 37 | 
            -
                "lib/bio-chembl/rest_api_server.rb",
         | 
| 38 37 | 
             
                "lib/bio-chembl/rest_client.rb",
         | 
| 39 38 | 
             
                "lib/bio-chembl/target.rb",
         | 
| 40 39 | 
             
                "test/helper.rb",
         | 
    
        data/lib/bio-chembl/assay.rb
    CHANGED
    
    | @@ -5,21 +5,34 @@ require 'bio-chembl/bioactivity.rb' | |
| 5 5 |  | 
| 6 6 | 
             
            module BioChEMBL
         | 
| 7 7 |  | 
| 8 | 
            -
             | 
| 9 | 
            -
              
         | 
| 10 | 
            -
              # ChEMBL Assay
         | 
| 11 | 
            -
              #
         | 
| 8 | 
            +
              # ChEMBL Assay Data parser and container.
         | 
| 9 | 
            +
              #  
         | 
| 12 10 | 
             
              # Data XML
         | 
| 13 | 
            -
              # <assay>
         | 
| 14 | 
            -
              #  <chemblId>CHEMBL1217643</chemblId>
         | 
| 15 | 
            -
              #  <assayType>B</assayType>
         | 
| 16 | 
            -
              #  <journal>Bioorg. Med. Chem. Lett.</journal>
         | 
| 17 | 
            -
              #  <assayOrganism>Homo sapiens</assayOrganism>
         | 
| 18 | 
            -
              #  <assayStrain>Unspecified</assayStrain>
         | 
| 19 | 
            -
              #  <assayDescription>Inhibition of human hERG</assayDescription>
         | 
| 20 | 
            -
              #  <numBioactivities>1</numBioactivities>
         | 
| 21 | 
            -
              # </assay>
         | 
| 22 11 | 
             
              #
         | 
| 12 | 
            +
              #  <assay>
         | 
| 13 | 
            +
              #    <chemblId>CHEMBL1217643</chemblId>
         | 
| 14 | 
            +
              #    <assayType>B</assayType>
         | 
| 15 | 
            +
              #    <journal>Bioorg. Med. Chem. Lett.</journal>
         | 
| 16 | 
            +
              #    <assayOrganism>Homo sapiens</assayOrganism>
         | 
| 17 | 
            +
              #    <assayStrain>Unspecified</assayStrain>
         | 
| 18 | 
            +
              #    <assayDescription>Inhibition of human hERG</assayDescription>
         | 
| 19 | 
            +
              #    <numBioactivities>1</numBioactivities>
         | 
| 20 | 
            +
              #  </assay>
         | 
| 21 | 
            +
              #
         | 
| 22 | 
            +
              # Usage
         | 
| 23 | 
            +
              #
         | 
| 24 | 
            +
              #   assay = BioChEMBL::Assay.find("CHEMBL1217643")
         | 
| 25 | 
            +
              #   assay.assayType
         | 
| 26 | 
            +
              #   assay.assayOrganism
         | 
| 27 | 
            +
              #   ba = assay.bioactivities
         | 
| 28 | 
            +
              #
         | 
| 29 | 
            +
              #   assay = BioChEMBL::Assay.new("CHEMBL1217643")
         | 
| 30 | 
            +
              #   assay.assayType #=> nil
         | 
| 31 | 
            +
              #   assay.resolve
         | 
| 32 | 
            +
              #   assay.assayType #=> "B"
         | 
| 33 | 
            +
              #
         | 
| 34 | 
            +
              #   xml = BioChEMBL::REST.new.assays("CHEMBL1217643")
         | 
| 35 | 
            +
              #   assay = BioChEMBL::Assay.parse_xml(xml)
         | 
| 23 36 | 
             
              # 
         | 
| 24 37 | 
             
              class Assay
         | 
| 25 38 | 
             
                extend BioChEMBL::DataModel
         | 
| @@ -36,7 +49,7 @@ module BioChEMBL | |
| 36 49 |  | 
| 37 50 | 
             
                set_attr_accessors(ATTRIBUTES)
         | 
| 38 51 |  | 
| 39 | 
            -
                
         | 
| 52 | 
            +
                #  Parse the assay data.
         | 
| 40 53 | 
             
                def self.parse(str)
         | 
| 41 54 | 
             
                  case str
         | 
| 42 55 | 
             
                  when /^</
         | 
| @@ -53,6 +66,7 @@ module BioChEMBL | |
| 53 66 | 
             
                  end  
         | 
| 54 67 | 
             
                end 
         | 
| 55 68 |  | 
| 69 | 
            +
                # Parse the assay data in XML format.
         | 
| 56 70 | 
             
                def self.parse_xml(str)
         | 
| 57 71 | 
             
                  xml = Nokogiri::XML(str)
         | 
| 58 72 | 
             
                  this = new  
         | 
| @@ -60,25 +74,28 @@ module BioChEMBL | |
| 60 74 | 
             
                  this
         | 
| 61 75 | 
             
                end 
         | 
| 62 76 |  | 
| 77 | 
            +
                # Parse the assay data in JSON format.
         | 
| 63 78 | 
             
                def self.parse_json(str)
         | 
| 64 79 | 
             
                  raise NotImplementedError
         | 
| 65 80 | 
             
                end
         | 
| 66 81 |  | 
| 82 | 
            +
                # Parse the assay data in RDF format.
         | 
| 67 83 | 
             
                def self.parse_rdf(str)
         | 
| 68 84 | 
             
                  raise NotImplementedError
         | 
| 69 85 | 
             
                end
         | 
| 70 86 |  | 
| 87 | 
            +
                # Find the assay data by ChEMBL ID via the web service.
         | 
| 71 88 | 
             
                def self.find(chemblId)
         | 
| 72 89 | 
             
                  self.parse_xml(REST.new.assays(chemblId))
         | 
| 73 90 | 
             
                end   
         | 
| 74 91 |  | 
| 75 92 |  | 
| 76 | 
            -
                #  | 
| 93 | 
            +
                # Create a blank Assay instance.
         | 
| 77 94 | 
             
                def initialize(chemblId = nil)
         | 
| 78 95 | 
             
                  @chemblId = chemblId
         | 
| 79 96 | 
             
                end 
         | 
| 80 97 |  | 
| 81 | 
            -
                # Resolve the  | 
| 98 | 
            +
                # Resolve the assay data by given ChEMBL ID
         | 
| 82 99 | 
             
                def resolve
         | 
| 83 100 | 
             
                  resolved = self.class.find(@chemblId)
         | 
| 84 101 | 
             
                  ATTRIBUTES.each do |attr|
         | 
| @@ -86,7 +103,7 @@ module BioChEMBL | |
| 86 103 | 
             
                  end
         | 
| 87 104 | 
             
                end
         | 
| 88 105 |  | 
| 89 | 
            -
                #  | 
| 106 | 
            +
                # Find the Bioactivity data by the assay.
         | 
| 90 107 | 
             
                def bioactivities
         | 
| 91 108 | 
             
                  BioChEMBL::Bioactivity.parse_list_xml(REST.new.assays(@chemblId, 'bioactivities'))
         | 
| 92 109 | 
             
                end
         | 
| @@ -4,32 +4,48 @@ require 'bio-chembl/datamodel.rb' | |
| 4 4 |  | 
| 5 5 | 
             
            module BioChEMBL
         | 
| 6 6 |  | 
| 7 | 
            -
              #  | 
| 7 | 
            +
              # ChEMBL Bioactivity data parser and container.
         | 
| 8 8 | 
             
              #
         | 
| 9 9 | 
             
              # Data XML
         | 
| 10 | 
            -
              # | 
| 11 | 
            -
              # | 
| 12 | 
            -
              # | 
| 13 | 
            -
              # | 
| 14 | 
            -
              # | 
| 15 | 
            -
              # | 
| 16 | 
            -
              # | 
| 17 | 
            -
              # | 
| 18 | 
            -
              # | 
| 19 | 
            -
              # | 
| 20 | 
            -
              # | 
| 21 | 
            -
              # | 
| 22 | 
            -
              # | 
| 23 | 
            -
              # | 
| 24 | 
            -
              # | 
| 25 | 
            -
              # | 
| 26 | 
            -
              # | 
| 10 | 
            +
              #
         | 
| 11 | 
            +
              #  <list>
         | 
| 12 | 
            +
              #    <bioactivity>
         | 
| 13 | 
            +
              #      <parent__cmpd__chemblid>CHEMBL1214402</parent__cmpd__chemblid>
         | 
| 14 | 
            +
              #      <ingredient__cmpd__chemblid>CHEMBL1214402</ingredient__cmpd__chemblid>
         | 
| 15 | 
            +
              #      <target__chemblid>CHEMBL240</target__chemblid>
         | 
| 16 | 
            +
              #      <target__confidence>9</target__confidence>
         | 
| 17 | 
            +
              #      <target__name>HERG</target__name>
         | 
| 18 | 
            +
              #      <reference>Bioorg. Med. Chem. Lett., (2010) 20:15:4359</reference>
         | 
| 19 | 
            +
              #      <name__in__reference>26</name__in__reference>
         | 
| 20 | 
            +
              #      <organism>Homo sapiens</organism>
         | 
| 21 | 
            +
              #      <bioactivity__type>IC50</bioactivity__type>
         | 
| 22 | 
            +
              #      <activity__comment>Unspecified</activity__comment>
         | 
| 23 | 
            +
              #      <operator>=</operator>
         | 
| 24 | 
            +
              #      <units>nM</units>
         | 
| 25 | 
            +
              #      <assay__chemblid>CHEMBL1217643</assay__chemblid>
         | 
| 26 | 
            +
              #      <assay__type>B</assay__type>
         | 
| 27 | 
            +
              #       <assay__description>Inhibition of human hERG</assay__description>
         | 
| 27 28 | 
             
              #     <value>5900</value>
         | 
| 28 | 
            -
              # | 
| 29 | 
            -
              # | 
| 29 | 
            +
              #    </bioactivity>
         | 
| 30 | 
            +
              #  </list>
         | 
| 30 31 | 
             
              #
         | 
| 31 32 | 
             
              # Usage
         | 
| 32 | 
            -
              # | 
| 33 | 
            +
              #
         | 
| 34 | 
            +
              #   bioactivties = BioChEMBL::Compound(chemlbId).bioactivities  
         | 
| 35 | 
            +
              #   bioactivties = BioChEMBL::Target(chemlbId).bioactivities  
         | 
| 36 | 
            +
              #   bioactivties = BioChEMBL::Assay(chemlbId).bioactivities  
         | 
| 37 | 
            +
              #
         | 
| 38 | 
            +
              #   bioactivities.find_all {|x| x.bioactivity__type =~ /IC50/ and x.value.to_i < 100 }.each do |ba|
         | 
| 39 | 
            +
              #     assay = ba.assay
         | 
| 40 | 
            +
              #     puts "Assay CHEMBLID:  #{assay.chemblId},  #{assay.assayDescription}"
         | 
| 41 | 
            +
              #   end
         | 
| 42 | 
            +
              #
         | 
| 43 | 
            +
              #   bioactivity = bioactivities[0]
         | 
| 44 | 
            +
              #   compound = bioactivity.parent_compound
         | 
| 45 | 
            +
              #   compound = bioactivity.compound
         | 
| 46 | 
            +
              #   assay = bioactivity.assay
         | 
| 47 | 
            +
              #   target = bioactivity.target
         | 
| 48 | 
            +
              #  
         | 
| 33 49 | 
             
              class Bioactivity
         | 
| 34 50 | 
             
                extend BioChEMBL::DataModel
         | 
| 35 51 |  | 
| @@ -54,6 +70,7 @@ module BioChEMBL | |
| 54 70 |  | 
| 55 71 | 
             
                set_attr_accessors(ATTRIBUTES)
         | 
| 56 72 |  | 
| 73 | 
            +
                # Parse the Bioactivity data.
         | 
| 57 74 | 
             
                def self.parse(str)
         | 
| 58 75 | 
             
                  case str
         | 
| 59 76 | 
             
                  when /^</
         | 
| @@ -70,6 +87,7 @@ module BioChEMBL | |
| 70 87 | 
             
                  end  
         | 
| 71 88 | 
             
                end 
         | 
| 72 89 |  | 
| 90 | 
            +
                # Parse the Bioactivity data in XML format.
         | 
| 73 91 | 
             
                def self.parse_xml(str)
         | 
| 74 92 | 
             
                  xml = Nokogiri::XML(str)
         | 
| 75 93 | 
             
                  this = new
         | 
| @@ -77,8 +95,8 @@ module BioChEMBL | |
| 77 95 | 
             
                  this
         | 
| 78 96 | 
             
                end
         | 
| 79 97 |  | 
| 80 | 
            -
                # XML
         | 
| 81 | 
            -
                # <list><bioactivity> | 
| 98 | 
            +
                # Parse the Bioactivity data list in XML format.
         | 
| 99 | 
            +
                # data list: <list><bioactivity/></list>
         | 
| 82 100 | 
             
                def self.parse_list_xml(str)
         | 
| 83 101 | 
             
                  xmls = Nokogiri::XML(str)
         | 
| 84 102 | 
             
                  xmls.xpath("/list/bioactivity").map do |cpd|
         | 
| @@ -86,28 +104,40 @@ module BioChEMBL | |
| 86 104 | 
             
                  end
         | 
| 87 105 | 
             
                end
         | 
| 88 106 |  | 
| 107 | 
            +
                # Parse the Bioactivity data in JSON format.
         | 
| 89 108 | 
             
                def self.parse_json(str)
         | 
| 90 109 | 
             
                  raise NotImplementedError
         | 
| 91 110 | 
             
                end
         | 
| 92 111 |  | 
| 112 | 
            +
                # Parse the Bioactivity data in RDF format.
         | 
| 93 113 | 
             
                def self.parse_rdf(str)
         | 
| 94 114 | 
             
                  raise NotImplementedError
         | 
| 95 115 | 
             
                end
         | 
| 96 116 |  | 
| 117 | 
            +
                # Link to the parent Compound
         | 
| 97 118 | 
             
                def parent_compound
         | 
| 98 119 | 
             
                  require 'bio-chembl/compound.rb'
         | 
| 99 120 | 
             
                  BioChEMBL::Compound.find(@parent__cmpd__chemblid)
         | 
| 100 121 | 
             
                end
         | 
| 122 | 
            +
             | 
| 123 | 
            +
                # Link to the Compound
         | 
| 124 | 
            +
                def compound
         | 
| 125 | 
            +
                  require 'bio-chembl/compound.rb'
         | 
| 126 | 
            +
                  BioChEMBL::Compound.find(@ingredient__cmpd__chemblid)
         | 
| 127 | 
            +
                end
         | 
| 101 128 |  | 
| 129 | 
            +
                # Link to the Target
         | 
| 102 130 | 
             
                def target
         | 
| 103 131 | 
             
                  require 'bio-chembl/target.rb'
         | 
| 104 132 | 
             
                  BioChEMBL::Target.find(@target__chemblid)
         | 
| 105 133 | 
             
                end
         | 
| 106 134 |  | 
| 135 | 
            +
                # Link to the Assay
         | 
| 107 136 | 
             
                def assay
         | 
| 108 137 | 
             
                  require 'bio-chembl/assay.rb'
         | 
| 109 138 | 
             
                  BioChEMBL::Assay.find(@assay__chemblid)
         | 
| 110 139 | 
             
                end
         | 
| 140 | 
            +
                
         | 
| 111 141 | 
             
              end
         | 
| 112 142 |  | 
| 113 143 | 
             
            end
         | 
    
        data/lib/bio-chembl/chembl.rb
    CHANGED
    
    | @@ -7,11 +7,15 @@ require 'nokogiri' | |
| 7 7 | 
             
            #
         | 
| 8 8 | 
             
            module BioChEMBL
         | 
| 9 9 |  | 
| 10 | 
            +
              # ChEMBL Website
         | 
| 10 11 | 
             
              def self.website
         | 
| 11 12 | 
             
                "https://www.ebi.ac.uk/chembl/"
         | 
| 12 13 | 
             
              end
         | 
| 13 14 |  | 
| 14 | 
            -
              #  | 
| 15 | 
            +
              # Multi value utility
         | 
| 16 | 
            +
              #
         | 
| 17 | 
            +
              #   BioChEMBL.to_array(aTarget.synonyms) #=> []
         | 
| 18 | 
            +
              #
         | 
| 15 19 | 
             
              def self.to_array(str)
         | 
| 16 20 | 
             
                str.to_s.split('; ')
         | 
| 17 21 | 
             
              end
         | 
    
        data/lib/bio-chembl/chemblid.rb
    CHANGED
    
    | @@ -9,89 +9,116 @@ require 'nokogiri' | |
| 9 9 |  | 
| 10 10 | 
             
            module BioChEMBL
         | 
| 11 11 |  | 
| 12 | 
            -
              # ChEMBL ID
         | 
| 12 | 
            +
              # ChEMBL ID utility String
         | 
| 13 13 | 
             
              #
         | 
| 14 | 
            -
              #  | 
| 14 | 
            +
              # Format
         | 
| 15 15 | 
             
              #
         | 
| 16 | 
            -
              # | 
| 17 | 
            -
              # | 
| 18 | 
            -
              #  | 
| 16 | 
            +
              #   /^CHEMBL\d+$/
         | 
| 17 | 
            +
              #
         | 
| 18 | 
            +
              # Usage
         | 
| 19 | 
            +
              #
         | 
| 20 | 
            +
              #   chemblId = BioChEMBL::ChEMBLID.new("CHEMBL1")
         | 
| 21 | 
            +
              #   chemblId.is_compound? #=> true
         | 
| 22 | 
            +
              #   chemblId.is_target?   #=> false
         | 
| 23 | 
            +
              #   compound = chemblId.resolve
         | 
| 24 | 
            +
              #
         | 
| 25 | 
            +
              #   BioChEMBL::ChEMBLID.validate("CHEMBL1")
         | 
| 19 26 | 
             
              #
         | 
| 20 27 | 
             
              class ChEMBLID < String
         | 
| 21 28 |  | 
| 22 29 | 
             
                attr_accessor :data_type
         | 
| 23 30 |  | 
| 24 | 
            -
                 | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 31 | 
            +
                
         | 
| 32 | 
            +
                # Checking the format of the ChEMBL ID
         | 
| 33 | 
            +
                def self.valid_format?(str)
         | 
| 34 | 
            +
                  begin
         | 
| 35 | 
            +
                    self.new(str)
         | 
| 36 | 
            +
                    true
         | 
| 37 | 
            +
                  rescue Exception
         | 
| 38 | 
            +
                    false
         | 
| 27 39 | 
             
                  end
         | 
| 28 40 | 
             
                end
         | 
| 29 | 
            -
             | 
| 41 | 
            +
                
         | 
| 42 | 
            +
                # ChEMBL ID Validater
         | 
| 43 | 
            +
                def validate_chemblId(str)
         | 
| 44 | 
            +
                  if str =~ /^CHEMBL\d+$/
         | 
| 45 | 
            +
                    true
         | 
| 46 | 
            +
                  else
         | 
| 47 | 
            +
                    raise Exception, "Invalid ChEMBL ID, '#{str}'"
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
                end  
         | 
| 50 | 
            +
                private :validate_chemblId
         | 
| 51 | 
            +
                  
         | 
| 30 52 | 
             
                def initialize(str)
         | 
| 31 53 | 
             
                  @data_type = nil
         | 
| 32 | 
            -
                   | 
| 54 | 
            +
                  validate_chemblId(str)
         | 
| 33 55 | 
             
                  super(str)
         | 
| 34 56 | 
             
                end
         | 
| 35 57 |  | 
| 36 | 
            -
             | 
| 58 | 
            +
                # Get the data of the ChEMBL ID (Slow)
         | 
| 37 59 | 
             
                def resolve
         | 
| 38 | 
            -
                   | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
                    Assay.find(self.to_s)
         | 
| 60 | 
            +
                  if @data_type    == Compound
         | 
| 61 | 
            +
                    return Compound.find(self.to_s)
         | 
| 62 | 
            +
                  elsif @data_type == Target
         | 
| 63 | 
            +
                    return Target.find(self.to_s)
         | 
| 64 | 
            +
                  elsif @data_type == Assay
         | 
| 65 | 
            +
                    return Assay.find(self.to_s)
         | 
| 45 66 | 
             
                  else
         | 
| 46 | 
            -
                     | 
| 47 | 
            -
             | 
| 48 | 
            -
                     | 
| 49 | 
            -
                    end | 
| 50 | 
            -
                     | 
| 51 | 
            -
                       | 
| 52 | 
            -
                     | 
| 53 | 
            -
             | 
| 54 | 
            -
                    begin
         | 
| 55 | 
            -
                      Assay.find(self.to_s)
         | 
| 56 | 
            -
                    rescue
         | 
| 67 | 
            +
                    if    is_compound?
         | 
| 68 | 
            +
                    elsif is_target?
         | 
| 69 | 
            +
                    elsif is_assay?
         | 
| 70 | 
            +
                    end
         | 
| 71 | 
            +
                    if @data_type == nil
         | 
| 72 | 
            +
                      raise ArgumentError, "This ChEMBL ID is not exist, #{self.to_s}"
         | 
| 73 | 
            +
                    else
         | 
| 74 | 
            +
                      resolve
         | 
| 57 75 | 
             
                    end 
         | 
| 58 76 | 
             
                  end
         | 
| 59 77 | 
             
                end
         | 
| 60 78 |  | 
| 79 | 
            +
                
         | 
| 80 | 
            +
                # Is the ChEMBL ID of Compound ?
         | 
| 61 81 | 
             
                def is_compound?
         | 
| 62 82 | 
             
                  if @data_type == Compound
         | 
| 63 83 | 
             
                    return true
         | 
| 64 84 | 
             
                  else
         | 
| 65 | 
            -
                     | 
| 85 | 
            +
                    begin
         | 
| 86 | 
            +
                      Compound.find(self)
         | 
| 66 87 | 
             
                      @data_type = Compound
         | 
| 67 88 | 
             
                      return true
         | 
| 68 | 
            -
                     | 
| 89 | 
            +
                    rescue Exception
         | 
| 69 90 | 
             
                      return false  
         | 
| 70 91 | 
             
                    end 
         | 
| 71 92 | 
             
                  end
         | 
| 72 93 | 
             
                end
         | 
| 73 | 
            -
             | 
| 94 | 
            +
             | 
| 95 | 
            +
             | 
| 96 | 
            +
                # Is the ChEMBL ID of Target ?
         | 
| 74 97 | 
             
                def is_target?
         | 
| 75 | 
            -
                  if @data_type ==  | 
| 98 | 
            +
                  if @data_type == Target
         | 
| 76 99 | 
             
                    return true
         | 
| 77 100 | 
             
                  else
         | 
| 78 | 
            -
                     | 
| 79 | 
            -
                       | 
| 101 | 
            +
                    begin
         | 
| 102 | 
            +
                      Target.find(self)
         | 
| 103 | 
            +
                      @data_type = Target
         | 
| 80 104 | 
             
                      return true
         | 
| 81 | 
            -
                     | 
| 105 | 
            +
                    rescue Exception
         | 
| 82 106 | 
             
                      return false  
         | 
| 83 107 | 
             
                    end 
         | 
| 84 108 | 
             
                  end    
         | 
| 85 109 | 
             
                end
         | 
| 86 110 |  | 
| 111 | 
            +
                
         | 
| 112 | 
            +
                # Is the ChEMBL ID of Assay ?
         | 
| 87 113 | 
             
                def is_assay?
         | 
| 88 114 | 
             
                  if @data_type == Assay
         | 
| 89 115 | 
             
                    return true
         | 
| 90 116 | 
             
                  else
         | 
| 91 | 
            -
                     | 
| 117 | 
            +
                    begin
         | 
| 118 | 
            +
                      Assay.find(self)
         | 
| 92 119 | 
             
                      @data_type = Assay
         | 
| 93 120 | 
             
                      return true
         | 
| 94 | 
            -
                     | 
| 121 | 
            +
                    rescue Exception
         | 
| 95 122 | 
             
                      return false  
         | 
| 96 123 | 
             
                    end 
         | 
| 97 124 | 
             
                  end   
         | 
    
        data/lib/bio-chembl/compound.rb
    CHANGED
    
    | @@ -5,32 +5,35 @@ module BioChEMBL | |
| 5 5 |  | 
| 6 6 | 
             
              # ChEMBL Compound Data Container and Parser
         | 
| 7 7 | 
             
              #
         | 
| 8 | 
            -
              # XML Data | 
| 9 | 
            -
              # | 
| 10 | 
            -
              #  < | 
| 11 | 
            -
              # | 
| 12 | 
            -
              # | 
| 13 | 
            -
              # | 
| 14 | 
            -
              # | 
| 15 | 
            -
              # | 
| 16 | 
            -
              # | 
| 17 | 
            -
              # | 
| 18 | 
            -
              # | 
| 19 | 
            -
              # | 
| 20 | 
            -
              # | 
| 21 | 
            -
              # | 
| 22 | 
            -
              # | 
| 23 | 
            -
              # | 
| 8 | 
            +
              # XML Data
         | 
| 9 | 
            +
              #
         | 
| 10 | 
            +
              #  <compound>
         | 
| 11 | 
            +
              #    <chemblId>CHEMBL1</chemblId>
         | 
| 12 | 
            +
              #    <knownDrug>No</knownDrug>
         | 
| 13 | 
            +
              #    <medChemFriendly>Yes</medChemFriendly>
         | 
| 14 | 
            +
              #    <passesRuleOfThree>No</passesRuleOfThree>
         | 
| 15 | 
            +
              #    <molecularFormula>C32H32O8</molecularFormula>
         | 
| 16 | 
            +
              #    <smiles>COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56</smiles>
         | 
| 17 | 
            +
              #    <stdInChiKey>GHBOEFUAGSHXPO-XZOTUCIWSA-N</stdInChiKey>
         | 
| 18 | 
            +
              #    <numRo5Violations>1</numRo5Violations>
         | 
| 19 | 
            +
              #    <rotatableBonds>2</rotatableBonds>
         | 
| 20 | 
            +
              #    <molecularWeight>544.59167</molecularWeight>
         | 
| 21 | 
            +
              #    <alogp>3.627</alogp>
         | 
| 22 | 
            +
              #    <acdLogp>7.669</acdLogp>
         | 
| 23 | 
            +
              #    <acdLogd>7.669</acdLogd>
         | 
| 24 | 
            +
              #  </compound>
         | 
| 24 25 | 
             
              #
         | 
| 25 26 | 
             
              # Usage
         | 
| 26 | 
            -
              # ```cpd = BioChEMBL::Compound.find("CHEMBL1")
         | 
| 27 | 
            -
              #    cpd.chemblId #=> "CHEMLB1"
         | 
| 28 | 
            -
              #    cpd.smiles
         | 
| 29 27 | 
             
              #
         | 
| 30 | 
            -
              # | 
| 28 | 
            +
              #  compound = BioChEMBL::Compound.find("CHEMBL1")
         | 
| 29 | 
            +
              #  compound.chemblId #=> "CHEMLB1"
         | 
| 30 | 
            +
              #  compound.smiles
         | 
| 31 | 
            +
              #
         | 
| 32 | 
            +
              #  compounds = BioChEMBL::Compound.find_all_by_smiles(compound.smiles)
         | 
| 31 33 | 
             
              #
         | 
| 32 | 
            -
              # | 
| 33 | 
            -
              #  | 
| 34 | 
            +
              #  xml = BioChEMBL::REST.new.compounds("CHEMBL1")
         | 
| 35 | 
            +
              #  compound = BioChEMBL::Compound.parse_xml(xml)
         | 
| 36 | 
            +
              # 
         | 
| 34 37 | 
             
              class Compound
         | 
| 35 38 | 
             
                extend BioChEMBL::DataModel
         | 
| 36 39 |  | 
| @@ -56,8 +59,7 @@ module BioChEMBL | |
| 56 59 | 
             
                # Values of all attributes are in String.
         | 
| 57 60 | 
             
                set_attr_accessors(ATTRIBUTES)
         | 
| 58 61 |  | 
| 59 | 
            -
                #
         | 
| 60 | 
            -
                # BioChEMBL::Compound.parse(doc)
         | 
| 62 | 
            +
                # Parse the Compound data
         | 
| 61 63 | 
             
                def self.parse(str)
         | 
| 62 64 | 
             
                  case str
         | 
| 63 65 | 
             
                  when /^</
         | 
| @@ -74,8 +76,7 @@ module BioChEMBL | |
| 74 76 | 
             
                  end    
         | 
| 75 77 | 
             
                end 
         | 
| 76 78 |  | 
| 77 | 
            -
                # XML 
         | 
| 78 | 
            -
                # <compound>
         | 
| 79 | 
            +
                # Parse the Compound data in XML format.
         | 
| 79 80 | 
             
                def self.parse_xml(str)
         | 
| 80 81 | 
             
                  xml = Nokogiri::XML(str)
         | 
| 81 82 | 
             
                  this = new  
         | 
| @@ -83,8 +84,8 @@ module BioChEMBL | |
| 83 84 | 
             
                  this
         | 
| 84 85 | 
             
                end 
         | 
| 85 86 |  | 
| 86 | 
            -
                # XML
         | 
| 87 | 
            -
                # <list><compound> | 
| 87 | 
            +
                # Parse the Compound data list in XML format.
         | 
| 88 | 
            +
                # data list: <list><compound/></list>
         | 
| 88 89 | 
             
                def self.parse_list_xml(str)
         | 
| 89 90 | 
             
                  xmls = Nokogiri::XML(str)
         | 
| 90 91 | 
             
                  xmls.xpath("/list/compound").map do |cpd|
         | 
| @@ -92,66 +93,61 @@ module BioChEMBL | |
| 92 93 | 
             
                  end
         | 
| 93 94 | 
             
                end 
         | 
| 94 95 |  | 
| 95 | 
            -
                # JSON
         | 
| 96 | 
            +
                # Parse the Compound data in JSON format.
         | 
| 96 97 | 
             
                def self.parse_json(str)
         | 
| 97 98 | 
             
                  raise NotImplementedError
         | 
| 98 99 | 
             
                end
         | 
| 99 100 |  | 
| 100 | 
            -
                # RDF
         | 
| 101 | 
            +
                # Parse the Compound data in RDF format.
         | 
| 101 102 | 
             
                def self.parse_rdf(str)
         | 
| 102 103 | 
             
                  raise NotImplementedError
         | 
| 103 104 | 
             
                end   
         | 
| 104 105 |  | 
| 105 106 |  | 
| 106 | 
            -
                # Compound | 
| 107 | 
            -
                # Find a compound data by a ChEMBL ID
         | 
| 107 | 
            +
                # Find the Compound data by the ChEMBL ID
         | 
| 108 108 | 
             
                def self.find(chemblId)
         | 
| 109 109 | 
             
                  self.parse_xml(REST.new.compounds(chemblId))
         | 
| 110 110 | 
             
                end 
         | 
| 111 111 |  | 
| 112 | 
            -
                # Compound | 
| 113 | 
            -
                # Find a compound data by a SMILES
         | 
| 112 | 
            +
                # Find the Compound data (first one) by the SMILES
         | 
| 114 113 | 
             
                def self.find_by_smiles(smiles)
         | 
| 115 114 | 
             
                  self.find_all_by_smiles(smiles).first
         | 
| 116 115 | 
             
                end 
         | 
| 117 116 |  | 
| 118 | 
            -
                #  | 
| 119 | 
            -
                # Find compounds by a SMILES.
         | 
| 117 | 
            +
                # Find the Compounds by the SMILES.
         | 
| 120 118 | 
             
                def self.find_all_by_smiles(smiles)
         | 
| 121 119 | 
             
                  self.parse_list_xml(REST.new.compounds_smiles(smiles))
         | 
| 122 120 | 
             
                end 
         | 
| 123 121 |  | 
| 124 | 
            -
                # Compound | 
| 125 | 
            -
                # Find a compound data by a StdInChiKey
         | 
| 122 | 
            +
                # Find the Compound data by the StdInChiKey
         | 
| 126 123 | 
             
                def self.find_by_stdinchikey(stdinchikey)
         | 
| 127 124 | 
             
                  self.parse_xml(REST.new.compounds_stdinchikey(stdinchikey))
         | 
| 128 125 | 
             
                end 
         | 
| 129 126 |  | 
| 130 | 
            -
                #  | 
| 131 | 
            -
                # Substructure Search by a SMILES
         | 
| 127 | 
            +
                # Find the Compounds with Substructure Search by the SMILES
         | 
| 132 128 | 
             
                def self.find_all_by_substructure(smiles)
         | 
| 133 129 | 
             
                  self.parse_list_xml(REST.new.compounds_substructure(smiles))
         | 
| 134 130 | 
             
                end 
         | 
| 135 131 |  | 
| 136 | 
            -
                #  | 
| 137 | 
            -
                #  | 
| 132 | 
            +
                # Find the Compounds by the SMILES with similarity
         | 
| 133 | 
            +
                # 70% similarity:  smiles + "/70"
         | 
| 138 134 | 
             
                def self.find_all_by_similarity(smiles_with_similarity)
         | 
| 139 135 | 
             
                  self.parse_list_xml(REST.new.compounds_similarity(smiles_with_similarity))
         | 
| 140 136 | 
             
                end 
         | 
| 141 137 |  | 
| 142 138 |  | 
| 143 | 
            -
                # new
         | 
| 144 139 | 
             
                def initialize(chemblId = nil)
         | 
| 145 140 | 
             
                  @chemblId = chemblId
         | 
| 146 141 | 
             
                end 
         | 
| 147 142 |  | 
| 148 | 
            -
                # Resolve the  | 
| 143 | 
            +
                # Resolve the Compound data by the ChEMBL ID
         | 
| 149 144 | 
             
                def resolve
         | 
| 150 145 | 
             
                  resolved = self.class.find(@chemblId)
         | 
| 151 146 | 
             
                  ATTRIBUTES.each do |attr|
         | 
| 152 147 | 
             
                    eval "@#{attr} = resolved.#{attr}"
         | 
| 153 148 | 
             
                  end
         | 
| 154 149 | 
             
                end
         | 
| 150 | 
            +
                
         | 
| 155 151 | 
             
              end
         | 
| 156 152 |  | 
| 157 153 | 
             
            end
         | 
    
        data/lib/bio-chembl/datamodel.rb
    CHANGED
    
    | @@ -3,17 +3,18 @@ require 'nokogiri' | |
| 3 3 |  | 
| 4 4 | 
             
            module BioChEMBL
         | 
| 5 5 |  | 
| 6 | 
            -
              #  | 
| 6 | 
            +
              # ChEMBL database data common utilities
         | 
| 7 7 | 
             
              #
         | 
| 8 8 | 
             
              module DataModel
         | 
| 9 9 |  | 
| 10 | 
            +
                # Set attr_accessor of ATTRIBUTES
         | 
| 10 11 | 
             
                def set_attr_accessors(attributes)
         | 
| 11 12 | 
             
                  attributes.each do |attr|
         | 
| 12 13 | 
             
                    eval "attr_accessor :#{attr}"
         | 
| 13 14 | 
             
                  end
         | 
| 14 15 | 
             
                end
         | 
| 15 16 |  | 
| 16 | 
            -
               
         | 
| 17 | 
            +
               # Set the values from XML data on the instance variables.
         | 
| 17 18 | 
             
                def set_attr_values(attributes)
         | 
| 18 19 | 
             
                  attributes.map do |attr|
         | 
| 19 20 | 
             
                    "this.#{attr} = xml.xpath('/#{self.to_s.split('::').last.downcase}/#{attr}').text"
         | 
| @@ -11,6 +11,23 @@ require 'bio-chembl/bioactivity.rb' | |
| 11 11 |  | 
| 12 12 | 
             
            module BioChEMBL
         | 
| 13 13 |  | 
| 14 | 
            +
              # ChEMBL REST Web service API Client.
         | 
| 15 | 
            +
              #
         | 
| 16 | 
            +
              # Usage
         | 
| 17 | 
            +
              # 
         | 
| 18 | 
            +
              #  # URI
         | 
| 19 | 
            +
              #  BioChEMBL::REST::ChEMBL_URI.status
         | 
| 20 | 
            +
              #  BioChEMBL::REST::ChEMBL_URI.compounds("CHEMBL1")
         | 
| 21 | 
            +
              #
         | 
| 22 | 
            +
              #  # Low-level client
         | 
| 23 | 
            +
              #  client = BioChEMBL::REST.new
         | 
| 24 | 
            +
              #  client.status
         | 
| 25 | 
            +
              #  client.compounds("CHEMBL1")
         | 
| 26 | 
            +
              #
         | 
| 27 | 
            +
              #  # Check REST API status
         | 
| 28 | 
            +
              #  BioChEMBL::REST.up? #=> true/false
         | 
| 29 | 
            +
              #
         | 
| 30 | 
            +
              #
         | 
| 14 31 | 
             
              class REST
         | 
| 15 32 |  | 
| 16 33 | 
             
                HOST_NAME = "www.ebi.ac.uk"
         | 
| @@ -18,23 +35,31 @@ module BioChEMBL | |
| 18 35 | 
             
                BASE_URI = "https://" + HOST_NAME + "/" + API_ROOT
         | 
| 19 36 |  | 
| 20 37 |  | 
| 21 | 
            -
                #  | 
| 38 | 
            +
                # ChEMBL REST Web Service URI generator
         | 
| 22 39 | 
             
                #
         | 
| 40 | 
            +
                # [ChEMBL Web Services](https://www.ebi.ac.uk/chembldb/ws)
         | 
| 41 | 
            +
                # 
         | 
| 23 42 | 
             
                module ChEMBL_URI
         | 
| 43 | 
            +
             | 
| 24 44 | 
             
                  # 
         | 
| 25 45 | 
             
                  def self.address(path)
         | 
| 26 46 | 
             
                    "#{BASE_URI}/#{path}"
         | 
| 27 47 | 
             
                  end
         | 
| 28 48 |  | 
| 29 49 |  | 
| 30 | 
            -
                  #  | 
| 50 | 
            +
                  # Check API status 
         | 
| 31 51 | 
             
                  def self.status
         | 
| 32 52 | 
             
                    # Example URL: http://www.ebi.ac.uk/chemblws/status/
         | 
| 33 53 | 
             
                    address("status/")
         | 
| 34 54 | 
             
                  end
         | 
| 35 55 |  | 
| 36 | 
            -
                  #  | 
| 37 | 
            -
                  # | 
| 56 | 
            +
                  # Get compound by ChEMBLID
         | 
| 57 | 
            +
                  #   BioChEMBL::REST::ChEMBL_URI.compounds("CHEMBL1")  
         | 
| 58 | 
            +
                  # Get image of a ChEMBL compound by ChEMBLID     
         | 
| 59 | 
            +
                  #   BioChEMBL::REST::ChEMBL_URI.compounds("CHEMBL1", 'image')       
         | 
| 60 | 
            +
                  #   BioChEMBL::REST::ChEMBL_URI.compounds("CHEMBL1", 'image', {'dimensions' => 200})   
         | 
| 61 | 
            +
                  # Get individual compound bioactivities    
         | 
| 62 | 
            +
                  #   BioChEMBL::REST::ChEMBL_URI.compounds("CHEMBL1", 'bioactivities')       
         | 
| 38 63 | 
             
                  def self.compounds(chemblId = nil, arg = nil, params = nil)
         | 
| 39 64 | 
             
                    if chemblId and arg == nil and params == nil 
         | 
| 40 65 | 
             
                    # Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/CHEMBL1
         | 
| @@ -52,28 +77,41 @@ module BioChEMBL | |
| 52 77 | 
             
                      raise Exception, "Undefined address. ID: #{chemblId}, arg: #{arg}, params: #{params.inspect}"
         | 
| 53 78 | 
             
                    end
         | 
| 54 79 | 
             
                  end
         | 
| 55 | 
            -
                   | 
| 80 | 
            +
                  
         | 
| 81 | 
            +
                  # Get compound by Standard InChiKey
         | 
| 82 | 
            +
                  #   BioChEMBL::REST::ChEMBL_URI.compounds_stdinchikey(stdinchikey)
         | 
| 56 83 | 
             
                  def self.compounds_stdinchikey(stdinchikey)
         | 
| 57 84 | 
             
                    # Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/stdinchikey/QFFGVLORLPOAEC-SNVBAGLBSA-N
         | 
| 58 85 | 
             
                    address("compounds/stdinchikey/#{stdinchikey}")
         | 
| 59 86 | 
             
                  end 
         | 
| 60 | 
            -
                   | 
| 87 | 
            +
                  
         | 
| 88 | 
            +
                  # Get list of compounds matching Canonical SMILES
         | 
| 89 | 
            +
                  #  BioChEMBL::REST::ChEMBL_URI.compounds_smiles(smiles)
         | 
| 61 90 | 
             
                  def self.compounds_smiles(smiles)
         | 
| 62 91 | 
             
                    # Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/smiles/COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56
         | 
| 63 92 | 
             
                    address("compounds/smiles/#{smiles}")
         | 
| 64 93 | 
             
                  end
         | 
| 65 | 
            -
                   | 
| 94 | 
            +
                  
         | 
| 95 | 
            +
                  # Get list of compounds containing the substructure represented by a given Canonical SMILES
         | 
| 96 | 
            +
                  #  BioChEMBL::REST::ChEMBL_URI.compounds_substructure(smiles)
         | 
| 66 97 | 
             
                  def self.compounds_substructure(smiles)
         | 
| 67 98 | 
             
                    # Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/substructure/COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56
         | 
| 68 99 | 
             
                    address("compounds/substructure/#{smiles}")
         | 
| 69 100 | 
             
                  end
         | 
| 70 | 
            -
                   | 
| 101 | 
            +
                  
         | 
| 102 | 
            +
                  # Get list of compounds similar to the one represented by a given Canonical SMILES, at a given cutoff percentage
         | 
| 103 | 
            +
                  #  BioChEMBL::REST::ChEMBL_URI.compounds_similarity(smiles + "/" + cutoff)
         | 
| 71 104 | 
             
                  def self.compounds_similarity(smiles)
         | 
| 72 105 | 
             
                    # Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/similarity/COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56/70
         | 
| 73 106 | 
             
                    address("compounds/similarity/#{smiles}")
         | 
| 74 107 | 
             
                  end
         | 
| 75 108 |  | 
| 76 | 
            -
                  #  | 
| 109 | 
            +
                  # Get target by ChEMBLID
         | 
| 110 | 
            +
                  #  BioChEMBL::REST::ChEMBL_URI.targets(chemblId)
         | 
| 111 | 
            +
                  # Get individual target bioactivities
         | 
| 112 | 
            +
                  #  BioChEMBL::REST::ChEMBL_URI.targets(chemblId, 'bioactivities')
         | 
| 113 | 
            +
                  # Get all targets
         | 
| 114 | 
            +
                  #  BioChEMBL::REST::ChEMBL_URI.targets
         | 
| 77 115 | 
             
                  def self.targets(chemblId = nil, arg = nil)
         | 
| 78 116 | 
             
                    if chemblId and arg == nil
         | 
| 79 117 | 
             
                      # Example URL (XML Output): http://www.ebi.ac.uk/chemblws/targets/CHEMBL2477
         | 
| @@ -88,18 +126,25 @@ module BioChEMBL | |
| 88 126 | 
             
                      raise Exception, "Undefined."
         | 
| 89 127 | 
             
                    end
         | 
| 90 128 | 
             
                  end
         | 
| 91 | 
            -
                   | 
| 129 | 
            +
                  
         | 
| 130 | 
            +
                  # Get target by UniProt Accession Identifier
         | 
| 131 | 
            +
                  #  BioChEMBL::REST::ChEMBL_URI.targets_uniprot(uniprot_id)
         | 
| 92 132 | 
             
                  def self.targets_uniprot(uniprot_id)
         | 
| 93 133 | 
             
                    # Example URL (XML Output): http://www.ebi.ac.uk/chemblws/targets/uniprot/Q13936
         | 
| 94 134 | 
             
                    address("targets/uniprot/#{uniprot_id}")
         | 
| 95 135 | 
             
                  end 
         | 
| 96 | 
            -
                   | 
| 136 | 
            +
                  
         | 
| 137 | 
            +
                  # Get target by RefSeq Accession Identifier
         | 
| 138 | 
            +
                  #  BioChEMBL::REST::ChEMBL_URI.targets_refseq(refseq_id)
         | 
| 97 139 | 
             
                  def self.targets_refseq(refseq_id)
         | 
| 98 140 | 
             
                    # Example URL (XML Output): http://www.ebi.ac.uk/chemblws/targets/refseq/NP_001128722
         | 
| 99 141 | 
             
                    address("targets/refseq/#{refseq_id}")
         | 
| 100 142 | 
             
                  end
         | 
| 101 143 |  | 
| 102 | 
            -
                  #  | 
| 144 | 
            +
                  # Get assay by ChEMBLID
         | 
| 145 | 
            +
                  #  BioChEMBL::REST::ChEMBL_URI.assays(chemblId)
         | 
| 146 | 
            +
                  # Get individual assay bioactivities
         | 
| 147 | 
            +
                  #  BioChEMBL::REST::ChEMBL_URI.assays(chemblId, 'bioactivities')
         | 
| 103 148 | 
             
                  def self.assays(chemblId, arg = nil)
         | 
| 104 149 | 
             
                    if chemblId and arg == nil
         | 
| 105 150 | 
             
                      # Example URL (XML Output): http://www.ebi.ac.uk/chemblws/assays/CHEMBL1217643
         | 
| @@ -114,12 +159,12 @@ module BioChEMBL | |
| 114 159 | 
             
                end
         | 
| 115 160 |  | 
| 116 161 |  | 
| 117 | 
            -
                #  | 
| 162 | 
            +
                # The ChEMBL REST Web services website
         | 
| 118 163 | 
             
                def self.website
         | 
| 119 164 | 
             
                  "https://www.ebi.ac.uk/chembldb/index.php/ws"
         | 
| 120 165 | 
             
                end
         | 
| 121 166 |  | 
| 122 | 
            -
                #  | 
| 167 | 
            +
                # Usage
         | 
| 123 168 | 
             
                def self.usage    
         | 
| 124 169 | 
             
                  ["a = Bio::DB::ChEMBL::REST.new",
         | 
| 125 170 | 
             
                   "a.status => https://www.ebi.ac.uk/chembldb/index.php/ws#serviceStatus",
         | 
| @@ -128,7 +173,8 @@ module BioChEMBL | |
| 128 173 | 
             
                   ].join("\n")
         | 
| 129 174 | 
             
                end
         | 
| 130 175 |  | 
| 131 | 
            -
                #  | 
| 176 | 
            +
                # Check the API status
         | 
| 177 | 
            +
                #  BioChEMBL::REST.up? #=> true/false
         | 
| 132 178 | 
             
                def self.up?
         | 
| 133 179 | 
             
                  if new.status == "UP"
         | 
| 134 180 | 
             
                    true
         | 
| @@ -138,7 +184,6 @@ module BioChEMBL | |
| 138 184 | 
             
                end
         | 
| 139 185 |  | 
| 140 186 |  | 
| 141 | 
            -
                # new
         | 
| 142 187 | 
             
                def initialize(uri = BASE_URI)
         | 
| 143 188 | 
             
                  uri = URI.parse(uri) unless uri.kind_of?(URI)
         | 
| 144 189 | 
             
                  @header = {
         | 
| @@ -150,7 +195,7 @@ module BioChEMBL | |
| 150 195 | 
             
                # If true, shows debug information to $stderr.
         | 
| 151 196 | 
             
                attr_accessor :debug
         | 
| 152 197 |  | 
| 153 | 
            -
                # get HTTP GET URL
         | 
| 198 | 
            +
                # get the HTTP GET URL
         | 
| 154 199 | 
             
                def get(url)
         | 
| 155 200 | 
             
                  easy = Curl::Easy.new(url) do |c|
         | 
| 156 201 | 
             
                    @header.each do |k,v|
         | 
| @@ -161,7 +206,7 @@ module BioChEMBL | |
| 161 206 | 
             
                  easy
         | 
| 162 207 | 
             
                end
         | 
| 163 208 |  | 
| 164 | 
            -
                # 
         | 
| 209 | 
            +
                # HTTP responce handling
         | 
| 165 210 | 
             
                def prepare_return_value(response)
         | 
| 166 211 | 
             
                  if @debug then
         | 
| 167 212 | 
             
                    $stderr.puts "ChEMBL: #{response.inspect}"
         | 
| @@ -180,12 +225,12 @@ module BioChEMBL | |
| 180 225 | 
             
                  end
         | 
| 181 226 | 
             
                end
         | 
| 182 227 |  | 
| 183 | 
            -
                #  | 
| 228 | 
            +
                # URI
         | 
| 184 229 | 
             
                def uri
         | 
| 185 230 | 
             
                  ChEMBL_URI
         | 
| 186 231 | 
             
                end
         | 
| 187 232 |  | 
| 188 | 
            -
                #  | 
| 233 | 
            +
                # Address
         | 
| 189 234 | 
             
                def address(path)
         | 
| 190 235 | 
             
                  "#{BASE_URI}/#{path}"
         | 
| 191 236 | 
             
                end
         | 
| @@ -194,6 +239,7 @@ module BioChEMBL | |
| 194 239 |  | 
| 195 240 | 
             
                # API methods
         | 
| 196 241 |  | 
| 242 | 
            +
                # Generic request builder and evaluator
         | 
| 197 243 | 
             
                def get_body(method, args = [])
         | 
| 198 244 | 
             
                  code = case args.size
         | 
| 199 245 | 
             
                  when 0
         | 
| @@ -213,49 +259,58 @@ module BioChEMBL | |
| 213 259 | 
             
                end
         | 
| 214 260 | 
             
                private :get_body
         | 
| 215 261 |  | 
| 216 | 
            -
                # 
         | 
| 262 | 
            +
                # Resolve the calling method name
         | 
| 217 263 | 
             
                def current_method_name
         | 
| 218 264 | 
             
                  caller(1).first.scan(/`(.*)'/)[0][0].to_s
         | 
| 219 265 | 
             
                end 
         | 
| 220 266 | 
             
                private :current_method_name
         | 
| 221 267 |  | 
| 222 | 
            -
                
         | 
| 268 | 
            +
                # Check API status
         | 
| 223 269 | 
             
                def status
         | 
| 224 270 | 
             
                  get_body(current_method_name)
         | 
| 225 271 | 
             
                end
         | 
| 226 272 |  | 
| 273 | 
            +
                # Evaluate Compound methods
         | 
| 227 274 | 
             
                def compounds(chemblId = nil, action = nil, params = nil)
         | 
| 228 275 | 
             
                  get_body(current_method_name, [chemblId, action, params])
         | 
| 229 276 | 
             
                end
         | 
| 230 277 |  | 
| 278 | 
            +
                # Evaluate Compound StdInchiKey method
         | 
| 231 279 | 
             
                def compounds_stdinchikey(stdinchikey)
         | 
| 232 280 | 
             
                  get_body(current_method_name, [stdinchikey])
         | 
| 233 281 | 
             
                end
         | 
| 234 282 |  | 
| 283 | 
            +
                # Evaluate Compound SMILES method
         | 
| 235 284 | 
             
                def compounds_smiles(smiles)
         | 
| 236 285 | 
             
                  get_body(current_method_name, [smiles])
         | 
| 237 286 | 
             
                end
         | 
| 238 287 |  | 
| 288 | 
            +
                # Evaluate Compound SubStructure method
         | 
| 239 289 | 
             
                def compounds_substructure(smiles)
         | 
| 240 290 | 
             
                  get_body(current_method_name, [smiles])
         | 
| 241 291 | 
             
                end
         | 
| 242 292 |  | 
| 293 | 
            +
                # Evaluate Compound Similarity method
         | 
| 243 294 | 
             
                def compounds_similarity(smiles)
         | 
| 244 295 | 
             
                  get_body(current_method_name, [smiles])
         | 
| 245 296 | 
             
                end
         | 
| 246 297 |  | 
| 298 | 
            +
                # Evaluate Target Methods
         | 
| 247 299 | 
             
                def targets(chemblId = nil, action = nil)
         | 
| 248 300 | 
             
                  get_body(current_method_name, [chemblId, action])
         | 
| 249 301 | 
             
                end
         | 
| 250 302 |  | 
| 303 | 
            +
                # Evaluate Target UniProt method
         | 
| 251 304 | 
             
                def targets_uniprot(uniprot_id)
         | 
| 252 305 | 
             
                  get_body(current_method_name, [uniprot_id])
         | 
| 253 306 | 
             
                end
         | 
| 254 307 |  | 
| 308 | 
            +
                # Evaluate Target RefSeq method
         | 
| 255 309 | 
             
                def targets_refseq(refseq_id)
         | 
| 256 310 | 
             
                  get_body(current_method_name, [refseq_id])
         | 
| 257 311 | 
             
                end
         | 
| 258 312 |  | 
| 313 | 
            +
                # Evaluate Assay methods
         | 
| 259 314 | 
             
                def assays(chemblId = nil, action = nil)
         | 
| 260 315 | 
             
                  get_body(current_method_name, [chemblId, action])
         | 
| 261 316 | 
             
                end
         | 
    
        data/lib/bio-chembl/target.rb
    CHANGED
    
    | @@ -4,20 +4,31 @@ require 'bio-chembl/bioactivity.rb' | |
| 4 4 |  | 
| 5 5 | 
             
            module BioChEMBL
         | 
| 6 6 |  | 
| 7 | 
            -
              # ChEMBL Target
         | 
| 7 | 
            +
              # ChEMBL Target parser and container.
         | 
| 8 8 | 
             
              #
         | 
| 9 9 | 
             
              # Data XML
         | 
| 10 | 
            -
              # <target>
         | 
| 11 | 
            -
              #  <chemblId>CHEMBL1785</chemblId>
         | 
| 12 | 
            -
              #  <targetType>PROTEIN</targetType>
         | 
| 13 | 
            -
              #  <preferredName>Endothelin receptor ET-B</preferredName>
         | 
| 14 | 
            -
              #  <proteinAccession>P24530</proteinAccession>
         | 
| 15 | 
            -
              #  <synonyms>Endothelin B receptor; Endothelin receptor non-selective type; ET-B; ET-BR</synonyms>
         | 
| 16 | 
            -
              #  <organism>Homo sapiens</organism>
         | 
| 17 | 
            -
              #  <description>Endothelin B receptor</description>
         | 
| 18 | 
            -
              #  <geneNames>EDNRB; ETRB</geneNames>
         | 
| 19 | 
            -
              # </target>
         | 
| 20 10 | 
             
              #
         | 
| 11 | 
            +
              #  <target>
         | 
| 12 | 
            +
              #    <chemblId>CHEMBL1785</chemblId>
         | 
| 13 | 
            +
              #    <targetType>PROTEIN</targetType>
         | 
| 14 | 
            +
              #    <preferredName>Endothelin receptor ET-B</preferredName>
         | 
| 15 | 
            +
              #    <proteinAccession>P24530</proteinAccession>
         | 
| 16 | 
            +
              #    <synonyms>Endothelin B receptor; Endothelin receptor non-selective type; ET-B; ET-BR</synonyms>
         | 
| 17 | 
            +
              #    <organism>Homo sapiens</organism>
         | 
| 18 | 
            +
              #    <description>Endothelin B receptor</description>
         | 
| 19 | 
            +
              #    <geneNames>EDNRB; ETRB</geneNames>
         | 
| 20 | 
            +
              #  </target>
         | 
| 21 | 
            +
              #
         | 
| 22 | 
            +
              # Usage
         | 
| 23 | 
            +
              # 
         | 
| 24 | 
            +
              #  target = BioChEMBL::Target.find("CHEMBL1785")
         | 
| 25 | 
            +
              #  target.geneNames
         | 
| 26 | 
            +
              #  BioChEMBL.to_array(target.geneNames)[0] #=> "EDNRB"
         | 
| 27 | 
            +
              #  
         | 
| 28 | 
            +
              #  bioactivities = target.bioactivities
         | 
| 29 | 
            +
              #   
         | 
| 30 | 
            +
              #  target = BioChEMBL::Target.find_by_uniprot("P24530")
         | 
| 31 | 
            +
              # 
         | 
| 21 32 | 
             
              class Target
         | 
| 22 33 | 
             
                extend BioChEMBL::DataModel
         | 
| 23 34 |  | 
| @@ -34,6 +45,7 @@ module BioChEMBL | |
| 34 45 |  | 
| 35 46 | 
             
                set_attr_accessors(ATTRIBUTES)
         | 
| 36 47 |  | 
| 48 | 
            +
                # Parse the Target data.
         | 
| 37 49 | 
             
                def self.parse(str)
         | 
| 38 50 | 
             
                  case str
         | 
| 39 51 | 
             
                  when /^</
         | 
| @@ -50,6 +62,7 @@ module BioChEMBL | |
| 50 62 | 
             
                  end 
         | 
| 51 63 | 
             
                end 
         | 
| 52 64 |  | 
| 65 | 
            +
                # Parse the Target data in XML format.
         | 
| 53 66 | 
             
                def self.parse_xml(str)
         | 
| 54 67 | 
             
                  xml = Nokogiri::XML(str)
         | 
| 55 68 | 
             
                  this = new  
         | 
| @@ -57,8 +70,8 @@ module BioChEMBL | |
| 57 70 | 
             
                  this
         | 
| 58 71 | 
             
                end 
         | 
| 59 72 |  | 
| 60 | 
            -
                # XML
         | 
| 61 | 
            -
                # <list><target> | 
| 73 | 
            +
                # Parse the Target data list in XML format.
         | 
| 74 | 
            +
                # data lsit: <list><target/></list>
         | 
| 62 75 | 
             
                def self.parse_list_xml(str)
         | 
| 63 76 | 
             
                  xmls = Nokogiri::XML(str)
         | 
| 64 77 | 
             
                  xmls.xpath("/list/target").map do |cpd|
         | 
| @@ -66,38 +79,44 @@ module BioChEMBL | |
| 66 79 | 
             
                  end
         | 
| 67 80 | 
             
                end
         | 
| 68 81 |  | 
| 82 | 
            +
                # Parse the Target data in JSON format.
         | 
| 69 83 | 
             
                def self.parse_json(str)
         | 
| 70 84 | 
             
                  raise NotImplementedError
         | 
| 71 85 | 
             
                end
         | 
| 72 86 |  | 
| 87 | 
            +
                # Parse the Target data in RDF format.
         | 
| 73 88 | 
             
                def self.parse_rdf(str)
         | 
| 74 89 | 
             
                  raise NotImplementedError
         | 
| 75 90 | 
             
                end   
         | 
| 76 91 |  | 
| 92 | 
            +
                # Find the Target data by the ChEMBL ID.
         | 
| 77 93 | 
             
                def self.find(chemblId)
         | 
| 78 94 | 
             
                  self.parse_xml(REST.new.targets(chemblId))
         | 
| 79 95 | 
             
                end
         | 
| 80 96 |  | 
| 97 | 
            +
                # Find the Target data by the UniProt ID.
         | 
| 81 98 | 
             
                def self.find_by_uniprot(uniprot_id)
         | 
| 82 99 | 
             
                  self.parse_xml(REST.new.targets_uniprot(uniprot_id))      
         | 
| 83 100 | 
             
                end
         | 
| 84 101 |  | 
| 102 | 
            +
                # Find the Target data by the RefSeq ID.
         | 
| 85 103 | 
             
                def self.find_by_refseq(refseq_id)
         | 
| 86 104 | 
             
                  self.parse_xml(REST.new.targets_refseq(refseq_id))            
         | 
| 87 105 | 
             
                end
         | 
| 88 106 |  | 
| 89 | 
            -
                #  | 
| 107 | 
            +
                # Get the bioactivity data list.
         | 
| 90 108 | 
             
                def bioactivities
         | 
| 91 109 | 
             
                  BioChEMBL::Bioactivity.parse_list_xml(REST.new.targets(chemblId, 'bioactivities'))
         | 
| 92 110 | 
             
                end
         | 
| 93 111 |  | 
| 94 | 
            -
                # Resolve the  | 
| 112 | 
            +
                # Resolve the Target data by the ChEMBL ID
         | 
| 95 113 | 
             
                def resolve
         | 
| 96 114 | 
             
                  resolved = self.class.find(@chemblId)
         | 
| 97 115 | 
             
                  ATTRIBUTES.each do |attr|
         | 
| 98 116 | 
             
                    eval "@#{attr} = resolved.#{attr}"
         | 
| 99 117 | 
             
                  end
         | 
| 100 118 | 
             
                end
         | 
| 119 | 
            +
                
         | 
| 101 120 | 
             
              end
         | 
| 102 121 |  | 
| 103 122 | 
             
            end
         | 
| @@ -10,27 +10,60 @@ class TestBioChemblChembId < Test::Unit::TestCase | |
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 12 | 
             
              def test_chemblid
         | 
| 13 | 
            -
                assert_equal(@chemblid.class | 
| 14 | 
            -
                assert_equal( | 
| 15 | 
            -
                assert_equal(@chemblid.data_type | 
| 13 | 
            +
                assert_equal(BioChEMBL::ChEMBLID, @chemblid.class)
         | 
| 14 | 
            +
                assert_equal("CHEMBL1", @chemblid)
         | 
| 15 | 
            +
                assert_equal(nil, @chemblid.data_type)
         | 
| 16 16 | 
             
              end
         | 
| 17 17 |  | 
| 18 18 | 
             
              def test_invalid_chembl_id
         | 
| 19 19 | 
             
                assert_raise(Exception) {
         | 
| 20 | 
            -
                  BioChEMBL:: | 
| 20 | 
            +
                  BioChEMBL::ChEMBLID.new("CHEMBLCHEMBL1")
         | 
| 21 21 | 
             
                }
         | 
| 22 22 | 
             
              end
         | 
| 23 23 |  | 
| 24 | 
            +
              def test_chemblid_validate
         | 
| 25 | 
            +
                assert_equal(true, BioChEMBL::ChEMBLID.valid_format?(@str))
         | 
| 26 | 
            +
                assert_equal(false, BioChEMBL::ChEMBLID.valid_format?("CHEMBLCHEMBL1"))
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
              
         | 
| 29 | 
            +
              def test_resolve
         | 
| 30 | 
            +
                compound = @chemblid.resolve
         | 
| 31 | 
            +
                assert_equal(BioChEMBL::Compound, @chemblid.data_type)
         | 
| 32 | 
            +
                assert_equal(@chemblid, compound.chemblId)
         | 
| 33 | 
            +
                assert_equal("COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56", compound.smiles)
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              def test_resolve_target
         | 
| 37 | 
            +
                target = BioChEMBL::ChEMBLID.new("CHEMBL1785").resolve
         | 
| 38 | 
            +
                assert_equal(BioChEMBL::Target, target.class)
         | 
| 39 | 
            +
                assert_equal("CHEMBL1785", target.chemblId)
         | 
| 40 | 
            +
                assert_equal("PROTEIN", target.targetType)
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
              def test_resolve_assay
         | 
| 44 | 
            +
                assay = BioChEMBL::ChEMBLID.new("CHEMBL1217643").resolve
         | 
| 45 | 
            +
                assert_equal(BioChEMBL::Assay, assay.class)
         | 
| 46 | 
            +
                assert_equal("CHEMBL1217643", assay.chemblId)
         | 
| 47 | 
            +
                assert_equal("B", assay.assayType)
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
              
         | 
| 50 | 
            +
              def test_resolve_invalid
         | 
| 51 | 
            +
                assert_raise(ArgumentError) {
         | 
| 52 | 
            +
                  dummy = BioChEMBL::ChEMBLID.new("CHEMBL11111111111111217643").resolve
         | 
| 53 | 
            +
                }
         | 
| 54 | 
            +
              end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
              
         | 
| 24 57 | 
             
              def test_chemblid_is_compound?
         | 
| 25 | 
            -
                assert_equal(@chemblid.is_compound | 
| 26 | 
            -
                assert_equal(@chemblid.data_type | 
| 58 | 
            +
                assert_equal(true, @chemblid.is_compound?)
         | 
| 59 | 
            +
                assert_equal(BioChEMBL::Compound, @chemblid.data_type)
         | 
| 27 60 | 
             
              end
         | 
| 28 61 |  | 
| 29 62 | 
             
              def test_chemblid_is_target?
         | 
| 30 | 
            -
                assert_equal(@chemblid.is_target | 
| 63 | 
            +
                assert_equal(false, @chemblid.is_target?)    
         | 
| 31 64 | 
             
              end
         | 
| 32 65 |  | 
| 33 66 | 
             
              def test_chemblid_is_assay?
         | 
| 34 | 
            -
                assert_equal(@chemblid.is_assay | 
| 67 | 
            +
                assert_equal(false, @chemblid.is_assay?)    
         | 
| 35 68 | 
             
              end
         | 
| 36 69 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: bio-chembl
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 29
         | 
| 5 5 | 
             
              prerelease: false
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 8 | 
             
              - 1
         | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 0.1. | 
| 9 | 
            +
              - 3
         | 
| 10 | 
            +
              version: 0.1.3
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - Mitsuteru Nakao
         | 
| @@ -15,7 +15,7 @@ autorequire: | |
| 15 15 | 
             
            bindir: bin
         | 
| 16 16 | 
             
            cert_chain: []
         | 
| 17 17 |  | 
| 18 | 
            -
            date: 2012-07- | 
| 18 | 
            +
            date: 2012-07-23 00:00:00 +09:00
         | 
| 19 19 | 
             
            default_executable: 
         | 
| 20 20 | 
             
            dependencies: 
         | 
| 21 21 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -167,7 +167,6 @@ files: | |
| 167 167 | 
             
            - lib/bio-chembl/chemblid.rb
         | 
| 168 168 | 
             
            - lib/bio-chembl/compound.rb
         | 
| 169 169 | 
             
            - lib/bio-chembl/datamodel.rb
         | 
| 170 | 
            -
            - lib/bio-chembl/rest_api_server.rb
         | 
| 171 170 | 
             
            - lib/bio-chembl/rest_client.rb
         | 
| 172 171 | 
             
            - lib/bio-chembl/target.rb
         | 
| 173 172 | 
             
            - test/helper.rb
         | 
| @@ -1,40 +0,0 @@ | |
| 1 | 
            -
            require 'cgi'
         | 
| 2 | 
            -
            require 'uri'
         | 
| 3 | 
            -
            require 'nokogiri'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
            module BioChEMBL
         | 
| 7 | 
            -
              class REST
         | 
| 8 | 
            -
                # serv = BioChEMBL::REST::Server.new
         | 
| 9 | 
            -
                #    
         | 
| 10 | 
            -
                class Server
         | 
| 11 | 
            -
                  def initialize
         | 
| 12 | 
            -
                    
         | 
| 13 | 
            -
                  end
         | 
| 14 | 
            -
                  
         | 
| 15 | 
            -
                  # serv.query(:status)
         | 
| 16 | 
            -
                  # serv.query(:compounds, 'CHEML1')
         | 
| 17 | 
            -
                  def query(action, args, options)
         | 
| 18 | 
            -
                  end
         | 
| 19 | 
            -
                  
         | 
| 20 | 
            -
                  # /compounds/CHEMBL1
         | 
| 21 | 
            -
                  def compounds(chemblId)
         | 
| 22 | 
            -
                  end
         | 
| 23 | 
            -
                  # /compounds/CHEMBL1/image
         | 
| 24 | 
            -
                  def compounds_image(chemblId)
         | 
| 25 | 
            -
                  end
         | 
| 26 | 
            -
                  # /compounds/CHEMBL1/bioactivities
         | 
| 27 | 
            -
                  def comopunds_bioactivities(chemblId)
         | 
| 28 | 
            -
                  end
         | 
| 29 | 
            -
                  
         | 
| 30 | 
            -
                end
         | 
| 31 | 
            -
                
         | 
| 32 | 
            -
              end
         | 
| 33 | 
            -
              
         | 
| 34 | 
            -
              class DB
         | 
| 35 | 
            -
                class Query
         | 
| 36 | 
            -
                  def initialize
         | 
| 37 | 
            -
                  end
         | 
| 38 | 
            -
                end
         | 
| 39 | 
            -
              end
         | 
| 40 | 
            -
            end
         |