|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectat.tuwien.ifs.somtoolbox.reportgenerator.TestRunResult
public class TestRunResult
Field Summary | |
---|---|
private int[][][] |
classDistribution
|
private ClusteringTree |
clusterTree
|
DatasetInformation |
datasetInfo
|
private String |
dwFilePath
|
EntropyVisualizer |
entropy_visualizer
|
private SOMLibFormatInputReader |
inputReader
|
private MySOMLibMapDescription |
mapDescription
|
private String |
mapFilePath
|
private MetroMapVisualizer |
metroVis
|
private String |
propertyFilePath
|
private SOMProperties |
props
|
QMContainer |
QMContainer
|
private int |
runId
|
private SmoothedDataHistograms |
sdh_visualizer
|
private GrowingSOM |
som
|
private CommonSOMViewerStateData |
state
|
private HashMap<String,String> |
texts
|
private ThematicClassMapVisualizer |
thematic_visualizer
|
private TopographicProductVisualizer |
topographicproduct_visualizer
|
private TrustwothinessVisualizer |
trustworthyness_visualizer
|
private int |
type
|
private String |
unitFilePath
|
protected SharedSOMVisualisationData |
visData
|
private String |
weightFilePath
|
Constructor Summary | |
---|---|
TestRunResult(DatasetInformation datasetInfo,
String mapFilePath,
String propertyFilePath,
String unitFilePath,
String weightFilePath,
String dwFilePath,
int runId,
int type)
Constructor without Trained SOM, e.g. |
|
TestRunResult(DatasetInformation datasetInfo,
String mapFilePath,
String propertyFilePath,
String unitFilePath,
String weightFilePath,
String dwFilePath,
int runId,
int type,
CommonSOMViewerStateData state)
Constructor for an already trained SOM & State, e.g. |
Method Summary | |
---|---|
boolean |
createClassDistributionImage(String outputDir,
String filename,
int ClassID)
UPDATE creates a jpg showing the class distribtion on the trained SOM The jpg is saved to the output dir with the following name: run_RUNID_FILENAME |
boolean |
createDistortionImage(String outputDir,
String filename,
int unitScale,
int index)
create the Distortion visualization of the SOM the image is saved under the given path (which is neither checked nor created) under the given name, only the prefix run_runId_ is added to the filename. |
boolean |
createDMatrixImage(String outputDir,
String filename,
int unitScale)
Creates a D-Matrix Image |
boolean |
createEntropyImage(String outputDir,
String filename,
int ClassID)
Creates an Entropy Image, and saves it at the given Location. |
boolean |
createFlowBorderLineImage(String outputDir,
String filename,
int unitScale)
create the Flow & BorderLine visualization of the SOM the image is saved under the given path (which is neither checked nor created) under the given name, only the prefix run_runId_ is added to the filename. |
boolean |
createInputDistributionImage(String outputDir,
String filename)
creates a visualization of the distribution of the input data on the SOM the image is saved under the given path (which is neither checked nor created) under the given name, only the prefix run_runId_ is added to the filename. |
boolean |
createIntrinsicDistanceImage(String outputDir,
String filename)
Creates a Intrinsic Distance Image |
void |
createPaletteImage(String outputDir,
String filename,
String palName)
Creates a Palette Image on the color palette on the specified Index FIXME: move this way from this class |
void |
createPieChartImages(String outputDir)
creates for each unit having at least one input item mapped to it an image of the class distribution the images are stored in an subdirectory of the specified directory (which is neither checked nor created) named "pieCharts_runId". |
boolean |
createQuantizationErrorImage(String outputDir,
String filename,
int variant)
creates an image visualizing the quantization error of this SOM the image is saved under the given path and name, although a prefix run_runId_ is added to the image name |
void |
createSDHImages(String outputDir,
String filename,
int unitScale,
boolean Latex,
int step)
create a SDH visualization of the SOM the image is saved under the given path (which is neither checked nor created) under the given name, only the prefix run_runId_ is added to the filename. |
boolean |
createSilouetteImage(String outputDir,
String filename,
int variant)
Creates a Silhouette image |
boolean |
createSingleMetroMapComponentImage(String outputDir,
String filename,
int component)
Creates a SingleMetroMapComponentImage with the given component index. |
boolean |
createTopographicErrorImage(String outputDir,
String filename)
creates an image visualizing the topographic error of this SOM the image is saved under the given path and name, although a prefix run_runId_ is added to the image name |
void |
createTopographicProductImages(String outputDir,
String filename,
int unitScale,
boolean Latex,
int step)
create a TopographicProduct visualization of the SOM the image is saved under the given path (which is neither checked nor created) under the given name, only the prefix run_runId_ is added to the filename. |
void |
createTrustworthyNessImages(String outputDir,
String filename,
int unitScale,
boolean Latex,
int step)
create TrustWortyNess pictures of the SOM the image is saved under the given path (which is neither checked nor created) under the given name, only the prefix run_runId_ is added to the filename. |
boolean |
createUDMatrixImage(String outputDir,
String filename,
int unitScale,
int index)
create the U-D-Matrix visualization of the SOM the image is saved under the given path (which is neither checked nor created) under the given name, only the prefix run_runId_ is added to the filename. |
void |
fillQMContainer()
Fills the QMContainer Object with all quality Measures that were specified in the report |
ArrayList<int[]> |
getAllUnitsContainingClass(int index)
|
int[][][] |
getClassDistribution()
Returns the Class Distribution array for each Unit of the Map |
int[] |
getClassDistributionInCluster(int clusterLevel)
returns for the given cluster, how many input elements of the different classses are mapped to units of this cluster returns an array, that contains for each class, how many input vectors belonging to this class are mapped to units of the cluster |
double |
getClassEntropy(int index)
Returns the entropy for class with index |
int[] |
getClassesForUnit(int x,
int y)
returns an array containing the counting for each class for the given unit |
int[] |
getClassMeanUnit(int classId)
returns the mean x and y coordinates (and the standard derivation) of a class the following is done: for all input elements of the given class, the sum of the x coordinates of the unit the item is mapped onto is build, and then divided by the number of input items in this class. |
String[][] |
getClassMix(int index)
returns every other class+hits contained in the regions with classmembers from the given index, or null if index exceeds the possible number of classes |
int[] |
getClassPurity1()
returns for i = 0 ... |
String |
getClassPurity2(int[] purity)
returns an textual interpretation of how good the SOM separates the different classes this is done quite simple by grouping the error to: less than 5% less than 10% less than 20% less than 50% less than 70% less than 85% less or equal than 100% |
int[] |
getClassRangesInUnits()
Returns an Array containing the Range in SOMUnits from all Classes, or null if no Class info is available |
ClusterNode |
getClusterNodes(int level,
int numbClusters)
returns the cluster node representing the cluster at the specified level |
ClusteringTree |
getClusterTree()
creates and returns the clustering tree for this SOM the cluster method used is WardsLinkageTreeBuilder. |
DatasetInformation |
getDatasetInfo()
|
String |
getDWFilePath()
|
GrowingSOM |
getGrowingSOM()
returns the SOM learned within the run this object represents |
InputQEContainer |
getInputMappedQE(String name)
calculates the qe for the specified input vector Calculates the quantization error of the input vector specified by its name, that is the distance of the given input vector to the unit it is mapped to. |
protected SOMLibFormatInputReader |
getInputReader()
returns an instance of input reader the following files are handed to the reader: this.weightFilePath, this.unitFilePath, this.mapFilePath the reader created is saved in this.inputReader |
InputQEContainer |
getInputWinnerQE(String name)
calculates the qe for the specified input vector Calculates the quantization error of the input vector specified by its name, that is the distance of the given input vector to the winner unit on the som. |
String |
getMapFilePath()
|
MapQEContainer |
getMapMMQE()
returns the mmqe of the trained SOM returns the mmqe of the trained SOM, as specified by the QuantizationError Object - see there for more information |
MapQEContainer |
getMapMQE()
returns the mqe of the trained SOM returns the mqe of the trained SOM, as specified by the QuantizationError Object - see there for more information |
int[] |
getMappedUnit(double[] vector)
mappes the vector to the current SOM and returns x and y coordinates of the winning unit. |
Object |
getMapProperty(String property)
|
double |
getMapSilouette()
returns the silhouette value of the map (using quality measure "silhouette") |
double |
getMapTE()
returns the topographic error of the map (using quality measure "TE_Map") |
String[][] |
getMaxEErrorRegionNames()
Returns the maximum Entropy Error Region's classnames |
int |
getMaximumEEClassIndex()
Returns the class with the maximum EntropyError |
InputQEContainer |
getMaxInputMappedQE()
returns the max qe of any input item compared with the unit it is mapped to returns the value of the greatest distance between the weight vector of an input item and the unit this item is mapped to. |
InputQEContainer |
getMaxInputWinnerQE()
returns the max qe of any input item compared with all units on the map returns the value of the greatest distance between the weight vector of an input item and alle the weight vectors of units on the map. |
UnitQEContainer |
getMaxUnitMQE()
returns the biggest mean quantization error of all units where at least one input vector is mapped on. |
UnitQEContainer |
getMaxUnitQE()
returns the biggest quantization error of all units where at least one input vector is mapped on |
UnitQEContainer |
getMaxUnitTE()
returns the maximal topographic error of any unit on the map (together with the unit) |
double |
getMeanClassSpread()
Returns the mean Class spread of all Classes in Units; |
InputQEContainer |
getMinInputMappedQE()
returns the min qe of any input item compared with the unit it is mapped to returns the value of the smallest distance between the weight vector of an input item and the unit this item is mapped to. |
InputQEContainer |
getMinInputWinnerQE()
returns the min qe of any input item compared with all units on the map returns the value of the smallest distance between the weight vector of an input item and alle the weight vectors of units on the map. |
UnitQEContainer |
getMinUnitMQE()
returns the smallest mean quantization error of all units where at least one input vector is mapped on. |
UnitQEContainer |
getMinUnitQE()
returns the smallest quantization error of all units where at least one input vector is mapped on |
UnitQEContainer |
getMinUnitSilouette()
returns the minimal silhouette Value of any unit on the map (together with the unit) |
UnitQEContainer |
getMinUnitTE()
returns the minimal topographic error (> 0!!) of any unit on the map (together with the unit) |
double |
getMQEForUnit(int x,
int y)
returs the mean quantization error for the unit with the specified coordinates the mqe of a unit = sum or qe errors / number of input items mapped to this unit. |
int |
getNumberofClasses()
|
int |
getNumberOfInputsOnUnit(int x,
int y)
|
int |
getNumberOfMaps()
|
int |
getNumberOfSilouettelessUnits()
returns the number of units on the map having no Silouette Value |
int |
getNumberOfTElessUnits()
returns the number of units on the map having no topographic error |
double |
getPercOfZeroEntropyRegions()
Returns the percentage of regions with 0 entropy |
String |
getPropertyFilePath()
|
double |
getQEForUnit(int x,
int y)
Returns the quantization error of the unit at the specified coordinates That is, for all inputs mapped to this unit, the distance between the weigh vector of the input item and the unit is summed and returned |
QMContainer |
getQMContainer()
|
double |
getRegionEntropyError(int mode)
returns Entropy (Max/Min) error Region |
int |
getRunId()
|
double |
getSigma()
|
int |
getSOMDimensions()
Returns the SOMs Dimensions |
private int |
getSomXSize()
|
private int |
getSomYSize()
|
Vector<double[]> |
getStableClusters1(ClusterNode node,
int count,
int boundary,
Vector<double[]> stableClusterList)
Quality measure for clusters that didn't work |
Vector<double[]> |
getStableClusters2(ClusterNode node,
double parentValue,
int boundary,
Vector<double[]> stableClusterList)
tries to sort all possible clusters by their "stability" that is, tries to give a measure about how good a cluster is. |
Vector<double[]> |
getStableClusters3(ClusterNode node,
double parentValue,
int boundary,
Vector<double[]> stableClusterList)
quality measure for clusters that didn't work |
private CommonSOMViewerStateData |
getStateObject()
returns an instance of CommonSOMViewerStateData, that stores basic properties for visualization of SOMs and is needed for creating most of the images |
double |
getTau()
|
double |
getTau2()
|
HashMap<String,String> |
getTexts()
|
int |
getType()
gets the Type of the Testrunresult (HTML, LATEX) |
String |
getUnitFilePath()
|
Unit |
getUnitMappedTo(InputDatum input)
returns the unit the specified input item is mapped to |
SharedSOMVisualisationData |
getVisData()
helper function to initialize the Shared data object for visualizations |
String |
getWeightFilePath()
|
boolean |
hasMapDescription()
|
boolean |
hasPropertyFilenpath()
|
boolean |
hasUnitOn(int x,
int y)
|
private void |
prepareClassDistribution()
calculates for each unit on the SOM, how many members of each class are mapped to it the resulting value is stored in a 3-dim. |
private QuantizationError |
somQE()
returns the QuantizationError Object for the SOM specified by this TestRunResult Creates the some according to the data stored by this object, and returns the Quantization Error Object provided by the Layer (which can be retrieved from the GrowingSOM) |
boolean |
visualizeClassLayout(int[] meanUnit,
int[] mappedMeanVector,
int classId,
String outputDir)
creates an image that visualizes the "mean unit" of a class, its standard derivation and the unit onto which the mean weight vector of the class would be mapped Creates an image, that visualizes the units of the SOM. |
boolean |
visualizeCluster(int clusterLevel,
String outputDir,
int[] nodeDepths,
int preferredUnitSize)
creates a visualization of the given cluster the visualization is an image of the SOM, where the units are displayed, an the units belonging to the cluster are coloured. |
private boolean |
writeImagesAsJPG(String outputDir,
String filename,
BufferedImage buffImage,
String visName)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public QMContainer QMContainer
public DatasetInformation datasetInfo
private MySOMLibMapDescription mapDescription
private SOMProperties props
private String mapFilePath
private String unitFilePath
private String weightFilePath
private String propertyFilePath
private String dwFilePath
private HashMap<String,String> texts
protected SharedSOMVisualisationData visData
private SOMLibFormatInputReader inputReader
private int runId
private CommonSOMViewerStateData state
private ClusteringTree clusterTree
private GrowingSOM som
private ThematicClassMapVisualizer thematic_visualizer
public EntropyVisualizer entropy_visualizer
private SmoothedDataHistograms sdh_visualizer
private TrustwothinessVisualizer trustworthyness_visualizer
private TopographicProductVisualizer topographicproduct_visualizer
private int type
private int[][][] classDistribution
private MetroMapVisualizer metroVis
Constructor Detail |
---|
public TestRunResult(DatasetInformation datasetInfo, String mapFilePath, String propertyFilePath, String unitFilePath, String weightFilePath, String dwFilePath, int runId, int type, CommonSOMViewerStateData state)
public TestRunResult(DatasetInformation datasetInfo, String mapFilePath, String propertyFilePath, String unitFilePath, String weightFilePath, String dwFilePath, int runId, int type)
Method Detail |
---|
public DatasetInformation getDatasetInfo()
public String getMapFilePath()
public String getUnitFilePath()
public String getDWFilePath()
public String getWeightFilePath()
public int getRunId()
public int getNumberOfInputsOnUnit(int x, int y)
public boolean hasMapDescription()
public boolean hasPropertyFilenpath()
public String getPropertyFilePath()
public Object getMapProperty(String property)
public boolean hasUnitOn(int x, int y)
public double getSigma()
public double getTau()
public double getTau2()
public int getNumberOfMaps()
public MapQEContainer getMapMQE()
public MapQEContainer getMapMMQE()
public UnitQEContainer getMinUnitQE()
public double getMapTE()
public UnitQEContainer getMaxUnitTE()
public double getMapSilouette()
public int getNumberOfTElessUnits()
public int getNumberOfSilouettelessUnits()
public UnitQEContainer getMinUnitTE()
public UnitQEContainer getMinUnitSilouette()
public double getQEForUnit(int x, int y)
x
- the x-coordinate of the unit on the mapy
- the y-coordinate of the unit on the map
public UnitQEContainer getMaxUnitQE()
public UnitQEContainer getMinUnitMQE()
public double getMQEForUnit(int x, int y)
x
- the x-coordinate of the unit on the mapy
- the y-coordinate of the unit on the map
public UnitQEContainer getMaxUnitMQE()
public Unit getUnitMappedTo(InputDatum input)
input
- the input item, for which the unit it is mapped to shall be returned
public InputQEContainer getInputMappedQE(String name)
name
- the name specifying the input vector
public int[] getMappedUnit(double[] vector)
vector
- the vector of the item that shall be mapped to the unit
public int[] getClassMeanUnit(int classId)
classId
- the id of the class for which the mean unit shall be calculated
public boolean visualizeClassLayout(int[] meanUnit, int[] mappedMeanVector, int classId, String outputDir)
meanUnit
- [0]: the x coordinate of the mean unit, [1]: the y coordinate, [2]: the derivation in
x-direction, [3]: the derivation in y directionmappedMeanVector
- [0]: the x coordinate of the unit onto which the mean weight vector of the class would be
mapped, [1]: the y coordinateclassId
- the id of the class for which the image shall be madeoutputDir
- the directory into which the image shall be saved. (neither checked nor created)public InputQEContainer getInputWinnerQE(String name)
name
- the name specifying the input vectorpublic InputQEContainer getMinInputMappedQE()
public InputQEContainer getMaxInputMappedQE()
public InputQEContainer getMinInputWinnerQE()
public InputQEContainer getMaxInputWinnerQE()
public ClusterNode getClusterNodes(int level, int numbClusters)
level
- the level for which the cluster node shall be returnednumbClusters
- should be 1
private QuantizationError somQE()
public GrowingSOM getGrowingSOM()
public int[] getClassPurity1()
public String getClassPurity2(int[] purity)
purity
- an array storing at each index i how many units exist that have items of i different classes mapped
onto it
public SharedSOMVisualisationData getVisData()
public boolean createClassDistributionImage(String outputDir, String filename, int ClassID)
outputDir
- string defining the output directory where the image shall be saved (neither checked nor
created)filename
- the filename that shall be used for saving the image (run_RUNID_ is prefixed)ClassID
- Specifies the Class to be shown, when ClasID is -1, teh whoel class dictribution image is painted
public boolean createDMatrixImage(String outputDir, String filename, int unitScale)
private boolean writeImagesAsJPG(String outputDir, String filename, BufferedImage buffImage, String visName)
private int getSomYSize()
private int getSomXSize()
public boolean createQuantizationErrorImage(String outputDir, String filename, int variant)
outputDir
- the path to the output dir where the image shall be saved (must exists, is neither checked nor
created)filename
- the name under which the image (together with the prefix run_[runId]_ ) is savedvariant
- 0 = normal, 1 =mean Quant
public boolean createSilouetteImage(String outputDir, String filename, int variant)
public boolean createTopographicErrorImage(String outputDir, String filename)
outputDir
- the path to the output dir where the image shall be saved (must exists, is neither checked nor
created)filename
- the name under which the image (together with the prefix run_[runId]_ ) is saved
public boolean createIntrinsicDistanceImage(String outputDir, String filename)
public boolean createUDMatrixImage(String outputDir, String filename, int unitScale, int index)
outputDir
- the path to the output dir where the image shall be saved (must exists, is neither checked nor
createdfilename
- the name under which the image (together with the prefix run_[runId]_ ) is savedunitScale
- defines how many pixels shall be used to represent one unit (so one unit has size
unitScalexunitScale pixelsindex
- which visualisation to create; 0 = U Matrix, 1 = D Matrix;
public boolean createFlowBorderLineImage(String outputDir, String filename, int unitScale)
outputDir
- the path to the output dir where the image shall be saved (must exists, is neither checked nor
createdfilename
- the name under which the image (together with the prefix run_[runId]_ ) is savedunitScale
- defines how many pixels shall be used to represent one unit (so one unit has size
unitScalexunitScale pixels
public boolean createDistortionImage(String outputDir, String filename, int unitScale, int index)
outputDir
- the path to the output dir where the image shall be saved (must exists, is neither checked nor
createdfilename
- the name under which the image (together with the prefix run_[runId]_ ) is savedunitScale
- defines how many pixels shall be used to represent one unit (so one unit has size
unitScalexunitScale pixelsindex
- the index
public void createSDHImages(String outputDir, String filename, int unitScale, boolean Latex, int step)
outputDir
- the path to the output dir where the image shall be saved (must exists, is neither checked nor
createdfilename
- the name under which the image (together with the prefix run_[runId]_ ) is savedunitScale
- defines how many pixels shall be used to represent one unit (so one unit has size
unitScalexunitScale pixelsLatex
- used for latex outputpublic void createTrustworthyNessImages(String outputDir, String filename, int unitScale, boolean Latex, int step)
outputDir
- the path to the output dir where the image shall be saved (must exists, is neither checked nor
createdfilename
- the name under which the image (together with the prefix run_[runId]_ ) is savedunitScale
- defines how many pixels shall be used to represent one unit (so one unit has size
unitScalexunitScale pixelsLatex
- used for latex outputpublic void createTopographicProductImages(String outputDir, String filename, int unitScale, boolean Latex, int step)
outputDir
- the path to the output dir where the image shall be saved (must exists, is neither checked nor
createdfilename
- the name under which the image (together with the prefix run_[runId]_ ) is savedunitScale
- defines how many pixels shall be used to represent one unit (so one unit has size
unitScalexunitScale pixelsLatex
- used for latex outputpublic boolean createInputDistributionImage(String outputDir, String filename)
outputDir
- the path to the output dir where the image shall be saved (must exists, is neither checked nor
createdfilename
- the name under which the image (together with the prefix run_[runId]_ ) is savedpublic boolean createSingleMetroMapComponentImage(String outputDir, String filename, int component)
public boolean createEntropyImage(String outputDir, String filename, int ClassID)
ClassID
- if ClassID is set to -1, the Picture generated by default is that of all classes of the SOM. If
ClassID is > -1, the Class with the specified ClassID-index is displayedpublic void createPaletteImage(String outputDir, String filename, String palName)
private void prepareClassDistribution()
public void createPieChartImages(String outputDir)
outputDir
- the path to the output dir where the image shall be saved (must exists, is neither checked nor
createdpublic ClusteringTree getClusterTree()
public Vector<double[]> getStableClusters2(ClusterNode node, double parentValue, int boundary, Vector<double[]> stableClusterList)
node
- the node in the cluster tree, whose subtree shall be scanned throughparentValue
- the value of the quality measure in the parent nodeboundary
- a boundary for the level of clusters, where the calculation shall be stopped, that is a boundary
for the depth the subtree of node shall be scannedstableClusterList
- a sorted list of clusters, into which the clusters of this subtree shall be inserted-
public int[] getClassDistributionInCluster(int clusterLevel)
clusterLevel
- the level of the cluster
public boolean visualizeCluster(int clusterLevel, String outputDir, int[] nodeDepths, int preferredUnitSize)
clusterLevel
- the level of the cluster to be visualized (uniquly identifies the cluster within the tree)outputDir
- the path to the output dir where the image shall be saved (must exists, is neither checked nor
creatednodeDepths
- the array containing the depths of the cluster nodes in the cluster tree. Read warning above!!!preferredUnitSize
- the length a unit-side has in the ideal case (that is if there aren't too many units),
that is, a unit gets dimenstions preferredUnitSizexpreferredUnitSize
protected SOMLibFormatInputReader getInputReader()
private CommonSOMViewerStateData getStateObject()
public Vector<double[]> getStableClusters1(ClusterNode node, int count, int boundary, Vector<double[]> stableClusterList)
public Vector<double[]> getStableClusters3(ClusterNode node, double parentValue, int boundary, Vector<double[]> stableClusterList)
public int[] getClassRangesInUnits()
public double getMeanClassSpread()
public double getRegionEntropyError(int mode)
mode
- (1 = max, 2 = min)public String[][] getMaxEErrorRegionNames()
public double getPercOfZeroEntropyRegions()
public double getClassEntropy(int index)
public int getMaximumEEClassIndex()
public HashMap<String,String> getTexts()
public String[][] getClassMix(int index)
public int getType()
public int getSOMDimensions()
public int[] getClassesForUnit(int x, int y)
public int[][][] getClassDistribution()
public ArrayList<int[]> getAllUnitsContainingClass(int index)
public int getNumberofClasses()
public void fillQMContainer() throws QualityMeasureNotFoundException
QualityMeasureNotFoundException
public QMContainer getQMContainer()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |