def inicializarBuscador(request): palabra_clave = "" data_ncbi = "" data_array = "" url_ncbi = "" url_array = "" if request.method == "POST": palabra_clave = request.POST['search'] palabra_clave = palabra_clave.replace(' ', '%20') url_ncbi = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term={}&datetype=edat&retmax=10000000&usehistory=y&retmode=json'.format( palabra_clave) url_array = 'https://www.ebi.ac.uk/arrayexpress/json/v3/experiments?keywords={}'.format( palabra_clave) data_ncbi = obtenerJson.apply_async(kwargs={'url': url_ncbi}) data_array = obtenerJson.apply_async(kwargs={'url': url_array}) cnt = 0 while data_array.status == 'PENDING' and cnt < 3: time.sleep(0.2) cnt += 1 if data_ncbi.get()['esearchresult']['retmax'] == '0' and cnt == 3: return render(request, 'NoResults.html') else: context = { "enlaces_busqueda": [data_ncbi, data_array], "busqueda": request.POST['search'] } return render(request, 'loader.html', context) else: return render(request, 'index.html')
def setUp(self): self.c = Client() self.buscador = views.Buscador() self.url_ncbi = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term=mela&datetype=edat&retmax=2&usehistory=y&retmode=json' self.resultados =[] self.url_array = 'https://www.ebi.ac.uk/arrayexpress/json/v3/experiments?keywords=mela' self.data_ncbi=obtenerJson.apply_async(kwargs={'url': self.url_ncbi}) self.expedientes=self.buscador.obtenerExpedientes(self.data_ncbi) self.data_array = obtenerJson.apply_async(kwargs={'url': self.url_array}) self.tratamientoDatos=views.TratamientosDatos(self.expedientes, self.data_array)
def test_enviarDatos(self): self.data_ncbi = obtenerJson.apply_async(kwargs={'url': self.url_ncbi}) self.buscador.expedientes = self.buscador.obtenerExpedientes( self.data_ncbi) self.buscador.data_array = self.data_array = obtenerJson.apply_async( kwargs={'url': self.url_array}) request = RequestFactory().get('/buscador/', search='prostata') self.assertIsNotNone(self.buscador.enviarDatos(request)) self.assertIsInstance( json.loads( self.buscador.enviarDatos(request).content.decode('utf-8')), list)
def buscar(self,request): if request.method == "POST": self.palabra_clave=request.POST['search'] self.url_ncbi = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term={}&reldate=60&datetype=edat&retmax=10&usehistory=y&retmode=json'.format(self.palabra_clave) self.url_array = 'https://www.ebi.ac.uk/arrayexpress/json/v3/experiments?keywords={}&species="h**o%20sapiens"'.format(self.palabra_clave) self.data_ncbi=obtenerJson.apply_async( kwargs={'url': self.url_ncbi}) self.data_array = obtenerJson.apply_async(kwargs={'url': self.url_array}) ##print (data_array) time.sleep(15) print obtenerJson.apply_async( kwargs={'url': self.url_ncbi}) #print AsyncResult(data_ncbi).status() return index(request) else: return index(request)
def buscar(self,request): if request.method == "POST": self.palabra_clave=request.POST['search'] self.palabra_clave=self.palabra_clave.replace(' ','%20') self.url_ncbi = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term={}&datetype=edat&retmax=40&usehistory=y&retmode=json'.format(self.palabra_clave) self.url_array = 'https://www.ebi.ac.uk/arrayexpress/json/v3/experiments?assaycount=5&keywords={}'.format(self.palabra_clave) self.data_ncbi=obtenerJson.apply_async(kwargs={'url': self.url_ncbi}) self.data_array = obtenerJson.apply_async(kwargs={'url': self.url_array}) self.historial_busqueda.append(self.data_ncbi) self.historial_busqueda.append(self.data_array) self.expedientes=self.obtenerExpedientes(self.data_ncbi) return render(request,'listarBusqueda.html') else: return render(request,'listarBusqueda.html')
def test_obtenerExpedientes(self): self.data_ncbi = obtenerJson.apply_async(kwargs={'url': self.url_ncbi}) self.assertIsInstance(self.buscador.obtenerExpedientes(self.data_ncbi), list) self.resultados = self.buscador.obtenerExpedientes(self.data_ncbi) self.assertIsNotNone(self.resultados) self.assertIsInstance(self.resultados.pop(), AsyncResult)
def obtenerExpedientes(self,resultados_busqueda): resultados=[] while resultados_busqueda.status == 'PENDING': time.sleep(2) for i in range(len(resultados_busqueda.get()['esearchresult']['idlist'])): identificador=resultados_busqueda.get()['esearchresult']['idlist'][i] url='https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gds&id={}&retmode=json'.format(identificador) resultados.append(obtenerJson.apply_async( kwargs={'url': url})) return resultados
def obtenerExpedientes(self, resultados_busqueda): for i in range( 0, int(resultados_busqueda.get()['esearchresult']['count']), 500): url = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gds&query_key=1&WebEnv={}&retstart={}&retmax=500&rettype=json&retmode=json'.format( resultados_busqueda.get()['esearchresult']['webenv'], i) ''' response = urlopen(url) ncbi_uids = json.loads(response.read().decode('utf-8')) ''' ncbi_uids = obtenerJson.apply_async(kwargs={'url': url}) self.resultados.append(ncbi_uids) return self.resultados
def sendFile(request): searched_file = json.loads(request.POST['myInput']) genome = [] if searched_file['file']['bd'] == 'ArrayExpress': # file=obtenerJson.apply_async(kwargs={'url':'https://www.ebi.ac.uk/arrayexpress/json/v3/experiments/{}'.format(searched_file['accession'])}) muestras = obtenerJson.apply_async( kwargs={ 'url': 'https://www.ebi.ac.uk/arrayexpress/json/v3/experiments/{}/samples/' .format(searched_file['accession']) }) archivo = urlopen(searched_file['file']['descarga'] + searched_file['file']['accession'] + '.idf.txt').readlines() for i in archivo: if i: if re.findall(regex_hg, i.decode('utf-8', errors="ignore").lower()): genome.append( re.findall(regex_hg, i.decode('utf-8', errors="ignore").lower())[0][0]) if re.findall(regex_grch, i.decode('utf-8', errors="ignore").lower()): genome.append( re.findall(regex_grch, i.decode('utf-8', errors="ignore").lower())[0][0]) if re.findall(regex_grcm, i.decode('utf-8', errors="ignore").lower()): genome.append( re.findall(regex_grcm, i.decode('utf-8', errors="ignore").lower())[0][0]) if genome: genome = set(genome) else: genome.append("Not Available") searched_file['file'].update( {'samples': muestras.get()['experiment']['sample']}) searched_file['file'].update( {'n_samples': len(muestras.get()['experiment']['sample'])}) searched_file['file'].update({'genome': genome}) context = {"file": searched_file['file']} return render(request, 'expedient.html', context) else: if searched_file['file']: if len(searched_file['file']['samples']) > 0: archivo = urlopen( 'https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=' + searched_file['file']['samples'][0]['accession'] ).readlines() for i in archivo: if i: if re.findall( regex_hg, i.decode('utf-8', errors="ignore").lower()): genome.append( re.findall( regex_hg, i.decode('utf-8', errors="ignore").lower())[0][0]) if re.findall( regex_grch, i.decode('utf-8', errors="ignore").lower()): genome.append( re.findall( regex_grch, i.decode('utf-8', errors="ignore").lower())[0][0]) if re.findall( regex_grcm, i.decode('utf-8', errors="ignore").lower()): genome.append( re.findall( regex_grcm, i.decode('utf-8', errors="ignore").lower())[0][0]) if genome: genome = set(genome) else: genome.append("Not Available") else: genome.append("Not Available") context = {"file": searched_file['file']} searched_file['file'].update({'genome': genome}) return render(request, 'expedient.html', context)
def test_task(self): self.data_ncbi = obtenerJson.apply_async(kwargs={'url': self.url_ncbi}) self.assertIsNotNone(self.data_ncbi) self.assertIsInstance(self.data_ncbi, AsyncResult)