def _usage(error=None):
    print "Usage : " + os.path.basename(sys.argv[0]) + " --id=submission_uuid"
    print ""
    print "Generate xyz for all molecules in a given submission"
    print ""
    if error is not None:
        print ""
        print error
        print ""


options = Options(sys.argv)

graph = Graph(graphstore.store(),
              identifier=rdflib.URIRef("urn:uuid:" +
                                       str(options.submission_uuid)))

for mol in grrm2.Molecule.all(graph):
    fs = filestorage.ResourceStorage(mol,
                                     web_accessible=True,
                                     settings=settings.filestorage_settings)

    data = grrm2.geometry(mol).get()
    elements = data["symbols"]
    coords = data["coordinates"]

    f = file(fs.path("geometry", "xyz"), "w")

    num_atoms = len(elements)
                            data.grrm__basis_set = grrm2.basisSet(
                                run_data).get()
        except:
            pass

    return (thing, data_list)


def _getDataList(thing):
    return grrmBasisSetFilter(*grrmCanostFilter(*grrmTypeFilter(
        *grrmMoleculeInfoFilter(thing, [Data()]))))


options = Options(sys.argv)

submission_graph = Graph(graphstore.store(),
                         identifier=rdflib.URIRef("urn:uuid:" +
                                                  options.submission_uuid))
sys_uuid = _get_system_uuid(graphstore.store(), options.submission_uuid)
sys_graph = Graph(graphstore.store(),
                  identifier=rdflib.URIRef("urn:uuid:" + sys_uuid))
graph = ReadOnlyGraphAggregate([submission_graph, sys_graph])

try:
    indexer = indexing.DbIndex()
    indexer.addIndex("is_grrm__molecule", "BOOLEAN")
    indexer.addIndex("is_grrm__equilibrium_structure", "BOOLEAN")
    indexer.addIndex("is_grrm__transition_state", "BOOLEAN")
    indexer.addIndex("is_grrm__barrierless_dissociated", "BOOLEAN")
    indexer.addIndex("is_grrm__barrier_dissociated", "BOOLEAN")
    indexer.addIndex("is_grrm__interconversion_step", "BOOLEAN")
def _getLabel(mol):
    struct_number = grrm2.structureNumber(mol).get()
    if grrm2.EquilibriumStructure.tryCast(mol):
        struct_type = "EQ"
    elif grrm2.TransitionState.tryCast(mol):
        struct_type = "TS"
    elif grrm2.BarrierlessDissociated.tryCast(mol):
        struct_type = "uDC"
    elif grrm2.BarrierDissociated.tryCast(mol):
        struct_type = "dDC"

    return struct_type+str(struct_number)

options=Options(sys.argv)
graph = Graph(graphstore.store(), identifier=rdflib.URIRef("urn:uuid:"+str(options.submission_uuid)))

runs = list(grrm2.Run.all(graph))

if len(runs) != 1:
    raise Exception("Run length != 1")

storage = filestorage.ResourceStorage(runs[0], web_accessible=True, settings=settings.filestorage_settings)
print "writing file : "+storage.path("connectivity","csv")
f=file(storage.path("connectivity","csv"),"w")
for icresult in grrm2.InterconversionResult.all(graph):
    label=_getLabel(icresult)
    f.write("v,"+label+","+utils.uriToUuid(icresult.uri())+"\n")


for iconv in grrm2.Interconversion.all(graph):
Example #4
0
def main():
    options=Options(sys.argv)

    system_uuid = helperfuncs.getSystemUuid(graphstore.store(),  options.submission_uuid)
    submission_info_subgraph = Graph(graphstore.store(), identifier=contexts.CONTEXT_NS.SubmissionInfo)

    submission = ordfm.SystemSubmission.get(submission_info_subgraph,uri="urn:uuid:"+str(system_uuid))
    if submission is None:
        submission = ordfm.SystemSubmission.new(submission_info_subgraph,uri="urn:uuid:"+str(system_uuid))
        submission_info_subgraph.commit()
    else:
        print "Previous submission found. overwriting"
        graphstore.graph().remove_context(rdflib.URIRef("urn:uuid:"+str(system_uuid)))
        graphstore.graph().commit()

    graph = Graph(graphstore.store(), identifier=rdflib.URIRef("urn:uuid:"+str(options.submission_uuid)))
    system_graph = Graph(graphstore.store(), identifier=rdflib.URIRef("urn:uuid:"+str(system_uuid)))
    print "Adding to graph id urn:uuid:"+str(system_uuid)
    for mol in grrm2.Molecule.all(graph):
        print "-"*40
        print "molecule "+str(mol.uri())

        m = grrm2.Molecule.new(system_graph, mol.uri())
        formula = helperfuncs.generateFormula(mol)
        inchi = helperfuncs.generateInchi(mol)
        smiles = helperfuncs.generateSmiles(mol)
        mass = helperfuncs.generateMass(mol)
        
        print "Formula: "+str(formula)
        print "Inchi: "+str(inchi)
        print "Smiles: "+str(smiles)
        print "Mass: "+str(mass)

        if formula is not None: 
            grrm2.hillFormula(m).set(formula)
        if inchi is not None:
            grrm2.inchi(m).set(inchi)
        if smiles is not None:
            grrm2.smiles(m).set(smiles)
        if mass is not None:
            grrm2.mass(m).set(mass)

        try: 
            helperfuncs.generateMdl(mol)  
        except:
            pass

        canost_planar = helperfuncs.generateCanostPlanar(mol)
        canost_serial = helperfuncs.generateCanostSerial(mol)
        canost_canonical = helperfuncs.generateCanostCanonical(mol)
        print "canost planar: "+str(canost_planar)
        print "canost serial: "+str(canost_serial)
        print "canost canonical: "+str(canost_canonical)

        if canost_planar is not None:
            grrm2.canostPlanar(m).set(canost_planar)
        if canost_serial is not None:
            grrm2.canostSerial(m).set(canost_serial)
        if canost_canonical is not None:
            canost_planar_canonical, canost_serial_canonical = canost_canonical
            if canost_planar_canonical is not None:
                grrm2.canostPlanarCanonical(m).set(canost_planar_canonical)
            if canost_serial_canonical is not None:
                grrm2.canostSerialCanonical(m).set(canost_serial_canonical)

        try:
            helperfuncs.generateMdlForFragments(mol)
        except:
            pass
            
        canost_planar_fragments = helperfuncs.generateCanostPlanarFragments(mol)
        print "canost planar fragments: "+str(canost_planar_fragments)
        if canost_planar_fragments is not None:
            grrm2.fragmentsCanostPlanar(m).set(canost_planar_fragments) 

        canost_serial_fragments = helperfuncs.generateCanostSerialFragments(mol)
        print "canost serial fragments: "+str(canost_serial_fragments)
        if canost_serial_fragments is not None:
            grrm2.fragmentsCanostSerial(m).set(canost_serial_fragments)

        canost_canonical_fragments = helperfuncs.generateCanostCanonicalFragments(mol)
        print "canost canonical fragments: "+str(canost_canonical_fragments)

        if canost_canonical_fragments is not None:
            canost_planar_canonical_fragments=[]
            canost_serial_canonical_fragments=[]

            for fragment_result in canost_canonical_fragments:
                if fragment_result is None:
                    canost_planar_canonical_fragments.append(None)
                    canost_serial_canonical_fragments.append(None)
                    continue
                canost_planar_canonical_fragments.append(fragment_result[0])
                canost_serial_canonical_fragments.append(fragment_result[1])

            print "canost_planar_canonical_fragments : "+str(canost_planar_canonical_fragments)
            print "canost_serial_canonical_fragments : "+str(canost_serial_canonical_fragments)
            grrm2.fragmentsCanostPlanarCanonical(m).set(canost_planar_canonical_fragments)
            grrm2.fragmentsCanostSerialCanonical(m).set(canost_serial_canonical_fragments)

    system_graph.commit()