TNT_Script/guoyi.run
2023-09-14 00:08:43 +08:00

386 lines
11 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

macro=;
log %7.tnt.log;
/*Arguments*/
if ( (argnumber == 0) | (argnumber >7) )
silent -console;
quote - /----------------------------------------------------\;
quote - | GUOYI TNT SCRIPT 2022-2023 MIT |;
quote - | You need to give your filename |;
quote - | shell> tnt run guoyi.tnt filename, (Linux & Mac) |;
quote - | shell> tnt run guoyi.run filename(semicolon) (Win) |;
quote - | ============================== |;
quote - | === Parameters Details === |;
quote - | ============================== |;
quote - | filename type weight K cons resamp prefix |;
quote - | - type should be 32, dna, prot, num |;
quote - | num=number, dna=DNA, prot=protein |;
quote - | 32=max number allowed (default) |;
quote - | - weight should be iw, ew, eiw |;
quote - | iw=implied weight, ew=equal weight |;
quote - | eiw=extended implied weight (default) |;
quote - | N.B. K of ew must followed 0 (=NA) |;
quote - | - K is 12 (default) following Goloboff |;
quote - | et al. 2017 (Cladistics 34: 407437) |;
quote - | it must more than 0 |;
quote - | - cons should be str, mjr, hlf |;
quote - | mjr=majority rule, hlf=half |;
quote - | str=strict (default) |;
quote - | - resamp should be sum of what you want |;
quote - | jak=1, boot=2, relative bremer=4 |;
quote - | i.e. jak+boot+bremer=7 (default) |;
quote - | - prefix can be empty, or a string |;
quote - | default is empty |;
quote - \----------------------------------------------------/;
proc/;
end
/*Basic settings*/
taxname+1000;
taxname=;
mxram 10240;
if(argnumber>=2)
nstates %2;
else
nstates 32;
end
nstates NOGAPS;
/*Set K*/
if(argnumber>2 )
if (eqstring [ %3 ew ])
quote Equal weighting is used;
if (argnumber>=4)
if (%4!=0)
quote Warning: equal weighting %4 should be fullfilled with 0;
end
end
end
if ((eqstring [ %3 iw ]) | (eqstring [ %3 eiw ]))
if (argnumber>=4)
piwe=%4;
else
piwe=12;
end
end
else
piwe=12;
end
/*Reopen tnt*/
procedure %1;
hold 10000;
/*Report what will be done*/
quote - /-----------------------------------------------\;
if(argnumber>2)
if (eqstring [ %3 iw ])
if (argnumber>3)
quote - | Implied weighting will be used, K is %4. |;
else
quote - | Implied weighting will be used, K is 12. |;
end
end
if (eqstring [ %3 eiw ])
if (argnumber>3)
quote - | Ex-implied weighting will be used, K is %4. |;
else
quote - | Ex-implied weighting will be used, K is 12. |;
end
end
if (eqstring [ %3 ew ])
quote - | Equal weighting will be used. |;
end
else
quote - | Ex-implied weighting will be used, K is 12. |;
end
if (ntax<=25)
quote - | Implicit enumeration will be performed. |;
end
if ((ntax>25) && (ntax < 75))
quote - | TBR Mult will be performed. |;
end
if (ntax>=75)
quote - | TBR Mult and Xmult will be performed. |;
end
if (argnumber>=5)
if (eqstring [ %5 mjr ])
quote - | Majority-rule consensus will be used. |;
end
if (eqstring [ %5 hlf ])
quote - | Half strict consensus will be used. |;
end
if(eqstring [ %5 str ])
quote - | Strict consensus will be used. |;
end
end
if (argnumber<5)
quote - | Strict consensus will be used. |;
end
if (argnumber>=6)
if (%6==1)
quote - | Jackknifing |;
end
if (%6==2)
quote - | Bootstrap |;
end
if (%6==3)
quote - | Jackknifing and bootstrap |;
end
if (%6==4)
quote - | Relative bremer support |;
end
if (%6==5)
quote - | Jackknifing and relative bremer support |;
end
if (%6==6)
quote - | Bootstrap and relative bremer support |;
end
if (%6==7)
quote - | Jackknifing, bootstrap and relative bremer |;
end
end
if (argnumber<6)
quote - | Jackknifing, bootstrap and relative bremer |;
end
quote - | will be shown on the resample.svg. |;
quote - | Apomorphic characters mapping will be shown |;
quote - | on the apo.svg and saved to apo*.tre. |;
quote - | TL, CI and RI will be calculated finally. |;
quote - \------------------------------------------------/;
/*Implied weighting settings*/
if(argnumber>2)
if (eqstring [ %3 iw ])
piwe&;
end
if (eqstring [ %3 eiw ])
xpiwe(*;
piwe&;
end
else
xpiwe(*;
piwe&;
end
/*Search trees*/
if(eqstring [ %3 ew ] | eqstring [ %3 iw ] )
if (ntax<=25)
ienum;
else
mult=replic 1000 tbr hold 1000;
bbreak=tbr fill;
if (ntax>74)
sect: slack 1000;
xmult=hit 1000 noupdate replications 20 drift 10 ratchet 10 fuse 10 hold 1 keepall;
end
end
else
mult=replic 1000 tbr hold 1000;
bbreak=tbr fill;
if (ntax>74)
sect: slack 1000;
xmult=hit 1000 noupdate replications 20 drift 10 ratchet 10 fuse 10 hold 1 keepall;
end
end
/*Export trees*/
export= %7.trees.tre;
taxname-;
export= %7.trees_no.tre;
taxname=;
tsave = %7.trees.ctf;
tsave *= %7.trees.tnt.tre;
/*Consensus tree*/
if (argnumber<=4)
nelsen *;
else
if (eqstring [ %5 str ])
nelsen *;
end
if (eqstring [ %5 mjr ])
majority *;
end
if (eqstring [ %5 hlf ])
comcomp *;
end
end
/*Tree vault store*/
hold /+0;
tvault >/;
/*Export consensus tree*/
tchoose /;
export - %7.original.tre;
taxname-;
export - %7.original_no.tre;
tsave = %7.original.ctf;
tsave *= %7.original.tnt.tre;
/*Caulculate TL/CI/RI score*/
report-;
var-;
var =
0 themin
1 themax
2 CI
3 RI
4 TL
;
set themin minsteps;
set themax maxsteps;
set TL length[0];
set CI 'themin'/'TL'; /*CI=1 means no homoplasy*/
set RI ('themax'-'TL')/('themax'-'themin'); /*RI=1 character fits perfetcly*/
report=;
/*Apomorphic characters*/
export = %7.winclada.tre;
taxname =;
ttags=;
apo >0;
quote - /----------------------------------------------\;
quote - apomorphy tags start ;
ttags/;
quote - apomorphy tags stop ;
quote - \----------------------------------------------/;
ttags & %7.apo.svg thickness 7 italics fontsize 15;
export < %7.apo.tre;
taxname-;
export - %7.apo_no.tre;
ttags-;
/*Get jak/boot/relative-bremer support*/
tchoose/;
ttags=;
ttags]; /*in one line*/
/* jak=1, boot=2, bremer=4, */
/* jak+boot=3, */
/* jak+brember=5, boot+bremer=6, */
/* jak+boot+bremer=7, */
if (argnumber<=5)
/*jakknifing*/
resample jak replications 1000 from 0;
/*bootstrap*/
resample boot replications 1000 from 0;
/*relative bremer*/
sub 1; hold +1000; bbreak=fill;
sub 3; hold +3000; bbreak=fill;
sub 5; hold +5000; bbreak=fill;
sub 7; hold +7000; bbreak=fill;
bsupport[;
else
if((%6==1) | (%6==3) | (%6==5) | (%6==7))
resample jak replications 1000 from 0;
end
if((%6==2) | (%6==3) | (%6==6) | (%6==7))
resample boot replications 1000 from 0;
end
if((%6==4) | (%6==5) | (%6==6) | (%6==7))
sub 1; hold +1000; bbreak=fill;
sub 3; hold +3000; bbreak=fill;
sub 5; hold +5000; bbreak=fill;
sub 7; hold +7000; bbreak=fill;
bsupport[;
end
end
/*Export consensus tree with supports*/
ttags & %7.resample.svg thickness 7 italics fontsize 15;
quote - /----------------------------------------------\;
quote - resample tags start ;
ttags/;
quote - resample tags stop ;
quote - \----------------------------------------------/;
export < %7.resample.tre;
taxname-;
export - %7.resample_no.tre;
ttags-;
/*Report CI/RI/TL */
macfloat 3;
quote Consistency Index (CI) is 'CI';
quote Retention Index (RI) is 'RI';
quote Tree Length (TL) is 'TL';
/*Report*/
quote - /----------------------------------------------\;
quote - | The analysis has been finished. |;
quote - | The file `tnt.log` contains |;
quote - | K, TL, CI and RI |;
quote - | The file `trees*.tre` contain |;
quote - | trees found by mult and xmult |;
quote - | The file `original*.tre` contain |;
quote - | strict consensus tree without label |;
quote - | The file `resample*.tre` contain |;
quote - | consensus tree with support |;
quote - | The file `apo*.tre` contain |;
quote - | tree with apomorphic character |;
quote - | The file `*_no.tre` contain |;
quote - | tree with `taxname-` |;
quote - | The file `*.ctf` tree file is |;
quote - | only readable for TNT |;
quote - | The file `*.tnt.tre` contain |;
quote - | is the ctf file with taxname |;
quote - | The file `resample.svg` contain |;
if (argnumber>=5)
if(eqstring [ %5 mjr ])
quote - | majority rule consensus tree with |;
end
if(eqstring [ %5 hlf ])
quote - | half strict consensus tree with |;
end
if(eqstring [ %5 str ])
quote - | strict consensus tree with |;
end
else
quote - | strict consensus tree with |;
end
if (argnumber>=6)
if (%6==1)
quote - | jackknifing |;
end
if (%6==2)
quote - | bootstrap |;
end
if (%6==3)
quote - | jackknifing and bootstrap |;
end
if (%6==4)
quote - | relative bremer support |;
end
if (%6==5)
quote - | jackknifing and relative bremer |;
quote - | support |;
end
if (%6==6)
quote - | bootstrap and relative bremer |;
quote - | support |;
end
if (%6==7)
quote - | jackknifing, bootstrap and |;
quote - | relative bremer support |;
end
else
quote - | jackknifing, bootstrap and |;
quote - | relative bremer support |;
end
quote - | The file `apo.svg` contain the |;
quote - | tree with apomorphy mapping |;
quote - | The file `winclada.tre` can be |;
quote - | converted by tnt2winclada |;
quote - \----------------------------------------------/;
/*Quit*/
zzz;