Как должна выглядеть переменная моего поискового запроса при использовании Biopython и доступе к базам данных NCBI? [закPython

Программы на Python
Ответить
Anonymous
 Как должна выглядеть переменная моего поискового запроса при использовании Biopython и доступе к базам данных NCBI? [зак

Сообщение Anonymous »

Я пытаюсь выполнить поиск по фильтру, но условия фильтра в условиях поиска не дают правильного результата. Как должна выглядеть моя переменная поискового запроса?
Я ссылаюсь на эту ссылку: https://www.ncbi.nlm.nih.gov/datasets/genome/
Я ввожу только название вида в базу данных и хочу получить номер GCA со следующими фильтрами.
Вот мой код. Я хочу получить номера GCA с фильтрами, из которых поступает GCA, эталонный геном И является ли аннотированный геном. Еще хотелось бы, чтобы уровень сборки был от хромосомы до полной. Это все фильтры на веб-сайте, но я хочу, чтобы мой код имел прямой доступ к ним.
from openpyxl import load_workbook
from Bio import Entrez
import time

def get_general_assembly_info(species_name, synonym = None, delay = 0.1):
# Provide your email address to Entrez
Entrez.email = "..."
# Set your NCBI API key
Entrez.api_key = "..."
# Add a delay before making the API request to comply with rate limits
time.sleep(delay)

# Query the NCBI assembly database for a broad search (example: reference genomes)
search_term = f"{species_name} AND {"reference genome"}"
# search_term = f"{species_name} AND {"annotated genome"}"
search_term = (
f"{species_name}[ORGN]AND{"Annotated by GenBank submitter"}"
# AND "
# f"chromosome[Assembly Level] OR complete genome[Assembly Level]"
)

handle = Entrez.esearch(db="assembly", term=search_term, retmax=10) # Adjust retmax for more results
record = Entrez.read(handle)
handle.close()

# Retrieve the assembly IDs (UIDs)
assembly_ids = record["IdList"]
if not assembly_ids:
return "No assemblies found with the specified criteria."

# Fetch the assembly summaries to get detailed information
handle = Entrez.esummary(db="assembly", id=",".join(assembly_ids))
summary_record = Entrez.read(handle)
handle.close()

# Extract and print detailed assembly information
for document_summary in summary_record['DocumentSummarySet']['DocumentSummary']:
# print(document_summary.items())
for key, value in document_summary.items():
if 'Genbank' in value:
for value2 in value.items():
GCA_value = value2[1]
return GCA_value
print(get_general_assembly_info('Aspergillus ustus'))

Я пробовал все разные типы комбинаций, некоторые из них прокомментированы в моем коде. Точнее, я попробовал все следующее:
search_term = f"{species_name} AND {"Reference genomes"} AND {"Annotated genomes"}"
search_term = f"{species_name}+AND+(reference genome)\[FILT\]+AND+(annotated genome \[FILT\]"
search_term = f"{species_name}+AND+reference+genomes" AND (annotated\[Filter\]) AND (chromosome\[Assembly Level\] OR complete genome\[Assembly Level\])"
search_term = f"{species_name} AND {"chromosomal"} OR {"complete"}" AND (annotated\[Filter\]) AND (assembly level chromosomal OR assembly level complete)"
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»