The Map.map_3D_text() method was designed for single spin model-free models. It fails otherwise. This might be a case of not enough user feedback. It will be easy to fix though.
Regards, Edward On 5 May 2014 17:45, Edward d'Auvergne <[email protected]> wrote: > Ok, now I can reproduce it :) It is the Map.map_3D_text() method of > the pipe_control.opendx module where the problem really is. > > Regards, > > Edward > > > > On 5 May 2014 17:37, Troels Emtekær Linnet <[email protected]> wrote: >> When reverting the change, you can get the bug by: >> >> relax test_suite/system_tests/scripts/relax_disp/cpmg_synthetic.py >> >> 2014-05-05 17:36 GMT+02:00 Troels Emtekær Linnet <[email protected]>: >>> Hi Edward. >>> >>> Sorry for being unclear. >>> >>> It is this comment: >>> https://gna.org/bugs/?22012#comment3 >>> >>> >>> >>> dx.map(params=['dw', 'pA', 'kex'], map_type='Iso3D', spin_id=':1@N', >>> inc=20, lower=None, upper=None, axis_incs=5, file_prefix='map', >>> dir=None, point=None, point_file='point', remap=None) >>> >>> Creating the OpenDX .net program file. >>> Opening the file 'map.net' for writing. >>> >>> Creating the OpenDX .cfg program configuration file. >>> Opening the file 'map.cfg' for writing. >>> >>> Creating the OpenDX .general file. >>> Opening the file 'map.general' for writing. >>> >>> Creating the map. >>> Opening the file 'map' for writing. >>> Progress: 0.000% >>> RelaxWarning: invalid value encountered in double_scalars >>> debug> Execution lock: Release by 'script UI' ('script' mode). >>> Traceback (most recent call last): >>> File "/Users/tlinnet/software/relax_trunk/multi/processor.py", line 494, in >>> run >>> self.callback.init_master(self) >>> File "/Users/tlinnet/software/relax_trunk/multi/__init__.py", line >>> 318, in default_init_master >>> self.master.run() >>> File "/Users/tlinnet/software/relax_trunk/relax.py", line 194, in run >>> self.interpreter.run(self.script_file) >>> File "/Users/tlinnet/software/relax_trunk/prompt/interpreter.py", line >>> 275, in run >>> return run_script(intro=self.__intro_string, local=locals(), >>> script_file=script_file, show_script=self.__show_script, >>> raise_relax_error=self.__raise_relax_error) >>> File "/Users/tlinnet/software/relax_trunk/prompt/interpreter.py", line >>> 569, in run_script >>> return console.interact(intro, local, script_file, >>> show_script=show_script, raise_relax_error=raise_relax_error) >>> File "/Users/tlinnet/software/relax_trunk/prompt/interpreter.py", line >>> 468, in interact_script >>> exec_script(script_file, local) >>> File "/Users/tlinnet/software/relax_trunk/prompt/interpreter.py", line >>> 347, in exec_script >>> runpy.run_module(module, globals) >>> File >>> "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/runpy.py", >>> line 180, in run_module >>> fname, loader, pkg_name) >>> File >>> "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/runpy.py", >>> line 72, in _run_code >>> exec code in run_globals >>> File >>> "/Users/tlinnet/software/relax_trunk/test_suite/system_tests/scripts/relax_disp/cpmg_synthetic.py", >>> line 277, in <module> >>> dx.map(params=['dw', 'pA', 'kex'], map_type='Iso3D', spin_id=":1@N", >>> inc=20, lower=None, upper=None, axis_incs=5, file_prefix='map', >>> dir=ds.resdir, point=None, point_file='point', remap=None) >>> File "/Users/tlinnet/software/relax_trunk/prompt/uf_objects.py", line >>> 221, in _call_ >>> self._backend(*new_args, **uf_kargs) >>> File "/Users/tlinnet/software/relax_trunk/pipe_control/opendx.py", >>> line 88, in map >>> Map(params, spin_id, inc, lower, upper, axis_incs, file_prefix, dir, >>> point, point_file, remap) >>> File "/Users/tlinnet/software/relax_trunk/pipe_control/opendx.py", >>> line 184, in _init_ >>> self.create_map() >>> File "/Users/tlinnet/software/relax_trunk/pipe_control/opendx.py", >>> line 197, in create_map >>> self.map_3D_text(map_file) >>> File "/Users/tlinnet/software/relax_trunk/pipe_control/opendx.py", >>> line 255, in map_3D_text >>> k, n, chi2 = self.model_statistics(spin_id=self.spin_id) >>> File >>> "/Users/tlinnet/software/relax_trunk/specific_analyses/relax_disp/api.py", >>> line 683, in model_statistics >>> spins = spin_ids_to_containers(spin_ids) >>> File >>> "/Users/tlinnet/software/relax_trunk/specific_analyses/relax_disp/data.py", >>> line 3620, in spin_ids_to_containers >>> for id in spin_ids: >>> TypeError: 'NoneType' object is not iterable >>> >>> 2014-05-05 17:27 GMT+02:00 Edward d'Auvergne <[email protected]>: >>>> The argument checking is reasonable, but the code: >>>> >>>> + #spins = spin_ids_to_containers(spin_ids) >>>> + >>>> + spins_list = [] >>>> + for spin_id in self.model_loop(): >>>> + spins_list.append(spin_id[0]) >>>> + >>>> + spins = spin_ids_to_containers(spins_list) >>>> >>>> breaks the logic. This cannot be done, as the code calling >>>> model_statistics() must be looping over the models (i.e. the >>>> model_loop()), so you cannot have the model_loop() inside it. Any API >>>> method which accepts the model_info argument will follow this logic. >>>> >>>> Regards, >>>> >>>> Edward >>>> >>>> >>>> >>>> On 5 May 2014 17:23, Edward d'Auvergne <[email protected]> wrote: >>>>> The original code was correct. The full test suite passes when this >>>>> change is not included. Why did you make this change? What was the >>>>> purpose? I'm a little confused. >>>>> >>>>> Regards, >>>>> >>>>> Edward >>>>> >>>>> >>>>> >>>>> On 5 May 2014 17:15, Troels Emtekær Linnet <[email protected]> wrote: >>>>>> Ehhhh. >>>>>> >>>>>> Can you suggest a change? >>>>>> >>>>>> Best >>>>>> Troels >>>>>> >>>>>> 2014-05-05 17:05 GMT+02:00 Edward d'Auvergne <[email protected]>: >>>>>>> Hi, >>>>>>> >>>>>>> I now have the failure when running: >>>>>>> >>>>>>> $ ./relax -s Relax_disp.test_hansen_cpmg_data_auto_analysis >>>>>>> >>>>>>> This is because the change is incorrect. The model_statistics() >>>>>>> method is called once for each individual model - for each iteration >>>>>>> of the model_loop(), which for the dispersion analysis is each spin >>>>>>> cluster (or individual spins). The logic: >>>>>>> >>>>>>> spins_list = [] >>>>>>> for spin_id in self.model_loop(): >>>>>>> spins_list.append(spin_id[0]) >>>>>>> >>>>>>> spins = spin_ids_to_containers(spins_list) >>>>>>> >>>>>>> is incorrect as the model_loop() loops over all spin clusters. >>>>>>> Therefore the 'spins' object will now be a list of the first spin >>>>>>> system from all clusters. Previously it was simply a list of all the >>>>>>> spins for the current spin cluster. I hope this makes sense. >>>>>>> >>>>>>> Regards, >>>>>>> >>>>>>> Edward >>>>>>> >>>>>>> >>>>>>> >>>>>>> On 5 May 2014 16:52, Troels Emtekær Linnet <[email protected]> >>>>>>> wrote: >>>>>>>> Now ready to be tested with: >>>>>>>> >>>>>>>> relax -s Relax_disp.test_hansen_cpmg_data_auto_analysis -d >>>>>>>> >>>>>>>> >>>>>>>> ---------- Forwarded message ---------- >>>>>>>> From: <[email protected]> >>>>>>>> Date: 2014-05-05 16:46 GMT+02:00 >>>>>>>> Subject: r22958 - /trunk/specific_analyses/relax_disp/api.py >>>>>>>> To: [email protected] >>>>>>>> >>>>>>>> >>>>>>>> Author: tlinnet >>>>>>>> Date: Mon May 5 16:46:10 2014 >>>>>>>> New Revision: 22958 >>>>>>>> >>>>>>>> URL: http://svn.gna.org/viewcvs/relax?rev=22958&view=rev >>>>>>>> Log: >>>>>>>> Inserted commit r22954 to fix the AIC method selection. >>>>>>>> >>>>>>>> The command used was: >>>>>>>> svn merge -r22953:r22954 . >>>>>>>> >>>>>>>> ..... >>>>>>>> Attempt to fix function model_statistics() in API for relax_disp. >>>>>>>> >>>>>>>> bug #22012(https://gna.org/bugs/?22012): dx.map not implemented >>>>>>>> for pipe type relax_disp. >>>>>>>> >>>>>>>> Modified: >>>>>>>> trunk/specific_analyses/relax_disp/api.py >>>>>>>> ..... >>>>>>>> >>>>>>>> >>>>>>>> Modified: >>>>>>>> trunk/specific_analyses/relax_disp/api.py >>>>>>>> >>>>>>>> Modified: trunk/specific_analyses/relax_disp/api.py >>>>>>>> URL: >>>>>>>> http://svn.gna.org/viewcvs/relax/trunk/specific_analyses/relax_disp/api.py?rev=22958&r1=22957&r2=22958&view=diff >>>>>>>> ============================================================================== >>>>>>>> --- trunk/specific_analyses/relax_disp/api.py (original) >>>>>>>> +++ trunk/specific_analyses/relax_disp/api.py Mon May 5 16:46:10 >>>>>>>> 2014 >>>>>>>> @@ -678,9 +678,21 @@ >>>>>>>> @rtype: tuple of (int, int, float) >>>>>>>> """ >>>>>>>> >>>>>>>> + # Bad argument combination. >>>>>>>> + if model_info == None and spin_id == None: >>>>>>>> + raise RelaxError("Either the model_info or spin_id >>>>>>>> argument must be supplied.") >>>>>>>> + elif model_info != None and spin_id != None: >>>>>>>> + raise RelaxError("The model_info arg " + repr(model_info) >>>>>>>> + " and spin_id arg " + repr(spin_id) + " clash. Only one should be >>>>>>>> supplied.") >>>>>>>> + >>>>>>>> # Unpack the data. >>>>>>>> spin_ids = model_info >>>>>>>> - spins = spin_ids_to_containers(spin_ids) >>>>>>>> + #spins = spin_ids_to_containers(spin_ids) >>>>>>>> + >>>>>>>> + spins_list = [] >>>>>>>> + for spin_id in self.model_loop(): >>>>>>>> + spins_list.append(spin_id[0]) >>>>>>>> + >>>>>>>> + spins = spin_ids_to_containers(spins_list) >>>>>>>> >>>>>>>> # The number of parameters for the cluster. >>>>>>>> k = param_num(spins=spins) >>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> relax (http://www.nmr-relax.com) >>>>>>>> >>>>>>>> This is the relax-commits mailing list >>>>>>>> [email protected] >>>>>>>> >>>>>>>> To unsubscribe from this list, get a password >>>>>>>> reminder, or change your subscription options, >>>>>>>> visit the list information page at >>>>>>>> https://mail.gna.org/listinfo/relax-commits >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> relax (http://www.nmr-relax.com) >>>>>>>> >>>>>>>> This is the relax-devel mailing list >>>>>>>> [email protected] >>>>>>>> >>>>>>>> To unsubscribe from this list, get a password >>>>>>>> reminder, or change your subscription options, >>>>>>>> visit the list information page at >>>>>>>> https://mail.gna.org/listinfo/relax-devel _______________________________________________ relax (http://www.nmr-relax.com) This is the relax-devel mailing list [email protected] To unsubscribe from this list, get a password reminder, or change your subscription options, visit the list information page at https://mail.gna.org/listinfo/relax-devel

