function result = run_PLST(X,Label,train_sq,test_sq,address, k_comp)
if nargin<5
    k_comp = 4;
end

prob.num_label = size(Label,2);
prob.Dim = size(X,2);%size(X,2)
for i=1:5

    % Calling the main function LEAD
    prob.X = X(train_sq{i},:);
    prob.y = Label(train_sq{i},:);
    prob.X_te = X(test_sq{i},:);
    prob.y_te = Label(test_sq{i},:);
    prob.num_inst = size(prob.X,1);
    prob.num_inst_te = size(prob.X_te,1);
[w, y_pred] = PLST(prob.X, prob.y,prob.X_te,prob.y_te,k_comp,0.001,0.5);
[HammingLoss, Macro_F1, Micro_F1, Macro_Precision, Micro_Precision,  Macro_Recall, Micro_Recall, F_all, Precision_all, Recall_all] = compute_measures(y_pred, Label(test_sq{i},:));
    result.HammingLoss(i) = HammingLoss
    result.Macro_F1(i) = Macro_F1;
    result.Micro_F1(i) = Micro_F1;
    result.Precision_all(i) = Precision_all;
    result.Recall_all(i) = Recall_all;
end


result.mean_HammingLoss = mean(result.HammingLoss);
result.mean_Macro_F1 = mean(result.Macro_F1);
result.mean_Micro_F1 = mean(result.Micro_F1);
result.mean_Precision_all = mean(result.Precision_all);
result.mean_Recall_all = mean(result.Recall_all);

result.std_HammingLoss = std(result.HammingLoss);
result.std_Macro_F1 = std(result.Macro_F1);
result.std_Micro_F1 = std(result.Micro_F1);
result.std_Precision_all = std(result.Precision_all);
result.std_Recall_all = std(result.Recall_all);
save(address,'result');