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);
}
Aggregations