Как использовать определенную версию methylprep в блокноте Jupyter

Я пытаюсь использовать пакет с именем 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'

Да, вы можете использовать среды для изоляции ваших версий, связанных со средой. Об этом смотрите здесь . Однако, возможно, лучше сначала попробовать без Jupyter, поскольку подключить Jupyter сложнее из-за того, как ядро ​​связано со средой ядра. Хотя это можно сделать. Дистрибутив Anaconda развивает эту идею и делает его более мощным за счет управления средами и пакетами. Вы можете настроить и активировать среду, в которой запустите нужную вам версию Pandas. Видеть ...

Wayne 25.06.2024 20:29

<продолжение> здесь и ответ выше о nb_conda_kernels вариантах подключения Jupyter, если вам нужно к этому перейти. Это позволит вам сделать это локально. Возможно, вы не захотите возиться со своей системой, если все остальное в целом хорошо. Поэтому для этого вы можете предпочесть иметь дело с AWS или Google и заплатить за удаленную машину, на которой вы можете установить все, что захотите. Или, если вычислительные требования скромны, вы можете использовать MyBinder.org, чтобы получить бесплатный временный сеанс, который вы можете настроить для использования необходимой вам версии Pandas. ...

Wayne 25.06.2024 20:33

<продолжение> Я не вижу, чтобы у меня была версия с Pandas 1.8 (вы уверены, что это правильная версия? Я только что попробовал установить ее, и это не сработало.), на которую я могу указать вам правильно. сейчас, но здесь сейчас работает с более ранней версией. Перейдите по этой ссылке и нажмите там значок «Запустить подшивку». У него будет Pandas version 1.5.1 в начале сеанса. Вы можете обновить его до 1.5.3, открыв там новый блокнот в сеансе Jupyter и в новой запущенной ячейке %pip install pandas==1.5.3. ...

Wayne 25.06.2024 20:39

<продолжение> Я предполагаю, что вы пытаетесь избегать версий 2 и выше, поскольку они имеют некоторые существенные различия. (Обычно вы можете немного изменить код и заставить все работать в Pandas 2, но если вы не готовы это сделать, это может помочь.) Вы также можете перетаскивать такие вещи, как входные файлы, с вашего локального компьютера в файл. панель навигации слева, чтобы перенести их во временный сеанс Jupyter, обслуживаемый MyBinder. Поскольку это временный сеанс на удаленном компьютере, вы захотите немедленно загрузить все полезное, что вы сделаете, обратно в свою локальную систему.

Wayne 25.06.2024 20:43

HuggingFace.co предлагает «Пространства», где вы можете запустить JupyterLab. См. здесь, чтобы начать. Версия JupyterLab по умолчанию, которая у них сейчас есть, поставляется с Pandas 2.2.2; однако вы можете запустить в блокноте %pip install pandas==1.5.3, и он удалит его и установит версию 1.5.3, чтобы вы могли попробовать ее использовать. Он предлагает больше вычислительной мощности, чем сеансы Jupyter, обслуживаемые MyBinder, но вам необходимо зарегистрировать учетную запись. Уровень бесплатного пользования также дает вам больше возможностей, чем предлагает MyBinder.

Wayne 25.06.2024 22:40

@Wayne Спасибо за предложения. Как скромно изменить код, чтобы он соответствовал пандам 2? Будет интересно это попробовать. Большое спасибо !

Isaac P. Liu 26.06.2024 01:52

Что касается шага «append()», вы, вероятно, захотите попробовать concat(), см. здесь . И вообще кто-то уже внес изменения здесь . Вы можете сделать то, что написано внизу, чтобы реализовать это. Создайте форк репо и внесите изменения. Ой, подождите, оно уже есть здесь, так что я думаю, вы можете просто клонировать и использовать?

Wayne 26.06.2024 05:13

@Wayne Я пытался установить эту вилку с помощью «pip install -e git+git://github.com/gilgameshjw/methylprep/tree/pandas2.0#e‌​gg=methylprep». Но мне говорят, что эту ссылку невозможно найти. . Но при попытке установить ссылку своего мастера она была успешно установлена. Означает ли это, что эта ссылка больше не активна?

Isaac P. Liu 04.07.2024 04:04

Мне придется позже посмотреть pip install из репозитория. Я не помню, чтобы egg был там, но мне действительно нужно поискать. Я только что подумал, что вы могли бы клонировать его и заменить измененные файлы. Или используйте это для редактирования кода в тех местах, где у вас есть пакет methylprep. в вашей системе.

Wayne 04.07.2024 05:21

Основываясь на моих знаниях pip install с репозиториями и ветками на GitHub, я собрал следующую команду: pip install git+https://github.com/gilgameshjw/methylprep/@pandas2.0_0. Кажется, установка прошла успешно. А потом я даже протестировал его, так как понял, что в репозитории есть примеры данных, см. тестовую версию метилпрепа, работающего с Pandas 2, здесь.

Wayne 05.07.2024 17:59

Также было бы лучше, если бы вы обновили заголовок исходного сообщения, чтобы он был более конкретным. См. раздел «Напишите заголовок, отражающий конкретную проблему» в Как мне задать хороший вопрос?. Вы не искали, как это сделать для конкретного пакета, и это должно быть в заголовке. Представьте, что вы ищете сообщение, соответствующее вашей проблеме, в списке заголовков сообщений. Подумайте, этот вопрос, вероятно, вас не так поразит, как «Как использовать конкретную версию метилпрепа в блокноте Jupyter»?

Wayne 05.07.2024 18:32
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
11
75
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Чтобы установить конкретную версию библиотеки pandas, у вас есть два варианта:

  1. Использование оболочки: откройте терминал или командную строку и выполните следующую команду:
pip install pandas==1.8
  1. Использование Jupyter Notebook: вы можете добавить новую ячейку и использовать волшебную команду %pip для установки pandas. Добавьте следующий код в новую ячейку:
%pip install pandas==1.8

Запустите ячейку, и она установит версию pandas 1.8 в вашу среду Jupyter Notebook.

Вы пробовали предложенные вами команды, чтобы убедиться, что они работают?

Wayne 25.06.2024 22:34
Ответ принят как подходящий

«Теперь на моем компьютере установлена ​​версия 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-адрес, чтобы обеспечить правильную загрузку?

Isaac P. Liu 06.07.2024 23:52

@ предшествует тегу ветки. Поскольку те работы, на которые я ссылался, вы можете использовать %pip listрезультат оттуда (можно просмотреть [здесь]), чтобы проверить версии, которые работали в тесте, который я провел. Затем используйте conda для установки этих конкретных версий в вашей среде. Постарайтесь использовать Anaconda/conda как можно чаще. В этом случае вам нужно будет использовать pip для специальной версии метилпрепа, поскольку у нее нет рецепта конды.

Wayne 07.07.2024 04:47

Другие вопросы по теме