IndexError: список индекса вне допустимого диапазона. Для Stitch API, когда я использую API с использованием python, для нескольких входных данных я получаю вывод, только последние строки имеют ошибку индекса

Я новичок в программировании. Я пытаюсь найти мишени для химикатов с помощью STITCH API. Когда я запускаю код для некоторых входов в списке, я получаю результат. Но, в конце концов, несколько строк показывают ошибку индекса, как указано выше (например, если у меня есть 10 входных идентификаторов, я получаю выходные данные для 7 из них, остальные три не будут работать, поскольку я получаю ошибку индекса). Пожалуйста, посмотрите мой код ниже и помогите с решением. Мой ввод - это список идентификаторов клиентов PubChem, и ничего больше.

      import requests
import pandas as pd
from io import StringIO

out_df = pd.DataFrame(columns=['Chemical_ids', 'Target EnsemblID'])
Path = 'boswellia_stitch_input.txt'
df = pd.read_csv(Path, sep='\t')

for row, line in enumerate(df['Pubchem_CID']):
    base_url = "http://stitch.embl.de/api/tsv/interactorsList"
    Chemical_ids = (f'CID{line}')

    params = {"identifiers": Chemical_ids, "species": "9606", "limit": "400"}

    res = requests.get(base_url, params=params)

    if res.status_code == 200:
        data = [row.split('.')[1] if '.' in row else row for row in res.text.split('\n')[1:-1]]
        result = pd.DataFrame(data[1:], columns=[data[0]])
        
        temp = pd.DataFrame()
        
        temp['Target EnsemblID'] = result.values.flatten()
        temp.reset_index(drop=True, inplace=True)
        temp['Chemical_ids'] = [line]*len(result.index)
        #temp['Chemical_name'] = [df.at[row, 'molecule_name']]*len(result.index) 
        display(temp)
        out_df = out_df.append(temp, ignore_index=True)
#display(out_df)

My error:

IndexError                                Traceback (most recent call last)
<ipython-input-14-1bb58828596d> in <module>
      9     if res.status_code == 200:
     10         data = [row.split('.')[1] if '.' in row else row for row in res.text.split('\n')[1:-1]]
---> 11         result = pd.DataFrame(data[1:], columns=[data[0]])
     12 
     13         temp = pd.DataFrame()

IndexError: list index out of range

0 ответов

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