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
_______________________________________________
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