2016-12-20 2 views
3

게시 된 기사를 저장하고 읽는 데 문제가 있습니다. 이 페이지 here에는 특별한 파일 유형이 있지만 그 중 아무 것도 나를 위해 일하지 않은 것을 보았습니다. 데이터를 얻기 위해 키를 계속 사용할 수있는 방식으로 저장하고 싶습니다. 텍스트 파일로 저장하면 가능한지 모르겠습니다. 나는이 오류를 받고 있어요pubmed 기사를 다운로드하고 읽는 방법?

import sys 
from Bio import Entrez 
import re 
import os 
from Bio import Medline 
from Bio import SeqIO 

'''Class Crawler is responsable to browse the biological databases 
from DownloadArticles import DownloadArticles 
c = DownloadArticles() 
c.articles_dataset_list 
''' 
class DownloadArticles(): 
    def __init__(self): 
     Entrez.email='[email protected]' 
     self.dataC = self.saveArticlesFilesInXMLMode('pubmed', '26837606') 

    '''Metodo 4 ler dado em forma de texto.''' 
    def saveArticlesFilesInXMLMode(self,dbs, ids): 
     net_handle = Entrez.efetch(db=dbs, id=ids, rettype="medline", retmode="txt") 
     directory = "/dataset/Pubmed/DatasetArticles/"+ ids + ".fasta" 
     # if not os.path.exists(directory): 
     # os.makedirs(directory) 
     # filename = directory + '/' 
     # if not os.path.exists(filename): 
     out_handle = open(directory, "w+") 
     out_handle.write(net_handle.read()) 
     out_handle.close() 
     net_handle.close() 
     print("Saved") 
     print("Parsing...") 
     record = SeqIO.read(directory, "fasta") 
     print(record) 
     return(record.read()) 

: ValueError: No records found in handle 피스 누군가가 나를 도울 수 내 코드는 하나?


지금 내 코드는 당신이했던 것처럼 .fasta에 저장하는 기능을하려고하고, 이런 식이다. 그리고 위의 대답처럼 .fasta 개의 파일을 읽으십시오.

import sys 
from Bio import Entrez 
import re 
import os 
from Bio import Medline 
from Bio import SeqIO 

def save_Articles_Files(dbName, idNum, rettypeName): 
    net_handle = Entrez.efetch(db=dbName, id=idNum, rettype=rettypeName, retmode="txt") 
    filename = path + idNum + ".fasta" 
    out_handle = open(filename, "w") 
    out_handle.write(net_handle.read()) 
    out_handle.close() 
    net_handle.close() 
    print("Saved") 
enter code here 

Entrez.email='[email protected]' 
dbName = 'pubmed' 
idNum = '26837606' 
rettypeName = "medline" 
path ="/run/media/Dropbox/codigos/Codes/"+dbName 
save_Articles_Files(dbName, idNum, rettypeName) 

하지만 제 기능이 작동하지 않습니다. 제발 좀 도와주세요!

답변

3

두 가지 개념이 섞여 있습니다.

1) Entrez.efetch()은 NCBI에 액세스하는 데 사용됩니다. 귀하의 경우 Pubmed에서 기사를 다운로드하고 있습니다.

PMID- 26837606 
OWN - NLM 
STAT- In-Process 
DA - 20160203 
LR - 20160210 
IS - 2045-2322 (Electronic) 
IS - 2045-2322 (Linking) 
VI - 6 
DP - 2016 Feb 03 
TI - Exploiting the CRISPR/Cas9 System for Targeted Genome Mutagenesis in Petunia. 
PG - 20315 
LID - 10.1038/srep20315 [doi] 
AB - Recently, CRISPR/Cas9 technology has emerged as a powerful approach for targeted 
     genome modification in eukaryotic organisms from yeast to human cell lines. Its 
     successful application in several plant species promises enormous potential for 
     basic and applied plant research. However, extensive studies are still needed to 
     assess this system in other important plant species, to broaden its fields of 
     application and to improve methods. Here we showed that the CRISPR/Cas9 system is 
     efficient in petunia (Petunia hybrid), an important ornamental plant and a model 
     for comparative research. When PDS was used as target gene, transgenic shoot 
     lines with albino phenotype accounted for 55.6%-87.5% of the total regenerated T0 
     Basta-resistant lines. A homozygous deletion close to 1 kb in length can be 
     readily generated and identified in the first generation. A sequential 
     transformation strategy--introducing Cas9 and sgRNA expression cassettes 
     sequentially into petunia--can be used to make targeted mutations with short 
     indels or chromosomal fragment deletions. Our results present a new plant species 
     amenable to CRIPR/Cas9 technology and provide an alternative procedure for its 
     exploitation. 
FAU - Zhang, Bin 
AU - Zhang B 
AD - Chongqing Engineering Research Centre for Floriculture, Key Laboratory of 
     Horticulture Science for Southern Mountainous Regions, Ministry of Education, 
     College of Horticulture and Landscape Architecture, Southwest University, 
     Chongqing 400716, China. 
FAU - Yang, Xia 
AU - Yang X 
AD - Chongqing Engineering Research Centre for Floriculture, Key Laboratory of 
     Horticulture Science for Southern Mountainous Regions, Ministry of Education, 
     College of Horticulture and Landscape Architecture, Southwest University, 
     Chongqing 400716, China. 
FAU - Yang, Chunping 
AU - Yang C 
AD - Chongqing Engineering Research Centre for Floriculture, Key Laboratory of 
     Horticulture Science for Southern Mountainous Regions, Ministry of Education, 
     College of Horticulture and Landscape Architecture, Southwest University, 
     Chongqing 400716, China. 
FAU - Li, Mingyang 
AU - Li M 
AD - Chongqing Engineering Research Centre for Floriculture, Key Laboratory of 
     Horticulture Science for Southern Mountainous Regions, Ministry of Education, 
     College of Horticulture and Landscape Architecture, Southwest University, 
     Chongqing 400716, China. 
FAU - Guo, Yulong 
AU - Guo Y 
AD - Chongqing Engineering Research Centre for Floriculture, Key Laboratory of 
     Horticulture Science for Southern Mountainous Regions, Ministry of Education, 
     College of Horticulture and Landscape Architecture, Southwest University, 
     Chongqing 400716, China. 
LA - eng 
PT - Journal Article 
PT - Research Support, Non-U.S. Gov't 
DEP - 20160203 
PL - England 
TA - Sci Rep 
JT - Scientific reports 
JID - 101563288 
SB - IM 
PMC - PMC4738242 
OID - NLM: PMC4738242 
EDAT- 2016/02/04 06:00 
MHDA- 2016/02/04 06:00 
CRDT- 2016/02/04 06:00 
PHST- 2015/09/21 [received] 
PHST- 2015/12/30 [accepted] 
AID - srep20315 [pii] 
AID - 10.1038/srep20315 [doi] 
PST - epublish 
SO - Sci Rep. 2016 Feb 3;6:20315. doi: 10.1038/srep20315. 

2) SeqIO.read()

읽고 FASTA files을 구문 분석하는 데 사용됩니다 : 당신이 net_handle.read()에서 얻는 결과는 같습니다. 시퀀스를 저장하는 데 사용되는 형식입니다. FASTA 형식의 시퀀스는 일련의 라인으로 표현됩니다. FASTA 파일의 첫 번째 행은 ">"(보다 큼) 기호로 시작합니다. 시퀀스의 고유 한 설명에 사용되는 초기 행 다음에 오는 것은 표준 1 문자 코드의 실제 시퀀스입니다.

위에서 볼 수 있듯이 Entrez.efetch() (내가 위에 붙여 넣었 음)에서 얻은 결과는 FASTA 파일처럼 보이지 않습니다. 따라서 SeqIO.read()은 파일에 시퀀스 레코드를 찾을 수 없다는 오류를 표시합니다.

+0

그래서이 출력은 어떻게 받습니까? – user2535338

+0

이미이 출력을 얻으려면 모든 코드가 있습니다. 필자가 쓴 것처럼, 그것은'net_handle.read()'의 출력이다. – BioGeek

+0

net_handle.read()를 사용하여이 출력을 얻는 방법 – user2535338