Exemple #1
0
 def get(self, request, format=None):
     terms = json.loads(request.body)['terms']
     evidence = PubMedQuerier.find_evidence_for_terms(terms, skip_no_abstract=True)
     serialized_json = serializers.serialize('json', evidence)
     evidence_json = flattenSerializedJson(serialized_json)
     # let's provide topic modeling results in addition to the raw evidence
     output = {}
     output['evidence'] = json.loads(evidence_json)
     evidencePks = [e.pk for e in evidence]
     abstracts = [e.abstract for e in evidence]
     output['topics'], output['evidenceTopicMap'] = getTopicsForDocuments(evidencePks, abstracts) 
     return HttpResponse(json.dumps(output), status=status.HTTP_201_CREATED)
Exemple #2
0
    def post(self, request, format=None):
        params = json.loads(request.body)
        terms = params['terms']
        user_id = params['user_id']

        texts = Text.objects.filter(created_by=user_id)
        serialized_json = serializers.serialize('json', texts)
        texts_json = flattenSerializedJson(serialized_json)

        evidenceCreated = Evidence.objects.filter(created_by=user_id)
        evidenceBookmarks = EvidenceBookmark.objects.filter(user_id=user_id)
        evidenceBookmarkedIds = [eb.evidence.pk for eb in evidenceBookmarks]
        evidenceBookmarked = Evidence.objects.filter(pk__in=evidenceBookmarkedIds)
        evidenceRetrieved = PubMedQuerier.find_evidence_for_terms(terms, skip_no_abstract=True)

        evidence = chain(evidenceCreated, evidenceBookmarked, evidenceRetrieved)

        print '>> serializing evidence...'
        serialized_json = serializers.serialize('json', evidence)
        print '>> flatten serialized evidence...'
        evidence_json = flattenSerializedJson(serialized_json)

        # let's provide topic modeling results in addition to the raw evidence
        output = {}
        print '>> loading evidence into json...'
        output['evidence'] = json.loads(evidence_json)

        contents = [t.content for t in texts]
        textPks = ['t-'+str(t.pk) for t in texts]
        abstracts = [e['abstract'] for e in output['evidence']]
        evidencePks = ['e-'+str(e['id']) for e in output['evidence']]

        if len(evidencePks + textPks) <= 1:
            output['topics'] = []
            output['evidenceTextTopicMap'] = []
        else:
            output['topics'], output['evidenceTextTopicMap'] = getTopicsForDocuments(evidencePks + textPks, abstracts + contents) 
        return HttpResponse(json.dumps(output), status=status.HTTP_201_CREATED)