*! version 1.0.0  //  Ariel Linden 10may2019 

program define svalue, rclass
version 11.0

	syntax anything ,				///
		[							///
		FIGure   FIGure2(str asis)	/// allow figure options
		SAVing(string asis) * 		/// save the file
		]

		quietly {
	
			numlist "`anything'", max(1)
			local pval = `anything'
		
			preserve
			clear
		
			// * set obs to fit data * //
			local obs = 1 + ceil((1 - 0)/ 0.0001)
			set obs `obs'

			// * Generate P-value range from 1 to 0.0001 * //
			gen plev = 0.0001 + (_n - 1) * 0.0001
			label var plev "P-values"
			drop if (plev > 1)
				
			// * Generate S-values * //
			gen sval = -log( plev)/log(2)
			label var sval "S-values"
	
			// * retrieve sval for the specified p-value * //
			sum sval if float(plev) == float(`pval'), meanonly
			local S = round(r(mean), 0.01)
		
			// * set position of marker label * //
			if inrange(`pval', 0.80,0.94) {
				local pos (12)
			}
			else if `pval' > 0.94 { 
				local pos (11)
			}	
			else local pos (2)
		
			tw(line sval plev )(scatteri `S' `pval' `pos' "S-value: (`S')", mlabgap(*3)), ylabel(0(2)14) xlabel(0(.1)1.0, format("%4.2f")) ///
			ytitle(S-value) xtitle(P-value) legend(off) `figure2'

			// * Saving file * //  
			if `"`saving'"'!="" {
				save `saving'
			}
						
		} // end quietly	
end