Search in sources :

Example 1 with VersionDescriptor

use of gov.nih.nci.ctd2.dashboard.util.cnkb.VersionDescriptor in project nci-ctd2-dashboard by CBIIT.

the class CnkbController method getCnkbObject.

@SuppressWarnings("unchecked")
@Transactional
@RequestMapping(value = "query", method = { RequestMethod.POST, RequestMethod.GET }, headers = "Accept=application/text")
public ResponseEntity<String> getCnkbObject(@RequestParam("dataType") String dataType, @RequestParam("interactome") String interactome, @RequestParam("version") String version, @RequestParam("selectedGenes") String selectedGenes, @RequestParam("interactionLimit") int interactionLimit, @RequestParam("throttle") String throttle) {
    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Type", "application/json; charset=utf-8");
    final CNKB interactionsConnection = CNKB.getInstance(getCnkbDataURL());
    CnkbObject cnkbObject = null;
    try {
        List<String> interactomeList = interactionsConnection.getNciDatasetAndInteractioCount();
        if (interactome != null && interactome.trim().length() > 0 && !interactionsConnection.interactionNames.contains(interactome.trim())) {
            return new ResponseEntity<String>(headers, HttpStatus.NOT_FOUND);
        }
        if (dataType.equals("interactome-context")) {
            cnkbObject = new InteractomeInfo();
            ((InteractomeInfo) cnkbObject).setInteractomeList(interactomeList);
        } else if (dataType.equals("interactome-version")) {
            cnkbObject = new InteractomeInfo();
            ((InteractomeInfo) cnkbObject).setDescription(interactionsConnection.getInteractomeDescription(interactome));
            List<VersionDescriptor> versionDescriptors = interactionsConnection.getVersionDescriptor(interactome);
            for (VersionDescriptor versionDescriptor : versionDescriptors) {
                if (versionDescriptor.getRequiresAuthentication() == false)
                    ((InteractomeInfo) cnkbObject).addVersionDescriptor(versionDescriptor);
            }
        } else if (dataType.equals("interaction-result")) {
            cnkbObject = new QueryResult();
            List<String> interactionTypes = interactionsConnection.getInteractionTypesByInteractomeVersion(interactome, version);
            ((QueryResult) cnkbObject).setInteractionTypeList(interactionTypes);
            List<InteractionDetail> interactionDetails = null;
            Short confidenceType = null;
            @SuppressWarnings("rawtypes") List<String> selectedGenesList = (List<String>) new JSONDeserializer().deserialize(selectedGenes);
            if (selectedGenesList != null && selectedGenesList.size() != 0) {
                for (String gene : selectedGenesList) {
                    CellularNetWorkElementInformation c = new CellularNetWorkElementInformation(gene.trim());
                    interactionDetails = interactionsConnection.getInteractionsByGeneSymbol(gene.trim(), interactome, version);
                    if (confidenceType == null && interactionDetails != null && interactionDetails.size() > 0)
                        confidenceType = interactionDetails.get(0).getConfidenceTypes().get(0);
                    for (int i = 0; i < interactionTypes.size(); i++) {
                        c.addInteractionNum(getInteractionNumber(interactionDetails, interactionTypes.get(i), confidenceType));
                    }
                    ((QueryResult) cnkbObject).addCnkbElement(c);
                }
            }
        } else if (dataType.equals("interaction-throttle")) {
            cnkbObject = new QueryResult();
            List<InteractionDetail> interactionDetails = null;
            List<String> selectedGenesList = convertStringToList(selectedGenes);
            List<Float> confidentList = new ArrayList<Float>();
            Short confidenceType = null;
            if (selectedGenesList != null && selectedGenesList.size() != 0) {
                for (String gene : selectedGenesList) {
                    interactionDetails = interactionsConnection.getInteractionsByGeneSymbolAndLimit(gene.trim(), interactome, version, interactionLimit);
                    if (interactionDetails != null) {
                        if (confidenceType == null && interactionDetails.size() > 0)
                            confidenceType = interactionDetails.get(0).getConfidenceTypes().get(0);
                        for (InteractionDetail interactionDetail : interactionDetails) confidentList.add(interactionDetail.getConfidenceValue(confidenceType));
                    }
                }
                // sort genes by value
                Collections.sort(confidentList, new Comparator<Float>() {

                    public int compare(Float f1, Float f2) {
                        return f2.compareTo(f1);
                    }
                });
                if (confidentList.size() > interactionLimit)
                    ((QueryResult) cnkbObject).setThreshold(confidentList.get(interactionLimit));
                else if (confidentList.size() > 0)
                    ((QueryResult) cnkbObject).setThreshold(confidentList.get(confidentList.size() - 1));
            }
        }
    } catch (UnAuthenticatedException uae) {
        uae.printStackTrace();
    } catch (ConnectException e1) {
        e1.printStackTrace();
    } catch (SocketTimeoutException e1) {
        e1.printStackTrace();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    JSONSerializer jsonSerializer = new JSONSerializer().exclude("*.class");
    return new ResponseEntity<String>(jsonSerializer.deepSerialize(cnkbObject), headers, HttpStatus.OK);
}
Also used : HttpHeaders(org.springframework.http.HttpHeaders) CnkbObject(gov.nih.nci.ctd2.dashboard.util.cnkb.CnkbObject) CellularNetWorkElementInformation(gov.nih.nci.ctd2.dashboard.util.cnkb.CellularNetWorkElementInformation) Comparator(java.util.Comparator) UnAuthenticatedException(gov.nih.nci.ctd2.dashboard.util.cnkb.UnAuthenticatedException) QueryResult(gov.nih.nci.ctd2.dashboard.util.cnkb.QueryResult) ArrayList(java.util.ArrayList) List(java.util.List) CNKB(gov.nih.nci.ctd2.dashboard.util.cnkb.CNKB) ConnectException(java.net.ConnectException) JSONSerializer(flexjson.JSONSerializer) JSONDeserializer(flexjson.JSONDeserializer) IOException(java.io.IOException) ResponseEntity(org.springframework.http.ResponseEntity) SocketTimeoutException(java.net.SocketTimeoutException) VersionDescriptor(gov.nih.nci.ctd2.dashboard.util.cnkb.VersionDescriptor) InteractionDetail(gov.nih.nci.ctd2.dashboard.util.cnkb.InteractionDetail) InteractomeInfo(gov.nih.nci.ctd2.dashboard.util.cnkb.InteractomeInfo) Transactional(org.springframework.transaction.annotation.Transactional) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

JSONDeserializer (flexjson.JSONDeserializer)1 JSONSerializer (flexjson.JSONSerializer)1 CNKB (gov.nih.nci.ctd2.dashboard.util.cnkb.CNKB)1 CellularNetWorkElementInformation (gov.nih.nci.ctd2.dashboard.util.cnkb.CellularNetWorkElementInformation)1 CnkbObject (gov.nih.nci.ctd2.dashboard.util.cnkb.CnkbObject)1 InteractionDetail (gov.nih.nci.ctd2.dashboard.util.cnkb.InteractionDetail)1 InteractomeInfo (gov.nih.nci.ctd2.dashboard.util.cnkb.InteractomeInfo)1 QueryResult (gov.nih.nci.ctd2.dashboard.util.cnkb.QueryResult)1 UnAuthenticatedException (gov.nih.nci.ctd2.dashboard.util.cnkb.UnAuthenticatedException)1 VersionDescriptor (gov.nih.nci.ctd2.dashboard.util.cnkb.VersionDescriptor)1 IOException (java.io.IOException)1 ConnectException (java.net.ConnectException)1 SocketTimeoutException (java.net.SocketTimeoutException)1 ArrayList (java.util.ArrayList)1 Comparator (java.util.Comparator)1 List (java.util.List)1 HttpHeaders (org.springframework.http.HttpHeaders)1 ResponseEntity (org.springframework.http.ResponseEntity)1 Transactional (org.springframework.transaction.annotation.Transactional)1 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)1