This is an old revision of the document!


List #list Command

#list is a new feature in v6. It's super-useful for running multiple refinements on different data sets or running multiple models against a single data set. Some things you can do are below. There are lots more!

Typical syntax is:

num_runs 5
Backup_INP
#list pa_val  {
0.1
0.2
0.3
0.4
0.5
}
prm pa = pa_val(Run_Number);

By default refinement results aren't written to the INP file. This can be changed with the lines below, where inp_filename.inp is the name of your INP file. Note that out_file uses a “string equation”. The “Backup_INP” macro creates a backup of your input file. This is useful as if you mess up with #list you can write a blank .inp file (essentially deleting your .inp).

Backup_INP
out_file ="inp_filename.inp";

If you step through a set of pa values and fit the data with each value Topas won't save the “best answer” by default. This can be changed with a simple macro:

macro Save_Best
   {
                #if (Run_Number == 0)
                                prm Best_Rwp_ = 9999;
                #else
                                prm Best_Rwp_ = #include Best_Rwp_.txt;
                #endif
                out Best_Rwp_.txt Out(If(Get(r_wp) < Best_Rwp_, Get(r_wp), Best_Rwp_))
                out_file = If(Get(r_wp) < Best_Rwp_, Concat(String(INP_File), ".OUT"), "");
   } 

You can easily automate refinements using the #list command and string equations. Just give the filenames in the #list command and use something like “xdd filename(Run_Number)”. You can add experimental information like time/temperature/etc in the #list command.

For results files you can e.g. delete old files and write header lines with commands like the ones below. If you backup only for run 0 then you won't get annoying screen “flashes”:

#if (Run_Number == 0)
 Backup_INP
 system_before_save_OUT  { del results.txt }
 out "results.txt" append 
 Out_String("     01_range   02_temp    03_time       04_r_wp     05_height    06_err     07_bval     08_err   09_perc_cubic  \n") 
#endif 

Personal Tools