Skip to content
This repository has been archived by the owner on Jul 23, 2022. It is now read-only.

Commit

Permalink
update submodule and modify the code to make it work
Browse files Browse the repository at this point in the history
  • Loading branch information
sdpython committed Oct 8, 2018
1 parent d80680e commit 64b16f0
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 61 deletions.
15 changes: 12 additions & 3 deletions build.cmd
Expand Up @@ -10,24 +10,33 @@ set PATH=%PATH%;%ppythonpath%
set PYTHONPATH=%~dp0..\pyquickhelper\src

cd cscode\machinelearning
if "%1" == "ml" goto buildrelease:
if exist bin\x64.Release goto mldeb:
@echo [build.cmd] build machinelearning release
:buildrelease:
cmd /C build.cmd -release
if %errorlevel% neq 0 exit /b %errorlevel%
:mldeb:
if "%1" == "ml" goto builddebug:
if exist bin\x64.Debug goto mlrel:
:builddebug:
@echo [build.cmd] build machinelearning debug
cmd /C build.cmd -debug
if %errorlevel% neq 0 exit /b %errorlevel%
:mlrel:
cd ..\..

if not exist cscode\machinelearning\bin\x64.Debug goto copymlrel:
@echo [build.cmd] copy binaries for machinelearning
if "%1" == "ml" goto copydebug:
if exist cscode\machinelearning\bin\x64.Debug goto copymlrel:
:copydebug:
@echo [build.cmd] copy debug binaries for machinelearning
python -u setup.py copybinml debug
if %errorlevel% neq 0 exit /b %errorlevel%
:copymlrel:
if not exist cscode\machinelearning\bin\x64.Release goto copybin:
if "%1" == "ml" goto copyrelease:
if exist cscode\machinelearning\bin\x64.Release goto copybin:
:copyrelease:
@echo [build.cmd] copy release binaries for machinelearning
python -u setup.py copybinml release
if %errorlevel% neq 0 exit /b %errorlevel%

Expand Down
18 changes: 9 additions & 9 deletions cscode/CSharPyMLExtension/DataFrameHelper.cs
Expand Up @@ -59,7 +59,7 @@ public static void AddColumnToDataFrameFloat64(DataFrame df, string name, double
df.AddColumn(name, cpy);
}

public static void AddColumnToDataFramestring(DataFrame df, string name, string[] values)
public static void AddColumnToDataFrameString(DataFrame df, string name, string[] values)
{
var bval = new DvText[values.Length];
for (int i = 0; i < values.Length; ++i)
Expand Down Expand Up @@ -129,63 +129,63 @@ public static string DataFrameToString(DataFrame df)
return df.ToString();
}

public static bool[] DataFrameColumnToArrrayBool(DataFrame df, int i)
public static bool[] DataFrameColumnToArrayBool(DataFrame df, int i)
{
var col = df.GetColumn(i).Column as DataColumn<bool>;
if (col == null)
throw new TypeError($"Column {i} is not of type bool.");
return col.Data;
}

public static int[] DataFrameColumnToArrrayInt(DataFrame df, int i)
public static int[] DataFrameColumnToArrayInt(DataFrame df, int i)
{
var col = df.GetColumn(i).Column as DataColumn<int>;
if (col == null)
throw new TypeError($"Column {i} is not of type int.");
return col.Data;
}

public static uint[] DataFrameColumnToArrrayUint(DataFrame df, int i)
public static uint[] DataFrameColumnToArrayUint(DataFrame df, int i)
{
var col = df.GetColumn(i).Column as DataColumn<uint>;
if (col == null)
throw new TypeError($"Column {i} is not of type uint.");
return col.Data;
}

public static Int64[] DataFrameColumnToArrrayInt64(DataFrame df, int i)
public static Int64[] DataFrameColumnToArrayInt64(DataFrame df, int i)
{
var col = df.GetColumn(i).Column as DataColumn<Int64>;
if (col == null)
throw new TypeError($"Column {i} is not of type Int64.");
return col.Data;
}

public static float[] DataFrameColumnToArrrayFloat(DataFrame df, int i)
public static float[] DataFrameColumnToArrayFloat(DataFrame df, int i)
{
var col = df.GetColumn(i).Column as DataColumn<float>;
if (col == null)
throw new TypeError($"Column {i} is not of type float.");
return col.Data;
}

public static double[] DataFrameColumnToArrrayFloat64(DataFrame df, int i)
public static double[] DataFrameColumnToArrayFloat64(DataFrame df, int i)
{
var col = df.GetColumn(i).Column as DataColumn<double>;
if (col == null)
throw new TypeError($"Column {i} is not of type double.");
return col.Data;
}

public static DvText[] DataFrameColumnToArrrayDvText(DataFrame df, int i)
public static DvText[] DataFrameColumnToArrayDvText(DataFrame df, int i)
{
var col = df.GetColumn(i).Column as DataColumn<DvText>;
if (col == null)
throw new TypeError($"Column {i} is not of type string.");
return col.Data;
}

public static string[] DataFrameColumnToArrraystring(DataFrame df, int i)
public static string[] DataFrameColumnToArrayString(DataFrame df, int i)
{
var col = df.GetColumn(i).Column as DataColumn<DvText>;
if (col == null)
Expand Down
2 changes: 1 addition & 1 deletion cscode/CSharPyMLExtension/EnvHelper.cs
Expand Up @@ -2,7 +2,7 @@

using System;
using Microsoft.ML.Runtime;
using Scikit.ML.ScikitAPI;
using Scikit.ML.PipelineHelper;


namespace CSharPyMLExtension
Expand Down
2 changes: 1 addition & 1 deletion cscode/CSharPyMLExtension/PyMamlHelper.cs
Expand Up @@ -24,7 +24,7 @@ public static class PyMamlHelper
{
public static string MamlAll(string script, bool catch_output)
{
return MamlHelper.MamlAll(script, catch_output);
return MamlHelper.MamlScript(script, catch_output);
}

public static string[] GetAllKinds()
Expand Down
66 changes: 27 additions & 39 deletions setup.py
Expand Up @@ -313,57 +313,29 @@ def copy_assemblies(lib=None, version="Release"):
"""
from pyquickhelper.filehelper import synchronize_folder
if lib == 'ml':
folders = ['cscode/machinelearning/bin/x64.%s/Native' % version,
'cscode/machinelearning/packages/google.protobuf',
'cscode/machinelearning/packages/lightgbm',
'cscode/machinelearning/packages/netstandard.library',
'cscode/machinelearning/packages/newtonsoft.json',
'cscode/machinelearning/packages/parquet.net',
'cscode/machinelearning/packages/system.codedom',
'cscode/machinelearning/packages/system.collections',
'cscode/machinelearning/packages/system.collections.concurrent',
'cscode/machinelearning/packages/system.collections.immutable',
'cscode/machinelearning/packages/system.collections.nongeneric',
'cscode/machinelearning/packages/system.diagnostics.contracts',
'cscode/machinelearning/packages/system.diagnostics.stacktrace',
'cscode/machinelearning/packages/system.diagnostics.tools',
'cscode/machinelearning/packages/system.dynamic.runtime',
'cscode/machinelearning/packages/system.globalization',
'cscode/machinelearning/packages/system.io',
'cscode/machinelearning/packages/system.linq',
'cscode/machinelearning/packages/system.memory',
'cscode/machinelearning/packages/system.reflection',
'cscode/machinelearning/packages/system.reflection.emit',
'cscode/machinelearning/packages/system.runtime',
'cscode/machinelearning/packages/system.runtime.compilerservices.unsafe',
'cscode/machinelearning/packages/system.runtime.extensions',
'cscode/machinelearning/packages/system.runtime.interopservices',
'cscode/machinelearning/packages/system.runtime.loader',
'cscode/machinelearning/packages/system.runtime.serialization.formatters',
'cscode/machinelearning/packages/system.runtime.serialization.json',
'cscode/machinelearning/packages/system.runtime.serialization.primitives',
'cscode/machinelearning/packages/system.reflection',
'cscode/machinelearning/packages/system.threading',
'cscode/machinelearning/packages/system.threading.tasks',
'cscode/machinelearning/packages/system.threading.tasks.dataflow',
'cscode/machinelearning/packages/system.valuetuple',
]
for lib in ["Microsoft.ML.Console",
folders = []
for lib in ["Microsoft.ML.Api",
"Microsoft.ML.Console",
"Microsoft.ML.DnnAnalyzer",
"Microsoft.ML.Ensemble",
"Microsoft.ML.FastTree",
"Microsoft.ML.HalLearners",
"Microsoft.ML.ImageAnalytics",
"Microsoft.ML.KMeansClustering",
"Microsoft.ML.Legacy",
"Microsoft.ML.LightGBM",
"Microsoft.ML.Maml",
"Microsoft.ML.Onnx",
"Microsoft.ML.OnnxTransform",
"Microsoft.ML.PCA",
"Microsoft.ML.PipelineInference",
"Microsoft.ML.TensorFlow",
"Microsoft.ML.Transforms",
"Microsoft.ML.StandardLearners",
"Microsoft.ML.Sweeper",
"Microsoft.ML.Timeseries",
]:
folders.append('cscode/machinelearning/bin/AnyCPU.%s/%s' % (version, lib))

dests = ['cscode/bin/machinelearning/%s' % version,
'cscode/machinelearningext/machinelearning/dist/%s' % version,
]
Expand All @@ -374,7 +346,7 @@ def copy_assemblies(lib=None, version="Release"):
'EntryPoints',
'ScikitAPI',
]:
folders.append('cscode/machinelearningext/machinelearningext/%s/bin/%s' % (sub, version))
folders.append('cscode/machinelearningext/machinelearningext/bin/AnyCPU.%s/%s/netstandard2.0' % (version, sub))

dests = ['cscode/bin/machinelearningext/%s' % version,
'src/csharpyml/binaries/%s' % version,
Expand All @@ -383,7 +355,18 @@ def copy_assemblies(lib=None, version="Release"):
folders = ['cscode/bin/machinelearning/%s' % version,
'cscode/bin/machinelearningext/%s' % version,
'cscode/CSharPyMLExtension/bin/%s' % version]
rootpkg = "cscode/machinelearning/packages"
folders.extend([
os.path.join(rootpkg, "newtonsoft.json", "10.0.3", "lib", "netstandard1.3"),
os.path.join(rootpkg, "system.memory", "4.5.1", "lib", "netstandard2.0"),
os.path.join(rootpkg, "system.runtime.compilerservices.unsafe", "4.5.0", "lib", "netstandard2.0"),
os.path.join(rootpkg, "system.collections.immutable", "1.5.0", "lib", "netstandard2.0"),
os.path.join(rootpkg, "system.collections.immutable", "1.5.0", "lib", "netstandard2.0"),
os.path.join(rootpkg, "system.numerics.vectors", "4.4.0", "lib", "netstandard2.0"),
])

dests = ['src/csharpyml/binaries/%s' % version]

for dest in dests:
if not os.path.exists(dest):
os.makedirs(dest)
Expand All @@ -409,6 +392,11 @@ def copy_assemblies(lib=None, version="Release"):
"Unable to find a suitable folder binaries '{0}'".format(fold))
print("[csharpyml.copy] '{0}' -> '{1}'".format(found, dest))
synchronize_folder(found, dest, fLOG=print, no_deletion=True)

if lib not in ('ml', 'mlext'):
check_existence = "src/csharpyml/binaries/%s/System.Numerics.Vectors.dll" % version
if not os.path.exists(check_existence):
raise FileNotFoundError("Unable to find '{0}'.".format(check_existence))


if not r:
Expand Down
14 changes: 7 additions & 7 deletions src/csharpyml/binaries/cs_dataframe.py
Expand Up @@ -202,25 +202,25 @@ def to_df(self):
kind = ctype.ToString()
if kind == 'I4':
data[name] = list(
cl.DataFrameColumnToArrrayint32(obj, i))
cl.DataFrameColumnToArrayInt(obj, i))
apply.append((name, numpy.int32))
elif kind == 'U4' or ctype.IsKey:
data[name] = list(cl.DataFrameColumnToArrrayuint32(obj, i))
data[name] = list(cl.DataFrameColumnToArrayUint32(obj, i))
elif kind == 'I8':
data[name] = list(
cl.DataFrameColumnToArrrayint64(obj, i))
cl.DataFrameColumnToArrayInt64(obj, i))
elif kind == 'R4':
data[name] = list(
cl.DataFrameColumnToArrrayfloat32(obj, i))
cl.DataFrameColumnToArrayFloat32(obj, i))
apply.append((name, numpy.float32))
elif kind == 'R8':
data[name] = list(
cl.DataFrameColumnToArrrayfloat64(obj, i))
cl.DataFrameColumnToArrayFloat64(obj, i))
elif kind in {'TX', 'Text'}:
data[name] = list(
cl.DataFrameColumnToArrraystring(obj, i))
cl.DataFrameColumnToArrayString(obj, i))
elif kind in {'BL', 'Bool'}:
data[name] = list(cl.DataFrameColumnToArrraybool(obj, i))
data[name] = list(cl.DataFrameColumnToArrayBool(obj, i))
else:
raise TypeError(
"Unable to handle type kind {0} for column {1}: '{2}'.".format(kind, i, name))
Expand Down

0 comments on commit 64b16f0

Please sign in to comment.