package org.openbel.framework.api;
import java.util.Map;
import org.openbel.framework.api.Kam.KamNode;
import org.openbel.framework.common.InvalidArgument;
/**
* Orthologize defines functions for orthologizing a {@link Kam kam}.
*/
public interface Orthologize {
/**
* Retrieve a mapping of orthologous {@link KamNode kam nodes} to the
* target species {@link KamNode kam nodes}.
*
* @param kam {@link Kam}; may not be {@code null}
* @param kAMStore {@link KAMStore}; may not be {@code null}
* @param dialect {@link SpeciesDialect}; may not be {@code null}
* @return {@link Map} of orthologous {@link KamNode kam node} to the
* target species {@link KamNode kam nodes}
* @throws InvalidArgument when {@code kam}, {@code kAMStore}, or
* {@code dialect} is {@code null}
*/
public Map<KamNode, KamNode> orthologousNodes(Kam kam, KAMStore kAMStore,
SpeciesDialect dialect);
/**
* Collapses orthologous relationships in a {@link Kam kam} and returns an
* {@link OrthologizedKam orthologized kam}.
*
* @param kam {@link Kam}; may not be {@code null}
* @param kAMStore {@link KAMStore}; may not be {@code null}
* @param dialect {@link SpeciesDialect}; may not be {@code null}
* @return {@link OrthologizedKam}
* @throws InvalidArgument when {@code kam}, {@code kAMStore}, or
* {@code dialect} is {@code null}
*/
public OrthologizedKam orthologize(Kam kam, KAMStore kAMStore,
SpeciesDialect dialect);
}