From 1af86034e710bb6b471e3dda43d59eee3df4e88f Mon Sep 17 00:00:00 2001 From: arcan1s Date: Sat, 27 Jul 2013 23:38:42 +0400 Subject: [PATCH] Added documentation for statgen --- agl/AUTHORS | 3 + agl/CMakeLists.txt | 31 + agl/COPYING | 341 +++ agl/INSTALL | 14 + agl/agl.cmake | 22 + agl/src/CMakeLists.txt | 61 + agl/src/Makefile | 21 + agl/src/add_main.c | 53 + agl/src/coords.c | 338 +++ agl/src/main.c | 203 ++ agl/src/messages.c | 99 + agl/src/print_struct.c | 58 + agl/src/read_agl.c | 33 + agl/src/select_mol.c | 59 + {agl => agl_v3}/AGL for v.3.c | 0 {agl => agl_v3}/input_agl.dat | 0 {agl => agl_v3}/meth.txt | 0 envir/src/CMakeLists.txt | 14 +- envir/src/add_main.c | 2 +- envir/{include/envir => src}/add_main.h | 0 envir/src/coords.c | 31 +- envir/{include/envir => src}/coords.h | 0 envir/src/envir_search.c | 1 + envir/{include/envir => src}/envir_search.h | 0 envir/src/main.c | 12 +- envir/{include/envir => src}/messages.h | 0 envir/{include/envir => src}/print_struct.h | 0 envir/{include/envir => src}/set_center.h | 0 statgen/CMakeLists.txt | 5 +- statgen/about.dox | 61 + statgen/logo.png | Bin 0 -> 3478 bytes statgen/src/CMakeLists.txt | 51 +- statgen/src/add_main.c | 100 +- statgen/{include/statgen => src}/add_main.h | 17 + statgen/src/coords.c | 134 +- statgen/{include/statgen => src}/coords.h | 8 + statgen/src/graph.c | 106 +- statgen/{include/statgen => src}/graph.h | 17 + statgen/src/int2char.c | 20 +- statgen/{include/statgen => src}/int2char.h | 8 + statgen/src/main.c | 122 +- statgen/src/messages.c | 24 +- statgen/{include/statgen => src}/messages.h | 8 + statgen/src/stat_print.c | 85 +- statgen/{include/statgen => src}/stat_print.h | 8 + statgen/src/stat_select.c | 56 +- .../{include/statgen => src}/stat_select.h | 8 + statgen/src/stat_sort.c | 47 +- statgen/{include/statgen => src}/stat_sort.h | 8 + statgen/src/summary_stat.c | 52 +- .../{include/statgen => src}/summary_stat.h | 8 + statgen/statgen.cmake | 22 +- statgen/statgen.doxygen | 1890 +++++++++++++++++ statgen/statgen.pdf | Bin 0 -> 146596 bytes 54 files changed, 3953 insertions(+), 308 deletions(-) create mode 100644 agl/AUTHORS create mode 100644 agl/CMakeLists.txt create mode 100644 agl/COPYING create mode 100644 agl/INSTALL create mode 100644 agl/agl.cmake create mode 100644 agl/src/CMakeLists.txt create mode 100644 agl/src/Makefile create mode 100644 agl/src/add_main.c create mode 100644 agl/src/coords.c create mode 100644 agl/src/main.c create mode 100644 agl/src/messages.c create mode 100644 agl/src/print_struct.c create mode 100644 agl/src/read_agl.c create mode 100644 agl/src/select_mol.c rename {agl => agl_v3}/AGL for v.3.c (100%) rename {agl => agl_v3}/input_agl.dat (100%) rename {agl => agl_v3}/meth.txt (100%) rename envir/{include/envir => src}/add_main.h (100%) rename envir/{include/envir => src}/coords.h (100%) rename envir/{include/envir => src}/envir_search.h (100%) rename envir/{include/envir => src}/messages.h (100%) rename envir/{include/envir => src}/print_struct.h (100%) rename envir/{include/envir => src}/set_center.h (100%) create mode 100644 statgen/about.dox create mode 100755 statgen/logo.png rename statgen/{include/statgen => src}/add_main.h (81%) rename statgen/{include/statgen => src}/coords.h (82%) rename statgen/{include/statgen => src}/graph.h (65%) rename statgen/{include/statgen => src}/int2char.h (71%) rename statgen/{include/statgen => src}/messages.h (74%) rename statgen/{include/statgen => src}/stat_print.h (82%) rename statgen/{include/statgen => src}/stat_select.h (81%) rename statgen/{include/statgen => src}/stat_sort.h (74%) rename statgen/{include/statgen => src}/summary_stat.h (79%) create mode 100644 statgen/statgen.doxygen create mode 100644 statgen/statgen.pdf diff --git a/agl/AUTHORS b/agl/AUTHORS new file mode 100644 index 0000000..2c0d60a --- /dev/null +++ b/agl/AUTHORS @@ -0,0 +1,3 @@ +Current developers: + +Evgeniy Alekseev aka arcanis diff --git a/agl/CMakeLists.txt b/agl/CMakeLists.txt new file mode 100644 index 0000000..4d47440 --- /dev/null +++ b/agl/CMakeLists.txt @@ -0,0 +1,31 @@ +cmake_minimum_required (VERSION 2.8) + +cmake_policy(SET CMP0011 NEW) +cmake_policy(SET CMP0003 OLD) + +# set project name +set (PROJECT agl) +# set additional cmake file +include (${PROJECT}.cmake) + + +# additional options +OPTION (WITH_DEBUG_MODE "Build with debug mode" OFF) +OPTION (ADD_INCLUDE "Add include files" OFF) + +# set libraries +set (LIBRARIES) + foreach (LIBRARY ${LIBRARIES}) + find_library ("${LIBRARY}_FOUND" ${LIBRARY}) + message (STATUS "Check the ${LIBRARY} is installed: " ${${LIBRARY}_FOUND}) + if ("${${LIBRARY}_FOUND}" STREQUAL "${LIBRARY}_FOUND-NOTFOUND") + message (STATUS "Adding library sources") + add_subdirectory (../${LIBRARY} lib/${LIBRARY}) + endif () + endforeach () + +# additional targets +set (TARGETS "") +set (HEADERS "") + +add_subdirectory (src) \ No newline at end of file diff --git a/agl/COPYING b/agl/COPYING new file mode 100644 index 0000000..eb47f5d --- /dev/null +++ b/agl/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/agl/INSTALL b/agl/INSTALL new file mode 100644 index 0000000..cbd6143 --- /dev/null +++ b/agl/INSTALL @@ -0,0 +1,14 @@ +CMakeFlags: + -DCMAKE_INSTALL_PREFIX= - install prefix (default is '/usr/local') + -DADD_INCLUDE=1 - install include files (default is disable) + -DWITH_DEBUG_MODE=1 - compile with flag '-g' (default is disable) + +Install for Linux: + mkdir build && cd build + cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release ../ + make + make install +Install for Windows: + create project file using 'cmake' + compile project +You may also download compiled executable file for Win_x86. diff --git a/agl/agl.cmake b/agl/agl.cmake new file mode 100644 index 0000000..427f0d4 --- /dev/null +++ b/agl/agl.cmake @@ -0,0 +1,22 @@ +# set directories +set (${PROJECT}_BINARY_DIR bin) +set (${PROJECT}_SOURCE_DIR src:include) +set (${PROJECT}_LIB_DIR lib) + +set (CMAKE_INCLUDE_PATH ${${PROJECT}_SOURCE_DIR}) +set (CMAKE_LIBRARY_PATH ${${PROJECT}_LIB_DIR}) +set (EXECUTABLE_OUTPUT_PATH ${${PROJECT}_BINARY_DIR}) +set (CMAKE_VERBOSE_MAKEFILE ON) + +if ( WITH_DEBUG_MODE ) + ADD_DEFINITIONS ( -DDEBUG_MODE=1 ) +endif () + +if ( CMAKE_COMPILER_IS_GNUCXX ) + set (ADD_CXX_FLAGS "-Wall") + set (CMAKE_CXX_FLAGS "-O0 ${ADD_CXX_FLAGS}") + set (CMAKE_CXX_FLAGS_DEBUG "-g -O0") + set (CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") +else () + message (STATUS "Flags not enabled") +endif () \ No newline at end of file diff --git a/agl/src/CMakeLists.txt b/agl/src/CMakeLists.txt new file mode 100644 index 0000000..b996fce --- /dev/null +++ b/agl/src/CMakeLists.txt @@ -0,0 +1,61 @@ +set ("${PROJECT}_VERSION_MAJOR" 1) +set ("${PROJECT}_VERSION_MINOR" 0) +set ("${PROJECT}_VERSION_PATCH" 1) +set ("${PROJECT}_VERSION" ${${PROJECT}_VERSION_MAJOR}.${${PROJECT}_VERSION_MINOR}.${${PROJECT}_VERSION_PATCH}) + +message (STATUS ${${PROJECT}_VERSION}) + +## set files +# main files +set (MAIN_SOURCES main) +# not public srcs +set (PRIVATE_CLASSES) +# headers only files +SET (HEADERS_ONLY) +# public srcs +set (PUBLIC_CLASSES add_main + coords + envir_search + messages + print_struct + set_center) +# public headers +set (PUBLIC_HEADERS) +# shared libraries +if (CMAKE_COMPILER_IS_GNUCXX) + set (ADDITIONAL_LIB m) +else () + set (ADDITIONAL_LIB) +endif() +set (SOURCES) + +# append list +foreach (class ${PRIVATE_CLASSES}) + LIST (APPEND SOURCES ${class}.c) + LIST (APPEND HEADERS ${class}.h) +endforeach () + +foreach (class ${HEADERS_ONLY}) + LIST (APPEND HEADERS ${class}.h) +endforeach () + +foreach (class ${PUBLIC_CLASSES}) + LIST (APPEND SOURCES ${class}.c) + LIST (APPEND HEADERS ../include/${PROJECT}/${class}.h) + LIST (APPEND PUBLIC_HEADERS ../include/${PROJECT}/${class}.h) +endforeach () + +# message +message (STATUS "SOURCES: ${SOURCES}") + +# link libraries and compile +add_executable (${PROJECT} ${MAIN_SOURCES} ${SOURCES}) +target_link_libraries (${PROJECT} ${ADDITIONAL_LIB}) + +# install properties +INSTALL (TARGETS ${PROJECT} + DESTINATION bin) +if (ADD_INCLUDE) + INSTALL (FILES ${PUBLIC_HEADERS} + DESTINATION include/${PROJECT}) +endif () \ No newline at end of file diff --git a/agl/src/Makefile b/agl/src/Makefile new file mode 100644 index 0000000..32b485f --- /dev/null +++ b/agl/src/Makefile @@ -0,0 +1,21 @@ +PROJECT=AGL + +CC=gcc +CFLAGS=-c -Wall -fPIC +LDFLAGS=-lm +SOURCES_DIR=src +SOURCES=main.c add_main.c coords.c messages.c print_struct.c set_center.c read_agl.c +OBJECTS=$(SOURCES:.c=.o) +EXECUTABLE=agl + +$(PROJECT): $(SOURCES) $(EXECUTABLE) + +$(EXECUTABLE): $(OBJECTS) + $(CC) $(LDFLAGS) $(OBJECTS) -o $@ + +.c.o: + $(CC) $(CFLAGS) $< -o $@ + +clean: + rm -f *.o + diff --git a/agl/src/add_main.c b/agl/src/add_main.c new file mode 100644 index 0000000..baab2ca --- /dev/null +++ b/agl/src/add_main.c @@ -0,0 +1,53 @@ +/* Additional library for main.c (agl) + */ + +#include + +// #include "messages.h" + + +int error_checking (const char *aglinp, const float *cell, const char *input, + const char *output) +{ + if ((cell[0] == 0.0) || (cell[1] == 0.0) || (cell[2] == 0.0)) + return 11; + if (input[0] == '#') + return 12; + if (output[0] == '#') + return 13; + if (aglinp[0] == '#') + return 14; + + return 0; +} + + +int print_message (const int quiet, FILE *std_output, const int log, FILE *f_log, + const int mode, const char *str) +{ + if ((quiet != 1) && (std_output != stderr)) + message (0, mode, str, std_output); + if (log == 1) + message (1, mode, str, f_log); + + return 0; +} + + +int set_defaults (char aglinp, float *cell, char *input, int *log, int *num_of_mol, + char *output, int *quiet, float *rad) +{ + int i; + + aglinp[0] = '#'; + for (i=0; i<3; i++) + cell[i] = 0.0; + input[0] = '#'; + *log = 0; + *num_of_mol = 1; + output[0] = '#'; + *quiet = 0; + *rad = 6.0; + + return 0; +} \ No newline at end of file diff --git a/agl/src/coords.c b/agl/src/coords.c new file mode 100644 index 0000000..636dbf2 --- /dev/null +++ b/agl/src/coords.c @@ -0,0 +1,338 @@ +/* Library for reading coordinates from input file + * + * Usage: + * reading_coords (mode, filename, type_interaction, labels, + * cell, &number_of_molecules, &number_of_atoms, true_label_molecule, + * label_molecule, type_atoms, coords, char_type_atoms) + */ + +#include +#include + + +int reading_coords (const int mode, const char *filename, const int type_inter, + const int *label_atom, const float *cell, int *num_mol, + int *num_atoms, int *true_label_mol, int *label_mol, + int *type_atoms, float *coords, char *ch_type_atoms) +/* filename - name of file with coordinates + * type_inter - type interaction (number of molecules for interaction) + * (number of molecules in aglomerate for agl) + * label_atom - types of atom for interaction + * (molecules in aglomerate for agl) + * cell - cell dimension + * num_mol - number of molecules for writing coordinates + * num_atoms - number of atoms for writing coordinates + * true_label_mol - massive of true numbers of molecule for atoms + * label_mol - massive of numbers of molecule for atoms + * type_atoms - massive of atom types for atoms + * coords - massive of coordinates + * ch_type_atoms - massive of char types for atoms + */ +{ + char at_symb[32], file_string[256]; + int atoms, cur_at_num, cur_at_type, cur_mol, i, j, tr_num_atoms, ref_mol, x, y; + float cur_coords[3], *not_tr_coords, ref[3]; + FILE *inp; +/* cur_*, at_symb - temp variables + * file_string - temp string variable + * atoms - total number of atoms in system + * tr_num_atoms - number of translated atoms for writing coordinates (m.b. 8*num_atoms) + * ref_mol - number of molecule for reference + * not_tr_coords - not translated coordinates + * ref - coordinates of reference molecule + * inp - file with input data + */ + + *num_atoms = 0; + *num_mol = 0; + +// Reading file + inp = fopen (filename, "r"); + if (inp == NULL) + return 1; + + ref_mol = -1; + fscanf (inp, "%i", &atoms); + not_tr_coords = (float *) malloc (3 * atoms * sizeof (float)); + fgets (file_string, 256, inp); + for (i=0; i= 0.0) +// if xyz >= 0.0 A + { + for (j=0; j<3; j++) + if (j == x) + coords[3*tr_num_atoms+j] = not_tr_coords[3*i+j] - cell[j]; + else + coords[3*tr_num_atoms+j] = not_tr_coords[3*i+j]; + + label_mol[tr_num_atoms] = label_mol[i]; + type_atoms[tr_num_atoms] = type_atoms[i]; + tr_num_atoms++; + } + else +// if xyz < 0.0 A + { + for (j=0; j<3; j++) + if (j == x) + coords[3*tr_num_atoms+j] = not_tr_coords[3*i+j] + cell[j]; + else + coords[3*tr_num_atoms+j] = not_tr_coords[3*i+j]; + + label_mol[tr_num_atoms] = label_mol[i]; + type_atoms[tr_num_atoms] = type_atoms[i]; + tr_num_atoms++; + } + } + + for (x=0; x<3; x++) + { + for (y=x+1; y<3; y++) + { + if ((ref[x] >= 0.0) && (ref[y] >= 0.0)) +// if xyz and xyz >= 0.0 A + { + for (j=0; j<3; j++) + if ((j == x) || (j == y)) + coords[3*tr_num_atoms+j] = not_tr_coords[3*i+j] - cell[j]; + else + coords[3*tr_num_atoms+j] = not_tr_coords[3*i+j]; + + label_mol[tr_num_atoms] = label_mol[i]; + type_atoms[tr_num_atoms] = type_atoms[i]; + tr_num_atoms++; + } + + if ((ref[x] < 0.0) && (ref[y] < 0.0)) +// if xyz and xyz < 0.0 A + { + for (j=0; j<3; j++) + if ((j == x) || (j == y)) + coords[3*tr_num_atoms+j] = not_tr_coords[3*i+j] + cell[j]; + else + coords[3*tr_num_atoms+j] = not_tr_coords[3*i+j]; + + label_mol[tr_num_atoms] = label_mol[i]; + type_atoms[tr_num_atoms] = type_atoms[i]; + tr_num_atoms++; + } + } + + for (y=0; y<3; y++) + if ((ref[x] < 0.0) && (ref[y] >= 0.0)) +// if xyz OR xyz >= 0.0 + { + for (j=0; j<3; j++) + { + if (j == x) + coords[3*tr_num_atoms+j] = not_tr_coords[3*i+j] + cell[j]; + if (j == y) + coords[3*tr_num_atoms+j] = not_tr_coords[3*i+j] - cell[j]; + if ((j != x) && (j != y)) + coords[3*tr_num_atoms+j] = not_tr_coords[3*i+j]; + } + + label_mol[tr_num_atoms] = label_mol[i]; + type_atoms[tr_num_atoms] = type_atoms[i]; + tr_num_atoms++; + } + } + + if ((ref[0] >= 0.0) && (ref[1] >= 0.0) && (ref[2] >= 0.0)) +// if x and y and z >= 0.0 A + { + coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] - cell[0]; + coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] - cell[1]; + coords[3*tr_num_atoms+2] = not_tr_coords[3*i+2] - cell[2]; + + label_mol[tr_num_atoms] = label_mol[i]; + type_atoms[tr_num_atoms] = type_atoms[i]; + tr_num_atoms++; + } + + if ((ref[0] >= 0.0) && (ref[1] >= 0.0) && (ref[2] < 0.0)) +// if x and y >= 0.0 A and z < 0.0 A + { + coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] - cell[0]; + coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] - cell[1]; + coords[3*tr_num_atoms+2] = not_tr_coords[3*i+2] + cell[2]; + + label_mol[tr_num_atoms] = label_mol[i]; + type_atoms[tr_num_atoms] = type_atoms[i]; + tr_num_atoms++; + } + + if ((ref[0] >= 0.0) && (ref[1] < 0.0) && (ref[2] >= 0.0)) +// if x and z >= 0.0 A and y < 0.0 A + { + coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] - cell[0]; + coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] + cell[1]; + coords[3*tr_num_atoms+2] = not_tr_coords[3*i+2] - cell[2]; + + label_mol[tr_num_atoms] = label_mol[i]; + type_atoms[tr_num_atoms] = type_atoms[i]; + tr_num_atoms++; + } + + if ((ref[0] < 0.0) && (ref[1] >= 0.0) && (ref[2] >= 0.0)) +// if y and z >= 0.0 A and x < 0.0 A + { + coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] + cell[0]; + coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] - cell[1]; + coords[3*tr_num_atoms+2] = not_tr_coords[3*i+2] - cell[2]; + + label_mol[tr_num_atoms] = label_mol[i]; + type_atoms[tr_num_atoms] = type_atoms[i]; + tr_num_atoms++; + } + + if ((ref[0] < 0.0) && (ref[1] < 0.0) && (ref[2] >= 0.0)) +// if x and y < 0.0 A and z >= 0.0 A + { + coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] + cell[0]; + coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] + cell[1]; + coords[3*tr_num_atoms+2] = not_tr_coords[3*i+2] - cell[2]; + + label_mol[tr_num_atoms] = label_mol[i]; + type_atoms[tr_num_atoms] = type_atoms[i]; + tr_num_atoms++; + } + + if ((ref[0] < 0.0) && (ref[1] >= 0.0) && (ref[2] < 0.0)) +// if x and z < 0.0 A and y >= 0.0 A + { + coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] + cell[0]; + coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] - cell[1]; + coords[3*tr_num_atoms+2] = not_tr_coords[3*i+2] + cell[2]; + + label_mol[tr_num_atoms] = label_mol[i]; + type_atoms[tr_num_atoms] = type_atoms[i]; + tr_num_atoms++; + } + + if ((ref[0] >= 0.0) && (ref[1] < 0.0) && (ref[2] < 0.0)) +// if x >= 0.0 A and y and z < 0.0 A + { + coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] - cell[0]; + coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] + cell[1]; + coords[3*tr_num_atoms+2] = not_tr_coords[3*i+2] + cell[2]; + + label_mol[tr_num_atoms] = label_mol[i]; + type_atoms[tr_num_atoms] = type_atoms[i]; + tr_num_atoms++; + } + + if ((ref[0] < 0.0) && (ref[1] < 0.0) && (ref[2] < 0.0)) +// if x and y and z < 0.0 A + { + coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] + cell[0]; + coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] + cell[1]; + coords[3*tr_num_atoms+2] = not_tr_coords[3*i+2] + cell[2]; + + label_mol[tr_num_atoms] = label_mol[i]; + type_atoms[tr_num_atoms] = type_atoms[i]; + tr_num_atoms++; + } + } + +// free memory + free (not_tr_coords); + + return 0; +} \ No newline at end of file diff --git a/agl/src/main.c b/agl/src/main.c new file mode 100644 index 0000000..1759408 --- /dev/null +++ b/agl/src/main.c @@ -0,0 +1,203 @@ +#include +#include +#include +#include + +// #include "add_main.h" +// #include "coords.h" +// #include "messages.h" +// #include "print_struct.h" +// #include "read_agl.h" + + +int main(int argc, char *argv[]) +{ + char tmp_str[2048]; + int error, i, j, *tmp_int; + FILE *f_inp, *f_log; + + char aglinp[256], *ch_type_atoms, input[256], logfile[256], output[256]; + float cell[3], *coords; + int *label_mol, log, num_atoms, num_mol, num_needed_mol, *needed_mol, quiet, + *true_label_mol; +/* ch_type_atoms - massive of char types for atoms + * aglinp - input file with aglomerate name + * input - input file name + * logfile - log file name + * output - output file name + * + * cell - cell dimension + * coords - massive of coordinates + * + * label_mol - massive of numbers of molecule for atoms + * log - status of log-mode + * num_atoms - number of atoms for writing coordinates + * num_mol - number of molecules for writing coordinates + * num_needed_mol - number of needed molecules + * needed_mol - massive of needed molecules + * quiet - status of quiet-mode + * true_label_mol - massive of true numbers of molecule for atoms + */ + + set_defaults (aglinp, cell, input, &log, &num_of_mol, output, &quiet, &rad); + + for (i=1; i +#include + + +int message (const int log, const int mode, const char *text, FILE *output) +/* mode - number of message + * text - additional text + */ +{ + char out[4096]; + + if (log == 1) + { + char time_str[256]; + time_t t = time (NULL); + struct tm* aTm = localtime (&t); + sprintf (time_str, "[%04d-%02d-%02d %02d:%02d:%02d] [%2i]: ", aTm->tm_year+1900, + aTm->tm_mon+1, aTm->tm_mday, aTm->tm_hour, aTm->tm_min, aTm->tm_sec, mode); + fputs (time_str, output); + } + + switch (mode) + { + case 0: + sprintf (out, "Starting program: '%s'\n", text); + break; + case 1: + sprintf (out, "Checking errors\n"); + break; + case 2: + sprintf (out, "Errors are not detected\n"); + break; + case 3: + sprintf (out, "Initialization of variables from file '%s'\n", text); + break; + case 4: + break; + case 5: + sprintf (out, "Initial parametrs: \n%s", text); + break; + case 6: + sprintf (out, "Processing\n"); + break; + case 7: + sprintf (out, "Open file: '%s'\n", text); + break; + case 8: + sprintf (out, "%s", text); + break; + case 9: + sprintf (out, "%6cSize of variables was changed successfully\n", ' '); + break; + case 10: + sprintf (out, "%6cConnectivity matrix was created successfully\n", ' '); + break; + case 11: + sprintf (out, "%6cConnectivity matrix was processed successfully\n", ' '); + break; + case 12: + sprintf (out, "%6cResult was printed to file '%s' successfully\n", ' ', text); + break; + case 13: + sprintf (out, "End of processing\n"); + break; + case 14: + sprintf (out, "Printing summary statistic to file '%s'\n", text); + break; + case 15: + sprintf (out, "Free memory\n"); + break; + case 16: + sprintf (out, "Exiting without errors\n"); + break; + case 17: + sprintf (out, "Something wrong!\nSee '%s -h' for more details\n", text); + break; + case 18: + sprintf (out, "File '%s' not found\nError\n", text); + break; + case 19: + sprintf (out, "Memory error\n"); + break; + case 20: + sprintf (out, "%6cCenter of molecules was set successfully\n", ' '); + break; + case 21: + sprintf (out, "%6cEnvironment was selected successfully\n", ' '); + break; + } + + fputs (out, output); + return 0; +} \ No newline at end of file diff --git a/agl/src/print_struct.c b/agl/src/print_struct.c new file mode 100644 index 0000000..c1e6487 --- /dev/null +++ b/agl/src/print_struct.c @@ -0,0 +1,58 @@ +/* Library for printing structure to pdb file + * + * Usage: + * print_structure (output, num_needed_mol, needed_mol, num_atoms, + * label_mol, char_type_atoms, coords) + */ + +#include + + +int print_structure (const char *output, const int num_needed_mol, const int *needed_mol, + const int num_atoms, const int *label_mol, const char *ch_type_atoms, + const float *coords) +/* output - output file name + * num_needed_mol - number of needed molecules + * needed_mol - massive of needed molecules + * num_atoms - number of atoms + * label_mol - massive of numbers of molecule for atoms + * ch_type_atoms - massive of char types for atoms + * coords - massive of coordinates + */ +{ + int cur_atom, cur_atom_num, cur_mol, i, j; + FILE *f_out; +/* cur_atom - current atom + * cur_atom_num - true atom number + * cur_mol - current molecule + */ + + cur_atom = 1; + f_out = fopen (output, "w"); + + for (i=0; i + + +int reading_agl (const char *aglinp, int *num_needed_mol, char *agl_class, int *needed_mol) +/* aglinp - input file with aglomerate + * num_needed_mol - number of needed molecules + * agl_class - aglomerate class + * needed_mol - massive of needed molecules + */ +{ + char connect[256], tmp_str[256]; + int i; + FILE *f_agl; + + f_agl = fopen (aglinp, "r"); + + fgets (tmp_str, 256, f_agl); + sscanf (tmp_str, "AGL=%i=%s", num_needed_mol, agl_class); + for (i=0; i<*num_needed_mol; i++) + { + fgets (tmp_str, 256, f_agl); + sscanf (tmp_str, "%i=%s", &needed_mol[i], connect); + } + fclose (f_agl); + + return 0; +} diff --git a/agl/src/select_mol.c b/agl/src/select_mol.c new file mode 100644 index 0000000..78387e3 --- /dev/null +++ b/agl/src/select_mol.c @@ -0,0 +1,59 @@ +/* Library for select molecules in translations + * + * Usage: + * + */ + +#include + + +int select_molecule (const int num_atoms, const int *label_mol, const int *true_label_mol, const float *coords, const int num_needed_mol, int *needed_mol) +{ + float r, ref[3], rmin; + int i, j, k, *old_needed_mol; + + old_needed_mol = (int *) malloc (num_needed_mol * sizeof (int)); + if (old_needed_mol == NULL) + return 1; + +// set first molecule + ref_mol = old_needed_mol[0]; + needed_mol[0] = 0; + k = 1; + for (i=0; i<3; i++) + ref[i] = coords[3*0+i]; + + for (i=1; i -// #include "messages.h" +#include "messages.h" int error_checking (const float *cell, const char *input, const char *output) diff --git a/envir/include/envir/add_main.h b/envir/src/add_main.h similarity index 100% rename from envir/include/envir/add_main.h rename to envir/src/add_main.h diff --git a/envir/src/coords.c b/envir/src/coords.c index cc8a170..636dbf2 100644 --- a/envir/src/coords.c +++ b/envir/src/coords.c @@ -15,8 +15,10 @@ int reading_coords (const int mode, const char *filename, const int type_inter, int *num_atoms, int *true_label_mol, int *label_mol, int *type_atoms, float *coords, char *ch_type_atoms) /* filename - name of file with coordinates - * type_inter - type interaction (number of molecules for interaction) - * label_atom - types of atom for interaction + * type_inter - type interaction (number of molecules for interaction) + * (number of molecules in aglomerate for agl) + * label_atom - types of atom for interaction + * (molecules in aglomerate for agl) * cell - cell dimension * num_mol - number of molecules for writing coordinates * num_atoms - number of atoms for writing coordinates @@ -83,7 +85,7 @@ int reading_coords (const int mode, const char *filename, const int type_inter, } break; case 1: -// for envir +// for envir and frad not_tr_coords[3**num_atoms+0] = cur_coords[0]; not_tr_coords[3**num_atoms+1] = cur_coords[1]; not_tr_coords[3**num_atoms+2] = cur_coords[2]; @@ -101,6 +103,29 @@ int reading_coords (const int mode, const char *filename, const int type_inter, *num_atoms = *num_atoms + 1; break; + case 2: +// for agl + for (j=0; j #include -// #include "add_main.h" -// #include "coords.h" -// #include "envir_search.h" -// #include "messages.h" -// #include "print_struct.h" -// #include "set_center.h" +#include "add_main.h" +#include "coords.h" +#include "envir_search.h" +#include "messages.h" +#include "print_struct.h" +#include "set_center.h" int main(int argc, char *argv[]) diff --git a/envir/include/envir/messages.h b/envir/src/messages.h similarity index 100% rename from envir/include/envir/messages.h rename to envir/src/messages.h diff --git a/envir/include/envir/print_struct.h b/envir/src/print_struct.h similarity index 100% rename from envir/include/envir/print_struct.h rename to envir/src/print_struct.h diff --git a/envir/include/envir/set_center.h b/envir/src/set_center.h similarity index 100% rename from envir/include/envir/set_center.h rename to envir/src/set_center.h diff --git a/statgen/CMakeLists.txt b/statgen/CMakeLists.txt index f07a7c3..17f856c 100644 --- a/statgen/CMakeLists.txt +++ b/statgen/CMakeLists.txt @@ -1,7 +1,8 @@ cmake_minimum_required (VERSION 2.8) -cmake_policy(SET CMP0011 NEW) cmake_policy(SET CMP0003 OLD) +cmake_policy(SET CMP0011 NEW) +cmake_policy(SET CMP0015 NEW) # set project name set (PROJECT statgen) @@ -28,4 +29,4 @@ set (LIBRARIES) set (TARGETS "") set (HEADERS "") -add_subdirectory (src) \ No newline at end of file +add_subdirectory (${${PROJECT}_SOURCE_DIR}) \ No newline at end of file diff --git a/statgen/about.dox b/statgen/about.dox new file mode 100644 index 0000000..9310bbf --- /dev/null +++ b/statgen/about.dox @@ -0,0 +1,61 @@ +/*! @mainpage statgen + * + * @section intro_sec Introduction + * + * Developer: + *
    + *
  • Evgeniy Alekseev aka arcanis
    + *
+ * License: + *
    + *
  • GPL + *
+ * + * @section How-To-Use How to use + * Usage: + *
+ * statgen -i INPUT -s FIRST,LAST -c X,Y,Z -a ... -r ... -o OUTPUT [ -g DEPTH ] 
+ *                                                  [ -l LOGFILE ] [ -q ] [ -h ]
+ *
+ * Parametrs:
+ *    -i          - mask of input files
+ *    -s          - trajectory steps (integer)
+ *    -c          - cell size (float), A
+ *    -a          - atom types (integer). Format: 'ATOM1' or 'ATOM1,ATOM2' or etc
+ *    -r          - criteria (float), A. Format: '0-0:2.4,0-1:3.0' means 0-0-interaction
+ *                  (<2.4 A) and 0-1 (<3.0) are needed. This flag can be used multiple times
+ *    -o          - output file name
+ *    -g          - check graph isomorphism. DEPTH is max depth for check cycles (>= 3)
+ *    -l          - log enable
+ *    -q          - quiet enable
+ *    -h          - show this help and exit
+ * 
+ * + * @page Install + * + * @section Requirements Requirements + * The application statgen requires the following external stuff: + * - cmake >= 2.8 + * - gcc >= 4.8 + * + * @section How-To How to install + * + * @subsection Linux Linux + * @code + * mkdir build && cd build + * cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release ../ + * make + * make install + * @endcode + * + * @subsection Windows Windows + * @code + * create project file using 'cmake' + * compile project + * @endcode + * You may also download compiled executable file for Win_x86. + * + * @page Changelog + * V.1.0.1 (2013-07-27) + * * initial release + */ diff --git a/statgen/logo.png b/statgen/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..41adc0cb46ab8b2f327c0851eae786631b4ba85a GIT binary patch literal 3478 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 RLIwr~22WQ%mvv4FO#tM^$sqs$ literal 0 HcmV?d00001 diff --git a/statgen/src/CMakeLists.txt b/statgen/src/CMakeLists.txt index 79f355e..e3486ad 100644 --- a/statgen/src/CMakeLists.txt +++ b/statgen/src/CMakeLists.txt @@ -3,62 +3,27 @@ set ("${PROJECT}_VERSION_MINOR" 0) set ("${PROJECT}_VERSION_PATCH" 1) set ("${PROJECT}_VERSION" ${${PROJECT}_VERSION_MAJOR}.${${PROJECT}_VERSION_MINOR}.${${PROJECT}_VERSION_PATCH}) -message (STATUS ${${PROJECT}_VERSION}) +message (STATUS "${PROJECT}: Version ${${PROJECT}_VERSION}") -## set files -# main files -set (MAIN_SOURCES main) -# not public srcs -set (PRIVATE_CLASSES) -# headers only files -SET (HEADERS_ONLY) -# public srcs -set (PUBLIC_CLASSES add_main - coords - graph - int2char - messages - stat_print - stat_select - stat_sort - summary_stat) -# public headers -set (PUBLIC_HEADERS) -# shared libraries +# set files +aux_source_directory (. SOURCES) + +# set library if (CMAKE_COMPILER_IS_GNUCXX) set (ADDITIONAL_LIB m) else () set (ADDITIONAL_LIB) endif() -set (SOURCES) - -# append list -foreach (class ${PRIVATE_CLASSES}) - LIST (APPEND SOURCES ${class}.c) - LIST (APPEND HEADERS ${class}.h) -endforeach () - -foreach (class ${HEADERS_ONLY}) - LIST (APPEND HEADERS ${class}.h) -endforeach () - -foreach (class ${PUBLIC_CLASSES}) - LIST (APPEND SOURCES ${class}.c) - LIST (APPEND HEADERS ../include/${PROJECT}/${class}.h) - LIST (APPEND PUBLIC_HEADERS ../include/${PROJECT}/${class}.h) -endforeach () # message message (STATUS "SOURCES: ${SOURCES}") # link libraries and compile -add_executable (${PROJECT} ${MAIN_SOURCES} ${SOURCES}) +add_executable (${PROJECT} ${SOURCES}) target_link_libraries (${PROJECT} ${ADDITIONAL_LIB}) # install properties -INSTALL (TARGETS ${PROJECT} - DESTINATION bin) +INSTALL (TARGETS ${PROJECT} DESTINATION bin) if (ADD_INCLUDE) - INSTALL (FILES ${PUBLIC_HEADERS} - DESTINATION include/${PROJECT}) + INSTALL (FILES ${PUBLIC_HEADERS} DESTINATION include/${PROJECT}) endif () \ No newline at end of file diff --git a/statgen/src/add_main.c b/statgen/src/add_main.c index 0a191a6..2f4a311 100644 --- a/statgen/src/add_main.c +++ b/statgen/src/add_main.c @@ -1,14 +1,43 @@ -/* Additional library for main.c (statgen) +/** + * @file */ #include -// #include "messages.h" +#include "messages.h" +/** + * @fn error_checking + */ int error_checking (const float *cell, const int from, const char *input, const int max_depth, const int num_of_inter, const char *output, const int to, const int type_inter) +/** + * @brief function that checks errors in input variables + * @code + * error_checking (cell, from, input, max_depth, num_of_inter, output, to, + * type_inter); + * @endcode + * + * @param cell massive of cell size + * @param from first trajectory step + * @param input mask of trajectory files + * @param max_depth max depth for check cycles in graph analyze + * @param num_of_inter number of different interactions + * @param output output file name + * @param to last trajectory step + * @param type_inter number of atoms for interactions + * + * @return 11 - error in 'type_inter' + * @return 12 - error in 'cell' + * @return 13 - error in 'to' or 'from' + * @return 14 - error in 'num_of_inter' + * @return 15 - error in 'input' + * @return 16 - error in 'output' + * @return 19 - error in 'max_depth' + * @return 0 - exit without errors + */ { if ((type_inter == 0) || (type_inter > 4)) return 11; @@ -29,10 +58,35 @@ int error_checking (const float *cell, const int from, const char *input, } +/** + * @fn printing_head + */ int printing_head (const char *output, const int log, const int quiet, const char *input, const int from, const int to, const float *cell, const int type_inter, const int *label_atom, const int num_of_inter, const float *crit, const int max_depth) +/** + * @brief function that prints header in output file + * @code + * printing_head (output, log, quiet, input, from, to, cell, type_inter, label_atom, + * num_of_inter, crit, max_depth); + * @endcode + * + * @param output output file nams + * @param log status of log-mode + * @param quiet status of quiet-mode + * @param input mask of trajectory files + * @param from first trajectory step + * @param to last trajectory step + * @param cell massive of cell size + * @param type_inter number of atoms for interactions + * @param label_atom massive of atom types for interactions + * @param num_of_inter number of different interactions + * @param crit massive of criteria + * @param max_depth maximum depth for check cycles in graph analyze + * + * @return 0 - exit without errors + */ { int i, j; FILE *f_out; @@ -65,9 +119,26 @@ int printing_head (const char *output, const int log, const int quiet, return 0; } - +/** + * @fn print_message + */ int print_message (const int quiet, FILE *std_output, const int log, FILE *f_log, const int mode, const char *str) +/** + * @brief function that prints message in log and stdout + * @code + * print_message (quiet, stdout, log, f_log, 0, str); + * @endcode + * + * @param quiet status of quiet-mode + * @param std_output stdout + * @param log status of log-mode + * @param f_log log file + * @param mode number of message in "messages.c" + * @param str additional text in message + * + * @return 0 - exit without errors + */ { if ((quiet != 1) && (std_output != stderr)) message (0, mode, str, std_output); @@ -78,8 +149,31 @@ int print_message (const int quiet, FILE *std_output, const int log, FILE *f_log } +/** + * @fn set_defaults + */ int set_defaults (float *cell, int *from, char *input, int *log, int *max_depth, int *num_of_inter, char *output, int *to, int *type_inter, int *quiet) +/** + * @brief function for set default values of variables + * @code + * set_defaults (cell, &from, input, &log, &max_depth, &num_of_inter, output, &to, + * &type_inter, &quiet); + * @endcode + * + * @param cell massive of cell size + * @param from first trajectory step + * @param input mask of trajectory files + * @param log status of log-mode + * @param max_depth maximum depth for check cycles in graph analyze + * @param num_of_inter number of different interactions + * @param output output file name + * @param to last trajectory step + * @param type_inter number of atoms for interactions + * @param quiet status of quiet-mode + * + * @return 0 - exit without errors + */ { int i; diff --git a/statgen/include/statgen/add_main.h b/statgen/src/add_main.h similarity index 81% rename from statgen/include/statgen/add_main.h rename to statgen/src/add_main.h index c928f5c..1d2c617 100644 --- a/statgen/include/statgen/add_main.h +++ b/statgen/src/add_main.h @@ -1,6 +1,23 @@ +/** + * @file + */ + #ifndef ADD_MAIN_H #define ADD_MAIN_H +/** + * @fn error_checking + */ +/** + * @fn printing_head + */ +/** + * @fn print_message + */ +/** + * @fn set_defaults + */ + int error_checking (const float *, const int, const char *, const int, const int, const char *, const int, const int); int printing_head (const char *, const int, const int, const char *, const int, diff --git a/statgen/src/coords.c b/statgen/src/coords.c index cc8a170..ede5f54 100644 --- a/statgen/src/coords.c +++ b/statgen/src/coords.c @@ -1,50 +1,68 @@ -/* Library for reading coordinates from input file - * - * Usage: - * reading_coords (mode, filename, type_interaction, labels, - * cell, &number_of_molecules, &number_of_atoms, true_label_molecule, - * label_molecule, type_atoms, coords, char_type_atoms) +/** + * @file */ #include #include - +/** + * @fn reading_coords + */ int reading_coords (const int mode, const char *filename, const int type_inter, const int *label_atom, const float *cell, int *num_mol, int *num_atoms, int *true_label_mol, int *label_mol, int *type_atoms, float *coords, char *ch_type_atoms) -/* filename - name of file with coordinates - * type_inter - type interaction (number of molecules for interaction) - * label_atom - types of atom for interaction - * cell - cell dimension - * num_mol - number of molecules for writing coordinates - * num_atoms - number of atoms for writing coordinates - * true_label_mol - massive of true numbers of molecule for atoms - * label_mol - massive of numbers of molecule for atoms - * type_atoms - massive of atom types for atoms - * coords - massive of coordinates - * ch_type_atoms - massive of char types for atoms +/** + * @brief function that reads coordinates from special file format + * @code + * reading_coords (0, filename, type_inter, label_atom, cell, &num_mol, + * &num_atoms, true_label_mol, label_mol, type_atoms, + * coords, ch_type_atoms); + * @endcode + * + * @param mode mode of reading; '1' is statgen, '2' is envir or + * frad, '3' is agl + * @param filename input file name + * @param type_inter number of needed atoms + * (number of needed molecules) + * @param label_atom massive of needed atom types + * (massive of needed molecules) + * @param cell massive of cell size + * @param num_mol number of molecules + * @param num_atoms number of atoms + * @param true_label_mol massive of true numbers of molecule for atoms + * @param label_mol massive of numbers of molecule for atoms + * @param type_atoms massive of atom types + * @param coords massive of coordinates + * @param ch_type_atoms massive of char atom types + * + * @return 1 - file $filename does not exist + * @return 2 - unknown mode + * @return 0 - exit without errors */ { char at_symb[32], file_string[256]; int atoms, cur_at_num, cur_at_type, cur_mol, i, j, tr_num_atoms, ref_mol, x, y; float cur_coords[3], *not_tr_coords, ref[3]; FILE *inp; -/* cur_*, at_symb - temp variables - * file_string - temp string variable - * atoms - total number of atoms in system - * tr_num_atoms - number of translated atoms for writing coordinates (m.b. 8*num_atoms) - * ref_mol - number of molecule for reference - * not_tr_coords - not translated coordinates - * ref - coordinates of reference molecule - * inp - file with input data + +/* cur_* temp variables + * at_symb temp variable + * file_string temp string variable + * atoms total number of atoms in system + * tr_num_atoms number of translated atoms (must be 8*num_atoms) + * ref_mol number of molecule for reference in translation + * not_tr_coords massive of not translated coordinates + * ref massive of coordinates of reference molecule + * inp input file */ +/// Work blocks + *num_atoms = 0; *num_mol = 0; -// Reading file +///
   reading file 
inp = fopen (filename, "r"); if (inp == NULL) return 1; @@ -59,10 +77,11 @@ int reading_coords (const int mode, const char *filename, const int type_inter, sscanf (file_string, "%i%s%f%f%f%i%i", &cur_at_num, at_symb, &cur_coords[0], &cur_coords[1], &cur_coords[2], &cur_at_type, &cur_mol); +// reading variables according to selected mode switch (mode) { case 0: -// for statgen +// mode == 0 (selected atoms) for (j=0; j translation tr_num_atoms = *num_atoms; for (i=0; i<*num_atoms; i++) for (j=0; j<3; j++) coords[3*i+j] = not_tr_coords[3*i+j]; -// Assign initial value to reference coordinates +// assign initial value to reference coordinates ref_mol = label_mol[0]; for (i=0; i<3; i++) ref[i] = coords[3*0+i]; @@ -129,7 +171,7 @@ int reading_coords (const int mode, const char *filename, const int type_inter, for (x=0; x<3; x++) { if (ref[x] >= 0.0) -// if xyz >= 0.0 A +// if xyz >= 0.0 A { for (j=0; j<3; j++) if (j == x) @@ -142,7 +184,7 @@ int reading_coords (const int mode, const char *filename, const int type_inter, tr_num_atoms++; } else -// if xyz < 0.0 A +// if xyz < 0.0 A { for (j=0; j<3; j++) if (j == x) @@ -161,7 +203,7 @@ int reading_coords (const int mode, const char *filename, const int type_inter, for (y=x+1; y<3; y++) { if ((ref[x] >= 0.0) && (ref[y] >= 0.0)) -// if xyz and xyz >= 0.0 A +// if xyz and xyz >= 0.0 A { for (j=0; j<3; j++) if ((j == x) || (j == y)) @@ -175,7 +217,7 @@ int reading_coords (const int mode, const char *filename, const int type_inter, } if ((ref[x] < 0.0) && (ref[y] < 0.0)) -// if xyz and xyz < 0.0 A +// if xyz and xyz < 0.0 A { for (j=0; j<3; j++) if ((j == x) || (j == y)) @@ -191,7 +233,7 @@ int reading_coords (const int mode, const char *filename, const int type_inter, for (y=0; y<3; y++) if ((ref[x] < 0.0) && (ref[y] >= 0.0)) -// if xyz OR xyz >= 0.0 +// if xyz OR xyz >= 0.0 { for (j=0; j<3; j++) { @@ -210,7 +252,7 @@ int reading_coords (const int mode, const char *filename, const int type_inter, } if ((ref[0] >= 0.0) && (ref[1] >= 0.0) && (ref[2] >= 0.0)) -// if x and y and z >= 0.0 A +// if x and y and z >= 0.0 A { coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] - cell[0]; coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] - cell[1]; @@ -222,7 +264,7 @@ int reading_coords (const int mode, const char *filename, const int type_inter, } if ((ref[0] >= 0.0) && (ref[1] >= 0.0) && (ref[2] < 0.0)) -// if x and y >= 0.0 A and z < 0.0 A +// if x and y >= 0.0 A and z < 0.0 A { coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] - cell[0]; coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] - cell[1]; @@ -234,7 +276,7 @@ int reading_coords (const int mode, const char *filename, const int type_inter, } if ((ref[0] >= 0.0) && (ref[1] < 0.0) && (ref[2] >= 0.0)) -// if x and z >= 0.0 A and y < 0.0 A +// if x and z >= 0.0 A and y < 0.0 A { coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] - cell[0]; coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] + cell[1]; @@ -246,7 +288,7 @@ int reading_coords (const int mode, const char *filename, const int type_inter, } if ((ref[0] < 0.0) && (ref[1] >= 0.0) && (ref[2] >= 0.0)) -// if y and z >= 0.0 A and x < 0.0 A +// if y and z >= 0.0 A and x < 0.0 A { coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] + cell[0]; coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] - cell[1]; @@ -258,7 +300,7 @@ int reading_coords (const int mode, const char *filename, const int type_inter, } if ((ref[0] < 0.0) && (ref[1] < 0.0) && (ref[2] >= 0.0)) -// if x and y < 0.0 A and z >= 0.0 A +// if x and y < 0.0 A and z >= 0.0 A { coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] + cell[0]; coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] + cell[1]; @@ -270,7 +312,7 @@ int reading_coords (const int mode, const char *filename, const int type_inter, } if ((ref[0] < 0.0) && (ref[1] >= 0.0) && (ref[2] < 0.0)) -// if x and z < 0.0 A and y >= 0.0 A +// if x and z < 0.0 A and y >= 0.0 A { coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] + cell[0]; coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] - cell[1]; @@ -282,7 +324,7 @@ int reading_coords (const int mode, const char *filename, const int type_inter, } if ((ref[0] >= 0.0) && (ref[1] < 0.0) && (ref[2] < 0.0)) -// if x >= 0.0 A and y and z < 0.0 A +// if x >= 0.0 A and y and z < 0.0 A { coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] - cell[0]; coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] + cell[1]; @@ -294,7 +336,7 @@ int reading_coords (const int mode, const char *filename, const int type_inter, } if ((ref[0] < 0.0) && (ref[1] < 0.0) && (ref[2] < 0.0)) -// if x and y and z < 0.0 A +// if x and y and z < 0.0 A { coords[3*tr_num_atoms+0] = not_tr_coords[3*i+0] + cell[0]; coords[3*tr_num_atoms+1] = not_tr_coords[3*i+1] + cell[1]; @@ -306,7 +348,7 @@ int reading_coords (const int mode, const char *filename, const int type_inter, } } -// free memory +///
   free memory 
free (not_tr_coords); return 0; diff --git a/statgen/include/statgen/coords.h b/statgen/src/coords.h similarity index 82% rename from statgen/include/statgen/coords.h rename to statgen/src/coords.h index c1d9160..6bdf48e 100644 --- a/statgen/include/statgen/coords.h +++ b/statgen/src/coords.h @@ -1,6 +1,14 @@ +/** + * @file + */ + #ifndef COORDS_H #define COORDS_H +/** + * @fn reading_coords + */ + int reading_coords (const int, const char *, const int, const int *, const float *, int *, int *, int *, int *, int *, float *, char *); diff --git a/statgen/src/graph.c b/statgen/src/graph.c index 1dcd9d5..6140238 100644 --- a/statgen/src/graph.c +++ b/statgen/src/graph.c @@ -1,46 +1,77 @@ -/* Library for graph structure analyze - * Usage: - * graph_analyze (N, connect, max_depth, isomorphism_class) +/** + * @file */ #include #include +/** + * @fn check_cycle + */ int check_cycle (const int N, const int *pn) -// function to return number of cycles +/** + * @brief function that calculates number of cycles in graph + * @code + * cycle = check_cycle (N, pn); + * @endcode + * + * @param N number of vertexes + * @param pn massive of number of vertexes with weight equals to i + * + * @return number of cycles + */ { int cycle, i; -/* cycle - number of cycle +/* cycle number of cycle */ cycle = 0; for (i=1; i 2) && (cur_N <= depth)) { -// copy connectivity matrix +// copy connectivity matrix cycle = 1; for (j=0; j N) depth = N; else depth = max_depth; -// convert to matrix of weight +// convert to matrix of weight pn = (int *) malloc (N * sizeof (int)); n_cycle = (int *) malloc ((depth - 2) * sizeof (int)); if ((pn == NULL) || @@ -129,6 +184,7 @@ int graph_analyze (const int N, const int *matrix, const int max_depth, int *iso iso[i+2] = n_cycle[i]; } +// free memory free (n_cycle); free (pn); diff --git a/statgen/include/statgen/graph.h b/statgen/src/graph.h similarity index 65% rename from statgen/include/statgen/graph.h rename to statgen/src/graph.h index 8cad4ea..bb660f3 100644 --- a/statgen/include/statgen/graph.h +++ b/statgen/src/graph.h @@ -1,6 +1,23 @@ +/** + * @file + */ + #ifndef GRAPH_H #define GRAPH_H +/** + * @fn graph_analyze + */ +/** + * @fn check_cycle + */ +/** + * @fn check_cycle_size + */ +/** + * @fn check_tail + */ + int graph_analyze (const int, const int *, const int, int *); int check_cycle (const int, const int *); int check_cycle_size (const int, const int *, const int, int *); diff --git a/statgen/src/int2char.c b/statgen/src/int2char.c index 07673c4..147ae5a 100644 --- a/statgen/src/int2char.c +++ b/statgen/src/int2char.c @@ -1,12 +1,22 @@ -/* Library for converting integer to string - * Usage - * char = conv (number, position) +/** + * @file */ +/** + * @fn conv + */ char conv (const int fnumb, const int dig_pos) -/* fnumb - integer - * dig_pos - position +/** + * @brief function that converts from integer to char + * @code + * char = conv (N, 0); + * @endcode + * + * @param fnumb integer + * @param dig_pos position: ones=1, decimals=2, hundreds=3 + * + * @return char */ { int d, h, o; diff --git a/statgen/include/statgen/int2char.h b/statgen/src/int2char.h similarity index 71% rename from statgen/include/statgen/int2char.h rename to statgen/src/int2char.h index a964562..a9dad11 100644 --- a/statgen/include/statgen/int2char.h +++ b/statgen/src/int2char.h @@ -1,6 +1,14 @@ +/** + * @file + */ + #ifndef INT2CHAR_H #define INT2CHAR_H +/** + * @fn conv + */ + char conv (const int, const int); #endif /* INT2CHAR_H */ \ No newline at end of file diff --git a/statgen/src/main.c b/statgen/src/main.c index fac757f..b69bb98 100644 --- a/statgen/src/main.c +++ b/statgen/src/main.c @@ -1,17 +1,21 @@ +/** + * @file + */ + #include #include #include #include #include -// #include "add_main.h" -// #include "coords.h" -// #include "int2char.h" -// #include "messages.h" -// #include "stat_print.h" -// #include "stat_select.h" -// #include "stat_sort.h" -// #include "summary_stat.h" +#include "add_main.h" +#include "coords.h" +#include "int2char.h" +#include "messages.h" +#include "stat_print.h" +#include "stat_select.h" +#include "stat_sort.h" +#include "summary_stat.h" int main (int argc, char *argv[]) @@ -26,40 +30,40 @@ int main (int argc, char *argv[]) int *agl, *connect, from, *label_atom, *label_mol, log, max_depth, num_atoms, num_mol, *num_mol_agl, num_of_inter, *stat, *stat_all, step, to, *true_label_mol, *type_agl, *type_atoms, type_inter, quiet; -/* input - mask of input files - * logfile - log file name - * output - output file name +/* input mask of trajectory files + * logfile log file name + * output output file name * - * cell - cell dimension - * coords - massive of coordinates - * crit - massive of criteria + * cell massive of cell size + * coords massive of coordinates + * crit massive of criteria * - * agl - massive of aglomerates - * connect - connectivity graph for all molecules - * from - start point - * label_atom - types of atom for interaction - * label_mol - massive of numbers of molecule for atoms - * log - status of log-mode - * max_depth - max depth for check cycles in graph analyze - * num_atoms - number of atoms for writing coordinates - * num_mol - number of molecules for writing coordinates - * num_mol_agl - massive of numbers of molecule in aglomerates - * num_of_inter - number of different interactions - * stat - massive of statistics - * stat_all - massive of summary statistics - * step - $(to - from + 1) - * to - finish point - * true_label_mol - massive of true numbers of molecule for atoms - * type_agl - massive of numbers of aglomerate types - * type_atoms - massive of atom types for atoms - * type_inter - type interaction (number of molecules for interaction) - * quiet - status of quiet-mode + * agl massive of aglomerates + * connect connectivity graph for all molecules + * from first trajectory step + * label_atom massive of atom types for interactions + * label_mol massive of numbers of molecule for atoms + * log status of log-mode + * max_depth maximum depth for check cycles in graph analyze + * num_atoms number of atoms + * num_mol number of molecules + * num_mol_agl massive of number of molecules in aglomerates + * num_of_inter number of different interactions + * stat massive of statistic + * stat_all massive of summary statistic + * step $(to - from + 1) + * to last trajectory step + * true_label_mol massive of true numbers of molecule for atoms + * type_agl massive of number of aglomerate types + * type_atoms massive of atom types + * type_inter number of atoms for interactions + * quiet status of quiet-mode */ set_defaults (cell, &from, input, &log, &max_depth, &num_of_inter, output, &to, &type_inter, &quiet); -// reading number of interactions +// reading number of interactions for (i=1; i to) @@ -118,13 +122,13 @@ int main (int argc, char *argv[]) i++; } else if ((argv[i][0] == '-') && (argv[i][1] == 'c')) -// cell size +// cell size { sscanf (argv[i+1], "%f,%f,%f", &cell[0], &cell[1], &cell[2]); i++; } else if ((argv[i][0] == '-') && (argv[i][1] == 'a')) -// atom types +// atom types { type_inter = 1; for (j=0; j #include +/** + * @fn message + */ int message (const int log, const int mode, const char *text, FILE *output) -/* mode - number of message - * text - additional text +/** + * @brief function that prints messages to output + * @code + * message (log, mode, text, output); + * @endcode + * + * @param log equal to 1 if print to logfile + * @param mode number of message + * @param text additional text + * @param output output file (may be stdout) + * + * @return 0 - exit without errors */ { char out[4096]; @@ -18,6 +29,7 @@ int message (const int log, const int mode, const char *text, FILE *output) if (log == 1) { char time_str[256]; + time_t t = time (NULL); struct tm* aTm = localtime (&t); sprintf (time_str, "[%04d-%02d-%02d %02d:%02d:%02d] [%2i]: ", aTm->tm_year+1900, diff --git a/statgen/include/statgen/messages.h b/statgen/src/messages.h similarity index 74% rename from statgen/include/statgen/messages.h rename to statgen/src/messages.h index 4a500fa..6e6ed21 100644 --- a/statgen/include/statgen/messages.h +++ b/statgen/src/messages.h @@ -1,6 +1,14 @@ +/** + * @file + */ + #ifndef MESSAGES_H #define MESSAGES_H +/** + * @fn message + */ + int message (const int, const int, const char *, FILE *); #endif /* MESSAGES_H */ \ No newline at end of file diff --git a/statgen/src/stat_print.c b/statgen/src/stat_print.c index c8ea24c..0584f12 100644 --- a/statgen/src/stat_print.c +++ b/statgen/src/stat_print.c @@ -1,57 +1,69 @@ -/* Library for printing aglomerates - * - * Usage: - * printing_agl (input_file, output_file, number_of_molecules, - * true_label_molecules, num_of_molecules_in_aglomerates, aglomerates, - * statistic, max_depth, type_of_aglomerate) +/** + * @file */ #include #include -// #include "graph.h" +#include "graph.h" +/** + * @fn printing_agl + */ int printing_agl (const char *input, const char *output, const int *connect, const int num_mol, const int *true_label_mol, const int *num_mol_agl, const int *agl, const int *stat, const int max_depth, int *type_agl) -/* input - name of file with coordinates - * output - name of output file - * connect - connectivity graph for all molecules - * num_mol - number of molecules - * true_label_mol - massive of true numbers of molecule for atoms - * num_mol_agl - massive of numbers of molecule in aglomerates - * agl - massive of aglomerates - * stat - massive of statistics - * max_depth - max depth for check cycles in graph analyze - * type_agl - massive of numbers of aglomerate types +/** + * @brief function that prints aglomerates to output file + * @code + * printing_agl (input_file, output_file, number_of_molecules, + * true_label_molecules, num_of_molecules_in_aglomerates, aglomerates, + * statistic, max_depth, type_of_aglomerate); + * @endcode + * + * @param input input file name + * @param output output file name + * @param connect connectivity graph for all molecules + * @param num_mol number of molecules + * @param true_label_mol massive of true numbers of molecule for atoms + * @param num_mol_agl massive of number of molecules in aglomerates + * @param agl massive of aglomerates + * @param stat massive of statistic + * @param max_depth maximum depth for check cycles in graph analyze + * @param type_agl massive of number of aglomerate types + * + * @return 1 - memory error + * @return 0 - exit without errors */ { int error, i, *iso, j, k, *label_matrix, *matrix; FILE *f_out; -/* iso - isomorphic graph in database - * label_matrix - massive of indexes of molecule - * matrix - connectivity graph - * f_out - output file +/* iso isomorphic graph in database + * label_matrix massive of indexes of molecule + * matrix connectivity graph + * f_out output file */ +/// Work blocks + iso = (int *) malloc (max_depth * sizeof (int)); if (iso == NULL) return 1; f_out = fopen (output, "a"); -// head +///
   print header 
fprintf (f_out, "FILE=%s\nSTATISTIC\n| n | N |\n-----------------\n", input); for (i=0; i print body for (i=0; i 0) { -// creating connectivity graph +///
      creating connectivity graph 
label_matrix = (int *) malloc (num_mol * sizeof (int)); matrix = (int *) malloc (num_mol_agl[i] * num_mol_agl[i] * sizeof (int)); if ((matrix == NULL) || @@ -71,34 +83,34 @@ int printing_agl (const char *input, const char *output, const int *connect, matrix[label_matrix[agl[num_mol*i+k]]*num_mol_agl[i]+label_matrix[agl[num_mol*i+j]]] = 1; } -// graph topology analyze +///
      graph topology analyze 
if (max_depth > 0) error = graph_analyze (num_mol_agl[i], matrix, max_depth, iso); if (error > 0) return 1; -// printing class of aglomerate +// print class of aglomerate fprintf (f_out, "AGL=%i=", num_mol_agl[i]); for (j=0; j 2) -// branched +// branched type_agl[3]++; else -// not branched +// not branched type_agl[2]++; -// number of cycles +// number of cycles else if (j == 1) if (iso[j] > 0) -// cycle +// cycle type_agl[1]++; else -// linear +// linear type_agl[0]++; else if (j > 1) -// number of n_cycles +// number of n_cycles type_agl[j+2] += iso[j]; fprintf (f_out, "%i.", iso[j]); @@ -108,20 +120,21 @@ int printing_agl (const char *input, const char *output, const int *connect, { fprintf (f_out, "%7i=", true_label_mol[agl[num_mol*i+j]]); for (k=0; k free memory free (matrix); free (label_matrix); } fprintf (f_out, "---------------------------------------------------\n"); fclose (f_out); + +///
   free memory 
free (iso); + return 0; } \ No newline at end of file diff --git a/statgen/include/statgen/stat_print.h b/statgen/src/stat_print.h similarity index 82% rename from statgen/include/statgen/stat_print.h rename to statgen/src/stat_print.h index 6ac79e3..a6f26a4 100644 --- a/statgen/include/statgen/stat_print.h +++ b/statgen/src/stat_print.h @@ -1,6 +1,14 @@ +/** + * @file + */ + #ifndef STAT_PRINT_H #define STAT_PRINT_H +/** + * @fn printing_agl + */ + int printing_agl (const char *, const char *, const int *, const int, const int *, const int *, const int *, const int *, const int,int *); diff --git a/statgen/src/stat_select.c b/statgen/src/stat_select.c index 0efe2f6..2b4fb33 100644 --- a/statgen/src/stat_select.c +++ b/statgen/src/stat_select.c @@ -1,35 +1,47 @@ -/* Library for creating connectivity matrix - * - * Usage: - * create_matrix (number_of_molecules, number_of_atoms, label_molecule, - * type_atoms, coords, number_of_interactions, criteria, connect_matrix) +/** + * @file */ #include #include +/** + * @fn create_matrix + */ int create_matrix (const int num_mol, const int num_atoms, const int *label_mol, const int *type_atoms, const float *coords, const int num_of_inter, const float *crit, int *connect) -/* num_mol - number of molecules - * num_atoms - number of atoms - * label_mol - massive of numbers of molecule for atoms - * type_atoms - massive of atom types for atoms - * coords - massive of coordinates - * num_of_inter - number of different interactions - * crit - massive of criteria - * connect - connectivity graph for all molecules +/** + * @brief function that creates connectivity matrix + * @code + * create_matrix (number_of_molecules, number_of_atoms, label_molecule, + * type_atoms, coords, number_of_interactions, criteria, connect_matrix); + * @endcode + * + * @param num_mol number of molecules + * @param num_atoms number of atoms + * @param label_mol massive of numbers of molecule for atoms + * @param type_atoms massive of atom types + * @param coords massive of coordinates + * @param num_of_inter number of different interactions + * @param crit massive of criteria + * @param connect connectivity graph for all molecules + * + * @return 1 - memory error + * @return 0 - exit without errors */ { float r; int cur_num_inter, i, j, k, l, num_inter, ***label_inter; -/* r - radius - * cur_num_inter - current number of true interactions - * num_inter - needed number of true interactions - * label_inter - temporary massive of true interactions +/* r radius + * cur_num_inter current number of true interactions + * num_inter needed number of true interactions + * label_inter temporary massive of true interactions */ +/// Work blocks + label_inter = (int ***) malloc (num_mol * sizeof (int **)); for (i=0; i creating initial connectivity matrix for (i=0; i processing of initial connectivity matrix for (k=0; k free memory for (i=0; i +/** + * @fn proc_matrix + */ int proc_matrix (const int num_mol, const int *connect, int *num_mol_agl, int *agl, int *stat, int *stat_all) -/* num_mol - number of molecules - * connect - connectivity graph for all molecules - * num_mol_agl - massive of numbers of molecule in aglomerates - * agl - massive of aglomerates - * stat - massive of statistics - * stat_all - massive of summary statistics +/** + * @brief function that processes connectivity matrix + * @code + * proc_matrix (number_of_molecules, connect_matrix, + * num_of_molecules_in_aglomerates, aglomerates, statistic, summary_statistic); + * @endcode + * + * @param num_mol number of molecules + * @param connect connectivity graph for all molecules + * @param num_mol_agl massive of number of molecules in aglomerates + * @param agl massive of aglomerates + * @param stat massive of statistic + * @param stat_all massive of summary statistic + * + * @return 1 - memory error + * @return 0 - exit without errors */ { int i, j, k, p, *bin; - /* p - weight / graph index - * bin - binary massive of labels + /* p weight / graph index + * bin binary massive of labels */ -// definition and zeroing +/// Work blocks + +// definition and zeroing bin = (int *) malloc (num_mol * sizeof (int)); if (bin == NULL) return 1; @@ -36,7 +48,7 @@ int proc_matrix (const int num_mol, const int *connect, int *num_mol_agl, int *a agl[num_mol*i+j] = 0; } -// select non-bonded molecules +///
   select non-bonded molecules 
for (i=0; i unwraping of connectivity matrix p = 0; for (i=0; i filling statistic array i = 0; while (num_mol_agl[i] > 0) { @@ -80,6 +92,7 @@ int proc_matrix (const int num_mol, const int *connect, int *num_mol_agl, int *a i++; } +///
   free memory 
free (bin); return 0; diff --git a/statgen/include/statgen/stat_sort.h b/statgen/src/stat_sort.h similarity index 74% rename from statgen/include/statgen/stat_sort.h rename to statgen/src/stat_sort.h index 4d4c861..fa8e3e6 100644 --- a/statgen/include/statgen/stat_sort.h +++ b/statgen/src/stat_sort.h @@ -1,6 +1,14 @@ +/** + * @file + */ + #ifndef STAT_SORT_H #define STAT_SORT_H +/** + * @fn proc_matrix + */ + int proc_matrix (const int, const int *, int *, int *, int *, int *); #endif /* STAT_SORT_H */ \ No newline at end of file diff --git a/statgen/src/summary_stat.c b/statgen/src/summary_stat.c index aa83f31..27fd8b5 100644 --- a/statgen/src/summary_stat.c +++ b/statgen/src/summary_stat.c @@ -1,29 +1,39 @@ -/* Library for summary statistic - * Usage: - * summary_statistic (filename, number_of_step, number_of_molecules, - * max_depth, type_of_aglomerate, summary_statistic) +/** + * @file */ #include +/** + * @fn summary_statistic + */ int summary_statistic (const char *filename, const int step, const int num_mol, const int max_depth, const int *type_agl, const int *stat_all) -/* filename - name of output file - * step - number of steps - * num_mol - number of molecules - * max_depth - max depth for check cycles in graph analyze - * type_agl - massive of numbers of aglomerate types - * stat_all - massive of summary statistics +/** + * @brief function that prints summary statistic + * @code + * summary_statistic (filename, number_of_step, number_of_molecules, max_depth, + * type_of_aglomerate, summary_statistic); + * @endcode + * + * @param filename output file name + * @param step number of steps + * @param num_mol number of molecules + * @param max_depth maximum depth for check cycles in graph analyze + * @param type_agl massive of number of aglomerate types + * @param stat_all massive of summary statistic + * + * @return 0 - exit without errors */ { float conc, p, pn, type[2], x, y; int i, index; FILE *f_out; -/* conc - concentrate of aglomerates - * p - probability of aglomerates - * pn - weight probability of aglomerates - * f_out - output file +/* conc concentrate of aglomerates + * p probability of aglomerates + * pn weight probability of aglomerates + * f_out output file */ index = 0; @@ -31,19 +41,19 @@ int summary_statistic (const char *filename, const int step, const int num_mol, if (stat_all[i] != 0) index = i; -// head +// head f_out = fopen (filename, "a"); fprintf (f_out, "SUMMARY STATISTIC\n"); fprintf (f_out, "| n | N | C | p | pn |\n------------------------------------------------\n"); for (i=0; i 0) { -// types of aglomerates +// types of aglomerates fprintf (f_out, "------------------------------------------------\n"); -// linear and cycle +// linear and cycle x = type_agl[0] + type_agl[1]; type[0] = type_agl[0]; type[1] = type_agl[1]; fprintf (f_out, "LINEAR=%7.5f\nCYCLE=%7.5f\n--------------------\n", type[0]/x, type[1]/x); -// branched +// branched type[0] = type_agl[2]; type[1] = type_agl[3]; fprintf (f_out, "NOT BRANCHED=%7.5f\nBRANCHED=%7.5f\n--------------------\n", type[0]/x, type[1]/x); -// n_cycle +// n_cycle x = 0; for (i=4; i