Я пытаюсь использовать пакет с именем Mmethylprep. Он использует функцию «добавления» для фрейма данных, которая была удалена с версии pandas 2.0.
Теперь версия панд, установленная на моем компьютере, — 2.2.2. И я использую блокнот Jupyter для обработки своих сценариев. Есть ли способ позволить мне использовать определенную версию pandas (возможно, 1.8) в сценарии, который я сейчас тестирую в блокноте Jupyter?
Большое спасибо !!
import methylprep
from pathlib import Path
filepath = Path('test/')
data_containers = methylprep.run_pipeline(filepath, array_type=None, export=True, manifest_filepath=None, sample_sheet_filepath='test/MethylationEPIC_Sample_Sheet_B.csv')
INFO:methylprep.processing.pipeline:Running pipeline in: test
Reading IDATs: 100%|█████████████████████████████████████████████████████████████████████| 1/1 [00:41<00:00, 41.74s/it]
INFO:methylprep.files.manifests:Reading manifest file: HumanMethylationEPIC_manifest_v2.csv
Processing samples: 0%| | 0/1 [00:01<?, ?it/s]
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_9268\2686656903.py in ?()
----> 1 data_containers = methylprep.run_pipeline(filepath, array_type=None, export=True, manifest_filepath=None, sample_sheet_filepath='test/MethylationEPIC_Sample_Sheet_B.csv')
~\AppData\Local\Programs\Python\Python311\Lib\site-packages\methylprep\processing\pipeline.py in ?(data_dir, array_type, export, manifest_filepath, sample_sheet_filepath, sample_name, betas, m_value, make_sample_sheet, batch_size, save_uncorrected, save_control, meta_data_frame, bit, poobah, export_poobah, poobah_decimals, poobah_sig, low_memory, sesame, quality_mask, pneg_ecdf, file_format, **kwargs)
327
328 batch_data_containers = []
329 export_paths = set() # inform CLI user where to look
330 for idat_dataset_pair in tqdm(idat_datasets, total=len(idat_datasets), desc = "Processing samples"):
--> 331 data_container = SampleDataContainer(
332 idat_dataset_pair=idat_dataset_pair,
333 manifest=manifest,
334 retain_uncorrected_probe_intensities=save_uncorrected,
~\AppData\Local\Programs\Python\Python311\Lib\site-packages\methylprep\processing\pipeline.py in ?(self, idat_dataset_pair, manifest, retain_uncorrected_probe_intensities, bit, pval, poobah_decimals, poobah_sig, do_noob, quality_mask, switch_probes, do_nonlinear_dye_bias, debug, sesame, pneg_ecdf, file_format)
586 self.manifest = manifest # used by inter_channel_switch only.
587 if self.switch_probes:
588 # apply inter_channel_switch here; uses raw_dataset and manifest only; then updates self.raw_dataset
589 # these are read from idats directly, not SigSet, so need to be modified at source.
--> 590 infer_type_I_probes(self, debug=self.debug)
591
592 super().__init__(self.sample, self.green_idat, self.red_idat, self.manifest, self.debug)
593 # SigSet defines all probe-subsets, then SampleDataContainer adds them with super(); no need to re-define below.
~\AppData\Local\Programs\Python\Python311\Lib\site-packages\methylprep\processing\infer_channel_switch.py in ?(container, debug)
15 -- runs in SampleDataContainer.__init__ this BEFORE qualityMask step, so NaNs are not present
16 -- changes raw_data idat probe_means
17 -- runs on raw_dataset, before meth-dataset is created, so @IR property doesn't exist yet; but get_infer has this"""
18 # this first step combines all I-red and I-green channel intensities, so IG+oobG and IR+oobR.
---> 19 channels = get_infer_channel_probes(container.manifest, container.green_idat, container.red_idat, debug=debug)
20 green_I_channel = channels['green']
21 red_I_channel = channels['red']
22 ## NAN probes occurs when manifest is not complete
~\AppData\Local\Programs\Python\Python311\Lib\site-packages\methylprep\processing\infer_channel_switch.py in ?(manifest, green_idat, red_idat, debug)
167 red_in_band['meth'] = oobG_unmeth
168 green_in_band['unmeth'] = oobR_meth
169
170 # next, add the green-in-band to oobG and red-in-band to oobR
--> 171 oobG_IG = oobG.append(green_in_band).sort_index()
172 oobR_IR = oobR.append(red_in_band).sort_index()
173
174 # channel swap requires a way to update idats with illumina_ids
~\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\core\generic.py in ?(self, name)
6295 and name not in self._accessors
6296 and self._info_axis._can_hold_identifiers_and_holds_name(name)
6297 ):
6298 return self[name]
-> 6299 return object.__getattribute__(self, name)
AttributeError: 'DataFrame' object has no attribute 'append'
<продолжение> здесь и ответ выше о nb_conda_kernels
вариантах подключения Jupyter, если вам нужно к этому перейти. Это позволит вам сделать это локально. Возможно, вы не захотите возиться со своей системой, если все остальное в целом хорошо. Поэтому для этого вы можете предпочесть иметь дело с AWS или Google и заплатить за удаленную машину, на которой вы можете установить все, что захотите. Или, если вычислительные требования скромны, вы можете использовать MyBinder.org, чтобы получить бесплатный временный сеанс, который вы можете настроить для использования необходимой вам версии Pandas. ...
<продолжение> Я не вижу, чтобы у меня была версия с Pandas 1.8 (вы уверены, что это правильная версия? Я только что попробовал установить ее, и это не сработало.), на которую я могу указать вам правильно. сейчас, но здесь сейчас работает с более ранней версией. Перейдите по этой ссылке и нажмите там значок «Запустить подшивку». У него будет Pandas version 1.5.1
в начале сеанса. Вы можете обновить его до 1.5.3
, открыв там новый блокнот в сеансе Jupyter и в новой запущенной ячейке %pip install pandas==1.5.3
. ...
<продолжение> Я предполагаю, что вы пытаетесь избегать версий 2 и выше, поскольку они имеют некоторые существенные различия. (Обычно вы можете немного изменить код и заставить все работать в Pandas 2, но если вы не готовы это сделать, это может помочь.) Вы также можете перетаскивать такие вещи, как входные файлы, с вашего локального компьютера в файл. панель навигации слева, чтобы перенести их во временный сеанс Jupyter, обслуживаемый MyBinder. Поскольку это временный сеанс на удаленном компьютере, вы захотите немедленно загрузить все полезное, что вы сделаете, обратно в свою локальную систему.
HuggingFace.co предлагает «Пространства», где вы можете запустить JupyterLab. См. здесь, чтобы начать. Версия JupyterLab по умолчанию, которая у них сейчас есть, поставляется с Pandas 2.2.2; однако вы можете запустить в блокноте %pip install pandas==1.5.3
, и он удалит его и установит версию 1.5.3, чтобы вы могли попробовать ее использовать. Он предлагает больше вычислительной мощности, чем сеансы Jupyter, обслуживаемые MyBinder, но вам необходимо зарегистрировать учетную запись. Уровень бесплатного пользования также дает вам больше возможностей, чем предлагает MyBinder.
@Wayne Спасибо за предложения. Как скромно изменить код, чтобы он соответствовал пандам 2? Будет интересно это попробовать. Большое спасибо !
Что касается шага «append()
», вы, вероятно, захотите попробовать concat()
, см. здесь . И вообще кто-то уже внес изменения здесь . Вы можете сделать то, что написано внизу, чтобы реализовать это. Создайте форк репо и внесите изменения. Ой, подождите, оно уже есть здесь, так что я думаю, вы можете просто клонировать и использовать?
@Wayne Я пытался установить эту вилку с помощью «pip install -e git+git://github.com/gilgameshjw/methylprep/tree/pandas2.0#egg=methylprep». Но мне говорят, что эту ссылку невозможно найти. . Но при попытке установить ссылку своего мастера она была успешно установлена. Означает ли это, что эта ссылка больше не активна?
Мне придется позже посмотреть pip install
из репозитория. Я не помню, чтобы egg
был там, но мне действительно нужно поискать. Я только что подумал, что вы могли бы клонировать его и заменить измененные файлы. Или используйте это для редактирования кода в тех местах, где у вас есть пакет methylprep. в вашей системе.
Основываясь на моих знаниях pip install
с репозиториями и ветками на GitHub, я собрал следующую команду: pip install git+https://github.com/gilgameshjw/methylprep/@pandas2.0_0
. Кажется, установка прошла успешно. А потом я даже протестировал его, так как понял, что в репозитории есть примеры данных, см. тестовую версию метилпрепа, работающего с Pandas 2, здесь.
Также было бы лучше, если бы вы обновили заголовок исходного сообщения, чтобы он был более конкретным. См. раздел «Напишите заголовок, отражающий конкретную проблему» в Как мне задать хороший вопрос?. Вы не искали, как это сделать для конкретного пакета, и это должно быть в заголовке. Представьте, что вы ищете сообщение, соответствующее вашей проблеме, в списке заголовков сообщений. Подумайте, этот вопрос, вероятно, вас не так поразит, как «Как использовать конкретную версию метилпрепа в блокноте Jupyter»?
Чтобы установить конкретную версию библиотеки pandas, у вас есть два варианта:
pip install pandas==1.8
%pip install pandas==1.8
Запустите ячейку, и она установит версию pandas 1.8 в вашу среду Jupyter Notebook.
Вы пробовали предложенные вами команды, чтобы убедиться, что они работают?
«Теперь на моем компьютере установлена версия pandas 2.2.2».
Запуск Mmethylprep в сочетании с этой версией Pandas был бы более продуктивным способом продвижения вперед. В противном случае вам придется бороться против течения развития.
К счастью, кто-то уже выполнил преобразование здесь и подал этот связанный запрос на включение в исходный репозиторий исходного кода Foxotech «methylprep». Вы можете продолжать использовать его сейчас, пока он не будет интегрирован в исходное программное обеспечение.
Команда pip install
для этой конкретной версии Mmethylprep будет следующей в терминале, где вы уверены, что находитесь в среде, которую будет использовать Jupyter:
pip install git+https://github.com/gilgameshjw/methylprep/@pandas2.0_0
Или, что еще удобнее, запустите в блокноте, чтобы использовать волшебную команду установки, которая гарантирует, что установка из работающего блокнота произойдет в среде, которую фактически использует ядро. (
Подробнее о современной волшебной команде %pip install
можно узнать здесь.)
%pip install git+https://github.com/gilgameshjw/methylprep/@pandas2.0_0
Кажется, установка прошла успешно. А затем я даже протестировал его в сочетании с Pandas 2.2.2, так как понял, что в репозитории есть примеры данных, см. тестовый запуск methylprep, работающего с Pandas 2, здесь.
(В тестовом блокноте, ссылка на который приведена выше, я не запускал эту команду установки в блокноте, потому что на самом деле я не планировал тестировать работу, пока не увидел примеры данных и не решил попробовать. Но я поставил команда в ячейке кода в блокноте как волшебная команда установки, чтобы любой любопытный мог выполнить запуск самого блокнота или команд, которые я показываю, прямо внутри тестового блокнота в новом сеансе, запущенном с того места, где я указываю вверху здесь, и все это без необходимости трогать или устанавливать что-либо в вашей локальной системе. Это позволяет сначала проверить его работу, прежде чем начинать работу с локальным компьютером.)
Спасибо, Уэйн, все решено. Я пытался с помощью conda настроить среду, это работает, но немного больше работы, чтобы найти правильные версии некоторых других пакетов, scipy, statsmodels..... Еще один вопрос: что такое "@" перед "panda2. 0" представляет? Другими словами, как сформулировать этот URL-адрес, чтобы обеспечить правильную загрузку?
@
предшествует тегу ветки. Поскольку те работы, на которые я ссылался, вы можете использовать %pip list
результат оттуда (можно просмотреть [здесь]), чтобы проверить версии, которые работали в тесте, который я провел. Затем используйте conda для установки этих конкретных версий в вашей среде. Постарайтесь использовать Anaconda/conda как можно чаще. В этом случае вам нужно будет использовать pip
для специальной версии метилпрепа, поскольку у нее нет рецепта конды.
Да, вы можете использовать среды для изоляции ваших версий, связанных со средой. Об этом смотрите здесь . Однако, возможно, лучше сначала попробовать без Jupyter, поскольку подключить Jupyter сложнее из-за того, как ядро связано со средой ядра. Хотя это можно сделать. Дистрибутив Anaconda развивает эту идею и делает его более мощным за счет управления средами и пакетами. Вы можете настроить и активировать среду, в которой запустите нужную вам версию Pandas. Видеть ...