Сеанс R прерывается при использовании кода vcf2geno

Я очень расстроен, пытаясь снова запустить этот код. Этот код работал раньше, и я отправил задание полностью, но я пытаюсь использовать его для своего проекта, и теперь запуск этого кода приводит к прерыванию сеанса R.

Код выглядит следующим образом:

library(LEA)
setwd("/Users/Changirwa/Desktop/COURSES/BIOL 468")

vcf2geno(input.file = "data/pika_subset.vcf", output.file = "data/pika_subset.geno")

geno2lfmm(input.file = "data/pika_subset.geno", output.file = "data/pika_subset.lfmm")

Я попытался связать файл, чтобы посмотреть, что он скажет, и вот что он сказал:

* обнаружена ошибка сегментации *

адрес 0x0, причина "память не отображается"

Traceback:

1: vcf2geno(input.file = "data/pika_subset.vcf", output.file = "data/pika_subset.geno")

2: eval(expr, envir, enclos)

3: eval(expr, envir, enclos)

4: withVisible(eval(expr, envir, enclos))

5: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,     error = eHandler, message = mHandler)

6: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,     enclos)), warning = wHandler, error = eHandler, message = mHandler))

7: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,     envir, enclos)), warning = wHandler, error = eHandler, message = mHandler)))

8: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,     debug = debug, last = i == length(out), use_try = stop_on_error !=         2L, keep_warning = keep_warning, keep_message = keep_message,     output_handler = output_handler, include_timing = include_timing)

9: evaluate::evaluate(...)

10: evaluate(code, envir = env, new_device = FALSE, keep_warning = !isFALSE(options$warning),     keep_message = !isFALSE(options$message), stop_on_error = if (options$error &&        options$include) 0L else 2L, output_handler = knit_handlers(options$render,         options))

11: in_dir(input_dir(), evaluate(code, envir = env, new_device = FALSE,     keep_warning = !isFALSE(options$warning), keep_message = !isFALSE(options$message),     stop_on_error = if (options$error && options$include) 0L else 2L,     output_handler = knit_handlers(options$render, options)))

12: block_exec(params)

13: call_block(x)

14: process_group.block(group)

15: process_group(group)

16: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),     error = function(e) {        setwd(wd)       cat(res, sep = "\n", file = output %n% "")        message("Quitting from lines ", paste(current_lines(i),             collapse = "-"), " (", knit_concord$get("infile"),             ") ")    })

17: process_file(text, output)

18: knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)

19: rmarkdown::render("/Users/changirwa/Downloads/rlab3.Rmd", encoding = "UTF-8")
An irrecoverable exception occurred. R is aborting now ...

Может ли кто-нибудь помочь мне понять, что происходит, чтобы я мог это исправить?


person Diana Changirwa    schedule 03.04.2020    source источник


Ответы (1)


Я только что столкнулся с той же ошибкой со студентом, у нас был этот код:

library(LEA)
input_file <- 'outliers.vcf'
vcf2geno(input_file, 'output')

который разбился с таким же треском. Решение: outliers.vcf не существует в этом месте, исправление пути к правильному пути устраняет сбой.

Предыстория: я проверил, и он запускает какой-то внутренний код C (.C('R_vcf2geno', input, output, 0, 0)), который выдает ту же ошибку памяти, которая не отображается, что приводит к сбою R.

Оказывается, C-код R_vcf2geno вообще не обрабатывает несуществующие файлы, падает и уносит с собой R.

Ученик использовал setwd() для доступа к рабочему каталогу outliers.vcf, но когда мы перезапустили код, setwd() не запускался, а outliers.vcf не существовало в текущем рабочем каталоге. Проверьте, действительно ли ваш входной файл существует в том месте, которое вы указали для LEA!

Редактировать: Позже мы также обнаружили искаженный файл vcf, вызвавший такой же сбой (файл vcf содержал дополнительные кавычки из-за того, что он был однажды сохранен в Excel). Выполнение команды vcf2geno в R-консоли в терминале вместо RStudio помогает, потому что тогда выполнение vcf2geno на C-коде фактически выведет полезное сообщение об ошибке перед сбоем R. Вы не видите это сообщение об ошибке в RStudio.

person Philipp    schedule 05.06.2020