Coder Social home page Coder Social logo

revtools's Introduction

revtools v0.4.1

Tools to support literature review and evidence synthesis in R, including import, de-duplication and interactive display of bibliographic data.


For a complete introduction to revtools you can check out the website; but to get started now you can download revtools either from this site (development version) or CRAN (stable version) as follows:

install.packages("revtools") # install from CRAN
devtools::install_github("mjwestgate/revtools") # install from GitHub
library(revtools) # load

Once you've installed & loaded revtools, you can use any of the inbuilt apps by loading them and drag-and-dropping the data you want to analyse. All the apps export to csv format so you don't need to use R to investigate their results if you'd prefer not to. The apps available in revtools are:

  • screen_duplicates() to investigate potential duplicates within a dataset
  • screen_titles() to screen articles by title
  • screen_abstracts() to screen articles by abstract
  • screen_topics() to run topic models on bibliographic data

If you're a keen to investigate your data in the R workspace, revtools is designed to make data import as straightforward as possible. It does this by using a single function to import bibliographic data from bib, ris, ciw or csv formats:

file_location <- system.file("extdata",
  "avian_ecology_bibliography.ris",
  package = "revtools")

# to import bibliographic information into a data.frame
data <- read_bibliography(file_location)

Then you can pass these data to your apps as you would with any other function:

screen_topics(data) # runs using your data

# you can save progress to the workspace by specifying an object:
result <- screen_topics(data)

# or save to a file within the app, and reload that saved file:
y <- readRDS("saved_object.rds")
screen_topics(y)

revtools's People

Contributors

mjwestgate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

revtools's Issues

Medline abstracts not read in correctly

When reading in a RIS txt file, abstracts for MEDLINE are not always properly read in. Instead of all information in the single abstract column, several columns are created for each abstract subsection (for example, when a journal divides its abstract into the explicit sections Background, Objectives, Methods, Results, Conclusions, etc.) The abstract column then only contains the information in the first subsection (e.g., Background) and separate columns are generated for each proceeding subsection (e.g., CONC, where the non-na column contents always start with LUSIONS followed by the conclusions text from the abstract).

Consider manual screening interface (i.e. text only)

revtools provides tools for visualising topic model information, but some users may wish (or be required) to sort articles based on titles or abstracts without including any visual information. A user interface for this would be simple to build, and would provide support for a wider range of users.

Topic Model: 'arguments imply differing number of rows'

This bibliography from ScienceDirect is correctly loaded by read_bibliography() with no errors, but when I run start_review_window() it produces this error message:

Error in data.frame(id = rownames(dtm), label = info$label[which(x_keep)],  : 
  arguments imply differing number of rows: 867, 879

I tried subdividing this large file and loading each chunk separately to see whether I could narrow the problem down to a single malformed record, but when I do this, the proportions of the good/bad rows reported in the error message change. For example, loading the second half of the linked file might report 299, 308 (9 bad records). But splitting that file in half again can lead to successful execution for the first half, and 125, 127 (2 bad records) for the second half. So it seems that there's some interaction happening here. Wish I had more info for you!

Error in importing RDS after manipulating with "Include" or "Exclude" options

My bibliography reads fine, but when I save an RDS from the shiny GUI after having selected articles to "include" or "exclude", and then try to re-import the RDS to start_review_window () I get the following error (the example is given when I had excluded one article):

Error in data.frame(id = rownames(dtm), label = info$label[which(x_keep)], :
arguments imply differing number of rows: 802, 801

I think it must be something to do with how the exclusions are coded? It is a frustrating error because it means I must manipulate my data in the one sitting to avoid repeats when using the GUI to interrogate the references.

Thanks,
KatB

Fails to install in R version 3.4.4

Attempting to install directly or via metaverse results in a failure:

install.packages("revtools")
Installing package into ‘/home/user/R/x86_64-pc-linux-gnu-library/3.4’
(as ‘lib’ is unspecified)
Warning in install.packages :
package ‘revtools’ is not available (for R version 3.4.4)

200 line limit in read_bibliography()

I was getting an error when running read_bibliography() on a RIS file downloaded from EMBASE:

Error in detect_delimiter(zsub) : 
  import failed: unknown reference delimiter 

It turned out that only the first 200 lines of the reference were being read, which caused detect_delimiter() to subsequently fail to detect that the reference ended with an ER line and was therefore "endrow" delimited. Replacing lines 93-94 of read_bibliography.R with:

zsub <- z[seq_len(length(z))]

fixed the problem.

Is there a reason for the 200-line limit? Otherwise would you accept a pull request with the change I made?

installing revtools

Hi Martin,
trying to use the package but cannot even install it:

install.packages("revtools")
Installing package into ‘/Users/Losia/Library/R/3.3/library’
(as ‘lib’ is unspecified)
Warning in install.packages :
package ‘revtools’ is not available (for R version 3.3.3)

Installing form GitHub does not work either:
#Error: (converted from warning) dependency ‘slam’ is not available

Could you kindly suggest any workaround (apart on working on some older version of R?)
Many thanks,
Losia

sessionInfo()
R version 3.3.3 (2017-03-06)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X Yosemite 10.10.5

locale:
[1] en_AU.UTF-8/en_AU.UTF-8/en_AU.UTF-8/C/en_AU.UTF-8/en_AU.UTF-8

attached base packages:
[1] stats graphics grDevices utils datasets methods base

other attached packages:
[1] usethis_1.4.0 devtools_2.0.2

loaded via a namespace (and not attached):
[1] Rcpp_1.0.0 rstudioapi_0.9.0 knitr_1.21 magrittr_1.5 pkgload_1.0.2 R6_2.2.2 rlang_0.3.1 tools_3.3.3 pkgbuild_1.0.2 xfun_0.4 sessioninfo_1.1.1
[12] cli_1.0.1 withr_2.1.2 remotes_2.0.2 yaml_2.1.16 assertthat_0.2.0 digest_0.6.13 rprojroot_1.3-1 crayon_1.3.4 processx_3.2.1 callr_2.0.4 fs_1.2.6
[23] ps_1.3.0 curl_3.3 testthat_2.0.0 glue_1.2.0 memoise_1.1.0 desc_1.2.0 backports_1.1.2 prettyunits_1.0.2

Include/Exclude Reason

Could you include a place where you can write in a reason for including/excluding a reference so that this reason is recorded as you go? Could it even be a drop-down menu once you use a few? Just an idea. Thanks!

screen_titles Shiny GUI "data" menu not displaying

Hi Martin,

Thanks for the package, it is definitely saving time in my article screening process.

I have been using the screen_titles function without a problem until this week, when the "data" tab of the Shiny UI would not "drop-down" for me to choose exit/save/clear. This issue does not seem to occur when I open the app in the browser, only in the intial app (what do you call that). As far as I am aware I did not update anything between when this was functioning and when it stopped working.

Once data is loaded in the app (there is a lag because I have 3500 records) the "data" tab is not functional (does not collapse or expand), although the options within it are, so I can still save/clear/exit. However, if I use the appearance tab and the data tab collapses I am unable to expand it again and can no longer access these options, thus losing all screening in that session.

Relevant session info: R version 4.0.1; shiny 1.4.0.2; revtools 0.4.1; synthesisr 0.3.0; dplyr 1.0.0

This is my workflow after loading packages:

#import screened titles list from file
screened.refs<- read_refs("screened_titles.bib", return_df = TRUE)

#import reference database (4449 titles)
titles_ecoserv <- read_refs(filename = "full_deduplicated_database_ID.bib", return_df = TRUE)

#remove all screened titles from database
titles_ecoserv2<- anti_join(titles_ecoserv, screened.refs, by = "unique_id") 

#screen titles
titles_ecoserv3 <- screen_titles(titles_ecoserv2)

#save progress (screened titles) to file
x<- titles_ecoserv3 %>%
  filter(screened_titles != "") %>% #pull out all entries already screened
  bind_rows(screened.refs) %>% #add new set of screened titles to existing list of screened titles
  write_refs(file = "screened_titles.bib", format = "bib", tag_naming = "synthesisr") #write to file for next session

Please let me know if you need more info or if this is simply an error on my part. Thanks

.bib import raises 'number of items to replace' warnings

.bib files raise this warning:

In name_vector[2] <- a$year :
  number of items to replace is not a multiple of replacement length

I've found it occurring with .bibs generated by Web of Science, Scopus, ScienceDirect, and ProQuest (Here is a 10-entry export from Web of Science: savedrecs.zip). Formats .ris and .ciw work fine from these sites, though!

Improve tools for fitting and testing topic models in command line

Currently it is possible (though not straightforward) to take a model from screen_topics and use it in the command line, but not to run a model using run_topic_model and pass it to screen_topics. It would also be useful to have some sort of model fit parameters to allow users to optimise k, then visualise that model with screen_topics. One option for this would be to switch from topicmodels to stm for fitting topic models, though it is unclear what the implications of that switch would be in terms of consistency and dependencies.

How to view duplicates from Revtools

Hi Martin,

I am a fairly new R user and came across your package and am interested to try it out. Thank you for developing it.

I have managed to get the following code to work with one of your example data sets:
library(revtools)

data <- read_bibliography("restoration_scopus.ris")

matches <- find_duplicates(data, match_variable = "title").

In the environment section it shows there is matches but I am unsure how to view these. Do I need to add more code?

Thank you for your assistance in advance
Ruth

Question: Run revtools from shinyapps.io

Is there a way to run revtools from shinyapps.io? Revtools works like charm on my local r installation but I would like to run it from shinyapps.io or another publicly accessible place to enable co-workers' participation in document screening.

Any ideas how to do this? Creating my own shiny app that calls revtools works on my local installation but not on shinyapps.io.

Failed duplicate removal in non-English articles

I noticed that your duplicate removal functions are not performing as intended sometimes and one of the main reasons is non-English articles which often have a square brackets translation at the end as so [nicht-englische Artikel, die oft eine eckige Klammer am Ende haben]. There might be a way to fix this and up the accuracy of the function more easily (e.g. if ~50% of the words match?), though be careful as some translated titles just started with square brackets as you've probably seen? Also I'm not sure whether your duplicate removal system uses dois, but i found removal duplicate dois helped too (though not on some of these non-English articles esp. Chinese articles which often don't have dois). Hope this helps!

Issues with read_bibliography with .ris file

Hi Martin,

Firstly, thank you for your efforts in putting revtools together.

I seem to be having an issue where the imported data from my .ris file (which was exported from an EndNote library) is incorrectly tagging the column titles. E.g. the year becomes the database acronym. I've reset my EndNote preferences to default to be sure that that was not the issue but am still getting the same issue.

Appreciate any guidance you can provide.

Capture

Thanks.

Suggestion: save notes on the fly without needing to click on "Save Notes"

I'm screening abstracts at the minute and noticed it feels like I'm clicking on Save Notes a lot, so could the notes save as they are typed instead (reactively in response to a change in the text box contents?) I assume the use case for Save Notes is to prevent destructive changes (i.e. deleting the entire text field) automatically overwriting what was there previously?

Trouble using screen_abstracts

Hi, I've been trying to use the screen_abstracts function but I'm having trouble with adding my data in: 'screen_abstracts(data)'. When I put my data in it gives me this error: 'Error in $<-.data.frame(*tmp*, "label", value = c(date_generated = "ref_01", :
replacement has 31 rows, data has 264'. I have so far been unable to troubleshoot the problem and didn't have this issue when using screen_titles. All I do know is that the '31 rows' is the number of columns in my data.

screen_abstracts doesn't remember what's been screened?

Hi Martin — great package, thanks.

Correct me if I'm doing something silly, but screen_abstracts() doesn't seems to be picking up where I left off in the way that screen_titles() does. Quick eg:

# Load data
dat <- read_bibliography(system.file("extdata/avian_ecology_bibliography.ris", package = "revtools"))

# Pretend it's been screened
dat$selected <- 'selected'
dat$color <- '#405d99'

# This is all highlighted as expected, with 'screening complete' (20/20) etc.
screen_titles(dat)

# This doesn't seem to know anything has been screened
screen_abstracts(dat)

sessionInfo()
R version 3.5.2 (2018-12-20)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Mojave 10.14.6
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
locale:
[1] en_AU.UTF-8/en_AU.UTF-8/en_AU.UTF-8/C/en_AU.UTF-8/en_AU.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] revtools_0.4.0

Error using write_bibliography

Hi,

I used read_bibliography to read in a RIS txt file and that went smoothly. I then made subsets of the data and tried to save each as a RIS file again, but I received the error:

Error in data.frame(tag = c("startpage", "endpage"), entry = page.sep,  : 
  arguments imply differing number of rows: 2, 3

I thought it was because of the colon, but I tried on a different subset with a note in the page numbers and it worked. The small RIS sample can be found here.

Suggestion: Obtained Bibliography Button

I've been having a good time using the abstract, unfortunately I have to rely on other programs (calc sheet) to manage the articles I already obtained and those who I have to keep searching for, if Revtools would give you the option to Check or Uncheck a button for this it would be fantastic. Thanks!

Add 'merge' option to screen_duplicates

Currently, screen_duplicates only allows the user to choose one of two entries, but this is suboptimal where those entries contain complementary information. A better choice would be to allow the user to choose one entry as the default, and add any supplementary information from the second entry that is missing from the first. This 'merge' option should be the default behaviour.

Excluded articles still appearing in plotly graphic

It would be a pretty significant improvement if excluded articles were excluded from ordination space following recalculation. After rerunning the model, excluded articles are only indicated as such once selected in "selected text". To me it seems more intuitive if these articles were to be removed from the plot, or at least still indicated as greyed out dots to avoid re-examining the same article. Also it's not totally clear to me whether excluding an article from ordination space also excludes it from the reactiveValue object fed to the topic classifier models in any subsequent calculations. If articles were removed from ordination space in recalculations it would at least be more explicit that these articles are now not influencing the output.

.bib still failing - consider some other method of reading bibfiles

(Hi @mjwestgate - rather than reopen issue #2 I thought I'd start a new one, reopen if you want)

bibfiles are tricky beasts! I wanted to try out your package for a new project, but can't get the bibfiles in. RefManageR reads them in ok as far as I can tell. Can you use that package (or a different one) to read them in, then parse from there into the format you require?

I tried using the github version, with the following bib entry:

@Article{Grigg2004-tr,
  title = {{An overview of risk-adjusted charts}},
  author = {O Grigg and V Farewell},
  journal = {Journal of the Royal Statistical Society: Series A (Statistics in
             Society)},
  volume = {167},
  number = {3},
  pages = {523--539},
  month = {aug},
  year = {2004},
  url = {http://doi.wiley.com/10.1111/j.1467-985X.2004.0apm2.x},
  issn = {0964-1998, 1467-985X},
  doi = {10.1111/j.1467-985X.2004.0apm2.x},
}

I should note, that I tried directly using revtools:::read_bib (as read_bibliography wouldn't work with one citation, I assume due to the ris/bib checking).

> sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux 9 (stretch)

Matrix products: default
BLAS/LAPACK: /usr/lib/libopenblasp-r0.2.19.so

locale:
 [1] LC_CTYPE=C                 LC_NUMERIC=C              
 [3] LC_TIME=C                  LC_COLLATE=C              
 [5] LC_MONETARY=C              LC_MESSAGES=C             
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] revtools_0.2.2     RefManageR_0.14.12

loaded via a namespace (and not attached):
 [1] NLP_0.1-10           Rcpp_0.12.11         compiler_3.4.1      
 [4] plyr_1.8.4           bindr_0.1            tools_3.4.1         
 [7] digest_0.6.12        memoise_1.1.0        lubridate_1.6.0     
[10] jsonlite_1.5         tibble_1.3.3         gtable_0.2.0        
[13] viridisLite_0.2.0    pkgconfig_2.0.1      rlang_0.1.1         
[16] bibtex_0.4.2         shiny_1.0.3          parallel_3.4.1      
[19] bindrcpp_0.2         withr_1.0.2          dplyr_0.7.1         
[22] httr_1.2.1           stringr_1.2.0        xml2_1.1.1          
[25] devtools_1.13.2      topicmodels_0.2-6    htmlwidgets_0.8     
[28] shinydashboard_0.6.1 stats4_3.4.1         ade4_1.7-6          
[31] grid_3.4.1           glue_1.1.1           data.table_1.10.4   
[34] R6_2.2.2             plotly_4.7.0         ggplot2_2.2.1       
[37] purrr_0.2.2.2        tidyr_0.6.3          magrittr_1.5        
[40] scales_0.4.1         modeltools_0.2-21    htmltools_0.3.6     
[43] assertthat_0.2.0     xtable_1.8-2         mime_0.5            
[46] colorspace_1.3-2     httpuv_1.3.5         stringi_1.1.5       
[49] lazyeval_0.2.0       munsell_0.4.3        slam_0.1-40         
[52] tm_0.7-1

SUBDOMAIN GOT HIJACK TO MAKE GAMBLING ONLINE AND SPAM

1

Hello Sir,

I want to inform that Your Server site already got hacked to make so many sub domain for gambling online site that's ilegal to do.

You can check in google use this keyword :
slot site:revtools.net

it will display so many this is serveral of the links:
http://jaminjp.revtools.net/surat4d.html

The button link is direct to gambling online site and only can access use indonesia IP address :
https://pub-bd37b0dd825d41f394c9cd3ee4530c96.r2.dev/index.html
https://t.ly/XlwoO
https://66kbet3m.top/

Please Remove,Banned also Track the Hacker and make the Hacker go to Jail.

As an Indonesian citizen, I want to emphasize that online gambling is clearly prohibited by Indonesian law. In accordance with Article 27 paragraph (2) of the ITE Law, this act is a prohibited act. Therefore, individuals are prohibited from distributing, transmitting or making accessible gambling content online.

I have attached clear photographic evidence related to this case. My request is that you immediately take the necessary action to delete this sub-domain and online gambling page, or at least suspend access immediately so that online gambling content cannot be accessed. I hope that firm steps will be taken to ensure the integrity of the father's name is maintained and to avoid potential legal problems in the future.

I am grateful for the attention and action taken regarding this matter. I am sure that you will uphold ethics and legal compliance in carrying out your services.

Yours faithfully,

gsub error 'unable to translate...to a wide string'

Running read_bibliography() on a UTF-8 encoded file produces an error (see example file Cochrane.txt):

library(revtools)

system2("file", c("Cochrane.txt", "-I"), stdout = TRUE)
#> [1] "Cochrane.txt: text/plain; charset=utf-8"
read_bibliography("Cochrane.txt")
#> Warning in gsub("<[[:alnum:]]{2}>", "", z): unable to translate 'AB - Three
#> hundred healthy adults, permanently residing and contacting (a contact subject)
#> with a household patient with confirmed COVID^aEUR<90>19 (primary patient), or
#> who stayed in close long protected contact with a person who consequently
#> become...' to a wide string
#> Error in gsub("<[[:alnum:]]{2}>", "", z): input string 14 is invalid

Created on 2023-10-10 with reprex v2.0.2

This seems to arise from this line, and I think it's because the encoding for z is set to 'latin1', but since R 4.3.0 'Regular expression functions now check more thoroughly whether their inputs are valid strings (in their encoding, e.g. in UTF-8)'.

A workaround is to convert the file into latin1 encoding first:

library(revtools)

utf8tolatin1 <- function(infile, outfile) {
  content <- readLines(infile, encoding = "UTF-8")
  latin1 <- iconv(content, from = "UTF-8", to = "latin1")
  writeLines(latin1, outfile)
}

utf8tolatin1("Cochrane.txt", "Cochrane-latin1.txt")

system2("file", c("Cochrane-latin1.txt", "-I"), stdout = TRUE)
#> [1] "Cochrane-latin1.txt: text/plain; charset=us-ascii"
read_bibliography("Cochrane-latin1.txt")
#>                   label type   accession       author
#> 1 NCT04907877_2021_http JOUR CN-02278011 NCT04907877,
#>                                                                title
#> 1 Bifido- and Lactobacilli in Symptomatic Adult COVID-19 Outpatients
#>                                       journal year                     keywords
#> 1 https://clinicaltrials.gov/show/NCT04907877 2021 Respiratory Tract Infections
#>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            abstract
#> 1 Three hundred healthy adults, permanently residing and contacting (a contact subject) with a household patient with confirmed COVID-19 (primary patient), or who stayed in close long protected contact with a person who consequently become SARS-CoV-2 positive, will be screened for the study. When the contact subject meets enrollment criteria, he/she will be randomized to take an investigational product (probiotic, test dietary supplement, TDS), a mixture of lactobacilli and bifidobacteria or placebo 1 time a day before breakfast. During screening period, he/she will also keep Screening and Compliance Diary for screening of COVID-19 symptoms and confirming TDS intake. Duration of the screening period (Days 0-X) will depend on the health status of a contact person. If the contact remains asymptomatic, duration of probiotic intake will be 30 days. After this period, subject will be excluded from the study . If the contact develops symptoms, he/she will call family physician, request a referral, and visit a local center to make PCR test of the nasal swab for SARS-CoV-2. While result of PCR test are being available (Days 0-2), the patient will continue taking TDS and start keeping Respiratory Illness Diary. If the result of the PCR test is negative the patient will be withdrawn from the study. If the result is positive, he/she will continue participation and be visited by the nurse (Nurse Visit 1, Days 3-5), who supplies the patient with TDS in amount enough to complete 28-day intake period and takes blood for anti-SARS-CoV-2 IgG. During 28-day period of TDS intake, the patient will keep Respiratory Illness Diary (the Diary is designed for evaluation of the COVID-19 course and assessment of TDS reduces clinical manifestation of COVID-19), the investigator/family physician updated with health status, and the physician will make weekly phone calls to assess patient health status, indications for hospitalization, treatment, checking TDS intake and Respiratory Illness Diary. In the case of patient hospitalization, patient is withdrawn from the study, and will be requested to provide a reference from Medical Records after hospital discharge. During Nurse Visit 2 (Days 28-35), after finishing TDS intake, the nurse will collect Respiratory Illness Diary, empty vials with TDS, take blood for anti-SARS-CoV-2 IgG test. The test is necessary to evaluate if TDS intake improves post-COVID-19 immunity on short-term perspective. At the end of the 2nd visit, the nurse will give enveloped Post-COVID-19 Questionnaire to be completed in 3 months. In 3 months, investigator/family physician will call to the patient and remind to return a completed Post-COVID-19 Questionnaire. Post-COVID-19 Questionnaire will help to see if active TDS reduces presentation of Post-COVID-19 syndrome. In 6 months, the study nurse will perform Nurse Visit 3 and draw blood for the anti-SARS-CoV-2 IgG. The test is necessary to evaluate if TDS intake improves post-COVID-19 immunity on long term perspective.
#>                                                                            url
#> 1 https://www.cochranelibrary.com/central/doi/10.1002/central/CN-02278011/full
#>                  c3                    m3
#> 1 CTgov NCT04907877 Trial registry record

Created on 2023-10-10 with reprex v2.0.2

Mismatch between selected article in plotly graphic and "selected text" with recalculation

Love this package, I really want to make it a more permanent part of my workflow. A couple of largely ui based comments I'll post as separate issues, which would definitely make me want to use it more.

I've been experimenting with the article exclusion implementation in Shiny, and noticed that after recalculating the model, selecting a given article seems not to correspond to the "selected text" article. For example, I hover over an article and it reveals "Effects of low temperature..." and then I select it and "selected text" indicates it as "Population density and size influence". When I then click "Exclude" the article it excludes is that indicated by "selected text" and not the article hovered over. The revtools biorxiv paper says that the intention is that users recalculate after excluding articles, so I'm assuming articles in plotly space and the text output should correspond after rerunning.

compatibility issues with Web of Science .ciw files

revtools seems to have trouble handling .ciw file from Web of Science (EndNote Desktop Export option). Get error message:

'Error in data.frame(start = which(z.dframe$ris == "TY"), end = which(z.dframe$ris == :
arguments imply differing number of rows: 0, 467'

Screening apps reopen on new records

Thank you for making this package, I'm just getting into it and it is great so far! I just have a quick question on the screen_titles and screen_abstracts function in the revtools package.

Question:
Does/should the shiny apps reopen a saved data_frame which already has colour, selected, notes, etc. columns at a new unscreened record? For example, if I screen 10 abstracts and then exit the app, the results save to a data_frame or .csv. If I reopen the app then the app opens up on the first record which has already been screened. Is this just for me?
If the app does currently work like this, perhaps when exiting an app session a new order column could be generated that starts the order sequence from the next record with selected == "". The user can then choose to order the records by this column the next time they start the app.

Editing what you see for a reference

Would it be possible to create a "blind" option for revtools that when you click it you cannot see the authors names/affiliations? Or perhaps there already is this, but I don't know how to use it. Thanks.

topic screening results

Is there a way to download the topic information once you have calculated the topic model. I.e can you download the information about each topic, the words within each topic and the papers that fall into the topic?

I hope this isn't a silly question!

ris import error when file contains untagged text

read_bibliography sometimes behaves poorly when given a .ris file that contains untagged information in separate text blocks (see attached file).

Specifically, this text is assigned to the wrong reference, as it occurs after the 'ER' tag. Key issue is to ensure that information is either deleted or assigned to the correct reference. Related issue is to ensure that read_bibliography always returns the correct number of references - currently it returns n+1 for every n references in the source file.

A sub-problem with this file is that references are numbered, but this information is not stored in a sensible way - correct or delete this information.

ris_error_1.txt

Implementation of group exclusion

It would be great to have an implementation of group exclusion i.e. box or lasso select a group of unrelated articles, and then an option to exclude all selected articles. The drawback I suppose is the volume of text displayed on the interface and the potential for users to unintentionally group select many articles. I suppose a solution could be a group select limit of 10 articles or so? The user then gets a pretty significant increase in exclusion rate without the potential for crashing.

font size too small

My shinny app displays text a little too small to read comprehensively, anyone knows if there's an option to change the size and type of font? Very appreciated.

Describe project status in README.md

Hello,
it would help a lot users and potential new contributors if you could describe the current status of the project on top of your README.md.

From my current point of view, looking at the last commit and issues, I would assume the project is dead. But because of my own experience as a maintainer of several projects I am aware that this is not always the case.

It would attract new contributors to your project if they would know what is going on right know, what is the plan and if they can count on support from the current maintainers.

issues screen_abstracts after screen_titles.

Hello,

I am actually fairly new to R, and this is my first bug report really, so I apologize if it isn't up to standards. Thanks for revtools, it really seems fantastic.

My issue and work around is as below.

I first screened a batch of articles via screen_titles, then tried to screen the non-excluded papers from that in screen_abstracts() but no abstracts were showing up even though all but one article had an abstract in my df. I did a little tinkering and got it to show the abstracts. Here's my modified code.

Thanks!

#naming object from my search results
example_corpus <- readRDS("/cloud/project/storedAnalysis/documentCorpus.RDS")

#loaded example_corpus into screen_titles() in app and screened all of them. 

#read in screened corpus to object
screened_corpus <- read.csv("screened_corpus.csv")

#wanted to just look at non-excluded abstracts
to_screen_abstracts <- filter(screened_corpus, selected != "excluded")

#then I tried to screen_abstracts(to_screen_abstracts), but only titles and no abstracts would show up in the shiny app

#My workaround that worked! 
#I think the first step to remove some columns was probably not necessary and that main issue may be the abstract vs Abstract issue. 

ready_to_screen_abstracts <- select(to_screen_abstracts, -c(selected, order, notes, page))
colnames(ready_to_screen_abstracts)[colnames(ready_to_screen_abstracts)=="Abstract"] <- "abstract"

integrate add_line_breaks into format_citation

At present, format citation isn't useful for plotting outside of revtools, because there is no option for adding line breaks. This would simply require moving add_line_breaks to format_citation and being callable with a single argument, preferably a number. If missing (default) then no line breaks are added

Importing other formats

Is the package flexible enough to allow for the import of search results that are saved as xls/csv files?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.