Git Product home page Git Product logo

ncbo_rest_sample_code's Introduction

ncbo_rest_sample_code's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ncbo_rest_sample_code's Issues

Java examples: AnnotateText throws FileNotFoundException

Executing the main method in AnnotateText.java throws the following exception:

java.io.FileNotFoundException: http://data.bioontology.org/ontologies/OHMI/classes/http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FDOID_1909
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1836)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
	at AnnotateText.get(AnnotateText.java:97)
	at AnnotateText.printAnnotations(AnnotateText.java:50)
	at AnnotateText.main(AnnotateText.java:27)
Class details
com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input
 at [Source: java.io.StringReader@6cd8737; line: 1, column: 1]
	at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164)
	at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:2836)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2778)
	at com.fasterxml.jackson.databind.ObjectMapper.readTree(ObjectMapper.java:1659)
	at AnnotateText.jsonToNode(AnnotateText.java:75)
	at AnnotateText.printAnnotations(AnnotateText.java:50)
	at AnnotateText.main(AnnotateText.java:27)
Exception in thread "main" java.lang.NullPointerException
	at AnnotateText.printAnnotations(AnnotateText.java:52)
	at AnnotateText.main(AnnotateText.java:27)

Java examples: CreateMapping throws java.lang.Exception

Executing the main method in CreateMapping.java results in the following exception:

java.lang.Exception: {"errors":["Input does not contain classes"],"status":400}
	at CreateMapping.postJSON(CreateMapping.java:98)
	at CreateMapping.main(CreateMapping.java:51)

Maximum size limited for NCBO annotator service?

When I submit a very long text query to NCBO annotator service using Python3.5 on urllib3, it gives me this error.

exceptions.MaxRetryError: HTTPConnectionPool(host='data.bioontology.org', port=80): Max retries exceeded with url: /annotator?text=Prevention+and+Early+Detection+of+ ... (Caused by ProtocolError('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer')))

When I query short text to annotate, it is processed without any problem but when the size of query text is going to be 20Kbyte, it gives me the error.

Presumably, it seems there is certain amount of maximum length of query allowed to the annotator service. If so, can I know how much exactly it is?

For your information, I attached my python code.

Thanks,
Jeongmin

import json
import urllib3
import urllib
import traceback
import sys
import re
import glob
from time import sleep

# user parameters
TEXT_DIR = '../data/text/'
JSON_DIR = '../data/json/'

apikey=''
REST_URL = "http://data.bioontology.org"

ontology_list = 'ICD9CM,LOINC,NDFRT,RXNORM,SNOMEDCT'
tui_list = 'T017,T029,T023'
options = '&longest_only=true&exclude_numbers=false&whole_word_only=true&exclude_synonyms=false' param = '&ontologies=' + ontology_list + '&semantic_types=' + tui_list + options


def get_json(text):
    # create request_url
    request_url = REST_URL + "/annotator?text=" + text.replace(' ','+') + param + "&apikey=" + apikey
    # get data as json type
    http = urllib3.PoolManager() 
    r = http.request('POST', request_url, headers={'Authorization': 'apikey token=' + apikey})
    print('request_url: '+request_url)
    print('http status: '+ str(r.status))
    data_json = json.loads(r.data.decode('utf-8'))
    return data_json

def main():
    for filename in glob.glob(TEXT_DIR+'*.txt'):
        # for each file load file 
        text = ''
        lines = open(filename,"r").read().splitlines()
        for l in lines:
            text = text + l.rstrip()
        # remove special characters
        text = re.sub('[^A-Za-z0-9]+', ' ', text)
        # get json
        data = get_json(text)
        # save to json file
        filename_nodir = filename.split('/')[-1].split('.')[0]
        json_fn = '' + filename_nodir + '.json'
        # print(json_fn)
        with open(JSON_DIR+json_fn, 'w') as outfile:
            json.dump(data, outfile)

if __name__ == "__main__":
    main()

Request for prefLabel return empty (not found)

Hi,

When trying out the REST API for classes I found that sometimes adding prefLabel to the include param causes the system to return empty (not found) results.
I have tried both GET and POST (batch request) and two examples are as follow

get preflabel
GET- with prefLabel

get no-preflabel
GET- without prefLabel

post preflabel
POST - with prefLabel

post no-preflabel
POST - without prefLabel

There are also some issues when I tried getting classes via general /classes method: sometimes some hundreds elements only contains @id and @type. Some other times, the collection field is simply empty - as follow

classes-empty

Could you please help me by seeing to these issues ?

Many thanks and best regards.
ChinhNK

Error from example code

When I run the example at: https://github.com/ncbo/ncbo_rest_sample_code/blob/master/java/src/AnnotateText.java
I get the error
java.io.FileNotFoundException: http://data.bioontology.org/ontologies/MP/classes/http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FMPATH_359
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1835)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)
at AnnotateText.get(AnnotateText.java:96)
at AnnotateText.printAnnotations(AnnotateText.java:49)
at AnnotateText.main(AnnotateText.java:26)
com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input
at [Source: java.io.StringReader@30c7da1e; line: 1, column: 1]
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164)
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:2836)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2778)
at com.fasterxml.jackson.databind.ObjectMapper.readTree(ObjectMapper.java:1659)
at AnnotateText.jsonToNode(AnnotateText.java:74)
at AnnotateText.printAnnotations(AnnotateText.java:49)
at AnnotateText.main(AnnotateText.java:26)
Class details
Exception in thread "main" java.lang.NullPointerException
at AnnotateText.printAnnotations(AnnotateText.java:51)
at AnnotateText.main(AnnotateText.java:26)

Python Sample Code error when querying strings including unicodes

Hello, I tried to use this Python sample code but found that this code would raise UnicodeEncodeError, and this is because my query includes special characters that can't be encoded by 'ascii' codec. This is because your baseline code for Python uses urllib package and this urllib can only handle ASCII requests.

So, I'd recommend to change this urllib-based scripts to simple requests package, which can handle those kind of special characters. If you don't mind, I can pull request those part after fork this code. If there is a reason to use urllib, then never mind on my issue. Thanks!

AnnotateText.java throws an exception

AnnotateText.java execution throws an exception. The log is given below:

java.io.IOException: Server returned HTTP response code: 401 for URL: http://data.bioontology.org/annotator?text=Melanoma+is+a+malignant+tumor+of+melanocytes+which+are+found+predominantly+in+skin+but+also+in+the+bowel+and+the+eye.
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at org.fit.vocabulary.neologism.OntologyRecommender.LOV.AnnotateText.get(AnnotateText.java:101)
at org.fit.vocabulary.neologism.OntologyRecommender.LOV.AnnotateText.main(AnnotateText.java:30)
com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input
at [Source: ; line: 1, column: 0]
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:270)
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:3854)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3799)
at com.fasterxml.jackson.databind.ObjectMapper.readTree(ObjectMapper.java:2397)
at org.fit.vocabulary.neologism.OntologyRecommender.LOV.AnnotateText.jsonToNode(AnnotateText.java:79)
at org.fit.vocabulary.neologism.OntologyRecommender.LOV.AnnotateText.main(AnnotateText.java:30)
Exception in thread "main" java.lang.NullPointerException
at org.fit.vocabulary.neologism.OntologyRecommender.LOV.AnnotateText.printAnnotations(AnnotateText.java:52)
at org.fit.vocabulary.neologism.OntologyRecommender.LOV.AnnotateText.main(AnnotateText.java:31)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.