<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def from_uniform_draw(cls,pst,num_reals):
 """ instantiate a parameter ensemble from uniform draws Parameters pst : pyemu.Pst a control file instance num_reals : int number of realizations to generate Returns ------- ParameterEnsemble : ParameterEnsemble """

        #if not pe.istransformed:
        #    pe._transform()
        #ub = pe.ubnd
        #lb = pe.lbnd
        li = pst.parameter_data.partrans == "log"
        ub = pst.parameter_data.parubnd.copy()
        ub.loc[li] = ub.loc[li].apply(np.log10)
        ub = ub.to_dict()
        lb = pst.parameter_data.parlbnd.copy()
        lb.loc[li] = lb.loc[li].apply(np.log10)
        lb = lb.to_dict()

        # set up some column names
        #real_names = ["{0:d}".format(i)
        #              for i in range(num_reals)]
        real_names = np.arange(num_reals,dtype=np.int64)
        arr = np.empty((num_reals,len(ub)))
        adj_par_names = set(pst.adj_par_names)
        for i,pname in enumerate(pst.parameter_data.parnme):
            #print(pname,lb[pname],ub[pname])
            if pname in adj_par_names:
                arr[:,i] = np.random.uniform(lb[pname],
                                                      ub[pname],
                                                      size=num_reals)
            else:
                arr[:,i] = np.zeros((num_reals)) + \
                                    pst.parameter_data.\
                                         loc[pname,"parval1"]
        #print("back transforming")

        df = pd.DataFrame(arr,index=real_names,columns=pst.par_names)
        df.loc[:,li] = 10.0**df.loc[:,li]

        new_pe = cls.from_dataframe(pst=pst,df=pd.DataFrame(data=arr,columns=pst.par_names))
        #new_pe._applied_tied()
        return new_pe