Changeset 4248


Ignore:
Timestamp:
Jan 11, 2020 2:38:29 AM (22 months ago)
Author:
vondreele
Message:

changes to RMCProfile GUI
now saves settings
diff curve for G(R) plot
min max restraints on neighbor atom-atom distances
speed up generation of rmc6f file

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIlattice.py

    r4213 r4248  
    3232from __future__ import division, print_function
    3333import math
     34import time
    3435import copy
    3536import sys
     
    316317       
    317318    '''
    318    
    319319    cx,ct,cs,cia = oldPhase['General']['AtomPtrs']
    320320    cm = 0
     
    358358                atom[cm:cm+3] = mom*mag
    359359    newPhase['Atoms'] = newAtoms
    360     newPhase['Atoms'],atCodes = GetUnique(newPhase,atCodes)
     360    if SGData['SpGrp'] != 'P 1':
     361        newPhase['Atoms'],atCodes = GetUnique(newPhase,atCodes)
    361362    newPhase['Drawing'] = []
    362363    newPhase['ranId'] = ran.randint(0,sys.maxsize)
  • trunk/GSASIIphsGUI.py

    r4237 r4248  
    10931093        self.panel = wxscroll.ScrolledPanel(self)         #just a dummy - gets destroyed in Draw!
    10941094        self.Name = Name
    1095         self.Phase = Phase
    1096         self.SuperCell = [1,1,1]
    1097         self.UseSampBrd = [True,True]
    1098         Atypes = self.Phase['General']['AtomTypes']
    1099         self.aTypes = dict(zip(Atypes,len(Atypes)*[0.10,]))
    1100         self.atSeq = list(self.aTypes.keys())
    1101         lenA = len(self.atSeq)
    1102         self.Pairs = []
    1103         for pair in [[' %s-%s'%(self.atSeq[i],self.atSeq[j]) for j in range(i,lenA)] for i in range(lenA)]:
    1104             self.Pairs += pair
    1105         self.Pairs = dict(zip(self.Pairs,len(self.Pairs)*[0.0,]))
    1106         self.histogram = ['',1.0]
    1107         self.RB = ['',0]
    1108         self.files = {'Neutron real space data; G(r): ':['',0.05,'G(r)','RMC',],
     1095        if not Phase['RMC']['RMCProfile']:
     1096            Atypes = Phase['General']['AtomTypes']
     1097            aTypes = dict(zip(Atypes,len(Atypes)*[0.10,]))
     1098            atSeq = list(aTypes.keys())
     1099            lenA = len(atSeq)
     1100            Pairs= []
     1101            for pair in [[' %s-%s'%(atSeq[i],atSeq[j]) for j in range(i,lenA)] for i in range(lenA)]:
     1102                Pairs += pair
     1103            Pairs = {pairs:[0.0,0.0,0.0] for pairs in Pairs}
     1104            files = {'Neutron real space data; G(r): ':['',0.05,'G(r)','RMC',],
    11091105                      'Neutron reciprocal space data; F(Q): ':['',0.05,'F(Q)','RMC',],
    11101106                      'Neutron reciprocal space data; S(Q): ':['',0.05,'S(Q)','RMC',],
    11111107                      'Xray real space data; G(r): ':['',0.01,'G(r)','RMC',],
    11121108                      'Xray reciprocal space data; F(Q): ':['',0.01,'F(Q)','RMC',],}
    1113         self.metadata = {'title':'none','owner':'no one','date':str(time.ctime()),'temperature':'300K',
    1114             'material':'nothing','phase':'vacuum','comment':'none ','source':'nowhere'}
     1109            metadata = {'title':'none','owner':'no one','date':str(time.ctime()),'temperature':'300K',
     1110                'material':'nothing','phase':'vacuum','comment':'none ','source':'nowhere'}
     1111            Phase['RMC']['RMCProfile'] = {'SuperCell':[1,1,1],'UseSampBrd':[True,True],'aTypes':aTypes,
     1112                 'atSeq':atSeq,'Pairs':Pairs,'histogram':['',1.0],'files':files,'metadata':metadata}
     1113        self.RMCPdict = Phase['RMC']['RMCProfile']
     1114        self.Phase = Phase
    11151115        self.Draw()
    11161116       
     
    11181118       
    11191119        def OnHisto(event):
    1120             self.histogram[0] = histo.GetStringSelection()
     1120            self.RMCPdict['histogram'][0] = histo.GetStringSelection()
    11211121           
    11221122        def OnAtSel(event):
     
    11271127                if itype == tid:
    11281128                    tid += 1
    1129                 self.atSeq = G2lat.SwapItems(self.atSeq,itype,tid)
     1129                self.RMCPdict['atSeq'] = G2lat.SwapItems(self.RMCPdict['atSeq'],itype,tid)
    11301130            wx.CallAfter(self.Draw)
    11311131           
    11321132        def OnSize(event):
    1133             self.UseSampBrd[0] = samSize.GetValue()
     1133            self.RMCPdict['UseSampBrd'][0] = samSize.GetValue()
    11341134           
    11351135        def OnStrain(event):
    1136             self.UseSampBrd[1] = strain.GetValue()
     1136            self.RMCPdict['UseSampBrd'][1] = strain.GetValue()
    11371137           
    11381138        def OnFileSel(event):
     
    11441144                fName = os.path.split(dlg.GetPath())[1]
    11451145                if os.path.exists(fName):
    1146                     self.files[fil][0] = fName
     1146                    self.RMCPdict['files'][fil][0] = fName
    11471147                dlg.Destroy()
    11481148            else:
     
    11541154            Obj = event.GetEventObject()
    11551155            fil = Indx[Obj.GetId()]
    1156             self.files[fil][3] = Obj.GetStringSelection()
    1157            
    1158         def OnRBchoice(event):
    1159             self.RB = [rigBod.GetStringSelection(),rigBod.GetSelection()+1]
    1160        
     1156            self.RMCPdict['files'][fil][3] = Obj.GetStringSelection()
     1157                   
    11611158        Indx = {}
     1159        lenA = len(self.RMCPdict['atSeq'])
     1160        Pairs= []
     1161        for pair in [[' %s-%s'%(self.RMCPdict['atSeq'][i],self.RMCPdict['atSeq'][j]) for j in range(i,lenA)] for i in range(lenA)]:
     1162            Pairs += pair
     1163        self.RMCPdict['Pairs'] = dict(zip(Pairs,[self.RMCPdict['Pairs'].get(pair,[0.0,0.0,0.0]) for pair in Pairs]))
    11621164        self.panel.Destroy()
    11631165        self.panel = wxscroll.ScrolledPanel(self,style = wx.DEFAULT_DIALOG_STYLE,size=(700,500))
     
    11681170        for item in metalist:
    11691171            metaSizer.Add(wx.StaticText(self.panel,label=' Metadata item: '+item+' '),0,WACV)
    1170             metaSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.metadata,item),0,WACV)
     1172            metaSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['metadata'],item),0,WACV)
    11711173        mainSizer.Add(metaSizer,0,WACV)
    11721174        mainSizer.Add(wx.StaticText(self.panel,label=' Lattice multipliers:'),0,WACV)
     
    11751177        for i,ax in enumerate(axes):
    11761178            superSizer.Add(wx.StaticText(self.panel,label=' %s-axis: '%ax),0,WACV)
    1177             superSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.SuperCell,i,min=1,max=10,size=(50,25)),0,WACV)
     1179            superSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['SuperCell'],i,min=1,max=20,size=(50,25)),0,WACV)
    11781180        mainSizer.Add(superSizer,0,WACV)
    1179         nTypes = len(self.aTypes)
     1181        nTypes = len(self.RMCPdict['aTypes'])
    11801182        atmChoice = wx.FlexGridSizer(nTypes+1,5,5)
    11811183        atmChoice.Add(wx.StaticText(self.panel,label=' Set atom ordering: '),0,WACV)
    11821184        for iType in range(nTypes):
    1183             atChoice = self.atSeq[iType:]
     1185            atChoice = self.RMCPdict['atSeq'][iType:]
    11841186            atmSel = wx.ComboBox(self.panel,choices=atChoice,style=wx.CB_DROPDOWN|wx.TE_READONLY)
    1185             atmSel.SetStringSelection(self.atSeq[iType])
     1187            atmSel.SetStringSelection(self.RMCPdict['atSeq'][iType])
    11861188            atmSel.Bind(wx.EVT_COMBOBOX,OnAtSel)
    11871189            Indx[atmSel.GetId()] = iType
     
    11891191        atmChoice.Add(wx.StaticText(self.panel,label=' Set max shift: '),0,WACV)
    11901192        for iType in range(nTypes):
    1191             atId = self.atSeq[iType]
    1192             atmChoice.Add(G2G.ValidatedTxtCtrl(self.panel,self.aTypes,atId,min=0.,max=1.),0,WACV)
     1193            atId = self.RMCPdict['atSeq'][iType]
     1194            atmChoice.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['aTypes'],atId,min=0.,max=1.),0,WACV)
    11931195        mainSizer.Add(atmChoice,0,WACV)
    1194         mainSizer.Add(wx.StaticText(self.panel,label=' Set minimum distances for:'),0,WACV)
    1195         pairSizer = wx.FlexGridSizer(len(self.Pairs),5,5)
    1196         for pair in self.Pairs:
     1196        mainSizer.Add(wx.StaticText(self.panel,label=' Enter constraints && restraints:'),0,WACV)
     1197        mainSizer.Add(wx.StaticText(self.panel,label=' Set minimum && maximum distances for:'),0,WACV)
     1198        pairSizer = wx.FlexGridSizer(len(self.RMCPdict['Pairs'])+1,5,5)
     1199        pairSizer.Add((5,5),0)
     1200        for pair in self.RMCPdict['Pairs']:
    11971201            pairSizer.Add(wx.StaticText(self.panel,label=pair),0,WACV)
    1198         for pair in self.Pairs:
    1199             pairSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.Pairs,pair,min=0.,max=10.,size=(50,25)),0,WACV)
     1202        pairSizer.Add(wx.StaticText(self.panel,label=' Hard min: '),0,WACV)
     1203        for pair in self.RMCPdict['Pairs']:
     1204            pairSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['Pairs'][pair],0,min=0.,max=10.,size=(50,25)),0,WACV)
     1205        pairSizer.Add(wx.StaticText(self.panel,label=' Search from: '),0,WACV)
     1206        for pair in self.RMCPdict['Pairs']:
     1207            pairSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['Pairs'][pair],1,min=self.RMCPdict['Pairs'][pair][0],max=10.,size=(50,25)),0,WACV)
     1208        pairSizer.Add(wx.StaticText(self.panel,label='       to: '),0,WACV)
     1209        for pair in self.RMCPdict['Pairs']:
     1210            pairSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['Pairs'][pair],2,min=0.,max=10.,size=(50,25)),0,WACV)
    12001211        mainSizer.Add(pairSizer,0,WACV)
     1212       
     1213       
     1214        mainSizer.Add(wx.StaticText(self.panel,label=' Select data:'),0,WACV)
    12011215        histograms = self.Phase['Histograms']
    12021216        histNames = list(histograms.keys())
     
    12041218        histoSizer = wx.BoxSizer(wx.HORIZONTAL)
    12051219        histo = wx.ComboBox(self.panel,choices=histNames,style=wx.CB_DROPDOWN|wx.TE_READONLY)
    1206         histo.SetStringSelection(self.histogram[0])
     1220        histo.SetStringSelection(self.RMCPdict['histogram'][0])
    12071221        histo.Bind(wx.EVT_COMBOBOX,OnHisto)
    12081222        histoSizer.Add(histo,0,WACV)
    12091223        histoSizer.Add(wx.StaticText(self.panel,label=' Weight '),0,WACV)
    1210         histoSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.histogram,1,min=0.,max=10000.,size=(50,25)),0,WACV)
     1224        histoSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['histogram'],1,min=0.,max=10000.,size=(50,25)),0,WACV)
    12111225       
    12121226        mainSizer.Add(histoSizer,0,WACV)
    12131227        samSizer = wx.BoxSizer(wx.HORIZONTAL)
    12141228        samSize = wx.CheckBox(self.panel,label=' Use size broadening?')
    1215         samSize.SetValue(self.UseSampBrd[0])
     1229        samSize.SetValue(self.RMCPdict['UseSampBrd'][0])
    12161230        samSize.Bind(wx.EVT_CHECKBOX,OnSize)
    12171231        strain = wx.CheckBox(self.panel,label=' Use mustrain broadening?')
    1218         strain.SetValue(self.UseSampBrd[1])
     1232        strain.SetValue(self.RMCPdict['UseSampBrd'][1])
    12191233        strain.Bind(wx.EVT_CHECKBOX,OnStrain)
    12201234        samSizer.Add(samSize,0,WACV)
     
    12251239        fileSizer = wx.FlexGridSizer(5,5,5)
    12261240        Formats = ['RMC','GUDRUN','STOG']
    1227         for fil in self.files:
     1241        for fil in self.RMCPdict['files']:
    12281242            filSel = wx.Button(self.panel,label='Select')
    12291243            filSel.Bind(wx.EVT_BUTTON,OnFileSel)
    12301244            Indx[filSel.GetId()] = fil
    12311245            fileSizer.Add(filSel,0,WACV)
    1232             if self.files[fil][0]:
     1246            if self.RMCPdict['files'][fil][0]:
    12331247                fileSizer.Add(wx.StaticText(self.panel,label=' Format, Weight: '),0,WACV)
    12341248                nform = 3
    12351249                if 'Xray' in fil: nform = 1
    12361250                fileFormat = wx.ComboBox(self.panel,choices=Formats[:nform],style=wx.CB_DROPDOWN|wx.TE_READONLY)
    1237                 fileFormat.SetStringSelection(self.files[fil][3])
     1251                fileFormat.SetStringSelection(self.RMCPdict['files'][fil][3])
    12381252                Indx[fileFormat.GetId()] = fil
    12391253                fileFormat.Bind(wx.EVT_COMBOBOX,OnFileFormat)
    12401254                fileSizer.Add(fileFormat,0,WACV)
    1241                 fileSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.files[fil],1),0,WACV)
    1242             fileSizer.Add(wx.StaticText(self.panel,label=fil+self.files[fil][0]),0,WACV)
    1243             if not self.files[fil][0]:
     1255                fileSizer.Add(G2G.ValidatedTxtCtrl(self.panel,self.RMCPdict['files'][fil],1),0,WACV)
     1256            fileSizer.Add(wx.StaticText(self.panel,label=fil+self.RMCPdict['files'][fil][0]),0,WACV)
     1257            if not self.RMCPdict['files'][fil][0]:
    12441258                fileSizer.Add((5,5),0)
    12451259                fileSizer.Add((5,5),0)
     
    12471261        mainSizer.Add(fileSizer,0,WACV)
    12481262       
    1249         RBchoice = ['SiO2','SrTiO3','CD4','SF6','AlPO4','PZT','ZrP2O7','ZrW2O8',
    1250             'Na3PO4','NaNO3','KCN','AgCN','Zn(CN)2','C4F8']
    1251         RBSizer = wx.BoxSizer(wx.HORIZONTAL)
    1252         RBSizer.Add(wx.StaticText(self.panel,label=' Select rigid body restraint(if any): '),0,WACV)
    1253         rigBod = wx.ComboBox(self.panel,choices=RBchoice,style=wx.CB_DROPDOWN|wx.TE_READONLY)
    1254         rigBod.Bind(wx.EVT_COMBOBOX,OnRBchoice)
    1255         RBSizer.Add(rigBod,0,WACV)
    1256         mainSizer.Add(RBSizer,0,WACV)
    12571263        mainSizer.Add(wx.StaticText(self.panel,label=' WARNING: this can take time - be patient'),0,WACV)
    12581264        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
     
    12711277    def GetData(self):
    12721278        'Returns the values from the dialog'
    1273         return self.SuperCell,self.histogram,self.UseSampBrd,self.atSeq,self.aTypes,       \
    1274             self.Pairs,self.files,self.RB,self.metadata
     1279        self.Phase.update(self.RMCPdict)
     1280        return self.Phase
    12751281       
    12761282    def OnOK(self,event):
     
    47084714            dlg = SetUpRMCProfileDialog(G2frame,Name=pName,Phase=data)
    47094715            if dlg.ShowModal() == wx.ID_OK:
    4710                 superCell,histoName,useSamBrd,atSeq,aTypes,atPairs,files,rigBod,meta = dlg.GetData()
    4711                 PWId = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,histoName[0])
     4716                phase = dlg.GetData()
     4717                RMCPdict = phase['RMC']['RMCProfile']
     4718                PWId = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,RMCPdict['histogram'][0])
    47124719                if PWId:
    4713                     print(G2pwd.MakeInst(G2frame,pName,data,useSamBrd,PWId)+ ' written')
     4720                    print(G2pwd.MakeInst(G2frame,pName,data,RMCPdict['UseSampBrd'],PWId)+ ' written')
    47144721                    backfile = G2pwd.MakeBack(G2frame,pName,PWId)
    47154722                    if backfile is None:
     
    47184725                        print(backfile+ ' written')
    47194726                    print(G2pwd.MakeBragg(G2frame,pName,data,PWId)+ ' written')
    4720                     print(G2pwd.MakeRMC6f(G2frame,pName,data,meta,atSeq,superCell,PWId)+ ' written')
    4721                     print(G2pwd.MakeRMCPdat(G2frame,pName,data,meta,atSeq,aTypes,atPairs,superCell,files,rigBod,PWId,histoName[1])+ ' written')
    4722                     if rigBod:
    4723                         print(' Make rigid body restraint files for %s - TBD'%rigBod)
     4727                    print(G2pwd.MakeRMC6f(G2frame,pName,data,RMCPdict['metadata'],RMCPdict['atSeq'],
     4728                        RMCPdict['SuperCell'],PWId)+ ' written')
     4729                    print(G2pwd.MakeRMCPdat(G2frame,pName,data,RMCPdict['metadata'],RMCPdict['atSeq'],
     4730                        RMCPdict['aTypes'],RMCPdict['Pairs'],RMCPdict['SuperCell'],RMCPdict['files'],PWId,RMCPdict['histogram'][1])+ ' written')
    47244731                    print('RMCProfile file build completed')
    47254732                else:
     
    48414848            except:
    48424849                pass
    4843             files =  {'_PDF1.csv':[],'_PDFpartials.csv':[],'_SQ1.csv':[],'_XFQ1.csv':[],
    4844                       '_SQ1partials.csv':[],'_FQ1.csv':[],'_FT_XFQ1.csv':[],
     4850            files =  {'_PDF1.csv':[],'_PDF2.csv':[],'_PDFpartials.csv':[],'_SQ1.csv':[],'_SQ2.csv':[],'_XFQ1.csv':[],
     4851                      '_SQ1partials.csv':[],'_SQ2partials.csv':[],'_FQ1.csv':[],'_FT_XFQ1.csv':[],
    48454852                      '_FQ1partials.csv':[],'_bragg.csv':[],'.chi2':[]}
    48464853            for item in files:
     
    48544861#total result plots
    48554862            Labels = {'_PDF1.csv':[r'$\mathsf{R,\AA}$','G(R)','RMCP G(R) for '],
     4863                '_PDF2.csv':[r'$\mathsf{R,\AA}$','G(R)','RMCP G(R) for '],
    48564864                '_SQ1.csv':[r'$\mathsf{Q,\AA^-1}$','S(Q)','RMCP S(Q) for '],
     4865                '_SQ2.csv':[r'$\mathsf{Q,\AA^-1}$','S(Q)','RMCP S(Q) for '],
    48574866                '_FQ1.csv':[r'$\mathsf{Q,\AA^-1}$','F(Q)','RMCP F(Q) for '],
    48584867                '_FT_XFQ1.csv':[r'$\mathsf{R,\AA}$','G(R)','RMCP x-ray G(R) for '],
     
    48724881                    Yobs = np.array([X,Yobs])
    48734882                    Ycalc = np.array([X,Ycalc])
    4874                     if 'bragg' in label and ifXray:
    4875                         Labels[label][0] = r'$\mathsf{2\theta ,deg}$'
    4876                         Labels[label][1] = 'Intensity'
    4877                     G2plt.PlotXY(G2frame,[Yobs,Ycalc],labelX=Labels[label][0],
    4878                         labelY=Labels[label][1],newPlot=True,Title=Labels[label][2]+pName,
    4879                         lines=True,names=Names[1:])
     4883                    if 'bragg' in label:
     4884                        Ydiff = np.array([X,(Yobs-Ycalc)[1]])
     4885                        Yoff = np.max(Ydiff[1])-np.min(Yobs[1])
     4886                        Ydiff[1] -= Yoff
     4887                        if ifXray:
     4888                            Labels[label][0] = r'$\mathsf{2\theta ,deg}$'
     4889                            Labels[label][1] = 'Intensity'
     4890                        G2plt.PlotXY(G2frame,[Yobs,Ycalc],XY2=[Ydiff,],labelX=Labels[label][0],
     4891                            labelY=Labels[label][1],newPlot=True,Title=Labels[label][2]+pName,
     4892                            lines=True,names=Names[1:])
     4893                    else:
     4894                        G2plt.PlotXY(G2frame,[Yobs,Ycalc],labelX=Labels[label][0],
     4895                            labelY=Labels[label][1],newPlot=True,Title=Labels[label][2]+pName,
     4896                            lines=True,names=Names[1:])
    48804897#partials plots
    48814898            Labels = {'_PDFpartials.csv':[r'$\mathsf{R,\AA}$','G(R)','RMCP G(R) partials for '],
    48824899                '_SQ1partials.csv':[r'$\mathsf{Q,\AA^-1}$','S(Q)','RMCP S(Q) partials for '],
     4900                '_SQ2partials.csv':[r'$\mathsf{Q,\AA^-1}$','S(Q)','RMCP S(Q) partials for '],
    48834901                '_FQ1partials.csv':[r'$\mathsf{Q,\AA^-1}$','F(Q)','RMCP F(Q) partials for ']}
    48844902            for label in Labels:
     
    1052310541    if 'modulated' in data['General']['Type']:
    1052410542        data['General']['Modulated'] = True
    10525         data['General']['Type'] = 'nuclear'     
     10543        data['General']['Type'] = 'nuclear'
     10544    if 'RMC' not in data:
     10545        data['RMC'] = {'RMCProfile':{},'fullrmc':{}}
    1052610546#end patch   
    1052710547
  • trunk/GSASIIpwd.py

    r4236 r4248  
    22432243    return fname
    22442244
    2245 def MakeRMCPdat(G2frame,Name,Phase,Meta,Atseq,Atypes,atPairs,Supercell,Files,rigBod,PWId,BraggWt):
     2245def MakeRMCPdat(G2frame,Name,Phase,Meta,Atseq,Atypes,atPairs,Supercell,Files,PWId,BraggWt):
    22462246    PWDdata = G2frame.GetPWDRdatafromTree(PWId)
    22472247    inst = PWDdata['Instrument Parameters'][0]
     
    22752275    fl.write('TEMPERATURE :: '+str(Meta['temperature'])+'\n')
    22762276    fl.write('INVESTIGATOR :: '+Meta['owner']+'\n')
    2277     minD = ' '.join(['%6.3f'%dist for dist in pairMin])
    2278     fl.write('MINIMUM_DISTANCES ::   %s  Angstrom\n'%minD)
     2277    minHD = ' '.join(['%6.3f'%dist[0] for dist in pairMin])
     2278    minD = ' '.join(['%6.3f'%dist[1] for dist in pairMin])
     2279    maxD = ' '.join(['%6.3f'%dist[2] for dist in pairMin])
     2280    fl.write('MINIMUM_DISTANCES ::   %s  Angstrom\n'%minHD)
    22792281    maxMv = ' '.join(['%6.3f'%mov for mov in maxMoves])
    22802282    fl.write('MAXIMUM_MOVES ::   %s Angstrom\n'%maxMv)
     
    22932295    fl.write('INPUT_CONFIGURATION_FORMAT ::  rmc6f\n')
    22942296    fl.write('SAVE_CONFIGURATION_FORMAT  ::  rmc6f\n')
     2297    fl.write('DISTANCE_WINDOW ::\n')
     2298    fl.write('  > MNDIST :: %s\n'%minD)
     2299    fl.write('  > MXDIST :: %s\n'%maxD)
    22952300    for File in Files:
    22962301        if Files[File][0]:
     
    23182323    fl.write('  > DMIN :: %.2f\n'%(dMin-0.02))
    23192324    fl.write('  > WEIGHT :: %10.3f\n'%BraggWt)
    2320     fl.write('\n')
    2321     if rigBod[1]:
    2322         fl.write('  %% future? POLYHEDRAL_RESTRAINT ::  %d\n'%rigBod[1])
    23232325    fl.write('\n')
    23242326    fl.write('END  ::\n')
Note: See TracChangeset for help on using the changeset viewer.