Dear KK,

Thanks for your advice. I am afraid that the "initialize" function would make the initial parameters for our machine learning using an improved ABC method.

After this learning, we got a thousand of selected parameter sets which would mimic the updated parameter distributions, those are described in var.mat.all in this case. Then, this time we use this like simulate_R(var.mat.all, fobs="observed data", interval=6).

Thus, I am afraid that we do not need the initialize function for simulation when we use the updated parameter sets. In fact, I confirmed the simulation using simulate_R() works in R but did not give me the "out" list as a result.

In this term, I am thinking the "out" list was not generated, due to "the initialization of the array". But I have no idea how to generate "out" list.

Best,

Takeshi


On 2017/07/10 14:04, Qiang Kou wrote:
I mean line 49 in ge-model.cpp. You have a function called "initialize" there.

The "initialize" function will initialize the _rand array.

Best,

KK

On Sun, Jul 9, 2017 at 9:55 PM, 井澤 毅 <a-iz...@mail.ecc.u-tokyo.ac.jp <mailto:a-iz...@mail.ecc.u-tokyo.ac.jp>> wrote:

    Dear KK,

    Sorry for bothering you again, I still have some problems.

    According to your advice, in order to initialize the array in
    ge-r.cpp,

    I put


                    Model.out_y=cube(Model.n_acc, Model._obs._n_group,
    Model._obs._n_out_date,fill::zeros);
Model.out_res_1=cube(Model.n_acc,Model._obs._n_group,
    Model._obs._n_out_date,fill::zeros);
Model.out_res_2=cube(Model.n_acc,Model._obs._n_group,
    Model._obs._n_out_date,fill::zeros);
Model.out_res_clock=cube(Model.n_acc,Model._obs._n_group,
    Model._obs._n_out_date,fill::zeros);
Model.out_res_dev=cube(Model.n_acc,Model._obs._n_group,
    Model._obs._n_out_date,fill::zeros);

    instead of the old ones,

                    Model.out_y=cube(Model.n_acc, Model._obs._n_group,
    Model._obs._n_out_date);
Model.out_res_1=cube(Model.n_acc,Model._obs._n_group,
    Model._obs._n_out_date);
Model.out_res_2=cube(Model.n_acc,Model._obs._n_group,
    Model._obs._n_out_date);
Model.out_res_clock=cube(Model.n_acc,Model._obs._n_group,
    Model._obs._n_out_date);
Model.out_res_dev=cube(Model.n_acc,Model._obs._n_group,
    Model._obs._n_out_date);

    However, I got the same error in R.

    What should I do next ?

    I am afraid that I do not know how rand generated in ge-model.cpp
    (line 37) is linked to the array in ge-r.cpp (line 49) yet. Should
    I use fill:: randu instead of fill:: zeros?

    Best,

    Takeshi




    On 2017/07/10 13:03, 井澤 毅 wrote:

    Dear KK,

    Thanks for this explanation. Now I got it.

    I did not think that ge-model.cpp is involved in this problem
    since it works well as a C++ script even in our current system.

    I still wonder why this ge-r.cpp works in the old system, but I
    will ask this to the maintainer of our system.

    I have learned a lot from your suggestion.

    Thanks again!

    Best,

    Takeshi


    On 2017/07/10 10:34, Qiang Kou wrote:
    In line 37 of ge-model.cpp, you try to free _rand. However, if
    you don't call initialize in line 49 first, the array won't be
    initialized.

    Best,

    KK

    On Sun, Jul 9, 2017 at 4:45 PM, 井澤 毅
    <a-iz...@mail.ecc.u-tokyo.ac.jp
    <mailto:a-iz...@mail.ecc.u-tokyo.ac.jp>> wrote:

        Dear KK,

        I owe you a lot! I will check it as soon as possible.

        Since I am not familiar with this much, I would be very
        happy to tell me some urls describing "initialize".

        Best,

        Takeshi


        On 2017/07/10 7:38, Qiang Kou wrote:
        Hi, professor,

        I think the problem is in ge-r. cpp, you forgot to call
        *initialize*.

        The error has nothing to do with Rcpp.

        Best,

        KK

        On Tue, Jul 4, 2017 at 2:45 AM, 井澤 毅
        <a-iz...@mail.ecc.u-tokyo.ac.jp
        <mailto:a-iz...@mail.ecc.u-tokyo.ac.jp>> wrote:

            Sorry, I forgot the attached file.

            On 2017/07/04 18:43, 井澤 毅 wrote:

            Dear KK,

            Thanks for your kind reply.

            I am afraid that one of the input file is very heavy,
            this time but I am sending a ZIP file including all.

            Please make v30 package using install.simulate_R_1.r
            and then install.simulate_R_2.r. Then, try
            ge-r_test.r, please.

            To make the v30 package, we need ge-r.cpp,
            ge-model.cpp, ge-model.h, ge-obs.cpp, ge-obs.h,
            ge-range.h.

            As the input file, we need var.mat.all matrix data in
            R and obs.Os01g0182600_g1.nc
            <http://obs.Os01g0182600_g1.nc> file in the directry.

            Then, you will see the error I have been suffering
            from for a month.

            The obs.Os01g0182600_g1.nc
            <http://obs.Os01g0182600_g1.nc> file is a file
            containing environmental fluctuation data.

            Best,

            Takeshi


            On 2017/07/04 5:40, Qiang Kou wrote:
            Hi, I am afraid the example you provided is not a
            reproducible example.

            First, we don't know the content of ge-model.h.
            Second, we don't know which input will trigger the fault.

            Please provide a reproducible example if you really
            want to get help.

            Best,

            KK

            On Sat, Jul 1, 2017 at 11:06 AM, 井澤 毅
            <a-iz...@mail.ecc.u-tokyo.ac.jp
            <mailto:a-iz...@mail.ecc.u-tokyo.ac.jp>> wrote:

                Dear rcpp-devel@lists.r-forge.r-project.org
                <mailto:rcpp-devel@lists.r-forge.r-project.org>,

                Sorry for bothering you much, but do me a favor
                please. Please help me some.

                I am just a molecular biologist working on
                plants. Thus, I am still a newcomer in this field.

                Recently, I have been working with a script using
                RcppArmadillo, This has helped me a lot. However,
                after updating the system in our institute, the
                script gives me an error repeatedly. My former
                Postdoc wrote this script. Thus, I did not know
                this inside much.

                I have tried to fix it for more than a month, but
                now I have no idea how to fix it. I would
                appreciate it very much if you could help and
                give me your advice.

                Please see an attached cpp file, termed ge-r.cpp.
                With this cpp file and other ones, I have
                succeeded to install a skeleton R package into R
                using your function Rcpp.package.skeleton.

                In this ge-r.cpp, there is one R function called
                simulate_R() written. In this R fucntion, there
                are two C++ functions, load() and simulate(),
                both are described in other cpp files, called
                from C++ into R. With cout function described in
                simulate_R(), I confirmed these two function work
                in R thanks to RcppArmadillo, however, it
                suddenly stops with an error, address(nil) cause
                'unknown' in R. It has seemed to stop when it
                return (out) at the last in ge-r.cpp. I do not
                know why it happens. Note that the C++ script
                works normally after the update of the system.
                Only this RcppArmadillo conversion from C++
                function into a R function is deformed.

                Please give me an advice, please. Of course, I
                can give you more information on the C++ script
                in details if you need.

                Best regards,

                Takeshi



                ge-r.cpp

                #ifndef __R__

                #define __R__
                #endif

                #ifndef USE_OMP
                #define USE_OMP
                #endif


                #include <RcppArmadillo.h>


                #include "ge-model.h"

                using namespace arma;



                // input:
                //              parameter matrix: row for particle, col for 
parameter
                //              filename of observation
                // output:
                //              simulation for regular time points: row for 
particle, col for time, slice for term
                //      existing observation to corresponding regular time 
points

                // [[Rcpp::depends(RcppArmadillo)]]
                // [[Rcpp::export]]
                Rcpp::List simulate_R(const arma::mat& param_r, const char* 
fobs, const int interval) {

                        try {
                                geModel Model;
                                Model.n_thread=omp_get_num_procs();
                                Model._param=param_r;
                                cout << "params set.\n";

                                cout << "filename of obs: "<< fobs << ".\n";

                                 Model._obs.load(fobs);

                                 cout << "obs loaded.\n";

                                Model.n_acc=Model._param.n_rows;
                                cout << "n_acc set to be " << Model.n_acc << 
".\n";

                                Model._obs._out_interval = interval;
                                Model._obs._n_out_date = (Model._obs._n_date / 
Model._obs._out_interval) + 1;

                                Model.out_y=cube(Model.n_acc, 
Model._obs._n_group, Model._obs._n_out_date);
                                
Model.out_res_1=cube(Model.n_acc,Model._obs._n_group, Model._obs._n_out_date);
                                
Model.out_res_2=cube(Model.n_acc,Model._obs._n_group, Model._obs._n_out_date);
                                
Model.out_res_clock=cube(Model.n_acc,Model._obs._n_group, 
Model._obs._n_out_date);
                                
Model.out_res_dev=cube(Model.n_acc,Model._obs._n_group, Model._obs._n_out_date);

                                cout << "output matrix initialized.\n";

                                //necessary for simulate_obs
                                Model._distance=vec(Model.n_acc);

                                Model.simulate(0,Model.n_acc-1,true);
                                cout << "simulation complete.\n";

                                fflush(stdout);

                                cout << size(Model.out_y)<<".\n"<< 
Model.out_y[0]<<".\n"<<Model.out_y[1]<<".\n"<<Model.out_y[2]<<".\n";

                                Rcpp::List out = Rcpp::List::create(
                                                
Rcpp::Named("out_y")=Model.out_y,
                                                
Rcpp::Named("out_res_1")=Model.out_res_1,
                                                
Rcpp::Named("out_res_2")=Model.out_res_2,
                                                
Rcpp::Named("out_res_clock")=Model.out_res_clock,
                                                
Rcpp::Named("out_res_dev")=Model.out_res_dev
                                );

                                cout << "List constructed.\n";

                                 fflush(stdout);

                                return (out);
                        }

                        catch(char* e) {
                                cout << e << "\n";
                                exit(EXIT_FAILURE);
                        }
                        catch(...) {
                                cout << "Error\n";
                                exit(EXIT_FAILURE);
                        }
                }

                _______________________________________________
                Rcpp-devel mailing list
                Rcpp-devel@lists.r-forge.r-project.org
                <mailto:Rcpp-devel@lists.r-forge.r-project.org>
                
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
                
<https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel>


-- Qiang Kou
            q...@umail.iu.edu <mailto:q...@umail.iu.edu>
            School of Informatics and Computing, Indiana University

-- Qiang Kou
        q...@umail.iu.edu <mailto:q...@umail.iu.edu>
        School of Informatics and Computing, Indiana University

-- Qiang Kou
    q...@umail.iu.edu <mailto:q...@umail.iu.edu>
    School of Informatics and Computing, Indiana University

--
Qiang Kou
q...@umail.iu.edu <mailto:q...@umail.iu.edu>
School of Informatics and Computing, Indiana University
_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to