예제 #1
0
파일: celpp.py 프로젝트: ohleck/celpp
 def uploadData(
 ):  #uploads zip files containing docking predictions to contestant folder specified in credentials.txt
     print('Uploading files to box contestant folder')
     cred = wd + '/credentials.txt'
     ftp = FtpFileTransfer(cred)
     print('Connecting to ftp.box.com')
     ftp.connect()
     print('Connected to ftp')
     ftp_files = ftp.list_files(
         ftp.get_contestant_id())  #creates list of files from box
     d = []
     for (_, dirnames, _) in os.walk(wd + '/protocols'):
         d.extend(dirnames)
         break
     for dir in (
             d
     ):  #NOT A FAN OF THE NESTED FOR LOOPS, WILL TRY TO FIND BETTER WAY TO IMPLEMENT THIS
         for (_, _, filenames) in os.walk(wd + '/protocols/' + dir):
             f = []
             f.extend(filenames)
             print('Uploading files for ' + dir)
             for x in (f):
                 if ((x in ftp_files) == False):
                     file = wd + '/protocols/' + dir + '/' + x
                     remote_dir = ftp.get_remote_submission_dir()
                     remote_file_name = os.path.basename(file)
                     ftp.upload_file_direct(file, remote_dir,
                                            remote_file_name)
                 else:
                     pass
     print('All the files have been uploaded. Disconnecting from ftp')
     ftp.disconnect()
예제 #2
0
	def fetchData():
		
		global wd
		wd = str(os.getcwd()) 
		
		print('All Files will go into the celpp folder')
			
		cred = (wd + '/credentials.txt')
		try: #attempts to connect to file required to connect to ftp
			print('Trying to open credentials.txt')
			fo = open(cred, 'r')
			fo.close()
		except: #writes file required to connect to ftp if not already made
			print('Writing credentials.txt file')
			fo = open(cred, 'w')
			fo.write('host ftp.box.com\nuser [email protected]\npass #hail2pitt1\npath\ncontestantid 33824\nchallengepath /challengedata\nsubmissionpath /33824')
			fo.close()
		
		if(os.path.isdir(wd + '/challengedata')==False):#creates challengedata folder if it doesn't exist
			os.mkdir(wd + '/challengedata')
			os.chdir(wd + '/challengedata')
		else: #changes to challengedata folder if it exists
			os.chdir(wd + '/challengedata')
			
			
		ftp = FtpFileTransfer(cred)
		print('Connecting to ftp.box.com')
		ftp.connect() 
		print('Connected to ftp')
		
		ftp_files = ftp.list_files('challengedata')#creates list of files from box
		count = 0 #keep track number of files added to local folder
		for x in (ftp_files):
			split = os.path.splitext(x)
			dir = os.path.splitext(split[0])
			if(str(split[1]) == '.gz'):
				if os.path.isfile(x) == True:#if it finds the zip file in local folder, unzips and deletes zippped file
					print('Unzipping folder ' + str(dir[0]))
					os.system('tar -xzf ' + x)
					print('Deleting zip file: ' + x)
					os.system('rm ' + x)
				elif os.path.isdir(str(dir[0])) == True:#if it finds the unzipped directory in local folders
					pass
				else: #if it can't find the week in any format; downloads, unzips, and removes zipped file
					ftp.download_file('challengedata/'+ x,  wd + '/challengedata/' + x)
					print('Unzipping folder ' + str(dir[0]))
					os.system('tar -xzf ' + x)
					print('Deleting zip file: ' + x)
					os.system('rm ' + x)
					count = count + 1
					print(str(dir[0]) + ' was just added to the challengedata folder')
			else:
				ftp.download_file('challengedata/'+ x,  wd + '/challengedata/' + x)
		print('challengedata has been updated. ' + str(count) + ' week(s) was/were just added.')		
		print('Disconnecting from ftp')
		ftp.disconnect()
예제 #3
0
def fetch_visual_file():
	global wd
	wd = str(os.getcwd()) 
		
	print('All Files will go into the celpp folder')
			
	cred = (wd + '/credentials.txt')
	try: #attempts to connect to file required to connect to ftp
		print('Trying to open credentials.txt')
		fo = open(cred, 'r')
		fo.close()
	except: #writes file required to connect to ftp if not already made		
    	print('Writing credentials.txt file')
    	fo = open(cred, 'w')
    	fo.write('host ftp.box.com\nuser [email protected]\npass #hail2pitt1\npath\ncontestantid 33824\nchallengepath /challengedata\nsubmissionpath /33824')
    	fo.close()

	if(os.path.isdir(wd + '/challengedata_Visualizaiton')==False):#creates challengedata folder if it doesn't exist			
    	print('challengedata_Visualizaiton directory does not exists. ')
    	os.mkdir(wd + '/challengedata_Visualizaiton')
    	os.chdir(wd + '/challengedata_Visualizaiton')
	else: #changes to challengedata folder if it exists
		os.chdir(wd + '/challengedata_Visualizaiton')
			
	ftp = FtpFileTransfer(cred)
	print('Connecting to ftp.box.com')
	ftp.connect() 
	print('Connected to ftp')
		
	ftp_files = ftp.list_files('challengedata')#creates list of files from box
	for x in (ftp_files): 
    	if (x == 'visual.txt'):
        	ftp.download_file('challengedata/' + x, wd + '/challengedata/' + x)

	ftp.disconnect()
	print('Disconnected from ftp')


def box_plot(rmsd, week_num):
    x_data = list(rmsd.keys())
    y_data = []
    for x in x_data:
        data = rmsd.get(x)
        y_data.append(data)
    
    y_best_rmsd = []
    y_first_rmsd = []
    for y in y_data:
        min_rmsd = min(y)
        first_rmsd = y[0]
        y_best_rmsd.append(min_rmsd)
        y_first_rmsd.append(first_rmsd)
    N = len(x_data)
    colors = ['hsl('+str(h)+',50%'+',50%)' for h in np.linspace(0, 360, N)]

    traces = []

    for xd, yd, ybest, yfirst, cls in zip(x_data, y_data, y_best_rmsd, y_first_rmsd, colors):
        traces.append(go.Box( 
                y=yd,
                name=xd,
                boxpoints='all',
                jitter=1,
                whiskerwidth=1,
                pointpos = -2,
                fillcolor=cls,
                marker=dict(size=3,),
                line=dict(width=1.5),))
        
        traces.append(go.Scatter(
            showlegend = True, 
            legendgroup = 'Best RMSD', 
            y = ybest, 
            x = xd, 
            name = xd + ' Best RMSD', 
            fillcolor=cls,
            marker = dict(size = 15, symbol = 'square-open', ), ))
        
        traces.append(go.Scatter(
            showlegend = True, 
            legendgroup = 'First Pose RMSD', 
            y = yfirst, 
            x = xd, 
            name = xd + ' First Pose RMSD', 
            fillcolor = cls, 
            marker = dict(size = 15, symbol = 'star', ),))

        layout = go.Layout(title='RMSD for all Targets in Week' + str(week_num),
                           yaxis=dict(autorange=True,showgrid=True,zeroline=True,dtick=5,
                                      gridcolor='rgb(255, 255, 255)', gridwidth=1,
                                      zerolinecolor='rgb(255, 255, 255)',zerolinewidth=2,),
                           margin=dict(l=40,r=30,b=80,t=100,),
                           paper_bgcolor='rgb(243, 243, 243)',
                           plot_bgcolor='rgb(243, 243, 243)',
                           showlegend=False)

    fig = go.Figure(data=traces, layout=layout)
    
    return fig


def bar_plot(rmsd, week_num):
    x_data = list(rmsd.keys())
    y_data = []
    for x in x_data:
        data = rmsd.get(x)
        y_data.append(data)
    y_best_rmsd = []
    y_first_rmsd = []
    for y in y_data:
        min_rmsd = min(y)
        first_rmsd = y[0]
        y_best_rmsd.append(min_rmsd)
        y_first_rmsd.append(first_rmsd)
    trace1 = go.Bar(
        x = x_data,
        y = y_best_rmsd,
        name='Best RMSD'
    )

    trace2 = go.Bar(
        x = x_data,
        y = y_first_rmsd,
        name='First Pose RMSD'
    )

    data = [trace1, trace2]
    layout = go.Layout(title='Best and First Pose RMSD for all Targets in Week' + str(week_num),
        barmode='group'
    )

    fig = go.Figure(data=data, layout=layout)
    
    return fig