Changeset 4389 for trunk/GSASIIpwd.py


Ignore:
Timestamp:
Apr 2, 2020 1:44:42 PM (3 years ago)
Author:
vondreele
Message:

adding fullrmc View & Execute methods. Still to do Setup.
Replace SetText? with SetItemLabel? for the Refine menu item . SetText? is obsolete
remove Load/Save? menu items in RMC tab - won't be used
put in citation info for RMCProfile & fullrmc
remove G2frame from RMCProfile Make routines in G2pwdr. It's a wx object & shouldn't be in there.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIpwd.py

    r4366 r4389  
    21072107################################################################################
    21082108   
    2109 def MakeInst(G2frame,Name,Phase,useSamBrd,PWId):
    2110     PWDdata = G2frame.GetPWDRdatafromTree(PWId)
    2111     histoName = G2frame.GPXtree.GetItemPyData(PWId)[2]
    2112     Size = Phase['Histograms'][histoName]['Size']
    2113     Mustrain = Phase['Histograms'][histoName]['Mustrain']
     2109def MakeInst(PWDdata,Name,Size,Mustrain,useSamBrd):
    21142110    inst = PWDdata['Instrument Parameters'][0]
    21152111    Xsb = 0.
     
    21602156    return fname
    21612157   
    2162 def MakeBack(G2frame,Name,PWId):
    2163     PWDdata = G2frame.GetPWDRdatafromTree(PWId)
     2158def MakeBack(PWDdata,Name):
    21642159    Back = PWDdata['Background'][0]
    21652160    inst = PWDdata['Instrument Parameters'][0]
     
    21792174    return fname
    21802175
    2181 def MakeRMC6f(G2frame,Name,Phase,RMCPdict,PWId):
     2176def MakeRMC6f(PWDdata,Name,Phase,RMCPdict):
    21822177   
    21832178    def findDup(Atoms):
     
    21992194    Atseq = RMCPdict['atSeq']
    22002195    Supercell =  RMCPdict['SuperCell']
    2201     PWDdata = G2frame.GetPWDRdatafromTree(PWId)
    22022196    generalData = Phase['General']
    22032197    Dups,Fracs = findDup(Phase['Atoms'])
     
    22792273    return fname,reset
    22802274
    2281 def MakeBragg(G2frame,Name,Phase,PWId):
    2282     PWDdata = G2frame.GetPWDRdatafromTree(PWId)
     2275def MakeBragg(PWDdata,Name,Phase):
    22832276    generalData = Phase['General']
    22842277    Vol = generalData['Cell'][7]
     
    23072300    return fname
    23082301
    2309 def MakeRMCPdat(G2frame,Name,Phase,RMCPdict,PWId):
     2302def MakeRMCPdat(PWDdata,Name,Phase,RMCPdict):
    23102303    Meta = RMCPdict['metadata']
    23112304    Times = RMCPdict['runTimes']
     
    23152308    Files = RMCPdict['files']
    23162309    BraggWt = RMCPdict['histogram'][1]
    2317     PWDdata = G2frame.GetPWDRdatafromTree(PWId)
    23182310    inst = PWDdata['Instrument Parameters'][0]
    23192311    refList = PWDdata['Reflection Lists'][Name]['RefList']
     
    24682460    fl.write('END  ::\n')
    24692461    fl.close()
    2470     return fname   
    2471 
    2472 def MakePDB(G2frame,Name,Phase,Atseq,Supercell):
    2473     generalData = Phase['General']
    2474     Cell = generalData['Cell'][1:7]
    2475     Trans = np.eye(3)*np.array(Supercell)
    2476     newPhase = copy.deepcopy(Phase)
    2477     newPhase['General']['SGData'] = G2spc.SpcGroup('P 1')[1]
    2478     newPhase['General']['Cell'][1:] = G2lat.TransformCell(Cell,Trans.T)
    2479     newPhase,Atcodes = G2lat.TransformPhase(Phase,newPhase,Trans,np.zeros(3),np.zeros(3),ifMag=False)
    2480     Atoms = newPhase['Atoms']
    2481     Cell = newPhase['General']['Cell'][1:7]
    2482     A,B = G2lat. cell2AB(Cell)
    2483     fname = Name+'.pdb'
    2484     fl = open(fname,'w')
    2485     fl.write('REMARK    this file is generated using GSASII\n')
    2486     fl.write('CRYST1%9.3f%9.3f%9.3f%7.2f%7.2f%7.2f P 1           1\n'%(
    2487             Cell[0],Cell[1],Cell[2],Cell[3],Cell[4],Cell[5]))
    2488     fl.write('ORIGX1      1.000000  0.000000  0.000000        0.00000\n')
    2489     fl.write('ORIGX2      0.000000  1.000000  0.000000        0.00000\n')
    2490     fl.write('ORIGX3      0.000000  0.000000  1.000000        0.00000\n')
    2491 
    2492     Natm = np.core.defchararray.count(np.array(Atcodes),'+')
    2493     Natm = np.count_nonzero(Natm-1)
    2494     nat = 0
    2495     for atm in Atseq:
    2496         for iat,atom in enumerate(Atoms):
    2497             if atom[1] == atm:
    2498                 nat += 1
    2499                 XYZ = np.inner(A,np.array(atom[3:6])-0.5)    #shift origin to middle & make Cartesian
    2500 #ATOM      1 Ni   RMC     1     -22.113 -22.113 -22.113  1.00  0.00          ni                     
    2501                 fl.write('ATOM  %5d %-4s RMC%6d%12.3f%8.3f%8.3f  1.00  0.00          %-2s\n'%(       
    2502                         nat,atom[0],nat,XYZ[0],XYZ[1],XYZ[2],atom[1]))
    2503     fl.close()
    25042462    return fname
     2463
     2464def MakefullrmcRun(Name,Phase,RMCPdict):
     2465    print(' nothing happened yet')
     2466    rname = Name+'-run.py'
     2467    rundata = ''
     2468    rundata += '#### fullrmc $s file; edit by hand if you so choose #####\n'&rname
     2469    rundata += '''
     2470import numpy as np
     2471
     2472# fullrmc library imports
     2473from fullrmc.Globals import LOGGER, FLOAT_TYPE
     2474from fullrmc.Engine import Engine
     2475from fullrmc.Constraints.PairDistributionConstraints import PairDistributionConstraint
     2476from fullrmc.Constraints.PairCorrelationConstraints import PairCorrelationConstraint
     2477from fullrmc.Constraints.DistanceConstraints import InterMolecularDistanceConstraint
     2478from fullrmc.Constraints.BondConstraints import BondConstraint
     2479from fullrmc.Constraints.AngleConstraints import BondsAngleConstraint
     2480from fullrmc.Constraints.ImproperAngleConstraints import ImproperAngleConstraint
     2481from fullrmc.Core.Collection import convert_Gr_to_gr
     2482from fullrmc.Core.MoveGenerator import MoveGeneratorCollector
     2483from fullrmc.Core.GroupSelector import RecursiveGroupSelector
     2484from fullrmc.Selectors.RandomSelectors import RandomSelector
     2485from fullrmc.Selectors.OrderedSelectors import DefinedOrderSelector
     2486from fullrmc.Generators.Translations import TranslationGenerator, TranslationAlongSymmetryAxisGenerator
     2487from fullrmc.Generators.Rotations import RotationGenerator, RotationAboutSymmetryAxisGenerator
     2488from fullrmc.Generators.Agitations import DistanceAgitationGenerator, AngleAgitationGenerator
     2489
     2490# engine file names - replace name with phase name
     2491engineFileName = "name_engine.rmc"
     2492expFileName    = "name_pdf.exp"
     2493pdbFileName    = "nme.pdb"
     2494freshStart     = False      #make TRUE for a restart
     2495
     2496            '''
     2497    rfile = open(rname,'w')
     2498    rfile.writelines(rundata)
     2499    rfile.close()
     2500   
     2501
     2502def MakePDB(Name,Phase,RMCPdict):
     2503    return None
     2504    # generalData = Phase['General']
     2505    # Cell = generalData['Cell'][1:7]
     2506    # Trans = np.eye(3)*np.array(Supercell)
     2507    # newPhase = copy.deepcopy(Phase)
     2508    # newPhase['General']['SGData'] = G2spc.SpcGroup('P 1')[1]
     2509    # newPhase['General']['Cell'][1:] = G2lat.TransformCell(Cell,Trans.T)
     2510    # newPhase,Atcodes = G2lat.TransformPhase(Phase,newPhase,Trans,np.zeros(3),np.zeros(3),ifMag=False)
     2511    # Atoms = newPhase['Atoms']
     2512    # Cell = newPhase['General']['Cell'][1:7]
     2513    # A,B = G2lat. cell2AB(Cell)
     2514    # fname = Name+'.pdb'
     2515    # fl = open(fname,'w')
     2516    # fl.write('REMARK    this file is generated using GSASII\n')
     2517    # fl.write('CRYST1%9.3f%9.3f%9.3f%7.2f%7.2f%7.2f P 1           1\n'%(
     2518    #         Cell[0],Cell[1],Cell[2],Cell[3],Cell[4],Cell[5]))
     2519    # fl.write('ORIGX1      1.000000  0.000000  0.000000        0.00000\n')
     2520    # fl.write('ORIGX2      0.000000  1.000000  0.000000        0.00000\n')
     2521    # fl.write('ORIGX3      0.000000  0.000000  1.000000        0.00000\n')
     2522
     2523    # Natm = np.core.defchararray.count(np.array(Atcodes),'+')
     2524    # Natm = np.count_nonzero(Natm-1)
     2525    # nat = 0
     2526    # for atm in Atseq:
     2527    #     for iat,atom in enumerate(Atoms):
     2528    #         if atom[1] == atm:
     2529    #             nat += 1
     2530    #             XYZ = np.inner(A,np.array(atom[3:6])-0.5)    #shift origin to middle & make Cartesian
     2531    #             fl.write('ATOM  %5d %-4s RMC%6d%12.3f%8.3f%8.3f  1.00  0.00          %-2s\n'%(       
     2532    #                     nat,atom[0],nat,XYZ[0],XYZ[1],XYZ[2],atom[1]))
     2533    # fl.close()
     2534    # return fname
    25052535
    25062536def GetRMCBonds(general,RMCPdict,Atoms,bondList):
Note: See TracChangeset for help on using the changeset viewer.