NAME
UMLS::Interface CHANGES
Changes from version 0.101 to 1.01
1. modified the version number - this release was specifically about
modifying the version number because cpan doesn't realize that .101 is
greater than .99
2. updated documentation
Changes from version 0.99 to 0.101
1. revised the program to obtain the semantic group of a cui or term <-
no input file needed now
2. added getSemanticGroup function in Interface.pm and its corresponding
_getSemanticGroup function in CuiFinder.pm
3. added getSemanticGroup.t test program in t/
4. revised getSts.t test program in t/
5. added a getSemanticRelation.pl program in the utils/ directory along
with its corresponding functions and test cases
Changes from version 0.97 to 0.99
1. added program to obtain the semantic group of a cui or a term
2. added an --infile FILE option to getSts.pl
3. added a reConfig function which takes in a new configuration
parameters
Changes from version 0.95 to 0.97
1. I forgot to add the new configuration files for the test cases
Changes from version 0.93 to 0.95
1. added a getDefTermList() function to obtain the concepts using the
SABDEF information rather than the SAB information
2. modified the getExtendedDef() function to reflect this
3. modified the getCuiDef() function to print out the term as well as
the CUI when returning the definition
Changes from version 0.91 to 0.93
1. modified the configuration options such that if not defined in the
configuration file they use their respective defaults.
2. return error message if source in the configuration file does not
exist in the current view of the UMLS.
3. added a getDefConceptList() function to obtain the concepts using the
SABDEF information rather than the SAB information
Changes from version 0.89 to 0.91
1. modified documentation
2. added a length cache for the realtime option so once you find the
path length in realtime, it will store that for you. This is similar to
what I did for the depth only this only runs during realtime - other
wise there is the index that is created so there is no point in having
both due to space issues.
Changes from version 0.87 to 0.89
1. added the mysql_auto_reconnect option to the database variables
Changes from version 0.85 to 0.87
1. changed the IC to return log base 10 rather than the natural log
(which is the default in perl)
2. added a new util/ program findNumberOfCloserConcepts.pl to coincide
with the new function findNumberOfCloserConcepts()
Changes from version 0.83 to 0.85
1. added a new program called getCompounds.pl which returns a list of
compounds from the MRCONSO table given a specified set of sources in the
configuration table
2. added the getCompound() function in the Interface.pm module to
support this program
Changes from version 0.81 to 0.83
1. modified the --icpropagation option in findShortestPath.pl and the
findPathToRoot.pl programs. The option was not working properly.
2. modified getChildren to include the upper level taxonomy even if it
isn't explicitily stated in MRREL
Changes from version 0.79 to 0.81
1. added a forbidden CUI: C2733115|limited status concept which was
introduced in UMLS 2010AA
Changes from version 0.77 to 0.79
1. added --level option to findDFS.pl which prints out the number of
leafs and nodes above a specified depth
2. added the mean information to findDFS.pl
3. modified getChildren and getParent to print out the preferred term of
a cui rather than a random associated one.
4. added a developers-check to the t directory
Changes from version 0.75 to 0.77
1. added a getStString.pl program to utils/
2. added a findShortestPathLength.pl program to utils/
3. fixed error in the find shortest path length function
Changes from version 0.73 to 0.75
1. added average maximum depth to the findDFS.pl program
2. modified the findShortestPathLength function to obtain the length
using the index when the --realtime option is not used.
3. added standard deviation from average depth to the findDFS.pl program
Changes from version 0.71 to 0.73
1. modified the shortest path - there was a problem with the directed
paths - I was getting some undirected ones mixed in there. This should
not have affected the length of the shortest path just the paths
themselves.
2. modified utils programs to return the preferred term of a concept
rather than just any term.
3. modified the depth() function to obtain the maximum cui depth of the
concepts in the view when called - these are stored in a database
currently
4. modified the findMaximumDepth function to cache the maximum depth of
cuis when found (storing them in the same database as mentioned above).
Changes from version 0.69 to 0.71
1. There are two functions that currently exist:
getTermList() -> returns CUIs terms that exist in the sources
specified in the configuration file
getAllTermList() -> returns CUIs terms from the entire UMLS
I added to new functions:
getPreferredTerm() -> returns the CUIs preferred term if it exists
in the sources specified in the
configuration file
getAllPreferredTerm()-> returns the CUIs preferred term
2. For the getAssociatedTerms.pl program , there is an additional option
called:
--preferred
Here are the options:
1. --config FILE
returns the cuis associated terms from the sources specified in
the configuration file
2. --preferred --config FILE
returns the cuis preferred term from the sources specified in
the configuration file
3. --preferred
returns the cuis preferred term
4. no config and no preferred option
returns the cuis associated terms from the entire UMLS
5. removed added white space in the config file parameters
- this was causing an error sometimes
6. made certain that the parent/children information is only
being obtained if in the configuration file. There was a
problem with this using RELDEF :: include and a single
option such as CHD.
7. restrict util programs to heirarchical relations - PAR/CHD and RB/RN
- findCuiDepth
- findDFS
- findLeastCommonSubsumer
- findPathToRoot
8. modified the default source and relation output
9. added an --infile option to getAssociatedTerms.pl
10. modified the getMinimumCuiDepth to speed up the process
Changes from version 0.67 to 0.69
1. Updated configuration file reading for spaces
2. Updated icfrequency and icpropagation files to include the total
number of concepts - I call this N
3. Added getFrequency() function which returns the frequency of a
concept - after propagation
4. Modified documentation - hope it is clearer
5. Added a getN() function which returns the total number of concepts in
the icpropgation or icfrequency file
6. Updated getExtendedDefinition to include the source in which the term
originates
7. Updated getExtendedDefinition to allow include the defintiion of the
concepts semantic type
8. Allowed the definitions to come from all the sources in the MRDEF
table when using UMLS_ALL rather than all the sources in the MRREL
table.
9. Added the new shortest path measure
Changes from version 0.65 to 0.67
1. Fixed the RELADEF parameter
2. Added better parameter check for propagation
Changes from version 0.63 to 0.65
1. modified N in creating the probability of a concept for propagation
2. modified documentation
3. Added the RELADEF option
4. Added the UMLS_ALL parameter for RELADEF and RELDEF
5. put the shortest path back to what we had. The previous version
shortest path works but it isn't as fast as we would like. We are still
working on this.
Changes from version 0.61 to 0.63
1. updated the source and relation output for SABDEF/RELDEF and SAB/REl
2. the UMLS_ROOT showing up as a child of C0282503 - that seems a bit
odd (priority)
we figured out why - this node seems to be part of three sources:
MSH, NCI and HL7v2.5 (as a PAR/CHD relationship).
we are fixing this by creating a fake root: C0000000
3. implement shortest path algorithm (priority)
4. implement the lcs algorithm for the new shortest path (priority)
5. allow SABDEF, SABREL and REL to have the UMLS_ALL option
6. add --undirected option to shortest path
7. require that both the SAB and REL or SABDEF and RELDEF be specified
Changes from version 0.59 to 0.61
1. add validOptions() check in the Interface.pm module -> I actually
called it checkOptions since this is consistent with other functions
that do this
2. change the synopsis of the Finder modules so that are unique and
describe what they do better (priority)
3. add a check in the table file of the index to make certain that the
program completed
4. Get --icfrequency option up and running
5. write the SAB and REL info on the top lines of the icpropagation
file, and then check those relative to the config file being used
6. perldoc should give a quick intro to what propagation is, and how we
are doing the actual calculations of info content values
7. Add --smooth option
8. document how the smoothing is done in the perldoc
9. document the --icfrequency option
10. add check to RELA requiring REL if specified
11. move error checking into separate module
12. add RELA to the documentation
13. create getExtendedRelation function using SABDEF and use that
instead of getRelated in the getExtendedDefinition function
Changes from version 0.57 to 0.59
1. fixed an error that happened when trying to obtain the depth of a
taxonomy when not in --realtime
2. cleaned up documentation and STDERR output a bit
3. add check to make certain that that the .t programs can only be
called in the main directory
4. change mkpath and rmtree to make_path() and remove_tree() in the .t
files
5. reorganized the Finder modules
Changes from version 0.55 to 0.57
1. add a more complete configuration file in the samples directory
2. updated the documentation
3. Added --info option to getParent.pl and getChild.pl to display the
source information (similar to the --info option in findPathtoRoot?)
Changes from version 0.53 to 0.55
1. There are significant changes in the Interface.pm module but if
everything went well you should not notice them at all. We split the
functionality of Interface.pm into three module: CuiFinder.pm
PathFinder.pm ICFinder.pm
These modules is where the main code is but the
API is still through the Interface.pm module so
you should not have to access these at all.
2. modification in the findLeatCommonSubsumer.pl out. The output would
be as follows: the least common subsumer between C0007286 (C0007286) and
hypertrophic arthritis, nos (C0029408) is other soft tissue disorders
(disorder) (C0158370). Fix this to print out the term rather than the
CUI twice.
3. Added an addition to forbidden concepts: unapproved attribute
(C1443286)
4. Removed bignum from UMLS-Interface
5. Know uses SABDEF and RELDEF for the extended definition and
definition configuration options rather than DEF
6. The getCuiDef.pl displays the source of definitions when using the
--sab option
7. The findShortestPath.pl and FindLeastCommonSubsumer.pl do not go
through all their path finding when CUI1 and CUI2 are the same
9. The exclude option is now working for SAB, REL and RELA
10. Obtains the source in which a relationship exists between two
concepts. We now have a method called: getRelationBetweenTwoCuis($cui1,
$cui2);
11. There are new examples of how to go about specifing the config
option in the API code. These are in the Interface.pm module
documentation under CONFIGURATION FILE and I think the README does a
decent job of it now, as well.
Changes from version 0.51 to 0.53
Added the --debugpath FILE option to the path util/ programs and the
UMLS-Interface. This option prints out the path information on the fly
for debuging purposes. It works only with the --realtime function
because otherwise an index is built. If you need the path information in
the index you can use the --verbose option while creating the index and
it will print it to a file.
Changes from version 0.49 to 0.51
1. Modified Interface.pm to accept either a propagation file or a
frequency file when returning the information content of a CUI. I also
modified the format these files are required.
2. Added a README in the samples/ directory
3. Updated documentation
4. Added example files to the samples/ directory
Changes from version 0.47 to 0.49
1. Added the getExtendedDefinition function
2. Modified the configuration file to accept what relations should be
included in the extended defintion. The format is:
DEF :: include TERM, CUI, PAR, CHD, SIB, SYN, RB, RN
where TERM refers to the associated terms of a concept
CUI refers to the CUIs definition and the rest
are the definition of the relations.
3. Created a samples/ directory which contains an example of the
configuration file
Changes from version 0.45 to 0.47
1. Added a t/ test case for each of the programs in the utils/ directory
2. Added the --infile option for findPathsToRoot.pl
The format consists of a CUI or term each on its
own line.
3. Added the --infile option for findCuiDepth.pl
The format is the same as above.
Changes from version 0.43 to 0.45
Modified the way that the path information was being returned. It was
causing some problems with UMLS-Similarity
Changes from version 0.41 to 0.43
1. Added the terms associated to concept2 and the lcs in the
findLeastCommonSubsumer program
2. Added the --info option to the findPathsToRoot program
Changes from version 0.39 to 0.41
1. Modified the findShortestPath and findLeastCommonSubsumer
functions to return all of the paths and LCS's if there
is more than one.
Changes from version 0.37 to 0.39
1. Added the following options to findLeastCommonSubsumer
a. --infile File containing TERM or CUI pairs
b. --depth Outputs the depth of the lcs
c. --propagation FILE Outputs the IC of the lcs
2. Added the following options to findShortestPath
a. --propagation FILE Outputs the IC of the lcs
b. --length Outputs the length of the path
c. --info Outputs the source and relation
information between the concepts
in the path
Changes from version 0.35 to 0.37
1. Revised the way the propagation of counts is handled
2. Renamed everything spelt propogation to propagation
3. Updated documentation
Changes from version 0.33 to 0.35
1. Added the ability to propogation counts given a propogation file.
Currently the format of that file is: Frequency|CUI|String
So for example:
1|C0018563|hand
The concept C0018563 has a frequency count of one and is associated
with the term hand. The string really isn't necessary but I like
to know what a CUI means. This input format may be changed in the
future to accept a file but I might also create a program in the
util/ directory that given a file it will create this for you.
To do this the propogation parameter must be set to the location
of the propogation file.
2. Added the getPropogationCount.pl program to the util/ directory. This
is used to obtain the propogation count of a specified CUI.
3. Added a getIC() function which takes in a CUI and returns its
information content based on the propagation file
4. I also added a getPropogationCount() function which takes in a CUI
and returns the propogation count of a given concept
5. Added getCuiList() program to the util directory and its associated
function in the Interface.pm module. This allows you to get a list of
CUIs given the sources and relations in a config file.
6. Added a --debug option to print out function information for debuging
purposes.
7. Added a --propogation PROPOGATIONFILE option to findPathToRoot.pl
which will return the propogation count of the CUIs in the path
8. Combined the following util programs:
a. findMaximumCuiDepth and findMinimumCuiDepth => findCuiDepth
b. queryCui and queryCui-SAB -> getAssociatedTerms
9. Changed the name of the following util programs a. queryTerm ->
getAssociatedCuis b. dfs -> findDFS
10. Added a --propogation option for findPathToRoot to return the
propogation counts of the CUIs in the path.
Changes from version 0.31 to 0.33
1. fixed the error in the make tests - they would not work properly
unless you had the UMLS-Interface environment variable set for the
location of the configuration files even though we weren't using them.
Changes from version 0.29 to 0.31
1. Changed all of the table names into hex form!! This is important
because it now means the versions aren't back compatible. Why did I do
this - well the table names were getting long the more sources and
relations that were added. If to many were used an error is thrown
because there were too many characters in the table name.
I created two utils/ programs the first is returnTableNames.pl.
This returns all of the table names in both hex and human readable
form (the original form) that were created for a specified config
file. The second is returnAllTableNames.pl which returns all of
the table names (in hex and the original form) that have been
created by the package. These tables are stored in a database called
umlsinterfaceindex. One nice thing is that this will be the only
database created now.
2. The getSab() disappeared - I must have erased it - it is back!
3. The RELA option in the config file is now up and running. So you can
now not only specify a set of sources and relations but also RELAs - as
long as the RELA exists in the source and relation combination. If it
doesn't I just continue on right now - I could error out though - not
certain which is the best thing to do right now.
4. You can use other relations in UMLS-Interface now, like, for example,
RO. I don't connect these though to the root so if they are not either
connected to the root itself (like in SNOMEDCT but unlike in FMA) it
will only connect through additional relations.
5. The make tests have been expanded
6. Added a --realtime option. This allows the path information to be
obtained on the fly rather than prebuilding the umlsinterface index. You
will notice these in the util/ programs
7. There is a UMLS_ALL tag that can be used in the configuration file in
replace of the source names. For example, to use the entire UMLS with
the PAR/CHD relations, the configuration file would be as follows:
SAB :: include UMLS_ALL
REL :: include PAR, CHD
Changes from version 0.27 to 0.29
1. Added a dfs.pl program which is located in the utils/ directory. This
program runs a dfs over a specified set of sources and relations in the
UMLS and returns:
1. the maximum depth
2. paths to root
3. sources
4. maximum branching factor
5. average branching factor
6. number of leaf nodes
7. number of nodes
8. root
2. Added a function in Interface.pm called getAllTerms() which returns
all of the possible terms of a given CUI along with their source(s).
This is for all of the strings associated with the CUI in the MRCONSO
table so you can't specify a source for this one. If you would like to
do that use the getTermList function instead.
There is also a program in the utils/ directory which uses this called
queryCui-Sab.pl
3. Added the functionality to store only the path information of a given
set of cuis. To do this you need to use the --cuilist option which takes
in a file containing CUIs. Note that each CUI needs to be on a seperate
line.
Changes from version 0.25 to 0.27
1. Added a --verbose option will print out path information to a file
rather than having this be done automatically. This will reduce the
amount of storage space required to hold the path information for a
given set of sources and relations.
Changes from version 0.23 to 0.25
1. Fixed mysql error that was occuring in UMLS-Interface
DBD::mysql::db do failed: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near '' at line 1 at
/usr/local/share/perl/5.10.0/UMLS/Interface.pm line 1063, <STDIN>
line 2.
This was also happening on line 1066 - both should be fixed now.
2. Updated INSTALL documentation - nothing major just some clean up
3. Added a --forcerun option which will bypass any questions about
whether or not you would like to set up an index on a specified set of
relations/sources
4. Updated the documentation of the programs in the util/ directory
Changes from version 0.21 to 0.23
1. Added a getRelation function which returns all the possible relations
in the MRREL file given a specified CUI and source. There is a
corresponding util program getRelation.pl to show how this is used. 2.
Modified checking the existance of the UMLS tables. Before it was
expecting the table names to be all capatalized but now they can be in
lower case as well.
Changes from version 0.19 to 0.21
1. Added check to see if program files exist prior to removing them just
in case they don't exist an error isn't going to display
2. Had an error in getCuiDef.pl when the input was a term. This has been
fixed.
3. Modified the upper level taxonomy to be written to tables in its
appropriate database.
4. Add the program removeConfigData.pl which will remove the database
and all of the associated files created by the program given a specified
configuration.
Changes from version 0.17 to 0.19
1. Modified the documentation in the utils/ programs. The descriptions
were just a mess
Changes from version 0.15 to 0.17
1. In SNOMED CT there exist concepts that are used to show why a concept
is retired. Unfortunately, the relationship linking that reason to the
retired concept is 'is-a'. So you have for example 'stenosis' is-a
'non-current concept - ambiguous'. This is understandable in a plain
English sense but doesn't fit into the hierarchical sense of an 'is-a'
relationship. We now exclude these nodes:
C1274012|Ambiguous concept (inactive concept) C1276325|Reason not stated
concept (inactive concept) C1274013|Duplicate concept (inactive concept)
C1274014|Outdated concept (inactive concept) C1274015|Erroneous concept
(inactive concept) C1274021|Moved elsewhere (inactive concept)
If you have a strong reason why they should still be there send us an
email and we can probably work something else out.
2. When using the RB/RN and PAR/CHD relations not all of the upper level
taxonomy was being looked at to obtain the path information. This has
been fixed.
3. Moved the dropTemporaryTables.pl program to removeConfigData.pl and
added the functionality to drop the files associated with the
configuration data as well.
4. The UMLS-Interface module was not accepting the a configuration file
if the first one was printed out incorrectly. We fixed this.
5. Added configuration file information printed out to STDERR containing
source, relation and configuration file location information.
6. Added a file option to the findShortestPath.pl program:
--inputfile FILE
A file containing pairs of concepts or terms in the following format:
term1<>term2
or
cui1<>cui2
or
cui1<>term2
or
term1<>cui2
Changes from version 0.13 to 0.15
1. Added three new functions for semantic types:
getSt which returns the semantic type TUI of a given CUI
getStAbr which returns the semantic type abbreviation
given the semantic type TUI
getStString which returns the semantic type string
given the semantic type abbreviation
2. Added a program to the utils/ directory:
getSt.pl which returns the semantic type of a given CUI
or TERM in the UMLS. This program uses the three
above functions.
3. Added the function checkConceptExists which returns true or false
whether a concept exists in the current view of the UMLS (this is based
on the sources and relations that are being used). This function was
hidden but it seemed like it could be useful to others as well - it
became useful for me anyway :)
4. Modified the SYNOPSIS section in the Interface.pm module to include
all or at least most of the different functions available through the
Interface.pm module.
5. Fixed the permissions on the configuration file directory when it is
being created. And chmod the individual files after they were created.
Hopefully now they will be created with read and write privlidges so you
can see them if you install using the -MCPAN option.
6. Modified the findPathToRoot.pl and findShortestPath.pl to include the
term associated with the CUI in the path
7. I forgot to add the UMLS Root to the PATH in the pathToRoot function.
It is now added.
Changes from version 0.11 to 0.13
1. Speed up the getTermList() option when all of the sources are being
used
2. Modified documentation
3. Added the function findMinimumDepth and findMaximumDepth which
returns the minimum and maximum depth of a CUI respectively given the
view of the UMLS
Changes from version 0.09 to 0.11
1. Modified the Changelog directory and tried to remember to add them to
the release!
2. Modified documenation - tried to get the misspelling and obvious
errors removed.
3. Removed the HTML documentation
Changes from version 0.03 to 0.09
1. Allowed the program to create the directory that we prompt the user
for (the location that the config files should be stored) if it doesn't
exist rather than requiring it be already created.
2. Modified the location of where the utils/ programs are installed. All
of them now get installed and they are all in the same location.
3. Found a bug in the code that reads the configuration file. Error
would occur if trying to exclude a source.
Changes from version 0.01 to 0.03
1. Removed the need for UMLSINTERFACE environment variable indicating
the location of the UMLS. Now we prompt the user for the location that
the config files should be stored and ask them to set a
UMLSINTERFACE_CONFIGFILE_DIR variable.