• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    A High-Performance and Flexible Chemical Structure&Data Search Engine Built on CouchDB&ElasticSearch

    2018-06-27 06:48:30RenzhiLiBojieLiGuozhenZhangJunJiangYiLuo
    CHINESE JOURNAL OF CHEMICAL PHYSICS 2018年3期

    Ren-zhi Li,Bo-jie Li,Guo-zhen Zhang,Jun Jiang,Yi Luo

    Hefei National Laboratory for Physical Sciences at the Microscale,School of Chemistry and Materials Science,University of Science and Technology of China,Hefei 230026,China

    I.INTRODUCTION

    Chemical structure searching plays an important role in cheminformatics.For example,identification of a lead compound,which is a primary task in the early stage of drug discovery,requires tremendous e ff ort on high-volume throughout screening of a great number of candidate compounds.It possesses a challenge for cheminformatics to improve the efficiency and accuracy to save drug development cost.Computational screening methods have been deemed as being very useful in this endeavor[1].

    In the last three decades,the methodology of chemical structure screening has been rapidly developed.The most prevalent search scenario,similarity search,i.e.searching molecules in the data-base that have similar structure from given input,came into wide use in late 1980s[2].The key benefits of similarity search include:(i)Little information is needed to formulate a reasonable query.In particular,no assumption needs to be made about which part(s)of the query molecule confers activity.Thus,similarity methods can be used at the beginning of a chemical or material discovery project when there is little information about the target and only one or two known activities.(ii)Many implementations of similarity methods are computationally inexpensive,so large database searches cannot be efficiently performed.

    Despite the advantages offered by structure search and its growing interest in both academia and industry,the majority of community of cheminformatics has been kept away from this technology for years,largely because of the lack of high-performance structure search engines for the general research community.

    Conventionally,chemical structure screening systems are developed on a specialized database or indexing engine.However,existing specialized databases are less flexible compared with general-purpose database engines.Furthermore,in most existing specialized databases,screening through millions of structures takes seconds or even minutes,which is too slow for an interactive Web service.

    The challenges to improve performance are threefold.First,most existing systems do a linear scan of almost all candidate structures.Although the similarity computation of a single candidate structure is inexpensive,such scan is still too costly when multiplied by millions of structures in the database.Second,the search criteria should support not only structure similarity,but also other chemical properties.Chemical information is highly variable in structure and therefore requires high flexibility in management such as indexing and storage.Third,high performance databases require extensive optimizations,e.g.leveraging event-driven I/O and managing in-memory cache efficiently.

    For the first challenge,our solution is to transform the similarity search problem onto a general text search problem.It is inspired from image search,where the search engine returns the most similar images without calculating the similarity of all candidate images one by one.A large-scale image search engine extracts a descriptor,like PCA-SIFT[3],from every image in its database,then builds an inverted index of the descriptors to store the list of occurrences of each descriptor.When the user up-loads an image to search,the engine calculates the descriptors of the uploaded image,and searches for the best matches according to the inverted index.

    In the field of chemical searching,to describe the topological structure of a molecule,there are many kinds of descriptors.The most famous ones are ap[4](Atomic Pair)and tt[5](Topological Torsion).Asides from ap and tt,other descriptors include dp,the Donor-Acceptor Pair[6],which is a reduced pharmacophore version of ap.Such descriptors can be used for molecular structural searching.

    In this article,we built a database that contained a correspondence between molecules and their descriptors,and an inverted index that treated each descriptor as a unique keyword.When performing similarity search,we translated the query(a structure)into descriptors(keywords)and performed a general text search on the keywords.

    The second challenge is large variety and heterogeneity of chemical information.Relational data models require a fixed schema of all possible properties( fields),but materials may have hundreds of properties which are hard to enumerate a priori.So we choose schemaless document-oriented database instead of relational database.We describe each material or molecule as a document,which is roughly equivalent to the programming concept of an object.Instead of designing a“type”or a“structure”for the data,we simply put the semistructured document into database,based on the naming conventions.

    This schema-less design gives us the ability to maintain multiple heterogeneous datasets in a same database and search their structure or performance data via a unified query interface.The index server incrementally indexes every property of inserted or updated documents,and the new documents will appear in search results after indexing process completes.

    Over the past decade or so,we see the advent of open source schema-less databases(e.g.,MongoDB[7]and CouchDB[8])and text search engines(e.g.,Lucene[9]and ElasticSearch[10])that have high scalability and high performance.These tools are employed to solve the third challenge.Building on the basis of well-developed software platform enjoys the benefits of performance,scalability,system stability,and community support.

    In this work,we present DCAIKU,a large-scale chemical structure&data search engine,built on CouchDB[8]and ElasticSearch[10].CouchDB,as one of the most prevalent schema-less databases,is used for document storage.ElasticSearch,as one of the most advanced text search engines,to provide inverted index with high performance.DCAIKU’s database design,search interface and visualization,implementation of keyword search and chemical structural search,and finally,evaluation results are also presented.

    DCAIKU is a Web service for users to search molecules and crystals by keyword and/or structure.The molecular information of the chemicals is stored in a CouchDB[8]database and indexed by Elastic-Search[10].Users specify structure query via a molecular drawing panel.When the Web backend in DCAIKU server receives a query from the browser,it parses the query,searches the ElasticSearch index to find matching chemicals ordered by relevance,then fetches their molecular information from the CouchDB database and sends them to the browser.Finally,the browser visualizes the molecular structure for the user.

    When new molecular structures are collected,we optimize their geometric structures and calculate their structural descriptors for searching.Then the molecular information is stored in the CouchDB database,shown as the red dotted line in FIG.1.A synchronizer subscribes changes to the CouchDB database and automatically creates indexes for inserted or updated records in ElasticSearch,shown as the red dashed line in FIG.1.

    FIG.1 System architecture of DCAIKU.

    II.SCHEMA-LESS DATABASE DESIGN

    Relational data models impose strict constraints on data types,which is impractical for chemical data.For example,a crystallographic information file(CIF)usually contains atom coordinates,which is a twodimensional table.In relational model,such a table should be represented in multiple entries of a one-tomany relation table,which adds complexity in query and inefficiency in storage.Furthermore,the CIF format defines hundreds of properties regarding experimental measurements,analysis,atomicity,chemical properties,structure,publication and metadata,but a typical CIF file may only contain a small fraction of defined properties.If we use relational model,most cells in the table would be empty,which is a waste of storage space.

    Therefore,we design our database to be nonrelational and schema-less.Because chemical datasets are heterogeneous,and different datasets may have dramatically different sets of properties,we categorized our data into several cards.Each record card belongs to one type,and contains the properties in a specific domain,like naming,identification,structure,or material performance.

    The top level of our database is an unordered map from material ID(MID)to an array of data cards.Each card is a CouchDB Document with a field named“type”indicating its type and rest of fields for its detailed data.For any material,it can contain multiple cards with the same type,for storing multiple data records within the same domain.

    Aside from“$type” field,other metadata fields of record cards include“$origin”and“$provider”.The“$origin”may be a link to a scholar article,or an openaccess database;and the“$provider”indicates the person or organization who uploaded this record.

    Currently,we have defined five record types in our database:identification,aliases,structure,crystallography,and computed properties.An identification card records the identification of given material or molecule,typically IUPAC names,SMILES,InCHI,and CAS numbers.Alias cards describe the synonyms of given material,and it can be used in the name search.

    Structure cards contain one structure of a given material,with the format of it.Currently we have standard delay format(SDF)and CIF structure records,and the SDF structures are searchable.The actual structure data can be stored either in the card,or in another file,and the card contains only the link to that file.A structure may be marked as“visualization”,“measured”or“computed”,to indicate its source and precision.

    The crystallography and computed properties cards are examples of performance data cards.In these cards,data records are mostly numerical,and can be searched using range filters.

    The sources of the data in DCAIKU could be collected in various ways:providing an interface for researchers to upload their“fresh”data from experiments or using a spider to collect from other public services.Our card-based design is capable to record multiple data for one type of one material,and their source could be also recorded.The database can also provide quality gating,by adding an additional field in the cards,and filter out the cards marked as“l(fā)ow quality”.

    III.SEARCH INTERFACE

    To optimize user experience,we simplify our userfacing search interface to two simple components:a query string,or a structural query.Either query string or structural query can be empty,but they cannot be both empty,which makes this search query meaningless.The user interface for DCAIKU search engine is only a simple input box with two buttons,“structure”and“ filter”(FIG.2):

    FIG.2 Searching user interface.

    After the“structure”button is clicked,it will show a drawing panel with a ChemDoodle[11]drawing control,where the user draws the molecular structure he/she wants to search.The drawn molecule will be serialized into a standardized MOL format,which becomes the structural query.

    The query string contains all non-structural searching demands in the free-form input box.The backend search engine breaks the query string into several keywords and forms a search query applied to Elastic-Search.A keyword may be a word in natural language,indicating name search,or a filter,for searching performance or other detailed data in our database.All filters are in this form: fieldname operator value.The fieldname is an English word indicating one searchable data field in our database,usually from a performance record card.The operator indicates the operation of filtering.For numerical fields,users can use“>”,“<”or“=”,to filter these values.For text fields,the“:”operator specifies a specific field to match,for example,“system:Cubic”will not(mistakenly)match molecules with“Cubic”in its name.

    For users’convenience,we designed a“ filter”button aside the input control.This button contains a menu of filterable fields in our database,such as“molecular mass”and“band width”.When a filter menu item is clicked,its keyword will be appended into the input box,so that users can type the search condition after it.

    Similar to Web search,sometimes we need a“strict”filter that forces all matches to pass it,therefore DCAIKU supports adding a“+”operator before any keyword or filter,indicating this item must be satisfied;or a“?”,indicating all matches must avoid it.Users can combine normal keywords,mandatory keywords,and negative keywords in arbitrary quantity or order.

    The search query will be encoded into a JSON object and sent to the server via HTTP POST request,while its results will be returned as a response.A normal response(with HTTP status code 200)indicates a successful query,and the response body will be a JSON array containing the matches within one page.Other HTTP status codes indicate an invalid query.

    IV.INTERACTIVE STRUCTURE VISUALIZATION

    FIG.3 (a)Structure of“bio-MOF-1”visualized in DCAIKU.The shading reveals its inner structure.(b)The same crystal shown in VESTA[23]for comparison.Lack of shading reduces the ability of clear visualization.

    We develop an interactive frontend rendering engine based on WebGL[12]to visualize the structure of molecules on the material details page,so that the user can view the 3-dimensional structure of the material chosen and navigate around or even inside the molecule interactively.

    We made the first e ff ort to consider diffuse reflection in molecule visualization.In previous molecule visualization systems,like RasMol[13]and VMD[14],all frontfacing atoms receive the same amount of light,so atoms in outer and inner layers are simply indistinguishable.Our system can clearly visualize the difference of light intensity and shadow effects of surface atoms and internal atoms(see FIG.3).In addition,we considered the nature of the atom when calculating reflection,for example metal atoms have larger reflectivity than nonmetal ones.We also optimized the z-index calculation algorithm for molecular scenario,so the rendering can be done in reasonable performance(about 25 frames per seconds on a laptop with modern GPU,with 5 s of loading and preparation time)even if there are thousands of molecules in a single search.

    Due to web browsers’limitation of the number of WebGL instances per page(15 for Chrome,in particular),our WebGL-based structure visualization engine cannot be used to render thumbnails on search result page.So,we also develop a JavaScript-based rendering engine on the search result page to show a thumbnail of the 3D molecule structure for each search result.

    V.KEYWORD SEARCH

    Given that DCAIKU is built on ElasticSearch,the query string part will be converted into a standard ElasticSearch query object Q inside our server,and passed into ElasticSearch.Q contains three parts:(i)Neutral indicates the general keywords,(ii)Positive indicates mandatory positive keywords,and(iii)Negative indicates negative keywords.

    Q will be converted into the“should”,“must”and“must not”parts of an ElasticSearch bool query,respectively.Following the semantics of bool in Elastic-Search,such a map will be conformal to our design of query strings.

    Items in Q’s Neutral list are all ElasticSearch match queries,with one field name associated to the keyword.Given that there may be multiple database fields that can be treated as a molecule or a material’s“name”,multiple terms will be produced,and passed into ElasticSearch.Items in Q’s positive and negative lists are somehow different.Despite that in most cases,they are identical to neutral,however sometimes we need to construct a more complex search expression from the keyword.For example,when searching a molecular formula like“C6H12O6”,matching a formula field containing terms“C6”,“H12”,and“O6”,is more appropriate than matching the entire“C6H12O6”directly.Therefore,we added a preprocessing step to segment certain kinds of keywords into a Lisplike S-expression,and construct an ElasticSearch Boolean query term based on it.The preprocessors may vary from field to field.In the former example,the keyword“C6H12O6”will be transformed into expression[OR,“C6H12O6”,[AND,“C6”,“H12”,“O6”]].We include the original keyword as well as the transformed S-expression to prioritize documents that match the original keyword exactly.The full conversion algorithm is shown in Algorithm 1.

    After the conversion,the ElasticSearch query object will be sent to the ElasticSearch service.The Elastic-Search service will return an ordered list of matching MIDs,then the backend server fetches the corresponding documents from CouchDB to form the JSON to return to user.

    The matches returned are first sorted by the quantity of satisfied filters in the“OR”query in descending order;then sorted by relevance in descending order as well.Relevance of a document is defined to bethe sum of keyword relevance and structural relevance.Keyword relevance is the sum of occurrences of each keyword in query string,normalized by the overall frequency of the keyword in the database.This ranking algorithm is known as term frequency-inverse document frequency(TF-IDF)[15].Similarly,structural relevance is calculated as the sum of occurrences of each matching descriptor,normalized by the overall frequency of the descriptor in the database and the total number of descriptors in the molecule.

    Algorithm 1:Encoding a search term q with field name f.

    To speed up keyword search,DCAIKU builds fulltext indexes on each field name.For structure search,an unordered index is created for each ap/tt descriptor.On searching a query,DCAIKU orders the fields by the cardinality of distinct values in the field,so that the most discriminative field is filtered first by the index,resulting in less records to be examined one by one.

    VI.STRUCTURAL SEARCH

    A.Descriptors

    In DCAIKU,we choose to use ap and tt descriptors for molecular structural search.An ap descriptor records the information of two heavy atoms in a given molecule,and the length of the shortest path connecting them,while a tt descriptor describes four atoms connected by three bonds.The atomic information contains three parts:(i)The element name of a certain atom,(ii)Number of heavy atoms connected to it,and(iii)Number of π-bonds connected to it.For example,in this molecule shown in FIG.4,the atom information is:1:C10,2:C30,3:C20,4:C20,5:C20,6:C20,7:C31,8:O11.

    Ap descriptors are obtained from the atom information of all atom pairs in the molecule,with the shortest distance between each pair.In the example above,an ap will be“C10.O11.3”between atom 1 and atom 8.Note that there may be some identical aps,and our system records all of them,because their quantity is also important in this situation.

    FIG.4 A sample molecule.

    The tt descriptors contain the atom information from four connected atoms,like the C1?C2?C3?C4 or C1?C2?C7?O8 in the example above.Descriptors are simply the atom information of these atoms.For torsion C1?C2?C7?O8,the corresponding tt descriptor is“C10.C30.C31.O11”.

    All descriptors are encoded into a sequence of alphanumeric“words”separated by spaces because the word-based searching behavior of ElasticSearch handles single“words”better.

    B.Algorithm

    Given that a molecule structure is also a graph with vertex labels identical to the element name,and edge labels representing the bond order,our descriptorgeneration algorithm takes a molecule encoded in the MOL format first,and converts it into a graph G=(V,E)where Virepresents the element name,and Eijrepresents the bond order between Viand Vj(or zero if they are not connected).In the first step,we counted the bonds and π-bonds connected to each atom,stored in two arrays,Biand Pi,respectively.After this process,such information and each atom’s element name are are bundled into a triplet termed as“atom information”Aiand it would be used in the further encoding process.

    Algorithm 2:Counting bonds and π-atoms.

    To obtain the ap descriptors,we need to calculate the shortest distances of all pairwise atoms.This can be easily achieved by the Floyd-Warshall algorithm[16].However,considering G is sparse(|E|=O(|V|)),and we care only about the quantity of bonds,we decided to use a faster O(V E)algorithm introduced in 1999 by Thorup[17].The shortest distances will be stored in the matrix Dij.Algorithm 3 shows the algorithm used to get ap descriptors.

    Algorithm 3:Getting ap descriptors.

    For tt descriptors,we can find that the distance between the first and the last atoms are exactly 3.Therefore,we can obtain a O(V2)algorithm(Algorithm 4)with the help of Dij.

    Algorithm 4:Getting tt descriptors.

    The operation,“Encode”,is used to convert a descriptor to a string that can be stored in our database.We choose to use Base64 VLQ[18]to encode all our descriptors.

    C.Structural search protocol

    Structural searching does not share the same protocol as query strings.When a user performs a structural search,the backend server will receive the structure he/she has drawn,and convert that structure into a sequence of descriptors.After that,we convert all descriptors of the query structure into a series of match queries and send them to ElasticSearch.Users may combine structural search with query strings,which is handled by a simple and Boolean search provided by ElasticSearch.

    VII.EVALUATION

    We’ve built a test database based on PubChem’s open data[19]and Crystallography Open Database(COD)[20],resulting a test database containing 3,585,725 small molecules and 295,223 crystal structures.

    The DCAIKU search engine runs on a single server with two Intel Xeon E5-2650 v3 CPUs,128 GiB of DRAM and 2 TB of NVMe SSD.We use 6 representative keyword queries(Table I)and 6 representative structural queries(Table II)to measure the accuracy and performance.

    Because network latency and response downloading time may be nonnegligible,we precalibrate the network round-trip latency using ping,and measure the time from sending the last byte of the query to receiving the first byte of the response.The reported latency is the measured query to response time subtracted by the network latency.The latency is measured when the system is almost idle.For throughput benchmark,we stress the site with a continuous stream of identical queries,keeping 50 queries in parallel.We found that none of the search engines cache query results.The throughput is given by the average number of responses received per second.

    A.Keyword search

    The results of keyword search are shown in Table I.It reveals that though the input query is relatively complex,our system built on ElasticSearch can handle them well,providing our desired results,while maintaining the low latency.The results of searching for“Silicon without element Si”(test 2)results with Germanium,because that the data entry of Germanium has a reference to silicon.The contradiction test 4 returns an expected null-result.

    Tests 5 and 6 in our crystallography database shows the potential of our system for searching molecules or materials satisfying specific performance requirements.

    A keyword search returning hundreds of matches typically completes within 0.3 s,regardless of the number of search conditions.

    B.Structural search

    Structural search results are shown in Table II.From this table,we can see that our descriptor system works well for most queries:in most cases,they return the same molecule in the first place of the candidate list.The first non-identical similar result reveals that our ap/tt descriptor system can verify the similarity between the query and other molecules in our database.

    However,in test 6,our system does not return the exact query in the first place.This shows one of the disadvantages of the ap/tt system:for topologically similar molecules,but with different lengths of carbon chains,our ap/tt descriptors may be too similar to distinguish relevant candidates effectively.

    The result of test 3 demonstrates the ability of searching molecules that are similar to an unrecorded molecule in our system.Our system returns a 7-membered ring instead of the six-membered in our query,while preserving other properties,especially leaving heterocycles as it is.

    Structural search has higher latency than keyword search because a large portion of molecules match at least one ap/tt descriptor with the query.Our system can retrieve the top 25 results sorted by relevance in 3 s for all test queries.Tests 4?6 takes longer time than tests 1?3 because these structure queries containmore ap/tt descriptors,therefore need to merge more indexes.

    TABLE I Keyword search results of six test queries.

    TABLE II Structural search results of six test queries.

    In addition,we measure the latency of DCAIKU under stress test of 20 concurrent queries.Compared to idle latency,the latency under high load varies from 1.1×to 1.6×,showing that DCAIKU can support tens of concurrent queries without much performance degradation.This is because ElasticSearch utilizes at most 4 cores per query and our two CPUs on the server has 40 cores,supporting 10 parallel computations.The concurrency is further improved to 12?18 by overlapped computation and disk I/O access.

    VIII.PERFORMANCE COMPARISON WITH OTHER SYSTEMS

    For comparison,we benchmark several public chemical search engines,namely eMolecules[21],PubChem[19]and ChemSpider[22],using the same methodology as testing DCAIKU.The latency measurements have less than 10%standard deviation,so we only report the average latency of 10 repeated tests.For public services not supporting advanced filters,we convert each filter into a simple keyword search.

    Our system has only one Linux server and contains 129 GiB data and 47 GiB index of 3.9 M records.The corpus size of eMolecules,PubChem and Chem-Spider are 1.5,91,and 58 M respectively;these services are also using multiple servers to provide their service,with load balancing and clustering,rather than single server.Therefore,although our corpus size is smaller than PubChem and ChemSpider,DCAIKU is able to seamlessly scale to a cluster of servers by splitting the corpus to multiple disjoint portions to be served by different servers.Merging the top N results(e.g.the first page of results)from each server is a cheap operation,thus the overall query latency and throughput would not differ much from a single node.

    FIG.5 Performance benchmark results.“s0.5”means similarity search threshold is 0.5.Higher similarity threshold implies lower com-putation complexity.For DCAIKU,the similarity threshold is always 0.“l(fā)imit100”stands for limiting to first 100 results,otherwise ChemSpider would not respond in 5 min.(a)Keyword search latency(seconds),(b)structural search latency(seconds),(c)keyword search throughput(queries per second),(d)structural search throughput(queries per second).

    As shown in FIG.5(a)and(b),the query latency of DCAIKU is significantly lower than existing public services,especially in structural searching.Some services,like ChemSpider,takes about one minute to return a structural search result,while all queries to DCAIKU return within 3 s.

    As shown in FIG.5(c)and(d),the throughput of DCAIKU also outperforms other public services.For structural search,the throughput is only bench-marked for DCAIKU and eMolecules due to concurrency restrictions of other two services.The throughput of DCAIKU is bounded by the CPU performance of fetching and merging indexes in relevance order.The structural search throughput is an order of magnitude lower than keyword search,because a structural query may have tens of ap/tt descriptors while a keyword search typically only contains a few keywords or filters.

    IX.CONCLUSION

    This paper presents DCAIKU,a high-performance chemical structure&data search engine,built on CouchDB and ElasticSearch.DCAIKU converts the chemical structure similarity search problem into a general text search problem to utilize o ff-the-shelf full-text search engines.DCAIKU also supports flexible document structures and heterogeneous datasets with the help of schema-less document database,so that users can freely combine their demands about molecules,materials and other chemistry topics via a unified query interface.

    Our evaluations show that DCAIKU can handle both keyword search and structural search against millions of records with both high accuracy and low latency.For queries that have no perfect match in the database,DCAIKU can return similar results as well.Our work makes a crystal-clear case showing the feasibility of large-scale molecule structure search through ap/tt descriptor matching.

    The DCAIKU search engine will enable large-scale and cost-effective structural search in materials science and chemistry research.We plan to further improve the system in the following aspects:(i)Support more material types,especially in biochemistry,like proteins,drugs,etc.(ii)Improve the accuracy of structural search by adding more descriptors to distinguish different lengths of carbon chains in topologically similar structures.(iii)Support donor-acceptor search,which is very common in catalyst design and drug design.

    X.ACKNOWLEDGEMENTS

    This work was supported by the National Natural Science Foundation of China,the Ministry of Science and Technology of China,and the Swedish Research Council.

    [1]P.Willett,J.M.Barnard,and G.M.Downs,J.Chem.Inf.Comput.Sci.38,983(1998).

    [2]G.M.Downs and P.Willett,Reviews in Com-putational Chemistry,K.B.Lipkowitz and D.B.Boyd Eds.,Hoboken,New Jersey:Wiley-VCH,Inc.,(2007).

    [3]Y.Ke and R.Sukthankar,Proceedings of the 2004 IEEE Computer Society Conference on Com-puter Vision and Pattern Recognition,Washington,DC,USA:IEEE,(2004).

    [4]R.E.Carhart,D.H.Smith,and R.Venkata-raghavan,J.Chem.Inf.Comput.Sci.25,64(1985).

    [5]R.Nilakantan,N.Bauman,J.S.Dixon,and R.Venkataraghavan,J.Chem.Inf.Comput.Sci.27,82(1987).

    [6]V.Gutmann,The Donor-Acceptor Approach to Molecular Interactions,New York:Plenum Press,(1978).

    [7]K.Chodorow,MongoDB:the Definitive Guide,2nd Ed,Sebastopol,US:O’Reilly Media,Inc.,(2013).

    [8]J.C.Anderson,J.Lehnardt,and N.Slater,CouchDB:the Definitive Guide,Cambridge:O’Reilly Media,Inc.,(2010).

    [9]M.McCandless,E.Hatcher,and O.Gospodneti?,Lucene in Action:Covers Apache Lucene 3.0,2nd Ed,Greenwich:Manning Publications Co.,(2010).

    [10]C.Gormley and Z.Tong,Elasticsearch:The Definitive Guide:A Distributed Real-Time Search and Analytics Engine,Sebastopol:O’Reilly Media,Inc.,328(2015).

    [11]M.C.Burger,J.Cheminform.7,35(2015).

    [12]C.Marrin,WebGL Specification,Khronos WebGL Working Group,(2011).

    [13]R.A.Sayle and E.J.Milner-White,Trends Biochem.Sci.20,374(1995).

    [14]W.Humphrey,A.Dalke,and K.Schulten,J.Mol.Graph.14,33(1996).

    [15]G.Salton and M.J.McGill,Introduction to Modern Information Retrieval,Auckland,Tokyo:McGraw-Hill,Inc.,(1983).

    [16]R.W.Floyd,Commun.ACM 5,345(1962).

    [17]M.Thorup,J.ACM 46,362(1999).

    [18]S.Josefsson,The Base16,Base32,and Base64 Data Encodings,US:Network Working Group,(2006).

    [19]E.E.Bolton,Y.L.Wang,P.A.Thiessen,and S.H.Bryant,Annu.Rep.Comput.Chem.4,217(2008).

    [20]S.Gra?ulis,A.Da?kevi?,A.Merkys,D.Chateigner,L.Lutterotti,M.Quirós,N.R.Serebryanaya,P.Moeck,R.T.Downs,and A.Le Bail,Nucleic Acids Res.40,D420(2011).

    [21]https://www.emolecules.com/.

    [22]http://www.chemspider.com/.

    [23]http://jp-minerals.org/vesta/en/.

    欧美国产精品va在线观看不卡| 一区福利在线观看| 亚洲国产欧美日韩在线播放| 亚洲色图av天堂| 大片免费播放器 马上看| 亚洲精品在线美女| 99精品欧美一区二区三区四区| 电影成人av| 国产97色在线日韩免费| 久久国产亚洲av麻豆专区| 国产精品1区2区在线观看. | 国产国语露脸激情在线看| 久久性视频一级片| 性少妇av在线| 亚洲中文日韩欧美视频| 亚洲av成人不卡在线观看播放网| 久久久国产精品麻豆| 亚洲欧美一区二区三区黑人| 可以免费在线观看a视频的电影网站| 青青草视频在线视频观看| 国产在视频线精品| 91九色精品人成在线观看| 香蕉久久夜色| 亚洲国产欧美网| 不卡一级毛片| 捣出白浆h1v1| 在线观看免费午夜福利视频| 少妇猛男粗大的猛烈进出视频| 999精品在线视频| 18禁国产床啪视频网站| 国产精品成人在线| 人人妻人人添人人爽欧美一区卜| 午夜视频精品福利| 国产一区二区激情短视频| 欧美精品一区二区免费开放| 日日爽夜夜爽网站| 三上悠亚av全集在线观看| 男女床上黄色一级片免费看| 欧美人与性动交α欧美精品济南到| 久久久久精品国产欧美久久久| 欧美精品啪啪一区二区三区| 国产主播在线观看一区二区| 纵有疾风起免费观看全集完整版| 国产精品欧美亚洲77777| 色婷婷久久久亚洲欧美| 欧美黑人精品巨大| 日韩大码丰满熟妇| 久久久久久久久免费视频了| 国产欧美日韩一区二区三区在线| 精品国产一区二区三区久久久樱花| 菩萨蛮人人尽说江南好唐韦庄| 啦啦啦视频在线资源免费观看| 国产成人欧美| 女性生殖器流出的白浆| 国产成人av教育| 国精品久久久久久国模美| 动漫黄色视频在线观看| 女性生殖器流出的白浆| 午夜老司机福利片| 搡老熟女国产l中国老女人| 日韩制服丝袜自拍偷拍| 女性生殖器流出的白浆| 视频区图区小说| 国精品久久久久久国模美| 少妇粗大呻吟视频| 国产av精品麻豆| 99久久精品国产亚洲精品| 欧美日韩国产mv在线观看视频| 自线自在国产av| av有码第一页| 桃花免费在线播放| 国产精品国产高清国产av | 大香蕉久久网| 桃花免费在线播放| 午夜激情av网站| 久久精品国产亚洲av香蕉五月 | 大片电影免费在线观看免费| 国产日韩欧美视频二区| 日韩欧美一区二区三区在线观看 | 两性夫妻黄色片| 最新美女视频免费是黄的| 国产亚洲av高清不卡| 宅男免费午夜| 大香蕉久久成人网| 国产免费视频播放在线视频| 亚洲美女黄片视频| 国产精品久久久久久人妻精品电影 | 老司机深夜福利视频在线观看| 无遮挡黄片免费观看| 国产亚洲精品久久久久5区| 国产97色在线日韩免费| 色婷婷久久久亚洲欧美| 免费在线观看完整版高清| 久久久久国内视频| 看免费av毛片| 自线自在国产av| 999久久久国产精品视频| 日韩欧美三级三区| 操出白浆在线播放| 高清欧美精品videossex| tube8黄色片| 国产成人精品久久二区二区91| 女人精品久久久久毛片| 亚洲色图av天堂| 考比视频在线观看| 精品熟女少妇八av免费久了| 大片免费播放器 马上看| 国产野战对白在线观看| 久久久久久久久久久久大奶| 啦啦啦中文免费视频观看日本| 亚洲 国产 在线| 成人亚洲精品一区在线观看| 2018国产大陆天天弄谢| 精品一区二区三区视频在线观看免费 | 精品国产乱子伦一区二区三区| 老汉色∧v一级毛片| 国产精品.久久久| 热99re8久久精品国产| 精品少妇内射三级| h视频一区二区三区| 嫁个100分男人电影在线观看| 淫妇啪啪啪对白视频| 我要看黄色一级片免费的| 999精品在线视频| 亚洲av美国av| 香蕉国产在线看| 久久 成人 亚洲| 国产野战对白在线观看| 18在线观看网站| 怎么达到女性高潮| 十八禁高潮呻吟视频| 男女免费视频国产| 欧美大码av| 婷婷成人精品国产| 免费观看人在逋| 高清av免费在线| 一区二区三区激情视频| 天天添夜夜摸| 丰满人妻熟妇乱又伦精品不卡| 亚洲欧美激情在线| 国产欧美亚洲国产| 18禁裸乳无遮挡动漫免费视频| 757午夜福利合集在线观看| 国产免费av片在线观看野外av| 日本av免费视频播放| 真人做人爱边吃奶动态| 天天影视国产精品| 亚洲一区二区三区欧美精品| 少妇猛男粗大的猛烈进出视频| 色在线成人网| 欧美日韩成人在线一区二区| 亚洲午夜理论影院| 午夜福利一区二区在线看| 亚洲熟女精品中文字幕| 色婷婷久久久亚洲欧美| 黄色视频不卡| 国产激情久久老熟女| 国产亚洲一区二区精品| 香蕉丝袜av| 色尼玛亚洲综合影院| 欧美亚洲日本最大视频资源| 国内毛片毛片毛片毛片毛片| 国产片内射在线| 老熟妇仑乱视频hdxx| 日本精品一区二区三区蜜桃| 国产福利在线免费观看视频| 最新在线观看一区二区三区| 黑人欧美特级aaaaaa片| 国产精品98久久久久久宅男小说| 老熟女久久久| 亚洲熟妇熟女久久| 男女下面插进去视频免费观看| 在线观看免费午夜福利视频| √禁漫天堂资源中文www| 一区二区三区国产精品乱码| 精品国产国语对白av| 免费在线观看视频国产中文字幕亚洲| 一本综合久久免费| 妹子高潮喷水视频| 啦啦啦免费观看视频1| 99精国产麻豆久久婷婷| 桃红色精品国产亚洲av| 欧美国产精品一级二级三级| 成人精品一区二区免费| 亚洲中文字幕日韩| 国产成人系列免费观看| 啦啦啦 在线观看视频| 久久久久久久久久久久大奶| 99久久精品国产亚洲精品| 高潮久久久久久久久久久不卡| 水蜜桃什么品种好| tube8黄色片| 成人亚洲精品一区在线观看| 午夜精品久久久久久毛片777| 欧美另类亚洲清纯唯美| 热99国产精品久久久久久7| www.自偷自拍.com| 五月开心婷婷网| 精品久久蜜臀av无| 三上悠亚av全集在线观看| 久久99一区二区三区| 黄片播放在线免费| h视频一区二区三区| 在线观看免费午夜福利视频| 午夜激情av网站| 国产在线视频一区二区| 国产亚洲欧美精品永久| 女人高潮潮喷娇喘18禁视频| 麻豆国产av国片精品| 超碰成人久久| 午夜福利免费观看在线| 国产精品 欧美亚洲| 天天躁夜夜躁狠狠躁躁| 夜夜爽天天搞| 又黄又粗又硬又大视频| 黄片小视频在线播放| 国产97色在线日韩免费| 建设人人有责人人尽责人人享有的| 大陆偷拍与自拍| 国产高清videossex| 久久人人97超碰香蕉20202| 欧美在线一区亚洲| 精品高清国产在线一区| 午夜福利,免费看| 在线av久久热| 建设人人有责人人尽责人人享有的| 国产精品av久久久久免费| 国产日韩一区二区三区精品不卡| 搡老岳熟女国产| 亚洲一卡2卡3卡4卡5卡精品中文| 在线观看66精品国产| 国产一区二区三区在线臀色熟女 | 制服诱惑二区| 又紧又爽又黄一区二区| 国产成人精品无人区| 啦啦啦视频在线资源免费观看| 嫁个100分男人电影在线观看| 一本—道久久a久久精品蜜桃钙片| 一区二区三区国产精品乱码| 一进一出好大好爽视频| 国产成人欧美在线观看 | 国产一卡二卡三卡精品| 熟女少妇亚洲综合色aaa.| 日韩免费av在线播放| 亚洲精华国产精华精| 精品卡一卡二卡四卡免费| 国产精品久久久人人做人人爽| 99久久精品国产亚洲精品| 欧美成人午夜精品| av超薄肉色丝袜交足视频| 亚洲国产欧美网| 午夜福利,免费看| 欧美成人免费av一区二区三区 | 精品少妇一区二区三区视频日本电影| 欧美老熟妇乱子伦牲交| 十八禁网站网址无遮挡| 另类亚洲欧美激情| cao死你这个sao货| 国产精品免费大片| 老熟妇乱子伦视频在线观看| 一区二区日韩欧美中文字幕| av超薄肉色丝袜交足视频| 亚洲精品国产色婷婷电影| 日韩一区二区三区影片| 亚洲精品久久成人aⅴ小说| 男女之事视频高清在线观看| 两人在一起打扑克的视频| 黄色毛片三级朝国网站| 免费看a级黄色片| 国产精品av久久久久免费| 亚洲伊人久久精品综合| 91九色精品人成在线观看| 久久国产精品男人的天堂亚洲| 亚洲国产精品一区二区三区在线| 高清av免费在线| 国产精品99久久99久久久不卡| 免费在线观看完整版高清| 国产成人欧美在线观看 | 男女无遮挡免费网站观看| 亚洲人成伊人成综合网2020| 老司机靠b影院| 亚洲一区二区三区欧美精品| 老司机在亚洲福利影院| 男女之事视频高清在线观看| 在线观看舔阴道视频| 1024香蕉在线观看| 久久久国产一区二区| 亚洲少妇的诱惑av| 久久这里只有精品19| 日本黄色视频三级网站网址 | 高清av免费在线| 新久久久久国产一级毛片| tocl精华| 日韩中文字幕欧美一区二区| 夜夜爽天天搞| 超碰成人久久| 中文字幕人妻丝袜制服| 99国产精品99久久久久| 国产三级黄色录像| 久久 成人 亚洲| 免费在线观看完整版高清| 夫妻午夜视频| 日韩欧美一区视频在线观看| 国产区一区二久久| 中文字幕制服av| 国产精品成人在线| 九色亚洲精品在线播放| 久久久久久久久久久久大奶| 成年版毛片免费区| 免费女性裸体啪啪无遮挡网站| 亚洲中文日韩欧美视频| 国产午夜精品久久久久久| 久久人人爽av亚洲精品天堂| 欧美激情 高清一区二区三区| 免费久久久久久久精品成人欧美视频| 免费少妇av软件| 国产97色在线日韩免费| 亚洲成人免费电影在线观看| 人妻 亚洲 视频| 妹子高潮喷水视频| 日本欧美视频一区| 亚洲av日韩在线播放| 国产成人av教育| 黄色毛片三级朝国网站| 日韩精品免费视频一区二区三区| 国产黄频视频在线观看| 看免费av毛片| 热99久久久久精品小说推荐| 亚洲人成伊人成综合网2020| 欧美精品啪啪一区二区三区| 久久久欧美国产精品| 久久久国产成人免费| 王馨瑶露胸无遮挡在线观看| 久久国产精品男人的天堂亚洲| 久久精品成人免费网站| 国产99久久九九免费精品| 精品亚洲乱码少妇综合久久| 高清黄色对白视频在线免费看| 一级片'在线观看视频| 日韩中文字幕欧美一区二区| 亚洲中文av在线| 可以免费在线观看a视频的电影网站| av免费在线观看网站| 欧美日本中文国产一区发布| 99久久精品国产亚洲精品| 黄色视频在线播放观看不卡| 老汉色av国产亚洲站长工具| 亚洲第一欧美日韩一区二区三区 | 国产区一区二久久| 国产精品熟女久久久久浪| 一进一出好大好爽视频| 操出白浆在线播放| 亚洲专区字幕在线| 亚洲男人天堂网一区| 亚洲成国产人片在线观看| 国产一区二区三区视频了| 国产亚洲精品久久久久5区| 黑人欧美特级aaaaaa片| 精品亚洲成国产av| 成人手机av| 我要看黄色一级片免费的| 国产伦理片在线播放av一区| 久久久久久亚洲精品国产蜜桃av| 少妇 在线观看| 国产一区二区三区在线臀色熟女 | 在线天堂中文资源库| 国产成人av激情在线播放| a级片在线免费高清观看视频| 伦理电影免费视频| 亚洲第一青青草原| 国产一区二区 视频在线| 亚洲成人国产一区在线观看| 色视频在线一区二区三区| a级片在线免费高清观看视频| 久久午夜综合久久蜜桃| 美女高潮喷水抽搐中文字幕| 91老司机精品| 国产一区二区激情短视频| 日日摸夜夜添夜夜添小说| 欧美日本中文国产一区发布| 国产精品电影一区二区三区 | 亚洲人成电影免费在线| 亚洲精品在线观看二区| 成人国产av品久久久| 在线观看www视频免费| 青草久久国产| 亚洲专区中文字幕在线| e午夜精品久久久久久久| 一个人免费看片子| 国产激情久久老熟女| 久热这里只有精品99| 亚洲精品国产色婷婷电影| 18禁国产床啪视频网站| 欧美精品av麻豆av| 精品人妻熟女毛片av久久网站| 亚洲色图综合在线观看| 大陆偷拍与自拍| 亚洲专区字幕在线| 电影成人av| 欧美成人午夜精品| 极品少妇高潮喷水抽搐| 日本五十路高清| 国产精品免费一区二区三区在线 | 99久久人妻综合| 国产精品久久久av美女十八| 老汉色∧v一级毛片| 午夜两性在线视频| videos熟女内射| 热99久久久久精品小说推荐| 国产伦人伦偷精品视频| e午夜精品久久久久久久| 亚洲国产欧美网| 精品国产亚洲在线| 午夜福利一区二区在线看| 亚洲av日韩精品久久久久久密| 久久天堂一区二区三区四区| 欧美在线一区亚洲| aaaaa片日本免费| 免费在线观看日本一区| 亚洲精品成人av观看孕妇| 免费看a级黄色片| 成人免费观看视频高清| 操出白浆在线播放| e午夜精品久久久久久久| xxxhd国产人妻xxx| 国产老妇伦熟女老妇高清| 在线观看一区二区三区激情| 国产精品自产拍在线观看55亚洲 | 中文欧美无线码| 99re在线观看精品视频| 国产精品98久久久久久宅男小说| www.精华液| 黄片大片在线免费观看| 天堂动漫精品| 亚洲欧美色中文字幕在线| 亚洲成av片中文字幕在线观看| 亚洲欧美一区二区三区黑人| tocl精华| 一级片'在线观看视频| 久久精品亚洲熟妇少妇任你| 精品亚洲乱码少妇综合久久| 国产三级黄色录像| 丝袜人妻中文字幕| 法律面前人人平等表现在哪些方面| 一本综合久久免费| 中文字幕制服av| 十八禁网站免费在线| 最近最新免费中文字幕在线| www.熟女人妻精品国产| 欧美日韩黄片免| 性高湖久久久久久久久免费观看| 99热网站在线观看| 国产精品久久久久久精品电影小说| 香蕉国产在线看| 精品久久久久久电影网| 精品国产乱子伦一区二区三区| 成人特级黄色片久久久久久久 | 一区二区三区乱码不卡18| 日韩制服丝袜自拍偷拍| av有码第一页| 三级毛片av免费| 真人做人爱边吃奶动态| 国产视频一区二区在线看| 一区二区日韩欧美中文字幕| 肉色欧美久久久久久久蜜桃| 免费不卡黄色视频| 咕卡用的链子| 日韩免费av在线播放| 日韩三级视频一区二区三区| 超色免费av| 男女高潮啪啪啪动态图| 色婷婷久久久亚洲欧美| 国产又色又爽无遮挡免费看| 精品福利永久在线观看| 国产精品久久久久久精品古装| 午夜福利免费观看在线| 精品久久蜜臀av无| 伊人久久大香线蕉亚洲五| 亚洲国产av新网站| 伊人久久大香线蕉亚洲五| 久久久久久亚洲精品国产蜜桃av| 97在线人人人人妻| 国产精品 欧美亚洲| 成年人黄色毛片网站| 动漫黄色视频在线观看| 一区在线观看完整版| 久久精品国产a三级三级三级| 成人国产av品久久久| 久久中文字幕一级| 99国产精品一区二区三区| 视频在线观看一区二区三区| 999久久久国产精品视频| 人人妻人人澡人人看| 在线观看一区二区三区激情| 欧美精品av麻豆av| 色94色欧美一区二区| 久久久久网色| 后天国语完整版免费观看| 亚洲 国产 在线| 国产成人免费观看mmmm| 另类亚洲欧美激情| 精品一区二区三区av网在线观看 | 91大片在线观看| 亚洲av日韩精品久久久久久密| 欧美日韩国产mv在线观看视频| 久久久国产精品麻豆| 99国产精品一区二区三区| 一级片免费观看大全| 不卡一级毛片| 国产黄色免费在线视频| 中文字幕高清在线视频| 老熟女久久久| 午夜免费成人在线视频| 午夜福利在线免费观看网站| 多毛熟女@视频| 亚洲全国av大片| 少妇裸体淫交视频免费看高清 | 欧美日韩亚洲国产一区二区在线观看 | 90打野战视频偷拍视频| 99国产精品免费福利视频| 久久亚洲真实| 黑人欧美特级aaaaaa片| 成人特级黄色片久久久久久久 | 捣出白浆h1v1| 亚洲综合色网址| 欧美 日韩 精品 国产| 亚洲精品自拍成人| 热99国产精品久久久久久7| videosex国产| 最新美女视频免费是黄的| 欧美精品高潮呻吟av久久| 69精品国产乱码久久久| 欧美成人午夜精品| 男女下面插进去视频免费观看| 99久久99久久久精品蜜桃| 亚洲久久久国产精品| 精品国产一区二区久久| 亚洲欧美激情在线| 啪啪无遮挡十八禁网站| 久久婷婷成人综合色麻豆| 老司机午夜福利在线观看视频 | 国产精品 欧美亚洲| 亚洲精品国产精品久久久不卡| 夜夜骑夜夜射夜夜干| 日韩大码丰满熟妇| 丁香六月天网| 两个人看的免费小视频| 国产伦人伦偷精品视频| 国产成人欧美| 2018国产大陆天天弄谢| 五月开心婷婷网| 亚洲欧美精品综合一区二区三区| 精品国产一区二区久久| 国产不卡av网站在线观看| 午夜91福利影院| 欧美日韩成人在线一区二区| 波多野结衣av一区二区av| 国产高清国产精品国产三级| 成年人免费黄色播放视频| 色老头精品视频在线观看| 亚洲五月婷婷丁香| 91字幕亚洲| 日韩大片免费观看网站| 日韩视频在线欧美| 夫妻午夜视频| 黄色视频不卡| 欧美精品亚洲一区二区| 99精品久久久久人妻精品| 男人舔女人的私密视频| 在线av久久热| 日本精品一区二区三区蜜桃| 色婷婷久久久亚洲欧美| 操出白浆在线播放| 日韩欧美一区二区三区在线观看 | 一级a爱视频在线免费观看| 国产欧美日韩综合在线一区二区| 80岁老熟妇乱子伦牲交| 91九色精品人成在线观看| 汤姆久久久久久久影院中文字幕| 亚洲成人免费av在线播放| 淫妇啪啪啪对白视频| 国产成人精品无人区| 91字幕亚洲| 在线播放国产精品三级| 俄罗斯特黄特色一大片| 国产精品久久久久久精品古装| av网站在线播放免费| 成人亚洲精品一区在线观看| 午夜两性在线视频| 久久久久久亚洲精品国产蜜桃av| 99re6热这里在线精品视频| 国产精品国产高清国产av | 黑人操中国人逼视频| 国产色视频综合| 国产精品免费一区二区三区在线 | 91大片在线观看| 亚洲av第一区精品v没综合| 在线亚洲精品国产二区图片欧美| svipshipincom国产片| 国产精品.久久久| 亚洲精品一卡2卡三卡4卡5卡| 桃花免费在线播放| 亚洲精品美女久久久久99蜜臀| 国产老妇伦熟女老妇高清| 久久久精品国产亚洲av高清涩受| 欧美激情 高清一区二区三区| 色婷婷久久久亚洲欧美| 日本wwww免费看| 欧美老熟妇乱子伦牲交| 两性午夜刺激爽爽歪歪视频在线观看 | 欧美变态另类bdsm刘玥| 国产在视频线精品| 精品熟女少妇八av免费久了| 欧美午夜高清在线| 亚洲va日本ⅴa欧美va伊人久久|