Я написал конвейер для отправки запросов в uniprot, но у меня возникла странная проблема с одним из запросов. Я поместил это в небольшой тестовый пример ниже.
Я получаю ожидаемый кадр данных (df) (одна строка и 15 столбцов, по одному на поле), но когда я экспортирую ее в CSV и открываю в Excel, она выглядит искаженной. В частности, вместо одной строки я получаю две, причем вторая начинается в середине столбца кадра данных «Последовательность» (более подробную информацию я дал в нижнем комментарии). Это по одному из 99 запросов, а с остальными все было нормально. Я подозреваю, что это проблема в моем вызове pd.to_csv, но если бы кто-нибудь мог предоставить более подробную информацию, я был бы очень признателен.
Спасибо!
Тим
import requests
import pandas as pd
import io
def queries_to_table(base, query, organism_id):
rest_url = base + f'query=(({query})AND(organism_id:{organism_id}))'
response = requests.get(rest_url)
if response.status_code == 200:
return pd.read_csv(io.StringIO(response.text),
sep = '\t')
else:
raise ValueError(f'The uniprot API returned a status code of {response.status_code}. '\
'This was not 200 as expected, which may reflect an issue '\
f'with your query: {query}.\n\nSee here for more '\
'information: https://www.uniprot.org/help/rest-api-headers. '\
f'Full url: {rest_url}')
size = 500
fields = 'accession,id,protein_name,gene_names,organism_name,'\
'length,sequence,go_p,go_c,go,go_f,ft_topo_dom,'\
'ft_transmem,cc_subcellular_location,ft_intramem'
url_base = f'https://rest.uniprot.org/uniprotkb/search?size={size}&'\
f'fields={fields}&format=tsv&'
query = '(id:TITIN_HUMAN)'
organism_id = 9606
df = queries_to_table(url_base, query, organism_id)
#-> df looks fine - one row and 15 columns
pd.concat([df]).to_csv('test2_error.csv')
#-> opening in excel this is broken - it splits df['Sequence'] into two rows at
#the junction between 'RLLANAECQEGQSVCFEIRVSGIPPPTLKWEKDG' and
#'PLSLGPNIEIIHEGLDYYALHIRDTLPEDTGYY'. In df['Sequence'], this sequence is joined
#by a 'q' (the below string covers the junction, and has the previously quoted substrings in capitals):
#tdstlrpmfkRLLANAECQEGQSVCFEIRVSGIPPPTLKWEKDGqPLSLGPNIEIIHEGLDYYALHIRDTLPEDTGYYrvtatntags
Подробнее здесь: https://stackoverflow.com/questions/790 ... ing-to-csv
Кадр данных Pandas искажается при записи в csv ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение