It says that there is no module named "numpy". How to fix that?shouldsee wrote:The fixed "mutate.py" takes the current rulestring and flips a random hensel configuration. It depends on the messy collection "KBs.py" and please place them in the same folder.
mutate.py
KBs.pyCode: Select all
## Written by Feng (shouldsee.gem@gmail.com) March 2018. import golly import KBs import random # rulestr=golly.getstring('NTCA number',golly.getclipstr()).split('_')[-1]; kb = KBs.kb_2dntca() # alias = golly.getrule() curr=golly.getrule().split(':') if len(curr)==1: curr+=[''] alias,suffix = curr rulestr = kb.alias2rulestr(alias) bitstr = KBs.hex2bin(rulestr,102) # assert KBs.bin2hex(bitstr)==rulestr bitlst = list(bitstr) idx = random.randint(0,102) flip = {'0':'1','1':'0'} bitlst[idx] = flip[bitlst[idx]] rulestr = KBs.bin2hex(''.join(bitlst)) alias = kb.rulestr2alias(rulestr) golly.note(alias) golly.setclipstr(alias) golly.setrule('%s:%s'%(alias,suffix))
Code: Select all
import numpy as np import pickle import itertools, collections, re import copy import random import collections count = collections.Counter identity = lambda x:x # import collections base2bin=lambda data,scale,num_of_bits: bin(int(data, scale))[2:].zfill(num_of_bits); hex2bin=lambda hexdata,num_of_bits: base2bin(hexdata,16,num_of_bits); bin2hex = lambda bitstr:hex(int(bitstr,2)).lstrip('0x').rstrip('L') # from astropy.convolution import convolve # convolve_int=lambda a,fir,method:np.around(convolve(a,fir,method)).astype(np.int); import scipy.ndimage convolve_int=lambda a,fir,method,**kwargs:scipy.ndimage.filters.convolve(a,fir,mode = method,**kwargs) hensellist=['b0_','b1c','b1e','b2a','b2c','b3i','b2e','b3a','b2k','b3n','b3j','b4a','s0_','s1c','s1e','s2a','s2c','s3i','s2e','s3a','s2k','s3n','s3j','s4a','b2i','b3r','b3e','b4r','b4i','b5i','s2i','s3r','s3e','s4r','s4i','s5i','b2n','b3c','b3q','b4n','b4w','b5a','s2n','s3c','s3q','s4n','s4w','s5a','b3y','b3k','b4k','b4y','b4q','b5j','b4t','b4j','b5n','b4z','b5r','b5q','b6a','s3y','s3k','s4k','s4y','s4q','s5j','s4t','s4j','s5n','s4z','s5r','s5q','s6a','b4e','b5c','b5y','b6c','s4e','s5c','s5y','s6c','b5k','b6k','b6n','b7c','s5k','s6k','s6n','s7c','b4c','b5e','b6e','s4c','s5e','s6e','b6i','b7e','s6i','s7e','b8_','s8_',]; rca2ntca=[0, 1, 2, 3, 1, 4, 3, 5, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 13, 16, 15, 17, 14, 15, 18, 19, 20, 21, 22, 23, 2, 8, 6, 10, 3, 9, 7, 11, 24, 25, 26, 27, 25, 28, 27, 29, 14, 20, 18, 22, 15, 21, 19, 23, 30, 31, 32, 33, 31, 34, 33, 35, 1, 4, 8, 9, 36, 37, 38, 39, 3, 5, 10, 11, 38, 39, 40, 41, 13, 16, 20, 21, 42, 43, 44, 45, 15, 17, 22, 23, 44, 45, 46, 47, 8, 48, 49, 50, 38, 51, 52, 53, 25, 54, 55, 56, 57, 58, 59, 60, 20, 61, 62, 63, 44, 64, 65, 66, 31, 67, 68, 69, 70, 71, 72, 73, 2, 8, 24, 25, 8, 48, 25, 54, 6, 10, 26, 27, 49, 50, 55, 56, 14, 20, 30, 31, 20, 61, 31, 67, 18, 22, 32, 33, 62, 63, 68, 69, 6, 49, 26, 55, 10, 50, 27, 56, 26, 55, 74, 75, 55, 76, 75, 77, 18, 62, 32, 68, 22, 63, 33, 69, 32, 68, 78, 79, 68, 80, 79, 81, 3, 9, 25, 28, 38, 51, 57, 58, 7, 11, 27, 29, 52, 53, 59, 60, 15, 21, 31, 34, 44, 64, 70, 71, 19, 23, 33, 35, 65, 66, 72, 73, 10, 50, 55, 76, 40, 82, 59, 83, 27, 56, 75, 77, 59, 83, 84, 85, 22, 63, 68, 80, 46, 86, 72, 87, 33, 69, 79, 81, 72, 87, 88, 89, 1, 36, 8, 38, 4, 37, 9, 39, 8, 38, 49, 52, 48, 51, 50, 53, 13, 42, 20, 44, 16, 43, 21, 45, 20, 44, 62, 65, 61, 64, 63, 66, 3, 38, 10, 40, 5, 39, 11, 41, 25, 57, 55, 59, 54, 58, 56, 60, 15, 44, 22, 46, 17, 45, 23, 47, 31, 70, 68, 72, 67, 71, 69, 73, 4, 37, 48, 51, 37, 90, 51, 91, 9, 39, 50, 53, 51, 91, 82, 92, 16, 43, 61, 64, 43, 93, 64, 94, 21, 45, 63, 66, 64, 94, 86, 95, 9, 51, 50, 82, 39, 91, 53, 92, 28, 58, 76, 83, 58, 96, 83, 97, 21, 64, 63, 86, 45, 94, 66, 95, 34, 71, 80, 87, 71, 98, 87, 99, 3, 38, 25, 57, 9, 51, 28, 58, 10, 40, 55, 59, 50, 82, 76, 83, 15, 44, 31, 70, 21, 64, 34, 71, 22, 46, 68, 72, 63, 86, 80, 87, 7, 52, 27, 59, 11, 53, 29, 60, 27, 59, 75, 84, 56, 83, 77, 85, 19, 65, 33, 72, 23, 66, 35, 73, 33, 72, 79, 88, 69, 87, 81, 89, 5, 39, 54, 58, 39, 91, 58, 96, 11, 41, 56, 60, 53, 92, 83, 97, 17, 45, 67, 71, 45, 94, 71, 98, 23, 47, 69, 73, 66, 95, 87, 99, 11, 53, 56, 83, 41, 92, 60, 97, 29, 60, 77, 85, 60, 97, 85, 100, 23, 66, 69, 87, 47, 95, 73, 99, 35, 73, 81, 89, 73, 99, 89, 101]; henseldict={'0': ['_'], '1': ['c', 'e'], '2': ['a', 'c', 'e', 'k', 'i', 'n'], '3': ['i', 'a', 'n', 'j', 'r', 'e', 'c', 'q', 'y', 'k'], '4': ['a', 'r', 'i', 'n', 'w', 'k', 'y', 'q', 't', 'j', 'z', 'e', 'c'], '5': ['i', 'a', 'j', 'n', 'r', 'q', 'c', 'y', 'k', 'e'], '6': ['a', 'c', 'k', 'n', 'e', 'i'], '7': ['c', 'e'], '8': ['_']} rca2ntca=np.array(rca2ntca,np.int); henselidx={k: v for v, k in enumerate(hensellist)}; subconf='_cekainyqjrtwz'; p_NOTnumletter = re.compile(r'[^\da-zA-Z\-]') try: from data import * with open('tp','rb') as f: # Python 3: open(..., 'rb') hdist, tst_data = pickle.load(f) hdist = np.array(hdist).reshape([512,512]); except: print('[WARN]Not finding data.py') def invert(s): num = s[0] conf = henseldict[num] return ''.join([num]+[x for x in conf if x not in s]) def ntuple(lst,n): """ntuple([0,3,4,10,2,3], 2) => [(0,3), (4,10), (2,3)] Group a list into consecutive n-tuples. Incomplete tuples are discarded e.g. >>> group(range(10), 3) [(0, 1, 2), (3, 4, 5), (6, 7, 8)] """ return zip(*[lst[i::n] for i in range(n)]) def add_all(s,prime,sold,neg=0): for c in subconf: conf=prime+sold+c; try: s[henselidx[conf]]=str(1-neg); except KeyError: pass class kb_2dntca(): def __init__(self): self.familyname='2dntca' pass def rulestr2alias(self, rulestr): OUT = '' # rulestr = '000000000060031c61c67f86a0' r=hex2bin(rulestr,102); r=r[::-1]; rule=[i for i,x in enumerate(r) if x=='1']; # print r lst = [hensellist[i] for i in rule] lst.sort() #### group by B/S d = collections.OrderedDict((('b',{}),('s',{}))) ### set default # d = {'b':{},'s':{}} ### set default d.update( {k:list(gp) for k,gp in itertools.groupby(lst, lambda x:x[0])} ) for k,lst in d.items(): d[k] = {k:list(gp) for k,gp in itertools.groupby(lst, lambda x:x[1])} for bs, dd in d.items(): OUT += bs for k,lst in dd.items(): OUT += k + ''.join( conf[-1] for conf in lst) OUT = OUT.replace('_','') alias = OUT return alias def alias2rulestr(self,alias): # alias.replace('-','') alias = re.sub('(\d-[a-zA-Z]+)',lambda o:invert(o.group()),alias) alias = p_NOTnumletter.sub( '', alias).lower() OUT = ['0']*102 d = collections.OrderedDict((('b',{}),('s',{}))) ### set default # d.update() # alias.split('s') s = alias lst = [x for x in re.split("([bs])", s) if x] if len(lst) % 2: #### Padding to even length lst += [''] d = dict(ntuple(lst,2)) idxs = [] for k, v in d.items(): s = v lst = [x for x in re.split("(\d)", s) if x] L = len(lst) v_old = '' for i,v in enumerate(lst): if v.isdigit(): if v_old.isdigit(): idx = [henselidx.get( k + v_old + c,None) for c in subconf] idxs.extend(idx) if i + 1 == L: idx = [henselidx.get( k + v + c,None) for c in subconf] idxs.extend(idx) num = v else: idx = [henselidx[ k + num + v_i] for v_i in v ] idxs.extend(idx) v_old = v idxs = [ x for x in idxs if x is not None] for i in idxs: if not i is None: OUT[i] = '1' bitstr=''.join(OUT[::-1]); hexstr=hex(int(bitstr,2)).lstrip('0x').rstrip('L').zfill(26) return hexstr # def alias2rulestr(self, alias): # alias = p_NOTnumletter.sub( '', alias).lower() # OUT = ['0']*102 # # print alias # d = collections.OrderedDict((('b',{}),('s',{}))) ### set default # # d.update() # # alias.split('s') # s = alias # lst = [x for x in re.split("([bs])", s) if x] # if len(lst) % 2: #### Padding to even length # lst += [''] # d = dict(ntuple(lst,2)) # idxs = [] # for k, v in d.items(): # s = v # lst = [x for x in re.split("(\d)", s) if x] # L = len(lst) # v_old = '' # for i,v in enumerate(lst): # if v.isdigit(): # if v_old.isdigit(): # idx = [henselidx.get( k + v_old + c,None) for c in subconf] # idxs.extend(idx) # if i + 1 == L: # idx = [henselidx.get( k + v + c,None) for c in subconf] # idxs.extend(idx) # num = v # else: # idx = [henselidx[ k + num + v_i] for v_i in v ] # idxs.extend(idx) # v_old = v # idxs = [ x for x in idxs if x is not None] # for i in idxs: # if not i is None: # OUT[i] = '1' # bitstr=''.join(OUT[::-1]); # hexstr=hex(int(bitstr,2)).lstrip('0x').rstrip('L').zfill(26) # return hexstr def rulestr2adv(self,rulestr): ruleprj=np.array( list(hex2bin(rulestr,102)[::-1]), np.int); adv = self.bin2adv(ruleprj) # ruleprj=np.array(list(hex2bin(rulestr,102)[::-1])); # fir=(2**np.arange(0,9)).reshape([1,3,3]); # pj=rca2ntca; # def adv(a,horizon): # return ruleprj[pj[convolve_int(a,fir,'wrap').astype(np.int)]] # # adv=lambda a, horizon: ruleprj[pj[convolve_int(a,fir,'wrap').astype(np.int)]] return adv def conv(self,a): fir=(2**np.arange(0,9)).reshape([1,3,3]); pj=rca2ntca; return pj[convolve_int(a,fir,'wrap').astype(np.int)] def bin2adv(self, ruleprj): if isinstance(ruleprj,str): ruleprj = list(ruleprj) ruleprj = np.array(ruleprj,np.int) def adv(a,horizon=0): return ruleprj[self.conv(a)] return adv def rstr(self,callback=(lambda x:bin2hex(x).zfill(26)) ): r = '{:0102b}'.format(random.randrange(2**102)) if callback is not None: r = callback(r) return r def randadv(self): return self.bin2adv(self.rstr(None)) def bulk_rstr(self,seed = 0,bsize=2**18,**kwargs): random.seed(seed) lst = [{'family':self.familyname, 'rulestr':self.rstr(**kwargs)} for x in range(bsize)] return lst class kb_2dtca(): # def rulestr2alias(rulestr): # r=base2bin(int(rulestr),18,2); # r=r[:1:-1]; # r+='0'*(18-len(r)); # rule=[i for x,i in zip(r,range(len(r))) if x=='1']; # alias='b'; # ps=1; # for a in rule: # if a>8 and ps: # alias+='s'; # ps=0; # alias+=str((a)%9) # if ps==1: # alias+='s'; # return alias def alias2rulestr(self, ali): rule=['0']*18; ali=ali.replace('/','').lower().lstrip('b'); (b,s)=ali.split('s'); lst=list(str(int(i)+9) for i in s); bs=list(b)+(lst) for i in bs: rule[int(i)]='1'; rnum=(''.join(rule[::-1]),2); return(rnum); def rulestr2adv(self,rulestr): #take an numpy array and convolution across the axis=[1,2]; # project the convolved array back to value space according to the rule # hex2bin(rulestr) class CA_sys(): def __init__(self,familyname = None,rulestr=None,dimsiz=None,adv=None,rdf=None): # siz=[600,100,400]; if dimsiz is None: dimsiz = [128,128,32**2] if rulestr is None: rulestr = '0c83820e0060061941946a68f0' if familyname is None: familyname = '2dntca' self.familyname=familyname; self.rulestr=rulestr; self.adv=adv; self.dimsiz=dimsiz; self.change_size(); # self.family = globals().get('familyname') self.family=eval('kb_%s()'%self.familyname); self.rulestr2alias() # self. if rdf==None: self.rdf=lambda:(np.random.random(self.siz)<=0.5).astype(np.int); def change_size(self,dimsiz=None): if dimsiz==None: dimsiz=self.dimsiz; N,hmax,ksq=dimsiz self.N=N; self.hmax=hmax; dd=int(ksq**0.5); self.siz = (N,dd,dd); def rulestr2alias(self): # kb=eval('kb_%s()'%self.familyname); # kb=eval('kb_%s'%self.familyname); self.alias=self.family.rulestr2alias(self.rulestr); self.adv=self.family.rulestr2adv(self.rulestr); def alias2rulestr(self): # kb=eval('kb_%s()'%self.familyname); # kb=eval('kb_%s'%self.familyname); self.rulestr=self.family.alias2rulestr(self.alias) self.adv =self.family.rulestr2adv(self.rulestr) def as_config(self): conf = {'family':self.family.familyname, 'rulestr':self.rulestr, 'alias':self.alias,} return conf # def change_adv(familyname,rulestr): kb=kb_2dntca(); # kb.rulestr2alias('000000000060031c61c67f86a0') kb.alias2rulestr('b3/s23') # @function # @function def measure_temperature(sys0=None,hdist=None,*args,**kwargs): # varargin = measure_temperature.varargin # nargin = measure_temperature.nargin sysX=copy.copy(sys0) jmax=sysX.N; avi=sysX.rdf().astype(np.int) siz=avi.shape siz=(sysX.hmax,)+siz; tmp=np.zeros(siz) smtmp=np.zeros(siz) avc=avi i=0 fir=np.reshape(2 ** (np.arange(0,9)),[1,3,3]) trans=6 mtp=0 stp=0 while i+1 < sysX.hmax: i=i + 1 avcnew=(sysX.adv(avc,i)) cavc=convolve_int(avc,fir,'wrap').astype(np.int); cavcnew=convolve_int(avcnew,fir,'wrap').astype(np.int); idx=np.ravel_multi_index((cavc,cavcnew),[2**9,2**9]); tmp[i,:,:,:]=np.expand_dims(hdist.flat[idx],0) if i >= trans: smtmpnow=np.mean(tmp[i - trans:i,:,:,:],axis=0) smtmp[i - trans,:,:,:]=smtmpnow if i >= trans + 10: mtp=np.mean(smtmpnow.flat) stpmat=((smtmp[i - trans,:,:,:] - smtmp[i - trans - trans,:,:,:])) a=np.mean(np.abs(stpmat.flat)) b=abs(np.mean(stpmat.flat)) stp=a - b stp1=np.mean(avcnew.flat) stp1=min(stp1,1 - stp1) avc=avcnew; # im1=[avc(1,:,:)]; if mtp < 0.02 and i > 20: break fam_alias=sys0.familyname+'_'+sys0.alias; # /home/shouldsee/Documents/repos/CA_tfmat/custom_function/measure_temperature.m:55 # s=sprintf('%s\\t%s\\t%d\\t%f\\t%f\\t%f\\n',fam_alias,num2str(sys0.od),i,mtp,stp,stp1) s='{}\t{}\t{:d}\t{:f}\t{:f}\t{:f}\n'.format(fam_alias,sysX.rulestr,i,mtp,stp,stp1) # /home/shouldsee/Documents/repos/CA_tfmat/custom_function/measure_temperature.m:56 return s # if __name__ == '__main__': # pass ### Profiling loop ### Profiling loop def profile(input_list, log = []): # global log output_data=[]; repeat=2; # input_list=[input_rulestr]; ipt_list=input_list*repeat; # for i in range(5): l_ipt=len(input_list) log += ['Log of the process:']; logs='Starting to profile {:d} rules at {:d} replicates,\n totaling {:d} instances'.format(l_ipt,repeat,l_ipt*repeat); log += [logs]; # print('Starting to profile {:d} rules at {:d} replicates,\n totaling {:d} instances'.format(l_ipt,repeat,l_ipt*repeat)) for num,rulestr in enumerate(ipt_list): ca1=CA_sys(familyname,rulestr,[400,100,400]); ca1.rulestr2alias(); s=measure_temperature(ca1,hdist); output_data+=[s]; # print('{:d} of {:d}'.format(num,len(ipt_list))) logs =('{:d} of {:d} '.format(num,len(ipt_list))); log += [logs]; temp_data=[]; # sample_data=[] for line in output_data: temp_data+=[line.rstrip('\n').split('\t')]; sample_data=np.array(temp_data) # print('data is succesfully generated at {:d} replicates'.format(repeat)) logs=('data is succesfully generated at {:d} replicates'.format(repeat)) log += [logs]; # print('\n Detail of the input:') logs='\n Detail of the input:'; log+=[logs]; for k,v in ca1.__dict__.items(): if not callable(v): # print(k+str(v).ljust(-10)) # print("{:5} {:<15} {:<10}".format('',k, str(v))) logs=("{:5} {:<15} {:<10}".format('',k, str(v))); log+=[logs]; return( [sample_data,log]); if __name__ == '__main__': INPUT = "B345678/S012678" exp = "3f9fbe3e001fff07e07e15fea0" act = kb.alias2rulestr(INPUT) assert act == exp,'expected:%s, actual:%s' %(exp,act) # pass def guess(i=None,sysX=None,dct=None): dimsiz = (256,2**7,24**2) if i is not None: rstr = tst_data[i][1] familyname='2dntca' if dct is not None: familyname = dct['family'] rstr = dct['rulestr'] if sysX is None: sysX = CA_sys(familyname,rstr,dimsiz) # sysX = KBs.CA_sys('2dntca',tst_data[i][1],(200,2**7,400)) sysX.rulestr2alias() else: sysX.dimsiz = dimsiz sysX.change_size()# spspa.distance return sysX import IPython.display as ipd def lview(self): fmt = 'http://newflaw.com/view.php?rule_alias={:}' uri = fmt.format(self.alias) print uri ele = '<iframe src="{}" width=600 height=500></iframe>'.format(uri) ipd.display(ipd.HTML(ele)) return uri def sample(self,ini=None,adv = None): ''' Sample an iterator ('CA_sys' object) ''' if adv is None: adv = self.adv if ini is None: ini=self.rdf().astype(int) avc = ini hist = np.zeros((self.hmax,)+avc.shape,dtype=np.int) for i in range(self.hmax): hist[i]=avc avc=(adv(avc)) return hist def fill_ber(arr,p=0.5): ''' Create bernouli using shape of arr ''' return np.random.random(arr.shape) < p def mix_adv(fA,fB,pa=0): ''' Mixing two iterator ''' if pa==1: adv = lambda arr:fA(arr) elif pa==0: adv = lambda arr:fB(arr) else: def adv(arr): mask = np.random.random(arr.shape)<pa A = fA(arr) B = fB(arr) # arr[mask] = A # arr[~mask] = B out = A*mask + B*(1-mask) return out # return arr return adv def cov2cor(COV): D = np.diag(COV) COR = COV / np.sqrt(D[:,None]*D[None,:]) return COR # Fast run length encoding def rle (img): ''' Source:https://www.kaggle.com/hackerpoet/even-faster-run-length-encoder ''' x = np.ravel(img) # flat_img = img.flatten() # flat_img = np.where(flat_img > 0.5, 1, 0).astype(np.uint8) ### startswith 0->1 ### endswith 1->0 starts = np.array((x[:-1] == 0) & (x[1:] == 1)) ends = np.array((x[:-1] == 1) & (x[1:] == 0)) starts_ix = np.where(starts)[0] + 1 ends_ix = np.where(ends)[0] + 1 if x[0] == 1: starts_ix = np.insert(starts_ix,0,0) if x[-1] == 1: ends_ix = np.append(ends_ix,len(x)) lengths = ends_ix - starts_ix return starts_ix, lengths def _gollyrle(x): sl = rle(x) sym='bo$' S = 0 out = '' L = 0 # if s if sl[0].size!=0: for s,l1 in zip(*sl): l0 = s-S-L if l0>0: inc = '%d%s'%(l0,sym[0]) ### number of zeros out = '%s%s'%(out,inc) inc = '%d%s'%(l1,sym[1]) out = '%s%s'%(out,inc) S = s L = l1 l0 = len(x)-S-L if l0>0: inc = '%d%s'%(l0,sym[0]) ### number of zeros out = '%s%s'%(out,inc) # out='%s%s'%(out,sym[-1]) return out _gollyrle(map(int,list('010001001010'))) def gollyrle(arr): return '$'.join(map(_gollyrle,arr)) def hill(x): return 1-abs(2*x-1) def sflatten(arr): return np.reshape(arr,(len(arr),-1)) def sexpand(arr,d=2): S = arr.shape root = int(round(S[1]**(1./d)) ) out = np.reshape(arr,(S[0],)+(root,)*d) return out def showsptime(arr,ax=None,**kwargs): if ax is None: fig,ax = plt.subplots(1,1,figsize=[12,4]) return ax.pcolormesh(sflatten(arr),**kwargs) import matplotlib.pyplot as plt import matplotlib.animation as animation import IPython.display as ipd def animate(arr,html = 1,nFrame=20): ''' Animate a list of 2d-array ''' fig, ax = plt.subplots() im = ax.imshow(arr[0]) ax.grid() data_gen = arr def run(data): im.set_data(data) return im, ani = animation.FuncAnimation(fig, run, data_gen, blit=False, interval=1000./nFrame, repeat=1, init_func=None) plt.close() if html: ani = ipd.HTML(ani.to_html5_video()) return ani
How to install additional libraries in Python (e.g., numpy)
How to install additional libraries in Python (e.g., numpy)
Re: Golly scripts
The numpy libraries aren't installed by default -- you have to download them, one way or another. Depends on your operating system. If it's Windows, I think I'd recommend that you try installing it via pip -- but that may mean you have to install pip first, if it's not there already. It will be there if your Python version is 2.7.9 or greater. Otherwise there are more installation instructions.KittyTac wrote:Can anyone tell me the solution to my problem?
All slightly tedious, but ultimately pretty straightforward. If you run into any trouble, a Google search is very likely to turn up other people who had the exact same problem (and solved it)... but then, that's true for your original problem also.
Re: Golly scripts
Install numpyKittyTac wrote:Can anyone tell me the solution to my problem?
You can do
Code: Select all
pip install numpy
Re: Golly scripts
I need to install curl to install pip, but I need pip to install curl (no curl in Python 2.7)... what now?
Edit: I got get-pip.py, now where do I put it?
Edit2: It was installed.
Edit: I got get-pip.py, now where do I put it?
Edit2: It was installed.
Re: Golly scripts
So, pip is there, but as soon as I run it, it closes. How to run it?
Re: Golly scripts
Just type
in the regular console you use for Python. For convenience, you could also consider downloading a package like Anaconda, which contains a lot of useful Python modules and GUIs.
Code: Select all
pip install numpy
Re: How to install additional libraries in Python (e.g., numpy)
Code: Select all
>>> pip install numpy
File "<stdin>", line 1
pip install numpy
^
SyntaxError: invalid syntax
Re: How to install additional libraries in Python (e.g., numpy)
Run it in cmd.KittyTac wrote:Help.Code: Select all
>>> pip install numpy File "<stdin>", line 1 pip install numpy ^ SyntaxError: invalid syntax
To confirm this works, I ran it for myself.
Re: How to install additional libraries in Python (e.g., numpy)
Wait, how did you do that? It says that it is not a cmd command or something along those lines. I'm on Windows 8.1 if that's any help.
Re: How to install additional libraries in Python (e.g., numpy)
If you always take the time to quote the actual error message instead of saying "something along those lines", it really helps in general. Also it gives you text that you can go search for yourself with Google. Probably not necessary in this case, but why take the risk?KittyTac wrote:Wait, how did you do that? It says that it is not a cmd command or something along those lines. I'm on Windows 8.1 if that's any help.
-- I was hoping you wouldn't run into this issue. I _think_ it just means that your Windows PATH variable isn't updated to point to your Python folder.
But I'm getting annoying "Folder does not exist" and "Permission denied" error messages when I try to run get-pip.py on this particular laptop, so I can't test here until I fix that.
You might try the solution from this StackOverflow thread:
Failing that, search for "pip" on your hard drive and run the command from there -- e.g., type "cd C:\Python27 [Enter]", then "pip install numpy [Enter]".py -m pip install numpy
Worked for me!what about py -m makes it work, and what do they do? Please explain your answer!'py' is the python command line alias for windows that for one reason or another is sometimes set as a default during python installation. '-m' is mod option which allows you to run a library module as a script. 'py -m' instructs python to run the pip module as a script, passing the install and numpy keywords.
-- Or try the variant from the quote above, or just "python.exe -m pip install numpy" for the second line. That skips the mysterious command-line alias stuff, which I've never heard of and shouldn't be necessary.
Re: How to install additional libraries in Python (e.g., numpy)
I'm Russian, and the message is in Russian. So I won't be able to search StackOverflow with it.
Re: How to install additional libraries in Python (e.g., numpy)
Okay, in that case it's definitely not worth messing with Windows' language settings to get a searchable chunk of text for that particular error message. Sometimes that might be useful, but here you're probably just seeing the equivalent ofKittyTac wrote:I'm Russian, and the message is in Russian. So I won't be able to search StackOverflow with it.
Does that seem right? If so, you might just need to change directories to where pip actually is on your system, and run the command from there.C:\Users\{username}>pip install numpy
'pip' is not recognized as an internal or external command,
operable program or batch file.
Re: How to install additional libraries in Python (e.g., numpy)
Yes, that's right. I will try it out.dvgrn wrote:Okay, in that case it's definitely not worth messing with Windows' language settings to get a searchable chunk of text for that particular error message. Sometimes that might be useful, but here you're probably just seeing the equivalent ofKittyTac wrote:I'm Russian, and the message is in Russian. So I won't be able to search StackOverflow with it.
Does that seem right? If so, you might just need to change directories to where pip actually is on your system, and run the command from there.C:\Users\{username}>pip install numpy
'pip' is not recognized as an internal or external command,
operable program or batch file.
Re: How to install additional libraries in Python (e.g., numpy)
It worked! Thanks! But mutate.py still does not work. It doesn't even open.
Re: How to install additional libraries in Python (e.g., numpy)
KittyTac wrote:It worked! Thanks! But mutate.py still does not work. It doesn't even open.
Where did you put the two Python files, and what are their names? (Just checking.)It depends on the messy collection "KBs.py" and please place them in the same folder.
Do other Python scripts work now?
If mutate.py just flips a random isotropic bit, you don't need either numpy or Python to do that in Golly 3.x. There's an equivalent Lua script.
Re: How to install additional libraries in Python (e.g., numpy)
Scripts folder.dvgrn wrote:KittyTac wrote:It worked! Thanks! But mutate.py still does not work. It doesn't even open.Where did you put the two Python files, and what are their names? (Just checking.)It depends on the messy collection "KBs.py" and please place them in the same folder.
Do other Python scripts work now?
If mutate.py just flips a random isotropic bit, you don't need either numpy or Python to do that in Golly 3.x. There's an equivalent Lua script.
Yes.
Wait, there is?
Re: How to install additional libraries in Python (e.g., numpy)
Yeah, it's pretty serious overkill to require two Python files plus the whole numpy library just to do that simple task.KittyTac wrote:Wait, there is?dvgrn wrote:KittyTac wrote:It worked! Thanks! But mutate.py still does not work. It doesn't even open.Where did you put the two Python files, and what are their names? (Just checking.)It depends on the messy collection "KBs.py" and please place them in the same folder.
...
If mutate.py just flips a random isotropic bit, you don't need either numpy or Python to do that in Golly 3.x. There's an equivalent Lua script.
At least, I _think_ the Lua script is more or less equivalent. Some testing would be appreciated... There are a few forbidden isotropic bits in the Lua version, just because flipping them is pretty much guaranteed to cause uninteresting explosions.
Re: How to install additional libraries in Python (e.g., numpy)
Yeah, I ran like 50 iterations of it and soups started exploding. Took 20 more to un-explodify it.
Re: How to install additional libraries in Python (e.g., numpy)
That's normal (for either the Lua or Python script). The Lua script doesn't bother to flip b0, b1, or b2a, because those always cause explosions... and since there are 102 possible isotropic bits to flip, if you allow those to be flipped, the odds are very very low that that particular bit would randomly happen to get flipped back (before another one of those bits gets flipped and all patterns would keep exploding anyway).KittyTac wrote:Yeah, I ran like 50 iterations of it and soups started exploding. Took 20 more to un-explodify it.
For the record, for mutate.py I had to run
Code: Select all
pip install numpy
pip install scipy
pip install IPython
pip install matplotlib
In general if something can be written in Lua, it should be written in Lua, just because that way it will always Just Work in Golly 3.x, with no possibility of installation headaches (Python, pip, etc.)