import jp.dbcls.togows.soap.*;

public class PdbjSeqnavixSeqAlign {

    public static void main(String[] args) {
        try {
            String message = "";
            String queryPdbId = "12AS";
            String queryChainId = "B";
            String querySeq = "EVVHSLAK---WKRQTLGQHDFSAG------EGLYTHM-KALRPDEDRLSPLHSVYVDQWDWERVMGDGERQFSTLKSTVEAIWAGI-KATEAAVSEEFGLAP";
            int querySeqIndex = 65;
            int querySeqLength = 103;
            String templPdbId = "2GZ4";
            String templChainId = "A";
            String templSeq = "DIAHGLARVARWNGQTRGDHAFTVAQHCLIVETIFCRMCPGATPDEMQMALLHDAP------EYVIGD---MISPFKSVVGGGYKTVEKRLEAAVHLRFGLPP";
            int templSeqIndex = 28;
            int templSeqLength = 103;

            TogowsPdbjService service = new TogowsPdbjServiceLocator();
            TogowsPdbjPort stub = service.getTogowsPdbjPort();

            SeqnaviNeighbor neighbor = new SeqnaviNeighbor();
            neighbor.setMessage(message);
            neighbor.setQueryPdbId(queryPdbId);
            neighbor.setQueryChainId(queryChainId);
            neighbor.setQuerySeq(querySeq);
            neighbor.setQuerySeqIndex(querySeqIndex);
            neighbor.setQuerySeqLength(querySeqLength);
            neighbor.setTemplPdbId(templPdbId);
            neighbor.setTemplChainId(templChainId);
            neighbor.setTemplSeq(templSeq);
            neighbor.setTemplSeqIndex(templSeqIndex);
            neighbor.setTemplSeqLength(templSeqLength);

            SeqnaviSuperpositionResult result = stub.pdbjSeqnavixSeqAlign(neighbor);

            System.out.println("message=" + result.getMessage());
            System.out.println("num_residues=" + result.getQueryTemplNAlign());
            System.out.println("CA_RMSD=" + result.getCA_RMSD());

            SeqnaviSuperposition[] sups1 = result.getRMSDSuperposition();
            if (sups1 != null) {
        	    for (int i = 0; i < sups1.length; i++) {
                    System.out.println("  [RMSD_superposition]");
                    System.out.println("  querySeq=" + sups1[i].getQuerySeq());
                    System.out.println("  querySst=" + sups1[i].getQuerySst());
                    System.out.println("  templSeq=" + sups1[i].getTemplSeq());
                    System.out.println("  templSst=" + sups1[i].getTemplSst());
                    System.out.println("  nerSimil=" + sups1[i].getNerSimilarity());
        	    }
            }

            System.out.println("NER_score=" + result.getNerScore());

            SeqnaviSuperposition[] sups2 = result.getNERSuperposition();
            if (sups2 != null) {
        	    for (int i = 0; i < sups2.length; i++) {
                    System.out.println("  [NER_superposition]");
                    System.out.println("  querySeq=" + sups2[i].getQuerySeq());
                    System.out.println("  querySst=" + sups2[i].getQuerySst());
                    System.out.println("  templSeq=" + sups2[i].getTemplSeq());
                    System.out.println("  templSst=" + sups2[i].getTemplSst());
                    System.out.println("  nerSimil=" + sups2[i].getNerSimilarity());
        	    }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
