protected override void ProcessRecord()
{
if (Scope.ToLower() == "workspace")
{
WriteObject(Sdk.GetTrainedModels(GetWorkspaceSetting()), true);
return;
}
if (string.IsNullOrEmpty(ExperimentId))
{
WriteWarning("ExperimentId must be specified.");
return;
}
List<UserAsset> trainedModelsInWorkspace = new List<UserAsset>(Sdk.GetTrainedModels(GetWorkspaceSetting()));
Dictionary<string, UserAssetBase> trainedModelsInExperiment = new Dictionary<string, UserAssetBase>();
string rawJson;
Experiment exp = Sdk.GetExperimentById(GetWorkspaceSetting(), ExperimentId, out rawJson);
JavaScriptSerializer jss = new JavaScriptSerializer();
dynamic graph = jss.Deserialize<object>(rawJson);
foreach (var node in graph["Graph"]["ModuleNodes"])
foreach (var inputPort in node["InputPortsInternal"])
{
string id = inputPort["TrainedModelId"];
if (!string.IsNullOrEmpty(id))
{
string familyId = id.Split('.')[1];
UserAssetBase trainedModel = trainedModelsInWorkspace.SingleOrDefault(tm => tm.Id == id || tm.FamilyId == familyId);
if (trainedModel != null && !trainedModelsInExperiment.ContainsKey(id))
{
bool isLatest = (trainedModelsInWorkspace.SingleOrDefault(t => t.Id == id) != null);
trainedModelsInExperiment.Add(id, new UserAssetBase
{
Id = id,
FamilyId = familyId,
DataTypeId = trainedModel.DataTypeId,
IsLatest = isLatest,
Name = trainedModel.Name
});
}
}
}
WriteObject(trainedModelsInExperiment.Values, true);
}
}