Exemplo n.º 1
0
def importFromCyana(nmrCalcRun, targetDir):

    c = cp.CyanaParser()

    rootProject = nmrCalcRun.root
    os.chdir(targetDir)

    peakFiles = []
    uplFiles = []
    acoFiles = []
    rdcFiles = []
    cyaFiles = []
    noaFiles = []
    txtFiles = []
    dataSources = []
    ccpnConfigFile = open("Properties.ccpn.json")
    ccpnConfig = json.load(ccpnConfigFile)
    configFile = open("cyana2ccpn.json")
    config = json.load(configFile)
    runId = ccpnConfig['CCPN.nmrCalcId'].split('+')[1]

    for peakList in ccpnConfig['PeakListData']:
        peakListName = peakList['fileName'].split(
            '.peaks')[0] + '-cycle7.peaks'
        peakFiles.append(peakListName)
    for distanceRestraintList in config["distanceRestraints"]:
        uplFiles.append(distanceRestraintList)
    for dihedralRestraintList in config["dihedralRestraints"]:
        acoFiles.append(dihedralRestraintList)
    for rdcRestraintList in config["rdcRestraints"]:
        rdcFiles.append(rdcRestraintList)
    for cyaFile in config["cyaFiles"]:
        cyaFiles.append(cyaFile)
    for noaFile in config["noaFiles"]:
        noaFiles.append(noaFile)
    seqFile = ccpnConfig['RunParameter']['fileNameSequence']
    originalProtFile = ccpnConfig['MeasurementListData'][0]['fileName']

    finalProtFile = originalProtFile.split(".prot")[0] + "-final.prot"

    c.parse(seqFile=seqFile,
            originalProtFile=originalProtFile,
            finalProtFile=finalProtFile,
            peakFiles=peakFiles,
            rdcFiles=rdcFiles,
            acoFiles=acoFiles,
            cyaFiles=cyaFiles,
            noaFiles=noaFiles)
    nmrProject = rootProject.currentNmrProject
    nmrConstraintStore = rootProject.newNmrConstraintStore(
        nmrProject=nmrProject)
    if rootProject.currentAnalysisProject is not None:
        AnalysisProject = rootProject.currentAnalysisProject
    else:
        AnalysisProject = rootProject.newAnalysisProject(
            name="analysisProject", nmrProject=nmrProject)
    shiftListName = c.finalProtFile
    molSystem = rootProject.findFirstMolSystem()
    newShiftList = nmrProject.newShiftList(name=shiftListName)

    atomToResonanceMap = createAtomtoResonanceMap(nmrProject)
    resonanceDictionaries = assignResonances(c.resonances, atomToResonanceMap,
                                             molSystem, newShiftList,
                                             AnalysisProject,
                                             nmrConstraintStore)
    loadPdb(config['pdbFile'], molSystem)

    # newPeakLists = []
    for peakList in ccpnConfig['PeakListData']:
        peakListName = peakList['fileName'].split('.peaks')[0]
        experimentSerial = int(peakList['fileName'].split('_')[1])
        ccpnExperiment = nmrProject.findFirstExperiment(
            serial=experimentSerial)
        cloneName = ccpnExperiment.name + '_run' + str(runId)
        clonedExperiment = cloneExperiment(ccpnExperiment, cloneName)
        spectrum = clonedExperiment.findFirstDataSource()
        dataSources.append(spectrum)
        setExperimentShiftList(clonedExperiment, newShiftList)
        peakList = spectrum.newPeakList()
        spectrum.activePeakList = peakList

        for cingPeakList in c.peakLists:

            if cingPeakList.name.split('-')[0] == peakListName:
                peakList.name = cingPeakList.name
                pickPeaksFromCing(cingPeakList, peakList,
                                  resonanceDictionaries['resonanceDict'])
                nmrCalcRun.newPeakListData(name=cingPeakList.name,
                                           ioRole='output',
                                           peakList=peakList)
                # newPeakLists.append(peakList)

        # for newPeakList in newPeakLists:
        assignedPeakList = spectrum.newPeakList()
        unassignedPeakList = spectrum.newPeakList()
        assignedPeakList.details = 'assigned'
        unassignedPeakList.details = 'unassigned'
        splitAssignedUnassigned(peakList, assignedPeakList, unassignedPeakList)

    loadChemShiftRestraints(c.chemicalShiftRestraints, originalProtFile,
                            nmrConstraintStore, atomToResonanceMap,
                            resonanceDictionaries['fixedResonanceDict'],
                            molSystem)
    if len(c.distanceRestraintLists) != 0:
        loadDistanceRestraints(c.distanceRestraintLists, nmrProject,
                               nmrCalcRun, nmrConstraintStore,
                               resonanceDictionaries['fixedResonanceDict'],
                               resonanceDictionaries['cingFixedResonanceDict'],
                               molSystem, AnalysisProject)

    if len(c.violationLists) != 0:
        violatedPeaks = loadViolatedDistanceRestraints(
            c.violationLists, nmrProject, nmrCalcRun, nmrConstraintStore,
            resonanceDictionaries['fixedResonanceDict'],
            resonanceDictionaries['cingFixedResonanceDict'], molSystem,
            AnalysisProject)
        for peakList, peaks in violatedPeaks.iteritems():
            spectrum = peakList.getDataSource()
            newPeakList = spectrum.newPeakList()
            newPeakList.details = 'violated'
            copyPeakList(peakList, newPeakList, peaks=peaks)

    if len(c.dihedralRestraintLists) != 0:
        loadDihedralRestraints(c.dihedralRestraintLists, nmrConstraintStore,
                               nmrCalcRun,
                               resonanceDictionaries['cingFixedResonanceDict'],
                               molSystem)

    if len(c.rdcRestraintLists) != 0:
        loadRdcRestraints(c.rdcRestraintLists, nmrConstraintStore,
                          resonanceDictionaries['cingFixedResonanceDict'],
                          molSystem)

    pluginModule = intUtil.getIntegratorPlugin(
        ccpnConfig["CCPN.Run.wmsProtocolName"])
    pluginModule.read.read(nmrCalcRun, targetDir)
    print "Import Complete"
    return dataSources
Exemplo n.º 2
0
   # set up input
   junk, projectDir, nmrCalcRunId, protocolName = sys.argv[:4]
   
   print '### input : ', projectDir, nmrCalcRunId, protocolName
   
   masterRun = intIo.getNmrCalcRun(projectDir, nmrCalcRunId)
   print '### masterRun', masterRun
   if masterRun is None:
     raise Exception("No NmrCalcRun found for %s, %s" 
                     % (projectDir, nmrCalcRunId))
   
   nmrCalcRun = intUtil.makeDerivedRun(masterRun)
   print '### nmrCalcRun', nmrCalcRun
   
   try:
     pluginModule = intUtil.getIntegratorPlugin(protocolName)
     intUtil.setRunParametersFromConfig(nmrCalcRun, 
                                        pluginModule.Util.defaultConfiguration)
   except:
     print 'WARNING, no python plugin found for %s' % protocolName
     
   nmrCalcRun.wmsProtocolName = protocolName
   
   intIo.doPrepareStdWmsRun(nmrCalcRun, pluginModule)
   
   nmrCalcRun.root.saveModified()
     
 else:
   print "Usage: write projectDir NmrCalcRun.IDstring protocolName)"