Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: -project- command and "inverse" table of file dependencies


From   Roberto Ferrer <refp16@gmail.com>
To   Stata Help <statalist@hsphsun2.harvard.edu>
Subject   Re: st: -project- command and "inverse" table of file dependencies
Date   Sat, 20 Jul 2013 18:35:47 +0100

Dear Robert,

Many thanks for your reply.

1. I completely missed -list(build) which is exactly what I was after.
The alphabetical listing seems a good idea, as well as an "only
do-file" or "only created files" (with corresponding do-files) listing
that could maybe come in the form of options.

2. About unnecessary duplicate entries I just meant it was just the
consequence of using -list(concordance)- (along with stub-naming and
reading backwards) for what I wanted. For example, below I can see
that the .smcl and .png files are associated with -separate.do- but
the latter appears as many times as associated files there are (here
two). Never mind that.
-------------------------------------------------------------------------------------
|separate.smcl             7,923   714867776                  |
| -->  separate.do            610  1479884638   creates  |
|-----------------------------------------------------------------------------------|
| separate_example1.png    61,465  3032149987       |
| -->  separate.do            610  1479884638   creates  |
|-------------------------------------------------------------------------------------

3. The feature I was asking to be included was precisely -list(build)-.

Very nice package.

Regards,
Roberto


On Sat, Jul 20, 2013 at 4:38 PM, Robert Picard <picard@netbox.com> wrote:
> Glad to hear that you find -project- useful and thanks for the
> comments/questions. See below for my specific comments.
>
>
> On Sat, Jul 20, 2013 at 10:05 AM, Roberto Ferrer <refp16@gmail.com> wrote:
>> I'm very enthusiastic about the user-written package -project- by
>> Robert Picard and installed using:
>>
>>  net from http://robertpicard.com/stata
>>
>> Reproducibility of work and simple organization are my main concerns.
>> I believe this package aids the process wonderfully.
>>
>> I've been playing around with the example provided with the package
>> (ex12 project) and  I ask if it is capable of producing an "inverse"
>> table of file dependencies. The command:
>>
>> project ex12, list(concordance)
>>
>> produces file_created/used --> do-file:
>>
>> |separate.smcl             7,923   714867776            20jul2013
>> 10:40:48  data-management                      |
>> | -->  separate.do            610  1479884638   creates  20jul2013
>> 10:40:46  data-management                     |
>> |-----------------------------------------------------------------------------------------------------------------|
>> | separate_example1.png    61,465  3032149987            20jul2013
>> 10:40:48  data-management                     |
>> | -->  separate.do            610  1479884638   creates  20jul2013
>> 10:40:46  data-management                     |
>> |----------------------------------------------------------------------------------------------------------------
>>
>> I'd like to see an "inverted" table that shows do-file --> file_created/used:
>>
>> |separate.do                 7,923   714867776            20jul2013
>> 10:40:48  data-management                    |
>> | -->  separate.smcl            610  1479884638   creates  20jul2013
>> 10:40:46  data-management                   |
>> | -->  separate_example1.png    610  1479884638   creates  20jul2013
>> 10:40:46  data-management                   |
>> | -->  result_data.dta          xxxxxxxxxxxxxxx   creates  20jul2013
>> 10:40:46  YYYYYYYYYYYYYYYYY                 |
>> | -->  proc _data.dta          xxxxxxxxxxxxxxx   uses      20jul2013
>> 10:40:46  YYYYYYYYYYYYYYYYY                 |
>> | -->  raw_data.dta            xxxxxxxxxxxxxxx   original  20jul2013
>> 10:40:46  YYYYYYYYYYYYYYYYY                 |
>> | -->  some_name.do          xxxxxxxxxxxxxxx     uses      20jul2013
>> 10:40:46  YYYYYYYYYYYYYYYYY                 |
>> |-----------------------------------------------------------------------------------------------------------------|
>>
>
> With respect to your request for an "inverse" of the
> -list(concordance)- option, that's pretty much what -list(build)-
> does, i.e. list all dependencies per do-file, as they appear in the
> build. I can see that this is not organized in an alphabetical list of
> do-files so I'll note your suggestion and most likely add the feature
> in a future release.
>
>> In its current state I think the naming convention using stubs:
>>
>> local dofile "`r(dofile)'"        // do-file's stub name
>> graph export "`dofile'_example1.png", width(1200) replace
>>
>> may be of aid, but it forces the user to name every single file with
>> the do-file stub name, which may prove inconvenient at some point. It
>> also shows unnecessary duplicate entries in the table and forces
>> "backward visualization".
>
> I find using stubs based on do-file names useful because I change my
> mind constantly about do-file names as each project evolves. If
> "table1.do" becomes "table2.do", then I don't need to adjust any of
> the files created by the do-file. I don't understand your comment
> about unnecessary duplicate entries. Note that you are not forced to
> use stub names, just use a naming convention that suits your style,
> e.g. -graph export "sep_ex1.png", width(1200) replace-
>
>>
>> Is this possible right now?
>>
>> To the author: If not, what are the odds of including this feature in
>> the near future?
>
> What feature is that?
>
>
>>
>> A related point is the dependence of do-files on other do-files. I
>> think it would be nice if -project, do(file_name)- recorded the
>> dependency between file_name within the command and the do-file that
>> contains the command (at least as an option). In the inverted table
>> the last dependency corresponds to such a case. For example, the ex12
>> example project does not show the dependency of d_examples.do on all
>> the do-files it runs. One of the things I'd like to see when given
>> some unknown zipped project is precisely this dependency. Is there any
>> reason for this not being implemented?
>
> Again, this goes back to -list(build)- which shows exactly how
> do-files are linked to each others, using tabbed columns to show the
> level of nested do-files. If there is a change in the code of
> "separate.do", then it will run again in the next build. If you follow
> the -list(build)- output backwards from "separate.do", you see that it
> is called by "d_examples.do" wich is itself called by "ex12.do". I
> suppose that a shorter listing with just do-files might give a better
> visual. I'll put this on my list of things to think about.
>
>>
>> Finally, there's a small typo in the ex12 example project file
>> ex12/base/r_examples.do. the author might want to correct. Line 4
>> reads:
>>
>> Run examples from the Data-Management reference manual
>>
>> and should read:
>>
>> Run examples from the Base reference manual.
>
> Thanks and will be corrected in the next release. It shows that in
> real life, new do-files often start their lives as copies of similar
> past work.
>
>>
>> Thanks.
>>
>> Roberto
>> Stata 12.1 (64-bit)
>> Linux Mint Debian Edition (LMDE)
>> *
>> *   For searches and help try:
>> *   http://www.stata.com/help.cgi?search
>> *   http://www.stata.com/support/faqs/resources/statalist-faq/
>> *   http://www.ats.ucla.edu/stat/stata/
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/faqs/resources/statalist-faq/
> *   http://www.ats.ucla.edu/stat/stata/
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index