| version 1.1, 2003/12/04 07:49:24 |
version 1.9, 2020/03/12 07:33:03 |
|
|
| % $OpenXM$ |
% $OpenXM: OpenXM/src/kan96xx/trans/polymake.sm1,v 1.8 2013/09/25 07:30:52 takayama Exp $ |
| % It is a polymake interface |
% It is a polymake interface |
| |
|
| /polymake.start { |
/@@@polymake.ask.which 1 def |
| |
/polymake.start { polymake.start.local } def |
| |
/polymake.start.local { |
| (ox.k0.loaded) boundp { } |
(ox.k0.loaded) boundp { } |
| { [(parse) (ox.sm1) pushfile] extension } ifelse |
{ [(parse) (ox.sm1) pushfile] extension |
| oxk0.ccc [ ] eq { |
/@@@polymake.k0.ccc [ ] def |
| k0connectr oxk0.ccc oxsetmathcap oxk0.ccc oxmathcap |
} ifelse |
| |
@@@polymake.k0.ccc [ ] eq { |
| |
k0connectr /@@@polymake.k0.ccc oxk0.ccc def /oxk0.ccc [ ] def |
| |
@@@polymake.k0.ccc oxsetmathcap @@@polymake.k0.ccc oxmathcap |
| } { } ifelse |
} { } ifelse |
| oxk0.ccc 0 get (closed) eq { |
@@@polymake.k0.ccc 0 get (closed) eq { |
| k0connectr oxk0.ccc oxsetmathcap oxk0.ccc oxmathcap |
k0connectr /@@@polymake.k0.ccc oxk0.ccc def /oxk0.ccc [ ] def |
| |
@@@polymake.k0.ccc oxsetmathcap @@@polymake.k0.ccc oxmathcap |
| } { } ifelse |
} { } ifelse |
| |
[(parse) ( 1 )] extension pop % BUG, dummy to avoid bus error on mac.2013.09.21 |
| |
@@@polymake.ask.which { |
| [(which) (polymake)] oxshell tag 0 eq { |
[(which) (polymake)] oxshell tag 0 eq { |
| [(export) (PATH) (=) (/usr/local/polymake/bin:${PATH})] oxshell |
[(export) (PATH) (=) (/usr/local/polymake/bin:${PATH})] oxshell |
| [(which) (polymake)] oxshell tag 0 eq { |
[(which) (polymake)] oxshell tag 0 eq { |
| (Polymake is not installed in this system.) error |
(Polymake is not installed in this system.) error |
| } { } ifelse |
} { } ifelse |
| } { } ifelse |
} { } ifelse |
| |
} { } ifelse |
| [(which) (polymake2tfb)] oxshell tag 0 eq { |
[(which) (polymake2tfb)] oxshell tag 0 eq { |
| (polymake2tfb is not installed in this system.) error |
(polymake2tfb is not installed in this system.) error |
| } { } ifelse |
} { } ifelse |
|
|
| % doPolymake |
% doPolymake |
| % [ tfb-string tree error] |
% [ tfb-string tree error] |
| [(doPolymake) |
[(doPolymake) |
| [(It calls polymake to make several construction for polytopes.) |
[(It calls polymake via oxshell and ox_k0 to make several construction for polytopes.) |
| ([action data_in_polymake_tfb_format] doPolymake ) |
([action data_in_polymake_tfb_format] doPolymake ) |
| ( [result_in_tfb result_in_tree errors]) |
( [result_in_tfb result_in_tree errors]) |
| (polymake, polymake2tfb, ox_k0 must be installed.) |
(polymake, polymake2tfb, ox_k0 must be installed.) |
| |
(cf. @@@polymake.k0.ccc, kan96xx/Doc/oxshell.*, kan96xx/trans/polymake.sm1, oxshell ) |
| |
(The variable @@@doPolymake.vars keeps session logs with the polymake) |
| |
(See also usePolymake.local, usePolymake.OoHG.native and usePolymake.OoHG.curl in cgi.sm1) |
| (Example:) |
(Example:) |
| % ( [(export) (PATH) (=) (/usr/local/polymake/bin:${PATH})] oxshell ) |
% ( [(export) (PATH) (=) (/usr/local/polymake/bin:${PATH})] oxshell ) |
| $ [(FACETS) (polymake.data(polymake.POINTS([[1,0,0],[1,1,0],[1,0,1],[1,0,0]])))]$ |
$ usePolymake.OoHG.curl polymake.start ; $ |
| |
$ [(FACETS) (polymake.data(polymake.POINTS([[1,0,0],[1,1,0],[1,0,1],[1,1,1/2]])))]$ |
| ( doPolymake /rr set ) |
( doPolymake /rr set ) |
| |
( Keys---properties are FACETS, CONE_DIM, LINEARITY_DIM, FEASIBLE, AFFINE_FULL, ... ) |
| ]] putUsages |
]] putUsages |
| /doPolymake { |
/doPolymake { doPolymake.local } def |
| |
/doPolymake.local { |
| /arg1 set |
/arg1 set |
| [/in-doPolymake /pAction /pData /pNative /ptree |
[/in-doPolymake /pAction /pData /pNative /ptree |
| /pResult /pError |
/pResult /pError |
|
|
| |
|
| /pError [ ] def |
/pError [ ] def |
| %% step 1: polymake tfb ===> polymake native data |
%% step 1: polymake tfb ===> polymake native data |
| oxk0.ccc ( polymake=Object; ) oxexecutestring |
@@@polymake.k0.ccc ( polymake=Object; ) oxexecutestring |
| oxk0.ccc ( QuoteMode(1); ) oxexecutestring |
@@@polymake.k0.ccc ( QuoteMode(1); ) oxexecutestring |
| oxk0.ccc [pData ( ;)] cat oxexecutestring |
@@@polymake.k0.ccc [pData ( ;)] cat oxexecutestring |
| oxk0.ccc oxpopcmo /ptree set |
@@@polymake.k0.ccc oxpopcmo /ptree set |
| oxk0.ccc ( QuoteMode(0); ) oxexecutestring |
@@@polymake.k0.ccc ( QuoteMode(0); ) oxexecutestring |
| [(treeToPolymake) ptree] extension /pNative set |
[(treeToPolymake) ptree] extension /pNative set |
| |
[ptree pNative pAction] /@@@doPolymake.vars set %for debug |
| %% step 2: calling the polymake |
%% step 2: calling the polymake |
| [(polymake) (stringInOut://pNative.poly) pAction] addStdoutStderr |
[(polymake) (stringInOut://pNative) pAction] addStdoutStderr |
| oxshell pop |
oxshell pop |
| pError [@@@stdout @@@stderr] append /pError set |
pError [@@@stdout @@@stderr] append /pError set |
| |
@@@doPolymake.vars [pNative @@@stdout] append /@@@doPolymake.vars set %for debug |
| |
@@@stdout /pNative set %output file of polymake is XML file. Use old output format. |
| %% step 3: polymake native data to polymake tfb |
%% step 3: polymake native data to polymake tfb |
| [(polymake2tfb) (<) (stringIn://pNative) (>) (stringOut://pResult) |
[(polymake2tfb) (<) (stringIn://pNative) (>) (stringOut://pResult) |
| (2>) (stringOut://@@@stderr)] oxshell pop |
(2>) (stringOut://@@@stderr)] oxshell pop |
| pError [@@@stderr] append /pError set |
pError [@@@stderr] append /pError set |
| %% step 4: get also tree style data. |
%% step 4: get also tree style data. |
| oxk0.ccc ( polymake=Object; ) oxexecutestring |
@@@polymake.k0.ccc ( polymake=Object; ) oxexecutestring |
| oxk0.ccc ( QuoteMode(1); ) oxexecutestring |
@@@polymake.k0.ccc ( QuoteMode(1); ) oxexecutestring |
| oxk0.ccc [pResult ( ;)] cat oxexecutestring |
@@@polymake.k0.ccc [pResult ( ;)] cat oxexecutestring |
| oxk0.ccc oxpopcmo /ptree set |
@@@polymake.k0.ccc oxpopcmo /ptree set |
| oxk0.ccc ( QuoteMode(0); ) oxexecutestring |
@@@polymake.k0.ccc ( QuoteMode(0); ) oxexecutestring |
| [pResult ptree pError] /arg1 set |
[pResult ptree pError] /arg1 set |
| |
] pop |
| |
popVariables |
| |
arg1 |
| |
} def |
| |
|
| |
[(tfbToTree) |
| |
[(tfb-expression-in-string tfbToTree tree) |
| |
(tfbToTree translates expressions in tfb/2 into tree form.) |
| |
(Bug: the input is parsed by k0, so the symbol name given agrees with) |
| |
( a k0 symbol, it returns a strange answer.) |
| |
$Example: ( C+intpath.circle(0,1/2) ) tfbToTree :: $ |
| |
]] putUsages |
| |
|
| |
/tfbToTree { |
| |
/arg1 set |
| |
[/in-tfbToTree /pAction /pData /pNative /ptree |
| |
/pResult /pError /i |
| |
] pushVariables |
| |
[ |
| |
arg1 /pData set |
| |
polymake.start |
| |
|
| |
/pError [ ] def |
| |
%% tfb ===> CMO tree. |
| |
@@@polymake.k0.ccc ( QuoteMode(1); ) oxexecutestring |
| |
@@@polymake.k0.ccc [pData ( ;)] cat oxexecutestring |
| |
@@@polymake.k0.ccc oxpopcmo /ptree set |
| |
@@@polymake.k0.ccc ( QuoteMode(0); ) oxexecutestring |
| |
/arg1 ptree def |
| ] pop |
] pop |
| popVariables |
popVariables |
| arg1 |
arg1 |