package org.chesmapper.view.cluster;
import java.awt.Color;
import java.beans.PropertyChangeListener;
import java.util.List;
import org.chesmapper.map.alg.embed3d.CorrelationProperty;
import org.chesmapper.map.alg.embed3d.EqualPositionProperty;
import org.chesmapper.map.dataInterface.CompoundData;
import org.chesmapper.map.dataInterface.CompoundGroupWithProperties;
import org.chesmapper.map.dataInterface.CompoundProperty;
import org.chesmapper.map.dataInterface.CompoundPropertyOwner;
import org.chesmapper.map.dataInterface.NominalProperty;
import org.chesmapper.map.dataInterface.NumericProperty;
import org.chesmapper.map.weka.Predictor.PredictionResult;
public interface Clustering extends CompoundGroupWithProperties
{
void addListener(PropertyChangeListener propertyChangeListener);
int getNumClusters();
int numClusters();
List<Cluster> getClusters();
boolean isClusterActive();
boolean isClusterWatched();
Cluster getCluster(int i);
int indexOf(Cluster cluster);
Cluster getActiveCluster();
Cluster getWatchedCluster();
int getActiveClusterIdx();
int getWatchedClusterIdx();
boolean isCompoundActive();
boolean isCompoundWatched();
boolean isCompoundActive(Compound c);
Compound[] getActiveCompounds();
Compound getActiveCompound();
int[] getActiveCompoundsJmolIdx();
Compound getWatchedCompound();
Compound[] getWatchedCompounds();
int[] getWatchedCompoundsJmolIdx();
Cluster getClusterForCompound(Compound c);
List<CompoundProperty> selectPropertiesAndFeaturesWithDialog(String title, CompoundProperty preselected,
boolean addSmiles, boolean addEmbeddingStress, boolean addActivityCliffs, boolean addDistanceTo);
List<CompoundProperty> getPropertiesAndFeatures();
List<CompoundProperty> getProperties();
List<CompoundProperty> getFeatures();
List<Compound> getCompounds(boolean includingMultiClusteredCompounds);
Cluster getUniqueClusterForCompounds(Compound[] c);
String getOrigLocalPath();
String getOrigSDFile();
String getSDFile();
boolean isClusterAlgorithmDisjoint();
String getClusterAlgorithm();
int getClusterIndexForCompound(Compound m);
List<CompoundData> getCompounds();
void chooseClustersToExport(CompoundProperty compoundDescriptor);
void chooseCompoundsToExport(CompoundProperty compoundDescriptor);
Double[] getDoubleValues(NumericProperty p);
String[] getStringValues(NominalProperty p, Compound m);
String getSummaryStringValue(CompoundProperty p, boolean b);
int numMissingValues(CompoundProperty p);
String getName();
Double getNormalizedLogDoubleValue(CompoundPropertyOwner m, NumericProperty p);
Double getNormalizedDoubleValue(CompoundPropertyOwner m, NumericProperty p);
double getSpecificity(Compound compound, CompoundProperty p);
double getSpecificity(Cluster cluster, CompoundProperty p);
double getSpecificity(CompoundSelection sel, CompoundProperty p);
int getNumCompounds(boolean includingMultiClusteredCompounds);
int getNumUnfilteredCompounds(boolean includingMultiClusteredCompounds);
String getEmbedAlgorithm();
String getEmbedQuality();
List<CompoundProperty> getAdditionalProperties();
CorrelationProperty getEmbeddingQualityProperty();
EqualPositionProperty getEqualPosProperty();
Compound getCompoundWithJmolIndex(int convertRowIndexToModel);
int numDistinctValues(CompoundProperty p);
public void addSelectionListener(SelectionListener l);
public abstract static class SelectionListener
{
public void clusterActiveChanged(Cluster c)
{
}
public void clusterWatchedChanged(Cluster c)
{
}
public void compoundActiveChanged(Compound c[])
{
}
public void compoundWatchedChanged(Compound c[])
{
}
}
boolean isBMBFRealEndpointDataset(boolean b);
CompoundProperty addDistanceToCompoundFeature(Compound c);
CompoundProperty addSALIFeatures(CompoundProperty c);
void predict();
void addPredictionFeature(CompoundProperty clazz, PredictionResult p);
NumericProperty addLogFeature(NumericProperty p);
public CompoundSelection getCompoundSelection(Compound[] c);
boolean isRandomEmbedding();
CompoundProperty getHighlightProperty();
Color getHighlightColorText();
Double getFeatureDistance(int origIndex, int origIndex2);
boolean isSkippingRedundantFeatures();
boolean isBigDataMode();
void computeAppDomain();
boolean doCheSMappingWarningsExist();
void showCheSMappingWarnings();
}