Changeset 2461
- Timestamp:
- Sep 8, 2016 9:09:47 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIphsGUI.py
r2458 r2461 723 723 Obj = event.GetEventObject() 724 724 isym = Indx[Obj.GetId()] 725 spCode = {'red':-1,'black':1} 725 spCode = {'red':-1,'black':1} 726 726 SGData['SGSpin'][isym] = spCode[Obj.GetValue()] 727 G2spc.CheckSpin(isym,SGData) 727 728 wx.CallAfter(UpdateGeneral) 728 729 … … 747 748 spinSizer.Add(spinOp,0,WACV) 748 749 MagSym = G2spc.MagSGSym(SGData) 749 spinSizer.Add(wx.StaticText(General,label=' Magnetic space group: '+MagSym),0,WACV) 750 SGData['MagSpGrp'] = MagSym 751 spinSizer.Add(wx.StaticText(General,label=' OG Magnetic space group: '+MagSym),0,WACV) 750 752 magSizer.Add(spinSizer) 751 753 return magSizer -
trunk/GSASIIspc.py
r2458 r2461 102 102 SGData['SGGen'].append(int(SGInfo[8][i])) 103 103 SGData['SGSpin'].append(1) 104 if SGData['SGLaue'] == '2/m' and SGData['SGLatt'] != 'P' and '/' in SGData['SpGrp']: 105 SGData['SGSpin'].append(1) #fix bug in fortran 106 if SGData['SpGrp'] in ['F 2 2 2','F m m m','F m m 2','F m 2 m','F 2 m m']: 107 SGData['SGSpin'] = [1,1,1,1,1,1] 108 if SGData['SpGrp'] in ['F d d 2','F d 2 d','F 2 d d','F d d d']: 109 SGData['SGSpin'] = [1,1,1] 104 110 if SGData['SGInv']: 105 111 if SGData['SGLaue'] in ['-1','2/m','mmm']: … … 500 506 OprFlg = [] 501 507 if Nsyms in [1,3]: NunqOp = 0 #Triclinic acentric OR trigonal 3 502 elif Nsyms == 2: #Centric triclinic or acentric mo moclinic508 elif Nsyms == 2: #Centric triclinic or acentric monoclinic 503 509 NunqOp = 1 504 510 UsymOp.append(OprNames[1]) … … 578 584 UsymOp.append(OprNames[7]) 579 585 OprFlg.append(SGData['SGGen'][7]) 580 elif Nsyms == 12 and '3' in OprNames[1] : #Trigonal586 elif Nsyms == 12 and '3' in OprNames[1] and SGData['SGSys'] != 'cubic': #Trigonal 581 587 NunqOp = 2 582 588 UsymOp.append(OprNames[3]) … … 636 642 if ncv > 1: 637 643 for icv in range(ncv): 644 if SGData['SpGrp'] in ['F d d 2','F d 2 d','F 2 d d','F d d d']: 645 break 646 if 'F' in SGData['SpGrp'] and SGData['SGSys'] == 'cubic': 647 break 638 648 if icv: 639 649 if SGData['SGCen'][icv][0] == 0.5: 640 650 if SGData['SGCen'][icv][1] == 0.5: 641 651 if SGData['SGCen'][icv][2] == 0.5: 642 UsymOp.append(' Icen ') 652 if not SGData['SpGrp'] in ['I 41/a','I 41 m d', 653 'I 41 c d','I -4 2 d','I -4 3 d', 654 'I a 3 d','I a -3 d','I b 3 d','I b -3 d']: 655 UsymOp.append(' Icen ') 643 656 else: 644 657 UsymOp.append(' Ccen ') … … 652 665 return UsymOp,OprFlg 653 666 667 def CheckSpin(isym,SGData): 668 ''' Check for exceptions in spin rules 669 ''' 670 if SGData['SpGrp'] in ['R 3 2','R -3',]: 671 if SGData['SGSpin'][isym] < 0: 672 SGData['SGSpin'][(isym+1)%2] = 1 673 elif SGData['SpGrp'] == 'R -3 m': 674 if SGData['SGSpin'][2] < 0: 675 if SGData['SGSpin'][0]*SGData['SGSpin'][1] < 0: 676 if SGData['SGSpin'][isym] < 0: 677 SGData['SGSpin'][:2] = [-1,-1] 678 else: 679 SGData['SGSpin'][:2] = [1,1] 680 elif SGData['SpGrp'] in ['C c','C 1 c 1','A a','A 1 a 1','B b 1 1','C c 1 1', 681 'A 1 1 a','B 1 1 b','I -4']: 682 if SGData['SGSpin'][:2] == [-1,-1]: 683 SGData['SGSpin'][(isym+1)%2] = 1 684 elif SGData['SpGrp'] in ['C 2/c','C 1 2/c 1','A 2/a','A 1 2/a 1','B 2/b 1 1','C 2/c 1 1', 685 'A 1 1 2/a','B 1 1 2/b']: 686 if SGData['SGSpin'][1:3] == [-1,-1]: 687 SGData['SGSpin'][isym%2+1] = 1 688 elif SGData['SGPtGrp'] in ['222','mm2','2mm','m2m']: 689 if SGData['SGSpin'][0]*SGData['SGSpin'][1]*SGData['SGSpin'][2] < 0: 690 SGData['SGSpin'][(isym+1)%3] *= -1 691 if SGData['SpGrp'][0] == 'F' and isym > 2: 692 SGData['SGSpin'][(isym+1)%3+3] *= -1 693 elif SGData['SGPtGrp'] == 'mmm': 694 if SGData['SpGrp'][0] == 'F' and isym > 2: 695 SGData['SGSpin'][(isym+1)%3+3] *= -1 696 elif SGData['SGSpin'][3] < 0: 697 if SGData['SpGrp'] in ['C m m a','A b m m','B m c m','B m a m','C m m b','A c m m', 698 'C c c a','A b a a','B b c b','B b a b','C c c b','A c a a','I b c a','I c a b']: 699 for i in [0,1,2]: 700 if i != isym and SGData['SGSpin'][i] < 0: 701 SGData['SGSpin'][i] = 1 702 elif SGData['SpGrp'] in ['I m m a','I b m m','I m c m','I m a m','I m m b','I c m m']: 703 if SGData['SGSpin'][0]*SGData['SGSpin'][1]*SGData['SGSpin'][2] < 0: 704 SGData['SGSpin'][(isym+1)%3] *= -1 705 elif SGData['SpGrp'] in ['I -4 m 2','I -4 c 2']: 706 if SGData['SGSpin'][2] < 0: 707 if 'm' in SGData['SpGrp']: 708 SGData['SGSpin'][1] = 1 709 elif isym < 2: 710 if SGData['SGSpin'][isym] < 0: 711 SGData['SGSpin'][:2] = [-1,-1] 712 else: 713 SGData['SGSpin'][:2] = [1,1] 714 else: 715 SGData['SGSpin'][:2] = [1,1] 716 654 717 def MagSGSym(SGData): 655 718 SGLaue = SGData['SGLaue'] … … 659 722 return SGData['SpGrp'] 660 723 magSym = SGData['SpGrp'].split() 661 if len(SpnFlp) == 1: 724 if len(SpnFlp) == 1: #ok 662 725 if SpnFlp[-1] == -1: 663 726 magSym[1] += "'" 664 727 return ' '.join(magSym) 665 if SGLaue in ['mmm', '4/mmm','6/mmm']:728 if SGLaue in ['mmm',]: 666 729 for i in [0,1,2]: 667 if SpnFlp[i] < 0: 730 if SpnFlp[i] < 0: 668 731 magSym[i+1] += "'" 669 elif SGLaue in ['2/m','4/m','6/m']: 670 sym = magSym[1].replace("'","").split('/') 671 for i in [0,1]: 672 if SpnFlp[i] < 0: 673 sym[i] += "'" 674 magSym[1] = '/'.join(sym) 732 if len(GenSym) > 3: 733 if magSym[0] == 'F': 734 if SpnFlp[3]+SpnFlp[4]+SpnFlp[5] < 0: 735 if SpnFlp[3] > 0: 736 magSym[0] += '(A)' 737 elif SpnFlp[4] > 0: 738 magSym[0] += '(B)' 739 elif SpnFlp[5] > 0: 740 magSym[0] += '(C)' 741 else: 742 if SpnFlp[3] < 0: 743 magSym[0] += '(P)' 744 elif SGLaue == '6/mmm': #ok 745 if len(GenSym) == 2: 746 for i in [0,1]: 747 if SpnFlp[i] < 0: 748 magSym[i+2] += "'" 749 if SpnFlp[0]*SpnFlp[1] < 0: 750 magSym[1] += "'" 751 else: 752 sym = magSym[1].split('/') 753 for i in [0,1,2]: 754 if SpnFlp[i] < 0: 755 if i: 756 magSym[i+1] += "'" 757 else: 758 sym[1] += "'" 759 if SpnFlp[1]*SpnFlp[2] < 0: 760 sym[0] += "'" 761 magSym[1] = '/'.join(sym) 762 elif SGLaue == '4/mmm': 763 if len(GenSym) == 2: 764 for i in [0,1]: 765 if SpnFlp[i] < 0: 766 magSym[i+2] += "'" 767 if SpnFlp[0]*SpnFlp[1] < 0: 768 magSym[1] += "'" 769 else: 770 if '/' in magSym[1]: #P 4/m m m, etc. 771 sym = magSym[1].split('/') 772 for i in [0,1,2]: 773 if SpnFlp[i] < 0: 774 if i: 775 magSym[i+1] += "'" 776 else: 777 sym[1] += "'" 778 if SpnFlp[1]*SpnFlp[2] < 0: 779 sym[0] += "'" 780 magSym[1] = '/'.join(sym) 781 if SpnFlp[3] < 0: 782 magSym[0] += '(P)' 783 else: 784 for i in [0,1]: 785 if SpnFlp[i] < 0: 786 magSym[i+2] += "'" 787 if SpnFlp[0]*SpnFlp[1] < 0: 788 magSym[1] += "'" 789 if SpnFlp[2] < 0: 790 magSym[0] += '(P)' 791 elif SGLaue in ['2/m','4/m','6/m']: #all ok 792 Uniq = {'a':1,'b':2,'c':3,'':1} 793 id = [0,1] 794 if len(magSym) > 2: 795 id = [0,Uniq[SGData['SGUniq']]] 796 sym = magSym[id[1]].split('/') 797 if len(GenSym) == 3: 798 for i in [0,1,2]: 799 if SpnFlp[i] < 0: 800 if i == 2: 801 magSym[0] += '(P)' 802 else: 803 sym[i] += "'" 804 else: 805 for i in [0,1]: 806 if SpnFlp[i] < 0: 807 if i and magSym[0] in ['A','B','C','I'] and SGData['SpGrp'] != 'I 41/a': 808 magSym[0] += '(P)' 809 else: 810 sym[i] += "'" 811 magSym[id[1]] = '/'.join(sym) 675 812 elif SGLaue in ['3','3m1','31m']: #ok 676 813 # GSASIIpath.IPyBreak() 677 print GenSym 678 print magSym 679 print SpnFlp 680 if len(GenSym) == 1: 681 id = 2 682 if (len(magSym) == 4) and (magSym[2] == '1'): 683 id = 3 684 if '3' in GenSym[0]: 685 id = 1 686 magSym[id].strip("'") 687 if SpnFlp[0] < 0: 688 magSym[id] += "'" 689 else: 690 i,j = [1,2] 691 if magSym[2] == '1': 692 i,j = [1,3] 693 magSym[i].strip("'") 694 magSym[j].strip("'") 695 if SpnFlp[:2] == [1,-1]: 696 magSym[i] += "'" 697 elif SpnFlp[:2] == [-1,-1]: 698 magSym[j] += "'" 699 elif SpnFlp[:2] == [-1,1]: 700 magSym[i] += "'" 701 magSym[j] += "'" 702 if 'c' not in magSym[2]: 703 magSym[0] = magSym[0][0] 814 magSym[0] = magSym[0].split('(')[0] 815 if len(GenSym) == 1: #all ok 816 if 'R' in GenSym[0]: 817 if SpnFlp[0] < 0: 818 magSym[0] += '(R)' 819 else: 820 id = 2 821 if (len(magSym) == 4) and (magSym[2] == '1'): 822 id = 3 823 if '3' in GenSym[0]: 824 id = 1 825 magSym[id].strip("'") 826 if SpnFlp[0] < 0: 827 magSym[id] += "'" 828 elif len(GenSym) == 2: 829 if 'R' in GenSym[1]: 704 830 if SpnFlp[1] < 0: 705 831 magSym[0] += '(R)' 706 707 708 709 print SGData['SpGrp'],': ',SGData['SGGen'],SpnFlp,' '.join(magSym),SGData['SGLatt'] 832 magSym[-1].strip("'") 833 if SpnFlp[0] < 0: 834 magSym[-1] += "'" 835 else: 836 i,j = [1,2] 837 if magSym[2] == '1': 838 i,j = [1,3] 839 magSym[i].strip("'") 840 magSym[j].strip("'") 841 if SpnFlp[:2] == [1,-1]: 842 magSym[i] += "'" 843 elif SpnFlp[:2] == [-1,-1]: 844 magSym[j] += "'" 845 elif SpnFlp[:2] == [-1,1]: 846 magSym[i] += "'" 847 magSym[j] += "'" 848 else: 849 if 'c' not in magSym[2]: 850 if SpnFlp[2] < 0: 851 magSym[0] += '(R)' 852 i,j = [1,2] 853 magSym[i].strip("'") 854 magSym[j].strip("'") 855 if SpnFlp[:2] == [1,-1]: 856 magSym[i] += "'" 857 elif SpnFlp[:2] == [-1,-1]: 858 magSym[j] += "'" 859 elif SpnFlp[:2] == [-1,1]: 860 magSym[i] += "'" 861 magSym[j] += "'" 862 elif SGData['SGPtGrp'] == '23' and len(magSym): 863 if SpnFlp[0] < 0: 864 magSym[0] += '(P)' 865 elif SGData['SGPtGrp'] == 'm3': 866 if SpnFlp[0] < 0: 867 magSym[1] += "'" 868 magSym[2] += "'" 869 if SpnFlp[1] < 0: 870 magSym[0] += '(P)' 871 if not 'm' in magSym[1]: 872 magSym[1].strip("'") 873 elif SGData['SGPtGrp'] in ['432','-43m']: 874 if SpnFlp[0] < 0: 875 magSym[1] += "'" 876 magSym[3] += "'" 877 if SpnFlp[1] < 0: 878 magSym[0] += '(P)' 879 elif SGData['SGPtGrp'] == 'm-3m': 880 if SpnFlp[:2] == [-1,1]: 881 magSym[1] += "'" 882 magSym[2] += "'" 883 elif SpnFlp[:2] == [1,-1]: 884 magSym[3] += "'" 885 elif SpnFlp[:2] == [-1,-1]: 886 magSym[1] += "'" 887 magSym[2] += "'" 888 magSym[3] += "'" 889 if SpnFlp[2] < 0: 890 magSym[0] += '(P)' 710 891 return ' '.join(magSym) 892 893 711 894 712 895 ################################################################################ -
trunk/imports/G2img_GE.py
r2418 r2461 125 125 sizexy = [2048,2048] 126 126 Npix = sizexy[0]*sizexy[1] 127 image = np.array(ar.array('f',File.read(4*Npix)),dtype=np.int32) 127 image = np.array(np.frombuffer(File.read(4*Npix),dtype=np.float32),dtype=np.int32) 128 # image = np.array(ar.array('f',File.read(4*Npix)),dtype=np.int32) 128 129 elif filename.split('.')[-1] in ['avg','cor']: 129 130 File.seek(0,2) … … 134 135 sizexy = [2048,2048] 135 136 Npix = sizexy[0]*sizexy[1] 136 image = np.array(ar.array('H',File.read(2*Npix)),dtype=np.int32) 137 image = np.array(np.frombuffer(File.read(2*Npix),dtype=np.int16),dtype=np.int32) 138 # image = np.array(ar.array('H',File.read(2*Npix)),dtype=np.int32) 137 139 else: 138 140 head = ['GE detector raw data',] … … 153 155 pos = 8192 + (imagenum-1)*2*Npix 154 156 File.seek(pos) 155 image = np.array(ar.array('H',File.read(2*Npix)),dtype=np.int32) 157 image = np.array(np.frombuffer(File.read(2*Npix),dtype=np.int16),dtype=np.int32) 158 # image = np.array(ar.array('H',File.read(2*Npix)),dtype=np.int32) 156 159 if len(image) != sizexy[1]*sizexy[0]: 157 160 print('not enough images while reading GE file: '+filename+'image #'+str(imagenum)) … … 162 165 while nframes > 1: #OK, this will sum the frames. 163 166 try: 164 image += np.array(ar.array('H',File.read(2*Npix)),dtype=np.int32) 167 image += np.array(np.frombuffer(File.read(2*Npix),dtype=np.int16),dtype=np.int32) 168 # image += np.array(ar.array('H',File.read(2*Npix)),dtype=np.int32) 165 169 except ValueError: 166 170 break
Note: See TracChangeset
for help on using the changeset viewer.