/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the machinelearning-2014-12-12.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.MachineLearning.Model
{
    /// 
    /// Represents the output of a GetEvaluation operation and describes an Evaluation.
    /// 
    public partial class GetEvaluationResponse : AmazonWebServiceResponse
    {
        private long? _computeTime;
        private DateTime? _createdAt;
        private string _createdByIamUser;
        private string _evaluationDataSourceId;
        private string _evaluationId;
        private DateTime? _finishedAt;
        private string _inputDataLocationS3;
        private DateTime? _lastUpdatedAt;
        private string _logUri;
        private string _message;
        private string _mlModelId;
        private string _name;
        private PerformanceMetrics _performanceMetrics;
        private DateTime? _startedAt;
        private EntityStatus _status;
        /// 
        /// Gets and sets the property ComputeTime. 
        /// 
        /// The approximate CPU time in milliseconds that Amazon Machine Learning spent processing
        /// the Evaluation, normalized and scaled on computation resources. ComputeTime
        /// is only available if the Evaluation is in the COMPLETED
        /// state.
        /// 
        /// 
        public long ComputeTime
        {
            get { return this._computeTime.GetValueOrDefault(); }
            set { this._computeTime = value; }
        }
        // Check to see if ComputeTime property is set
        internal bool IsSetComputeTime()
        {
            return this._computeTime.HasValue; 
        }
        /// 
        /// Gets and sets the property CreatedAt. 
        /// 
        /// The time that the Evaluation was created. The time is expressed in epoch
        /// time.
        /// 
        /// 
        public DateTime CreatedAt
        {
            get { return this._createdAt.GetValueOrDefault(); }
            set { this._createdAt = value; }
        }
        // Check to see if CreatedAt property is set
        internal bool IsSetCreatedAt()
        {
            return this._createdAt.HasValue; 
        }
        /// 
        /// Gets and sets the property CreatedByIamUser. 
        /// 
        /// The AWS user account that invoked the evaluation. The account type can be either an
        /// AWS root account or an AWS Identity and Access Management (IAM) user account.
        /// 
        /// 
        public string CreatedByIamUser
        {
            get { return this._createdByIamUser; }
            set { this._createdByIamUser = value; }
        }
        // Check to see if CreatedByIamUser property is set
        internal bool IsSetCreatedByIamUser()
        {
            return this._createdByIamUser != null;
        }
        /// 
        /// Gets and sets the property EvaluationDataSourceId. 
        /// 
        /// The DataSource used for this evaluation.
        /// 
        /// 
        [AWSProperty(Min=1, Max=64)]
        public string EvaluationDataSourceId
        {
            get { return this._evaluationDataSourceId; }
            set { this._evaluationDataSourceId = value; }
        }
        // Check to see if EvaluationDataSourceId property is set
        internal bool IsSetEvaluationDataSourceId()
        {
            return this._evaluationDataSourceId != null;
        }
        /// 
        /// Gets and sets the property EvaluationId. 
        /// 
        /// The evaluation ID which is same as the EvaluationId in the request.
        /// 
        /// 
        [AWSProperty(Min=1, Max=64)]
        public string EvaluationId
        {
            get { return this._evaluationId; }
            set { this._evaluationId = value; }
        }
        // Check to see if EvaluationId property is set
        internal bool IsSetEvaluationId()
        {
            return this._evaluationId != null;
        }
        /// 
        /// Gets and sets the property FinishedAt. 
        /// 
        /// The epoch time when Amazon Machine Learning marked the Evaluation as
        /// COMPLETED or FAILED. FinishedAt is only available
        /// when the Evaluation is in the COMPLETED or FAILED
        /// state.
        /// 
        /// 
        public DateTime FinishedAt
        {
            get { return this._finishedAt.GetValueOrDefault(); }
            set { this._finishedAt = value; }
        }
        // Check to see if FinishedAt property is set
        internal bool IsSetFinishedAt()
        {
            return this._finishedAt.HasValue; 
        }
        /// 
        /// Gets and sets the property InputDataLocationS3. 
        /// 
        /// The location of the data file or directory in Amazon Simple Storage Service (Amazon
        /// S3).
        /// 
        /// 
        [AWSProperty(Max=2048)]
        public string InputDataLocationS3
        {
            get { return this._inputDataLocationS3; }
            set { this._inputDataLocationS3 = value; }
        }
        // Check to see if InputDataLocationS3 property is set
        internal bool IsSetInputDataLocationS3()
        {
            return this._inputDataLocationS3 != null;
        }
        /// 
        /// Gets and sets the property LastUpdatedAt. 
        /// 
        /// The time of the most recent edit to the Evaluation. The time is expressed
        /// in epoch time.
        /// 
        /// 
        public DateTime LastUpdatedAt
        {
            get { return this._lastUpdatedAt.GetValueOrDefault(); }
            set { this._lastUpdatedAt = value; }
        }
        // Check to see if LastUpdatedAt property is set
        internal bool IsSetLastUpdatedAt()
        {
            return this._lastUpdatedAt.HasValue; 
        }
        /// 
        /// Gets and sets the property LogUri. 
        /// 
        /// A link to the file that contains logs of the CreateEvaluation operation.
        /// 
        /// 
        public string LogUri
        {
            get { return this._logUri; }
            set { this._logUri = value; }
        }
        // Check to see if LogUri property is set
        internal bool IsSetLogUri()
        {
            return this._logUri != null;
        }
        /// 
        /// Gets and sets the property Message. 
        /// 
        /// A description of the most recent details about evaluating the MLModel.
        /// 
        /// 
        [AWSProperty(Max=10240)]
        public string Message
        {
            get { return this._message; }
            set { this._message = value; }
        }
        // Check to see if Message property is set
        internal bool IsSetMessage()
        {
            return this._message != null;
        }
        /// 
        /// Gets and sets the property MLModelId. 
        /// 
        /// The ID of the MLModel that was the focus of the evaluation.
        /// 
        /// 
        [AWSProperty(Min=1, Max=64)]
        public string MLModelId
        {
            get { return this._mlModelId; }
            set { this._mlModelId = value; }
        }
        // Check to see if MLModelId property is set
        internal bool IsSetMLModelId()
        {
            return this._mlModelId != null;
        }
        /// 
        /// Gets and sets the property Name. 
        /// 
        /// A user-supplied name or description of the Evaluation. 
        /// 
        /// 
        [AWSProperty(Max=1024)]
        public string Name
        {
            get { return this._name; }
            set { this._name = value; }
        }
        // Check to see if Name property is set
        internal bool IsSetName()
        {
            return this._name != null;
        }
        /// 
        /// Gets and sets the property PerformanceMetrics. 
        /// 
        /// Measurements of how well the MLModel performed using observations referenced
        /// by the DataSource. One of the following metric is returned based on the
        /// type of the MLModel: 
        /// 
        ///   -  
        /// 
        /// BinaryAUC: A binary 
MLModel uses the Area Under the Curve (AUC) technique
        /// to measure performance. 
        /// 
        ///    -  
        /// 
        /// RegressionRMSE: A regression 
MLModel uses the Root Mean Square Error
        /// (RMSE) technique to measure performance. RMSE measures the difference between predicted
        /// and actual values for a single variable.
        /// 
        ///    -  
        /// 
        /// MulticlassAvgFScore: A multiclass 
MLModel uses the F1 score technique
        /// to measure performance. 
        /// 
        ///    
 
        /// 
        ///  For more information about performance metrics, please see the Amazon
        /// Machine Learning Developer Guide. 
        /// 
        /// 
        public PerformanceMetrics PerformanceMetrics
        {
            get { return this._performanceMetrics; }
            set { this._performanceMetrics = value; }
        }
        // Check to see if PerformanceMetrics property is set
        internal bool IsSetPerformanceMetrics()
        {
            return this._performanceMetrics != null;
        }
        /// 
        /// Gets and sets the property StartedAt. 
        /// 
        /// The epoch time when Amazon Machine Learning marked the Evaluation as
        /// INPROGRESS. StartedAt isn't available if the Evaluation
        /// is in the PENDING state.
        /// 
        /// 
        public DateTime StartedAt
        {
            get { return this._startedAt.GetValueOrDefault(); }
            set { this._startedAt = value; }
        }
        // Check to see if StartedAt property is set
        internal bool IsSetStartedAt()
        {
            return this._startedAt.HasValue; 
        }
        /// 
        /// Gets and sets the property Status. 
        /// 
        /// The status of the evaluation. This element can have one of the following values:
        /// 
        ///   -  
        /// 
        ///  
PENDING - Amazon Machine Language (Amazon ML) submitted a request to
        /// evaluate an MLModel.
        /// 
        ///    -  
        /// 
        ///  
INPROGRESS - The evaluation is underway.
        /// 
        ///    -  
        /// 
        ///  
FAILED - The request to evaluate an MLModel did not run
        /// to completion. It is not usable.
        /// 
        ///    -  
        /// 
        ///  
COMPLETED - The evaluation process completed successfully.
        /// 
        ///    -  
        /// 
        ///  
DELETED - The Evaluation is marked as deleted. It is not
        /// usable.
        /// 
        ///    
        /// 
        public EntityStatus Status
        {
            get { return this._status; }
            set { this._status = value; }
        }
        // Check to see if Status property is set
        internal bool IsSetStatus()
        {
            return this._status != null;
        }
    }
}