View source: R/umx_ICA_report.R
| umx_ICA_report | R Documentation |
Read a Scholastica CSV export and open an HTML report of editorial efficiency. Journal time on each version runs from that version hitting the desk to the decision on it. Time the author spends between a decision and the next version is counted on its own. The page gives means and medians for triage, review, the editor after the reviews are in, author revision, and acceptance of a revision, with the ggplot figures embedded in the page.
umx_ICA_report(dataDir = "~/bin/ica/ICAdata", asOf = Sys.Date())
dataDir |
Directory of the Scholastica CSV export. A single string.
Default is |
asOf |
Date used to age manuscripts that are still in review or still
with the author. A |
The export is a set of tables joined by id, one Scholastica submission version per manuscript row.
manuscripts.csv has one row per version. manuscript_id is unique to
that version. previous_version_id is the previous version's
manuscript_id (empty on the first version). submission_id is shared by
every version of the same paper, so it identifies the paper, but it is not
reliably the first or the latest manuscript_id. version_number is 1,
2, or 3. created_at is when that version hit the desk. workflow_state
is the current state of that version. decision_created_at is when the
decision on that version was made.
decisions.csv has one row per decided version, joined on manuscript_id.
decision_type is accept, reject, or revise_and_resubmit. Its
created_at matches manuscripts.csv decision_created_at.
reviewer-invitations.csv is joined on the version manuscript_id.
created_at is when the invitation was sent. accepted_at is when the
reviewer accepted. workflow_state is submitted (review filed),
accepted (agreed, review not in), declined, expired, revoked, or
hard_bounced. manuscript_version_number repeats the version.
reviews.csv has no manuscript_id. It joins to an invitation through
reviewer_invitation_id. created_at is when the review was filed.
publication_recommendation is Accept, Revise and resubmit, or Reject.
authors.csv joins on manuscript_id. articles.csv is the published
article, joined on manuscript_id, with published_at. activities.csv
is a prose log of the same events (submitted, invited, accepted an
invitation, submitted a review, made a decision). The clocks below use the
structured timestamps, not the prose log. issues.csv is journal issues.
posts.csv is empty in the export this function was written against.
Trial rows are dropped: title beginning with [EXAMPLE], or editor_tags
containing trial entries to ignore.
A paper is the chain walked from a version with no previous_version_id
along previous_version_id. Outcomes come from the latest version's
workflow_state: ready_to_publish accepted, rejected or desk_rejected
rejected, revise_and_resubmit with no later version still with the author,
reviewers_confirmed or reviews_submitted still in review, and
withdrawn_before_decision or withdrawn_after_non_terminal_decision
withdrawn.
Scholastica also stores durations. They are not what the report plots, because the total mixes the two clocks, and the editor buckets sometimes overlap.
time_to_decision_in_seconds is journal time on that version only
(created_at to decision_created_at). It does not include the author gap.
time_spent_with_editor_pre_review_in_seconds is meant to be desk time
before review. On many versions it matches the wait until the first
reviewer accepts. On others it keeps running after reviews have arrived.
time_spent_with_editor_post_review_in_seconds matches last review filed
to the decision.
On two versions, pre-review plus post-review exceeds time-to-decision, so those two buckets are not a partition.
time_spent_with_author_in_seconds is stored on the new version and
matches the gap from the previous decision to this version's created_at.
total_time_to_decision_across_versions_in_seconds sums version
time-to-decision and the author gaps. It is filled on the latest decided
version. A paper reviewed in two days, held by the author for a year, and
then accepted the next day has a total near a year.
Timestamps are minute resolution (2015-01-13 10:18PM style). Durations are
in days.
Hits the desk: that version's created_at.
Goes out to a reviewer: invitation created_at.
Reviewer takes it on: invitation accepted_at.
Review comes back: reviews.csv created_at.
Decision: decision_created_at.
Triage, until a reviewer has it: version created_at to the first
accepted_at. Time until the first invitation is sent is reported beside it.
Review window: first accepted_at to the last review filed on that version.
Editor after the reviews are in: last review to the decision.
Round-1 journal time: first version created_at to its decision. Desk
rejects and editorial accepts with no invitation are in this total, and
are also reported on their own.
Author revision time: decision on version N to created_at of version N+1.
Each return is one observation. An open revise-and-resubmit is aged to
asOf and kept out of the completed mean.
Time to accept a revision: created_at to the accept decision on a version
whose decision_type is accept and whose version_number is greater
than 1.
Journal time for a finished paper: sum over its versions of (decision - arrived). Author gaps are not in that sum.
Calendar time: first version created_at to the final decision. This is
journal time plus author time.
Versions that have not yet been decided are left out of the completed journal means. Their elapsed time is listed under papers still open.
Invisibly, a list. htmlFile is the temporary HTML page that was
opened. papers is one row per paper. versions is one row per version.
authorGaps is one row per completed author return. reviewTurns is one
row per filed review. revisionRounds is one row per decided version
after the first.
Other Miscellaneous Utility Functions:
install.OpenMx(),
libs(),
qm(),
umx,
umxLav2RAM(),
umxModelNames(),
umxRAM2Lav(),
umxVersion(),
umx_array_shift(),
umx_data(),
umx_find_object(),
umx_lower.tri(),
umx_msg(),
umx_open_CRAN_page(),
umx_pad(),
umx_print(),
umx_tail(),
umx_wide2long(),
umx_wide4lmer()
## Not run:
umx_ICA_report()
umx_ICA_report(dataDir = "~/bin/ica/ICAdata")
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.