On Sunday, July 3, 2016 at 11:05:06 AM UTC+1, Dima Pasechnik wrote: > > > > On Sunday, July 3, 2016 at 1:21:18 AM UTC+1, saad khalid wrote: >> >> Well, here's what i tried and it doesn't seem to work after I build sage >> again. I added this code to the to_sage() function, >> elif cls_str == "Divide": >> self_Div = self >> div_Numerator = macaulay2('numerator self_Div') >> div_Denominator = macaulay2('denominator self_Div') >> div_Numerator = div_Numerator.sage_polystring() >> div_Denominator = div_Denominator.sage_polystring() >> sage_Div = div_Numerator/div_Denominator >> return sage_Div >> >> >> > self_Div is not known to M2 in any way, yet you try calling in M2 > 'numerator self_Div'. > You need a way to get the counterpart of 'self' in M2 somehow. >
Instead of self_Div = self div_Numerator = macaulay2('numerator self_Div') div_Denominator = macaulay2('denominator self_Div') use div_Numerator = self.numerator() div_Denominator = self.denominator() and it will be almost it (div_Denominator will be Product, and will need extra processing because of this) > > I added this after the main else statement. The code looks like rubbish to >> me but I didn't know what else to do, so i thought I'd show something and >> ask for improvements, if that's okay... When running the following code now >> in Sage, here is my error message: >> >> sage: macaulay2.eval(""" >> ....: K = toField(QQ[zet]/(zet^8 - zet^7 +zet^5 - zet^4 +zet^3 -zet + 1)) >> ....: A=matrix{{zet^1,0},{0,zet^14}} >> ....: needsPackage "InvariantRing" >> ....: G=generateGroup({A},K) >> ....: P = molienSeries G >> ....: """) >> K >> >> PolynomialRing >> >> | zet 0 | >> | 0 -zet^7+zet^6-zet^4+zet^3-zet^2+1 | >> >> 2 2 >> Matrix K <--- K >> >> InvariantRing >> >> Package >> >> {| 1 0 |, | -zet^7-zet^2 0 |, | zet^7 0 >> |, | zet^7-zet^6-zet^3+zet^2-1 0 |, | -zet^7+zet^6-zet^4+zet^3-zet^2+ >> 1 0 |, | zet 0 |, | -zet^6-zet 0 |, >> | zet^5 0 |, | zet^2 0 |, | zet^6 0 >> |, | zet^7-zet^5+zet^4-zet^3+zet-1 0 |, | zet^4 0 >> |, | -zet^7+zet^5-zet^4-zet+1 0 |, | zet^3 0 |, | >> -zet^5-1 0 |} >> | 0 1 | | 0 zet^3 | | 0 zet^7-zet^5+zet^4-zet^3+zet-1 | >> | 0 zet^6 | | 0 >> zet | | 0 -zet^7+zet^6-zet^4+zet^3-zet^2+1 | | 0 zet^4 | | >> 0 -zet^5-1 | | 0 -zet^7+zet^5-zet^4-zet+1 | | 0 zet^7-zet^6 >> -zet^3+zet^2-1 | | 0 zet^7 | | 0 -zet^6 >> -zet | | 0 zet^2 | | 0 -zet^7-zet^2 | | 0 >> zet^5 | >> >> List >> >> 2 3 4 5 6 7 8 9 10 11 12 13 >> 14 >> 1 - T + T - T + T - T + T - T + T - T + T - T + T - T + T >> >> --------------------------------------------------------------------------- >> 2 3 4 5 7 8 2 2 3 >> 4 >> (1 - T) (1 - T + T - T + T - T + T )(1 + T + T )(1 + T + T + T + >> T ) >> >> Expression of class Divide >> >> sage: G = macaulay2('P').to_sage() >> >> --------------------------------------------------------------------------- >> TypeError Traceback (most recent call >> last) >> /home/saad/sage/local/lib/python2.7/site-packages/sage/all_cmdline.pyc in >> <module>() >> ----> 1 G = macaulay2('P').to_sage() >> >> /home/saad/sage/local/lib/python2.7/site-packages/sage/interfaces/ >> macaulay2.pyc in to_sage(self) >> 1151 elif cls_str == "Divide": >> 1152 self_Div = self >> -> 1153 div_Numerator = macaulay2('numerator self_Div') >> 1154 div_Denominator = macaulay2('denominator >> self_Div') >> 1155 div_Numerator = div_Numerator.sage_polystring() >> >> /home/saad/sage/local/lib/python2.7/site-packages/sage/interfaces/ >> interface.pyc in __call__(self, x, name) >> 241 >> 242 if isinstance(x, six.string_types): >> --> 243 return cls(self, x, name=name) >> 244 try: >> 245 return self._coerce_from_special_method(x) >> >> /home/saad/sage/local/lib/python2.7/site-packages/sage/interfaces/expect.pyc >> in __init__(self, parent, value, is_name, name) >> 1379 except (RuntimeError, ValueError) as x: >> 1380 self._session_number = -1 >> -> 1381 raise_(TypeError, x, sys.exc_info()[2]) >> 1382 except BaseException: >> 1383 self._session_number = -1 >> >> /home/saad/sage/local/lib/python2.7/site-packages/sage/interfaces/expect.pyc >> in __init__(self, parent, value, is_name, name) >> 1374 else: >> 1375 try: >> -> 1376 self._name = parent._create(value, name=name) >> 1377 # Convert ValueError and RuntimeError to TypeError >> for >> 1378 # coercion to work properly. >> >> /home/saad/sage/local/lib/python2.7/site-packages/sage/interfaces/ >> interface.pyc in _create(self, value, name) >> 431 def _create(self, value, name=None): >> 432 name = self._next_var_name() if name is None else name >> --> 433 self.set(name, value) >> 434 return name >> 435 >> >> /home/saad/sage/local/lib/python2.7/site-packages/sage/interfaces/ >> macaulay2.pyc in set(self, var, value) >> 318 ans = Expect.eval(self, cmd) >> 319 if ans.find("stdio:") != -1: >> --> 320 raise RuntimeError("Error evaluating Macaulay2 >> code.\nIN:%s\nOUT:%s"%(cmd, ans)) >> 321 >> 322 def _object_class(self): >> >> TypeError: Error evaluating Macaulay2 code. >> IN:sage1=numerator self_Div; >> OUT:stdio:13:7:(3): error: no method found for applying numerator to: >> argument : self (of class IndexedVariable) >> Div >> >> It's certainly a different error message from what I was getting before >> when I tried this, but i don't know what it means. >> >> >> -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.