Changeset 4410 for trunk/GSASIIdataGUI.py
- Timestamp:
- Apr 24, 2020 11:06:35 AM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIdataGUI.py
r4406 r4410 1489 1489 for i in range(1,1+ibanks): 1490 1490 choices.append('Bank '+str(i)) 1491 bank = 1 + G2 IO.BlockSelector(1491 bank = 1 + G2G.BlockSelector( 1492 1492 choices, self, 1493 1493 title=u'Select an instrument parameter bank for '+ … … 1538 1538 for l in dI.defaultIparm_lbl: 1539 1539 choices.append('Defaults for '+l) 1540 res = G2 IO.BlockSelector(choices,ParentFrame=self,title=head,1540 res = G2G.BlockSelector(choices,ParentFrame=self,title=head, 1541 1541 header='Select default inst parms',useCancel=True) 1542 1542 if res is None: return None … … 3793 3793 3794 3794 def OnDeletePhase(self,event): 3795 'Delete a phase from the tree. Called by Data/Delete Phase menu' 3796 #Hmm, also need to delete this phase from Reflection Lists for each PWDR histogram 3795 '''Delete one or more phases from the tree. Called by Data/Delete Phase menu. 3796 Also delete this phase from Reflection Lists for each PWDR histogram; 3797 removes the phase from restraints and deletes any constraints 3798 with variables from the phase. 3799 If any deleted phase is marked as Used in a histogram, a more rigorous 3800 "deep clean" is done and histogram refinement results are cleared, as well as 3801 the covariance information and all plots are deleted 3802 ''' 3803 selItem = self.GPXtree.GetSelection() 3797 3804 if self.dataWindow: 3798 3805 self.dataWindow.ClearData() … … 3800 3807 DelList = [] 3801 3808 DelItemList = [] 3809 consDeleted = 0 3810 usedPhase = False 3802 3811 if GetGPXtreeItemId(self,self.root,'Phases'): 3803 3812 sub = GetGPXtreeItemId(self,self.root,'Phases') … … 3808 3817 else: 3809 3818 subr = 0 3810 if sub: 3811 item, cookie = self.GPXtree.GetFirstChild(sub) 3812 while item: 3813 TextList.append(self.GPXtree.GetItemText(item)) 3814 item, cookie = self.GPXtree.GetNextChild(sub, cookie) 3815 dlg = wx.MultiChoiceDialog(self, 'Which phase to delete?', 'Delete phase', TextList, wx.CHOICEDLG_STYLE) 3816 try: 3817 if dlg.ShowModal() == wx.ID_OK: 3818 result = dlg.GetSelections() 3819 for i in result: DelList.append([i,TextList[i]]) 3820 item, cookie = self.GPXtree.GetFirstChild(sub) 3821 i = 0 3822 while item: 3823 if [i,self.GPXtree.GetItemText(item)] in DelList: DelItemList.append(item) 3824 item, cookie = self.GPXtree.GetNextChild(sub, cookie) 3825 i += 1 3826 for item in DelItemList: 3827 name = self.GPXtree.GetItemText(item) 3828 self.GPXtree.Delete(item) 3829 self.G2plotNB.Delete(name) 3830 item, cookie = self.GPXtree.GetFirstChild(self.root) 3831 while item: 3832 name = self.GPXtree.GetItemText(item) 3833 if 'PWDR' in name: 3834 Id = GetGPXtreeItemId(self,item, 'Reflection Lists') 3835 refList = self.GPXtree.GetItemPyData(Id) 3836 if len(refList): 3837 for i,item in DelList: 3838 if item in refList: 3839 del(refList[item]) 3840 elif 'HKLF' in name: 3841 data = self.GPXtree.GetItemPyData(item) 3842 data[0] = {} 3843 3844 item, cookie = self.GPXtree.GetNextChild(self.root, cookie) 3845 finally: 3846 dlg.Destroy() 3819 if GetGPXtreeItemId(self,self.root,'Constraints'): 3820 id = GetGPXtreeItemId(self,self.root,'Constraints') 3821 constr = self.GPXtree.GetItemPyData(id) 3822 else: 3823 constr = {} 3824 3825 item, cookie = self.GPXtree.GetFirstChild(sub) 3826 while item: 3827 TextList.append(self.GPXtree.GetItemText(item)) 3828 item, cookie = self.GPXtree.GetNextChild(sub, cookie) 3829 dlg = wx.MultiChoiceDialog(self, 'Which phase to delete?', 'Delete phase', TextList, wx.CHOICEDLG_STYLE) 3830 try: 3831 if dlg.ShowModal() == wx.ID_OK: 3832 result = dlg.GetSelections() 3833 for i in result: DelList.append([i,TextList[i]]) 3834 item, cookie = self.GPXtree.GetFirstChild(sub) 3835 i = 0 3836 while item: 3837 if [i,self.GPXtree.GetItemText(item)] in DelList: DelItemList.append(item) 3838 item, cookie = self.GPXtree.GetNextChild(sub, cookie) 3839 i += 1 3840 for item in DelItemList: 3841 phase = self.GPXtree.GetItemPyData(item) 3842 for h in phase['Histograms']: 3843 if 'Use' not in phase['Histograms'][h]: continue 3844 if phase['Histograms'][h]['Use']: 3845 usedPhase = True 3846 break 3847 if 'pId' in phase: 3848 p = phase['pId'] 3849 else: 3850 p = '?' 3851 self.GPXtree.Delete(item) 3852 if item == selItem: selItem = self.root 3853 # look for constraints to remove 3854 for key in constr: 3855 delThis = [] 3856 if key.startswith('_'): continue 3857 for i,cons in enumerate(constr[key]): 3858 for var in cons[0:-3]: 3859 if str(var[1]).startswith(str(p)): 3860 delThis.append(i) 3861 break 3862 for i in reversed(delThis): 3863 consDeleted += 1 3864 del constr[key][i] 3865 # delete refinement results from histograms 3866 item, cookie = self.GPXtree.GetFirstChild(self.root) 3867 while item: 3868 name = self.GPXtree.GetItemText(item) 3869 if 'PWDR' in name: 3870 data = self.GPXtree.GetItemPyData(item) 3871 if usedPhase: # remove r-factors 3872 dellist = [value for value in data[0] if ':' in value] 3873 for v in dellist+['Durbin-Watson', 'R', 'wR', 'Rb', 3874 'wRb', 'wRmin','Nobs']: 3875 if v in data[0]: del data[0][v] 3876 # could wipe out computed & difference patterns, but does not work 3877 #data[1][3] = np.zeros_like(data[1][3]) 3878 #data[1][5] = np.zeros_like(data[1][5]) 3879 # always get rid of reflection lists 3880 Id = GetGPXtreeItemId(self,item, 'Reflection Lists') 3881 refList = self.GPXtree.GetItemPyData(Id) 3882 if len(refList): 3883 for i,item in DelList: 3884 if item in refList: 3885 del(refList[item]) 3886 elif 'HKLF' in name and usedPhase: # probably not needed if phase is not used 3887 data = self.GPXtree.GetItemPyData(item) 3888 data[0] = {} 3889 3890 item, cookie = self.GPXtree.GetNextChild(self.root, cookie) 3891 finally: 3892 dlg.Destroy() 3893 if usedPhase: # clear info from last refinement for "deep clean" if a used phase is deleted 3894 id = GetGPXtreeItemId(self,self.root,'Covariance') 3895 if DelItemList and id: 3896 self.GPXtree.SetItemPyData(id,{}) 3897 id = GetGPXtreeItemId(self,self.root,'Sequential results') 3898 if DelItemList and id: 3899 self.GPXtree.Delete(id) 3900 if id == selItem: selItem = self.root 3901 # delete all plots 3902 for lbl in self.G2plotNB.plotList: 3903 self.G2plotNB.Delete(lbl) 3847 3904 if subr: #remove restraints for deleted phase 3848 3905 DelList = [itm[1] for itm in DelList] … … 3852 3909 if name in DelList: 3853 3910 self.GPXtree.Delete(item) 3854 item, cookie = self.GPXtree.GetNextChild(subr, cookie) 3855 3911 if item == selItem: selItem = self.root 3912 item, cookie = self.GPXtree.GetNextChild(subr, cookie) 3913 # force redisplay of current tree item if it was not deleted 3914 self.PickIdText = None 3915 SelectDataTreeItem(self,selItem) 3916 wx.CallAfter(self.GPXtree.SelectItem,selItem) 3917 if consDeleted: 3918 print('\n',consDeleted,'constraints were deleted') 3919 3856 3920 def OnRenameData(self,event): 3857 3921 'Renames an existing phase. Called by Data/Rename Phase menu'
Note: See TracChangeset
for help on using the changeset viewer.