1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
| private void save()
{
//transferer tout les données dans un datatable
//tag
List<Tag> tags = db.getTags();
tag = new DataTable("Tags");
tag.Columns.Add("id");
tag.Columns.Add("tag");
tag.Columns.Add("name");
foreach (Tag t in tags)
{
string[] values=new string[]{t.index.ToString(),t.tagName,t.variableName};
tag.Rows.Add(values);
}
//data PCA
dataPCA = tableData.getDataView(tags);
dataPCA.TableName = "data_PCA";
//reformater l'entête des colonnes
for (int i = 0; i < dataPCA.Columns.Count; i++)
{
if (!dataPCA.Columns[i].ColumnName.Equals("Date"))
{
dataPCA.Columns[i].ColumnName = Regex.Split(dataPCA.Columns[i].ColumnName, "\r\n")[1];
}
}
//Model overview
Double[] percent = pca.getVariabilityPercent();
modelOverview = new DataTable("PCA_PERCENT_data_PCA");
modelOverview.Columns.Add("componentPercent");
for (int i = 0; i < percent.GetLength(0); i++)
{
modelOverview.Rows.Add(percent[i]);
}
//Variable loadings
object coeff = pca.variable_loadings;
object lattent = pca.component_variances;
object value = new object();
object circle_x = new object();
object circle_y = new object();
loading_circle.loading_circleClass circle = new loading_circle.loading_circleClass();
circle.Loading(3, ref value, ref circle_x, ref circle_y, coeff, lattent);
double[,] v = (double[,])value;
//Scores
double[,] scoresPCA = (double[,])pca.scores;
loadings = new DataTable("PCA_VAR_data_PCA");
scores = new DataTable("scores");
for (int i = 0; i < v.GetLength(1); i++)
{
loadings.Columns.Add("component" + i);
scores.Columns.Add("component" + i);
}
for (int i = 1; i <= v.GetLength(0); i++)
{
object[] table = new object[v.GetLength(1)];
for (int j = 1; j <= v.GetLength(1); j++)
{
table[j - 1] = v.GetValue(i, j);
}
loadings.Rows.Add(table);
}
for (int i = 1; i <= scoresPCA.GetLength(0); i++)
{
object[] tableScores = new object[scoresPCA.GetLength(1)];
for (int j = 1; j <= scoresPCA.GetLength(1); j++)
{
tableScores[j - 1] = scoresPCA.GetValue(i, j);
}
scores.Rows.Add(tableScores);
}
//Hotelling T2
Double[] t2 = pca.getHotellingT2();
hottelingT2 = new DataTable("PCA_T2_data_PCA");
hottelingT2.Columns.Add("t2Value");
for (int i = 0; i < t2.Length; i++)
{
hottelingT2.Rows.Add(t2[i]);
}
// Create new SaveFileDialog object
SaveFileDialog DialogSave = new SaveFileDialog();
// Default file extension
DialogSave.DefaultExt = "txt";
// Available file extensions
DialogSave.Filter = "worksheet (*.xls)|*.xls|csv (*.csv)|*.csv";
// Adds a extension if the user does not
DialogSave.AddExtension = true;
// Restores the selected directory, next time
DialogSave.RestoreDirectory = true;
// Dialog title
DialogSave.Title = "Save data analysis";
// Startup directory
DialogSave.InitialDirectory = projectName;//@"C:/";
// Show the dialog and process the result
if (DialogSave.ShowDialog() == DialogResult.OK)
{
fileName = DialogSave.FileName;
ProgressForm progressForm = new ProgressForm(pcaWorker);
progressForm.MdiParent = this;
progressForm.Show();
pcaWorker.RunWorkerAsync("save");
}
DialogSave.Dispose();
DialogSave = null;
//transférer les données dans un fichier cvs
} |
Partager