/*
* Copyright (C) 2010-2011 "Bio4j"
*
* This file is part of Bio4j
*
* Bio4j is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package com.bio4j.neo4jdb.codesamples;
import com.bio4j.neo4jdb.model.nodes.InterproNode;
import com.bio4j.neo4jdb.model.nodes.ProteinNode;
import com.bio4j.neo4jdb.model.relationships.protein.ProteinInterproRel;
import com.bio4j.neo4jdb.model.util.Bio4jManager;
import com.bio4j.neo4jdb.model.util.NodeRetriever;
import java.util.Iterator;
import org.neo4j.graphdb.Direction;
import org.neo4j.graphdb.Relationship;
/**
*
* Retrieves proteins with the interpro motif provided
*
* @author Pablo Pareja Tobes <ppareja@era7.com>
*/
public class GetProteinsWithInterpro {
/**
* @param args Just two arguments (DB folder and interpro motif)
*/
public static void main(String[] args) {
if (args.length != 2) {
System.out.println("The program expects two parameters: \n"
+ "1. Bio4j DB folder\n"
+ "2. Interpro motif\n");
} else {
String inputSt = args[1];
Bio4jManager manager = null;
try {
//--creating manager and node retriever----
manager = new Bio4jManager(args[0]);
NodeRetriever nodeRetriever = new NodeRetriever(manager);
//--------------------------------------------------------------
//-----retrieving interpro motif by its ID---------
InterproNode interpro = nodeRetriever.getInterproById(inputSt);
//checking there's a intepro motif with the ID provided...
if (interpro == null) {
System.out.println("There's no intepro motif with the ID " + inputSt);
} else {
System.out.println("Interpro motif found: \n" + interpro);
}
//--------------------------------------------------------------
//----getting proteins associated-----
Iterator<Relationship> iterator = interpro.getNode().getRelationships(new ProteinInterproRel(null), Direction.INCOMING).iterator();
int counter = 0;
System.out.println("Proteins associated to " + inputSt);
while(iterator.hasNext() && counter <= 20){
System.out.println(new ProteinNode(iterator.next().getStartNode()).getAccession());
counter++;
}
if(counter >= 20){
System.out.println("These are the first 20 proteins found! ;)");
}
} catch (Exception e) {
//deal somehow with the exception
} finally {
//---closing the manager----
manager.shutDown();
}
}
}
}