Giter Club home page Giter Club logo

porematmod.jl's People

Contributors

corysimon avatar eahenle avatar simonensemble avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

porematmod.jl's Issues

landing page example

should probably be added to module tests

needs to be fully explored in an example notebook

wasn't working last time I tried

pluto tutorials

examples page should be links (w/ illustrations and ultra-short blurbs) to Pluto notebooks of example and tutorial code

auto-masking

want a function that takes q_o and q_o \ q_! and returns masked q

for simple replacements, easy

for more complex ones, e.g. disorder correction, would need to re-use the OP alignment testing code

result query functions

would be nice to have better API for analyzing search results based on symmetry

e.g., searching for p-phenylene in IRMOF-1 gives 96 isom's at 24 loc's. Naïve assumption: there are a huge number of different structures we can make with just one replacement. But, no matter which of the 96 isom's is chosen for an initial replacement, the result is identical by symmetry. If you want to make a second replacement from there, the naïve assumption would be that there are now 23 loc's, each w/ 4 uniquely-oriented isom's. There are actually far fewer, because again, symmetry makes many of these equivalent choices.

properly handling this could be a real rabbit hole, and will definitely involve group theory and a nice dose of linear algebra

replacement across PB glitches w/ new OP

all cross-PB replacements are getting flipped around! example2.jl shows this clearly, as all cross-pb linkers now have C-O bonds across the boundary (so linker is backwards!)

UiO-66 examples

add examples for creating missing-linker and missing-node crystal defects in UiO-66

search faster!

99% of search runtime is spent on prune!. Up to half of that is spent on calls to candidate_list.

Refactoring to use a Boolean matrix on the DFS stack for the candidate list could make searches much faster!

missing illustrations in docs

need an illustration for:

  • each use case example
  • Ullmann, find, OP, find-replace algos
  • each input file type
  • each replacement mode
  • symmetry/rotation (BDC w/ color-coded atoms)

docs

  • mirror example 1 in others
  • list uses cases like in paper for index.md
  • start.md: don't need Xtals
  • find.md: graphic from paper
  • render Pluto notebooks as HTML
  • make sure docs are building via Travis
  • make sure Pluto HTML is auto-updated
  • add notebook HTMLs to sidebar
  • verify README link to docs
  • verify all asset links in docs
  • remove redundant examples folder
  • check Pluto notebooks in doc tests?
  • update examples.zip on docs build?
  • more pictures in the docs
  • format nav bar w/ headings for manual and examples?
  • re-export SIFSIX structure to make the Crystal command to load it simpler

refactor candidate_list()

candidate_list() is inefficient due to branching. refactor to candidate_in_graph() and candidate_in_subgraph()

subgraph_find_replace()

need to implement this. how to determine exact manner of replacement?

usage case 1: provide function with user-specified replacement scheme

usage case 2: attempt to automatically infer a good replacement, probably via Ullmann

sugar for replacement

The existing syntactic sugar for substructure replacements may be a bit opaque, despite its beauty:

(q => r) in p

The overloading of the in operator is the issue (b/c q in p functions as the search command)

May be better to refactor as analogue of Base.replace:

replace(p, q => r)

publish code

  • make repo public
  • register package
  • remove pre-registration hacks from examples and PMMG

optimal alignment

  • default replacement behavior: optimal ori @ all loc
  • kwarg for default: all_loc
  • assert minimum 3 atoms in OP
  • refactor isoms as Dict

bogus function signature warning

the two definitions of replace in find_replace.jl generate a warning during precompilation that the second overwrites the first, but that is not true. why does this happen, and how can it be prevented?

docs

  • make docs consistent with code changes
  • make docs consistent with paper language
  • use paper figure code for doc examples

refactor refine_M!() for lookup

innermost loop code of refine_M!() causes repeated calls to neighbors() which can be avoided by moving the call to neighbors() up one loop level.

tutorial video

should make a video and post on YouTube showing how to perform a complete example find-replace, including data prep

matrix sorting

need to implement possibility matrix sorting based on subgraph node degree, followed by un-sorting of result matrices

MTV MOFs

need multivariate MOF example as one of the advanced use case tutorials

search/replace input selection somewhat finicky

multiple isomorphisms between the search moiety mask and replacement moiety can cause a problem with alignment. current solution is for user to provide "better" inputs... would be nice to make the software more intelligent here.

link to paper

add link to paper pre-print once it's on ArXiv

update to final publication

stack overflow error

stack overflow occurs during search for p-phenylene in Ti-MIL-125. unknown if this is a program flow error or memory limitation issue.

change how OP is handled

Currently, OP for aligning r_c to p' is done in two steps, allowing greater error propagation (especially if p', q_c, and r_c are not the exact same geometry). This is done because the mapping \phi needs to be chosen with the assistance of OP.

Refactor so that once \phi is selected, the final OP is performed using \phi and \theta together.

docs narrative

make the docs more cohesive with the IRMOF-1 functionalization story

PoreMatModGO

  • avoid using MultiSelect (unstable behavior)
  • figure out what's wrong w/ drop_cross_pb_bonds!

add `induced` flag

there are cases where it would be beneficial to allow only isomorphisms between q and induced subgraphs of p, e.g. searching for n-propyl in the presence of cyclopropyl

add a flag for this in substructure_search

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.